diff options
| author | Marek Vasut <marex@denx.de> | 2012-07-21 05:02:26 +0000 | 
|---|---|---|
| committer | Joe Hershberger <joe.hershberger@ni.com> | 2012-09-24 13:17:24 -0500 | 
| commit | 61e129885a8fd6d36c25301e537d46e66b6c6e6a (patch) | |
| tree | b67d4a7ed39e74c9618ad3775209454b8e2e781d /drivers/net/npe/IxEthAccControlInterface.c | |
| parent | 1389f98fced3651ece415a6011ccbdfac3a52286 (diff) | |
| download | olio-uboot-2014.01-61e129885a8fd6d36c25301e537d46e66b6c6e6a.tar.xz olio-uboot-2014.01-61e129885a8fd6d36c25301e537d46e66b6c6e6a.zip | |
dm: net: Move IXP NPE to drivers/net/
Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Bryan Hundven <bryanhundven@gmail.com>
Cc: Michael Schwingen <rincewind@discworld.dascon.de>
Cc: Wolfgang Denk <wd@denx.de>
Cc: Albert Aribaud <albert.u.boot@aribaud.net>
Cc: U-Boot DM <u-boot-dm@lists.denx.de>
Cc: Joe Hershberger <joe.hershberger@ni.com>
Diffstat (limited to 'drivers/net/npe/IxEthAccControlInterface.c')
| -rw-r--r-- | drivers/net/npe/IxEthAccControlInterface.c | 533 | 
1 files changed, 533 insertions, 0 deletions
| diff --git a/drivers/net/npe/IxEthAccControlInterface.c b/drivers/net/npe/IxEthAccControlInterface.c new file mode 100644 index 000000000..44328473e --- /dev/null +++ b/drivers/net/npe/IxEthAccControlInterface.c @@ -0,0 +1,533 @@ +/** + * @file IxEthAccControlInterface.c + * + * @author Intel Corporation + * @date  + * + * @brief IX_ETH_ACC_PUBLIC wrappers for control plane functions + * + * Design Notes: + * + * @par + * IXP400 SW Release version 2.0 + *  + * -- Copyright Notice -- + *  + * @par + * Copyright 2001-2005, Intel Corporation. + * All rights reserved. + *  + * @par + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *    notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *    notice, this list of conditions and the following disclaimer in the + *    documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Intel Corporation nor the names of its contributors + *    may be used to endorse or promote products derived from this software + *    without specific prior written permission. + *  + * @par + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + *  + * @par + * -- End of Copyright Notice -- + */ + +#include "IxOsal.h" +#include "IxEthAcc.h" +#include "IxEthAcc_p.h" + +PUBLIC IxOsalMutex ixEthAccControlInterfaceMutex; + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortEnable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +        printf("EthAcc: (Mac) cannot enable port %d, service not initialized\n", portId); +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortEnablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortDisable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    /* check the context is iinitialized */ +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortDisablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortEnabledQuery(IxEthAccPortId portId, BOOL *enabled) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortEnabledQueryPriv(portId, enabled); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortPromiscuousModeClear(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortPromiscuousModeClearPriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortPromiscuousModeSet(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortPromiscuousModeSetPriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortUnicastMacAddressSet(IxEthAccPortId portId, IxEthAccMacAddr *macAddr) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortUnicastMacAddressSetPriv(portId, macAddr); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortUnicastMacAddressGet(IxEthAccPortId portId, IxEthAccMacAddr *macAddr) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortUnicastMacAddressGetPriv(portId, macAddr); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortMulticastAddressJoin(IxEthAccPortId portId, IxEthAccMacAddr *macAddr) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortMulticastAddressJoinPriv(portId, macAddr); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortMulticastAddressJoinAll(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortMulticastAddressJoinAllPriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortMulticastAddressLeave(IxEthAccPortId portId, IxEthAccMacAddr *macAddr) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortMulticastAddressLeavePriv(portId, macAddr); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortMulticastAddressLeaveAll(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortMulticastAddressLeaveAllPriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortUnicastAddressShow(IxEthAccPortId portId) +{ +    IxEthAccStatus result; +  +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortUnicastAddressShowPriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC void  +ixEthAccPortMulticastAddressShow(IxEthAccPortId portId) +{ +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return; +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    ixEthAccPortMulticastAddressShowPriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortDuplexModeSet(IxEthAccPortId portId, IxEthAccDuplexMode mode) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortDuplexModeSetPriv(portId, mode); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortDuplexModeGet(IxEthAccPortId portId, IxEthAccDuplexMode *mode) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortDuplexModeGetPriv(portId, mode); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortTxFrameAppendPaddingEnable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; +      +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortTxFrameAppendPaddingEnablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortTxFrameAppendPaddingDisable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortTxFrameAppendPaddingDisablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortTxFrameAppendFCSEnable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortTxFrameAppendFCSEnablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortTxFrameAppendFCSDisable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortTxFrameAppendFCSDisablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortRxFrameAppendFCSEnable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortRxFrameAppendFCSEnablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccPortRxFrameAppendFCSDisable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortRxFrameAppendFCSDisablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccTxSchedulingDisciplineSet(IxEthAccPortId portId, IxEthAccSchedulerDiscipline sched) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccTxSchedulingDisciplineSetPriv(portId, sched); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus +ixEthAccRxSchedulingDisciplineSet(IxEthAccSchedulerDiscipline sched) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccRxSchedulingDisciplineSetPriv(sched); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortNpeLoopbackEnable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccNpeLoopbackEnablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortTxEnable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortTxEnablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortRxEnable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortRxEnablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortNpeLoopbackDisable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccNpeLoopbackDisablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortTxDisable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortTxDisablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortRxDisable(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortRxDisablePriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} + +IX_ETH_ACC_PUBLIC IxEthAccStatus  +ixEthAccPortMacReset(IxEthAccPortId portId) +{ +    IxEthAccStatus result; + +    if (!IX_ETH_ACC_IS_SERVICE_INITIALIZED()) +    { +	return (IX_ETH_ACC_FAIL); +    } + +    ixOsalMutexLock(&ixEthAccControlInterfaceMutex, IX_OSAL_WAIT_FOREVER); +    result = ixEthAccPortMacResetPriv(portId); +    ixOsalMutexUnlock(&ixEthAccControlInterfaceMutex); +    return result; +} |