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

📄 e1000_hw.h

📁 linux下的网卡驱动
💻 H
📖 第 1 页 / 共 2 页
字号:
};/* 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];};#include "e1000_mac.h"#include "e1000_phy.h"#include "e1000_nvm.h"#include "e1000_manage.h"struct e1000_functions {	/* Function pointers for the MAC. */	s32       (*init_mac_params)(struct e1000_hw *);	s32       (*blink_led)(struct e1000_hw *);	s32       (*check_for_link)(struct e1000_hw *);	boolean_t (*check_mng_mode)(struct e1000_hw *hw);	s32       (*cleanup_led)(struct e1000_hw *);	void      (*clear_hw_cntrs)(struct e1000_hw *);	void      (*clear_vfta)(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);	void      (*remove_device)(struct e1000_hw *);	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 *);	s32       (*setup_led)(struct e1000_hw *);	void      (*write_vfta)(struct e1000_hw *, u32, u32);	void      (*mta_set)(struct e1000_hw *, u32);	void      (*config_collision_dist)(struct e1000_hw*);	void      (*rar_set)(struct e1000_hw*, u8*, u32);	s32       (*validate_mdi_setting)(struct e1000_hw*);	s32       (*mng_host_if_write)(struct e1000_hw*, u8*, u16, u16, u8*);	s32       (*mng_write_cmd_header)(struct e1000_hw *hw,                           struct e1000_host_mng_command_header*);	s32       (*mng_enable_host_if)(struct e1000_hw*);	s32       (*wait_autoneg)(struct e1000_hw*);	/* Function pointers for the PHY. */	s32       (*init_phy_params)(struct e1000_hw *);	s32       (*acquire_phy)(struct e1000_hw *);	s32       (*check_polarity)(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 *, boolean_t);	s32       (*set_d3_lplu_state)(struct e1000_hw *, boolean_t);	s32       (*write_phy_reg)(struct e1000_hw *, u32, u16);	/* Function pointers for the NVM. */	s32       (*init_nvm_params)(struct e1000_hw *);	s32       (*acquire_nvm)(struct e1000_hw *);	s32       (*read_nvm)(struct e1000_hw *, u16, u16, u16 *);	void      (*release_nvm)(struct e1000_hw *);	void      (*reload_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 {	u8 addr[6];	u8 perm_addr[6];	e1000_mac_type type;	e1000_fc_mode  fc;	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;	boolean_t adaptive_ifs;	boolean_t arc_subsystem_valid;	boolean_t asf_firmware_present;	boolean_t autoneg;	boolean_t autoneg_failed;	boolean_t disable_av;	boolean_t disable_hw_init_bits;	boolean_t fc_send_xon;	boolean_t fc_strict_ieee;	boolean_t get_link_status;	boolean_t ifs_params_forced;	boolean_t in_ifs_mode;	boolean_t report_tx_early;	boolean_t serdes_has_link;	boolean_t tx_pkt_filtering;};struct e1000_phy_info {	e1000_phy_type type;	e1000_1000t_rx_status local_rx;	e1000_1000t_rx_status remote_rx;	e1000_ms_type ms_type;	e1000_ms_type original_ms_type;	e1000_rev_polarity cable_polarity;	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;	boolean_t disable_polarity_correction;	boolean_t is_mdix;	boolean_t polarity_correction;	boolean_t reset_disable;	boolean_t speed_downgraded;	boolean_t wait_for_link;};struct e1000_nvm_info {	e1000_nvm_type type;	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 {	e1000_bus_type type;	e1000_bus_speed speed;	e1000_bus_width width;	u32 snoop;	u16 func;	u16 pci_cmd_word;};struct e1000_hw {	void *back;	void *dev_spec;	u8 *hw_addr;	u8 *flash_address;	unsigned long io_base;	struct e1000_functions func;	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;	e1000_media_type media_type;	u32 dev_spec_size;	u16 device_id;	u16 subsystem_vendor_id;	u16 subsystem_device_id;	u16 vendor_id;	u8  revision_id;};/* These functions must be implemented by drivers */void e1000_pci_clear_mwi(struct e1000_hw *hw);void e1000_pci_set_mwi(struct e1000_hw *hw);s32  e1000_alloc_zeroed_dev_spec_struct(struct e1000_hw *hw, u32 size);s32  e1000_read_pcie_cap_reg(struct e1000_hw *hw, u32 reg, u16 *value);void e1000_free_dev_spec_struct(struct e1000_hw *hw);void e1000_read_pci_cfg(struct e1000_hw *hw, u32 reg, u16 *value);void e1000_write_pci_cfg(struct e1000_hw *hw, u32 reg, u16 *value);#endif

⌨️ 快捷键说明

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