drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
Source file repositories/reference/linux-study-clean/drivers/net/ethernet/intel/ixgbevf/ixgbevf.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/ethernet/intel/ixgbevf/ixgbevf.h- Extension
.h- Size
- 14295 bytes
- Lines
- 490
- 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/bitops.hlinux/timer.hlinux/io.hlinux/netdevice.hlinux/if_vlan.hlinux/u64_stats_sync.hnet/xdp.hvf.hipsec.h
Detected Declarations
struct ixgbevf_tx_bufferstruct ixgbevf_rx_bufferstruct ixgbevf_statsstruct ixgbevf_tx_queue_statsstruct ixgbevf_rx_queue_statsstruct ixgbevf_ringstruct ixgbevf_ring_containerstruct ixgbevf_q_vectorstruct ixgbevf_adapterenum ixgbevf_ring_state_tenum ixbgevf_state_tenum ixgbevf_boardsenum ixgbevf_xcast_modesfunction ixgbevf_rx_bufszfunction ixgbevf_rx_pg_orderfunction ixgbevf_test_staterrfunction ixgbevf_desc_unusedfunction ixgbevf_write_tailfunction ixgbevf_init_ipsec_offload
Annotated Snippet
struct ixgbevf_tx_buffer {
union ixgbe_adv_tx_desc *next_to_watch;
unsigned long time_stamp;
union {
struct sk_buff *skb;
/* XDP uses address ptr on irq_clean */
void *data;
};
unsigned int bytecount;
unsigned short gso_segs;
__be16 protocol;
DEFINE_DMA_UNMAP_ADDR(dma);
DEFINE_DMA_UNMAP_LEN(len);
u32 tx_flags;
};
struct ixgbevf_rx_buffer {
dma_addr_t dma;
struct page *page;
#if (BITS_PER_LONG > 32) || (PAGE_SIZE >= 65536)
__u32 page_offset;
#else
__u16 page_offset;
#endif
__u16 pagecnt_bias;
};
struct ixgbevf_stats {
u64 packets;
u64 bytes;
};
struct ixgbevf_tx_queue_stats {
u64 restart_queue;
u64 tx_busy;
u64 tx_done_old;
};
struct ixgbevf_rx_queue_stats {
u64 alloc_rx_page_failed;
u64 alloc_rx_buff_failed;
u64 alloc_rx_page;
u64 csum_err;
};
enum ixgbevf_ring_state_t {
__IXGBEVF_RX_3K_BUFFER,
__IXGBEVF_RX_BUILD_SKB_ENABLED,
__IXGBEVF_TX_DETECT_HANG,
__IXGBEVF_HANG_CHECK_ARMED,
__IXGBEVF_TX_XDP_RING,
__IXGBEVF_TX_XDP_RING_PRIMED,
};
#define ring_is_xdp(ring) \
test_bit(__IXGBEVF_TX_XDP_RING, &(ring)->state)
#define set_ring_xdp(ring) \
set_bit(__IXGBEVF_TX_XDP_RING, &(ring)->state)
#define clear_ring_xdp(ring) \
clear_bit(__IXGBEVF_TX_XDP_RING, &(ring)->state)
struct ixgbevf_ring {
struct ixgbevf_ring *next;
struct ixgbevf_q_vector *q_vector; /* backpointer to q_vector */
struct net_device *netdev;
struct bpf_prog *xdp_prog;
struct device *dev;
void *desc; /* descriptor ring memory */
dma_addr_t dma; /* phys. address of descriptor ring */
unsigned int size; /* length in bytes */
u16 count; /* amount of descriptors */
u16 next_to_use;
u16 next_to_clean;
u16 next_to_alloc;
union {
struct ixgbevf_tx_buffer *tx_buffer_info;
struct ixgbevf_rx_buffer *rx_buffer_info;
};
unsigned long state;
struct ixgbevf_stats stats;
struct u64_stats_sync syncp;
union {
struct ixgbevf_tx_queue_stats tx_stats;
struct ixgbevf_rx_queue_stats rx_stats;
};
struct xdp_rxq_info xdp_rxq;
u64 hw_csum_rx_error;
u8 __iomem *tail;
struct sk_buff *skb;
Annotation
- Immediate include surface: `linux/types.h`, `linux/bitops.h`, `linux/timer.h`, `linux/io.h`, `linux/netdevice.h`, `linux/if_vlan.h`, `linux/u64_stats_sync.h`, `net/xdp.h`.
- Detected declarations: `struct ixgbevf_tx_buffer`, `struct ixgbevf_rx_buffer`, `struct ixgbevf_stats`, `struct ixgbevf_tx_queue_stats`, `struct ixgbevf_rx_queue_stats`, `struct ixgbevf_ring`, `struct ixgbevf_ring_container`, `struct ixgbevf_q_vector`, `struct ixgbevf_adapter`, `enum ixgbevf_ring_state_t`.
- 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.