/** * @fn ixEthAccStatsShow(void) * * @brief Displays all EthAcc stats * * @return void * */ void ixEthAccStatsShow(IxEthAccPortId portId) { ixEthAccMdioShow(); printf("\nPort %u\nUnicast MAC : ", portId); ixEthAccPortUnicastAddressShow(portId); ixEthAccPortMulticastAddressShow(portId); printf("\n"); ixEthAccDataPlaneShow(); }
IX_STATUS ixEthAccCodeletPortConfigure(IxEthAccPortId portId, IxEthAccPortRxCallback portRxCB, IxEthAccPortMultiBufferRxCallback portMultiBufferRxCB, IxEthAccPortTxDoneCallback portTxDoneCB, UINT32 callbackTag) { IxEthAccMacAddr npeMacAddr1 = IX_ETHACC_CODELET_NPEB_MAC; IxEthAccMacAddr npeMacAddr2 = IX_ETHACC_CODELET_NPEC_MAC; IxEthAccMacAddr npeMacAddr3 = IX_ETHACC_CODELET_NPEA_MAC; IxEthAccMacAddr npeMacAddr; /* Clear stats */ ixOsalMemSet(&ixEthAccCodeletStats[portId], 0, sizeof(ixEthAccCodeletStats[portId])); /* check the PHY is up, ignore the result. This is called to * display the current PHY status to the console */ (void)ixEthAccCodeletLinkUpCheck(portId); /* register the datapath Rx callbacks */ if (NULL != portRxCB) { if(ixEthAccPortRxCallbackRegister(portId, portRxCB, callbackTag) != IX_ETH_ACC_SUCCESS) { printf("PortSetup: Failed to register Rx callback for port %u\n", (UINT32)portId); return (IX_FAIL); } } else if (NULL != portMultiBufferRxCB) { if(ixEthAccPortMultiBufferRxCallbackRegister(portId, portMultiBufferRxCB, callbackTag) != IX_ETH_ACC_SUCCESS) { printf("PortSetup: Failed to register multiBuffer Rx callback for port %u\n", (UINT32)portId); return (IX_FAIL); } } else { printf("PortSetup: Failed to register any Rx callback for port %u\n", (UINT32)portId); return (IX_FAIL); } /* register the datapath TxDone callbacks */ if(ixEthAccPortTxDoneCallbackRegister(portId, portTxDoneCB, callbackTag) != IX_ETH_ACC_SUCCESS) { printf("PortSetup: Failed to register Tx done callback for port %u\n", (UINT32)portId); return (IX_FAIL); } #if defined (__vxworks) && defined (IX_ETHACC_CODELET_USE_NVRAM_MAC) printf("\nReading MAC address information from non-volatile storage...\n"); if (portId == IX_ETH_PORT_1) { if(sysNvRamGet((UINT8 *)&npeMacAddr.macAddress, IX_IEEE803_MAC_ADDRESS_SIZE, NV_MAC_ADRS_NPE1) == ERROR) { printf("PortSetup: Unable to read MAC address from non-volatile storage!\n"); return (IX_FAIL); } } else if (portId == IX_ETH_PORT_2) { if(sysNvRamGet((UINT8 *)&npeMacAddr.macAddress, IX_IEEE803_MAC_ADDRESS_SIZE, NV_MAC_ADRS_NPE2) == ERROR) { printf("PortSetup: Unable to read MAC address from non-volatile storage!\n"); return (IX_FAIL); } } else { printf("PortSetup: Unsupported port!\n"); return (IX_FAIL); } #else if (portId == IX_ETH_PORT_1) { ixOsalMemCopy(npeMacAddr.macAddress, npeMacAddr1.macAddress, IX_IEEE803_MAC_ADDRESS_SIZE); } else if (portId == IX_ETH_PORT_2) { ixOsalMemCopy(npeMacAddr.macAddress, npeMacAddr2.macAddress, IX_IEEE803_MAC_ADDRESS_SIZE); } else if (portId == IX_ETH_PORT_3) { ixOsalMemCopy(npeMacAddr.macAddress, npeMacAddr3.macAddress, IX_IEEE803_MAC_ADDRESS_SIZE); } else { printf("PortSetup: Unsupported port!\n"); return (IX_FAIL); } #endif printf ("Configure MAC address...\n"); if(ixEthAccPortUnicastMacAddressSet(portId, &npeMacAddr) != IX_ETH_ACC_SUCCESS) { printf("PortSetup: Failed to set the Unicast MAC Address of port %u\n", portId); return (IX_FAIL); } printf("Port %u MAC address is:\t\n", (UINT32)portId); ixEthAccPortUnicastAddressShow(portId); printf ("Provision the first RX buffers...\n"); if(ixEthAccCodeletReplenishBuffers(portId, IX_ETHACC_CODELET_RX_MBUF_POOL_SIZE/IX_ETHACC_CODELET_MAX_PORT) != IX_SUCCESS) { printf("PortSetup: Error replenishing port %u\n", (UINT32)portId); return (IX_FAIL); } return IX_SUCCESS; }