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 structure

  • How net_device structures are organized into hash tables and lists to allow different kinds of lookups

  • How net_device instances are initialized, partly by kernel core routines and partly by their device drivers

  • How 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.