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.c:16: > ../drivers/net/bnx2x/bnx2x.c: In function ‘bnx2x_hc_ack_sb’: > ../drivers/net/bnx2x/bnx2x.h:1528:35: > warning: ‘igu_ack’ 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.h:1916:9: note: in expansion of macro ‘REG_WR’ > 1916 | REG_WR(sc, hc_addr, *val); > | ^~~~~~ > ../drivers/net/bnx2x/bnx2x.h:1905:33: note: ‘igu_ack’ declared here > 1905 | struct igu_ack_register igu_ack; > | ^~~~~~~ > > REG_WR32 requires 'uint32_t', use union instead of cast to 'uint32_t'. >
Bugzilla ID: 692 > Fixes: 38dff79ba736 ("net/bnx2x: update HSI") > Cc: sta...@dpdk.org > > Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com> Acked-by: Kevin Traynor <ktray...@redhat.com> > --- > Cc: rm...@marvell.com > Cc: Kevin Traynor <ktray...@redhat.com> > Cc: Ajit Khaparde <ajit.khapa...@broadcom.com> > --- > drivers/net/bnx2x/bnx2x.h | 13 +++++++------ > 1 file changed, 7 insertions(+), 6 deletions(-) > > diff --git a/drivers/net/bnx2x/bnx2x.h b/drivers/net/bnx2x/bnx2x.h > index e13ab1557418..80d19cbfd665 100644 > --- a/drivers/net/bnx2x/bnx2x.h > +++ b/drivers/net/bnx2x/bnx2x.h > @@ -1902,18 +1902,19 @@ bnx2x_hc_ack_sb(struct bnx2x_softc *sc, uint8_t > sb_id, uint8_t storm, > { > uint32_t hc_addr = (HC_REG_COMMAND_REG + SC_PORT(sc) * 32 + > COMMAND_REG_INT_ACK); > - struct igu_ack_register igu_ack; > - uint32_t *val = NULL; > + union { > + struct igu_ack_register igu_ack; > + uint32_t val; > + } val; > > - igu_ack.status_block_index = index; > - igu_ack.sb_id_and_flags = > + val.igu_ack.status_block_index = index; > + val.igu_ack.sb_id_and_flags = > ((sb_id << IGU_ACK_REGISTER_STATUS_BLOCK_ID_SHIFT) | > (storm << IGU_ACK_REGISTER_STORM_ID_SHIFT) | > (update << IGU_ACK_REGISTER_UPDATE_INDEX_SHIFT) | > (op << IGU_ACK_REGISTER_INTERRUPT_MODE_SHIFT)); > > - val = (uint32_t *)&igu_ack; > - REG_WR(sc, hc_addr, *val); > + REG_WR(sc, hc_addr, val.val); > > /* Make sure that ACK is written */ > mb(); >