2024-04-16 13:52:28

by Asbjørn Sloth Tønnesen

[permalink] [raw]
Subject: [PATCH net-next] sfc: use flow_rule_no_unsupp_control_flags()

Adopt nfp-style *_FLOWER_SUPPORTED_CTLFLAGS define.

Change the check for unsupported control flags, to use the new helper
flow_rule_is_supp_control_flags().

Since the helper was based on sfc, then nothing really changes.

Compile-tested, and compiled objects are identical.

Signed-off-by: Asbjørn Sloth Tønnesen <[email protected]>
---
drivers/net/ethernet/sfc/tc.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/sfc/tc.c b/drivers/net/ethernet/sfc/tc.c
index 82e8891a619a..5f73f1dea524 100644
--- a/drivers/net/ethernet/sfc/tc.c
+++ b/drivers/net/ethernet/sfc/tc.c
@@ -21,6 +21,10 @@
#include "ef100_rep.h"
#include "efx.h"

+#define SFC_FLOWER_SUPPORTED_CTLFLAGS \
+ (FLOW_DIS_IS_FRAGMENT | \
+ FLOW_DIS_FIRST_FRAG)
+
enum efx_encap_type efx_tc_indr_netdev_type(struct net_device *net_dev)
{
if (netif_is_vxlan(net_dev))
@@ -273,11 +277,9 @@ static int efx_tc_flower_parse_match(struct efx_nic *efx,
match->value.ip_firstfrag = fm.key->flags & FLOW_DIS_FIRST_FRAG;
match->mask.ip_firstfrag = true;
}
- if (fm.mask->flags & ~(FLOW_DIS_IS_FRAGMENT | FLOW_DIS_FIRST_FRAG)) {
- NL_SET_ERR_MSG_FMT_MOD(extack, "Unsupported match on control.flags %#x",
- fm.mask->flags);
+ if (!flow_rule_is_supp_control_flags(SFC_FLOWER_SUPPORTED_CTLFLAGS,
+ fm.mask->flags, extack))
return -EOPNOTSUPP;
- }
}
if (dissector->used_keys &
~(BIT_ULL(FLOW_DISSECTOR_KEY_CONTROL) |
--
2.43.0



2024-04-16 13:59:32

by Edward Cree

[permalink] [raw]
Subject: Re: [PATCH net-next] sfc: use flow_rule_no_unsupp_control_flags()

On 16/04/2024 14:44, Asbjørn Sloth Tønnesen wrote:
> Adopt nfp-style *_FLOWER_SUPPORTED_CTLFLAGS define.
>
> Change the check for unsupported control flags, to use the new helper
> flow_rule_is_supp_control_flags().
>
> Since the helper was based on sfc, then nothing really changes.
>
> Compile-tested, and compiled objects are identical.
>
> Signed-off-by: Asbjørn Sloth Tønnesen <[email protected]>

Subject line doesn't match the patch (I guess because the helper
got renamed).

> ---
> drivers/net/ethernet/sfc/tc.c | 10 ++++++----
> 1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/ethernet/sfc/tc.c b/drivers/net/ethernet/sfc/tc.c
> index 82e8891a619a..5f73f1dea524 100644
> --- a/drivers/net/ethernet/sfc/tc.c
> +++ b/drivers/net/ethernet/sfc/tc.c
> @@ -21,6 +21,10 @@
> #include "ef100_rep.h"
> #include "efx.h"
>
> +#define SFC_FLOWER_SUPPORTED_CTLFLAGS \
> + (FLOW_DIS_IS_FRAGMENT | \
> + FLOW_DIS_FIRST_FRAG)

I'd rather keep the flags in-line, next to where they're actually
used. I.e. we have
if (flags & FRAGMENT)
blah;
if (flags & FIRST_FRAG)
foo;
if (!blah_supported(FRAGMENT | FIRST_FRAG))
return -EEK;
and it's very clear that anyone changing one of those parts also
needs to change the other. Whereas with your #define it's not
immediately obvious to someone reading the code where that set
of supported flags comes from conceptually.

-ed

2024-04-16 14:33:24

by Asbjørn Sloth Tønnesen

[permalink] [raw]
Subject: Re: [PATCH net-next] sfc: use flow_rule_no_unsupp_control_flags()

Hi Ed,

On 4/16/24 1:57 PM, Edward Cree wrote:
> On 16/04/2024 14:44, Asbjørn Sloth Tønnesen wrote:
>> Adopt nfp-style *_FLOWER_SUPPORTED_CTLFLAGS define.
>>
>> Change the check for unsupported control flags, to use the new helper
>> flow_rule_is_supp_control_flags().
>>
>> Since the helper was based on sfc, then nothing really changes.
>>
>> Compile-tested, and compiled objects are identical.
>>
>> Signed-off-by: Asbjørn Sloth Tønnesen <[email protected]>
>
> Subject line doesn't match the patch (I guess because the helper
> got renamed).

Correct, through I had fixed it everywhere. Apparently I missed one.


>> ---
>> drivers/net/ethernet/sfc/tc.c | 10 ++++++----
>> 1 file changed, 6 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/net/ethernet/sfc/tc.c b/drivers/net/ethernet/sfc/tc.c
>> index 82e8891a619a..5f73f1dea524 100644
>> --- a/drivers/net/ethernet/sfc/tc.c
>> +++ b/drivers/net/ethernet/sfc/tc.c
>> @@ -21,6 +21,10 @@
>> #include "ef100_rep.h"
>> #include "efx.h"
>>
>> +#define SFC_FLOWER_SUPPORTED_CTLFLAGS \
>> + (FLOW_DIS_IS_FRAGMENT | \
>> + FLOW_DIS_FIRST_FRAG)
>
> I'd rather keep the flags in-line, next to where they're actually
> used. I.e. we have
> if (flags & FRAGMENT)
> blah;
> if (flags & FIRST_FRAG)
> foo;
> if (!blah_supported(FRAGMENT | FIRST_FRAG))
> return -EEK;
> and it's very clear that anyone changing one of those parts also
> needs to change the other. Whereas with your #define it's not
> immediately obvious to someone reading the code where that set
> of supported flags comes from conceptually.

Ok, I liked the NFP-style #define, but will drop trying to expand that.

pw-bot: changes-requested

--
Best regards
Asbjørn Sloth Tønnesen
Network Engineer
Fiberby - AS42541