All of lore.kernel.org
 help / color / mirror / Atom feed
* [openeuler:openEuler-1.0-LTS 1320/1320] net/mac80211/rx.c:574:29: sparse: sparse: dubious: x & !y
@ 2024-12-05 16:07 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-12-05 16:07 UTC (permalink / raw)
  To: kernel, Xie XiuQi; +Cc: oe-kbuild-all

tree:   https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head:   e416567e80778667f6a949f0f19c32a3ee4cb06e
commit: 9baadf685a5618364776aed92067526bb40c137d [1320/1320] build_bug.h: remove most of dummy BUILD_BUG_ON stubs for Sparse
config: x86_64-randconfig-121 (https://download.01.org/0day-ci/archive/20241205/202412052349.hadZoo7L-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241205/202412052349.hadZoo7L-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/202412052349.hadZoo7L-lkp@intel.com/

sparse warnings: (new ones prefixed by >>)
>> net/mac80211/rx.c:574:29: sparse: sparse: dubious: x & !y
   net/mac80211/rx.c: In function 'ieee80211_handle_mu_mimo_mon':
   net/mac80211/rx.c:224:9: warning: alignment 1 of 'struct <anonymous>' is less than 2 [-Wpacked-not-aligned]
     224 |         } __packed action;
         |         ^
   net/mac80211/rx.c: In function 'ieee80211_add_rx_radiotap_header':
   net/mac80211/rx.c:307:22: warning: taking address of packed member of 'struct ieee80211_radiotap_header' may result in an unaligned pointer value [-Waddress-of-packed-member]
     307 |         it_present = &rthdr->it_present;
         |                      ^~~~~~~~~~~~~~~~~~

vim +574 net/mac80211/rx.c

