📄 sky2le.h
字号:
* */#ifdef USE_POLLING_UNIT#define POLE_SET_OPC(pLE, Opc) ((pLE)->Sa.Opcode = (Opc))#define POLE_SET_LINK(pLE, Port) ((pLE)->Sa.Link = (Port))#define POLE_SET_RXIDX(pLE, Idx) ((pLE)->Sa.RxIdxVld = Word2LE(Idx))#define POLE_SET_TXAIDX(pLE, Idx) ((pLE)->Sa.TxAIdxVld = Word2LE(Idx))#define POLE_SET_TXSIDX(pLE, Idx) ((pLE)->Sa.TxSIdxVld = Word2LE(Idx))#define POLE_GET_OPC(pLE) ((pLE)->Sa.Opcode)#define POLE_GET_LINK(pLE) ((pLE)->Sa.Link)#define POLE_GET_RXIDX(pLE) LE2Word((pLE)->Sa.RxIdxVld)#define POLE_GET_TXAIDX(pLE) LE2Word((pLE)->Sa.TxAIdxVld)#define POLE_GET_TXSIDX(pLE) LE2Word((pLE)->Sa.TxSIdxVld)#endif /* USE_POLLING_UNIT *//****************************************************************************** * * Debug macros for list elements * */#ifdef DEBUG#define SK_DBG_DUMP_RX_LE(pLE) { \ SK_U8 Opcode; \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("=== RX_LIST_ELEMENT @addr: %p cont: %02x %02x %02x %02x %02x %02x %02x %02x\n", \ pLE, ((SK_U8 *) pLE)[0], ((SK_U8 *) pLE)[1], ((SK_U8 *) pLE)[2],\ ((SK_U8 *) pLE)[3], ((SK_U8 *) pLE)[4], ((SK_U8 *) pLE)[5], \ ((SK_U8 *) pLE)[6], ((SK_U8 *) pLE)[7])); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\t (16bit) %04x %04x %04x %04x\n", \ ((SK_U16 *) pLE)[0], ((SK_U16 *) pLE)[1], ((SK_U16 *) pLE)[2], \ ((SK_U16 *) pLE)[3])); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\t (32bit) %08x %08x\n", \ ((SK_U32 *) pLE)[0], ((SK_U32 *) pLE)[1])); \ Opcode = RXLE_GET_OPC(pLE); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOwn belongs to %s\n", ((Opcode & HW_OWNER) == HW_OWNER) ? \ "Hardware" : "Software")); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOpc: 0x%x ",Opcode)); \ switch (Opcode & (~HW_OWNER)) { \ case OP_BUFFER: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_BUFFER\n")); \ break; \ case OP_PACKET: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_PACKET\n")); \ break; \ case OP_ADDR64: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_ADDR64\n")); \ break; \ case OP_TCPSTART: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_TCPPAR\n")); \ break; \ case SW_OWNER: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tunused LE\n")); \ break; \ default: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tunknown Opcode!!!\n")); \ } \ if ((Opcode & OP_BUFFER) == OP_BUFFER) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tControl: 0x%x\n", RXLE_GET_CTRL(pLE))); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tBufLen: 0x%x\n", RXLE_GET_LEN(pLE))); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tLowAddr: 0x%x\n", RXLE_GET_ADDR(pLE))); \ } \ if ((Opcode & OP_ADDR64) == OP_ADDR64) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tHighAddr: 0x%x\n", RXLE_GET_ADDR(pLE))); \ } \ if ((Opcode & OP_TCPSTART) == OP_TCPSTART) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tTCP Sum Start 1 : 0x%x\n", RXLE_GET_STACS1(pLE))); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tTCP Sum Start 2 : 0x%x\n", RXLE_GET_STACS2(pLE))); \ } \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("=====================\n")); \}#define SK_DBG_DUMP_TX_LE(pLE) { \ SK_U8 Opcode; \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("=== TX_LIST_ELEMENT @addr: %p cont: %02x %02x %02x %02x %02x %02x %02x %02x\n", \ pLE, ((SK_U8 *) pLE)[0], ((SK_U8 *) pLE)[1], ((SK_U8 *) pLE)[2],\ ((SK_U8 *) pLE)[3], ((SK_U8 *) pLE)[4], ((SK_U8 *) pLE)[5], \ ((SK_U8 *) pLE)[6], ((SK_U8 *) pLE)[7])); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\t (16bit) %04x %04x %04x %04x\n", \ ((SK_U16 *) pLE)[0], ((SK_U16 *) pLE)[1], ((SK_U16 *) pLE)[2], \ ((SK_U16 *) pLE)[3])); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\t (32bit) %08x %08x\n", \ ((SK_U32 *) pLE)[0], ((SK_U32 *) pLE)[1])); \ Opcode = TXLE_GET_OPC(pLE); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOwn belongs to %s\n", ((Opcode & HW_OWNER) == HW_OWNER) ? \ "Hardware" : "Software")); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOpc: 0x%x ",Opcode)); \ switch (Opcode & (~HW_OWNER)) { \ case OP_TCPCHKSUM: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_TCPCHKSUM\n")); \ break; \ case OP_TCPIS: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_TCPIS\n")); \ break; \ case OP_TCPLCK: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_TCPLCK\n")); \ break; \ case OP_TCPLW: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_TCPLW\n")); \ break; \ case OP_TCPLSW: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_TCPLSW\n")); \ break; \ case OP_TCPLISW: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_TCPLISW\n")); \ break; \ case OP_ADDR64: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_ADDR64\n")); \ break; \ case OP_VLAN: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_VLAN\n")); \ break; \ case OP_ADDR64VLAN: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_ADDR64VLAN\n")); \ break; \ case OP_LRGLEN: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_LRGLEN\n")); \ break; \ case OP_LRGLENVLAN: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_LRGLENVLAN\n")); \ break; \ case OP_BUFFER: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_BUFFER\n")); \ break; \ case OP_PACKET: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_PACKET\n")); \ break; \ case OP_LARGESEND: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_LARGESEND\n")); \ break; \ case OP_MSS: /* Yukon-Extreme only */ \ SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_MSS\n")) \ break; \ case OP_MSSVLAN: /* Yukon-Extreme only */ \ SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_MSSVLAN\n")) \ break; \ case OP_LSOV2: /* Yukon-Extreme only */ \ SK_DBG_MSG(pAC, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_LSOV2\n")) \ break; \ case SW_OWNER: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tunused LE\n")); \ break; \ default: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tunknown Opcode!!!\n")); \ } \ if ((Opcode & OP_BUFFER) == OP_BUFFER) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tControl: 0x%x\n", TXLE_GET_CTRL(pLE))); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tBufLen: 0x%x\n", TXLE_GET_LEN(pLE))); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tLowAddr: 0x%x\n", TXLE_GET_ADDR(pLE))); \ } \ if ((Opcode & OP_ADDR64) == OP_ADDR64) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tHighAddr: 0x%x\n", TXLE_GET_ADDR(pLE))); \ } \ if ((Opcode & OP_VLAN) == OP_VLAN) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tVLAN Id: 0x%x\n", TXLE_GET_VLAN(pLE))); \ } \ if ((Opcode & OP_LRGLEN) == OP_LRGLEN) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tLarge send length: 0x%x\n", TXLE_GET_LSLEN(pLE))); \ } \ if ((Opcode & OP_MSS) == OP_MSS) { /* Yukon-Extreme only */ \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tMSS value: 0x%x\n", TXLE_GET_MSSVAL(pLE))); \ } \ if ((Opcode & OP_LSOV2) == OP_LSOV2) { /* Yukon-Extreme only */ \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tLSOv2 lenght: 0x%x\n", TXLE_GET_LSOV2(pLE))); \ } \ if ((Opcode &(~HW_OWNER)) <= OP_ADDR64) { \ if ((Opcode & OP_TCPWRITE) == OP_TCPWRITE) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tTCP Sum Write: 0x%x\n", TXLE_GET_WRICS(pLE))); \ } \ if ((Opcode & OP_TCPSTART) == OP_TCPSTART) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tTCP Sum Start: 0x%x\n", TXLE_GET_STACS(pLE))); \ } \ if ((Opcode & OP_TCPINIT) == OP_TCPINIT) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tTCP Sum Init: 0x%x\n", TXLE_GET_INICS(pLE))); \ } \ if ((Opcode & OP_TCPLCK) == OP_TCPLCK) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tTCP Sum Lock: 0x%x\n", TXLE_GET_LCKCS(pLE))); \ } \ } \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("=====================\n")); \} #define SK_DBG_DUMP_ST_LE(pLE) { \ SK_U8 Opcode; \ SK_U16 HighVal; \ SK_U32 LowVal; \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("=== ST_LIST_ELEMENT @addr: %p contains: %02x %02x %02x %02x %02x %02x %02x %02x\n",\ pLE, ((SK_U8 *) pLE)[0], ((SK_U8 *) pLE)[1], ((SK_U8 *) pLE)[2],\ ((SK_U8 *) pLE)[3], ((SK_U8 *) pLE)[4], ((SK_U8 *) pLE)[5], \ ((SK_U8 *) pLE)[6], ((SK_U8 *) pLE)[7])); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\t (16bit) %04x %04x %04x %04x\n", \ ((SK_U16 *) pLE)[0], ((SK_U16 *) pLE)[1], ((SK_U16 *) pLE)[2], \ ((SK_U16 *) pLE)[3])); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\t (32bit) %08x %08x\n", \ ((SK_U32 *) pLE)[0], ((SK_U32 *) pLE)[1])); \ Opcode = STLE_GET_OPC(pLE); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOwn belongs to %s\n", ((Opcode & HW_OWNER) == SW_OWNER) ? \ "Hardware" : "Software")); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOpc: 0x%x", Opcode)); \ Opcode &= (~HW_OWNER); \ switch (Opcode) { \ case OP_RXSTAT: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_RXSTAT\n")); \ break; \ case OP_RXTIMESTAMP: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_RXTIMESTAMP\n")); \ break; \ case OP_RXVLAN: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_RXVLAN\n")); \ break; \ case OP_RXCHKS: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_RXCHKS\n")); \ break; \ case OP_RXCHKSVLAN: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_RXCHKSVLAN\n")); \ break; \ case OP_RXTIMEVLAN: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_RXTIMEVLAN\n")); \ break; \ case OP_RSS_HASH: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_RSS_HASH\n")); \ break; \ case OP_TXINDEXLE: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_TXINDEXLE\n")); \ break; \ case OP_MACSEC: /* Yukon-Extreme only */ \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_MACSEC\n")); \ break; \ case OP_MACSECVLAN: /* Yukon-Extreme only */ \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tOP_MACSECVLAN\n")); \ break; \ case HW_OWNER: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tunused LE\n")); \ break; \ default: \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tunknown status list element!!!\n")); \ } \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tPort: %c\n", 'A' + (CSS_GET_PORT(STLE_GET_LINK(pLE))))); \ if (Opcode == OP_RXSTAT) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tFrameLen: 0x%x\n", STLE_GET_LEN(pLE))); \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tFrameStat: 0x%x\n", STLE_GET_FRSTATUS(pLE))); \ if (HW_IS_EXT_LE_FORMAT(pAc)) { \ SK_DBG_MSG(pAc, SK_DBGMOD_HWM, SK_DBGCAT_INIT, \ ("\tChecksum Status Field: 0x%x\n", STLE_GET_LINK(pLE)));\ } \ } \ if ((Opcode & OP_RXVLAN) == OP_RXVLAN) { \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -