2 * @file IxEthAccControlInterface.c
4 * @author Intel Corporation
7 * @brief IX_ETH_ACC_PUBLIC wrappers for control plane functions
12 * IXP400 SW Release version 2.0
14 * -- Copyright Notice --
17 * Copyright 2001-2005, Intel Corporation.
18 * All rights reserved.
21 * Redistribution and use in source and binary forms, with or without
22 * modification, are permitted provided that the following conditions
24 * 1. Redistributions of source code must retain the above copyright
25 * notice, this list of conditions and the following disclaimer.
26 * 2. Redistributions in binary form must reproduce the above copyright
27 * notice, this list of conditions and the following disclaimer in the
28 * documentation and/or other materials provided with the distribution.
29 * 3. Neither the name of the Intel Corporation nor the names of its contributors
30 * may be used to endorse or promote products derived from this software
31 * without specific prior written permission.
34 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
35 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
36 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
37 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
38 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
39 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
40 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
41 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
42 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
43 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47 * -- End of Copyright Notice --
52 #include "IxEthAcc_p.h"
54 PUBLIC IxOsalMutex ixEthAccControlInterfaceMutex;
56 IX_ETH_ACC_PUBLIC IxEthAccStatus
57 ixEthAccPortEnable(IxEthAccPortId portId)
59 IxEthAccStatus result;
61 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
63 printf("EthAcc: (Mac) cannot enable port %d, service not initialized\n", portId);
64 return (IX_ETH_ACC_FAIL);
67 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
68 result = ixEthAccPortEnablePriv(portId);
69 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
73 IX_ETH_ACC_PUBLIC IxEthAccStatus
74 ixEthAccPortDisable(IxEthAccPortId portId)
76 IxEthAccStatus result;
78 /* check the context is iinitialized */
79 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
81 return (IX_ETH_ACC_FAIL);
84 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
85 result = ixEthAccPortDisablePriv(portId);
86 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
90 IX_ETH_ACC_PUBLIC IxEthAccStatus
91 ixEthAccPortEnabledQuery(IxEthAccPortId portId, BOOL *enabled)
93 IxEthAccStatus result;
95 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
97 return (IX_ETH_ACC_FAIL);
100 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
101 result = ixEthAccPortEnabledQueryPriv(portId, enabled);
102 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
106 IX_ETH_ACC_PUBLIC IxEthAccStatus
107 ixEthAccPortPromiscuousModeClear(IxEthAccPortId portId)
109 IxEthAccStatus result;
111 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
113 return (IX_ETH_ACC_FAIL);
116 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
117 result = ixEthAccPortPromiscuousModeClearPriv(portId);
118 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
122 IX_ETH_ACC_PUBLIC IxEthAccStatus
123 ixEthAccPortPromiscuousModeSet(IxEthAccPortId portId)
125 IxEthAccStatus result;
127 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
129 return (IX_ETH_ACC_FAIL);
132 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
133 result = ixEthAccPortPromiscuousModeSetPriv(portId);
134 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
138 IX_ETH_ACC_PUBLIC IxEthAccStatus
139 ixEthAccPortUnicastMacAddressSet(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
141 IxEthAccStatus result;
143 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
145 return (IX_ETH_ACC_FAIL);
148 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
149 result = ixEthAccPortUnicastMacAddressSetPriv(portId, macAddr);
150 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
154 IX_ETH_ACC_PUBLIC IxEthAccStatus
155 ixEthAccPortUnicastMacAddressGet(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
157 IxEthAccStatus result;
159 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
161 return (IX_ETH_ACC_FAIL);
164 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
165 result = ixEthAccPortUnicastMacAddressGetPriv(portId, macAddr);
166 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
170 IX_ETH_ACC_PUBLIC IxEthAccStatus
171 ixEthAccPortMulticastAddressJoin(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
173 IxEthAccStatus result;
175 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
177 return (IX_ETH_ACC_FAIL);
180 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
181 result = ixEthAccPortMulticastAddressJoinPriv(portId, macAddr);
182 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
186 IX_ETH_ACC_PUBLIC IxEthAccStatus
187 ixEthAccPortMulticastAddressJoinAll(IxEthAccPortId portId)
189 IxEthAccStatus result;
191 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
193 return (IX_ETH_ACC_FAIL);
196 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
197 result = ixEthAccPortMulticastAddressJoinAllPriv(portId);
198 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
202 IX_ETH_ACC_PUBLIC IxEthAccStatus
203 ixEthAccPortMulticastAddressLeave(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
205 IxEthAccStatus result;
207 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
209 return (IX_ETH_ACC_FAIL);
212 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
213 result = ixEthAccPortMulticastAddressLeavePriv(portId, macAddr);
214 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
218 IX_ETH_ACC_PUBLIC IxEthAccStatus
219 ixEthAccPortMulticastAddressLeaveAll(IxEthAccPortId portId)
221 IxEthAccStatus result;
223 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
225 return (IX_ETH_ACC_FAIL);
228 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
229 result = ixEthAccPortMulticastAddressLeaveAllPriv(portId);
230 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
234 IX_ETH_ACC_PUBLIC IxEthAccStatus
235 ixEthAccPortUnicastAddressShow(IxEthAccPortId portId)
237 IxEthAccStatus result;
239 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
241 return (IX_ETH_ACC_FAIL);
244 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
245 result = ixEthAccPortUnicastAddressShowPriv(portId);
246 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
250 IX_ETH_ACC_PUBLIC void
251 ixEthAccPortMulticastAddressShow(IxEthAccPortId portId)
253 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
258 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
259 ixEthAccPortMulticastAddressShowPriv(portId);
260 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
263 IX_ETH_ACC_PUBLIC IxEthAccStatus
264 ixEthAccPortDuplexModeSet(IxEthAccPortId portId, IxEthAccDuplexMode mode)
266 IxEthAccStatus result;
268 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
270 return (IX_ETH_ACC_FAIL);
273 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
274 result = ixEthAccPortDuplexModeSetPriv(portId, mode);
275 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
279 IX_ETH_ACC_PUBLIC IxEthAccStatus
280 ixEthAccPortDuplexModeGet(IxEthAccPortId portId, IxEthAccDuplexMode *mode)
282 IxEthAccStatus result;
284 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
286 return (IX_ETH_ACC_FAIL);
289 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
290 result = ixEthAccPortDuplexModeGetPriv(portId, mode);
291 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
295 IX_ETH_ACC_PUBLIC IxEthAccStatus
296 ixEthAccPortTxFrameAppendPaddingEnable(IxEthAccPortId portId)
298 IxEthAccStatus result;
300 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
302 return (IX_ETH_ACC_FAIL);
305 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
306 result = ixEthAccPortTxFrameAppendPaddingEnablePriv(portId);
307 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
311 IX_ETH_ACC_PUBLIC IxEthAccStatus
312 ixEthAccPortTxFrameAppendPaddingDisable(IxEthAccPortId portId)
314 IxEthAccStatus result;
316 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
318 return (IX_ETH_ACC_FAIL);
321 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
322 result = ixEthAccPortTxFrameAppendPaddingDisablePriv(portId);
323 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
327 IX_ETH_ACC_PUBLIC IxEthAccStatus
328 ixEthAccPortTxFrameAppendFCSEnable(IxEthAccPortId portId)
330 IxEthAccStatus result;
332 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
334 return (IX_ETH_ACC_FAIL);
337 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
338 result = ixEthAccPortTxFrameAppendFCSEnablePriv(portId);
339 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
343 IX_ETH_ACC_PUBLIC IxEthAccStatus
344 ixEthAccPortTxFrameAppendFCSDisable(IxEthAccPortId portId)
346 IxEthAccStatus result;
348 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
350 return (IX_ETH_ACC_FAIL);
353 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
354 result = ixEthAccPortTxFrameAppendFCSDisablePriv(portId);
355 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
359 IX_ETH_ACC_PUBLIC IxEthAccStatus
360 ixEthAccPortRxFrameAppendFCSEnable(IxEthAccPortId portId)
362 IxEthAccStatus result;
364 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
366 return (IX_ETH_ACC_FAIL);
369 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
370 result = ixEthAccPortRxFrameAppendFCSEnablePriv(portId);
371 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
375 IX_ETH_ACC_PUBLIC IxEthAccStatus
376 ixEthAccPortRxFrameAppendFCSDisable(IxEthAccPortId portId)
378 IxEthAccStatus result;
380 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
382 return (IX_ETH_ACC_FAIL);
385 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
386 result = ixEthAccPortRxFrameAppendFCSDisablePriv(portId);
387 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
391 IX_ETH_ACC_PUBLIC IxEthAccStatus
392 ixEthAccTxSchedulingDisciplineSet(IxEthAccPortId portId, IxEthAccSchedulerDiscipline sched)
394 IxEthAccStatus result;
396 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
398 return (IX_ETH_ACC_FAIL);
401 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
402 result = ixEthAccTxSchedulingDisciplineSetPriv(portId, sched);
403 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
407 IX_ETH_ACC_PUBLIC IxEthAccStatus
408 ixEthAccRxSchedulingDisciplineSet(IxEthAccSchedulerDiscipline sched)
410 IxEthAccStatus result;
412 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
414 return (IX_ETH_ACC_FAIL);
417 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
418 result = ixEthAccRxSchedulingDisciplineSetPriv(sched);
419 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
423 IX_ETH_ACC_PUBLIC IxEthAccStatus
424 ixEthAccPortNpeLoopbackEnable(IxEthAccPortId portId)
426 IxEthAccStatus result;
428 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
430 return (IX_ETH_ACC_FAIL);
433 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
434 result = ixEthAccNpeLoopbackEnablePriv(portId);
435 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
439 IX_ETH_ACC_PUBLIC IxEthAccStatus
440 ixEthAccPortTxEnable(IxEthAccPortId portId)
442 IxEthAccStatus result;
444 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
446 return (IX_ETH_ACC_FAIL);
449 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
450 result = ixEthAccPortTxEnablePriv(portId);
451 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
455 IX_ETH_ACC_PUBLIC IxEthAccStatus
456 ixEthAccPortRxEnable(IxEthAccPortId portId)
458 IxEthAccStatus result;
460 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
462 return (IX_ETH_ACC_FAIL);
465 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
466 result = ixEthAccPortRxEnablePriv(portId);
467 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
471 IX_ETH_ACC_PUBLIC IxEthAccStatus
472 ixEthAccPortNpeLoopbackDisable(IxEthAccPortId portId)
474 IxEthAccStatus result;
476 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
478 return (IX_ETH_ACC_FAIL);
481 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
482 result = ixEthAccNpeLoopbackDisablePriv(portId);
483 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
487 IX_ETH_ACC_PUBLIC IxEthAccStatus
488 ixEthAccPortTxDisable(IxEthAccPortId portId)
490 IxEthAccStatus result;
492 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
494 return (IX_ETH_ACC_FAIL);
497 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
498 result = ixEthAccPortTxDisablePriv(portId);
499 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
503 IX_ETH_ACC_PUBLIC IxEthAccStatus
504 ixEthAccPortRxDisable(IxEthAccPortId portId)
506 IxEthAccStatus result;
508 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
510 return (IX_ETH_ACC_FAIL);
513 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
514 result = ixEthAccPortRxDisablePriv(portId);
515 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
519 IX_ETH_ACC_PUBLIC IxEthAccStatus
520 ixEthAccPortMacReset(IxEthAccPortId portId)
522 IxEthAccStatus result;
524 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
526 return (IX_ETH_ACC_FAIL);
529 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
530 result = ixEthAccPortMacResetPriv(portId);
531 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);