drivers/net/ethernet/intel/e1000e/e1000.h
Source file repositories/reference/linux-study-clean/drivers/net/ethernet/intel/e1000e/e1000.h
File Facts
- System
- Linux kernel
- Corpus path
drivers/net/ethernet/intel/e1000e/e1000.h- Extension
.h- Size
- 18616 bytes
- Lines
- 622
- 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/timer.hlinux/workqueue.hlinux/io.hlinux/netdevice.hlinux/pci.hlinux/crc32.hlinux/if_vlan.hlinux/timecounter.hlinux/net_tstamp.hlinux/ptp_clock_kernel.hlinux/ptp_classify.hlinux/mii.hlinux/mdio.hlinux/mutex.hlinux/pm_qos.hhw.h
Detected Declarations
struct e1000_infostruct e1000_ps_pagestruct e1000_bufferstruct e1000_ringstruct e1000_phy_regsstruct e1000_adapterstruct e1000_infoenum e1000_boardsenum e1000_state_tenum latency_rangefunction e1000_phy_hw_resetfunction e1e_rphyfunction e1e_rphy_lockedfunction e1e_wphyfunction e1e_wphy_lockedfunction e1000e_read_mac_addrfunction e1000_validate_nvm_checksumfunction e1000e_update_nvm_checksumfunction e1000_read_nvmfunction e1000_write_nvmfunction e1000_get_phy_infofunction __er32
Annotated Snippet
struct e1000_ps_page {
struct page *page;
u64 dma; /* must be u64 - written to hw */
};
/* wrappers around a pointer to a socket buffer,
* so a DMA handle can be stored along with the buffer
*/
struct e1000_buffer {
dma_addr_t dma;
struct sk_buff *skb;
union {
/* Tx */
struct {
unsigned long time_stamp;
u16 length;
u16 next_to_watch;
unsigned int segs;
unsigned int bytecount;
u16 mapped_as_page;
};
/* Rx */
struct {
/* arrays of page information for packet split */
struct e1000_ps_page *ps_pages;
struct page *page;
};
};
};
struct e1000_ring {
struct e1000_adapter *adapter; /* back pointer to adapter */
void *desc; /* pointer to ring memory */
dma_addr_t dma; /* phys address of ring */
unsigned int size; /* length of ring in bytes */
unsigned int count; /* number of desc. in ring */
u16 next_to_use;
u16 next_to_clean;
void __iomem *head;
void __iomem *tail;
/* array of buffer information structs */
struct e1000_buffer *buffer_info;
char name[IFNAMSIZ + 5];
u32 ims_val;
u32 itr_val;
void __iomem *itr_register;
int set_itr;
struct sk_buff *rx_skb_top;
};
/* PHY register snapshot values */
struct e1000_phy_regs {
u16 bmcr; /* basic mode control register */
u16 bmsr; /* basic mode status register */
u16 advertise; /* auto-negotiation advertisement */
u16 lpa; /* link partner ability register */
u16 expansion; /* auto-negotiation expansion reg */
u16 ctrl1000; /* 1000BASE-T control register */
u16 stat1000; /* 1000BASE-T status register */
u16 estatus; /* extended status register */
};
/* board specific private data structure */
struct e1000_adapter {
struct timer_list watchdog_timer;
struct timer_list phy_info_timer;
struct timer_list blink_timer;
struct work_struct reset_task;
struct work_struct watchdog_task;
const struct e1000_info *ei;
unsigned long active_vlans[BITS_TO_LONGS(VLAN_N_VID)];
u32 bd_number;
u32 rx_buffer_len;
u16 mng_vlan_id;
u16 link_speed;
u16 link_duplex;
u16 eeprom_vers;
/* track device up/down/testing state */
unsigned long state;
/* Interrupt Throttle Rate */
Annotation
- Immediate include surface: `linux/bitops.h`, `linux/types.h`, `linux/timer.h`, `linux/workqueue.h`, `linux/io.h`, `linux/netdevice.h`, `linux/pci.h`, `linux/crc32.h`.
- Detected declarations: `struct e1000_info`, `struct e1000_ps_page`, `struct e1000_buffer`, `struct e1000_ring`, `struct e1000_phy_regs`, `struct e1000_adapter`, `struct e1000_info`, `enum e1000_boards`, `enum e1000_state_t`, `enum latency_range`.
- 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.