Intel® Ethernet Controller E810 eSwitch Switchdev Mode
Technology and Configuration Guide
Switchdev Mode TC-Flower Hardware Offloads
In eSwitch switchdev mode, the device allows hardware offload of the L2/L3/L4, VXLAN, GRETAP, GENEVE, GTP, L2TPv3, and PPPoE TC-Flower exact match rules through the PRs. TC-Flower can be used to offload the kernel data path. Table: Supported Patterns and Input Sets for TC-Flower Hardware Offload shows the pattern types and input sets available for TC-Flower hardware offload programming.
Pattern | Input Set |
---|---|
L2 / L3 / L4 | |
eth | src_mac | dst_mac | ethertype |
eth / vlan | src_mac | dst_mac | ethertype | vlan |
eth / svlan / cvlan | src_mac | dst_mac | svlan | cvlan |
eth / ipv4 | dst_mac | src_ip | dst_ip | proto | ttl | tos |
eth / ipv4 / udp | dst_mac | src_ip | dst_ip | proto | ttl | tos | src_port | dst_port |
eth / ipv4 / tcp | dst_mac | src_ip | dst_ip | proto | ttl | tos | src_port | dst_port |
eth / ipv6 | dst_mac | src_ip | dst_ip | tc |
eth / ipv6 / udp | dst_mac | src_ip | dst_ip | tc | src_port | dst_port |
eth / ipv6 / tcp | dst_mac | src_ip | dst_ip | tc | src_port | dst_port |
VXLAN/GRETAP/GENEVE | |
eth / ipv4 / udp / vxlan / eth / ipv4 | outer_dst_ip | vni | inner_dst_mac | inner_src_ip | inner_dst_ip |
eth / ipv4 / udp / vxlan / eth / ipv4 / udp | outer_dst_ip | vni | inner_dst_mac | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv4 / udp / vxlan / eth / ipv4 / tcp | outer_dst_ip | vni | inner_dst_mac | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv4 / udp / nvgre / eth / ipv4 | outer_dst_ip | tni | inner_dst_mac | inner_src_ip | inner_dst_ip |
eth / ipv4 / udp / nvgre / eth / ipv4 / udp | outer_dst_ip | tni | inner_dst_mac | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv4 / udp / nvgre / eth / ipv4 / tcp | outer_dst_ip | tni |inner_dst_mac| inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
GTP | |
eth / ipv4 / udp / gtpu | dst_mac | src_ip | dst_ip | proto | ttl | tos | teid |
eth / ipv6 / udp / gtpu | dst_mac | src_ip | dst_ip | tc | teid |
eth / ipv4 / udp / gtpu / ipv4 | dst_mac | teid | inner_src_ip | inner_dst_ip |
eth / ipv4 / udp / gtpu / gtp_psc / ipv4 | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip |
eth / ipv4 / udp / gtpu / ipv4 / udp | dst_mac | teid | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / udp | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv4 / udp / gtpu / ipv4 / tcp | dst_mac | teid | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv4 / udp / gtpu / gtp_psc / ipv4 / tcp | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv4 / udp / gtpu / ipv6 | dst_mac | teid | inner_src_ip | inner_dst_ip |
eth / ipv4 / udp / gtpu / gtp_psc / ipv6 | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip |
eth / ipv4 / udp / gtpu / ipv6 / udp | dst_mac | teid | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / udp | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv4 / udp / gtpu / ipv6 / tcp | dst_mac | teid | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv4 / udp / gtpu / gtp_psc / ipv6 / tcp | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv6 / udp / gtpu / ipv4 | dst_mac | teid | inner_src_ip | inner_dst_ip |
eth / ipv6 / udp / gtpu / gtp_psc / ipv4 | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip |
eth / ipv6 / udp / gtpu / ipv4 / udp | dst_mac | teid | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv6 / udp / gtpu / gtp_psc / ipv4 / udp | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv6 / udp / gtpu / ipv4 / tcp | dst_mac | teid | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv6 / udp / gtpu / gtp_psc / ipv4 / tcp | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv6 / udp / gtpu / ipv6 | dst_mac | teid | inner_src_ip | inner_dst_ip |
eth / ipv6 / udp / gtpu / gtp_psc / ipv6 | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip |
eth / ipv6 / udp / gtpu / ipv6 / udp | dst_mac | teid | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv6 / udp / gtpu / gtp_psc / ipv6 / udp | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv6 / udp / gtpu / ipv6 / tcp | dst_mac | teid | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv6 / udp / gtpu / gtp_psc / ipv6 / tcp | dst_mac | teid | qfi | inner_src_ip | inner_dst_ip | inner_src_port | inner_dst_port |
eth / ipv4 / udp / gtpc | dst_mac | src_ip | dst_ip | proto | ttl | tos | teid |
PPPoE | |
eth / pppoes | dst_mac | session_id |
eth / vlan / pppoes | dst_mac | vlan | session_id |
eth / pppoes / pppoes_proto | dst_mac | session_id | proto |
eth / vlan / pppoes / pppoes_proto | dst_mac | vlan | session_id | proto |
eth / pppoe / ipv4 | dst_mac | ethertype | session_id | src_ip | dst_ip | proto | ttl | tos |
eth / pppoe / ipv4 / tcp | dst_mac | ethertype | session_id | src_ip | dst_ip | proto | ttl | tos | src_port | dst_port |
eth / pppoe / ipv4 / udp | dst_mac | ethertype | session_id | src_ip | dst_ip | proto | ttl | tos | src_port | dst_port |
eth / pppoe / ipv6 | dst_mac | ethertype | session_id | src_ip | dst_ip | tc |
eth / pppoe / ipv6 / tcp | dst_mac | ethertype | session_id | src_ip | dst_ip | tc | src_port | dst_port |
eth / pppoe / ipv6 / udp | dst_mac | ethertype | session_id | src_ip | dst_ip | tc | src_port | dst_port |
eth / vlan / pppoe / ipv4 | dst_mac | ethertype | vlan | session_id | src_ip | dst_ip | proto | ttl | tos |
eth / vlan / pppoe / ipv4 / tcp | dst_mac | ethertype | vlan | session_id | src_ip | dst_ip | proto | ttl | tos | src_port | dst_port |
eth / vlan / pppoe / ipv4 / udp | dst_mac | ethertype | vlan | session_id | src_ip | dst_ip | proto | ttl | tos | src_port | dst_port |
eth / vlan / pppoe / ipv6 | dst_mac | ethertype | vlan | session_id | src_ip | dst_ip | tc |
eth / vlan / pppoe / ipv6 / tcp | dst_mac | ethertype | vlan | session_id | src_ip | dst_ip | tc | src_port | dst_port |
eth / vlan / pppoe / ipv6 / udp | dst_mac | ethertype | vlan | session_id | src_ip | dst_ip | tc | src_port | dst_port |
eth / svlan / cvlan / pppoes | dst_mac | svlan | cvlan | session_id |
eth / svlan / cvlan / pppoes / pppoes_proto | dst_mac | svlan | cvlan | session_id | proto |
eth / svlan / cvlan / pppoes / ipv4 | dst_mac | svlan | cvlan | session_id | src_ip | dst_ip | proto | ttl | tos |
eth / svlan / cvlan / pppoes / ipv6 | dst_mac | svlan | cvlan | session_id | src_ip | dst_ip | tc |
L2TPv3 | |
eth / ipv4 / l2tpv3 | dst_mac | src_ip | dst_ip | proto | ttl | tos | session_id |
eth / ipv6 / l2tpv3 | dst_mac | src_ip | dst_ip | tc | session_id |
The following actions are supported for HW offload:
If match/action is requested that cannot be offloaded because it is either unsupported or there are no resources, software must fail the offload and then flush all existing fast-path rules.