drivers/net/ethernet/intel/ixgbe/ixgbe.h
Source file repositories/reference/linux-study-clean/drivers/net/ethernet/intel/ixgbe/ixgbe.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/ethernet/intel/ixgbe/ixgbe.h- Extension
.h- Size
- 34918 bytes
- Lines
- 1144
- 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/bitops.hlinux/types.hlinux/pci.hlinux/netdevice.hlinux/cpumask.hlinux/if_vlan.hlinux/jiffies.hlinux/phy.hlinux/timecounter.hlinux/net_tstamp.hlinux/ptp_clock_kernel.hnet/devlink.hixgbe_type.hixgbe_common.hixgbe_dcb.hixgbe_e610.hixgbe_fcoe.hlinux/dca.hixgbe_ipsec.hnet/xdp.h
Detected Declarations
struct vf_statsstruct vf_data_storagestruct vf_macvlansstruct ixgbe_tx_bufferstruct ixgbe_rx_bufferstruct ixgbe_queue_statsstruct ixgbe_tx_queue_statsstruct ixgbe_rx_queue_statsstruct ixgbe_fwd_adapterstruct ixgbe_ringstruct ixgbe_ring_featurestruct ixgbe_ring_containerstruct ixgbe_q_vectorstruct hwmon_attrstruct hwmon_buffstruct ixgbe_mac_addrstruct ixgbe_adapterstruct ixgbe_netdevice_privstruct ixgbe_fdir_filterstruct ixgbe_cbenum ixgbe_tx_flagsenum ixgbevf_xcast_modesenum ixgbe_ring_state_tenum ixgbe_ring_f_enumenum ixgbe_state_tenum ixgbe_boardsfunction ixgbe_compute_padfunction ixgbe_skb_padfunction ixgbe_rx_bufszfunction ixgbe_rx_pg_orderfunction ixgbe_test_staterrfunction ixgbe_desc_unusedfunction ixgbe_determine_xdp_q_idxfunction ixgbe_max_rss_indicesfunction ixgbe_dbg_adapter_initfunction ixgbe_ptp_rx_hwtstampfunction ixgbe_init_ipsec_offloadfunction ixgbe_ipsec_vf_clearfunction ixgbe_ipsec_vf_del_safunction ixgbe_enabled_xdp_adapter
Annotated Snippet
struct vf_stats {
u64 gprc;
u64 gorc;
u64 gptc;
u64 gotc;
u64 mprc;
};
struct vf_data_storage {
struct pci_dev *vfdev;
unsigned char vf_mac_addresses[ETH_ALEN];
u16 vf_mc_hashes[IXGBE_MAX_VF_MC_ENTRIES];
u16 num_vf_mc_hashes;
bool clear_to_send;
struct vf_stats vfstats;
struct vf_stats last_vfstats;
struct vf_stats saved_rst_vfstats;
bool pf_set_mac;
u16 pf_vlan; /* When set, guest VLAN config not allowed. */
u16 pf_qos;
u16 tx_rate;
int link_enable;
int link_state;
u8 spoofchk_enabled;
bool rss_query_enabled;
u8 trusted;
int xcast_mode;
unsigned int vf_api;
u8 primary_abort_count;
};
enum ixgbevf_xcast_modes {
IXGBEVF_XCAST_MODE_NONE = 0,
IXGBEVF_XCAST_MODE_MULTI,
IXGBEVF_XCAST_MODE_ALLMULTI,
IXGBEVF_XCAST_MODE_PROMISC,
};
struct vf_macvlans {
struct list_head l;
int vf;
bool free;
bool is_macvlan;
u8 vf_macvlan[ETH_ALEN];
};
#define IXGBE_MAX_TXD_PWR 14
#define IXGBE_MAX_DATA_PER_TXD (1u << IXGBE_MAX_TXD_PWR)
/* Tx Descriptors needed, worst case */
#define TXD_USE_COUNT(S) DIV_ROUND_UP((S), IXGBE_MAX_DATA_PER_TXD)
#define DESC_NEEDED (MAX_SKB_FRAGS + 4)
/* wrapper around a pointer to a socket buffer,
* so a DMA handle can be stored along with the buffer */
struct ixgbe_tx_buffer {
union ixgbe_adv_tx_desc *next_to_watch;
unsigned long time_stamp;
union {
struct sk_buff *skb;
struct xdp_frame *xdpf;
};
unsigned int bytecount;
unsigned short gso_segs;
__be16 protocol;
DEFINE_DMA_UNMAP_ADDR(dma);
DEFINE_DMA_UNMAP_LEN(len);
u32 tx_flags;
};
struct ixgbe_rx_buffer {
union {
struct {
struct sk_buff *skb;
dma_addr_t dma;
struct page *page;
__u32 page_offset;
__u16 pagecnt_bias;
};
struct {
bool discard;
struct xdp_buff *xdp;
};
};
};
struct ixgbe_queue_stats {
u64 packets;
u64 bytes;
};
Annotation
- Immediate include surface: `linux/bitops.h`, `linux/types.h`, `linux/pci.h`, `linux/netdevice.h`, `linux/cpumask.h`, `linux/if_vlan.h`, `linux/jiffies.h`, `linux/phy.h`.
- Detected declarations: `struct vf_stats`, `struct vf_data_storage`, `struct vf_macvlans`, `struct ixgbe_tx_buffer`, `struct ixgbe_rx_buffer`, `struct ixgbe_queue_stats`, `struct ixgbe_tx_queue_stats`, `struct ixgbe_rx_queue_stats`, `struct ixgbe_fwd_adapter`, `struct ixgbe_ring`.
- 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.