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

📄 hw.h

📁 grub源码分析文档
💻 H
📖 第 1 页 / 共 2 页
字号:
};/* Receive Descriptor */struct e1000_rx_desc {	u64 buffer_addr; /* Address of the descriptor's data buffer */	u16 length;      /* Length of data DMAed into data buffer */	u16 csum;	/* Packet checksum */	u8  status;      /* Descriptor status */	u8  errors;      /* Descriptor Errors */	u16 special;};/* Receive Descriptor - Extended */union e1000_rx_desc_extended {	struct {		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 gorc;	u64 gotc;	u64 rnbc;	u64 ruc;	u64 rfc;	u64 roc;	u64 rjc;	u64 mgprc;	u64 mgpdc;	u64 mgptc;	u64 tor;	u64 tot;	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 (*update_mc_addr_list)(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;	u32 collision_delta;	u32 ledctl_default;	u32 ledctl_mode1;	u32 ledctl_mode2;	u32 mc_filter_type;	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;	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;	enum e1000_media_type media_type;	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 autoneg_wait_to_complete;};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_fc_info {	u32 high_water;          /* Flow control high-water mark */	u32 low_water;           /* Flow control low-water mark */	u16 pause_time;          /* Flow control pause timer */	bool send_xon;           /* Flow control send XON */	bool strict_ieee;        /* Strict IEEE mode */	enum e1000_fc_type type; /* Type of flow control */	enum e1000_fc_type original_type;};struct e1000_dev_spec_82571 {	bool laa_is_present;	bool alt_mac_addr_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_fc_info   fc;	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;};static inline int __attribute__ ((format (printf, 2, 3)))hw_dbg(struct e1000_hw *hw, const char *format, ...){	return 0;}#endif

⌨️ 快捷键说明

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