Please sign in to comment.
i40e: Enable cloud filters via tc-flower
This patch enables tc-flower based hardware offloads. tc flower filter provided by the kernel is configured as driver specific cloud filter. The patch implements functions and admin queue commands needed to support cloud filters in the driver and adds cloud filters to configure these tc-flower filters. The classification function of the filter is to direct matched packets to a traffic class. The hardware traffic class is set based on the the classid reserved in the range :ffe0 - :ffef. Match Dst MAC and route to TC0: prio 1 flower dst_mac 3c:fd:fe:a0:d6:70 skip_sw\ hw_tc 1 Match Dst IPv4,Dst Port and route to TC1: prio 2 flower dst_ip 192.168.3.5/32\ ip_proto udp dst_port 25 skip_sw\ hw_tc 2 Match Dst IPv6,Dst Port and route to TC1: prio 3 flower dst_ip fe8::200:1\ ip_proto udp dst_port 66 skip_sw\ hw_tc 2 Delete tc flower filter: Example: Flow Director Sideband is disabled while configuring cloud filters via tc-flower and until any cloud filter exists. Unsupported matches when cloud filters are added using enhanced big buffer cloud filter mode of underlying switch include: 1. source port and source IP 2. Combined MAC address and IP fields. 3. Not specifying L4 port These filter matches can however be used to redirect traffic to the main VSI (tc 0) which does not require the enhanced big buffer cloud filter support. Signed-off-by: Amritha Nambiar <firstname.lastname@example.org> Signed-off-by: Kiran Patil <email@example.com> Signed-off-by: Anjali Singhai Jain <firstname.lastname@example.org> Signed-off-by: Jingjing Wu <email@example.com> Acked-by: Shannon Nelson <firstname.lastname@example.org> Tested-by: Andrew Bowers <email@example.com> Signed-off-by: Jeff Kirsher <firstname.lastname@example.org>
- Loading branch information...
Showing with 1,192 additions and 31 deletions.
- +53 −1 drivers/net/ethernet/intel/i40e/i40e.h
- +3 −0 drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
- +189 −0 drivers/net/ethernet/intel/i40e/i40e_common.c
- +927 −30 drivers/net/ethernet/intel/i40e/i40e_main.c
- +16 −0 drivers/net/ethernet/intel/i40e/i40e_prototype.h
- +1 −0 drivers/net/ethernet/intel/i40e/i40e_type.h
- +3 −0 drivers/net/ethernet/intel/i40evf/i40e_adminq_cmd.h
Oops, something went wrong.