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.

More details about features can be found in Features Overview.

Table 1.1 Features availability in networking drivers
Feature a f _ x d p a f p a c k e t a r k a t l a n t i c a v p a x g b e b n x 2 x b n x t c x g b e c x g b e v f d p a a d p a a 2 e 1 0 0 0 e n a e n e t c e n i c f a i l s a f e f m 1 0 k f m 1 0 k v f h i n i c h n s 3 h n s 3 v f i 4 0 e i 4 0 e v f i a v f i c e i c e _ d c f i g b i g b v f i g c i o n i c i p n 3 k e i x g b e i x g b e v f l i q u i d i o m e m i f m l x 4 m l x 5 m v n e t a m v p p 2 n e t v s c n f b n f p o c t e o n t x o c t e o n t x 2 o c t e o n t x 2 . v e c o c t e o n t x 2 v f o c t e o n t x _ e p p c a p p f e q e d e q e d e v f s f c s z e d a t a 2 t a p t h u n d e r x t x g b e t x g b e v f v h o s t v i r t i o v m x n e t 3
Speed capabilities     Y Y   Y P Y Y Y Y Y P     Y   P P Y Y   Y   Y Y   P   Y Y Y Y   Y   P Y Y Y P P Y Y Y Y Y P     Y Y Y P P Y Y     P P
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 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 Y Y   Y   Y Y         Y Y Y Y Y           Y   Y Y Y     Y Y
Removal event                                                                         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     Y Y         Y   Y   Y           Y   Y   Y Y   Y  
Lock-free Tx queue                                                                                       Y Y Y Y                            
Fast mbuf free               Y                 Y           P P   P                       Y             Y Y Y           Y                
Free Tx mbuf on demand                         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 Y     Y Y Y P Y Y Y           Y Y   Y Y     Y Y
Runtime Rx queue setup                                 Y       Y Y Y                 Y                         Y Y Y           Y                
Runtime Tx queue setup                                 Y       Y Y Y                 Y                         Y Y Y           Y                
Burst mode info               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   Y Y 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 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   Y Y     Y     Y Y   Y       Y Y Y Y   Y Y Y   P  
LRO               Y                       Y Y Y                 Y   Y 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         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   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 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 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 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 P 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     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     Y         Y   Y Y Y       Y Y Y     Y Y Y      
Inner RSS                               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     Y Y Y     Y Y        
DCB                                         Y   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   Y Y   Y       Y Y Y Y       Y Y         Y Y   Y Y
Flow control       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        
Rate limitation                                                                 Y                       Y Y Y                   Y        
Traffic mirroring                                             Y                 Y Y                                                        
Inline crypto                                                                 Y Y                                             Y Y      
Inline protocol                                                                                         Y   Y                            
CRC offload       Y   Y   Y Y Y     Y   Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y P P Y   Y Y Y Y       Y             Y Y       Y P P      
VLAN offload       Y Y     Y Y Y   Y Y     Y   Y Y Y Y Y Y Y Y Y   Y Y Y Y Y P P P     Y         Y P Y Y Y       Y Y P     P P P     Y
QinQ offload                         Y                   P P   P   Y Y     Y P P                     Y Y Y                   P P      
FEC                 Y                       Y                                                                                
L3 checksum offload       Y   Y   Y Y Y Y Y Y Y P Y   Y Y Y Y Y P P P P P Y Y Y Y Y P P Y   Y Y Y Y     Y Y Y Y Y     Y Y Y Y   Y Y P P      
L4 checksum offload       Y   Y   Y Y Y Y Y Y Y P Y   Y Y Y Y Y P P P P P Y Y Y Y Y P P Y   Y Y Y Y     Y Y Y Y Y     Y Y Y Y   Y Y P P     Y
Timestamp offload                       Y                 Y                                 Y             Y                                
MACsec offload       Y                                                         P                                                        
Inner L3 checksum               Y               Y       Y Y Y P P   P           Y P P Y   Y Y           Y Y Y Y       Y   Y       P P      
Inner L4 checksum               Y               Y       Y Y Y P P   P           Y P P Y   Y Y           Y Y Y Y       Y   Y       P P      
Packet type parsing       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 Y     Y
Timesync               Y       Y                 Y   Y         Y       Y Y                       Y                       Y        
Rx descriptor status       Y       Y         Y         Y     Y Y Y Y Y Y   Y 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 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 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 Y     Y Y Y       Y Y Y Y     Y Y Y P Y
Stats per queue 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
FW version       Y   Y   Y     Y Y       Y       Y Y   Y     Y   Y   Y Y Y Y       Y Y             Y Y Y           Y       Y        
EEPROM dump       Y       Y Y                                     Y         Y                                               Y        
Module EEPROM dump                                         Y   Y     Y   Y       Y Y         Y             Y Y Y                   Y        
Registers dump       Y         Y                       Y Y           Y Y       Y Y                     Y Y Y       Y         Y Y Y      
LED               Y                                           Y                                                              
Multiprocess aware               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  
FreeBSD               Y Y       Y     Y   Y Y       Y Y Y Y   Y Y     Y Y Y                                     Y             Y  
Linux     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 Y Y   Y Y Y Y Y Y Y Y Y   Y Y
Windows                                             Y     Y                       P                                              
ARMv7                                 Y                                               Y               Y           Y         Y  
ARMv8       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  
Power8                                 Y           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   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   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 Y Y Y Y Y Y Y Y Y Y Y   Y Y Y       Y Y
Design doc                           Y                                                                                              
Perf doc               Y                                                                                                          

