@@ -218,6 +218,33 @@ _List uses/environments covered by other legislation or standards (critical, ind
_Explain the overall architecture and relationship among the parts of the products. Use diagrams if that is helpful._
A physical network interface consists of:
* A communications bus to the host
* A hardware transmission adapter
* Hardware and firmware to process incoming signals and host commands
It also includes the following parts if they are sold with the interface:
* Device driver
* Removable/changable antenna
* Daughter boards/add-on hardware modules
A physical network interface connects via its communications bus to the host. The host transmits and receives data to the network by means of the I/O interface provided by the network interface.
A device driver is the host software that takes host-provided network data in host memory and issues the appropriate I/O requests to the network interface to transmit that data over the network. It also reads received network data via the I/O interface and and transfers it to host memory. Network interfaces often have many configuraton options for how the host and network interface interact.
The device driver usually must be able to read and write to/from:
* at least some parts of host memory
* address space mapped to the network interface's control registers
* the host interrupt controller
This usually requires that the device driver have a high degree of host access (usually kernel level).
The device driver communicates with the rest of the host software by means of a network device driver interface that abstracts the details of using the underlying network interface. This network device driver interface is typically defined by the host operating system and used by its network stack to send or receive data through any device driver that supports this interface.
A virtual interface emulates the device driver interface of a network interface to the host operating system. Instead of a physical network interface, it may send and receive packets to a hypervisor, a container, another device driver, another part of the network stack, or an application.