linux_dsm_epyc7002/drivers/net/ethernet/intel
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
..
e1000 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-01-09 10:37:00 -05:00
e1000e e1000e: Alert the user that C-states will be disabled by enabling jumbo frames 2018-01-24 12:27:48 -08:00
fm10k fm10k: clarify action when updating the VLAN table 2018-01-24 14:23:27 -08:00
i40e i40e: Add and delete cloud filter 2018-02-14 09:43:22 -08:00
i40evf i40evf: Add support to apply cloud filters 2018-02-14 09:43:22 -08:00
igb igb: Clear TXSTMP when ptp_tx_work() is timeout 2018-01-24 12:27:48 -08:00
igbvf igbvf: Use smp_rmb rather than read_barrier_depends 2017-11-21 23:46:04 -08:00
ixgb ethernet/intel: Convert timers to use timer_setup() 2017-10-18 12:40:26 +01:00
ixgbe ixgbe: don't set RXDCTL.RLPML for 82599 2018-01-26 10:25:35 -08:00
ixgbevf ixgbevf: use ARRAY_SIZE for various array sizing calculations 2018-01-26 10:25:15 -08:00
e100.c net: e100: Replace PCI pool old API 2018-01-02 16:14:17 -06:00
Kconfig i40evf: Add support for Adaptive Virtual Function 2017-06-01 14:30:02 -07:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00