The following diagram shows the network device framework in the Linux kernel.
The framework has the following layers. Figure 1. Ethernet Device Framework
Protocol Interface Layer: The layer provides unified data
send and receive interfaces. The interface dev_queue_xmit() is
used for sending data and netif_rx() is used for receiving
data.
Device Interface Layer: The layer provides the unified
structure of net_device which is used to describe network device attributes and
operation details. The structure works as a container for all functions in the
device driver layer.
Device Driver Layer: The layer realizes the functional
operation pointers of defined in the structure of net_device.
And then the operations are handed over to hardware drivers for execution.
Device Media Layer: The layer contains as the physical
elements which completes the data packet sending and receiving tasks, including the
network transmission adapter and the media used for transmission.