hw.h

来自「linux 内核源代码」· C头文件 代码 · 共 865 行 · 第 1/2 页

H
865
字号
		u64 buffer_addr;		u64 reserved;	} read;	struct {		struct {			u32 mrq;	      /* Multiple Rx Queues */			union {				u32 rss;	    /* RSS Hash */				struct {					u16 ip_id;  /* IP id */					u16 csum;   /* Packet Checksum */				} csum_ip;			} hi_dword;		} lower;		struct {			u32 status_error;     /* ext status/error */			u16 length;			u16 vlan;	     /* VLAN tag */		} upper;	} wb;  /* writeback */};#define MAX_PS_BUFFERS 4/* Receive Descriptor - Packet Split */union e1000_rx_desc_packet_split {	struct {		/* one buffer for protocol header(s), three data buffers */		u64 buffer_addr[MAX_PS_BUFFERS];	} read;	struct {		struct {			u32 mrq;	      /* Multiple Rx Queues */			union {				u32 rss;	      /* RSS Hash */				struct {					u16 ip_id;    /* IP id */					u16 csum;     /* Packet Checksum */				} csum_ip;			} hi_dword;		} lower;		struct {			u32 status_error;     /* ext status/error */			u16 length0;	  /* length of buffer 0 */			u16 vlan;	     /* VLAN tag */		} middle;		struct {			u16 header_status;			u16 length[3];	/* length of buffers 1-3 */		} upper;		u64 reserved;	} wb; /* writeback */};/* Transmit Descriptor */struct e1000_tx_desc {	u64 buffer_addr;      /* Address of the descriptor's data buffer */	union {		u32 data;		struct {			u16 length;    /* Data buffer length */			u8 cso;	/* Checksum offset */			u8 cmd;	/* Descriptor control */		} flags;	} lower;	union {		u32 data;		struct {			u8 status;     /* Descriptor status */			u8 css;	/* Checksum start */			u16 special;		} fields;	} upper;};/* Offload Context Descriptor */struct e1000_context_desc {	union {		u32 ip_config;		struct {			u8 ipcss;      /* IP checksum start */			u8 ipcso;      /* IP checksum offset */			u16 ipcse;     /* IP checksum end */		} ip_fields;	} lower_setup;	union {		u32 tcp_config;		struct {			u8 tucss;      /* TCP checksum start */			u8 tucso;      /* TCP checksum offset */			u16 tucse;     /* TCP checksum end */		} tcp_fields;	} upper_setup;	u32 cmd_and_length;	union {		u32 data;		struct {			u8 status;     /* Descriptor status */			u8 hdr_len;    /* Header length */			u16 mss;       /* Maximum segment size */		} fields;	} tcp_seg_setup;};/* Offload data descriptor */struct e1000_data_desc {	u64 buffer_addr;   /* Address of the descriptor's buffer address */	union {		u32 data;		struct {			u16 length;    /* Data buffer length */			u8 typ_len_ext;			u8 cmd;		} flags;	} lower;	union {		u32 data;		struct {			u8 status;     /* Descriptor status */			u8 popts;      /* Packet Options */			u16 special;   /* */		} fields;	} upper;};/* Statistics counters collected by the MAC */struct e1000_hw_stats {	u64 crcerrs;	u64 algnerrc;	u64 symerrs;	u64 rxerrc;	u64 mpc;	u64 scc;	u64 ecol;	u64 mcc;	u64 latecol;	u64 colc;	u64 dc;	u64 tncrs;	u64 sec;	u64 cexterr;	u64 rlec;	u64 xonrxc;	u64 xontxc;	u64 xoffrxc;	u64 xofftxc;	u64 fcruc;	u64 prc64;	u64 prc127;	u64 prc255;	u64 prc511;	u64 prc1023;	u64 prc1522;	u64 gprc;	u64 bprc;	u64 mprc;	u64 gptc;	u64 gorcl;	u64 gorch;	u64 gotcl;	u64 gotch;	u64 rnbc;	u64 ruc;	u64 rfc;	u64 roc;	u64 rjc;	u64 mgprc;	u64 mgpdc;	u64 mgptc;	u64 torl;	u64 torh;	u64 totl;	u64 toth;	u64 tpr;	u64 tpt;	u64 ptc64;	u64 ptc127;	u64 ptc255;	u64 ptc511;	u64 ptc1023;	u64 ptc1522;	u64 mptc;	u64 bptc;	u64 tsctc;	u64 tsctfc;	u64 iac;	u64 icrxptc;	u64 icrxatc;	u64 ictxptc;	u64 ictxatc;	u64 ictxqec;	u64 ictxqmtc;	u64 icrxdmtc;	u64 icrxoc;};struct e1000_phy_stats {	u32 idle_errors;	u32 receive_errors;};struct e1000_host_mng_dhcp_cookie {	u32 signature;	u8  status;	u8  reserved0;	u16 vlan_id;	u32 reserved1;	u16 reserved2;	u8  reserved3;	u8  checksum;};/* Host Interface "Rev 1" */struct e1000_host_command_header {	u8 command_id;	u8 command_length;	u8 command_options;	u8 checksum;};#define E1000_HI_MAX_DATA_LENGTH     252struct e1000_host_command_info {	struct e1000_host_command_header command_header;	u8 command_data[E1000_HI_MAX_DATA_LENGTH];};/* Host Interface "Rev 2" */struct e1000_host_mng_command_header {	u8  command_id;	u8  checksum;	u16 reserved1;	u16 reserved2;	u16 command_length;};#define E1000_HI_MAX_MNG_DATA_LENGTH 0x6F8struct e1000_host_mng_command_info {	struct e1000_host_mng_command_header command_header;	u8 command_data[E1000_HI_MAX_MNG_DATA_LENGTH];};/* Function pointers and static data for the MAC. */struct e1000_mac_operations {	u32			mng_mode_enab;	s32  (*check_for_link)(struct e1000_hw *);	s32  (*cleanup_led)(struct e1000_hw *);	void (*clear_hw_cntrs)(struct e1000_hw *);	s32  (*get_bus_info)(struct e1000_hw *);	s32  (*get_link_up_info)(struct e1000_hw *, u16 *, u16 *);	s32  (*led_on)(struct e1000_hw *);	s32  (*led_off)(struct e1000_hw *);	void (*mc_addr_list_update)(struct e1000_hw *, u8 *, u32, u32,					 u32);	s32  (*reset_hw)(struct e1000_hw *);	s32  (*init_hw)(struct e1000_hw *);	s32  (*setup_link)(struct e1000_hw *);	s32  (*setup_physical_interface)(struct e1000_hw *);};/* Function pointers for the PHY. */struct e1000_phy_operations {	s32  (*acquire_phy)(struct e1000_hw *);	s32  (*check_reset_block)(struct e1000_hw *);	s32  (*commit_phy)(struct e1000_hw *);	s32  (*force_speed_duplex)(struct e1000_hw *);	s32  (*get_cfg_done)(struct e1000_hw *hw);	s32  (*get_cable_length)(struct e1000_hw *);	s32  (*get_phy_info)(struct e1000_hw *);	s32  (*read_phy_reg)(struct e1000_hw *, u32, u16 *);	void (*release_phy)(struct e1000_hw *);	s32  (*reset_phy)(struct e1000_hw *);	s32  (*set_d0_lplu_state)(struct e1000_hw *, bool);	s32  (*set_d3_lplu_state)(struct e1000_hw *, bool);	s32  (*write_phy_reg)(struct e1000_hw *, u32, u16);};/* Function pointers for the NVM. */struct e1000_nvm_operations {	s32  (*acquire_nvm)(struct e1000_hw *);	s32  (*read_nvm)(struct e1000_hw *, u16, u16, u16 *);	void (*release_nvm)(struct e1000_hw *);	s32  (*update_nvm)(struct e1000_hw *);	s32  (*valid_led_default)(struct e1000_hw *, u16 *);	s32  (*validate_nvm)(struct e1000_hw *);	s32  (*write_nvm)(struct e1000_hw *, u16, u16, u16 *);};struct e1000_mac_info {	struct e1000_mac_operations ops;	u8 addr[6];	u8 perm_addr[6];	enum e1000_mac_type type;	enum e1000_fc_mode  fc;	enum e1000_fc_mode  original_fc;	u32 collision_delta;	u32 ledctl_default;	u32 ledctl_mode1;	u32 ledctl_mode2;	u32 max_frame_size;	u32 mc_filter_type;	u32 min_frame_size;	u32 tx_packet_delta;	u32 txcw;	u16 current_ifs_val;	u16 ifs_max_val;	u16 ifs_min_val;	u16 ifs_ratio;	u16 ifs_step_size;	u16 mta_reg_count;	u16 rar_entry_count;	u16 fc_high_water;	u16 fc_low_water;	u16 fc_pause_time;	u8  forced_speed_duplex;	bool arc_subsystem_valid;	bool autoneg;	bool autoneg_failed;	bool get_link_status;	bool in_ifs_mode;	bool serdes_has_link;	bool tx_pkt_filtering;};struct e1000_phy_info {	struct e1000_phy_operations ops;	enum e1000_phy_type type;	enum e1000_1000t_rx_status local_rx;	enum e1000_1000t_rx_status remote_rx;	enum e1000_ms_type ms_type;	enum e1000_ms_type original_ms_type;	enum e1000_rev_polarity cable_polarity;	enum e1000_smart_speed smart_speed;	u32 addr;	u32 id;	u32 reset_delay_us; /* in usec */	u32 revision;	u16 autoneg_advertised;	u16 autoneg_mask;	u16 cable_length;	u16 max_cable_length;	u16 min_cable_length;	u8 mdix;	bool disable_polarity_correction;	bool is_mdix;	bool polarity_correction;	bool speed_downgraded;	bool wait_for_link;};struct e1000_nvm_info {	struct e1000_nvm_operations ops;	enum e1000_nvm_type type;	enum e1000_nvm_override override;	u32 flash_bank_size;	u32 flash_base_addr;	u16 word_size;	u16 delay_usec;	u16 address_bits;	u16 opcode_bits;	u16 page_size;};struct e1000_bus_info {	enum e1000_bus_width width;	u16 func;};struct e1000_dev_spec_82571 {	bool laa_is_present;};struct e1000_shadow_ram {	u16  value;	bool modified;};#define E1000_ICH8_SHADOW_RAM_WORDS		2048struct e1000_dev_spec_ich8lan {	bool kmrn_lock_loss_workaround_enabled;	struct e1000_shadow_ram shadow_ram[E1000_ICH8_SHADOW_RAM_WORDS];};struct e1000_hw {	struct e1000_adapter *adapter;	u8 __iomem *hw_addr;	u8 __iomem *flash_address;	struct e1000_mac_info  mac;	struct e1000_phy_info  phy;	struct e1000_nvm_info  nvm;	struct e1000_bus_info  bus;	struct e1000_host_mng_dhcp_cookie mng_cookie;	union {		struct e1000_dev_spec_82571	e82571;		struct e1000_dev_spec_ich8lan	ich8lan;	} dev_spec;	enum e1000_media_type media_type;};#ifdef DEBUG#define hw_dbg(hw, format, arg...) \	printk(KERN_DEBUG "%s: " format, e1000e_get_hw_dev_name(hw), ##arg)#elsestatic inline int __attribute__ ((format (printf, 2, 3)))hw_dbg(struct e1000_hw *hw, const char *format, ...){	return 0;}#endif#endif

⌨️ 快捷键说明

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