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 n x k

c n x k . . v e c

c n x k v f

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 e t f e 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

g v e

h i n i c

h n s 3

h n s 3 v f

i 4 0 e

i a v f

i c e

i c e _ d c f

i d p 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 a n a

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

n g b e

o c t e o n _ e p

o c t e o n t x

p c a p

p f e

q e d e

q e d e v f

s f c

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

Y

Y

Y

P

Y

P

P

Y

Y

Y

Y

Y

Y

P

Y

Y

Y

Y

Y

P

P

Y

Y

Y

P

P

Y

Y

P

Y

Y

Y

Y

P

Y

Y

P

P

Link speed configuration

Y

Y

Y

Y

Y

Y

Y

Y

Y

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

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

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

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

Y

Y

Lock-free Tx queue

Y

Y

Y

Y

Fast mbuf free

Y

Y

Y

Y

Y

Y

Y

P

P

Y

Y

Y

Free Tx mbuf on demand

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

Y

Y

Y

Y

Y

Y

Y

Y

P

Y

Y

Y

Y

Y

Runtime Rx queue setup

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Runtime Tx queue setup

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Shared Rx queue

Y

Burst mode info

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Power mgmt address monitor

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

Y

Y

Y

Y

Y

Buffer split on Rx

P

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

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

P

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

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

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

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

Y

Y

Y

P

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

P

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

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

Y

Y

Inner RSS

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

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

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

Y

Rate limitation

Y

Y

Congestion management

Y

Traffic manager

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Inline crypto

Y

Y

Y

Y

Y

Inline protocol

Y

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

P

P

Y

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

P

Y

Y

Y

Y

Y

Y

Y

P

P

P

Y

Y

Y

P

Y

Y

P

P

P

P

Y

QinQ offload

Y

P

P

Y

Y

Y

P

P

Y

P

P

FEC

Y

Y

IP reassembly

L3 checksum offload

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

P

Y

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

P

P

L4 checksum offload

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

P

Y

Y

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

P

P

P

Y

Timestamp offload

Y

Y

Y

P

P

P

Y

MACsec offload

Y

P

Inner L3 checksum

Y

Y

Y

Y

Y

Y

Y

Y

P

P

P

P

Y

P

P

Y

Y

Y

Y

Y

Y

Y

P

P

Inner L4 checksum

Y

Y

Y

Y

Y

Y

Y

Y

P

P

P

P

Y

P

P

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

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

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

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

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

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

Y

Y

Y

EEPROM dump

Y

Y

Y

Y

Y

Y

Y

Module EEPROM dump

Y

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

Y

LED

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

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

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

Y

Y

Y

Windows

Y

Y

Y

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

Y

Y

LoongArch64

Y

Power8

Y

Y

Y

Y

Y

Y

Y

rv64

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

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

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

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 n x k

c n x k . . v e c

c n x k v f

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 e t f e 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

g v e

h i n i c

h n s 3

h n s 3 v f

i 4 0 e

i a v f

i c e

i c e _ d c f

i d p 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 a n a

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

n g b e

o c t e o n _ e p

o c t e o n t x

p c a p

p f e

q e d e

q e d e v f

s f c

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

Y

Y

Y

Y

arp_eth_ipv4

Y

Y

Y

Y

Y

conntrack

Y

ecpri

Y

Y

Y

esp

Y

Y

Y

Y

Y

Y

Y

eth

P

Y

Y

Y

P

P

P

P

P

P

P

P

P

P

P

P

P

Y

P

Y

Y

P

P

e_tag

Y

Y

Y

Y

Y

flex

Y

fuzzy

Y

Y

geneve

Y

Y

Y

Y

Y

Y

Y

Y

geneve_opt

Y

Y

gre

Y

Y

Y

Y

Y

Y

Y

Y

Y

gre_key

Y

Y

Y

Y

Y

gre_option

Y

gtp

Y

Y

gtpc

Y

Y

Y

Y

Y

Y

gtpu

Y

Y

Y

Y

Y

Y

Y

gtp_psc

Y

Y

Y

higig2

Y

Y

Y

icmp

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

icmp6

Y

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

Y

Y

Y

ipv6

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

ipv6_ext

Y

Y

Y

ipv6_frag_ext

Y

Y

Y

P

Y

Y

Y

l2tpv2

Y

l2tpv3oip

Y

Y

Y

mark

Y

Y

Y

Y

P

meta

Y

Y

meter_color

Y

mpls

Y

Y

Y

Y

Y

Y

nsh

nvgre

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

pfcp

Y

Y

port_id

Y

Y

Y

Y

port_representor

Y

Y

Y

ppp

Y

pppoed

Y

Y

pppoes

Y

Y

pppoe_proto_id

Y

raw

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

represented_port

Y

Y

Y

sctp

Y

Y

Y

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

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

Y

Y

Y

vlan

P

Y

Y

Y

P

P

P

P

P

P

P

P

P

P

Y

P

Y

Y

P

P

vxlan

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

vxlan_gpe

Y

Y

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 n x k

c n x k . . v e c

c n x k v f

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 e t f e 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

g v e

h i n i c

h n s 3

h n s 3 v f

i 4 0 e

i a v f

i c e

i c e _ d c f

i d p 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 a n a

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

n g b e

o c t e o n _ e p

o c t e o n t x

p c a p

p f e

q e d e

q e d e v f

s f c

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

Y

Y

Y

I

Y

Y

dec_tcp_ack

Y

dec_tcp_seq

Y

dec_ttl

Y

Y

Y

drop

Y

Y

Y

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

Y

Y

inc_tcp_ack

Y

inc_tcp_seq

Y

jump

Y

Y

Y

Y

P

mac_swap

Y

mark

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

meter

Y

Y

Y

Y

meter_mark

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

Y

of_pop_mpls

of_pop_vlan

Y

Y

Y

Y

Y

Y

Y

Y

Y

of_push_mpls

of_push_vlan

Y

Y

Y

Y

Y

Y

Y

Y

Y

of_set_mpls_ttl

of_set_nw_ttl

of_set_vlan_pcp

Y

Y

Y

Y

Y

Y

Y

Y

Y

of_set_vlan_vid

Y

Y

Y

Y

Y

Y

Y

Y

Y

passthru

Y

Y

Y

Y

Y

pf

Y

Y

Y

Y

Y

Y

Y

Y

port_id

Y

Y

Y

Y

Y

Y

Y

port_representor

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

Y

Y

raw_decap

Y

Y

raw_encap

Y

Y

represented_port

Y

Y

Y

Y

Y

Y

Y

rss

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

Y

I

Y

Y

Y

sample

Y

Y

security

Y

Y

Y

Y

Y

Y

send_to_kernel

Y

set_ipv4_dscp

Y

Y

set_ipv4_dst

Y

Y

Y

Y

set_ipv4_src

Y

Y

Y

Y

set_ipv6_dscp

Y

Y

set_ipv6_dst

Y

Y

Y

set_ipv6_src

Y

Y

Y

set_mac_dst

Y

Y

Y

Y

set_mac_src

Y

Y

Y

Y

set_meta

Y

set_tag

Y

set_tp_dst

Y

Y

Y

Y

set_tp_src

Y

Y

Y

Y

set_ttl

Y

Y

vf

Y

Y

Y

Y

Y

Y

Y

Y

vxlan_decap

Y

Y

Y

Y

Y

vxlan_encap

Y

Y

Y

Y

Y

Note

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