Network devices transfer data in packets (variable-sized frames) and must handle addressing (MAC), protocol headers, and often checksum offloading. Standard block/character drivers don’t fit.
A network driver manages network interface cards (NICs), handling packet send/receive, DMA for packet buffers, and often hardware acceleration (checksum, TSO).
- OS passes packet (with headers) to driver for transmission
- Driver sets up DMA descriptor for packet buffer
- NIC DMAs packet from memory, adds PHY header, transmits
- On receive, NIC DMAs packet to memory, raises interrupt
- Driver passes packet up to network stack
- Packet-based (variable size, unlike fixed blocks)
- Often uses DMA rings (multiple packet buffers queued)
- Hardware acceleration: checksum offload, TSO, RSS
- Examples: Ethernet driver, Wi-Fi driver, InfiniBand driver
- Built from: Device Driver, O Devices
- Builds into: System Bus (connects to network)
- Related: DMA, Interrupt Handler
- Contrasts with: Block Driver (packets vs blocks)
- Packet drop under high load (driver must handle ring exhaustion)
- DMA mapping must handle scattered packet buffers (SG DMA)
- Some NICs have buggy offload features — may need disabling