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.

Table 1.1 Features availability in networking drivers
Feature a f p a c k e t 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 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 m l x 4 m l x 5 m p i p e 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 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              
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  
Link status event   Y Y       Y   Y         Y Y     Y   Y Y     Y Y   Y     Y Y   Y   Y Y     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    
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  
MTU update           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  
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      
LRO                                       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  
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  
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  
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  
Multicast MAC filter   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  
RSS key update               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          
VMDq                   Y Y     Y Y     Y   Y Y                                      
SR-IOV     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  
Ethertype filter                           Y Y     Y   Y Y                                      
N-tuple filter                                   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                              
Flow control           Y Y             Y Y     Y   Y Y           Y     Y Y   Y              
Flow API                           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          
VLAN offload           Y Y Y Y Y Y Y Y Y   Y   Y Y Y   Y     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          
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  
MACsec offload                                       Y                                        
Inner L3 checksum               Y           Y   Y       Y   Y   Y           Y                    
Inner L4 checksum               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  
Timesync                           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  
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      
Stats per queue           Y       Y Y Y Y             Y Y     Y Y   Y     Y Y     Y Y   Y Y Y  
FW version                           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      
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  
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  
Other kdrv                                               Y Y                 Y            
ARMv7                                                         Y               Y Y    
ARMv8                           Y Y   Y     Y Y Y Y           Y           Y   Y Y    
Power8                                               Y Y       Y                      
TILE-Gx                                                         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  
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  
Usage doc   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.