drivers/net/vmxnet3/vmxnet3_int.h
Source file repositories/reference/linux-study-clean/drivers/net/vmxnet3/vmxnet3_int.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/vmxnet3/vmxnet3_int.h- Extension
.h- Size
- 16474 bytes
- Lines
- 566
- 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/ethtool.hlinux/delay.hlinux/netdevice.hlinux/pci.hlinux/compiler.hlinux/slab.hlinux/spinlock.hlinux/ioport.hlinux/highmem.hlinux/timer.hlinux/skbuff.hlinux/interrupt.hlinux/workqueue.hlinux/uaccess.hasm/dma.hasm/page.hlinux/tcp.hlinux/udp.hlinux/ip.hlinux/ipv6.hlinux/in.hlinux/etherdevice.hasm/checksum.hlinux/if_vlan.hlinux/if_arp.hlinux/inetdevice.hlinux/log2.hlinux/bpf.hnet/page_pool/helpers.hnet/xdp.hvmxnet3_defs.h
Detected Declarations
struct vmxnet3_cmd_ringstruct vmxnet3_comp_ringstruct vmxnet3_tx_data_ringstruct vmxnet3_tx_ts_ringstruct vmxnet3_tx_buf_infostruct vmxnet3_tq_driver_statsstruct vmxnet3_tx_ctxstruct vmxnet3_tx_queuestruct vmxnet3_rx_buf_infostruct vmxnet3_rx_ctxstruct vmxnet3_rq_driver_statsstruct vmxnet3_rx_data_ringstruct vmxnet3_rx_ts_ringstruct vmxnet3_rx_queuestruct vmxnet3_intrstruct vmxnet3_adapterenum vmxnet3_rx_buf_typefunction vmxnet3_cmd_ring_adv_next2fillfunction vmxnet3_cmd_ring_adv_next2compfunction vmxnet3_cmd_ring_desc_availfunction vmxnet3_comp_ring_adv_next2proc
Annotated Snippet
struct vmxnet3_cmd_ring {
union Vmxnet3_GenericDesc *base;
u32 size;
u32 next2fill;
u32 next2comp;
u8 gen;
u8 isOutOfOrder;
dma_addr_t basePA;
};
static inline void
vmxnet3_cmd_ring_adv_next2fill(struct vmxnet3_cmd_ring *ring)
{
ring->next2fill++;
if (unlikely(ring->next2fill == ring->size)) {
ring->next2fill = 0;
VMXNET3_FLIP_RING_GEN(ring->gen);
}
}
static inline void
vmxnet3_cmd_ring_adv_next2comp(struct vmxnet3_cmd_ring *ring)
{
VMXNET3_INC_RING_IDX_ONLY(ring->next2comp, ring->size);
}
static inline int
vmxnet3_cmd_ring_desc_avail(struct vmxnet3_cmd_ring *ring)
{
return (ring->next2comp > ring->next2fill ? 0 : ring->size) +
ring->next2comp - ring->next2fill - 1;
}
struct vmxnet3_comp_ring {
union Vmxnet3_GenericDesc *base;
u32 size;
u32 next2proc;
u8 gen;
u8 intr_idx;
dma_addr_t basePA;
};
static inline void
vmxnet3_comp_ring_adv_next2proc(struct vmxnet3_comp_ring *ring)
{
ring->next2proc++;
if (unlikely(ring->next2proc == ring->size)) {
ring->next2proc = 0;
VMXNET3_FLIP_RING_GEN(ring->gen);
}
}
struct vmxnet3_tx_data_ring {
struct Vmxnet3_TxDataDesc *base;
u32 size;
dma_addr_t basePA;
};
struct vmxnet3_tx_ts_ring {
struct Vmxnet3_TxTSDesc *base;
dma_addr_t basePA;
};
#define VMXNET3_MAP_NONE 0
#define VMXNET3_MAP_SINGLE BIT(0)
#define VMXNET3_MAP_PAGE BIT(1)
#define VMXNET3_MAP_XDP BIT(2)
struct vmxnet3_tx_buf_info {
u32 map_type;
u16 len;
u16 sop_idx;
dma_addr_t dma_addr;
union {
struct sk_buff *skb;
struct xdp_frame *xdpf;
};
};
struct vmxnet3_tq_driver_stats {
u64 drop_total; /* # of pkts dropped by the driver, the
* counters below track droppings due to
* different reasons
*/
u64 drop_too_many_frags;
u64 drop_oversized_hdr;
u64 drop_hdr_inspect_err;
u64 drop_tso;
u64 tx_ring_full;
Annotation
- Immediate include surface: `linux/bitops.h`, `linux/ethtool.h`, `linux/delay.h`, `linux/netdevice.h`, `linux/pci.h`, `linux/compiler.h`, `linux/slab.h`, `linux/spinlock.h`.
- Detected declarations: `struct vmxnet3_cmd_ring`, `struct vmxnet3_comp_ring`, `struct vmxnet3_tx_data_ring`, `struct vmxnet3_tx_ts_ring`, `struct vmxnet3_tx_buf_info`, `struct vmxnet3_tq_driver_stats`, `struct vmxnet3_tx_ctx`, `struct vmxnet3_tx_queue`, `struct vmxnet3_rx_buf_info`, `struct vmxnet3_rx_ctx`.
- 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.