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
);