1. Overview of Networking Drivers
The networking drivers may be classified in two categories:
- physical for real devices
- virtual for emulated devices
Some physical devices may be shaped through a virtual layer as for SR-IOV. The interface seen in the virtual environment is a VF (Virtual Function).
The ethdev layer exposes an API to use the networking functions of these devices. The bottom half part of ethdev is implemented by the drivers. Thus some features may not be implemented.
There are more differences between drivers regarding some internal properties, portability or even documentation availability. Most of these differences are summarized below.
Feature | a f p a c k e t | a r k | a v p | b n x 2 x | b n x 2 x v f | b n x t | b o n d i n g | c x g b e | d p a a 2 | e 1 0 0 0 | e n a | e n i c | f m 1 0 k | f m 1 0 k . . v e c | f m 1 0 k v f | f m 1 0 k v f v e c | i 4 0 e | i 4 0 e . . . v e c | i 4 0 e v f | i 4 0 e v f . v e c | i g b | i g b v f | i x g b e | i x g b e . . v e c | i x g b e v f | i x g b e v f v e c | k n i | l i q u i d i o | m l x 4 | m l x 5 | n f p | n u l l | p c a p | q e d e | q e d e v f | r i n g | s f c _ e f x | s z e d a t a 2 | t a p | t h u n d e r x | v h o s t | v i r t i o | v i r t i o . v e c | v m x n e t 3 | x e n v i r t |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Speed capabilities | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||||||||
Link status | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||
Link status event | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||
Removal event | Y | ||||||||||||||||||||||||||||||||||||||||||||
Queue status event | Y | ||||||||||||||||||||||||||||||||||||||||||||
Rx interrupt | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||
Free Tx mbuf on demand | Y | Y | |||||||||||||||||||||||||||||||||||||||||||
Queue start/stop | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||
MTU update | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||
Jumbo frame | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||
Scattered Rx | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||
LRO | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||
TSO | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||
Promiscuous mode | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||
Allmulticast mode | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||
Unicast MAC filter | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||
Multicast MAC filter | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||||
RSS hash | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||
RSS key update | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||
RSS reta update | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||
VMDq | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||
SR-IOV | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||||||||
DCB | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||||
VLAN filter | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||
Ethertype filter | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||||
N-tuple filter | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||||||||||
SYN filter | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||||||
Tunnel filter | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||||
Flexible filter | Y | ||||||||||||||||||||||||||||||||||||||||||||
Hash filter | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||||||||||
Flow director | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||
Flow control | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||
Flow API | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||||
Rate limitation | Y | Y | |||||||||||||||||||||||||||||||||||||||||||
Traffic mirroring | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||||||||||
CRC offload | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||
VLAN offload | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | P | Y | Y | Y | Y | P | P | Y | ||||||||||||||||||||||
QinQ offload | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||
L3 checksum offload | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||
L4 checksum offload | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||
MACsec offload | Y | ||||||||||||||||||||||||||||||||||||||||||||
Inner L3 checksum | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||
Inner L4 checksum | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||
Packet type parsing | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||
Timesync | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||||||||||
Rx descriptor status | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||
Tx descriptor status | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||
Basic stats | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||
Extended stats | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||
Stats per queue | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||
FW version | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||||||||||
EEPROM dump | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||||||||||
Registers dump | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||||||
Multiprocess aware | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||
BSD nic_uio | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||
Linux UIO | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||
Linux VFIO | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||
Other kdrv | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||||||||||
ARMv7 | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||||||||||
ARMv8 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||||||||
Power8 | Y | Y | Y | Y | Y | Y | |||||||||||||||||||||||||||||||||||||||
x86-32 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | |||||||||||||||||||
x86-64 | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||
Usage doc | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | ||||||||||||||||||||||||||
Design doc | |||||||||||||||||||||||||||||||||||||||||||||
Perf doc |
Note
Features marked with “P” are partially supported. Refer to the appropriate NIC guide in the following sections for details.