Dear Jakub, All these warning lines share a similar semantics: delay_val |= FIELD_PREP(xxx, !!val); and, should come from the expansion of FIELD_PREP in include/linux/bitfiled.h: FIELD _PREP --> __BF_FILED_CHECK --> "~((_mask) >> __bf_shf(_mask)) & (_val) : 0," =============================================================== __BF_FILED_CHECK { ... BUILD_BUG_ON_MSG(__builtin_constant_p(_val) ? \ ~((_mask) >> __bf_shf(_mask)) & (_val) : 0, \ _pfx "value too large for the field"); \ ... =============================================================== Should I fix it by converting delay_val |= FIELD_PREP(ETH_DLY_TXC_ENABLE, !!mac_delay->tx_delay); to en_val = !!mac_delay->tx_delay; delay_val |= FIELD_PREP(ETH_DLY_TXC_ENABLE, !!en_val); or other suggestions for these warnings? Thanks~ On Wed, 2021-12-08 at 06:38 -0800, Jakub Kicinski wrote: > On Wed, 8 Dec 2021 13:47:15 +0800 Biao Huang wrote: > > Add Ethernet support for MediaTek SoCs from the mt8195 family. > > > > Signed-off-by: Biao Huang <biao.huang@xxxxxxxxxxxx> > > Acked-by: AngeloGioacchino Del Regno < > > angelogioacchino.delregno@xxxxxxxxxxxxx> > > sparse reports whole bunch of warnings like this: > > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:213:30: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:217:30: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:228:38: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:232:38: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:247:46: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:255:46: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:273:30: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:277:30: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:375:30: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:379:30: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:390:43: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:397:43: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:415:46: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:426:46: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:439:35: warning: > dubious: x & !y > drivers/net/ethernet/stmicro/stmmac/dwmac-mediatek.c:443:30: warning: > dubious: x & !y > > Any idea on where these come from?