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

📄 sky2le.h

📁 这是Marvell Technology Group Ltd. 4355 (rev 12)网卡在linux下的驱动程序源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
 * */#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 + -