41cbb0f5a295928 Luca Coelho   2018-06-09  554  
41cbb0f5a295928 Luca Coelho   2018-06-09  555  		if (status->enc_flags & RX_ENC_FLAG_STBC_MASK) {
41cbb0f5a295928 Luca Coelho   2018-06-09  556  			he.data6 |= HE_PREP(DATA6_NSTS,
41cbb0f5a295928 Luca Coelho   2018-06-09  557  					    FIELD_GET(RX_ENC_FLAG_STBC_MASK,
41cbb0f5a295928 Luca Coelho   2018-06-09  558  						      status->enc_flags));
41cbb0f5a295928 Luca Coelho   2018-06-09  559  			he.data3 |= HE_PREP(DATA3_STBC, 1);
41cbb0f5a295928 Luca Coelho   2018-06-09  560  		} else {
41cbb0f5a295928 Luca Coelho   2018-06-09  561  			he.data6 |= HE_PREP(DATA6_NSTS, status->nss);
41cbb0f5a295928 Luca Coelho   2018-06-09  562  		}
41cbb0f5a295928 Luca Coelho   2018-06-09  563  
41cbb0f5a295928 Luca Coelho   2018-06-09  564  #define CHECK_GI(s) \
41cbb0f5a295928 Luca Coelho   2018-06-09  565  	BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_DATA5_GI_##s != \
41cbb0f5a295928 Luca Coelho   2018-06-09  566  		     (int)NL80211_RATE_INFO_HE_GI_##s)
41cbb0f5a295928 Luca Coelho   2018-06-09  567  
41cbb0f5a295928 Luca Coelho   2018-06-09  568  		CHECK_GI(0_8);
41cbb0f5a295928 Luca Coelho   2018-06-09  569  		CHECK_GI(1_6);
41cbb0f5a295928 Luca Coelho   2018-06-09  570  		CHECK_GI(3_2);
41cbb0f5a295928 Luca Coelho   2018-06-09  571  
41cbb0f5a295928 Luca Coelho   2018-06-09  572  		he.data3 |= HE_PREP(DATA3_DATA_MCS, status->rate_idx);
41cbb0f5a295928 Luca Coelho   2018-06-09  573  		he.data3 |= HE_PREP(DATA3_DATA_DCM, status->he_dcm);
41cbb0f5a295928 Luca Coelho   2018-06-09 @574  		he.data3 |= HE_PREP(DATA3_CODING,
41cbb0f5a295928 Luca Coelho   2018-06-09  575  				    !!(status->enc_flags & RX_ENC_FLAG_LDPC));
41cbb0f5a295928 Luca Coelho   2018-06-09  576  
41cbb0f5a295928 Luca Coelho   2018-06-09  577  		he.data5 |= HE_PREP(DATA5_GI, status->he_gi);
41cbb0f5a295928 Luca Coelho   2018-06-09  578  
41cbb0f5a295928 Luca Coelho   2018-06-09  579  		switch (status->bw) {
41cbb0f5a295928 Luca Coelho   2018-06-09  580  		case RATE_INFO_BW_20:
41cbb0f5a295928 Luca Coelho   2018-06-09  581  			he.data5 |= HE_PREP(DATA5_DATA_BW_RU_ALLOC,
41cbb0f5a295928 Luca Coelho   2018-06-09  582  					    IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_20MHZ);
41cbb0f5a295928 Luca Coelho   2018-06-09  583  			break;
41cbb0f5a295928 Luca Coelho   2018-06-09  584  		case RATE_INFO_BW_40:
41cbb0f5a295928 Luca Coelho   2018-06-09  585  			he.data5 |= HE_PREP(DATA5_DATA_BW_RU_ALLOC,
41cbb0f5a295928 Luca Coelho   2018-06-09  586  					    IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_40MHZ);
41cbb0f5a295928 Luca Coelho   2018-06-09  587  			break;
41cbb0f5a295928 Luca Coelho   2018-06-09  588  		case RATE_INFO_BW_80:
41cbb0f5a295928 Luca Coelho   2018-06-09  589  			he.data5 |= HE_PREP(DATA5_DATA_BW_RU_ALLOC,
41cbb0f5a295928 Luca Coelho   2018-06-09  590  					    IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_80MHZ);
41cbb0f5a295928 Luca Coelho   2018-06-09  591  			break;
41cbb0f5a295928 Luca Coelho   2018-06-09  592  		case RATE_INFO_BW_160:
41cbb0f5a295928 Luca Coelho   2018-06-09  593  			he.data5 |= HE_PREP(DATA5_DATA_BW_RU_ALLOC,
41cbb0f5a295928 Luca Coelho   2018-06-09  594  					    IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_160MHZ);
41cbb0f5a295928 Luca Coelho   2018-06-09  595  			break;
41cbb0f5a295928 Luca Coelho   2018-06-09  596  		case RATE_INFO_BW_HE_RU:
41cbb0f5a295928 Luca Coelho   2018-06-09  597  #define CHECK_RU_ALLOC(s) \
41cbb0f5a295928 Luca Coelho   2018-06-09  598  	BUILD_BUG_ON(IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC_##s##T != \
41cbb0f5a295928 Luca Coelho   2018-06-09  599  		     NL80211_RATE_INFO_HE_RU_ALLOC_##s + 4)
41cbb0f5a295928 Luca Coelho   2018-06-09  600  
41cbb0f5a295928 Luca Coelho   2018-06-09  601  			CHECK_RU_ALLOC(26);
41cbb0f5a295928 Luca Coelho   2018-06-09  602  			CHECK_RU_ALLOC(52);
41cbb0f5a295928 Luca Coelho   2018-06-09  603  			CHECK_RU_ALLOC(106);
41cbb0f5a295928 Luca Coelho   2018-06-09  604  			CHECK_RU_ALLOC(242);
41cbb0f5a295928 Luca Coelho   2018-06-09  605  			CHECK_RU_ALLOC(484);
41cbb0f5a295928 Luca Coelho   2018-06-09  606  			CHECK_RU_ALLOC(996);
41cbb0f5a295928 Luca Coelho   2018-06-09  607  			CHECK_RU_ALLOC(2x996);
41cbb0f5a295928 Luca Coelho   2018-06-09  608  
41cbb0f5a295928 Luca Coelho   2018-06-09  609  			he.data5 |= HE_PREP(DATA5_DATA_BW_RU_ALLOC,
41cbb0f5a295928 Luca Coelho   2018-06-09  610  					    status->he_ru + 4);
41cbb0f5a295928 Luca Coelho   2018-06-09  611  			break;
41cbb0f5a295928 Luca Coelho   2018-06-09  612  		default:
41cbb0f5a295928 Luca Coelho   2018-06-09  613  			WARN_ONCE(1, "Invalid SU BW %d\n", status->bw);
41cbb0f5a295928 Luca Coelho   2018-06-09  614  		}
41cbb0f5a295928 Luca Coelho   2018-06-09  615  
41cbb0f5a295928 Luca Coelho   2018-06-09  616  		/* ensure 2 byte alignment */
41cbb0f5a295928 Luca Coelho   2018-06-09  617  		while ((pos - (u8 *)rthdr) & 1)
41cbb0f5a295928 Luca Coelho   2018-06-09  618  			pos++;
41cbb0f5a295928 Luca Coelho   2018-06-09  619  		rthdr->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_HE);
41cbb0f5a295928 Luca Coelho   2018-06-09  620  		memcpy(pos, &he, sizeof(he));
41cbb0f5a295928 Luca Coelho   2018-06-09  621  		pos += sizeof(he);
41cbb0f5a295928 Luca Coelho   2018-06-09  622  	}
41cbb0f5a295928 Luca Coelho   2018-06-09  623  
41cbb0f5a295928 Luca Coelho   2018-06-09  624  	if (status->encoding == RX_ENC_HE &&
41cbb0f5a295928 Luca Coelho   2018-06-09  625  	    status->flag & RX_FLAG_RADIOTAP_HE_MU) {
41cbb0f5a295928 Luca Coelho   2018-06-09  626  		/* ensure 2 byte alignment */
41cbb0f5a295928 Luca Coelho   2018-06-09  627  		while ((pos - (u8 *)rthdr) & 1)
41cbb0f5a295928 Luca Coelho   2018-06-09  628  			pos++;
41cbb0f5a295928 Luca Coelho   2018-06-09  629  		rthdr->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_HE_MU);
41cbb0f5a295928 Luca Coelho   2018-06-09  630  		memcpy(pos, &he_mu, sizeof(he_mu));
41cbb0f5a295928 Luca Coelho   2018-06-09  631  		pos += sizeof(he_mu);
41cbb0f5a295928 Luca Coelho   2018-06-09  632  	}
41cbb0f5a295928 Luca Coelho   2018-06-09  633  
a144f378a489b59 Johannes Berg 2013-07-03  634  	for_each_set_bit(chain, &chains, IEEE80211_MAX_CHAINS) {
a144f378a489b59 Johannes Berg 2013-07-03  635  		*pos++ = status->chain_signal[chain];
a144f378a489b59 Johannes Berg 2013-07-03  636  		*pos++ = chain;
a144f378a489b59 Johannes Berg 2013-07-03  637  	}
1f7bba79af57cee Johannes Berg 2014-11-06  638  
1f7bba79af57cee Johannes Berg 2014-11-06  639  	if (status->flag & RX_FLAG_RADIOTAP_VENDOR_DATA) {
1f7bba79af57cee Johannes Berg 2014-11-06  640  		/* ensure 2 byte alignment for the vendor field as required */
1f7bba79af57cee Johannes Berg 2014-11-06  641  		if ((pos - (u8 *)rthdr) & 1)
1f7bba79af57cee Johannes Berg 2014-11-06  642  			*pos++ = 0;
1f7bba79af57cee Johannes Berg 2014-11-06  643  		*pos++ = rtap.oui[0];
1f7bba79af57cee Johannes Berg 2014-11-06  644  		*pos++ = rtap.oui[1];
1f7bba79af57cee Johannes Berg 2014-11-06  645  		*pos++ = rtap.oui[2];
1f7bba79af57cee Johannes Berg 2014-11-06  646  		*pos++ = rtap.subns;
1f7bba79af57cee Johannes Berg 2014-11-06  647  		put_unaligned_le16(rtap.len, pos);
1f7bba79af57cee Johannes Berg 2014-11-06  648  		pos += 2;
1f7bba79af57cee Johannes Berg 2014-11-06  649  		/* align the actual payload as requested */
1f7bba79af57cee Johannes Berg 2014-11-06  650  		while ((pos - (u8 *)rthdr) & (rtap.align - 1))
1f7bba79af57cee Johannes Berg 2014-11-06  651  			*pos++ = 0;
1f7bba79af57cee Johannes Berg 2014-11-06  652  		/* data (and possible padding) already follows */
1f7bba79af57cee Johannes Berg 2014-11-06  653  	}
601ae7f25aea58f Bruno Randolf 2008-05-08  654  }
601ae7f25aea58f Bruno Randolf 2008-05-08  655  

:::::: The code at line 574 was first introduced by commit
:::::: 41cbb0f5a29592874355e4159489eb08337cd50e mac80211: add support for HE

:::::: TO: Luca Coelho <luciano.coelho@intel.com>
:::::: CC: Johannes Berg <johannes.berg@intel.com>

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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-12-05 16:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-05 16:07 [openeuler:openEuler-1.0-LTS 1320/1320] net/mac80211/rx.c:574:29: sparse: sparse: dubious: x & !y kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.