📄 at_hw.h
字号:
#define AT_ERR_PARAM 4
#define AT_ERR_MAC_TYPE 5
#define AT_ERR_PHY_TYPE 6
#define AT_ERR_PHY_SPEED 7
#define AT_ERR_PHY_RES 8
#define SPEED_0 0xffff
#define SPEED_10 10
#define SPEED_100 100
#define SPEED_1000 1000
#define HALF_DUPLEX 1
#define FULL_DUPLEX 2
#define MEDIA_TYPE_AUTO_SENSOR 0
#define MEDIA_TYPE_1000M_FULL 1
#define MEDIA_TYPE_100M_FULL 2
#define MEDIA_TYPE_100M_HALF 3
#define MEDIA_TYPE_10M_FULL 4
#define MEDIA_TYPE_10M_HALF 5
#define ADVERTISE_10_HALF 0x0001
#define ADVERTISE_10_FULL 0x0002
#define ADVERTISE_100_HALF 0x0004
#define ADVERTISE_100_FULL 0x0008
#define ADVERTISE_1000_HALF 0x0010 /* Not used, just FYI */
#define ADVERTISE_1000_FULL 0x0020
#define AUTONEG_ADVERTISE_SPEED_DEFAULT 0x002F /* Everything but 1000-Half */
#define AUTONEG_ADVERTISE_10_100_ALL 0x000F /* All 10/100 speeds*/
#define AUTONEG_ADVERTISE_10_ALL 0x0003 /* 10Mbps Full & Half speeds*/
/* The size (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 MAX_JUMBO_FRAME_SIZE 0x2000
#define VLAN_SIZE 4
#define PHY_AUTO_NEG_TIME 45 /* 4.5 Seconds */
#define PHY_FORCE_TIME 20 /* 2.0 Seconds */
/* For checksumming , the sum of all words in the EEPROM should equal 0xBABA */
#define EEPROM_SUM 0xBABA
#define NODE_ADDRESS_SIZE 6
/* TPD definition */
typedef struct _TpdDescr {
u64 addr;
u16 buf_len :14;
u16 dma_int :1;
u16 tx_int :1;
u16 vlan;
u16 eop :1;
u16 ipver :1; // 0 : IPV4, 1:IPV6
u16 ins_vlan:1;
u16 my_xsum :1;
u16 segment :1;
u16 ipxsum :1;
u16 tcpxsum :1;
u16 udpxsum :1;
u16 vlan_tag:1;
u16 eth_type:1;
u16 iphdrlen:4;
u16 tcphdrlen:4;
u16 hdr_flag:1;
u16 tcp_mss :13;
} _AT_ATTRIB_PACK_ TpdDescr;
typedef struct _TpdIPv6Descr {
u64 addr;
u16 buf_len :14;
u16 dma_int :1;
u16 tx_int :1;
u16 vlan;
u16 eop :1;
u16 ipver :1; // 0 : IPV4, 1:IPV6
u16 ins_vlan:1;
u16 my_xsum :1;
u16 segment :1;
u16 ipv6hdrlen_1:3;
u16 vlan_tag:1;
u16 eth_type:1;
u16 ipv6hdrlen_2:4;
u16 tcphdrlen:4;
u16 hdr_flag:1;
u16 tcp_mss :13;
} _AT_ATTRIB_PACK_ TpdIPv6Descr;
// Tpd for custom checksum
typedef struct _TpdCXsumDescr {
u64 addr;
u16 buf_len :14;
u16 dma_int :1;
u16 tx_int :1;
u16 vlan;
u16 eop :1;
u16 coals :1;
u16 ins_vlan:1;
u16 my_xsum :1;
u16 segment :1;
u16 ipxsum :1;
u16 tcpxsum :1;
u16 udpxsum :1;
u16 vlan_tag:1;
u16 eth_type:1;
u16 iphdrlen:4;
u16 tcphdrlen:2;
u16 payld_ofs:8;
u16 psdxsum_ofs:8;
} _AT_ATTRIB_PACK_ TpdCXsumDescr;
#define MAX_TX_BUF_LEN 0x3000
/* RRS(Receive Return Status) definition */
typedef struct _RecvRetStatus {
u16 seq_num ;
u16 hash_lo ;
u16 ippld_xsum ; /* ip payload checksum */
u16 pkt_len :14 ;
u16 cpu_n :2 ;
// packet flags
u16 rss_ipv4:1 ;
u16 rss_ipv4_tcp:1 ;
u16 rss_ipv6:1 ;
u16 rss_ipv6_tcp:1 ;
u16 ipv6 :1 ;
u16 ipv4_mf:1 ;
u16 ipv4_df:1 ;
u16 eth_type:1 ;
u16 vlan :1 ;
u16 err :1 ;
u16 ipv4 :1 ;
u16 udp :1 ;
u16 tcp :1 ;
u16 bcast :1 ;
u16 mcast :1 ;
u16 pause :1 ;
// error info
u16 crc :1 ;
u16 code :1 ;
u16 dribble :1 ;
u16 runt :1 ;
u16 ov :1 ;
u16 trunc :1 ;
u16 ip_xsum :1 ;
u16 l4_xsum :1 ;
u16 length :1 ;
u16 dest :1 ;
u16 res2 :6 ;
u16 hash_hi ;
u16 vtag ; // vlan tag if bit vlan == 1
} _AT_ATTRIB_PACK_ RecvRetStatus;
typedef struct _RxFlags {
// packet flags
u16 rss_ipv4:1 ;
u16 rss_ipv4_tcp:1 ;
u16 rss_ipv6:1 ;
u16 rss_ipv6_tcp:1 ;
u16 ipv6 :1 ;
u16 ipv4_mf:1 ;
u16 ipv4_df:1 ;
u16 eth_type:1 ;
u16 vlan :1 ;
u16 err :1 ;
u16 ipv4 :1 ;
u16 udp :1 ;
u16 tcp :1 ;
u16 bcast :1 ;
u16 mcast :1 ;
u16 pause :1 ;
// error info
u16 crc :1 ;
u16 code :1 ;
u16 dribble :1 ;
u16 runt :1 ;
u16 ov :1 ;
u16 trunc :1 ;
u16 ip_xsum :1 ;
u16 l4_xsum :1 ;
u16 length :1 ;
u16 dest :1 ;
u16 res2 :6 ;
} _AT_ATTRIB_PACK_ RxFlags;
typedef enum {
at_10_half = 0,
at_10_full = 1,
at_100_half = 2,
at_100_full = 3
} at_speed_duplex_type;
typedef enum {
at_dma_req_128 = 0,
at_dma_req_256 = 1,
at_dma_req_512 = 2,
at_dma_req_1024 = 3,
at_dma_req_2048 = 4,
at_dma_req_4096 = 5
}at_dma_req_block ;
typedef enum {
at_rrs_disable = 0,
at_rrs_ipv4 = 1,
at_rrs_ipv4_tcp = 2,
at_rrs_ipv6 = 4,
at_rss_ipv6_tcp = 8
} at_rrs_type;
typedef enum {
athr_l1e = 0,
athr_l2e_revA = 1,
athr_l2e_revB = 2
} at_nic_type;
/* Structure containing variables used by the shared code (at_hw.c) */
struct at_hw {
u8 *hw_addr; //
void *back; //
at_rrs_type rrs_type;
at_dma_req_block dmar_block;
at_dma_req_block dmaw_block;
u8 preamble_len;
u16 rx_jumbo_th;
u16 max_frame_size;
u16 MediaType;
u16 autoneg_advertised;
u16 pci_cmd_word;
u16 mii_autoneg_adv_reg;
u16 mii_1000t_ctrl_reg;
u32 smb_timer;
u32 base_cpu;
u32 indirect_tab;
u32 mem_rang;
u16 device_id; //
u16 vendor_id; //
u16 subsystem_id; //
u16 subsystem_vendor_id;//
u8 revision_id; //
u8 mac_addr[NODE_ADDRESS_SIZE];//
u8 perm_mac_addr[NODE_ADDRESS_SIZE];//
// boolean_t phy_preamble_sup;
boolean_t phy_configured;
boolean_t re_autoneg;
boolean_t emi_ca;
at_nic_type nic_type;
};
#endif//_ATHEROS_HW_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -