What is a Network Device Driver?

Describes the main tasks of a network device driver that includes initialization, transmit, receive and statistics collection

  • It is a piece of software that actually programs the NIC (Network Interface Card) hardware to send and receive data through a network interface.
  • It acts as the interface between applications (that need to send and receive data) and the NIC  (that actually transmits and receives data via. a wired or wireless interface)
  • It primarily consists of Four parts, namely

  a) Init – used to initialize the NIC with configurable settings like transmit buffer size, receive buffer size, pointers to sender/receiver buffers in main memory etc.

  b) Transmit – consists of code used to send data out of the network interface

  c) Receive – consists of code used to receive data via. a network interface

d) Statistics Collection – consists of routines to collect statistics from the NIC like count of transmitted/received frames, count of errored frames etc.

  • It exposes external APIs to the application for initialization, send and receive functionality
  • It is usually packaged as part of the OS (Operating System)
  • There is a separate piece of device driver code for each unique type of NIC (For e.g. one for 100 Mbps wired interface, one for 802.11a wireless interface etc.)
  • The same piece of device driver code is used for multiple instances of the same NIC type within a box.