netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [iwl-net v1 0/2] ice: two fixes for tc code
@ 2024-03-15 11:08 Michal Swiatkowski
  2024-03-15 11:08 ` [iwl-net v1 1/2] ice: tc: check src_vsi in case of traffic from VF Michal Swiatkowski
  2024-03-15 11:08 ` [iwl-net v1 2/2] ice: tc: allow zero flags in parsing tc flower Michal Swiatkowski
  0 siblings, 2 replies; 7+ messages in thread
From: Michal Swiatkowski @ 2024-03-15 11:08 UTC (permalink / raw)
  To: intel-wired-lan; +Cc: netdev, Michal Swiatkowski

Hi,

Fix how ice driver is parsing tc filter. First is a fix to always add
match for src_vsi in case filter is added on VF. Second is removing the
flag check as it isn't needed and in some case can lead to a problem.

Michal Swiatkowski (2):
  ice: tc: check src_vsi in case of traffic from VF
  ice: tc: allow zero flags in parsing tc flower

 drivers/net/ethernet/intel/ice/ice_tc_lib.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

-- 
2.42.0


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [iwl-net v1 1/2] ice: tc: check src_vsi in case of traffic from VF
  2024-03-15 11:08 [iwl-net v1 0/2] ice: two fixes for tc code Michal Swiatkowski
@ 2024-03-15 11:08 ` Michal Swiatkowski
  2024-03-19 11:36   ` Simon Horman
  2024-04-12  6:37   ` [Intel-wired-lan] " Buvaneswaran, Sujai
  2024-03-15 11:08 ` [iwl-net v1 2/2] ice: tc: allow zero flags in parsing tc flower Michal Swiatkowski
  1 sibling, 2 replies; 7+ messages in thread
From: Michal Swiatkowski @ 2024-03-15 11:08 UTC (permalink / raw)
  To: intel-wired-lan
  Cc: netdev, Michal Swiatkowski, Jedrzej Jagielski, Sridhar Samudrala

In case of traffic going from the VF (so ingress for port representor)
source VSI should be consider during packet classification. It is
needed for hardware to not match packets from different ports with
filters added on other port.

It is only for "from VF" traffic, because other traffic direction
doesn't have source VSI.

Set correct ::src_vsi in rule_info to pass it to the hardware filter.

For example this rule should drop only ipv4 packets from eth10, not from
the others VF PRs. It is needed to check source VSI in this case.
$tc filter add dev eth10 ingress protocol ip flower skip_sw action drop

Fixes: 0d08a441fb1a ("ice: ndo_setup_tc implementation for PF")
Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Reviewed-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
---
 drivers/net/ethernet/intel/ice/ice_tc_lib.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.c b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
