📄 ixethaal5app.h
字号:
* | +---------+--------+ | * Eth | | OC3 | +--------+ +-------+ | +---> | IXP4XX |<------>| DSLAM | <---+ | | ADSL | | +--------+ +-------+ @endverbatim * * The VPI and VCI value is similar to Configuration Example 1. Ensure that * either the DSLAM matches the EthAal5App codelet's VPI/VCI default values * or the EthAal5App matches the DSLAM's VPI/VCI default values. * * By default, the codelet is setup to 1VC per ATM port (SPHY). In order to * setup 8VC, please change the following: * #define IX_EAA_NUM_ATM_VCS 32 * * On the Adtech, setup Eth frame type II for the AX4000 Eth card and * configure the destination and source MAC address accordingly. * For example the frame contains: * Dest MAC Address = 00:00:00:00:03:01 * Src MAC Address: 00:00:00:00:02:01 * Repeat this for all of the 8VCs * Also specify the frame size * * @{ */#include "IxOsal.h"#include "IxEthAcc.h"#include "IxAtmTypes.h"#include "EthAal5User.h"#include "IxEthAal5App_p.h"/** * @ingroup IxEthAal5App * * @def IX_EAA_NUM_BUFFERS_PER_ETH * @brief This is the number of buffers, which can be stored in free buffer * queue for each ethernet port */#ifndef IX_EAA_NUM_BUFFERS_PER_ETH#define IX_EAA_NUM_BUFFERS_PER_ETH 2048#endif/** * @ingroup IxEthAal5App * * @def IX_EAA_NUM_ATM_PORTS * @brief Define number of supported atm ports by this application * * User can define them in EthAal5User.h file to overwrite definitions below */#ifndef IX_EAA_NUM_ATM_PORTS#if IX_UTOPIAMODE == 1#define IX_EAA_NUM_ATM_PORTS 1#else#define IX_EAA_NUM_ATM_PORTS 8#endif#endif/** * @ingroup IxEthAal5App * * @def IX_EAA_NUM_ATM_VCS * @brief Define number of supported atm VCs by this application * * User can define them in EthAal5User.h file to overwrite definitions below */#ifndef IX_EAA_NUM_ATM_VCS#if IX_UTOPIAMODE == 1#define IX_EAA_NUM_ATM_VCS 1#else#define IX_EAA_NUM_ATM_VCS 8#endif#endif/** * @ingroup IxEthAal5App * * @def IX_EAA_NUM_BUFFERS_PER_VC * @brief This is the number of buffers per atm port * * User can define them in EthAal5User.h file to overwrite definitions below */#ifndef IX_EAA_NUM_BUFFERS_PER_VC#define IX_EAA_NUM_BUFFERS_PER_VC 16 #endif/** * @ingroup IxEthAal5App * @brief Define default VPI for VC1 */#define IX_EAA_VC1_VPI 10/** * @ingroup IxEthAal5App * @brief Define default VPI for VC2 */#define IX_EAA_VC2_VPI 10/** * @ingroup IxEthAal5App * @brief Define default VPI for VC3 */#define IX_EAA_VC3_VPI 10/** * @ingroup IxEthAal5App * @brief Define default VPI for VC4 */#define IX_EAA_VC4_VPI 10/** * @ingroup IxEthAal5App * @brief Define default VPI for VC5 */#define IX_EAA_VC5_VPI 10/** * @ingroup IxEthAal5App * @brief Define default VPI for VC6 */#define IX_EAA_VC6_VPI 10/** * @ingroup IxEthAal5App * @brief Define default VPI for VC7 */#define IX_EAA_VC7_VPI 10/** * @ingroup IxEthAal5App * @brief Define default VPI for VC8 */#define IX_EAA_VC8_VPI 10/** * @ingroup IxEthAal5App * @brief Define default VCI for VC1 */#define IX_EAA_VC1_VCI 63/** * @ingroup IxEthAal5App * @brief Define default VCI for VC2 */#define IX_EAA_VC2_VCI 90/** * @ingroup IxEthAal5App * @brief Define default VCI for VC3 */#define IX_EAA_VC3_VCI 91/** * @ingroup IxEthAal5App * @brief Define default VCI for VC4 */#define IX_EAA_VC4_VCI 92/** * @ingroup IxEthAal5App * @brief Define default VCI for VC5 */#define IX_EAA_VC5_VCI 93/** * @ingroup IxEthAal5App * @brief Define default VCI for VC6 */#define IX_EAA_VC6_VCI 94/** * @ingroup IxEthAal5App * @brief Define default VCI for VC7 */#define IX_EAA_VC7_VCI 95/** * @ingroup IxEthAal5App * @brief Define default VCI for VC8 */#define IX_EAA_VC8_VCI 96/** * @ingroup IxEthAal5App * * @brief Define default for MAC1 address for ixEAAAddMac() function */ #define IX_EAA_MAC1 00/** * @ingroup IxEthAal5App * * @brief Define default for MAC2 address for ixEAAAddMac() function */#define IX_EAA_MAC2 00/** * @ingroup IxEthAal5App * * @brief Define default for MAC3 address for ixEAAAddMac() function */#define IX_EAA_MAC3 00/** * @ingroup IxEthAal5App * * @brief Define default for MAC4 address for ixEAAAddMac() function */#define IX_EAA_MAC4 00/** * @ingroup IxEthAal5App * * @brief Define default for MAC5 address for ixEAAAddMac() function */#define IX_EAA_MAC5 03/** * @ingroup IxEthAal5App * * @brief Define default for MAC6 address for ixEAAAddMac() function */#define IX_EAA_MAC6 01/** * @ingroup IxEthAal5App * * @brief Define default for Port number for ixEAAAddMac() function */#define IX_EAA_PORT0 0/** * @ingroup IxEthAal5App * * @brief Define medium thread priority for ixEAAPollTask() function */#define IX_ETHAAL5APP_THREAD_PRI_MEDIUM 160/** * @ingroup IxEthAal5App * * @fn ixEthAal5AppCodeletMain(IxEAAModeType modeType) * * @brief This is the main function that executes the EthAal5App codelet * * It first calls IxEAAMain() function which initialize the MAC database, * to be an in valid Mac addresses (i.e. contain 0xffs), QMGR, NpeMh, Eth phys * - 100Mbit, FULL DUPLEX, NO AUTONEGOTIATION (User can change those settings * accordingly to required configuration), ATM, and Utopia interface. * * If Linux* is used, use interrupt mode - much faster under Linux* than polling * * If vxWorks* is used use poll mode - much faster under vxWorks* than * interrupts and start background QMgr queues poll * * After which the main has been called, this ixEthAal5AppCodeletMain() function * will add the MAC address using ixEAAAddMAC() function. For a single PHY * utopia mode, only one port will be setup a single MAC address. However, if * multiple phy is used, 8 ports will be setup and each port is assigned with * a unique MAC addresses.<br> * For single utopia phy. The following is setup using ixEAAAddMAC() function * @verbatim ixEAAAddMAC(IX_EAA_PORT0, IX_EAA_MAC1, IX_EAA_MAC2, IX_EAA_MAC3, IX_EAA_MAC4, IX_EAA_MAC5, IX_EAA_MAC6); @endverbatim * * For multi phy utopia the port number and MAC6 increments using a for-loop * @verbatim for (port = 0, nextMac = 0; port < IX_EAA_NUM_ATM_PORTS; port++, nextMac++) { ixEAAAddMAC(IX_EAA_PORT0 + port, IX_EAA_MAC1, IX_EAA_MAC2, IX_EAA_MAC3, IX_EAA_MAC4, IX_EAA_MAC5, IX_EAA_MAC6 + nextMac); } @endverbatim * * * Lastly, ixEthAal5AppCodeletMain() creates a thread which purposed to display * the EthAal5App codelet counter every 15secs */PUBLIC IX_STATUSixEthAal5AppCodeletMain(IxEAAModeType modeType);#endif /* IXETHAAL5APP_H *//** @} defgroup IxEthAal5App*//** @} defgroup Codelets*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -