Thomas Bogendoerfer 098df5
From: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
Thomas Bogendoerfer 098df5
Date: Tue, 15 Nov 2022 09:49:25 +0100
Thomas Bogendoerfer 098df5
Subject: i40e: Disallow ip4 and ip6 l4_4_bytes
Thomas Bogendoerfer 098df5
Patch-mainline: v6.1
Thomas Bogendoerfer 098df5
Git-commit: d64aaf3f7869f915fd120763d75f11d6b116424d
Thomas Bogendoerfer 098df5
References: git-fixes
Thomas Bogendoerfer 098df5
Thomas Bogendoerfer 098df5
Return -EOPNOTSUPP, when user requests l4_4_bytes for raw IP4 or
Thomas Bogendoerfer 098df5
IP6 flow director filters. Flow director does not support filtering
Thomas Bogendoerfer 098df5
on l4 bytes for PCTYPEs used by IP4 and IP6 filters.
Thomas Bogendoerfer 098df5
Without this patch, user could create filters with l4_4_bytes fields,
Thomas Bogendoerfer 098df5
which did not do any filtering on L4, but only on L3 fields.
Thomas Bogendoerfer 098df5
Thomas Bogendoerfer 098df5
Fixes: 36777d9fa24c ("i40e: check current configured input set when adding ntuple filters")
Thomas Bogendoerfer 098df5
Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
Thomas Bogendoerfer 098df5
Signed-off-by: Kamil Maziarz  <kamil.maziarz@intel.com>
Thomas Bogendoerfer 098df5
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Thomas Bogendoerfer 098df5
Tested-by: Gurucharan G <gurucharanx.g@intel.com> (A Contingent worker at Intel)
Thomas Bogendoerfer 098df5
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Thomas Bogendoerfer 098df5
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
Thomas Bogendoerfer 098df5
---
Thomas Bogendoerfer 098df5
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c |   12 ++----------
Thomas Bogendoerfer 098df5
 1 file changed, 2 insertions(+), 10 deletions(-)
Thomas Bogendoerfer 098df5
Thomas Bogendoerfer 098df5
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
Thomas Bogendoerfer 098df5
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
Thomas Bogendoerfer 098df5
@@ -4347,11 +4347,7 @@ static int i40e_check_fdir_input_set(str
Thomas Bogendoerfer 098df5
 			return -EOPNOTSUPP;
Thomas Bogendoerfer 098df5
 
Thomas Bogendoerfer 098df5
 		/* First 4 bytes of L4 header */
Thomas Bogendoerfer 098df5
-		if (usr_ip4_spec->l4_4_bytes == htonl(0xFFFFFFFF))
Thomas Bogendoerfer 098df5
-			new_mask |= I40E_L4_SRC_MASK | I40E_L4_DST_MASK;
Thomas Bogendoerfer 098df5
-		else if (!usr_ip4_spec->l4_4_bytes)
Thomas Bogendoerfer 098df5
-			new_mask &= ~(I40E_L4_SRC_MASK | I40E_L4_DST_MASK);
Thomas Bogendoerfer 098df5
-		else
Thomas Bogendoerfer 098df5
+		if (usr_ip4_spec->l4_4_bytes)
Thomas Bogendoerfer 098df5
 			return -EOPNOTSUPP;
Thomas Bogendoerfer 098df5
 
Thomas Bogendoerfer 098df5
 		/* Filtering on Type of Service is not supported. */
Thomas Bogendoerfer 098df5
@@ -4390,11 +4386,7 @@ static int i40e_check_fdir_input_set(str
Thomas Bogendoerfer 098df5
 		else
Thomas Bogendoerfer 098df5
 			return -EOPNOTSUPP;
Thomas Bogendoerfer 098df5
 
Thomas Bogendoerfer 098df5
-		if (usr_ip6_spec->l4_4_bytes == htonl(0xFFFFFFFF))
Thomas Bogendoerfer 098df5
-			new_mask |= I40E_L4_SRC_MASK | I40E_L4_DST_MASK;
Thomas Bogendoerfer 098df5
-		else if (!usr_ip6_spec->l4_4_bytes)
Thomas Bogendoerfer 098df5
-			new_mask &= ~(I40E_L4_SRC_MASK | I40E_L4_DST_MASK);
Thomas Bogendoerfer 098df5
-		else
Thomas Bogendoerfer 098df5
+		if (usr_ip6_spec->l4_4_bytes)
Thomas Bogendoerfer 098df5
 			return -EOPNOTSUPP;
Thomas Bogendoerfer 098df5
 
Thomas Bogendoerfer 098df5
 		/* Filtering on Traffic class is not supported. */