linux/drivers/net/ethernet/intel/i40e
Avinash Dayanand e284fc2804 i40e: Add and delete cloud filter
This patch provides support to add or delete cloud filter for queue
channels created for ADq on VF.
We are using the HW's cloud filter feature and programming it to act
as a TC filter applied to a group of queues.

There are two possible modes for a VF when applying a cloud filter
1. Basic Mode:	Intended to apply filters that don't need a VF to be
		Trusted. This would include the following
		  Dest MAC + L4 port
		  Dest MAC + VLAN + L4 port
2. Advanced Mode: This mode is only for filters with combination that
		  requires VF to be Trusted.
		  Dest IP + L4 port

When cloud filters are applied on a trusted VF and for some reason
the same VF is later made as untrusted then all cloud filters
will be deleted. All cloud filters has to be re-applied in
such a case.
Cloud filters are also deleted when queue channel is deleted.

Testing-Hints:
=============
1. Adding Basic Mode filter should be possible on a VF in
   Non-Trusted mode.
2. In Advanced mode all filters should be able to be created.

Steps:
======
1. Enable ADq and create TCs using TC mqprio command
2. Apply cloud filter.
3. Turn-off the spoof check.
4. Pass traffic.

Example:
========
1. tc qdisc add dev enp4s2 root mqprio num_tc 4 map 0 0 0 0 1 2 2 3\
	queues 2@0 2@2 1@4 1@5 hw 1 mode channel
2. tc qdisc add dev enp4s2 ingress
3. ethtool -K enp4s2 hw-tc-offload on
4. ip link set ens261f0 vf 0 spoofchk off
5. tc filter add dev enp4s2 protocol ip parent ffff: prio 1 flower\
	dst_ip 192.168.3.5/32 ip_proto udp dst_port 25 skip_sw hw_tc 2

Signed-off-by: Avinash Dayanand <avinash.dayanand@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
2018-02-14 09:43:22 -08:00
..
i40e_adminq_cmd.h i40e: Display LLDP information on vSphere Web Client 2018-01-26 13:23:11 -08:00
i40e_adminq.c i40e: cleanup unnecessary parens 2018-01-26 13:23:28 -08:00
i40e_adminq.h i40e: reduce wait time for adminq command completion 2017-04-19 17:38:25 -07:00
i40e_alloc.h
i40e_client.c i40e: Disable iWARP VSI PETCP_ENA flag on netdev down events 2018-01-23 11:29:19 -08:00
i40e_client.h i40e: Disable iWARP VSI PETCP_ENA flag on netdev down events 2018-01-23 11:29:19 -08:00
i40e_common.c i40e: Display LLDP information on vSphere Web Client 2018-01-26 13:23:11 -08:00
i40e_dcb_nl.c
i40e_dcb.c i40e: Support firmware CEE DCB UP to TC map re-definition 2017-06-20 18:17:10 -07:00
i40e_dcb.h
i40e_debugfs.c i40e: don't leak memory addresses 2018-02-13 11:40:10 -08:00
i40e_devids.h i40e: Add support for 25G devices 2016-12-06 20:59:43 -08:00
i40e_diag.c i40e: make const array patterns static, reduces object code size 2017-10-13 14:23:57 -07:00
i40e_diag.h
i40e_ethtool.c i40e: i40e: Change ethtool check from MAC to HW flag 2018-02-13 11:40:10 -08:00
i40e_fcoe.c networking: make skb_put & friends return void pointers 2017-06-16 11:48:39 -04:00
i40e_fcoe.h
i40e_hmc.c
i40e_hmc.h
i40e_lan_hmc.c
i40e_lan_hmc.h
i40e_main.c i40e: Add and delete cloud filter 2018-02-14 09:43:22 -08:00
i40e_nvm.c i40e/i40evf: Enable NVMUpdate to retrieve AdminQ and add preservation flags for NVM update 2018-01-23 11:29:19 -08:00
i40e_osdep.h i40e: Drop FCoE code from core driver files 2017-03-27 16:47:43 -07:00
i40e_prototype.h i40e: Display LLDP information on vSphere Web Client 2018-01-26 13:23:11 -08:00
i40e_ptp.c locking/atomics: COCCINELLE/treewide: Convert trivial ACCESS_ONCE() patterns to READ_ONCE()/WRITE_ONCE() 2017-10-25 11:01:08 +02:00
i40e_register.h i40e: fix incorrect register definition 2017-10-06 08:11:31 -07:00
i40e_status.h i40e: Add returning AQ critical error to SW 2018-01-26 13:22:56 -08:00
i40e_trace.h i40e/i40evf: Add tracepoints 2017-04-19 16:47:31 -07:00
i40e_txrx.c i40e/i40evf: Add support for new mechanism of updating adaptive ITR 2018-02-12 11:50:10 -08:00
i40e_txrx.h i40e/i40evf: Add support for new mechanism of updating adaptive ITR 2018-02-12 11:50:10 -08:00
i40e_type.h i40e: Enable ADq and create queue channel/s on VF 2018-02-14 09:43:22 -08:00
i40e_virtchnl_pf.c i40e: Add and delete cloud filter 2018-02-14 09:43:22 -08:00
i40e_virtchnl_pf.h i40e: Add and delete cloud filter 2018-02-14 09:43:22 -08:00
i40e.h i40e: Add and delete cloud filter 2018-02-14 09:43:22 -08:00
Makefile i40e/i40evf: Add tracepoints 2017-04-19 16:47:31 -07:00