index 47f28cd576c6..a8c686ecd1a0 100644
--- a/drivers/net/ethernet/intel/ice/ice_tc_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
@@ -28,6 +28,8 @@ ice_tc_count_lkups(u32 flags, struct ice_tc_flower_lyr_2_4_hdrs *headers,
 	 * - ICE_TC_FLWR_FIELD_VLAN_TPID (present if specified)
 	 * - Tunnel flag (present if tunnel)
 	 */
+	if (fltr->direction == ICE_ESWITCH_FLTR_EGRESS)
+		lkups_cnt++;
 
 	if (flags & ICE_TC_FLWR_FIELD_TENANT_ID)
 		lkups_cnt++;
@@ -363,6 +365,11 @@ ice_tc_fill_rules(struct ice_hw *hw, u32 flags,
 	/* Always add direction metadata */
 	ice_rule_add_direction_metadata(&list[ICE_TC_METADATA_LKUP_IDX]);
 
+	if (tc_fltr->direction == ICE_ESWITCH_FLTR_EGRESS) {
+		ice_rule_add_src_vsi_metadata(&list[i]);
+		i++;
+	}
+
 	rule_info->tun_type = ice_sw_type_from_tunnel(tc_fltr->tunnel_type);
 	if (tc_fltr->tunnel_type != TNL_LAST) {
 		i = ice_tc_fill_tunnel_outer(flags, tc_fltr, list, i);
@@ -820,6 +827,7 @@ ice_eswitch_add_tc_fltr(struct ice_vsi *vsi, struct ice_tc_flower_fltr *fltr)
 
 	/* specify the cookie as filter_rule_id */
 	rule_info.fltr_rule_id = fltr->cookie;
+	rule_info.src_vsi = vsi->idx;
 
 	ret = ice_add_adv_rule(hw, list, lkups_cnt, &rule_info, &rule_added);
 	if (ret == -EEXIST) {
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [iwl-net v1 2/2] ice: tc: allow zero flags in parsing tc flower
  2024-03-15 11:08 [iwl-net v1 0/2] ice: two fixes for tc code Michal Swiatkowski
  2024-03-15 11:08 ` [iwl-net v1 1/2] ice: tc: check src_vsi in case of traffic from VF Michal Swiatkowski
@ 2024-03-15 11:08 ` Michal Swiatkowski
  2024-03-19 11:36   ` Simon Horman
  2024-04-12  6:38   ` [Intel-wired-lan] " Buvaneswaran, Sujai
  1 sibling, 2 replies; 7+ messages in thread
From: Michal Swiatkowski @ 2024-03-15 11:08 UTC (permalink / raw)
  To: intel-wired-lan; +Cc: netdev, Michal Swiatkowski, Wojciech Drewek

The check for flags is done to not pass empty lookups to adding switch
rule functions. Since metadata is always added to lookups there is no
need to check against the flag.

It is also fixing the problem with such rule:
$ tc filter add dev gtp_dev ingress protocol ip prio 0 flower \
	enc_dst_port 2123 action drop
Switch block in case of GTP can't parse the destination port, because it
should always be set to GTP specific value. The same with ethertype. The
result is that there is no other matching criteria than GTP tunnel. In
this case flags is 0, rule can't be added only because of defensive
check against flags.

Fixes: 9a225f81f540 ("ice: Support GTP-U and GTP-C offload in switchdev")
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
---
 drivers/net/ethernet/intel/ice/ice_tc_lib.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.c b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
index a8c686ecd1a0..f8df93e1a9de 100644
--- a/drivers/net/ethernet/intel/ice/ice_tc_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
@@ -779,7 +779,7 @@ ice_eswitch_add_tc_fltr(struct ice_vsi *vsi, struct ice_tc_flower_fltr *fltr)
 	int ret;
 	int i;
 
-	if (!flags || (flags & ICE_TC_FLWR_FIELD_ENC_SRC_L4_PORT)) {
+	if (flags & ICE_TC_FLWR_FIELD_ENC_SRC_L4_PORT) {
 		NL_SET_ERR_MSG_MOD(fltr->extack, "Unsupported encap field(s)");
 		return -EOPNOTSUPP;
 	}
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [iwl-net v1 2/2] ice: tc: allow zero flags in parsing tc flower
  2024-03-15 11:08 ` [iwl-net v1 2/2] ice: tc: allow zero flags in parsing tc flower Michal Swiatkowski
@ 2024-03-19 11:36   ` Simon Horman
  2024-04-12  6:38   ` [Intel-wired-lan] " Buvaneswaran, Sujai
  1 sibling, 0 replies; 7+ messages in thread
From: Simon Horman @ 2024-03-19 11:36 UTC (permalink / raw)
  To: Michal Swiatkowski; +Cc: intel-wired-lan, netdev, Wojciech Drewek

On Fri, Mar 15, 2024 at 12:08:21PM +0100, Michal Swiatkowski wrote:
> The check for flags is done to not pass empty lookups to adding switch
> rule functions. Since metadata is always added to lookups there is no
> need to check against the flag.
> 
> It is also fixing the problem with such rule:
> $ tc filter add dev gtp_dev ingress protocol ip prio 0 flower \
> 	enc_dst_port 2123 action drop
> Switch block in case of GTP can't parse the destination port, because it
> should always be set to GTP specific value. The same with ethertype. The
> result is that there is no other matching criteria than GTP tunnel. In
> this case flags is 0, rule can't be added only because of defensive
> check against flags.
> 
> Fixes: 9a225f81f540 ("ice: Support GTP-U and GTP-C offload in switchdev")
> Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
> Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>

Reviewed-by: Simon Horman <horms@kernel.org>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [iwl-net v1 1/2] ice: tc: check src_vsi in case of traffic from VF
  2024-03-15 11:08 ` [iwl-net v1 1/2] ice: tc: check src_vsi in case of traffic from VF Michal Swiatkowski
@ 2024-03-19 11:36   ` Simon Horman
  2024-04-12  6:37   ` [Intel-wired-lan] " Buvaneswaran, Sujai
  1 sibling, 0 replies; 7+ messages in thread
From: Simon Horman @ 2024-03-19 11:36 UTC (permalink / raw)
  To: Michal Swiatkowski
  Cc: intel-wired-lan, netdev, Jedrzej Jagielski, Sridhar Samudrala

On Fri, Mar 15, 2024 at 12:08:20PM +0100, Michal Swiatkowski wrote:
> In case of traffic going from the VF (so ingress for port representor)
> source VSI should be consider during packet classification. It is
> needed for hardware to not match packets from different ports with
> filters added on other port.
> 
> It is only for "from VF" traffic, because other traffic direction
> doesn't have source VSI.
> 
> Set correct ::src_vsi in rule_info to pass it to the hardware filter.
> 
> For example this rule should drop only ipv4 packets from eth10, not from
> the others VF PRs. It is needed to check source VSI in this case.
> $tc filter add dev eth10 ingress protocol ip flower skip_sw action drop
> 
> Fixes: 0d08a441fb1a ("ice: ndo_setup_tc implementation for PF")
> Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
> Reviewed-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
> Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>

Reviewed-by: Simon Horman <horms@kernel.org>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [Intel-wired-lan] [iwl-net v1 1/2] ice: tc: check src_vsi in case of traffic from VF
  2024-03-15 11:08 ` [iwl-net v1 1/2] ice: tc: check src_vsi in case of traffic from VF Michal Swiatkowski
  2024-03-19 11:36   ` Simon Horman
@ 2024-04-12  6:37   ` Buvaneswaran, Sujai
  1 sibling, 0 replies; 7+ messages in thread
From: Buvaneswaran, Sujai @ 2024-04-12  6:37 UTC (permalink / raw)
  To: Michal Swiatkowski, intel-wired-lan
  Cc: Samudrala, Sridhar, netdev, Jagielski, Jedrzej

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Michal Swiatkowski
> Sent: Friday, March 15, 2024 4:38 PM
> To: intel-wired-lan@lists.osuosl.org
> Cc: Samudrala, Sridhar <sridhar.samudrala@intel.com>;
> netdev@vger.kernel.org; Jagielski, Jedrzej <jedrzej.jagielski@intel.com>;
> Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
> Subject: [Intel-wired-lan] [iwl-net v1 1/2] ice: tc: check src_vsi in case of traffic
> from VF
> 
> In case of traffic going from the VF (so ingress for port representor) source
> VSI should be consider during packet classification. It is needed for hardware
> to not match packets from different ports with filters added on other port.
> 
> It is only for "from VF" traffic, because other traffic direction doesn't have
> source VSI.
> 
> Set correct ::src_vsi in rule_info to pass it to the hardware filter.
> 
> For example this rule should drop only ipv4 packets from eth10, not from the
> others VF PRs. It is needed to check source VSI in this case.
> $tc filter add dev eth10 ingress protocol ip flower skip_sw action drop
> 
> Fixes: 0d08a441fb1a ("ice: ndo_setup_tc implementation for PF")
> Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
> Reviewed-by: Sridhar Samudrala <sridhar.samudrala@intel.com>
> Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_tc_lib.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
Tested-by: Sujai Buvaneswaran <sujai.buvaneswaran@intel.com>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: [Intel-wired-lan] [iwl-net v1 2/2] ice: tc: allow zero flags in parsing tc flower
  2024-03-15 11:08 ` [iwl-net v1 2/2] ice: tc: allow zero flags in parsing tc flower Michal Swiatkowski
  2024-03-19 11:36   ` Simon Horman
@ 2024-04-12  6:38   ` Buvaneswaran, Sujai
  1 sibling, 0 replies; 7+ messages in thread
From: Buvaneswaran, Sujai @ 2024-04-12  6:38 UTC (permalink / raw)
  To: Michal Swiatkowski, intel-wired-lan; +Cc: netdev, Drewek, Wojciech

> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Michal Swiatkowski
> Sent: Friday, March 15, 2024 4:38 PM
> To: intel-wired-lan@lists.osuosl.org
> Cc: netdev@vger.kernel.org; Drewek, Wojciech
> <wojciech.drewek@intel.com>; Michal Swiatkowski
> <michal.swiatkowski@linux.intel.com>
> Subject: [Intel-wired-lan] [iwl-net v1 2/2] ice: tc: allow zero flags in parsing tc
> flower
> 
> The check for flags is done to not pass empty lookups to adding switch rule
> functions. Since metadata is always added to lookups there is no need to
> check against the flag.
> 
> It is also fixing the problem with such rule:
> $ tc filter add dev gtp_dev ingress protocol ip prio 0 flower \
> 	enc_dst_port 2123 action drop
> Switch block in case of GTP can't parse the destination port, because it
> should always be set to GTP specific value. The same with ethertype. The
> result is that there is no other matching criteria than GTP tunnel. In this case
> flags is 0, rule can't be added only because of defensive check against flags.
> 
> Fixes: 9a225f81f540 ("ice: Support GTP-U and GTP-C offload in switchdev")
> Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
> Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
> ---
>  drivers/net/ethernet/intel/ice/ice_tc_lib.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
Tested-by: Sujai Buvaneswaran <sujai.buvaneswaran@intel.com>

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-04-12  6:38 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-03-15 11:08 [iwl-net v1 0/2] ice: two fixes for tc code Michal Swiatkowski
2024-03-15 11:08 ` [iwl-net v1 1/2] ice: tc: check src_vsi in case of traffic from VF Michal Swiatkowski
2024-03-19 11:36   ` Simon Horman
2024-04-12  6:37   ` [Intel-wired-lan] " Buvaneswaran, Sujai
2024-03-15 11:08 ` [iwl-net v1 2/2] ice: tc: allow zero flags in parsing tc flower Michal Swiatkowski
2024-03-19 11:36   ` Simon Horman
2024-04-12  6:38   ` [Intel-wired-lan] " Buvaneswaran, Sujai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).