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

📄 e1000_hw.h

📁 linux-2.4.29操作系统的源码
💻 H
📖 第 1 页 / 共 5 页
字号:
void e1000_mta_set(struct e1000_hw *hw, uint32_t hash_value);void e1000_rar_set(struct e1000_hw *hw, uint8_t * mc_addr, uint32_t rar_index);void e1000_write_vfta(struct e1000_hw *hw, uint32_t offset, uint32_t value);void e1000_clear_vfta(struct e1000_hw *hw);/* LED functions */int32_t e1000_setup_led(struct e1000_hw *hw);int32_t e1000_cleanup_led(struct e1000_hw *hw);int32_t e1000_led_on(struct e1000_hw *hw);int32_t e1000_led_off(struct e1000_hw *hw);/* Adaptive IFS Functions *//* Everything else */uint32_t e1000_enable_mng_pass_thru(struct e1000_hw *hw);void e1000_clear_hw_cntrs(struct e1000_hw *hw);void e1000_reset_adaptive(struct e1000_hw *hw);void e1000_update_adaptive(struct e1000_hw *hw);void e1000_tbi_adjust_stats(struct e1000_hw *hw, struct e1000_hw_stats *stats, uint32_t frame_len, uint8_t * mac_addr);void e1000_get_bus_info(struct e1000_hw *hw);void e1000_pci_set_mwi(struct e1000_hw *hw);void e1000_pci_clear_mwi(struct e1000_hw *hw);void e1000_read_pci_cfg(struct e1000_hw *hw, uint32_t reg, uint16_t * value);void e1000_write_pci_cfg(struct e1000_hw *hw, uint32_t reg, uint16_t * value);/* Port I/O is only supported on 82544 and newer */uint32_t e1000_io_read(struct e1000_hw *hw, unsigned long port);uint32_t e1000_read_reg_io(struct e1000_hw *hw, uint32_t offset);void e1000_io_write(struct e1000_hw *hw, unsigned long port, uint32_t value);void e1000_write_reg_io(struct e1000_hw *hw, uint32_t offset, uint32_t value);int32_t e1000_config_dsp_after_link_change(struct e1000_hw *hw, boolean_t link_up);int32_t e1000_set_d3_lplu_state(struct e1000_hw *hw, boolean_t active);#define E1000_READ_REG_IO(a, reg) \    e1000_read_reg_io((a), E1000_##reg)#define E1000_WRITE_REG_IO(a, reg, val) \    e1000_write_reg_io((a), E1000_##reg, val)/* PCI Device IDs */#define E1000_DEV_ID_82542               0x1000#define E1000_DEV_ID_82543GC_FIBER       0x1001#define E1000_DEV_ID_82543GC_COPPER      0x1004#define E1000_DEV_ID_82544EI_COPPER      0x1008#define E1000_DEV_ID_82544EI_FIBER       0x1009#define E1000_DEV_ID_82544GC_COPPER      0x100C#define E1000_DEV_ID_82544GC_LOM         0x100D#define E1000_DEV_ID_82540EM             0x100E#define E1000_DEV_ID_82540EM_LOM         0x1015#define E1000_DEV_ID_82540EP_LOM         0x1016#define E1000_DEV_ID_82540EP             0x1017#define E1000_DEV_ID_82540EP_LP          0x101E#define E1000_DEV_ID_82545EM_COPPER      0x100F#define E1000_DEV_ID_82545EM_FIBER       0x1011#define E1000_DEV_ID_82545GM_COPPER      0x1026#define E1000_DEV_ID_82545GM_FIBER       0x1027#define E1000_DEV_ID_82545GM_SERDES      0x1028#define E1000_DEV_ID_82546EB_COPPER      0x1010#define E1000_DEV_ID_82546EB_FIBER       0x1012#define E1000_DEV_ID_82546EB_QUAD_COPPER 0x101D#define E1000_DEV_ID_82541EI             0x1013#define E1000_DEV_ID_82541EI_MOBILE      0x1018#define E1000_DEV_ID_82541ER             0x1078#define E1000_DEV_ID_82547GI             0x1075#define E1000_DEV_ID_82541GI             0x1076#define E1000_DEV_ID_82541GI_MOBILE      0x1077#define E1000_DEV_ID_82541GI_LF          0x107C#define E1000_DEV_ID_82546GB_COPPER      0x1079#define E1000_DEV_ID_82546GB_FIBER       0x107A#define E1000_DEV_ID_82546GB_SERDES      0x107B#define E1000_DEV_ID_82546GB_PCIE        0x108A#define E1000_DEV_ID_82547EI             0x1019#define NODE_ADDRESS_SIZE 6#define ETH_LENGTH_OF_ADDRESS 6/* MAC decode size is 128K - This is the size of BAR0 */#define MAC_DECODE_SIZE (128 * 1024)#define E1000_82542_2_0_REV_ID 2#define E1000_82542_2_1_REV_ID 3#define E1000_REVISION_0       0#define E1000_REVISION_1       1#define E1000_REVISION_2       2#define SPEED_10    10#define SPEED_100   100#define SPEED_1000  1000#define HALF_DUPLEX 1#define FULL_DUPLEX 2/* The sizes (in bytes) of a ethernet packet */#define ENET_HEADER_SIZE             14#define MAXIMUM_ETHERNET_FRAME_SIZE  1518 /* With FCS */#define MINIMUM_ETHERNET_FRAME_SIZE  64   /* With FCS */#define ETHERNET_FCS_SIZE            4#define MAXIMUM_ETHERNET_PACKET_SIZE \    (MAXIMUM_ETHERNET_FRAME_SIZE - ETHERNET_FCS_SIZE)#define MINIMUM_ETHERNET_PACKET_SIZE \    (MINIMUM_ETHERNET_FRAME_SIZE - ETHERNET_FCS_SIZE)#define CRC_LENGTH                   ETHERNET_FCS_SIZE#define MAX_JUMBO_FRAME_SIZE         0x3F00/* 802.1q VLAN Packet Sizes */#define VLAN_TAG_SIZE                     4     /* 802.3ac tag (not DMAed) *//* Ethertype field values */#define ETHERNET_IEEE_VLAN_TYPE 0x8100  /* 802.3ac packet */#define ETHERNET_IP_TYPE        0x0800  /* IP packets */#define ETHERNET_ARP_TYPE       0x0806  /* Address Resolution Protocol (ARP) *//* Packet Header defines */#define IP_PROTOCOL_TCP    6#define IP_PROTOCOL_UDP    0x11/* This defines the bits that are set in the Interrupt Mask * Set/Read Register.  Each bit is documented below: *   o RXDMT0 = Receive Descriptor Minimum Threshold hit (ring 0) *   o RXSEQ  = Receive Sequence Error */#define POLL_IMS_ENABLE_MASK ( \    E1000_IMS_RXDMT0 |         \    E1000_IMS_RXSEQ)/* This defines the bits that are set in the Interrupt Mask * Set/Read Register.  Each bit is documented below: *   o RXT0   = Receiver Timer Interrupt (ring 0) *   o TXDW   = Transmit Descriptor Written Back *   o RXDMT0 = Receive Descriptor Minimum Threshold hit (ring 0) *   o RXSEQ  = Receive Sequence Error *   o LSC    = Link Status Change */#define IMS_ENABLE_MASK ( \    E1000_IMS_RXT0   |    \    E1000_IMS_TXDW   |    \    E1000_IMS_RXDMT0 |    \    E1000_IMS_RXSEQ  |    \    E1000_IMS_LSC)/* Number of high/low register pairs in the RAR. The RAR (Receive Address * Registers) holds the directed and multicast addresses that we monitor. We * reserve one of these spots for our directed address, allowing us room for * E1000_RAR_ENTRIES - 1 multicast addresses. */#define E1000_RAR_ENTRIES 15#define MIN_NUMBER_OF_DESCRIPTORS 8#define MAX_NUMBER_OF_DESCRIPTORS 0xFFF8/* 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_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_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 0x000D  /* Priority is in upper 3 of 16 */#define E1000_RXD_SPC_CFI_MASK  0x1000  /* CFI is bit 12 */#define E1000_RXD_SPC_CFI_SHIFT 0x000C  /* CFI is bit 12 *//* 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)/* 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) *//* 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/* 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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -