⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ixatmdportmgmt.c

📁 有关ARM开发板上的IXP400网络驱动程序的源码以。
💻 C
📖 第 1 页 / 共 3 页
字号:
    } /* end of if-else(numTxQueues) */    return returnStatus;}/* ----------------------------------------------*/IX_STATUSixAtmdAccPortMgmtNumTxVcQueuesGet (unsigned int *numTxQueuesPtr){    IX_STATUS returnStatus = IX_SUCCESS;    if (numTxQueuesPtr == NULL)    {        returnStatus = IX_FAIL;    }    else    {        *numTxQueuesPtr = numTxVcQueues;    } /* end of if-else(numTxQueuesPtr) */    return returnStatus;}/* ----------------------------------------------*/BOOLixAtmdAccPortIsEnabled(IxAtmLogicalPort port){    IX_STATUS retval;    BOOL paramError;    retval = ixAtmdAccPortStateQuery(port, IX_ATMD_PORT_ENABLED, &paramError);    if ((retval != IX_SUCCESS) || (paramError))    {        return FALSE;    }    return TRUE;}/* ----------------------------------------------*/voidixAtmdAccPortStateHandlersRegister(                                   IxAtmdAccPortSetupNotifyHandler setupNotifyHandler,                                   IxAtmdAccPortStateChangeHandler stateChangeHandler,                                   IxAtmdAccPortStateQuery         enabledQuery,                                   IxAtmdAccPortStateQuery         disabledQuery){    setupNotify        = setupNotifyHandler;    stateChangeRequest = stateChangeHandler;    isEnabledQuery     = enabledQuery;    isDisableComplete  = disabledQuery;}voidixAtmdAccPortStateHandlersUnregister(void){    setupNotify        = ixAtmdAccDummySetupNotifyHandler;    stateChangeRequest = ixAtmdAccDummyStateChangeHandler;    isEnabledQuery     = ixAtmdAccDummyStateQuery;    isDisableComplete  = ixAtmdAccDummyStateQuery;}/* ----------------------------------------------*/BOOLixAtmdAccPortConfigured (IxAtmLogicalPort port){    /* check if the port valid and is configured */    BOOL result = (port >= IX_UTOPIA_PORT_0) &&        (port < IX_UTOPIA_MAX_PORTS) &&        ((unsigned int)port < numberOfPortsConfigured);    return result;}/* ----------------------------------------------*/voidixAtmdAccPortMgmtStatsShow (void){    int port;    if (ixAtmdAccPortMgmtInitDone)    {        printf("\n");        for (port = 0; port < IX_UTOPIA_MAX_PORTS; port++)        {            printf("Port %d : state change requested %u times\n",                port,                portRequestStats[port]);        }    }    printf("\n");}/* ----------------------------------------------*/voidixAtmdAccPortMgmtStatsReset (void){    ixOsalMemSet(portRequestStats, 0, sizeof(portRequestStats));}/* ----------------------------------------------*/voidixAtmdAccUtopiaControlStatsShow (void){    IxAtmdAccUtopiaStatus utStatus;    if (ixAtmdAccPortMgmtInitDone)    {        ixAtmdAccUtopiaStatusGet (&utStatus);        printf ("Utopia Data\n");        printf ("           utTxCellCount ....... : %10u\n",            (unsigned int) utStatus.utTxCellCount);        printf ("           utTxIdleCellCount ... : %10u\n",            (unsigned int) utStatus.utTxIdleCellCount);        printf ("           txFIFO2Underflow .... : %10u\n",            (unsigned int) utStatus.utTxCellConditionStatus.txFIFO2Underflow);        printf ("           txFIFO1Underflow .... : %10u\n",            (unsigned int) utStatus.utTxCellConditionStatus.txFIFO1Underflow);        printf ("           txFIFO2Overflow ..... : %10u\n",            (unsigned int) utStatus.utTxCellConditionStatus.txFIFO2Overflow);        printf ("           txFIFO1Overflow ..... : %10u\n",            (unsigned int) utStatus.utTxCellConditionStatus.txFIFO1Overflow);        printf ("           txIdleCellCountOvr .. : %10u\n",            (unsigned int) utStatus.utTxCellConditionStatus.txIdleCellCountOvr);        printf ("           txCellCountOvr ...... : %10u\n",            (unsigned int) utStatus.utTxCellConditionStatus.txCellCountOvr);        printf ("           utRxCellCount ....... : %10u\n",            (unsigned int) utStatus.utRxCellCount);        printf ("           utRxIdleCellCount ... : %10u\n",            (unsigned int) utStatus.utRxIdleCellCount);        printf ("           utRxInvalidHECount .. : %10u\n",            (unsigned int) utStatus.utRxInvalidHECount);        printf ("           utRxInvalidParCount . : %10u\n",            (unsigned int) utStatus.utRxInvalidParCount);        printf ("           utRxInvalidSizeCount  : %10u\n",            (unsigned int) utStatus.utRxInvalidSizeCount);        printf ("           rxCellCountOvr ...... : %10u\n",            (unsigned int) utStatus.utRxCellConditionStatus.rxCellCountOvr);        printf ("           invalidHecCountOvr .. : %10u\n",            (unsigned int) utStatus.utRxCellConditionStatus.invalidHecCountOvr);        printf ("           invalidParCountOvr .. : %10u\n",            (unsigned int) utStatus.utRxCellConditionStatus.invalidParCountOvr);        printf ("           invalidSizeCountOvr . : %10u\n",            (unsigned int) utStatus.utRxCellConditionStatus.invalidSizeCountOvr);        printf ("           rxIdleCountOvr ...... : %10u\n",            (unsigned int) utStatus.utRxCellConditionStatus.rxIdleCountOvr);        printf ("           rxFIFO2Underflow .... : %10u\n",            (unsigned int) utStatus.utRxCellConditionStatus.rxFIFO2Underflow);        printf ("           rxFIFO1Underflow .... : %10u\n",            (unsigned int) utStatus.utRxCellConditionStatus.rxFIFO1Underflow);        printf ("           rxFIFO2Overflow ..... : %10u\n",            (unsigned int) utStatus.utRxCellConditionStatus.rxFIFO2Overflow);        printf ("           rxFIFO1Overflow ..... : %10u\n",            (unsigned int) utStatus.utRxCellConditionStatus.rxFIFO1Overflow);    }    return;}/* ----------------------------------------------*/voidixAtmdAccUtopiaControlStatsReset (void){}/* -----------------------------------------* Functions visable in this file only* ----------------------------------------- */PRIVATE IX_STATUSixAtmdAccPortStateChange (IxAtmLogicalPort port, IxAtmdAccPortState newState){    IX_STATUS returnStatus = IX_SUCCESS;    /* Check parameters */    if ((port < IX_UTOPIA_PORT_0)        ||(port >= IX_UTOPIA_MAX_PORTS)        || !ixAtmdAccPortConfigured(port))    {        returnStatus = IX_FAIL;    }    if (returnStatus == IX_SUCCESS)    {        IX_ATMDACC_PORTMGMT_LOCK_GET();        /* Notify the interested party */        returnStatus = stateChangeRequest(port, newState);        /* update Stats */        portRequestStats[port]++;        IX_ATMDACC_PORTMGMT_LOCK_RELEASE ();    } /* end of if(returnStatus) */    return returnStatus;}/* ----------------------------------------------*/PRIVATE IX_STATUSixAtmdAccPortStateQuery (IxAtmLogicalPort port,                         IxAtmdAccPortState state,                         BOOL *paramError){    IX_STATUS returnStatus = IX_SUCCESS;    *paramError = FALSE;    /* Check parameters */    if ((port < IX_UTOPIA_PORT_0)        ||(port >= IX_UTOPIA_MAX_PORTS)        || !ixAtmdAccPortConfigured(port))    {        *paramError = TRUE;        returnStatus = IX_SUCCESS;    }    else if ((state != IX_ATMD_PORT_ENABLED) &&        (state != IX_ATMD_PORT_DISABLED))    {        *paramError = TRUE;        returnStatus = IX_FAIL;    }    else if (returnStatus == IX_SUCCESS)    {        IX_ATMDACC_PORTMGMT_LOCK_GET();        if (state == IX_ATMD_PORT_ENABLED)        {            if (!isEnabledQuery (port))            {                returnStatus = IX_FAIL;            }        }        else        {            if (!isDisableComplete (port))            {                returnStatus = IX_FAIL;            }        } /* end of if-else(state) */        IX_ATMDACC_PORTMGMT_LOCK_RELEASE();    } /* end of if(returnStatus) */    return returnStatus;}/* ----------------------------------------------*/PRIVATE IX_STATUSixAtmdAccDummyStateChangeHandler (IxAtmLogicalPort port,                                  IxAtmdAccPortState newState){    IX_ATMDACC_ENSURE(0, "PortMgmt No StateChange Handler Registered");    return IX_FAIL;}/* ----------------------------------------------*/PRIVATE voidixAtmdAccDummySetupNotifyHandler (unsigned int numPort){    IX_ATMDACC_ENSURE(0, "PortMgmt No Setup Handler Registered");}/* ----------------------------------------------*/PRIVATE BOOLixAtmdAccDummyStateQuery (IxAtmLogicalPort port){    IX_ATMDACC_ENSURE(0, "PortMgmt No State Check Registered");    return FALSE;}/* ----------------------------------------------* This function creates the big Endian utopia configration* required by the NPE. Each 32 bit word represents a utopia* co-processor register. The corresponding bitfields in the * supplied utopia config struct are shifted and ORed together.* The constants below represent the bit offsets for the fields* as defined by utopia co-processor hardware.* These will never change and are used nowhere apart from in * this function.*/PRIVATE void ixAtmdAccUtopiaConfigGenerate(const IxAtmdAccUtopiaConfig *utConfig,                                           UINT32 *configArrPtr ){        configArrPtr[0] = (UINT32)(  	(utConfig->utTxConfig.reserved_1    << 31) |      	(utConfig->utTxConfig.txInterface   << 30) |      	(utConfig->utTxConfig.txMode        << 29) |      	(utConfig->utTxConfig.txOctet       << 28) |      	(utConfig->utTxConfig.txParity      << 27) |      	(utConfig->utTxConfig.txEvenParity  << 26) |      	(utConfig->utTxConfig.txHEC         << 25) |      	(utConfig->utTxConfig.txCOSET       << 24) |      	(utConfig->utTxConfig.reserved_2    << 23) |      	(utConfig->utTxConfig.txCellSize    << 16) |      	(utConfig->utTxConfig.reserved_3    << 13) |      	(utConfig->utTxConfig.txAddrRange   << 8) |      	(utConfig->utTxConfig.reserved_4    << 5) |      	(utConfig->utTxConfig.txPHYAddr )              );        configArrPtr[1] = (UINT32)(  	(utConfig->utTxStatsConfig.vpi  << 20) |          	(utConfig->utTxStatsConfig.vci  << 4) |          	(utConfig->utTxStatsConfig.pti  << 1) |          	(utConfig->utTxStatsConfig.clp )        );        configArrPtr[2] = (UINT32)(  	(utConfig->utTxDefineIdle.vpi  << 20) |  	(utConfig->utTxDefineIdle.vci  << 4) |  	(utConfig->utTxDefineIdle.pti  << 1) |  	(utConfig->utTxDefineIdle.clp )        );           configArrPtr[3] = (UINT32)(  	(utConfig->utTxEnableFields.defineTxIdleGFC  << 31) |  	(utConfig->utTxEnableFields.defineTxIdlePTI  << 30) |  	(utConfig->utTxEnableFields.defineTxIdleCLP  << 29) |  	(utConfig->utTxEnableFields.phyStatsTxEnb    << 28) |  	(utConfig->utTxEnableFields.vcStatsTxEnb     << 27) |  	(utConfig->utTxEnableFields.vcStatsTxGFC     << 26) |  	(utConfig->utTxEnableFields.vcStatsTxPTI     << 25) |  	(utConfig->utTxEnableFields.vcStatsTxCLP     << 24) |  	(utConfig->utTxEnableFields.reserved_1       << 21) |  	(utConfig->utTxEnableFields.txPollStsInt     << 20) |  	(utConfig->utTxEnableFields.txCellOvrInt     << 19) |  	(utConfig->utTxEnableFields.txIdleCellOvrInt << 18) |  	(utConfig->utTxEnableFields.enbIdleCellCnt   << 17) |  	(utConfig->utTxEnableFields.enbTxCellCnt     << 16) |  	(utConfig->utTxEnableFields.reserved_2 )        );        configArrPtr[4] = (UINT32)(  	(utConfig->utTxTransTable0.phy0       << 27) |  	(utConfig->utTxTransTable0.phy1       << 22) |  	(utConfig->utTxTransTable0.phy2       << 17) |  	(utConfig->utTxTransTable0.reserved_1 << 16) |  	(utConfig->utTxTransTable0.phy3       << 11) |  	(utConfig->utTxTransTable0.phy4       << 6) |  	(utConfig->utTxTransTable0.phy5       << 1) |  	(utConfig->utTxTransTable0.reserved_2 )          );        configArrPtr[5] = (UINT32)(  	(utConfig->utTxTransTable1.phy6       << 27) |  	(utConfig->utTxTransTable1.phy7       << 22) |  	(utConfig->utTxTransTable1.phy8       << 17) |  	(utConfig->utTxTransTable1.reserved_1 << 16) |  	(utConfig->utTxTransTable1.phy9       << 11) |  	(utConfig->utTxTransTable1.phy10      << 6) |  	(utConfig->utTxTransTable1.phy11      << 1) |  	(utConfig->utTxTransTable1.reserved_2 )          );        configArrPtr[6] = (UINT32)(  	(utConfig->utTxTransTable2.phy12 << 27) |  	(utConfig->utTxTransTable2.phy13 << 22) |  	(utConfig->utTxTransTable2.phy14 << 17) |  	(utConfig->utTxTransTable2.reserved_1 << 16) |  	(utConfig->utTxTransTable2.phy15 << 11) |  	(utConfig->utTxTransTable2.phy16 << 6) |  	(utConfig->utTxTransTable2.phy17 << 1) |  	(utConfig->utTxTransTable2.reserved_2 )          );        configArrPtr[7] = (UINT32)(  	(utConfig->utTxTransTable3.phy18 << 27) |  	(utConfig->utTxTransTable3.phy19 << 22) |  	(utConfig->utTxTransTable3.phy20 << 17) |  	(utConfig->utTxTransTable3.reserved_1 << 16) |  	(utConfig->utTxTransTable3.phy21 << 11) |  	(utConfig->utTxTransTable3.phy22 << 6) |  	(utConfig->utTxTransTable3.phy23 << 1) |  	(utConfig->utTxTransTable3.reserved_2 )          );        configArrPtr[8] = (UINT32)(  	(utConfig->utTxTransTable4.phy24 << 27) |  	(utConfig->utTxTransTable4.phy25 << 22) |  	(utConfig->utTxTransTable4.phy26 << 17) |  	(utConfig->utTxTransTable4.reserved_1 << 16) |  	(utConfig->utTxTransTable4.phy27 << 11) |  	(utConfig->utTxTransTable4.phy28 << 6) |  	(utConfig->utTxTransTable4.phy29 << 1) |  	(utConfig->utTxTransTable4.reserved_2 )        );        configArrPtr[9] = (UINT32)(  	(utConfig->utTxTransTable5.phy30 << 27) |  	(utConfig->utTxTransTable5.reserved_1 )        );                      configArrPtr[10] = (UINT32)(  	(utConfig->utRxConfig.rxInterface << 31) |  	(utConfig->utRxConfig.rxMode << 30) |  	(utConfig->utRxConfig.rxOctet << 29) |  	(utConfig->utRxConfig.rxParity << 28) |  	(utConfig->utRxConfig.rxEvenParity << 27) |  	(utConfig->utRxConfig.rxHEC << 26) |  	(utConfig->utRxConfig.rxCOSET << 25) |  	(utConfig->utRxConfig.rxHECpass << 24) |  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -