Message ID | 20240416144331.15336-1-ast@fiberby.net (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [iwl-next] ice: flower: validate control flags | expand |
On Tue, Apr 16, 2024 at 02:43:30PM +0000, Asbjørn Sloth Tønnesen wrote: > This driver currently doesn't support any control flags. > > Use flow_rule_has_control_flags() to check for control flags, > such as can be set through `tc flower ... ip_flags frag`. > > In case any control flags are masked, flow_rule_has_control_flags() > sets a NL extended error message, and we return -EOPNOTSUPP. > > Only compile-tested. > > Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net> > --- > drivers/net/ethernet/intel/ice/ice_tc_lib.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.c b/drivers/net/ethernet/intel/ice/ice_tc_lib.c > index 2f2fce285ecd..361abd7d7561 100644 > --- a/drivers/net/ethernet/intel/ice/ice_tc_lib.c > +++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.c > @@ -1673,6 +1673,10 @@ ice_parse_cls_flower(struct net_device *filter_dev, struct ice_vsi *vsi, > flow_rule_match_control(rule, &match); > > addr_type = match.key->addr_type; > + > + if (flow_rule_has_control_flags(match.mask->flags, > + fltr->extack)) > + return -EOPNOTSUPP; > } > Thanks, Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> > if (addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS) { > -- > 2.43.0 >
On Tue, Apr 16, 2024 at 02:43:30PM +0000, Asbjørn Sloth Tønnesen wrote: > This driver currently doesn't support any control flags. > > Use flow_rule_has_control_flags() to check for control flags, > such as can be set through `tc flower ... ip_flags frag`. > > In case any control flags are masked, flow_rule_has_control_flags() > sets a NL extended error message, and we return -EOPNOTSUPP. > > Only compile-tested. > > Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net> Reviewed-by: Simon Horman <horms@kernel.org>
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of > Asbjørn Sloth Tønnesen > Sent: Tuesday, April 16, 2024 8:14 PM > To: intel-wired-lan@lists.osuosl.org > Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org; Eric Dumazet > <edumazet@google.com>; Nguyen, Anthony L > <anthony.l.nguyen@intel.com>; Asbjørn Sloth Tønnesen <ast@fiberby.net>; > Jakub Kicinski <kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; > David S. Miller <davem@davemloft.net> > Subject: [Intel-wired-lan] [PATCH iwl-next] ice: flower: validate control flags > > This driver currently doesn't support any control flags. > > Use flow_rule_has_control_flags() to check for control flags, such as can be > set through `tc flower ... ip_flags frag`. > > In case any control flags are masked, flow_rule_has_control_flags() sets a NL > extended error message, and we return -EOPNOTSUPP. > > Only compile-tested. > > Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net> > --- > drivers/net/ethernet/intel/ice/ice_tc_lib.c | 4 ++++ > 1 file changed, 4 insertions(+) > Hi, I have tested this patch in upstream kernel - 6.9.0-rc5+ and observing no effect while adding tc flow rule with control flags. 'Not supported' error is not shown while adding the below tc rule. [root@cbl-mariner ~]# tc qdisc add dev ens5f0np0 ingress [root@cbl-mariner ~]# [root@cbl-mariner ~]# tc filter add dev ens5f0np0 ingress protocol ip flower ip_flags frag/firstfrag action drop [root@cbl-mariner ~]# [root@cbl-mariner ~]# ethtool -i ens5f0np0 driver: ice version: 6.9.0-rc5+ firmware-version: 4.40 0x8001c967 1.3534.0 expansion-rom-version: bus-info: 0000:b1:00.0 supports-statistics: yes supports-test: yes supports-eeprom-access: yes supports-register-dump: yes supports-priv-flags: yes Same behavior is observed with iavf driver on VF as well. Regards, Sujai B
Hi Sujai, On 5/3/24 5:57 AM, Buvaneswaran, Sujai wrote: >> -----Original Message----- >> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of >> Asbjørn Sloth Tønnesen >> Sent: Tuesday, April 16, 2024 8:14 PM >> To: intel-wired-lan@lists.osuosl.org >> Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org; Eric Dumazet >> <edumazet@google.com>; Nguyen, Anthony L >> <anthony.l.nguyen@intel.com>; Asbjørn Sloth Tønnesen <ast@fiberby.net>; >> Jakub Kicinski <kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; >> David S. Miller <davem@davemloft.net> >> Subject: [Intel-wired-lan] [PATCH iwl-next] ice: flower: validate control flags >> >> This driver currently doesn't support any control flags. >> >> Use flow_rule_has_control_flags() to check for control flags, such as can be >> set through `tc flower ... ip_flags frag`. >> >> In case any control flags are masked, flow_rule_has_control_flags() sets a NL >> extended error message, and we return -EOPNOTSUPP. >> >> Only compile-tested. >> >> Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net> >> --- >> drivers/net/ethernet/intel/ice/ice_tc_lib.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> > > Hi, > > I have tested this patch in upstream kernel - 6.9.0-rc5+ and observing no effect while adding tc flow rule with control flags. > 'Not supported' error is not shown while adding the below tc rule. > > [root@cbl-mariner ~]# tc qdisc add dev ens5f0np0 ingress > [root@cbl-mariner ~]# > [root@cbl-mariner ~]# tc filter add dev ens5f0np0 ingress protocol ip flower ip_flags frag/firstfrag action drop Thank you for testing! I think the issue you are observing, is because you are missing "skip_sw": tc filter add dev ens5f0np0 ingress protocol ip flower skip_sw \ ip_flags frag/firstfrag action drop Without skip_sw, then the hardware offload is opportunistic, and therefore the error in hardware offloading doesn't bubble through to user space. Without skip_sw, you should still be able to observe a change in `tc filter show dev ens5f0np0 ingress`. Without the patch you should see "in_hw", and with it you should see "not_in_hw". With skip_sw, then the error in hardware offloading causes the tc command to fail, with the -EOPNOTSUPP error and associated extended Netlink error message. Also see Ido's testing for mlxsw in this other thread: https://lore.kernel.org/netdev/ZiABPNMbOOYGiHCq@shredder/#t
Hi Asbjørn, Thanks for providing more information about this patch. We were able to test this patch with 'skip_sw' parameter on ice PF interface. It is working as expected. Error is displayed when tc rule added with control flags. [root@cbl-mariner ~]# tc filter add dev ens5f0np0 ingress protocol ip flower skip_sw ip_flags frag/firstfrag action drop Error: ice: Unsupported match on control.flags 0x3. We have an error talking to the kernel Without this patch, this rule is getting installed in the HW. Regards, Sujai B > -----Original Message----- > From: Asbjørn Sloth Tønnesen <ast@fiberby.net> > Sent: Friday, May 3, 2024 11:38 PM > To: Buvaneswaran, Sujai <sujai.buvaneswaran@intel.com> > Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org; Eric Dumazet > <edumazet@google.com>; Nguyen, Anthony L > <anthony.l.nguyen@intel.com>; Jakub Kicinski <kuba@kernel.org>; Paolo > Abeni <pabeni@redhat.com>; David S. Miller <davem@davemloft.net>; > intel-wired-lan@lists.osuosl.org > Subject: Re: [Intel-wired-lan] [PATCH iwl-next] ice: flower: validate control > flags > > Hi Sujai, > > On 5/3/24 5:57 AM, Buvaneswaran, Sujai wrote: > >> -----Original Message----- > >> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf > >> Of Asbjørn Sloth Tønnesen > >> Sent: Tuesday, April 16, 2024 8:14 PM > >> To: intel-wired-lan@lists.osuosl.org > >> Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org; Eric > >> Dumazet <edumazet@google.com>; Nguyen, Anthony L > >> <anthony.l.nguyen@intel.com>; Asbjørn Sloth Tønnesen > >> <ast@fiberby.net>; Jakub Kicinski <kuba@kernel.org>; Paolo Abeni > >> <pabeni@redhat.com>; David S. Miller <davem@davemloft.net> > >> Subject: [Intel-wired-lan] [PATCH iwl-next] ice: flower: validate > >> control flags > >> > >> This driver currently doesn't support any control flags. > >> > >> Use flow_rule_has_control_flags() to check for control flags, such as > >> can be set through `tc flower ... ip_flags frag`. > >> > >> In case any control flags are masked, flow_rule_has_control_flags() > >> sets a NL extended error message, and we return -EOPNOTSUPP. > >> > >> Only compile-tested. > >> > >> Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net> > >> --- > >> drivers/net/ethernet/intel/ice/ice_tc_lib.c | 4 ++++ > >> 1 file changed, 4 insertions(+) > >> > > > > Hi, > > > > I have tested this patch in upstream kernel - 6.9.0-rc5+ and observing no > effect while adding tc flow rule with control flags. > > 'Not supported' error is not shown while adding the below tc rule. > > > > [root@cbl-mariner ~]# tc qdisc add dev ens5f0np0 ingress > > [root@cbl-mariner ~]# [root@cbl-mariner ~]# tc filter add dev > > ens5f0np0 ingress protocol ip flower ip_flags frag/firstfrag action > > drop > > Thank you for testing! > > I think the issue you are observing, is because you are missing "skip_sw": > tc filter add dev ens5f0np0 ingress protocol ip flower skip_sw \ > ip_flags frag/firstfrag action drop > > Without skip_sw, then the hardware offload is opportunistic, and therefore > the error in hardware offloading doesn't bubble through to user space. > > Without skip_sw, you should still be able to observe a change in `tc filter > show dev ens5f0np0 ingress`. Without the patch you should see "in_hw", > and with it you should see "not_in_hw". > > With skip_sw, then the error in hardware offloading causes the tc command > to fail, with the -EOPNOTSUPP error and associated extended Netlink error > message. > > Also see Ido's testing for mlxsw in this other thread: > https://lore.kernel.org/netdev/ZiABPNMbOOYGiHCq@shredder/#t > > -- > Best regards > Asbjørn Sloth Tønnesen > Network Engineer > Fiberby - AS42541
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of > Asbjørn Sloth Tønnesen > Sent: Tuesday, April 16, 2024 8:14 PM > To: intel-wired-lan@lists.osuosl.org > Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org; Eric Dumazet > <edumazet@google.com>; Nguyen, Anthony L > <anthony.l.nguyen@intel.com>; Asbjørn Sloth Tønnesen <ast@fiberby.net>; > Jakub Kicinski <kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; > David S. Miller <davem@davemloft.net> > Subject: [Intel-wired-lan] [PATCH iwl-next] ice: flower: validate control flags > > This driver currently doesn't support any control flags. > > Use flow_rule_has_control_flags() to check for control flags, such as can be > set through `tc flower ... ip_flags frag`. > > In case any control flags are masked, flow_rule_has_control_flags() sets a NL > extended error message, and we return -EOPNOTSUPP. > > Only compile-tested. > > Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net> > --- > drivers/net/ethernet/intel/ice/ice_tc_lib.c | 4 ++++ > 1 file changed, 4 insertions(+) > Tested-by: Sujai Buvaneswaran <sujai.buvaneswaran@intel.com>
diff --git a/drivers/net/ethernet/intel/ice/ice_tc_lib.c b/drivers/net/ethernet/intel/ice/ice_tc_lib.c index 2f2fce285ecd..361abd7d7561 100644 --- a/drivers/net/ethernet/intel/ice/ice_tc_lib.c +++ b/drivers/net/ethernet/intel/ice/ice_tc_lib.c @@ -1673,6 +1673,10 @@ ice_parse_cls_flower(struct net_device *filter_dev, struct ice_vsi *vsi, flow_rule_match_control(rule, &match); addr_type = match.key->addr_type; + + if (flow_rule_has_control_flags(match.mask->flags, + fltr->extack)) + return -EOPNOTSUPP; } if (addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS) {
This driver currently doesn't support any control flags. Use flow_rule_has_control_flags() to check for control flags, such as can be set through `tc flower ... ip_flags frag`. In case any control flags are masked, flow_rule_has_control_flags() sets a NL extended error message, and we return -EOPNOTSUPP. Only compile-tested. Signed-off-by: Asbjørn Sloth Tønnesen <ast@fiberby.net> --- drivers/net/ethernet/intel/ice/ice_tc_lib.c | 4 ++++ 1 file changed, 4 insertions(+)