drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
Source file repositories/reference/linux-study-clean/drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h- Extension
.h- Size
- 160981 bytes
- Lines
- 3881
- Domain
- Driver Families
- Bucket
- drivers/net
- Inferred role
- Driver Families: implementation source
- Status
- source implementation candidate
Why This File Exists
Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.
- Touches IRQ or DMA behavior; this matters for the representative real-device path.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/types.hlinux/mdio.hlinux/netdevice.hlinux/net/intel/libie/fwlog.hixgbe_type_e610.h
Detected Declarations
struct ixgbe_thermal_diode_datastruct ixgbe_thermal_sensor_datastruct ixgbe_nvm_versionstruct ixgbe_hic_hdrstruct ixgbe_hic_hdr2_reqstruct ixgbe_hic_hdr2_rspstruct ixgbe_hic_drv_infostruct ixgbe_hic_drv_info2struct ixgbe_hic_read_shadow_ramstruct ixgbe_hic_write_shadow_ramstruct ixgbe_hic_disable_rxenstruct ixgbe_hic_phy_token_reqstruct ixgbe_hic_internal_phy_reqstruct ixgbe_hic_internal_phy_respstruct ixgbe_hic_phy_activity_reqstruct ixgbe_hic_phy_activity_respstruct ixgbe_adv_tx_context_descstruct ixgbe_addr_filter_infostruct ixgbe_bus_infostruct ixgbe_fc_infostruct ixgbe_hw_statsstruct ixgbe_hwstruct ixgbe_eeprom_operationsstruct ixgbe_mac_operationsstruct ixgbe_phy_operationsstruct ixgbe_link_operationsstruct ixgbe_link_infostruct ixgbe_eeprom_infostruct ixgbe_mac_infostruct ixgbe_phy_infostruct ixgbe_mbx_statsstruct ixgbe_mbx_operationsstruct ixgbe_mbx_infostruct ixgbe_hwstruct ixgbe_infoenum ixgbe_fdir_pballoc_typeenum ixgbe_atr_flow_typeenum ixgbe_mvalsenum ixgbe_eeprom_typeenum ixgbe_mac_typeenum ixgbe_phy_typeenum ixgbe_sfp_typeenum ixgbe_media_typeenum ixgbe_fc_modeenum ixgbe_smart_speedenum ixgbe_bus_typeenum ixgbe_bus_speedenum ixgbe_bus_width
Annotated Snippet
struct ixgbe_thermal_diode_data {
u8 location;
u8 temp;
u8 caution_thresh;
u8 max_op_thresh;
};
struct ixgbe_thermal_sensor_data {
struct ixgbe_thermal_diode_data sensor[IXGBE_MAX_SENSORS];
};
#define NVM_OROM_OFFSET 0x17
#define NVM_OROM_BLK_LOW 0x83
#define NVM_OROM_BLK_HI 0x84
#define NVM_OROM_PATCH_MASK 0xFF
#define NVM_OROM_SHIFT 8
#define NVM_VER_MASK 0x00FF /* version mask */
#define NVM_VER_SHIFT 8 /* version bit shift */
#define NVM_OEM_PROD_VER_PTR 0x1B /* OEM Product version block pointer */
#define NVM_OEM_PROD_VER_CAP_OFF 0x1 /* OEM Product version format offset */
#define NVM_OEM_PROD_VER_OFF_L 0x2 /* OEM Product version offset low */
#define NVM_OEM_PROD_VER_OFF_H 0x3 /* OEM Product version offset high */
#define NVM_OEM_PROD_VER_CAP_MASK 0xF /* OEM Product version cap mask */
#define NVM_OEM_PROD_VER_MOD_LEN 0x3 /* OEM Product version module length */
#define NVM_ETK_OFF_LOW 0x2D /* version low order word */
#define NVM_ETK_OFF_HI 0x2E /* version high order word */
#define NVM_ETK_SHIFT 16 /* high version word shift */
#define NVM_VER_INVALID 0xFFFF
#define NVM_ETK_VALID 0x8000
#define NVM_INVALID_PTR 0xFFFF
#define NVM_VER_SIZE 32 /* version string size */
struct ixgbe_nvm_version {
u32 etk_id;
u8 nvm_major;
u16 nvm_minor;
u8 nvm_id;
bool oem_valid;
u8 oem_major;
u8 oem_minor;
u16 oem_release;
bool or_valid;
u8 or_major;
u16 or_build;
u8 or_patch;
};
/* Interrupt Registers */
#define IXGBE_EICR 0x00800
#define IXGBE_EICS 0x00808
#define IXGBE_EIMS 0x00880
#define IXGBE_EIMC 0x00888
#define IXGBE_EIAC 0x00810
#define IXGBE_EIAM 0x00890
#define IXGBE_EICS_EX(_i) (0x00A90 + (_i) * 4)
#define IXGBE_EIMS_EX(_i) (0x00AA0 + (_i) * 4)
#define IXGBE_EIMC_EX(_i) (0x00AB0 + (_i) * 4)
#define IXGBE_EIAM_EX(_i) (0x00AD0 + (_i) * 4)
/*
* 82598 EITR is 16 bits but set the limits based on the max
* supported by all ixgbe hardware. 82599 EITR is only 12 bits,
* with the lower 3 always zero.
*/
#define IXGBE_MAX_INT_RATE 488281
#define IXGBE_MIN_INT_RATE 956
#define IXGBE_MAX_EITR 0x00000FF8
#define IXGBE_MIN_EITR 8
#define IXGBE_EITR(_i) (((_i) <= 23) ? (0x00820 + ((_i) * 4)) : \
(0x012300 + (((_i) - 24) * 4)))
#define IXGBE_EITR_ITR_INT_MASK 0x00000FF8
#define IXGBE_EITR_LLI_MOD 0x00008000
#define IXGBE_EITR_CNT_WDIS 0x80000000
#define IXGBE_IVAR(_i) (0x00900 + ((_i) * 4)) /* 24 at 0x900-0x960 */
#define IXGBE_IVAR_MISC 0x00A00 /* misc MSI-X interrupt causes */
#define IXGBE_EITRSEL 0x00894
#define IXGBE_MSIXT 0x00000 /* MSI-X Table. 0x0000 - 0x01C */
#define IXGBE_MSIXPBA 0x02000 /* MSI-X Pending bit array */
#define IXGBE_PBACL(_i) (((_i) == 0) ? (0x11068) : (0x110C0 + ((_i) * 4)))
#define IXGBE_GPIE 0x00898
/* Flow Control Registers */
#define IXGBE_FCADBUL 0x03210
#define IXGBE_FCADBUH 0x03214
#define IXGBE_FCAMACL 0x04328
#define IXGBE_FCAMACH 0x0432C
#define IXGBE_FCRTH_82599(_i) (0x03260 + ((_i) * 4)) /* 8 of these (0-7) */
#define IXGBE_FCRTL_82599(_i) (0x03220 + ((_i) * 4)) /* 8 of these (0-7) */
Annotation
- Immediate include surface: `linux/types.h`, `linux/mdio.h`, `linux/netdevice.h`, `linux/net/intel/libie/fwlog.h`, `ixgbe_type_e610.h`.
- Detected declarations: `struct ixgbe_thermal_diode_data`, `struct ixgbe_thermal_sensor_data`, `struct ixgbe_nvm_version`, `struct ixgbe_hic_hdr`, `struct ixgbe_hic_hdr2_req`, `struct ixgbe_hic_hdr2_rsp`, `struct ixgbe_hic_drv_info`, `struct ixgbe_hic_drv_info2`, `struct ixgbe_hic_read_shadow_ram`, `struct ixgbe_hic_write_shadow_ram`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
- IRQ or DMA behavior appears here, which is relevant to the selected PCIe/NVMe device path.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.