[dpdk-stable] [PATCH v2 1/4] net/bnx2x: fix build with gcc11
Kevin Traynor
ktraynor at redhat.com
Tue May 11 14:26:32 CEST 2021
On 11/05/2021 12:44, Ferruh Yigit wrote:
> Reproduced with '--buildtype=debugoptimized' config,
> compiler version: gcc (GCC) 12.0.0 20210509 (experimental)
>
> Build error:
> In file included from ../drivers/net/bnx2x/bnx2x_rxtx.c:8:
> ../drivers/net/bnx2x/bnx2x_rxtx.c: In function ‘bnx2x_upd_rx_prod_fast’:
> ../drivers/net/bnx2x/bnx2x.h:1528:35:
> warning: ‘rx_prods’ is used uninitialized [-Wuninitialized]
> #define REG_WR32(sc, offset, val) bnx2x_reg_write32(sc, (offset), val)
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> ../drivers/net/bnx2x/bnx2x.h:1531:33:
> note: in expansion of macro ‘REG_WR32’
> 1531 | #define REG_WR(sc, offset, val) REG_WR32(sc, offset, val)
> | ^~~~~~~~
> ../drivers/net/bnx2x/bnx2x_rxtx.c:331:9:
> note: in expansion of macro ‘REG_WR’
> 331 | REG_WR(sc, fp->ustorm_rx_prods_offset, val[0]);
> | ^~~~~~
> ../drivers/net/bnx2x/bnx2x_rxtx.c:324:40: note: ‘rx_prods’ declared here
> 324 | struct ustorm_eth_rx_producers rx_prods = { 0 };
> | ^~~~~~~~
>
> REG_WR32 requires 'uint32_t', use union instead of cast to 'uint32_t'.
>
Bugzilla ID: 692
> Fixes: 38dff79ba736 ("net/bnx2x: update HSI")
> Cc: stable at dpdk.org
>
> Signed-off-by: Ferruh Yigit <ferruh.yigit at intel.com>
Acked-by: Kevin Traynor <ktraynor at redhat.com>
> ---
> Cc: rmody at marvell.com
> Cc: Kevin Traynor <ktraynor at redhat.com>
> Cc: Ajit Khaparde <ajit.khaparde at broadcom.com>
>
> v2:
> * fix struct initialization as '{0}' -> '{{0}}'
(I won't be surprised if some compiler in the ci complains, but ok on
F34, gcc 11.1.1 and RHEL8.3, gcc 8.3.1)
> ---
> drivers/net/bnx2x/bnx2x_rxtx.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/bnx2x/bnx2x_rxtx.c b/drivers/net/bnx2x/bnx2x_rxtx.c
> index 57e2ce504587..2b1760229051 100644
> --- a/drivers/net/bnx2x/bnx2x_rxtx.c
> +++ b/drivers/net/bnx2x/bnx2x_rxtx.c
> @@ -321,14 +321,15 @@ static inline void
> bnx2x_upd_rx_prod_fast(struct bnx2x_softc *sc, struct bnx2x_fastpath *fp,
> uint16_t rx_bd_prod, uint16_t rx_cq_prod)
> {
> - struct ustorm_eth_rx_producers rx_prods = { 0 };
> - uint32_t *val = NULL;
> + union {
> + struct ustorm_eth_rx_producers rx_prods;
> + uint32_t val;
> + } val = { {0} };
>
> - rx_prods.bd_prod = rx_bd_prod;
> - rx_prods.cqe_prod = rx_cq_prod;
> + val.rx_prods.bd_prod = rx_bd_prod;
> + val.rx_prods.cqe_prod = rx_cq_prod;
>
> - val = (uint32_t *)&rx_prods;
> - REG_WR(sc, fp->ustorm_rx_prods_offset, val[0]);
> + REG_WR(sc, fp->ustorm_rx_prods_offset, val.val);
> }
>
> static uint16_t
>
More information about the stable
mailing list