Chapter 8. Device Registration and Initialization
In Chapters 5 and 6, we saw how NICs are recognized by the kernel, and the initialization that the kernel performs so that the NICs can talk to their device drivers. In this chapter, we will discuss additional stages of initialization:
When and how network devices register with the kernel
How a network device registers with the network device database and gets assigned an instance of a
net_devicestructureHow
net_devicestructures are organized into hash tables and lists to allow different kinds of lookupsHow
net_deviceinstances are initialized, partly by kernel core routines and partly by their device driversHow virtual devices differ from real ones with regard to registration
This chapter does not strive to be a guide on how to write NIC device drivers. I sometimes go into detail on an NIC device driver's code, but I will not cover the entire design of an NIC device driver. We are interested here only in registration and in the interface between device drivers and features such as link state change detection and power management. Refer to Linux Device Drivers (O'Reilly) for a detailed discussion of device drivers.
Before an NIC can be used, its associated net_device
data structure must be initialized, added to the kernel network device database, configured,
and enabled. It is important not to confuse registration and unregistration with enabling
and disabling. They are two different concepts:
Registration and unregistration, if we ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access