Linux-mediatek Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Eason Lai <eason.lai@mediatek.com>, nbd@nbd.name, lorenzo@kernel.org
Cc: oe-kbuild-all@lists.linux.dev, linux-wireless@vger.kernel.org,
	linux-mediatek@lists.infradead.org, kun.wu@mediatek.com,
	deren.wu@mediatek.com, sean.wang@mediatek.com,
	quan.zhou@mediatek.com, ryder.lee@mediatek.com,
	leon.yen@mediatek.com, litien.chang@mediatek.com,
	jb.tsai@mediatek.com, michael.shih@mediatek.com,
	eason.lai@mediatek.com
Subject: Re: [PATCH v1] wifi: mt76: mt7928: Add debugfs for stats to provide debug purpose
Date: Tue, 25 Aug 2026 12:00:30 +0800	[thread overview]
Message-ID: <202608251101.iQGUrSd0-lkp@intel.com> (raw)
In-Reply-To: <20260824030746.60706-1-eason.lai@mediatek.com>

Hi Eason,

kernel test robot noticed the following build errors:

[auto build test ERROR on wireless-next/main]
[also build test ERROR on linus/master next-20260821]
[cannot apply to wireless/main v7.2]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Eason-Lai/wifi-mt76-mt7928-Add-debugfs-for-stats-to-provide-debug-purpose/20260824-110746
base:   https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git main
patch link:    https://lore.kernel.org/r/20260824030746.60706-1-eason.lai%40mediatek.com
patch subject: [PATCH v1] wifi: mt76: mt7928: Add debugfs for stats to provide debug purpose
config: nios2-allmodconfig (https://download.01.org/0day-ci/archive/20260825/202608251101.iQGUrSd0-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260825/202608251101.iQGUrSd0-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202608251101.iQGUrSd0-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_fixedrate_set':
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:312:16: error: variable 'rate' has initializer but incomplete type
     312 |         struct mt7925_ra_fixed_rate_v1 rate = {};
         |                ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:312:40: error: storage size of 'rate' isn't known
     312 |         struct mt7925_ra_fixed_rate_v1 rate = {};
         |                                        ^~~~
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:314:12: error: 'struct mt792x_dev' has no member named 'fixed_rate'
     314 |         dev->fixed_rate = val;
         |            ^~
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:329:9: error: implicit declaration of function 'mt7925_mcu_set_fixed_rate'; did you mean 'mt7925_mcu_get_rx_rate'? [-Werror=implicit-function-declaration]
     329 |         mt7925_mcu_set_fixed_rate(dev, &rate);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~~
         |         mt7925_mcu_get_rx_rate
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:312:40: warning: unused variable 'rate' [-Wunused-variable]
     312 |         struct mt7925_ra_fixed_rate_v1 rate = {};
         |                                        ^~~~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_fixedrate_get':
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:340:19: error: 'struct mt792x_dev' has no member named 'fixed_rate'
     340 |         *val = dev->fixed_rate;
         |                   ^~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_autorate_set':
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:364:12: error: 'struct mt792x_dev' has no member named 'auto_rate'
     364 |         dev->auto_rate = val;
         |            ^~
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:367:9: error: implicit declaration of function 'mt7925_mcu_set_auto_rate'; did you mean 'mt7925_mcu_get_rx_rate'? [-Werror=implicit-function-declaration]
     367 |         mt7925_mcu_set_auto_rate(dev, wlan_idx, enable, mode);
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
         |         mt7925_mcu_get_rx_rate
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_autorate_get':
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:378:19: error: 'struct mt792x_dev' has no member named 'auto_rate'
     378 |         *val = dev->auto_rate;
         |                   ^~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_wtbl_idx_set':
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:400:12: error: 'struct mt792x_dev' has no member named 'wtbl_dump_idx'
     400 |         dev->wtbl_dump_idx = (u32)val;
         |            ^~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_wtbl_idx_get':
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:410:19: error: 'struct mt792x_dev' has no member named 'wtbl_dump_idx'
     410 |         *val = dev->wtbl_dump_idx;
         |                   ^~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_wtbl_read':
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:422:22: error: 'struct mt792x_dev' has no member named 'wtbl_dump_idx'
     422 |         u32 idx = dev->wtbl_dump_idx;
         |                      ^~
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:443:16: error: implicit declaration of function 'mt7925_mac_wtbl_lmac_addr'; did you mean 'mt7925_mac_wtbl_update'? [-Werror=implicit-function-declaration]
     443 |         base = mt7925_mac_wtbl_lmac_addr(dev, idx, 0);
         |                ^~~~~~~~~~~~~~~~~~~~~~~~~
         |                mt7925_mac_wtbl_update
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_vefuse_read':
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:474:23: error: 'struct mt792x_dev' has no member named 'vefuse_cap'
     474 |         u16 size = dev->vefuse_cap.size;
         |                       ^~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:479:17: error: 'struct mt792x_dev' has no member named 'vefuse_cap'
     479 |         if (!dev->vefuse_cap.present || !size) {
         |                 ^~
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:492:23: error: implicit declaration of function 'mt7925_mcu_read_vefuse'; did you mean 'mt7925_mcu_del_dev'? [-Werror=implicit-function-declaration]
     492 |                 ret = mt7925_mcu_read_vefuse(dev, off, chunk, buf + off);
         |                       ^~~~~~~~~~~~~~~~~~~~~~
         |                       mt7925_mcu_del_dev
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_perf_ind_set':
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:520:16: error: implicit declaration of function 'mt792x_perf_ind_trigger'; did you mean 'mt7925_perf_ind_set'? [-Werror=implicit-function-declaration]
     520 |         return mt792x_perf_ind_trigger(dev, val);
         |                ^~~~~~~~~~~~~~~~~~~~~~~
         |                mt7925_perf_ind_set
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_perf_ind_enable_get':
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:529:19: error: 'struct mt792x_dev' has no member named 'perf'
     529 |         *val = dev->perf.enabled;
         |                   ^~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_perf_ind_enable_set':
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:538:12: error: 'struct mt792x_dev' has no member named 'perf'
     538 |         dev->perf.enabled = !!val;
         |            ^~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_coex_info':
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:555:15: error: implicit declaration of function 'mt7925_mcu_chip_config_query'; did you mean 'mt7925_mcu_chip_config'? [-Werror=implicit-function-declaration]
     555 |         ret = mt7925_mcu_chip_config_query(dev, "coexBwcGetModeInfo 0",
         |               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
         |               mt7925_mcu_chip_config
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:564:31: error: 'CHIP_CONFIG_TYPE_ASCII' undeclared (first use in this function)
     564 |         else if (resp_type == CHIP_CONFIG_TYPE_ASCII)
         |                               ^~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:564:31: note: each undeclared identifier is reported only once for each function it appears in
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c: In function 'mt7925_dmashdl_read':
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:603:45: warning: format '%x' expects argument of type 'unsigned int', but argument 3 has type 'long unsigned int' [-Wformat=]
     603 |         seq_printf(s, "\t\tPLE pkt max=0x%03x, PSE pkt max=0x%03x\n",
         |                                          ~~~^
         |                                             |
         |                                             unsigned int
         |                                          %03lx
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:603:65: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'long unsigned int' [-Wformat=]
     603 |         seq_printf(s, "\t\tPLE pkt max=0x%03x, PSE pkt max=0x%03x\n",
         |                                                              ~~~^
         |                                                                 |
         |                                                                 unsigned int
         |                                                              %03lx
   In file included from drivers/net/wireless/mediatek/mt76/mt7925/../mt76_connac.h:7,
                    from drivers/net/wireless/mediatek/mt76/mt7925/../mt76_connac_mcu.h:7,
                    from drivers/net/wireless/mediatek/mt76/mt7925/../mt792x.h:10,
                    from drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h:7,
                    from drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:4:
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:607:28: error: 'MT_DMASHDL_ERROR_FLAG_CTRL' undeclared (first use in this function)
     607 |         val = mt76_rr(dev, MT_DMASHDL_ERROR_FLAG_CTRL);
         |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/mediatek/mt76/mt7925/../mt76.h:1196:69: note: in definition of macro 'mt76_rr'
    1196 | #define mt76_rr(dev, ...)       (dev)->mt76.bus->rr(&((dev)->mt76), __VA_ARGS__)
         |                                                                     ^~~~~~~~~~~
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:613:43: error: implicit declaration of function 'MT_DMASHDL_STATUS_RD_GP' [-Werror=implicit-function-declaration]
     613 |                 u32 status = mt76_rr(dev, MT_DMASHDL_STATUS_RD_GP(i));
         |                                           ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/mediatek/mt76/mt7925/../mt76.h:1196:69: note: in definition of macro 'mt76_rr'
    1196 | #define mt76_rr(dev, ...)       (dev)->mt76.bus->rr(&((dev)->mt76), __VA_ARGS__)
         |                                                                     ^~~~~~~~~~~
   In file included from <command-line>:
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:614:37: error: 'MT_DMASHDL_STATUS_RD_GP_RSV' undeclared (first use in this function)
     614 |                 u32 rsv = FIELD_GET(MT_DMASHDL_STATUS_RD_GP_RSV, status);
         |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:682:23: note: in definition of macro '__compiletime_assert'
     682 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert'
     702 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:40:37: note: in expansion of macro 'compiletime_assert'
      40 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |         ^~~~~~~~~~~~~~~~
   include/linux/bitfield.h:63:43: note: in expansion of macro '__unsigned_scalar_typeof'
      63 | #define __bf_cast_unsigned(type, x)     ((__unsigned_scalar_typeof(type))(x))
         |                                           ^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:26: note: in expansion of macro '__bf_cast_unsigned'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |                          ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:177:17: note: in expansion of macro '__BF_FIELD_CHECK_REG'
     177 |                 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: ");       \
         |                 ^~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:614:27: note: in expansion of macro 'FIELD_GET'
     614 |                 u32 rsv = FIELD_GET(MT_DMASHDL_STATUS_RD_GP_RSV, status);
         |                           ^~~~~~~~~
>> drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:615:37: error: 'MT_DMASHDL_STATUS_RD_GP_SRC' undeclared (first use in this function)
     615 |                 u32 src = FIELD_GET(MT_DMASHDL_STATUS_RD_GP_SRC, status);
         |                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:682:23: note: in definition of macro '__compiletime_assert'
     682 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert'
     702 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:40:37: note: in expansion of macro 'compiletime_assert'
      40 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |         ^~~~~~~~~~~~~~~~
   include/linux/bitfield.h:63:43: note: in expansion of macro '__unsigned_scalar_typeof'
      63 | #define __bf_cast_unsigned(type, x)     ((__unsigned_scalar_typeof(type))(x))
         |                                           ^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:26: note: in expansion of macro '__bf_cast_unsigned'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |                          ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:177:17: note: in expansion of macro '__BF_FIELD_CHECK_REG'
     177 |                 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: ");       \
         |                 ^~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:615:27: note: in expansion of macro 'FIELD_GET'
     615 |                 u32 src = FIELD_GET(MT_DMASHDL_STATUS_RD_GP_SRC, status);
         |                           ^~~~~~~~~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:617:65: warning: format '%x' expects argument of type 'unsigned int', but argument 4 has type 'long unsigned int' [-Wformat=]
     617 |                 seq_printf(s, "\tGroup %2d: quota(min/max)=0x%03x/0x%03x, used/rsv=0x%03x/0x%03x\n",
         |                                                              ~~~^
         |                                                                 |
         |                                                                 unsigned int
         |                                                              %03lx
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:617:72: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'long unsigned int' [-Wformat=]
     617 |                 seq_printf(s, "\tGroup %2d: quota(min/max)=0x%03x/0x%03x, used/rsv=0x%03x/0x%03x\n",
         |                                                                     ~~~^
         |                                                                        |
         |                                                                        unsigned int
         |                                                                     %03lx
   In file included from drivers/net/wireless/mediatek/mt76/mt7925/../mt76_connac.h:7,
                    from drivers/net/wireless/mediatek/mt76/mt7925/../mt76_connac_mcu.h:7,
                    from drivers/net/wireless/mediatek/mt76/mt7925/../mt792x.h:10,
                    from drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h:7,
                    from drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:4:
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:626:28: error: 'MT_DMASHDL_STATUS_RD' undeclared (first use in this function)
     626 |         val = mt76_rr(dev, MT_DMASHDL_STATUS_RD);
         |                            ^~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/mediatek/mt76/mt7925/../mt76.h:1196:69: note: in definition of macro 'mt76_rr'
    1196 | #define mt76_rr(dev, ...)       (dev)->mt76.bus->rr(&((dev)->mt76), __VA_ARGS__)
         |                                                                     ^~~~~~~~~~~
   In file included from <command-line>:
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:627:33: error: 'MT_DMASHDL_STATUS_RD_FREE_PG' undeclared (first use in this function)
     627 |         free_pg_cnt = FIELD_GET(MT_DMASHDL_STATUS_RD_FREE_PG, val);
         |                                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:682:23: note: in definition of macro '__compiletime_assert'
     682 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert'
     702 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:40:37: note: in expansion of macro 'compiletime_assert'
      40 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |         ^~~~~~~~~~~~~~~~
   include/linux/bitfield.h:63:43: note: in expansion of macro '__unsigned_scalar_typeof'
      63 | #define __bf_cast_unsigned(type, x)     ((__unsigned_scalar_typeof(type))(x))
         |                                           ^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:26: note: in expansion of macro '__bf_cast_unsigned'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |                          ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:177:17: note: in expansion of macro '__BF_FIELD_CHECK_REG'
     177 |                 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: ");       \
         |                 ^~~~~~~~~~~~~~~~~~~~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:627:23: note: in expansion of macro 'FIELD_GET'
     627 |         free_pg_cnt = FIELD_GET(MT_DMASHDL_STATUS_RD_FREE_PG, val);
         |                       ^~~~~~~~~
   drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c:628:29: error: 'MT_DMASHDL_STATUS_RD_FFA' undeclared (first use in this function)
     628 |         ffa_cnt = FIELD_GET(MT_DMASHDL_STATUS_RD_FFA, val);
         |                             ^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler_types.h:682:23: note: in definition of macro '__compiletime_assert'
     682 |                 if (!(condition))                                       \
         |                       ^~~~~~~~~
   include/linux/compiler_types.h:702:9: note: in expansion of macro '_compiletime_assert'
     702 |         _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |         ^~~~~~~~~~~~~~~~~~~
   include/linux/build_bug.h:40:37: note: in expansion of macro 'compiletime_assert'
      40 | #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
         |                                     ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:9: note: in expansion of macro 'BUILD_BUG_ON_MSG'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |         ^~~~~~~~~~~~~~~~
   include/linux/bitfield.h:63:43: note: in expansion of macro '__unsigned_scalar_typeof'
      63 | #define __bf_cast_unsigned(type, x)     ((__unsigned_scalar_typeof(type))(x))
         |                                           ^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:79:26: note: in expansion of macro '__bf_cast_unsigned'
      79 |         BUILD_BUG_ON_MSG(__bf_cast_unsigned(mask, mask) >               \
         |                          ^~~~~~~~~~~~~~~~~~
   include/linux/bitfield.h:177:17: note: in expansion of macro '__BF_FIELD_CHECK_REG'
     177 |                 __BF_FIELD_CHECK_REG(_mask, _reg, "FIELD_GET: ");       \


vim +/rate +312 drivers/net/wireless/mediatek/mt76/mt7925/debugfs.c

   289	
   290	/* fixedrate input format (12 hex digits):
   291	 * 0x[WCID(2)][Mode][BW][MCS][Nss][SGI][Preamble][STBC][LDPC][SPE_EN][HeLtf]
   292	 * The RA tag is fixed to SET_FIXED_RATE internally.
   293	 * WCID is 2 nibbles, all others are 1 nibble.
   294	 *
   295	 * [WCID]    Wireless Client ID
   296	 * [Mode]    CCK=0, OFDM=1, HT=2, GF=3, VHT=4, PLR=5, HE_SU=8, HE_ER_SU=9,
   297	 *           HE_TRIG=10, HE_MU=11, EHT_ER=13, EHT_TB=14, EHT_SU and EHT_MU=15
   298	 * [BW]      BW20=0, BW40=1, BW80=2, BW160=3, BW320=4
   299	 * [MCS]     CCK=0~3, OFDM=0~7, HT=0~32, VHT=0~9, HE=0~11, EHT=0~13, EHT_ER=14~15
   300	 * [Nss]     1~8
   301	 * [GI]      HT/VHT: 0=Long, 1=Short; HE/EHT: 0=0.8us, 1=1.6us, 2=3.2us
   302	 * [Preamble] Long=0, Short=other
   303	 * [STBC]    Enable=1, Disable=0
   304	 * [LDPC]    BCC=0, LDPC=1 (driver sends the FW's "on" value 7)
   305	 * [SPE_EN]  spatial extension index
   306	 * [HeLtf]   1X=0, 2X=1, 4X=2 (NOTE: EHT modes require HeLtf=1)
   307	 */
   308	static int
   309	mt7925_fixedrate_set(void *data, u64 val)
   310	{
   311		struct mt792x_dev *dev = data;
 > 312		struct mt7925_ra_fixed_rate_v1 rate = {};
   313	
 > 314		dev->fixed_rate = val;
   315	
   316		rate.wlan_idx       = cpu_to_le16((val >> 40) & 0xff);
   317		rate.phy_mode       = (val >> 36) & 0xf;
   318		rate.bw             = (val >> 32) & 0xf;
   319		rate.mcs            = (val >> 28) & 0xf;
   320		rate.nss            = (val >> 24) & 0xf;
   321		rate.short_gi       = cpu_to_le16((val >> 20) & 0xf);
   322		rate.short_preamble = (val >> 16) & 0xf;
   323		rate.stbc           = (val >> 12) & 0xf;
   324		rate.ecc            = ((val >> 8) & 0xf) ? 7 : 0;
   325		rate.spe            = (val >> 4) & 0xf;
   326		rate.he_ltf         = cpu_to_le16((val >> 0) & 0xf);
   327	
   328		mt792x_mutex_acquire(dev);
 > 329		mt7925_mcu_set_fixed_rate(dev, &rate);
   330		mt792x_mutex_release(dev);
   331	
   332		return 0;
   333	}
   334	
   335	static int
   336	mt7925_fixedrate_get(void *data, u64 *val)
   337	{
   338		struct mt792x_dev *dev = data;
   339	
   340		*val = dev->fixed_rate;
   341	
   342		return 0;
   343	}
 > 344	DEFINE_DEBUGFS_ATTRIBUTE(fops_fixedrate, mt7925_fixedrate_get,
   345				 mt7925_fixedrate_set, "0x%llx\n");
   346	
   347	/* autorate input format (6 hex digits):
   348	 * 0x[Tag(2)][WCID(2)][En][Mode]
   349	 * The RA tag is fixed to SET_AUTO_RATE internally.
   350	 * WCID is 2 nibbles, En and Mode are 1 nibble each.
   351	 *
   352	 * [WCID] Wireless Client ID
   353	 * [En]   Auto rate: Enable=1, Disable=0
   354	 * [Mode] don't care (RA picks the rate)
   355	 */
   356	static int
   357	mt7925_autorate_set(void *data, u64 val)
   358	{
   359		struct mt792x_dev *dev = data;
   360		u16 wlan_idx = (val >> 8) & 0xff;
   361		bool enable = (val >> 4) & 0xf;
   362		u8 mode = val & 0xf;
   363	
 > 364		dev->auto_rate = val;
   365	
   366		mt792x_mutex_acquire(dev);
 > 367		mt7925_mcu_set_auto_rate(dev, wlan_idx, enable, mode);
   368		mt792x_mutex_release(dev);
   369	
   370		return 0;
   371	}
   372	
   373	static int
   374	mt7925_autorate_get(void *data, u64 *val)
   375	{
   376		struct mt792x_dev *dev = data;
   377	
   378		*val = dev->auto_rate;
   379	
   380		return 0;
   381	}
 > 382	DEFINE_DEBUGFS_ATTRIBUTE(fops_autorate, mt7925_autorate_get,
   383				 mt7925_autorate_set, "0x%llx\n");
   384	
   385	/* WTBL dump
   386	 *
   387	 * Usage:
   388	 *   echo <idx> > /sys/kernel/debug/ieee80211/phy1/mt76/wtbl_idx
   389	 *   cat  /sys/kernel/debug/ieee80211/phy1/mt76/get_wtbl
   390	 *
   391	 * LMAC WTBL has 36 dwords per entry (connac3x).
   392	 */
   393	#define MT792x_WTBL_LMAC_DWORDS	36
   394	
   395	static int
   396	mt7925_wtbl_idx_set(void *data, u64 val)
   397	{
   398		struct mt792x_dev *dev = data;
   399	
 > 400		dev->wtbl_dump_idx = (u32)val;
   401	
   402		return 0;
   403	}
   404	
   405	static int
   406	mt7925_wtbl_idx_get(void *data, u64 *val)
   407	{
   408		struct mt792x_dev *dev = data;
   409	
   410		*val = dev->wtbl_dump_idx;
   411	
   412		return 0;
   413	}
   414	
 > 415	DEFINE_DEBUGFS_ATTRIBUTE(fops_wtbl_idx, mt7925_wtbl_idx_get,
   416				 mt7925_wtbl_idx_set, "%llu\n");
   417	
   418	static int
 > 419	mt7925_wtbl_read(struct seq_file *s, void *data)
   420	{
   421		struct mt792x_dev *dev = dev_get_drvdata(s->private);
   422		u32 idx = dev->wtbl_dump_idx;
   423		u32 wdu_cr, wducr_val, base;
   424		u32 dw0, dw1;
   425		int i;
   426	
   427		if (!mt76_is_mmio(&dev->mt76)) {
   428			seq_puts(s, "WTBL direct dump not supported on this interface\n");
   429			return 0;
   430		}
   431	
   432		if (idx >= MT792x_WTBL_SIZE) {
   433			seq_printf(s, "Invalid WTBL idx %u (max %u)\n",
   434				   idx, MT792x_WTBL_SIZE - 1);
   435			return 0;
   436		}
   437	
   438		mt792x_mutex_acquire(dev);
   439	
   440		/* mt7925_mac_wtbl_lmac_addr() writes WDUCR group selection and
   441		 * returns the mapped register address for DW 0 of this WCID.
   442		 */
 > 443		base = mt7925_mac_wtbl_lmac_addr(dev, idx, 0);
   444		wdu_cr = is_mt7928(&dev->mt76) ? MT7928_WTBLON_TOP_WDUCR :
   445						  MT7925_WTBLON_TOP_WDUCR;
   446		wducr_val = mt76_rr(dev, wdu_cr);
   447	
   448		/* DW0[15:0] + DW1[31:0] encode the link address */
   449		dw0 = mt76_rr(dev, base);
   450		dw1 = mt76_rr(dev, base + 4);
   451	
   452		seq_printf(s, "Dump WTBL info of WLAN_IDX: %u\n", idx);
   453		seq_printf(s, "LMAC WTBL Addr: group:0x%08x=0x%08x addr: 0x%08x\n",
   454			   wdu_cr, wducr_val, base);
   455		seq_printf(s, "LinkAddr: %02x:%02x:%02x:%02x:%02x:%02x\n",
   456			   dw1 & 0xff, (dw1 >> 8) & 0xff,
   457			   (dw1 >> 16) & 0xff, (dw1 >> 24) & 0xff,
   458			   dw0 & 0xff, (dw0 >> 8) & 0xff);
   459	
   460		seq_puts(s, "\nLMAC WTBL raw data:\n");
   461		for (i = 0; i < MT792x_WTBL_LMAC_DWORDS; i++)
   462			seq_printf(s, "DW%02d: 0x%08x\n", i,
   463				   mt76_rr(dev, base + i * 4));
   464	
   465		mt792x_mutex_release(dev);
   466	
   467		return 0;
   468	}
   469	
   470	static int
 > 471	mt7925_vefuse_read(struct seq_file *s, void *data)
   472	{
   473		struct mt792x_dev *dev = dev_get_drvdata(s->private);
 > 474		u16 size = dev->vefuse_cap.size;
   475		int off = 0;
   476		u8 *buf;
   477		int ret = 0;
   478	
   479		if (!dev->vefuse_cap.present || !size) {
   480			seq_puts(s, "vefuse: no region in FW image\n");
   481			return 0;
   482		}
   483	
   484		buf = kzalloc(size, GFP_KERNEL);
   485		if (!buf)
   486			return -ENOMEM;
   487	
   488		mt792x_mutex_acquire(dev);
   489		while (off < (int)size) {
   490			u16 chunk = min_t(u16, 512, size - off);
   491	
 > 492			ret = mt7925_mcu_read_vefuse(dev, off, chunk, buf + off);
   493			if (ret)
   494				break;
   495			off += chunk;
   496		}
   497		mt792x_mutex_release(dev);
   498	
   499		if (ret) {
   500			seq_printf(s, "vefuse: read failed at 0x%04x (%d)\n", off, ret);
   501			kfree(buf);
   502			return 0;
   503		}
   504	
   505		seq_printf(s, "vefuse content: %u bytes\n", size);
   506		for (off = 0; off < (int)size; off += 16)
   507			seq_printf(s, "%04x: %*ph\n", off,
   508				   (int)min_t(u16, 16, size - off), buf + off);
   509	
   510		kfree(buf);
   511	
   512		return 0;
   513	}
   514	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


  reply	other threads:[~2026-08-25  4:01 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-24  3:07 [PATCH v1] wifi: mt76: mt7928: Add debugfs for stats to provide debug purpose Eason Lai
2026-08-25  4:00 ` kernel test robot [this message]
2026-08-25  7:55 ` kernel test robot
2026-08-27  5:54 ` [PATCH v2] " Eason Lai
2026-08-27  8:44   ` [PATCH v3] " Eason Lai

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202608251101.iQGUrSd0-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=deren.wu@mediatek.com \
    --cc=eason.lai@mediatek.com \
    --cc=jb.tsai@mediatek.com \
    --cc=kun.wu@mediatek.com \
    --cc=leon.yen@mediatek.com \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=litien.chang@mediatek.com \
    --cc=lorenzo@kernel.org \
    --cc=michael.shih@mediatek.com \
    --cc=nbd@nbd.name \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=quan.zhou@mediatek.com \
    --cc=ryder.lee@mediatek.com \
    --cc=sean.wang@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox