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 * SPDX-License-Identifier: BSD-3-Clause
23 * -- End of Copyright Notice --
28 #include "IxEthAcc_p.h"
30 PUBLIC IxOsalMutex ixEthAccControlInterfaceMutex;
32 IX_ETH_ACC_PUBLIC IxEthAccStatus
33 ixEthAccPortEnable(IxEthAccPortId portId)
35 IxEthAccStatus result;
37 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
39 printf("EthAcc: (Mac) cannot enable port %d, service not initialized\n", portId);
40 return (IX_ETH_ACC_FAIL);
43 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
44 result = ixEthAccPortEnablePriv(portId);
45 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
49 IX_ETH_ACC_PUBLIC IxEthAccStatus
50 ixEthAccPortDisable(IxEthAccPortId portId)
52 IxEthAccStatus result;
54 /* check the context is iinitialized */
55 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
57 return (IX_ETH_ACC_FAIL);
60 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
61 result = ixEthAccPortDisablePriv(portId);
62 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
66 IX_ETH_ACC_PUBLIC IxEthAccStatus
67 ixEthAccPortEnabledQuery(IxEthAccPortId portId, BOOL *enabled)
69 IxEthAccStatus result;
71 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
73 return (IX_ETH_ACC_FAIL);
76 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
77 result = ixEthAccPortEnabledQueryPriv(portId, enabled);
78 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
82 IX_ETH_ACC_PUBLIC IxEthAccStatus
83 ixEthAccPortPromiscuousModeClear(IxEthAccPortId portId)
85 IxEthAccStatus result;
87 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
89 return (IX_ETH_ACC_FAIL);
92 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
93 result = ixEthAccPortPromiscuousModeClearPriv(portId);
94 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
98 IX_ETH_ACC_PUBLIC IxEthAccStatus
99 ixEthAccPortPromiscuousModeSet(IxEthAccPortId portId)
101 IxEthAccStatus result;
103 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
105 return (IX_ETH_ACC_FAIL);
108 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
109 result = ixEthAccPortPromiscuousModeSetPriv(portId);
110 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
114 IX_ETH_ACC_PUBLIC IxEthAccStatus
115 ixEthAccPortUnicastMacAddressSet(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
117 IxEthAccStatus result;
119 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
121 return (IX_ETH_ACC_FAIL);
124 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
125 result = ixEthAccPortUnicastMacAddressSetPriv(portId, macAddr);
126 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
130 IX_ETH_ACC_PUBLIC IxEthAccStatus
131 ixEthAccPortUnicastMacAddressGet(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
133 IxEthAccStatus result;
135 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
137 return (IX_ETH_ACC_FAIL);
140 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
141 result = ixEthAccPortUnicastMacAddressGetPriv(portId, macAddr);
142 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
146 IX_ETH_ACC_PUBLIC IxEthAccStatus
147 ixEthAccPortMulticastAddressJoin(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
149 IxEthAccStatus result;
151 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
153 return (IX_ETH_ACC_FAIL);
156 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
157 result = ixEthAccPortMulticastAddressJoinPriv(portId, macAddr);
158 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
162 IX_ETH_ACC_PUBLIC IxEthAccStatus
163 ixEthAccPortMulticastAddressJoinAll(IxEthAccPortId portId)
165 IxEthAccStatus result;
167 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
169 return (IX_ETH_ACC_FAIL);
172 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
173 result = ixEthAccPortMulticastAddressJoinAllPriv(portId);
174 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
178 IX_ETH_ACC_PUBLIC IxEthAccStatus
179 ixEthAccPortMulticastAddressLeave(IxEthAccPortId portId, IxEthAccMacAddr *macAddr)
181 IxEthAccStatus result;
183 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
185 return (IX_ETH_ACC_FAIL);
188 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
189 result = ixEthAccPortMulticastAddressLeavePriv(portId, macAddr);
190 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
194 IX_ETH_ACC_PUBLIC IxEthAccStatus
195 ixEthAccPortMulticastAddressLeaveAll(IxEthAccPortId portId)
197 IxEthAccStatus result;
199 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
201 return (IX_ETH_ACC_FAIL);
204 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
205 result = ixEthAccPortMulticastAddressLeaveAllPriv(portId);
206 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
210 IX_ETH_ACC_PUBLIC IxEthAccStatus
211 ixEthAccPortUnicastAddressShow(IxEthAccPortId portId)
213 IxEthAccStatus result;
215 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
217 return (IX_ETH_ACC_FAIL);
220 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
221 result = ixEthAccPortUnicastAddressShowPriv(portId);
222 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
226 IX_ETH_ACC_PUBLIC void
227 ixEthAccPortMulticastAddressShow(IxEthAccPortId portId)
229 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
234 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
235 ixEthAccPortMulticastAddressShowPriv(portId);
236 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
239 IX_ETH_ACC_PUBLIC IxEthAccStatus
240 ixEthAccPortDuplexModeSet(IxEthAccPortId portId, IxEthAccDuplexMode mode)
242 IxEthAccStatus result;
244 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
246 return (IX_ETH_ACC_FAIL);
249 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
250 result = ixEthAccPortDuplexModeSetPriv(portId, mode);
251 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
255 IX_ETH_ACC_PUBLIC IxEthAccStatus
256 ixEthAccPortDuplexModeGet(IxEthAccPortId portId, IxEthAccDuplexMode *mode)
258 IxEthAccStatus result;
260 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
262 return (IX_ETH_ACC_FAIL);
265 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
266 result = ixEthAccPortDuplexModeGetPriv(portId, mode);
267 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
271 IX_ETH_ACC_PUBLIC IxEthAccStatus
272 ixEthAccPortTxFrameAppendPaddingEnable(IxEthAccPortId portId)
274 IxEthAccStatus result;
276 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
278 return (IX_ETH_ACC_FAIL);
281 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
282 result = ixEthAccPortTxFrameAppendPaddingEnablePriv(portId);
283 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
287 IX_ETH_ACC_PUBLIC IxEthAccStatus
288 ixEthAccPortTxFrameAppendPaddingDisable(IxEthAccPortId portId)
290 IxEthAccStatus result;
292 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
294 return (IX_ETH_ACC_FAIL);
297 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
298 result = ixEthAccPortTxFrameAppendPaddingDisablePriv(portId);
299 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
303 IX_ETH_ACC_PUBLIC IxEthAccStatus
304 ixEthAccPortTxFrameAppendFCSEnable(IxEthAccPortId portId)
306 IxEthAccStatus result;
308 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
310 return (IX_ETH_ACC_FAIL);
313 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
314 result = ixEthAccPortTxFrameAppendFCSEnablePriv(portId);
315 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
319 IX_ETH_ACC_PUBLIC IxEthAccStatus
320 ixEthAccPortTxFrameAppendFCSDisable(IxEthAccPortId portId)
322 IxEthAccStatus result;
324 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
326 return (IX_ETH_ACC_FAIL);
329 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
330 result = ixEthAccPortTxFrameAppendFCSDisablePriv(portId);
331 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
335 IX_ETH_ACC_PUBLIC IxEthAccStatus
336 ixEthAccPortRxFrameAppendFCSEnable(IxEthAccPortId portId)
338 IxEthAccStatus result;
340 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
342 return (IX_ETH_ACC_FAIL);
345 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
346 result = ixEthAccPortRxFrameAppendFCSEnablePriv(portId);
347 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
351 IX_ETH_ACC_PUBLIC IxEthAccStatus
352 ixEthAccPortRxFrameAppendFCSDisable(IxEthAccPortId portId)
354 IxEthAccStatus result;
356 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
358 return (IX_ETH_ACC_FAIL);
361 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
362 result = ixEthAccPortRxFrameAppendFCSDisablePriv(portId);
363 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
367 IX_ETH_ACC_PUBLIC IxEthAccStatus
368 ixEthAccTxSchedulingDisciplineSet(IxEthAccPortId portId, IxEthAccSchedulerDiscipline sched)
370 IxEthAccStatus result;
372 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
374 return (IX_ETH_ACC_FAIL);
377 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
378 result = ixEthAccTxSchedulingDisciplineSetPriv(portId, sched);
379 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
383 IX_ETH_ACC_PUBLIC IxEthAccStatus
384 ixEthAccRxSchedulingDisciplineSet(IxEthAccSchedulerDiscipline sched)
386 IxEthAccStatus result;
388 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
390 return (IX_ETH_ACC_FAIL);
393 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
394 result = ixEthAccRxSchedulingDisciplineSetPriv(sched);
395 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
399 IX_ETH_ACC_PUBLIC IxEthAccStatus
400 ixEthAccPortNpeLoopbackEnable(IxEthAccPortId portId)
402 IxEthAccStatus result;
404 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
406 return (IX_ETH_ACC_FAIL);
409 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
410 result = ixEthAccNpeLoopbackEnablePriv(portId);
411 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
415 IX_ETH_ACC_PUBLIC IxEthAccStatus
416 ixEthAccPortTxEnable(IxEthAccPortId portId)
418 IxEthAccStatus result;
420 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
422 return (IX_ETH_ACC_FAIL);
425 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
426 result = ixEthAccPortTxEnablePriv(portId);
427 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
431 IX_ETH_ACC_PUBLIC IxEthAccStatus
432 ixEthAccPortRxEnable(IxEthAccPortId portId)
434 IxEthAccStatus result;
436 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
438 return (IX_ETH_ACC_FAIL);
441 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
442 result = ixEthAccPortRxEnablePriv(portId);
443 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
447 IX_ETH_ACC_PUBLIC IxEthAccStatus
448 ixEthAccPortNpeLoopbackDisable(IxEthAccPortId portId)
450 IxEthAccStatus result;
452 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
454 return (IX_ETH_ACC_FAIL);
457 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
458 result = ixEthAccNpeLoopbackDisablePriv(portId);
459 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
463 IX_ETH_ACC_PUBLIC IxEthAccStatus
464 ixEthAccPortTxDisable(IxEthAccPortId portId)
466 IxEthAccStatus result;
468 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
470 return (IX_ETH_ACC_FAIL);
473 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
474 result = ixEthAccPortTxDisablePriv(portId);
475 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
479 IX_ETH_ACC_PUBLIC IxEthAccStatus
480 ixEthAccPortRxDisable(IxEthAccPortId portId)
482 IxEthAccStatus result;
484 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
486 return (IX_ETH_ACC_FAIL);
489 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
490 result = ixEthAccPortRxDisablePriv(portId);
491 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);
495 IX_ETH_ACC_PUBLIC IxEthAccStatus
496 ixEthAccPortMacReset(IxEthAccPortId portId)
498 IxEthAccStatus result;
500 if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED())
502 return (IX_ETH_ACC_FAIL);
505 ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER);
506 result = ixEthAccPortMacResetPriv(portId);
507 ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex);