2024-01-03 10:23:59

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] bnxt: fix building without CONFIG_RFS_ACCEL

From: Arnd Bergmann <[email protected]>

A recent patch series generalized the filter logic in bnxt to no
longer just be used for RFS, but it now fails to build when RFS_ACCEL
is disabled:

drivers/net/ethernet/broadcom/bnxt/bnxt.c: In function 'bnxt_cfg_ntp_filters':
drivers/net/ethernet/broadcom/bnxt/bnxt.c:14077:37: error: implicit declaration of function 'rps_may_expire_flow' [-Werror=implicit-function-declaration]
14077 | if (rps_may_expire_flow(bp->dev, fltr->base.rxq,
| ^~~~~~~~~~~~~~~~~~~

Add back one #ifdef check around a call to the missing rps_may_expire_flow()
function.

Fixes: 59cde76f33fa ("bnxt_en: Refactor filter insertion logic in bnxt_rx_flow_steer().")
Cc: Michael Chan <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
---
I don't know if this is a correct fix, only checked that it is plausible
and that it does address the build failure. If a different fix is needed,
please just treat this as a bug report.
---
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 ++
1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
index 827821e89c40..83a97c65b728 100644
--- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
+++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
@@ -14074,6 +14074,7 @@ static void bnxt_cfg_ntp_filters(struct bnxt *bp)
if (test_bit(BNXT_FLTR_VALID, &fltr->base.state)) {
if (fltr->base.flags & BNXT_ACT_NO_AGING)
continue;
+#if IS_ENABLED(CONFIG_RFS_ACCEL)
if (rps_may_expire_flow(bp->dev, fltr->base.rxq,
fltr->flow_id,
fltr->base.sw_id)) {
@@ -14081,6 +14082,7 @@ static void bnxt_cfg_ntp_filters(struct bnxt *bp)
fltr);
del = true;
}
+#endif
} else {
rc = bnxt_hwrm_cfa_ntuple_filter_alloc(bp,
fltr);
--
2.39.2



2024-01-03 15:46:43

by Andy Gospodarek

[permalink] [raw]
Subject: Re: [PATCH] bnxt: fix building without CONFIG_RFS_ACCEL

On Wed, Jan 03, 2024 at 11:23:11AM +0100, Arnd Bergmann wrote:
> From: Arnd Bergmann <[email protected]>
>
> A recent patch series generalized the filter logic in bnxt to no
> longer just be used for RFS, but it now fails to build when RFS_ACCEL
> is disabled:
>
> drivers/net/ethernet/broadcom/bnxt/bnxt.c: In function 'bnxt_cfg_ntp_filters':
> drivers/net/ethernet/broadcom/bnxt/bnxt.c:14077:37: error: implicit declaration of function 'rps_may_expire_flow' [-Werror=implicit-function-declaration]
> 14077 | if (rps_may_expire_flow(bp->dev, fltr->base.rxq,
> | ^~~~~~~~~~~~~~~~~~~
>
> Add back one #ifdef check around a call to the missing rps_may_expire_flow()
> function.
>
> Fixes: 59cde76f33fa ("bnxt_en: Refactor filter insertion logic in bnxt_rx_flow_steer().")
> Cc: Michael Chan <[email protected]>
> Signed-off-by: Arnd Bergmann <[email protected]>
> ---
> I don't know if this is a correct fix, only checked that it is plausible
> and that it does address the build failure. If a different fix is needed,
> please just treat this as a bug report.

Are you using a kernel config with CONFIG_SMP=n ? That was how I was
able to reproduce this.

There is a good oppportunity to clean this up a little better. When
CONFIG_RFS_ACCEL is not set there is no reason to even have
bnxt_cfg_ntp_filters included in the driver build.

I'll talk to Michael and we will post a fix for this.

> ---
> drivers/net/ethernet/broadcom/bnxt/bnxt.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> index 827821e89c40..83a97c65b728 100644
> --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c
> @@ -14074,6 +14074,7 @@ static void bnxt_cfg_ntp_filters(struct bnxt *bp)
> if (test_bit(BNXT_FLTR_VALID, &fltr->base.state)) {
> if (fltr->base.flags & BNXT_ACT_NO_AGING)
> continue;
> +#if IS_ENABLED(CONFIG_RFS_ACCEL)
> if (rps_may_expire_flow(bp->dev, fltr->base.rxq,
> fltr->flow_id,
> fltr->base.sw_id)) {
> @@ -14081,6 +14082,7 @@ static void bnxt_cfg_ntp_filters(struct bnxt *bp)
> fltr);
> del = true;
> }
> +#endif
> } else {
> rc = bnxt_hwrm_cfa_ntuple_filter_alloc(bp,
> fltr);
> --
> 2.39.2
>

2024-01-03 16:03:27

by Arnd Bergmann

[permalink] [raw]
Subject: Re: [PATCH] bnxt: fix building without CONFIG_RFS_ACCEL

On Wed, Jan 3, 2024, at 16:46, Andy Gospodarek wrote:
> On Wed, Jan 03, 2024 at 11:23:11AM +0100, Arnd Bergmann wrote:
>> From: Arnd Bergmann <[email protected]>
>>
>> A recent patch series generalized the filter logic in bnxt to no
>> longer just be used for RFS, but it now fails to build when RFS_ACCEL
>> is disabled:
>>
>> drivers/net/ethernet/broadcom/bnxt/bnxt.c: In function 'bnxt_cfg_ntp_filters':
>> drivers/net/ethernet/broadcom/bnxt/bnxt.c:14077:37: error: implicit declaration of function 'rps_may_expire_flow' [-Werror=implicit-function-declaration]
>> 14077 | if (rps_may_expire_flow(bp->dev, fltr->base.rxq,
>> | ^~~~~~~~~~~~~~~~~~~
>>
>> Add back one #ifdef check around a call to the missing rps_may_expire_flow()
>> function.
>>
>> Fixes: 59cde76f33fa ("bnxt_en: Refactor filter insertion logic in bnxt_rx_flow_steer().")
>> Cc: Michael Chan <[email protected]>
>> Signed-off-by: Arnd Bergmann <[email protected]>
>> ---
>> I don't know if this is a correct fix, only checked that it is plausible
>> and that it does address the build failure. If a different fix is needed,
>> please just treat this as a bug report.
>
> Are you using a kernel config with CONFIG_SMP=n ? That was how I was
> able to reproduce this.

I saw this in two randconfig test builds on 32-bit arm, both with
SMP disabled, though I did not expect that to make a difference.

In case it helps, this is one of the two config files:
https://pastebin.com/raw/uxHEXzG2

> There is a good oppportunity to clean this up a little better. When
> CONFIG_RFS_ACCEL is not set there is no reason to even have
> bnxt_cfg_ntp_filters included in the driver build.
>
> I'll talk to Michael and we will post a fix for this.

Ok, thanks!

Arnd

2024-01-03 16:57:25

by Michael Chan

[permalink] [raw]
Subject: Re: [PATCH] bnxt: fix building without CONFIG_RFS_ACCEL

On Wed, Jan 3, 2024 at 8:01 AM Arnd Bergmann <[email protected]> wrote:
>
> On Wed, Jan 3, 2024, at 16:46, Andy Gospodarek wrote:
> > There is a good oppportunity to clean this up a little better. When
> > CONFIG_RFS_ACCEL is not set there is no reason to even have
> > bnxt_cfg_ntp_filters included in the driver build.
> >
> > I'll talk to Michael and we will post a fix for this.
>
> Ok, thanks!

Yes, we can clean this up better. User configured ntuple filters are
directly added and don't go through bnxt_cfg_ntp_filters() by way of
the workqueue. I'll post the fix later today. Thanks.


Attachments:
smime.p7s (4.11 kB)
S/MIME Cryptographic Signature