Note

Features marked with “P” are partially supported. Refer to the appropriate NIC guide in the following sections for details.

Table 1.2 rte_flow items availability in networking drivers
Item a f _ x d p a f p a c k e t a r k a t l a n t i c a v p a x g b e b n x 2 x b n x t c x g b e c x g b e v f d p a a d p a a 2 e 1 0 0 0 e n a e n e t c e n i c f a i l s a f e f m 1 0 k f m 1 0 k v f h i n i c h n s 3 h n s 3 v f i 4 0 e i 4 0 e v f i a v f i c e i c e _ d c f i g b i g b v f i g c i o n i c i p n 3 k e i x g b e i x g b e v f l i q u i d i o m e m i f m l x 4 m l x 5 m v n e t a m v p p 2 n e t v s c n f b n f p o c t e o n t x o c t e o n t x 2 o c t e o n t x 2 . v e c o c t e o n t x 2 v f o c t e o n t x _ e p p c a p p f e q e d e q e d e v f s f c s z e d a t a 2 t a p t h u n d e r x t x g b e t x g b e v f v h o s t v i r t i o v m x n e t 3
ah                                             Y   Y Y                                                                      
any                                       Y                                                 Y                                
arp_eth_ipv4                                                 Y Y                                     Y                                
conntrack                                                                           Y                                              
ecpri                                                 Y                         Y                                              
esp                                             Y   Y Y                                     Y                                
eth               Y Y     Y Y     Y       Y Y   Y   Y Y       Y   Y Y       Y Y   Y         Y               Y   Y   Y        
e_tag                                                                 Y                       Y                       Y        
fuzzy                                                                 Y                                               Y        
geneve                                         Y                                 Y             Y               Y                
geneve_opt                                                                           Y                                              
gre                       Y                     Y                             Y             Y                                
gre_key                                                                           Y             Y                                
gtp                                                                           Y                                              
gtpc                                             Y   Y                                       Y                                
gtpu                                             Y   Y Y                                     Y                                
gtp_psc                                                 Y Y                       Y                                              
higig2                                                                                         Y                                
icmp                       Y               Y Y       Y Y                       Y             Y                                
icmp6                                       Y         Y Y                       Y                                              
icmp6_nd_na                                                                                                                          
icmp6_nd_ns                                                                                                                          
icmp6_nd_opt                                                                                                                          
icmp6_nd_opt_sla_eth                                                                                                                          
icmp6_nd_opt_tla_eth                                                                                                                          
igmp                                                                                                                          
integrity                                                                           Y                                              
invert                                                                                                                          
ipv4               Y Y     Y Y     Y       Y Y   Y   Y Y       Y   Y Y       Y Y   Y         Y           Y   Y   Y   Y        
ipv6               Y Y     Y Y     Y       Y Y   Y   Y Y       Y     Y         Y   Y         Y           Y   Y   Y   Y        
ipv6_ext                                                                                         Y                                
ipv6_frag_ext                                                 Y Y                       Y                                              
l2tpv3oip                                             Y   Y Y                                                                      
mark                                                                           Y                                              
meta                       Y                                                   Y                                              
mpls                                             Y                 Y           Y             Y                                
nsh                                                                                                                          
nvgre                                         Y   Y     Y           Y Y         Y             Y               Y       Y        
pf               Y Y                                                                                       Y                
pfcp                                                 Y Y                                                                      
phy_port               Y Y                                                         Y                             Y                
port_id               Y                                                           Y                             Y                
pppoed                                                   Y                                                     Y                
pppoes                                                   Y                                                     Y                
pppoe_proto_id                                                   Y                                                                      
raw                       Y Y     Y             Y                   Y             Y         Y                       Y        
sctp                       Y Y     Y         Y   Y   Y Y             Y                       Y                       Y        
tag                                                                           Y                                              
tcp               Y Y     Y Y     Y       Y Y   Y   Y Y       Y   Y Y       Y Y   Y         Y           Y   Y   Y   Y        
udp               Y Y     Y Y     Y       Y Y   Y   Y Y       Y   Y Y       Y Y   Y         Y           Y   Y   Y   Y        
vf               Y Y                           Y                                                           Y                
vlan               Y Y     Y       Y         Y   Y   Y Y           Y Y       Y Y   Y         Y               Y   Y   Y        
vxlan               Y               Y       Y Y   Y     Y           Y Y         Y             Y               Y       Y        
vxlan_gpe                                         Y                                 Y             Y                                
Table 1.3 rte_flow actions availability in networking drivers
Action a f _ x d p a f p a c k e t a r k a t l a n t i c a v p a x g b e b n x 2 x b n x t c x g b e c x g b e v f d p a a d p a a 2 e 1 0 0 0 e n a e n e t c e n i c f a i l s a f e f m 1 0 k f m 1 0 k v f h i n i c h n s 3 h n s 3 v f i 4 0 e i 4 0 e v f i a v f i c e i c e _ d c f i g b i g b v f i g c i o n i c i p n 3 k e i x g b e i x g b e v f l i q u i d i o m e m i f m l x 4 m l x 5 m v n e t a m v p p 2 n e t v s c n f b n f p o c t e o n t x o c t e o n t x 2 o c t e o n t x 2 . v e c o c t e o n t x 2 v f o c t e o n t x _ e p p c a p p f e q e d e q e d e v f s f c s z e d a t a 2 t a p t h u n d e r x t x g b e t x g b e v f v h o s t v i r t i o v m x n e t 3
age                                                                           I                                              
conntrack                                                                           I                                              
count               Y Y             Y         Y       Y Y                       I             Y                                
dec_tcp_ack                                                                           Y                                              
dec_tcp_seq                                                                           Y                                              
dec_ttl                                                                           Y                                              
drop               Y Y     Y Y     Y       Y Y   Y   Y Y           Y Y       Y Y   Y         Y           Y   Y   Y   Y        
flag                               Y         Y   Y                             Y             Y               Y                
inc_tcp_ack                                                                           Y                                              
inc_tcp_seq                                                                           Y                                              
jump                               Y                                           Y                                              
mac_swap                 Y                                                                                                        
mark               Y               Y         Y   Y   Y Y           Y Y         Y             Y               Y       Y        
meter                                                                           Y   Y                                          
modify_field                                                                           Y                                              
nvgre_decap                                                                           Y                                              
nvgre_encap                                                                           Y                                              
of_copy_ttl_in                                                                                                                          
of_copy_ttl_out                                                                                                                          
of_dec_mpls_ttl                                                                                                                          
of_dec_nw_ttl                                                                                                                          
of_pop_mpls                                                                                                                          
of_pop_vlan                 Y             Y                                           Y             Y               Y                
of_push_mpls                                                                                                                          
of_push_vlan                 Y             Y                                           Y             Y               Y                
of_set_mpls_ttl                                                                                                                          
of_set_nw_ttl                                                                                                                          
of_set_vlan_pcp                 Y             Y                                           Y             Y               Y                
of_set_vlan_vid                 Y             Y                                           Y             Y               Y                
passthru                               Y             Y   Y Y                                                         Y            
pf               Y                             Y                   Y                       Y               Y       Y        
phy_port               Y Y                                                                                       Y                
port_id               Y               Y                                           Y             Y               Y                
queue                 Y     Y Y     Y       Y Y   Y   Y Y       Y     Y       Y Y   Y         Y           Y   Y   Y   Y        
raw_decap                                                                           Y                                              
raw_encap                                                                           Y                                              
rss               Y       Y Y     Y         Y   Y   Y Y       Y     Y       Y I             Y               Y   Y   Y        
sample                                                                           Y                                              
security                                                                 Y                       Y                       Y        
set_ipv4_dscp                                                                           Y                                              
set_ipv4_dst                 Y                                                         Y                                              
set_ipv4_src                 Y                                                         Y                                              
set_ipv6_dscp                                                                           Y                                              
set_ipv6_dst                 Y                                                         Y                                              
set_ipv6_src                 Y                                                         Y                                              
set_mac_dst                 Y                                                         Y                                              
set_mac_src                 Y                                                         Y                                              
set_meta                                                                           Y                                              
set_tag                                                                           Y                                              
set_tp_dst                 Y                                                         Y                                              
set_tp_src                 Y                                                         Y                                              
set_ttl                                                                           Y                                              
vf               Y                             Y     Y             Y                       Y               Y       Y        
vxlan_decap               Y               Y                                           Y                             Y                
vxlan_encap               Y               Y                                           Y                             Y                

Note

rte_flow actions marked with “I” can be indirect as well.