📄 e1000_hw.h
字号:
#define E1000_RXD_STAT_EOP 0x02 /* End of Packet */#define E1000_RXD_STAT_IXSM 0x04 /* Ignore checksum */#define E1000_RXD_STAT_VP 0x08 /* IEEE VLAN Packet */#define E1000_RXD_STAT_UDPCS 0x10 /* UDP xsum caculated */#define E1000_RXD_STAT_TCPCS 0x20 /* TCP xsum calculated */#define E1000_RXD_STAT_IPCS 0x40 /* IP xsum calculated */#define E1000_RXD_STAT_PIF 0x80 /* passed in-exact filter */#define E1000_RXD_STAT_IPIDV 0x200 /* IP identification valid */#define E1000_RXD_STAT_UDPV 0x400 /* Valid UDP checksum */#define E1000_RXD_STAT_ACK 0x8000 /* ACK Packet indication */#define E1000_RXD_ERR_CE 0x01 /* CRC Error */#define E1000_RXD_ERR_SE 0x02 /* Symbol Error */#define E1000_RXD_ERR_SEQ 0x04 /* Sequence Error */#define E1000_RXD_ERR_CXE 0x10 /* Carrier Extension Error */#define E1000_RXD_ERR_TCPE 0x20 /* TCP/UDP Checksum Error */#define E1000_RXD_ERR_IPE 0x40 /* IP Checksum Error */#define E1000_RXD_ERR_RXE 0x80 /* Rx Data Error */#define E1000_RXD_SPC_VLAN_MASK 0x0FFF /* VLAN ID is in lower 12 bits */#define E1000_RXD_SPC_PRI_MASK 0xE000 /* Priority is in upper 3 bits */#define E1000_RXD_SPC_PRI_SHIFT 13#define E1000_RXD_SPC_CFI_MASK 0x1000 /* CFI is bit 12 */#define E1000_RXD_SPC_CFI_SHIFT 12#define E1000_RXDEXT_STATERR_CE 0x01000000#define E1000_RXDEXT_STATERR_SE 0x02000000#define E1000_RXDEXT_STATERR_SEQ 0x04000000#define E1000_RXDEXT_STATERR_CXE 0x10000000#define E1000_RXDEXT_STATERR_TCPE 0x20000000#define E1000_RXDEXT_STATERR_IPE 0x40000000#define E1000_RXDEXT_STATERR_RXE 0x80000000#define E1000_RXDPS_HDRSTAT_HDRSP 0x00008000#define E1000_RXDPS_HDRSTAT_HDRLEN_MASK 0x000003FF/* mask to determine if packets should be dropped due to frame errors */#define E1000_RXD_ERR_FRAME_ERR_MASK ( \ E1000_RXD_ERR_CE | \ E1000_RXD_ERR_SE | \ E1000_RXD_ERR_SEQ | \ E1000_RXD_ERR_CXE | \ E1000_RXD_ERR_RXE)/* Same mask, but for extended and packet split descriptors */#define E1000_RXDEXT_ERR_FRAME_ERR_MASK ( \ E1000_RXDEXT_STATERR_CE | \ E1000_RXDEXT_STATERR_SE | \ E1000_RXDEXT_STATERR_SEQ | \ E1000_RXDEXT_STATERR_CXE | \ E1000_RXDEXT_STATERR_RXE)/* Transmit Descriptor */struct e1000_tx_desc { uint64_t buffer_addr; /* Address of the descriptor's data buffer */ union { uint32_t data; struct { uint16_t length; /* Data buffer length */ uint8_t cso; /* Checksum offset */ uint8_t cmd; /* Descriptor control */ } flags; } lower; union { uint32_t data; struct { uint8_t status; /* Descriptor status */ uint8_t css; /* Checksum start */ uint16_t special; } fields; } upper;};/* Transmit Descriptor bit definitions */#define E1000_TXD_DTYP_D 0x00100000 /* Data Descriptor */#define E1000_TXD_DTYP_C 0x00000000 /* Context Descriptor */#define E1000_TXD_POPTS_IXSM 0x01 /* Insert IP checksum */#define E1000_TXD_POPTS_TXSM 0x02 /* Insert TCP/UDP checksum */#define E1000_TXD_CMD_EOP 0x01000000 /* End of Packet */#define E1000_TXD_CMD_IFCS 0x02000000 /* Insert FCS (Ethernet CRC) */#define E1000_TXD_CMD_IC 0x04000000 /* Insert Checksum */#define E1000_TXD_CMD_RS 0x08000000 /* Report Status */#define E1000_TXD_CMD_RPS 0x10000000 /* Report Packet Sent */#define E1000_TXD_CMD_DEXT 0x20000000 /* Descriptor extension (0 = legacy) */#define E1000_TXD_CMD_VLE 0x40000000 /* Add VLAN tag */#define E1000_TXD_CMD_IDE 0x80000000 /* Enable Tidv register */#define E1000_TXD_STAT_DD 0x00000001 /* Descriptor Done */#define E1000_TXD_STAT_EC 0x00000002 /* Excess Collisions */#define E1000_TXD_STAT_LC 0x00000004 /* Late Collisions */#define E1000_TXD_STAT_TU 0x00000008 /* Transmit underrun */#define E1000_TXD_CMD_TCP 0x01000000 /* TCP packet */#define E1000_TXD_CMD_IP 0x02000000 /* IP packet */#define E1000_TXD_CMD_TSE 0x04000000 /* TCP Seg enable */#define E1000_TXD_STAT_TC 0x00000004 /* Tx Underrun *//* Offload Context Descriptor */struct e1000_context_desc { union { uint32_t ip_config; struct { uint8_t ipcss; /* IP checksum start */ uint8_t ipcso; /* IP checksum offset */ uint16_t ipcse; /* IP checksum end */ } ip_fields; } lower_setup; union { uint32_t tcp_config; struct { uint8_t tucss; /* TCP checksum start */ uint8_t tucso; /* TCP checksum offset */ uint16_t tucse; /* TCP checksum end */ } tcp_fields; } upper_setup; uint32_t cmd_and_length; /* */ union { uint32_t data; struct { uint8_t status; /* Descriptor status */ uint8_t hdr_len; /* Header length */ uint16_t mss; /* Maximum segment size */ } fields; } tcp_seg_setup;};/* Offload data descriptor */struct e1000_data_desc { uint64_t buffer_addr; /* Address of the descriptor's buffer address */ union { uint32_t data; struct { uint16_t length; /* Data buffer length */ uint8_t typ_len_ext; /* */ uint8_t cmd; /* */ } flags; } lower; union { uint32_t data; struct { uint8_t status; /* Descriptor status */ uint8_t popts; /* Packet Options */ uint16_t special; /* */ } fields; } upper;};/* Filters */#define E1000_NUM_UNICAST 16 /* Unicast filter entries */#define E1000_MC_TBL_SIZE 128 /* Multicast Filter Table (4096 bits) */#define E1000_VLAN_FILTER_TBL_SIZE 128 /* VLAN Filter Table (4096 bits) */#define E1000_NUM_UNICAST_ICH8LAN 7#define E1000_MC_TBL_SIZE_ICH8LAN 32/* Receive Address Register */struct e1000_rar { volatile uint32_t low; /* receive address low */ volatile uint32_t high; /* receive address high */};/* Number of entries in the Multicast Table Array (MTA). */#define E1000_NUM_MTA_REGISTERS 128#define E1000_NUM_MTA_REGISTERS_ICH8LAN 32/* IPv4 Address Table Entry */struct e1000_ipv4_at_entry { volatile uint32_t ipv4_addr; /* IP Address (RW) */ volatile uint32_t reserved;};/* Four wakeup IP addresses are supported */#define E1000_WAKEUP_IP_ADDRESS_COUNT_MAX 4#define E1000_IP4AT_SIZE E1000_WAKEUP_IP_ADDRESS_COUNT_MAX#define E1000_IP4AT_SIZE_ICH8LAN 3#define E1000_IP6AT_SIZE 1/* IPv6 Address Table Entry */struct e1000_ipv6_at_entry { volatile uint8_t ipv6_addr[16];};/* Flexible Filter Length Table Entry */struct e1000_fflt_entry { volatile uint32_t length; /* Flexible Filter Length (RW) */ volatile uint32_t reserved;};/* Flexible Filter Mask Table Entry */struct e1000_ffmt_entry { volatile uint32_t mask; /* Flexible Filter Mask (RW) */ volatile uint32_t reserved;};/* Flexible Filter Value Table Entry */struct e1000_ffvt_entry { volatile uint32_t value; /* Flexible Filter Value (RW) */ volatile uint32_t reserved;};/* Four Flexible Filters are supported */#define E1000_FLEXIBLE_FILTER_COUNT_MAX 4/* Each Flexible Filter is at most 128 (0x80) bytes in length */#define E1000_FLEXIBLE_FILTER_SIZE_MAX 128#define E1000_FFLT_SIZE E1000_FLEXIBLE_FILTER_COUNT_MAX#define E1000_FFMT_SIZE E1000_FLEXIBLE_FILTER_SIZE_MAX#define E1000_FFVT_SIZE E1000_FLEXIBLE_FILTER_SIZE_MAX#define E1000_DISABLE_SERDES_LOOPBACK 0x0400/* Register Set. (82543, 82544) * * Registers are defined to be 32 bits and should be accessed as 32 bit values. * These registers are physically located on the NIC, but are mapped into the * host memory address space. * * RW - register is both readable and writable * RO - register is read only * WO - register is write only * R/clr - register is read only and is cleared when read * A - register array */#define E1000_CTRL 0x00000 /* Device Control - RW */#define E1000_CTRL_DUP 0x00004 /* Device Control Duplicate (Shadow) - RW */#define E1000_STATUS 0x00008 /* Device Status - RO */#define E1000_EECD 0x00010 /* EEPROM/Flash Control - RW */#define E1000_EERD 0x00014 /* EEPROM Read - RW */#define E1000_CTRL_EXT 0x00018 /* Extended Device Control - RW */#define E1000_FLA 0x0001C /* Flash Access - RW */#define E1000_MDIC 0x00020 /* MDI Control - RW */#define E1000_SCTL 0x00024 /* SerDes Control - RW */#define E1000_FEXTNVM 0x00028 /* Future Extended NVM register */#define E1000_FCAL 0x00028 /* Flow Control Address Low - RW */#define E1000_FCAH 0x0002C /* Flow Control Address High -RW */#define E1000_FCT 0x00030 /* Flow Control Type - RW */#define E1000_VET 0x00038 /* VLAN Ether Type - RW */#define E1000_ICR 0x000C0 /* Interrupt Cause Read - R/clr */#define E1000_ITR 0x000C4 /* Interrupt Throttling Rate - RW */#define E1000_ICS 0x000C8 /* Interrupt Cause Set - WO */#define E1000_IMS 0x000D0 /* Interrupt Mask Set - RW */#define E1000_IMC 0x000D8 /* Interrupt Mask Clear - WO */#define E1000_IAM 0x000E0 /* Interrupt Acknowledge Auto Mask */#define E1000_RCTL 0x00100 /* RX Control - RW */#define E1000_RDTR1 0x02820 /* RX Delay Timer (1) - RW */#define E1000_RDBAL1 0x02900 /* RX Descriptor Base Address Low (1) - RW */#define E1000_RDBAH1 0x02904 /* RX Descriptor Base Address High (1) - RW */#define E1000_RDLEN1 0x02908 /* RX Descriptor Length (1) - RW */#define E1000_RDH1 0x02910 /* RX Descriptor Head (1) - RW */#define E1000_RDT1 0x02918 /* RX Descriptor Tail (1) - RW */#define E1000_FCTTV 0x00170 /* Flow Control Transmit Timer Value - RW */#define E1000_TXCW 0x00178 /* TX Configuration Word - RW */#define E1000_RXCW 0x00180 /* RX Configuration Word - RO */#define E1000_TCTL 0x00400 /* TX Control - RW */#define E1000_TCTL_EXT 0x00404 /* Extended TX Control - RW */#define E1000_TIPG 0x00410 /* TX Inter-packet gap -RW */#define E1000_TBT 0x00448 /* TX Burst Timer - RW */#define E1000_AIT 0x00458 /* Adaptive Interframe Spacing Throttle - RW */#define E1000_LEDCTL 0x00E00 /* LED Control - RW */#define E1000_EXTCNF_CTRL 0x00F00 /* Extended Configuration Control */#define E1000_EXTCNF_SIZE 0x00F08 /* Extended Configuration Size */#define E1000_PHY_CTRL 0x00F10 /* PHY Control Register in CSR */#define FEXTNVM_SW_CONFIG 0x0001#define E1000_PBA 0x01000 /* Packet Buffer Allocation - RW */#define E1000_PBS 0x01008 /* Packet Buffer Size */#define E1000_EEMNGCTL 0x01010 /* MNG EEprom Control */#define E1000_FLASH_UPDATES 1000#define E1000_EEARBC 0x01024 /* EEPROM Auto Read Bus Control */#define E1000_FLASHT 0x01028 /* FLASH Timer Register */#define E1000_EEWR 0x0102C /* EEPROM Write Register - RW */#define E1000_FLSWCTL 0x01030 /* FLASH control register */#define E1000_FLSWDATA 0x01034 /* FLASH data register */#define E1000_FLSWCNT 0x01038 /* FLASH Access Counter */#define E1000_FLOP 0x0103C /* FLASH Opcode Register */#define E1000_ERT 0x02008 /* Early Rx Threshold - RW */#define E1000_FCRTL 0x02160 /* Flow Control Receive Threshold Low - RW */#define E1000_FCRTH 0x02168 /* Flow Control Receive Threshold High - RW */#define E1000_PSRCTL 0x02170 /* Packet Split Receive Control - RW */#define E1000_RDBAL 0x02800 /* RX Descriptor Base Address Low - RW */#define E1000_RDBAH 0x02804 /* RX Descriptor Base Address High - RW */#define E1000_RDLEN 0x02808 /* RX Descriptor Length - RW */#define E1000_RDH 0x02810 /* RX Descriptor Head - RW */#define E1000_RDT 0x02818 /* RX Descriptor Tail - RW */#define E1000_RDTR 0x02820 /* RX Delay Timer - RW */#define E1000_RDBAL0 E1000_RDBAL /* RX Desc Base Address Low (0) - RW */#define E1000_RDBAH0 E1000_RDBAH /* RX Desc Base Address High (0) - RW */#define E1000_RDLEN0 E1000_RDLEN /* RX Desc Length (0) - RW */#define E1000_RDH0 E1000_RDH /* RX Desc Head (0) - RW */#define E1000_RDT0 E1000_RDT /* RX Desc Tail (0) - RW */#define E1000_RDTR0 E1000_RDTR /* RX Delay Timer (0) - RW */#define E1000_RXDCTL 0x02828 /* RX Descriptor Control queue 0 - RW */#define E1000_RXDCTL1 0x02928 /* RX Descriptor Control queue 1 - RW */#define E1000_RADV 0x0282C /* RX Interrupt Absolute Delay Timer - RW */#define E1000_RSRPD 0x02C00 /* RX Small Packet Detect - RW */#define E1000_RAID 0x02C08 /* Receive Ack Interrupt Delay - RW */#define E1000_TXDMAC 0x03000 /* TX DMA Control - RW */#define E1000_KABGTXD 0x03004 /* AFE Band Gap Transmit Ref Data */#define E1000_TDFH 0x03410 /* TX Data FIFO Head - RW */#define E1000_TDFT 0x03418 /* TX Data FIFO Tail - RW */#define E1000_TDFHS 0x03420 /* TX Data FIFO Head Saved - RW */#define E1000_TDFTS 0x03428 /* TX Data FIFO Tail Saved - RW */#define E1000_TDFPC 0x03430 /* TX Data FIFO Packet Count - RW */#define E1000_TDBAL 0x03800 /* TX Descriptor Base Address Low - RW */#define E1000_TDBAH 0x03804 /* TX Descriptor Base Address High - RW */#define E1000_TDLEN 0x03808 /* TX Descriptor Length - RW */#define E1000_TDH 0x03810 /* TX Descriptor Head - RW */#define E1000_TDT 0x03818 /* TX Descripotr Tail - RW */#define E1000_TIDV 0x03820 /* TX Interrupt Delay Value - RW */#define E1000_TXDCTL 0x03828 /* TX Descriptor Control - RW */#define E1000_TADV 0x0382C /* TX Interrupt Absolute Delay Val - RW */#define E1000_TSPMT 0x03830 /* TCP Segmentation PAD & Min Threshold - RW */#define E1000_TARC0 0x03840 /* TX Arbitration Count (0) */#define E1000_TDBAL1 0x03900 /* TX Desc Base Address Low (1) - RW */#define E1000_TDBAH1 0x03904 /* TX Desc Base Address High (1) - RW */#define E1000_TDLEN1 0x03908 /* TX Desc Length (1) - RW */#define E1000_TDH1 0x03910 /* TX Desc Head (1) - RW */#define E1000_TDT1 0x03918 /* TX Desc Tail (1) - RW */#define E1000_TXDCTL1 0x03928 /* TX Descriptor Control (1) - RW */#define E1000_TARC1 0x03940 /* TX Arbitration Count (1) */#define E1000_CRCERRS 0x04000 /* CRC Error Count - R/clr */#define E1000_ALGNERRC 0x04004 /* Alignment Error Count - R/clr */#define E1000_SYMERRS 0x04008 /* Symbol Error Count - R/clr */#define E1000_RXERRC 0x0400C /* Receive Error Count - R/clr */#define E1000_MPC 0x04010 /* Missed Packet Count - R/clr */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -