mirror_ubuntu-kernels/drivers/net/ethernet/intel
Piotr Gardocki 3a0b5a2929 iavf: Introduce new state machines for flow director
New states introduced:

 IAVF_FDIR_FLTR_DIS_REQUEST
 IAVF_FDIR_FLTR_DIS_PENDING
 IAVF_FDIR_FLTR_INACTIVE

Current FDIR state machines (SM) are not adequate to handle a few
scenarios in the link DOWN/UP event, reset event and ntuple-feature.

For example, when VF link goes DOWN and comes back UP administratively,
the expectation is that previously installed filters should also be
restored. But with current SM, filters are not restored.
So with new SM, during link DOWN filters are marked as INACTIVE in
the iavf list but removed from PF. After link UP, SM will transition
from INACTIVE to ADD_REQUEST to restore the filter.

Similarly, with VF reset, filters will be removed from the PF, but
marked as INACTIVE in the iavf list. Filters will be restored after
reset completion.

Steps to reproduce:
-------------------

1. Create a VF. Here VF is enp8s0.

2. Assign IP addresses to VF and link partner and ping continuously
from remote. Here remote IP is 1.1.1.1.

3. Check default RX Queue of traffic.

ethtool -S enp8s0 | grep -E "rx-[[:digit:]]+\.packets"

4. Add filter - change default RX Queue (to 15 here)

ethtool -U ens8s0 flow-type ip4 src-ip 1.1.1.1 action 15 loc 5

5. Ensure filter gets added and traffic is received on RX queue 15 now.

Link event testing:
-------------------
6. Bring VF link down and up. If traffic flows to configured queue 15,
test is success, otherwise it is a failure.

Reset event testing:
--------------------
7. Reset the VF. If traffic flows to configured queue 15, test is success,
otherwise it is a failure.

Fixes: 0dbfbabb84 ("iavf: Add framework to enable ethtool ntuple filters")
Signed-off-by: Piotr Gardocki <piotrx.gardocki@intel.com>
Reviewed-by: Larysa Zaremba <larysa.zaremba@intel.com>
Signed-off-by: Ranganatha Rao <ranganatha.rao@intel.com>
Tested-by: Rafal Romanowski <rafal.romanowski@intel.com>
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
2023-12-12 11:20:40 -08:00
..
e1000 e1000: replace deprecated strncpy with strscpy 2023-10-18 18:10:17 -07:00
e1000e e1000e: Add support for the next LOM generation 2023-08-24 12:55:25 -07:00
fm10k fm10k: replace deprecated strncpy with strscpy 2023-10-18 18:10:17 -07:00
i40e i40e: Fix unexpected MFS warning message 2023-12-05 10:51:22 -08:00
iavf iavf: Introduce new state machines for flow director 2023-12-12 11:20:40 -08:00
ice ice: Restore fix disabling RX VLAN filtering 2023-12-05 10:51:22 -08:00
idpf idpf: fix potential use-after-free in idpf_tso() 2023-11-06 17:24:37 -08:00
igb Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-10-26 13:46:28 -07:00
igbvf igbvf: replace deprecated strncpy with strscpy 2023-10-18 18:10:18 -07:00
igc Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2023-10-26 13:46:28 -07:00
ixgbe ixgbe: fix end of loop test in ixgbe_set_vf_macvlan() 2023-10-20 12:53:06 +01:00
ixgbevf ixgbevf: Remove unused function declarations 2023-08-04 18:03:00 -07:00
e100.c e100: replace deprecated strncpy with strscpy 2023-10-18 18:10:17 -07:00
Kconfig i40e: Add initial devlink support 2023-10-15 14:33:41 +01:00
Makefile idpf: add SRIOV support and other ndo_ops 2023-09-13 14:59:24 -07:00