* [iwl-next v2 0/2] ice: extend tc flower offload
@ 2024-02-22 12:39 Michal Swiatkowski
2024-02-22 12:39 ` [iwl-next v2 1/2] ice: tc: check src_vsi in case of traffic from VF Michal Swiatkowski
2024-02-22 12:39 ` [iwl-next v2 2/2] ice: tc: allow ip_proto matching Michal Swiatkowski
0 siblings, 2 replies; 9+ messages in thread
From: Michal Swiatkowski @ 2024-02-22 12:39 UTC (permalink / raw)
To: intel-wired-lan
Cc: netdev, marcin.szycik, sridhar.samudrala, wojciech.drewek,
pmenzel, Michal Swiatkowski
Extend hardware support for tc flower to match ip_proto field (patch 2)
and source VSI metadata when the packets are sent from VF (patch 1).
v1 --> v2: [1]
* fix commit message, add more examples
[1] https://lore.kernel.org/netdev/20240220105950.6814-1-michal.swiatkowski@linux.intel.com/
Michal Swiatkowski (2):
ice: tc: check src_vsi in case of traffic from VF
ice: tc: allow ip_proto matching
drivers/net/ethernet/intel/ice/ice_tc_lib.c | 25 +++++++++++++++++++--
drivers/net/ethernet/intel/ice/ice_tc_lib.h | 1 +
2 files changed, 24 insertions(+), 2 deletions(-)
--
2.42.0
^ permalink raw reply [flat|nested] 9+ messages in thread
* [iwl-next v2 1/2] ice: tc: check src_vsi in case of traffic from VF
2024-02-22 12:39 [iwl-next v2 0/2] ice: extend tc flower offload Michal Swiatkowski
@ 2024-02-22 12:39 ` Michal Swiatkowski
2024-02-26 13:34 ` Simon Horman
2024-03-08 7:39 ` [Intel-wired-lan] " Buvaneswaran, Sujai
2024-02-22 12:39 ` [iwl-next v2 2/2] ice: tc: allow ip_proto matching Michal Swiatkowski
1 sibling, 2 replies; 9+ messages in thread
From: Michal Swiatkowski @ 2024-02-22 12:39 UTC (permalink / raw)
To: intel-wired-lan
Cc: netdev, marcin.szycik, sridhar.samudrala, wojciech.drewek,
pmenzel, Michal Swiatkowski, Jedrzej Jagielski
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
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 b890410a2bc0..49ed5fd7db10 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] 9+ messages in thread
* [iwl-next v2 2/2] ice: tc: allow ip_proto matching
2024-02-22 12:39 [iwl-next v2 0/2] ice: extend tc flower offload Michal Swiatkowski
2024-02-22 12:39 ` [iwl-next v2 1/2] ice: tc: check src_vsi in case of traffic from VF Michal Swiatkowski
@ 2024-02-22 12:39 ` Michal Swiatkowski
2024-02-26 13:33 ` Simon Horman
` (2 more replies)
1 sibling, 3 replies; 9+ messages in thread
From: Michal Swiatkowski @ 2024-02-22 12:39 UTC (permalink / raw)
To: intel-wired-lan
Cc: netdev, marcin.szycik, sridhar.samudrala, wojciech.drewek,
pmenzel, Michal Swiatkowski, Jedrzej Jagielski
Add new matching type for ip_proto.
Use it in the same lookup type as for TTL. In hardware it has the same
protocol ID, but different offset.
Example command to add filter with ip_proto:
$tc filter add dev eth10 ingress protocol ip flower ip_proto icmp \
skip_sw action mirred egress redirect dev eth0
Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
---
drivers/net/ethernet/intel/ice/ice_tc_lib.c | 17 +++++++++++++++--
drivers/net/ethernet/intel/ice/ice_tc_lib.h | 1 +
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.c b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
index 49ed5fd7db10..f7c0f62fb730 100644
--- a/drivers/net/ethernet/intel/ice/ice_tc_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
@@ -78,7 +78,8 @@ ice_tc_count_lkups(u32 flags, struct ice_tc_flower_lyr_2_4_hdrs *headers,
ICE_TC_FLWR_FIELD_DEST_IPV6 | ICE_TC_FLWR_FIELD_SRC_IPV6))
lkups_cnt++;
- if (flags & (ICE_TC_FLWR_FIELD_IP_TOS | ICE_TC_FLWR_FIELD_IP_TTL))
+ if (flags & (ICE_TC_FLWR_FIELD_IP_TOS | ICE_TC_FLWR_FIELD_IP_TTL |
+ ICE_TC_FLWR_FIELD_IP_PROTO))
lkups_cnt++;
/* are L2TPv3 options specified? */
@@ -530,7 +531,8 @@ ice_tc_fill_rules(struct ice_hw *hw, u32 flags,
}
if (headers->l2_key.n_proto == htons(ETH_P_IP) &&
- (flags & (ICE_TC_FLWR_FIELD_IP_TOS | ICE_TC_FLWR_FIELD_IP_TTL))) {
+ (flags & (ICE_TC_FLWR_FIELD_IP_TOS | ICE_TC_FLWR_FIELD_IP_TTL |
+ ICE_TC_FLWR_FIELD_IP_PROTO))) {
list[i].type = ice_proto_type_from_ipv4(inner);
if (flags & ICE_TC_FLWR_FIELD_IP_TOS) {
@@ -545,6 +547,13 @@ ice_tc_fill_rules(struct ice_hw *hw, u32 flags,
headers->l3_mask.ttl;
}
+ if (flags & ICE_TC_FLWR_FIELD_IP_PROTO) {
+ list[i].h_u.ipv4_hdr.protocol =
+ headers->l3_key.ip_proto;
+ list[i].m_u.ipv4_hdr.protocol =
+ headers->l3_mask.ip_proto;
+ }
+
i++;
}
@@ -1515,7 +1524,11 @@ ice_parse_cls_flower(struct net_device *filter_dev, struct ice_vsi *vsi,
headers->l2_key.n_proto = cpu_to_be16(n_proto_key);
headers->l2_mask.n_proto = cpu_to_be16(n_proto_mask);
+
+ if (match.key->ip_proto)
+ fltr->flags |= ICE_TC_FLWR_FIELD_IP_PROTO;
headers->l3_key.ip_proto = match.key->ip_proto;
+ headers->l3_mask.ip_proto = match.mask->ip_proto;
}
if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.h b/drivers/net/ethernet/intel/ice/ice_tc_lib.h
index 65d387163a46..856f371d0687 100644
--- a/drivers/net/ethernet/intel/ice/ice_tc_lib.h
+++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.h
@@ -34,6 +34,7 @@
#define ICE_TC_FLWR_FIELD_VLAN_PRIO BIT(27)
#define ICE_TC_FLWR_FIELD_CVLAN_PRIO BIT(28)
#define ICE_TC_FLWR_FIELD_VLAN_TPID BIT(29)
+#define ICE_TC_FLWR_FIELD_IP_PROTO BIT(30)
#define ICE_TC_FLOWER_MASK_32 0xFFFFFFFF
--
2.42.0
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [iwl-next v2 2/2] ice: tc: allow ip_proto matching
2024-02-22 12:39 ` [iwl-next v2 2/2] ice: tc: allow ip_proto matching Michal Swiatkowski
@ 2024-02-26 13:33 ` Simon Horman
2024-03-08 7:40 ` [Intel-wired-lan] " Buvaneswaran, Sujai
2024-03-14 11:03 ` Michal Swiatkowski
2 siblings, 0 replies; 9+ messages in thread
From: Simon Horman @ 2024-02-26 13:33 UTC (permalink / raw)
To: Michal Swiatkowski
Cc: intel-wired-lan, netdev, marcin.szycik, sridhar.samudrala,
wojciech.drewek, pmenzel, Jedrzej Jagielski
On Thu, Feb 22, 2024 at 01:39:56PM +0100, Michal Swiatkowski wrote:
> Add new matching type for ip_proto.
>
> Use it in the same lookup type as for TTL. In hardware it has the same
> protocol ID, but different offset.
>
> Example command to add filter with ip_proto:
> $tc filter add dev eth10 ingress protocol ip flower ip_proto icmp \
> skip_sw action mirred egress redirect dev eth0
>
> Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
> Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [iwl-next v2 1/2] ice: tc: check src_vsi in case of traffic from VF
2024-02-22 12:39 ` [iwl-next v2 1/2] ice: tc: check src_vsi in case of traffic from VF Michal Swiatkowski
@ 2024-02-26 13:34 ` Simon Horman
2024-03-14 10:59 ` Michal Swiatkowski
2024-03-08 7:39 ` [Intel-wired-lan] " Buvaneswaran, Sujai
1 sibling, 1 reply; 9+ messages in thread
From: Simon Horman @ 2024-02-26 13:34 UTC (permalink / raw)
To: Michal Swiatkowski
Cc: intel-wired-lan, netdev, marcin.szycik, sridhar.samudrala,
wojciech.drewek, pmenzel, Jedrzej Jagielski
On Thu, Feb 22, 2024 at 01:39:55PM +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
>
> 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>
Hi Michal,
Should this be treated as a fix: have a Fixes tag; be targeted at 'iwl'?
That notwithstanding, this look good to me.
Reviewed-by: Simon Horman <horms@kernel.org>
...
^ permalink raw reply [flat|nested] 9+ messages in thread
* RE: [Intel-wired-lan] [iwl-next v2 1/2] ice: tc: check src_vsi in case of traffic from VF
2024-02-22 12:39 ` [iwl-next v2 1/2] ice: tc: check src_vsi in case of traffic from VF Michal Swiatkowski
2024-02-26 13:34 ` Simon Horman
@ 2024-03-08 7:39 ` Buvaneswaran, Sujai
1 sibling, 0 replies; 9+ messages in thread
From: Buvaneswaran, Sujai @ 2024-03-08 7:39 UTC (permalink / raw)
To: Michal Swiatkowski, intel-wired-lan@lists.osuosl.org
Cc: pmenzel@molgen.mpg.de, Drewek, Wojciech, Szycik, Marcin,
netdev@vger.kernel.org, Jagielski, Jedrzej, Samudrala, Sridhar
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Michal Swiatkowski
> Sent: Thursday, February 22, 2024 6:10 PM
> To: intel-wired-lan@lists.osuosl.org
> Cc: pmenzel@molgen.mpg.de; Drewek, Wojciech
> <wojciech.drewek@intel.com>; Szycik, Marcin <marcin.szycik@intel.com>;
> netdev@vger.kernel.org; Jagielski, Jedrzej <jedrzej.jagielski@intel.com>;
> Samudrala, Sridhar <sridhar.samudrala@intel.com>; Michal Swiatkowski
> <michal.swiatkowski@linux.intel.com>
> Subject: [Intel-wired-lan] [iwl-next v2 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
>
> 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] 9+ messages in thread
* RE: [Intel-wired-lan] [iwl-next v2 2/2] ice: tc: allow ip_proto matching
2024-02-22 12:39 ` [iwl-next v2 2/2] ice: tc: allow ip_proto matching Michal Swiatkowski
2024-02-26 13:33 ` Simon Horman
@ 2024-03-08 7:40 ` Buvaneswaran, Sujai
2024-03-14 11:03 ` Michal Swiatkowski
2 siblings, 0 replies; 9+ messages in thread
From: Buvaneswaran, Sujai @ 2024-03-08 7:40 UTC (permalink / raw)
To: Michal Swiatkowski, intel-wired-lan@lists.osuosl.org
Cc: pmenzel@molgen.mpg.de, Drewek, Wojciech, Szycik, Marcin,
netdev@vger.kernel.org, Jagielski, Jedrzej, Samudrala, Sridhar
> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Michal Swiatkowski
> Sent: Thursday, February 22, 2024 6:10 PM
> To: intel-wired-lan@lists.osuosl.org
> Cc: pmenzel@molgen.mpg.de; Drewek, Wojciech
> <wojciech.drewek@intel.com>; Szycik, Marcin <marcin.szycik@intel.com>;
> netdev@vger.kernel.org; Jagielski, Jedrzej <jedrzej.jagielski@intel.com>;
> Samudrala, Sridhar <sridhar.samudrala@intel.com>; Michal Swiatkowski
> <michal.swiatkowski@linux.intel.com>
> Subject: [Intel-wired-lan] [iwl-next v2 2/2] ice: tc: allow ip_proto matching
>
> Add new matching type for ip_proto.
>
> Use it in the same lookup type as for TTL. In hardware it has the same
> protocol ID, but different offset.
>
> Example command to add filter with ip_proto:
> $tc filter add dev eth10 ingress protocol ip flower ip_proto icmp \ skip_sw
> action mirred egress redirect dev eth0
>
> Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
> Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
> ---
> drivers/net/ethernet/intel/ice/ice_tc_lib.c | 17 +++++++++++++++--
> drivers/net/ethernet/intel/ice/ice_tc_lib.h | 1 +
> 2 files changed, 16 insertions(+), 2 deletions(-)
>
Tested-by: Sujai Buvaneswaran <sujai.buvaneswaran@intel.com>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [iwl-next v2 1/2] ice: tc: check src_vsi in case of traffic from VF
2024-02-26 13:34 ` Simon Horman
@ 2024-03-14 10:59 ` Michal Swiatkowski
0 siblings, 0 replies; 9+ messages in thread
From: Michal Swiatkowski @ 2024-03-14 10:59 UTC (permalink / raw)
To: Simon Horman
Cc: intel-wired-lan, netdev, marcin.szycik, sridhar.samudrala,
wojciech.drewek, pmenzel, Jedrzej Jagielski
On Mon, Feb 26, 2024 at 01:34:48PM +0000, Simon Horman wrote:
> On Thu, Feb 22, 2024 at 01:39:55PM +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
> >
> > 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>
>
> Hi Michal,
>
> Should this be treated as a fix: have a Fixes tag; be targeted at 'iwl'?
>
> That notwithstanding, this look good to me.
>
> Reviewed-by: Simon Horman <horms@kernel.org>
>
> ...
Thanks Simon, you are right, it will go to net with correct fixes tag.
Thanks,
Michal
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [iwl-next v2 2/2] ice: tc: allow ip_proto matching
2024-02-22 12:39 ` [iwl-next v2 2/2] ice: tc: allow ip_proto matching Michal Swiatkowski
2024-02-26 13:33 ` Simon Horman
2024-03-08 7:40 ` [Intel-wired-lan] " Buvaneswaran, Sujai
@ 2024-03-14 11:03 ` Michal Swiatkowski
2 siblings, 0 replies; 9+ messages in thread
From: Michal Swiatkowski @ 2024-03-14 11:03 UTC (permalink / raw)
To: intel-wired-lan
Cc: netdev, marcin.szycik, sridhar.samudrala, wojciech.drewek,
pmenzel, Jedrzej Jagielski
On Thu, Feb 22, 2024 at 01:39:56PM +0100, Michal Swiatkowski wrote:
> Add new matching type for ip_proto.
>
> Use it in the same lookup type as for TTL. In hardware it has the same
> protocol ID, but different offset.
>
> Example command to add filter with ip_proto:
> $tc filter add dev eth10 ingress protocol ip flower ip_proto icmp \
> skip_sw action mirred egress redirect dev eth0
>
> Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
> Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
> ---
> drivers/net/ethernet/intel/ice/ice_tc_lib.c | 17 +++++++++++++++--
> drivers/net/ethernet/intel/ice/ice_tc_lib.h | 1 +
> 2 files changed, 16 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.c b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
> index 49ed5fd7db10..f7c0f62fb730 100644
> --- a/drivers/net/ethernet/intel/ice/ice_tc_lib.c
> +++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.c
> @@ -78,7 +78,8 @@ ice_tc_count_lkups(u32 flags, struct ice_tc_flower_lyr_2_4_hdrs *headers,
> ICE_TC_FLWR_FIELD_DEST_IPV6 | ICE_TC_FLWR_FIELD_SRC_IPV6))
> lkups_cnt++;
>
> - if (flags & (ICE_TC_FLWR_FIELD_IP_TOS | ICE_TC_FLWR_FIELD_IP_TTL))
> + if (flags & (ICE_TC_FLWR_FIELD_IP_TOS | ICE_TC_FLWR_FIELD_IP_TTL |
> + ICE_TC_FLWR_FIELD_IP_PROTO))
> lkups_cnt++;
There is an issue here. In case of ipv6 it shouldn't be count as there is no
support for next header in ipv6.
Example command to reproduce the problem:
tc filter add dev eth0 ingress protocol ipv6 prio 103 flower skip_sw \
dst_mac fa:16:3e:13:e9:a1 ip_proto udp src_port 547 dst_port 546 \
dst_ip fe80::/64 action drop
Filter won't be added because of mismatch between filled and counted
lookups.
I will send v3 with fix.
Thanks,
Michal
>
> /* are L2TPv3 options specified? */
> @@ -530,7 +531,8 @@ ice_tc_fill_rules(struct ice_hw *hw, u32 flags,
> }
>
> if (headers->l2_key.n_proto == htons(ETH_P_IP) &&
> - (flags & (ICE_TC_FLWR_FIELD_IP_TOS | ICE_TC_FLWR_FIELD_IP_TTL))) {
> + (flags & (ICE_TC_FLWR_FIELD_IP_TOS | ICE_TC_FLWR_FIELD_IP_TTL |
> + ICE_TC_FLWR_FIELD_IP_PROTO))) {
> list[i].type = ice_proto_type_from_ipv4(inner);
>
> if (flags & ICE_TC_FLWR_FIELD_IP_TOS) {
> @@ -545,6 +547,13 @@ ice_tc_fill_rules(struct ice_hw *hw, u32 flags,
> headers->l3_mask.ttl;
> }
>
> + if (flags & ICE_TC_FLWR_FIELD_IP_PROTO) {
> + list[i].h_u.ipv4_hdr.protocol =
> + headers->l3_key.ip_proto;
> + list[i].m_u.ipv4_hdr.protocol =
> + headers->l3_mask.ip_proto;
> + }
> +
> i++;
> }
>
> @@ -1515,7 +1524,11 @@ ice_parse_cls_flower(struct net_device *filter_dev, struct ice_vsi *vsi,
>
> headers->l2_key.n_proto = cpu_to_be16(n_proto_key);
> headers->l2_mask.n_proto = cpu_to_be16(n_proto_mask);
> +
> + if (match.key->ip_proto)
> + fltr->flags |= ICE_TC_FLWR_FIELD_IP_PROTO;
> headers->l3_key.ip_proto = match.key->ip_proto;
> + headers->l3_mask.ip_proto = match.mask->ip_proto;
> }
>
> if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_ETH_ADDRS)) {
> diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.h b/drivers/net/ethernet/intel/ice/ice_tc_lib.h
> index 65d387163a46..856f371d0687 100644
> --- a/drivers/net/ethernet/intel/ice/ice_tc_lib.h
> +++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.h
> @@ -34,6 +34,7 @@
> #define ICE_TC_FLWR_FIELD_VLAN_PRIO BIT(27)
> #define ICE_TC_FLWR_FIELD_CVLAN_PRIO BIT(28)
> #define ICE_TC_FLWR_FIELD_VLAN_TPID BIT(29)
> +#define ICE_TC_FLWR_FIELD_IP_PROTO BIT(30)
>
> #define ICE_TC_FLOWER_MASK_32 0xFFFFFFFF
>
> --
> 2.42.0
>
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2024-03-14 11:03 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-22 12:39 [iwl-next v2 0/2] ice: extend tc flower offload Michal Swiatkowski
2024-02-22 12:39 ` [iwl-next v2 1/2] ice: tc: check src_vsi in case of traffic from VF Michal Swiatkowski
2024-02-26 13:34 ` Simon Horman
2024-03-14 10:59 ` Michal Swiatkowski
2024-03-08 7:39 ` [Intel-wired-lan] " Buvaneswaran, Sujai
2024-02-22 12:39 ` [iwl-next v2 2/2] ice: tc: allow ip_proto matching Michal Swiatkowski
2024-02-26 13:33 ` Simon Horman
2024-03-08 7:40 ` [Intel-wired-lan] " Buvaneswaran, Sujai
2024-03-14 11:03 ` Michal Swiatkowski
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).