rtase: Modify the condition used to detect overflow in rtase_calc_time_mitigation
authorJustin Lai <justinlai0215@realtek.com>
Thu, 24 Apr 2025 04:04:44 +0000 (12:04 +0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 26 Apr 2025 01:59:42 +0000 (18:59 -0700)
Fix the following compile error reported by the kernel test
robot by modifying the condition used to detect overflow in
rtase_calc_time_mitigation.

In file included from include/linux/mdio.h:10:0,
                  from drivers/net/ethernet/realtek/rtase/rtase_main.c:58:
 In function 'u16_encode_bits',
     inlined from 'rtase_calc_time_mitigation.constprop' at drivers/net/
     ethernet/realtek/rtase/rtase_main.c:1915:13,
     inlined from 'rtase_init_software_variable.isra.41' at drivers/net/
     ethernet/realtek/rtase/rtase_main.c:1961:13,
     inlined from 'rtase_init_one' at drivers/net/ethernet/realtek/
     rtase/rtase_main.c:2111:2:
>> include/linux/bitfield.h:178:3: error: call to '__field_overflow'
      declared with attribute error: value doesn't fit into mask
    __field_overflow();     \
    ^~~~~~~~~~~~~~~~~~
 include/linux/bitfield.h:198:2: note: in expansion of macro
 '____MAKE_OP'
   ____MAKE_OP(u##size,u##size,,)
   ^~~~~~~~~~~
 include/linux/bitfield.h:200:1: note: in expansion of macro
 '__MAKE_OP'
  __MAKE_OP(16)
  ^~~~~~~~~

Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202503182158.nkAlbJWX-lkp@intel.com/
Fixes: a36e9f5cfe9e ("rtase: Add support for a pci table in this module")
Signed-off-by: Justin Lai <justinlai0215@realtek.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20250424040444.5530-1-justinlai0215@realtek.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/realtek/rtase/rtase_main.c

index 2aacc1996796db97700ca6ac0db445862e697fb7..55b8d36661530cc147a2e2c37adf3ec5a0e77e12 100644 (file)
@@ -1925,8 +1925,8 @@ static u16 rtase_calc_time_mitigation(u32 time_us)
 
        time_us = min_t(int, time_us, RTASE_MITI_MAX_TIME);
 
-       msb = fls(time_us);
-       if (msb >= RTASE_MITI_COUNT_BIT_NUM) {
+       if (time_us > RTASE_MITI_TIME_COUNT_MASK) {
+               msb = fls(time_us);
                time_unit = msb - RTASE_MITI_COUNT_BIT_NUM;
                time_count = time_us >> (msb - RTASE_MITI_COUNT_BIT_NUM);
        } else {