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_device
structureHow
net_device
structures are organized into hash tables and lists to allow different kinds of lookupsHow
net_device
instances 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 ...
Get Understanding Linux Network Internals now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.