Chapter 5. Network Device Initialization

The flexibility of modern operating systems introduces complexity into initialization . First, a device driver can be loaded as either a module or a static component of the kernel. Furthermore, devices can be present at boot time or inserted (and removed) at runtime: the latter type of device, called a hot-pluggable device, includes USB, PCI CardBus, IEEE 1394 (also called FireWire by Apple), and others. We’ll see how hot-plugging affects what happens in both the kernel and the user space.

In this first chapter, we will cover:

  • A piece of the core networking code initialization.

  • The initialization of an NIC.

  • How an NIC uses interrupts, and how IRQ handlers can be allocated and released. We will also look at how drivers can share IRQs.

  • How the user can provide configuration parameters to device drivers loaded as modules.

  • Interaction between user space and kernel during device initialization and configuration. We will look at how the kernel can run a user-space helper to either load the correct device driver for an NIC or apply a user-space configuration. In particular, we will look at the Hotplug feature.

  • How virtual devices differ from real ones with regard to configuration and interaction with the kernel.

System Initialization Overview

It’s important to know where and how the main network-related subsystems are initialized, including device drivers. However, because this book is concerned only with the networking aspect of such initializations, I ...

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.