📄 spider_net.h
字号:
SPIDER_NET_GMAC1INT, SPIDER_NET_GIPSINT, SPIDER_NET_GFIFOINT, SPIDER_NET_GDMACINT, SPIDER_NET_GSYSINT, SPIDER_NET_GPWOPCMPINT, SPIDER_NET_GPROPCMPINT, SPIDER_NET_GPWFFINT, SPIDER_NET_GRMDADRINT, SPIDER_NET_GRMARPINT, SPIDER_NET_GRMMPINT, SPIDER_NET_GDTDEN0INT, SPIDER_NET_GDDDEN0INT, SPIDER_NET_GDCDEN0INT, SPIDER_NET_GDBDEN0INT, SPIDER_NET_GDADEN0INT, SPIDER_NET_GDTFDCINT, SPIDER_NET_GDDFDCINT, SPIDER_NET_GDCFDCINT, SPIDER_NET_GDBFDCINT, SPIDER_NET_GDAFDCINT, SPIDER_NET_GTTEDINT, SPIDER_NET_GDTDCEINT, SPIDER_NET_GRFDNMINT, SPIDER_NET_GRFCNMINT, SPIDER_NET_GRFBNMINT, SPIDER_NET_GRFANMINT, SPIDER_NET_GRFNMINT, SPIDER_NET_G1TMCNTINT, SPIDER_NET_GFREECNTINT};/* GHIINT1STS bits */enum spider_net_int1_status { SPIDER_NET_GTMFLLINT = 0, SPIDER_NET_GRMFLLINT, SPIDER_NET_GTMSHTINT, SPIDER_NET_GDTINVDINT, SPIDER_NET_GRFDFLLINT, SPIDER_NET_GDDDCEINT, SPIDER_NET_GDDINVDINT, SPIDER_NET_GRFCFLLINT, SPIDER_NET_GDCDCEINT, SPIDER_NET_GDCINVDINT, SPIDER_NET_GRFBFLLINT, SPIDER_NET_GDBDCEINT, SPIDER_NET_GDBINVDINT, SPIDER_NET_GRFAFLLINT, SPIDER_NET_GDADCEINT, SPIDER_NET_GDAINVDINT, SPIDER_NET_GDTRSERINT, SPIDER_NET_GDDRSERINT, SPIDER_NET_GDCRSERINT, SPIDER_NET_GDBRSERINT, SPIDER_NET_GDARSERINT, SPIDER_NET_GDSERINT, SPIDER_NET_GDTPTERINT, SPIDER_NET_GDDPTERINT, SPIDER_NET_GDCPTERINT, SPIDER_NET_GDBPTERINT, SPIDER_NET_GDAPTERINT};/* GHIINT2STS bits */enum spider_net_int2_status { SPIDER_NET_GPROPERINT = 0, SPIDER_NET_GMCTCRSNGINT, SPIDER_NET_GMCTLCOLINT, SPIDER_NET_GMCTTMOTINT, SPIDER_NET_GMCRCAERINT, SPIDER_NET_GMCRCALERINT, SPIDER_NET_GMCRALNERINT, SPIDER_NET_GMCROVRINT, SPIDER_NET_GMCRRNTINT, SPIDER_NET_GMCRRXERINT, SPIDER_NET_GTITCSERINT, SPIDER_NET_GTIFMTERINT, SPIDER_NET_GTIPKTRVKINT, SPIDER_NET_GTISPINGINT, SPIDER_NET_GTISADNGINT, SPIDER_NET_GTISPDNGINT, SPIDER_NET_GRIFMTERINT, SPIDER_NET_GRIPKTRVKINT, SPIDER_NET_GRISPINGINT, SPIDER_NET_GRISADNGINT, SPIDER_NET_GRISPDNGINT};#define SPIDER_NET_TXINT (1 << SPIDER_NET_GDTFDCINT)/* We rely on flagged descriptor interrupts */#define SPIDER_NET_RXINT ( (1 << SPIDER_NET_GDAFDCINT) )#define SPIDER_NET_LINKINT ( 1 << SPIDER_NET_GMAC2INT )#define SPIDER_NET_ERRINT ( 0xffffffff & \ (~SPIDER_NET_TXINT) & \ (~SPIDER_NET_RXINT) & \ (~SPIDER_NET_LINKINT) )#define SPIDER_NET_GPREXEC 0x80000000#define SPIDER_NET_GPRDAT_MASK 0x0000ffff#define SPIDER_NET_DMAC_NOINTR_COMPLETE 0x00800000#define SPIDER_NET_DMAC_TXFRMTL 0x00040000#define SPIDER_NET_DMAC_TCP 0x00020000#define SPIDER_NET_DMAC_UDP 0x00030000#define SPIDER_NET_TXDCEST 0x08000000#define SPIDER_NET_DESCR_RXFDIS 0x00000001#define SPIDER_NET_DESCR_RXDCEIS 0x00000002#define SPIDER_NET_DESCR_RXDEN0IS 0x00000004#define SPIDER_NET_DESCR_RXINVDIS 0x00000008#define SPIDER_NET_DESCR_RXRERRIS 0x00000010#define SPIDER_NET_DESCR_RXFDCIMS 0x00000100#define SPIDER_NET_DESCR_RXDCEIMS 0x00000200#define SPIDER_NET_DESCR_RXDEN0IMS 0x00000400#define SPIDER_NET_DESCR_RXINVDIMS 0x00000800#define SPIDER_NET_DESCR_RXRERRMIS 0x00001000#define SPIDER_NET_DESCR_UNUSED 0x077fe0e0#define SPIDER_NET_DESCR_IND_PROC_MASK 0xF0000000#define SPIDER_NET_DESCR_COMPLETE 0x00000000 /* used in rx and tx */#define SPIDER_NET_DESCR_RESPONSE_ERROR 0x10000000 /* used in rx and tx */#define SPIDER_NET_DESCR_PROTECTION_ERROR 0x20000000 /* used in rx and tx */#define SPIDER_NET_DESCR_FRAME_END 0x40000000 /* used in rx */#define SPIDER_NET_DESCR_FORCE_END 0x50000000 /* used in rx and tx */#define SPIDER_NET_DESCR_CARDOWNED 0xA0000000 /* used in rx and tx */#define SPIDER_NET_DESCR_NOT_IN_USE 0xF0000000#define SPIDER_NET_DESCR_TXDESFLG 0x00800000#define SPIDER_NET_DESCR_BAD_STATUS (SPIDER_NET_DESCR_RXDEN0IS | \ SPIDER_NET_DESCR_RXRERRIS | \ SPIDER_NET_DESCR_RXDEN0IMS | \ SPIDER_NET_DESCR_RXINVDIMS | \ SPIDER_NET_DESCR_RXRERRMIS | \ SPIDER_NET_DESCR_UNUSED)/* Descriptor, as defined by the hardware */struct spider_net_hw_descr { u32 buf_addr; u32 buf_size; u32 next_descr_addr; u32 dmac_cmd_status; u32 result_size; u32 valid_size; /* all zeroes for tx */ u32 data_status; u32 data_error; /* all zeroes for tx */} __attribute__((aligned(32)));struct spider_net_descr { struct spider_net_hw_descr *hwdescr; struct sk_buff *skb; u32 bus_addr; struct spider_net_descr *next; struct spider_net_descr *prev;};struct spider_net_descr_chain { spinlock_t lock; struct spider_net_descr *head; struct spider_net_descr *tail; struct spider_net_descr *ring; int num_desc; struct spider_net_hw_descr *hwring; dma_addr_t dma_addr;};/* descriptor data_status bits */#define SPIDER_NET_RX_IPCHK 29#define SPIDER_NET_RX_TCPCHK 28#define SPIDER_NET_VLAN_PACKET 21#define SPIDER_NET_DATA_STATUS_CKSUM_MASK ( (1 << SPIDER_NET_RX_IPCHK) | \ (1 << SPIDER_NET_RX_TCPCHK) )/* descriptor data_error bits */#define SPIDER_NET_RX_IPCHKERR 27#define SPIDER_NET_RX_RXTCPCHKERR 28#define SPIDER_NET_DATA_ERR_CKSUM_MASK (1 << SPIDER_NET_RX_IPCHKERR)/* the cases we don't pass the packet to the stack. * 701b8000 would be correct, but every packets gets that flag */#define SPIDER_NET_DESTROY_RX_FLAGS 0x700b8000/* this will be bigger some time */struct spider_net_options { int rx_csum; /* for rx: if 0 ip_summed=NONE, if 1 and hw has verified, ip_summed=UNNECESSARY */};#define SPIDER_NET_DEFAULT_MSG ( NETIF_MSG_DRV | \ NETIF_MSG_PROBE | \ NETIF_MSG_LINK | \ NETIF_MSG_TIMER | \ NETIF_MSG_IFDOWN | \ NETIF_MSG_IFUP | \ NETIF_MSG_RX_ERR | \ NETIF_MSG_TX_ERR | \ NETIF_MSG_TX_QUEUED | \ NETIF_MSG_INTR | \ NETIF_MSG_TX_DONE | \ NETIF_MSG_RX_STATUS | \ NETIF_MSG_PKTDATA | \ NETIF_MSG_HW | \ NETIF_MSG_WOL )struct spider_net_extra_stats { unsigned long rx_desc_error; unsigned long tx_timeouts; unsigned long alloc_rx_skb_error; unsigned long rx_iommu_map_error; unsigned long tx_iommu_map_error; unsigned long rx_desc_unk_state;};struct spider_net_card { struct net_device *netdev; struct pci_dev *pdev; struct mii_phy phy; struct napi_struct napi; int medium; void __iomem *regs; struct spider_net_descr_chain tx_chain; struct spider_net_descr_chain rx_chain; struct spider_net_descr *low_watermark; int aneg_count; struct timer_list aneg_timer; struct timer_list tx_timer; struct work_struct tx_timeout_task; atomic_t tx_timeout_task_counter; wait_queue_head_t waitq; int num_rx_ints; int ignore_rx_ramfull; /* for ethtool */ int msg_enable; struct spider_net_extra_stats spider_stats; struct spider_net_options options; /* Must be last item in struct */ struct spider_net_descr darray[0];};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -