📄 e1000_hw.h
字号:
#define EEPROM_COMPAT 0x0003#define EEPROM_ID_LED_SETTINGS 0x0004#define EEPROM_VERSION 0x0005#define EEPROM_SERDES_AMPLITUDE 0x0006 /* For SERDES output amplitude adjustment. */#define EEPROM_PHY_CLASS_WORD 0x0007#define EEPROM_INIT_CONTROL1_REG 0x000A#define EEPROM_INIT_CONTROL2_REG 0x000F#define EEPROM_SWDEF_PINS_CTRL_PORT_1 0x0010#define EEPROM_INIT_CONTROL3_PORT_B 0x0014#define EEPROM_INIT_3GIO_3 0x001A#define EEPROM_SWDEF_PINS_CTRL_PORT_0 0x0020#define EEPROM_INIT_CONTROL3_PORT_A 0x0024#define EEPROM_CFG 0x0012#define EEPROM_FLASH_VERSION 0x0032#define EEPROM_CHECKSUM_REG 0x003F#define E1000_EEPROM_CFG_DONE 0x00040000 /* MNG config cycle done */#define E1000_EEPROM_CFG_DONE_PORT_1 0x00080000 /* ...for second port *//* 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 *//* Transmit Control */#define E1000_TCTL_RST 0x00000001 /* software reset */#define E1000_TCTL_EN 0x00000002 /* enable tx */#define E1000_TCTL_BCE 0x00000004 /* busy check enable */#define E1000_TCTL_PSP 0x00000008 /* pad short packets */#define E1000_TCTL_CT 0x00000ff0 /* collision threshold */#define E1000_TCTL_COLD 0x003ff000 /* collision distance */#define E1000_TCTL_SWXOFF 0x00400000 /* SW Xoff transmission */#define E1000_TCTL_PBE 0x00800000 /* Packet Burst Enable */#define E1000_TCTL_RTLC 0x01000000 /* Re-transmit on late collision */#define E1000_TCTL_NRTU 0x02000000 /* No Re-transmit on underrun */#define E1000_TCTL_MULR 0x10000000 /* Multiple request support *//* Receive Descriptor */struct e1000_rx_desc { uint64_t buffer_addr; /* Address of the descriptor's data buffer */ uint16_t length; /* Length of data DMAed into data buffer */ uint16_t csum; /* Packet checksum */ uint8_t status; /* Descriptor status */ uint8_t errors; /* Descriptor Errors */ uint16_t special;};/* Receive Decriptor bit definitions */#define E1000_RXD_STAT_DD 0x01 /* Descriptor Done */#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/* Receive Address */#define E1000_RAH_AV 0x80000000 /* Receive descriptor valid *//* 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;};/* Management Control */#define E1000_MANC_SMBUS_EN 0x00000001 /* SMBus Enabled - RO */#define E1000_MANC_ASF_EN 0x00000002 /* ASF Enabled - RO */#define E1000_MANC_R_ON_FORCE 0x00000004 /* Reset on Force TCO - RO */#define E1000_MANC_RMCP_EN 0x00000100 /* Enable RCMP 026Fh Filtering */#define E1000_MANC_0298_EN 0x00000200 /* Enable RCMP 0298h Filtering */#define E1000_MANC_IPV4_EN 0x00000400 /* Enable IPv4 */#define E1000_MANC_IPV6_EN 0x00000800 /* Enable IPv6 */#define E1000_MANC_SNAP_EN 0x00001000 /* Accept LLC/SNAP */#define E1000_MANC_ARP_EN 0x00002000 /* Enable ARP Request Filtering */#define E1000_MANC_NEIGHBOR_EN 0x00004000 /* Enable Neighbor Discovery * Filtering */#define E1000_MANC_ARP_RES_EN 0x00008000 /* Enable ARP response Filtering */#define E1000_MANC_TCO_RESET 0x00010000 /* TCO Reset Occurred */#define E1000_MANC_RCV_TCO_EN 0x00020000 /* Receive TCO Packets Enabled */#define E1000_MANC_REPORT_STATUS 0x00040000 /* Status Reporting Enabled */#define E1000_MANC_RCV_ALL 0x00080000 /* Receive All Enabled */#define E1000_MANC_BLK_PHY_RST_ON_IDE 0x00040000 /* Block phy resets */#define E1000_MANC_EN_MAC_ADDR_FILTER 0x00100000 /* Enable MAC address * filtering */#define E1000_MANC_EN_MNG2HOST 0x00200000 /* Enable MNG packets to host * memory */#define E1000_MANC_EN_IP_ADDR_FILTER 0x00400000 /* Enable IP address * filtering */#define E1000_MANC_EN_XSUM_FILTER 0x00800000 /* Enable checksum filtering */#define E1000_MANC_BR_EN 0x01000000 /* Enable broadcast filtering */#define E1000_MANC_SMB_REQ 0x01000000 /* SMBus Request */#define E1000_MANC_SMB_GNT 0x02000000 /* SMBus Grant */#define E1000_MANC_SMB_CLK_IN 0x04000000 /* SMBus Clock In */#define E1000_MANC_SMB_DATA_IN 0x08000000 /* SMBus Data In */#define E1000_MANC_SMB_DATA_OUT 0x10000000 /* SMBus Data Out */#define E1000_MANC_SMB_CLK_OUT 0x20000000 /* SMBus Clock Out */#define E1000_MANC_SMB_DATA_OUT_SHIFT 28 /* SMBus Data Out Shift */#define E1000_MANC_SMB_CLK_OUT_SHIFT 29 /* SMBus Clock Out Shift *//* For checksumming, the sum of all words in the EEPROM should equal 0xBABA. */#define EEPROM_SUM 0xBABA#endif /* _E1000_HW_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -