[PATCH ath-next] wifi: ath10k: Support for FTM TLV test commands

kernel test robot lkp at intel.com
Sun Sep 28 01:57:17 PDT 2025


Hi Loic,

kernel test robot noticed the following build warnings:

[auto build test WARNING on ath/ath-next]
[also build test WARNING on wireless/main wireless-next/main linus/master v6.17-rc7 next-20250926]
[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/Loic-Poulain/wifi-ath10k-Support-for-FTM-TLV-test-commands/20250927-041539
base:   https://git.kernel.org/pub/scm/linux/kernel/git/ath/ath.git ath-next
patch link:    https://lore.kernel.org/r/20250926201303.194029-1-loic.poulain%40oss.qualcomm.com
patch subject: [PATCH ath-next] wifi: ath10k: Support for FTM TLV test commands
config: x86_64-randconfig-121-20250928 (https://download.01.org/0day-ci/archive/20250928/202509281616.IKHm5zbZ-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250928/202509281616.IKHm5zbZ-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 at intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202509281616.IKHm5zbZ-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> drivers/net/wireless/ath/ath10k/testmode.c:93:23: sparse: sparse: cast to restricted __le32
>> drivers/net/wireless/ath/ath10k/testmode.c:93:23: sparse: sparse: restricted __le32 degrades to integer
>> drivers/net/wireless/ath/ath10k/testmode.c:93:23: sparse: sparse: restricted __le32 degrades to integer
   drivers/net/wireless/ath/ath10k/testmode.c:94:26: sparse: sparse: cast to restricted __le32
   drivers/net/wireless/ath/ath10k/testmode.c:94:26: sparse: sparse: restricted __le32 degrades to integer
   drivers/net/wireless/ath/ath10k/testmode.c:94:26: sparse: sparse: restricted __le32 degrades to integer
>> drivers/net/wireless/ath/ath10k/testmode.c:585:37: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] tlv_header @@     got unsigned int [assigned] [usertype] hdr_info @@
   drivers/net/wireless/ath/ath10k/testmode.c:585:37: sparse:     expected restricted __le32 [usertype] tlv_header
   drivers/net/wireless/ath/ath10k/testmode.c:585:37: sparse:     got unsigned int [assigned] [usertype] hdr_info
>> drivers/net/wireless/ath/ath10k/testmode.c:586:38: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] len @@     got unsigned short [assigned] [usertype] total_bytes @@
   drivers/net/wireless/ath/ath10k/testmode.c:586:38: sparse:     expected restricted __le32 [usertype] len
   drivers/net/wireless/ath/ath10k/testmode.c:586:38: sparse:     got unsigned short [assigned] [usertype] total_bytes
>> drivers/net/wireless/ath/ath10k/testmode.c:587:41: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] msgref @@     got unsigned char [usertype] ftm_msgref @@
   drivers/net/wireless/ath/ath10k/testmode.c:587:41: sparse:     expected restricted __le32 [usertype] msgref
   drivers/net/wireless/ath/ath10k/testmode.c:587:41: sparse:     got unsigned char [usertype] ftm_msgref
>> drivers/net/wireless/ath/ath10k/testmode.c:590:46: sparse: sparse: incorrect type in assignment (different base types) @@     expected restricted __le32 [usertype] segmentinfo @@     got unsigned char [assigned] [usertype] seginfo @@
   drivers/net/wireless/ath/ath10k/testmode.c:590:46: sparse:     expected restricted __le32 [usertype] segmentinfo
   drivers/net/wireless/ath/ath10k/testmode.c:590:46: sparse:     got unsigned char [assigned] [usertype] seginfo

vim +93 drivers/net/wireless/ath/ath10k/testmode.c

    77	
    78	static void ath10k_tm_event_segmented(struct ath10k *ar, u32 cmd_id, struct sk_buff *skb)
    79	{
    80		struct wmi_ftm_cmd *ftm = (struct wmi_ftm_cmd *)skb->data;
    81		u8 total_segments, current_seq;
    82		struct sk_buff *nl_skb;
    83		u8 const *buf_pos;
    84		u16 datalen;
    85		u32 data_pos;
    86		int ret;
    87	
    88		if (skb->len < sizeof(*ftm)) {
    89			ath10k_warn(ar, "Invalid ftm event length: %d\n", skb->len);
    90			return;
    91		}
    92	
  > 93		current_seq = FIELD_GET(ATH10K_FTM_SEGHDR_CURRENT_SEQ, ftm->seg_hdr.segmentinfo);
    94		total_segments = FIELD_GET(ATH10K_FTM_SEGHDR_TOTAL_SEGMENTS,
    95					   ftm->seg_hdr.segmentinfo);
    96		datalen = skb->len - sizeof(*ftm);
    97		buf_pos = ftm->data;
    98	
    99		if (current_seq == 0) {
   100			ar->testmode.expected_seq = 0;
   101			ar->testmode.data_pos = 0;
   102		}
   103	
   104		data_pos = ar->testmode.data_pos;
   105	
   106		if ((data_pos + datalen) > ATH_FTM_EVENT_MAX_BUF_LENGTH) {
   107			ath10k_warn(ar, "Invalid ftm event length at %u: %u\n",
   108				    data_pos, datalen);
   109			ret = -EINVAL;
   110			return;
   111		}
   112	
   113		memcpy(&ar->testmode.eventdata[data_pos], buf_pos, datalen);
   114		data_pos += datalen;
   115	
   116		if (++ar->testmode.expected_seq != total_segments) {
   117			ar->testmode.data_pos = data_pos;
   118			ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "partial data received %u/%u\n",
   119				   current_seq + 1, total_segments);
   120			return;
   121		}
   122	
   123		ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "total data length %u\n", data_pos);
   124	
   125		nl_skb = cfg80211_testmode_alloc_event_skb(ar->hw->wiphy,
   126							   2 * sizeof(u32) + data_pos,
   127							   GFP_ATOMIC);
   128		if (!nl_skb) {
   129			ath10k_warn(ar, "failed to allocate skb for testmode wmi event\n");
   130			return;
   131		}
   132	
   133		ret = nla_put_u32(nl_skb, ATH10K_TM_ATTR_CMD, ATH10K_TM_CMD_TLV);
   134		if (ret) {
   135			ath10k_warn(ar, "failed to put testmode wmi event attribute: %d\n", ret);
   136			kfree_skb(nl_skb);
   137			return;
   138		}
   139	
   140		ret = nla_put_u32(nl_skb, ATH10K_TM_ATTR_WMI_CMDID, cmd_id);
   141		if (ret) {
   142			ath10k_warn(ar, "failed to put testmode wmi event cmd_id: %d\n", ret);
   143			kfree_skb(nl_skb);
   144			return;
   145		}
   146	
   147		ret = nla_put(nl_skb, ATH10K_TM_ATTR_DATA, data_pos, &ar->testmode.eventdata[0]);
   148		if (ret) {
   149			ath10k_warn(ar, "failed to copy skb to testmode wmi event: %d\n", ret);
   150			kfree_skb(nl_skb);
   151			return;
   152		}
   153	
   154		cfg80211_testmode_event(nl_skb, GFP_ATOMIC);
   155	}
   156	

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



More information about the ath10k mailing list