All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Lorenzo Bianconi <lorenzo@kernel.org>, nbd@nbd.name
Cc: kbuild-all@lists.01.org, linux-wireless@vger.kernel.org,
	sean.wang@mediatek.com, lorenzo.bianconi@redhat.com
Subject: Re: [PATCH 3/6] mt76: mt7921: fixup rx bitrate statistics
Date: Tue, 9 Feb 2021 21:36:28 +0800	[thread overview]
Message-ID: <202102092134.xp1585XK-lkp@intel.com> (raw)
In-Reply-To: <efdb50d47abef9f2a3f08337c2ed57de74c93159.1612867656.git.lorenzo@kernel.org>

[-- Attachment #1: Type: text/plain, Size: 18868 bytes --]

Hi Lorenzo,

I love your patch! Perhaps something to improve:

[auto build test WARNING on nbd168-wireless/mt76]
[cannot apply to wireless-drivers-next/master wireless-drivers/master v5.11-rc6 next-20210125]
[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]

url:    https://github.com/0day-ci/linux/commits/Lorenzo-Bianconi/mt76-mt7921-multiple-fixes/20210209-190328
base:   https://github.com/nbd168/wireless mt76
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/716af9b953825b6ade758b0ed48ee2ceceaee289
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Lorenzo-Bianconi/mt76-mt7921-multiple-fixes/20210209-190328
        git checkout 716af9b953825b6ade758b0ed48ee2ceceaee289
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=xtensa 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/net/wireless/mediatek/mt76/mt7921/mac.c: In function 'mt7921_mac_fill_rx':
>> drivers/net/wireless/mediatek/mt76/mt7921/mac.c:403:15: warning: variable 'v2' set but not used [-Wunused-but-set-variable]
     403 |   u32 v0, v1, v2;
         |               ^~


vim +/v2 +403 drivers/net/wireless/mediatek/mt76/mt7921/mac.c

163f4d22c118d4 Sean Wang 2021-01-28  287  
163f4d22c118d4 Sean Wang 2021-01-28  288  int mt7921_mac_fill_rx(struct mt7921_dev *dev, struct sk_buff *skb)
163f4d22c118d4 Sean Wang 2021-01-28  289  {
163f4d22c118d4 Sean Wang 2021-01-28  290  	struct mt76_rx_status *status = (struct mt76_rx_status *)skb->cb;
163f4d22c118d4 Sean Wang 2021-01-28  291  	struct mt76_phy *mphy = &dev->mt76.phy;
163f4d22c118d4 Sean Wang 2021-01-28  292  	struct mt7921_phy *phy = &dev->phy;
163f4d22c118d4 Sean Wang 2021-01-28  293  	struct ieee80211_supported_band *sband;
163f4d22c118d4 Sean Wang 2021-01-28  294  	struct ieee80211_hdr *hdr;
163f4d22c118d4 Sean Wang 2021-01-28  295  	__le32 *rxd = (__le32 *)skb->data;
163f4d22c118d4 Sean Wang 2021-01-28  296  	__le32 *rxv = NULL;
163f4d22c118d4 Sean Wang 2021-01-28  297  	u32 mode = 0;
163f4d22c118d4 Sean Wang 2021-01-28  298  	u32 rxd1 = le32_to_cpu(rxd[1]);
163f4d22c118d4 Sean Wang 2021-01-28  299  	u32 rxd2 = le32_to_cpu(rxd[2]);
163f4d22c118d4 Sean Wang 2021-01-28  300  	u32 rxd3 = le32_to_cpu(rxd[3]);
163f4d22c118d4 Sean Wang 2021-01-28  301  	bool unicast, insert_ccmp_hdr = false;
163f4d22c118d4 Sean Wang 2021-01-28  302  	u8 remove_pad;
163f4d22c118d4 Sean Wang 2021-01-28  303  	int i, idx;
163f4d22c118d4 Sean Wang 2021-01-28  304  	u8 chfreq;
163f4d22c118d4 Sean Wang 2021-01-28  305  
163f4d22c118d4 Sean Wang 2021-01-28  306  	memset(status, 0, sizeof(*status));
163f4d22c118d4 Sean Wang 2021-01-28  307  
163f4d22c118d4 Sean Wang 2021-01-28  308  	if (rxd1 & MT_RXD1_NORMAL_BAND_IDX)
163f4d22c118d4 Sean Wang 2021-01-28  309  		return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  310  
163f4d22c118d4 Sean Wang 2021-01-28  311  	if (!test_bit(MT76_STATE_RUNNING, &mphy->state))
163f4d22c118d4 Sean Wang 2021-01-28  312  		return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  313  
163f4d22c118d4 Sean Wang 2021-01-28  314  	chfreq = FIELD_GET(MT_RXD3_NORMAL_CH_FREQ, rxd3);
163f4d22c118d4 Sean Wang 2021-01-28  315  	unicast = FIELD_GET(MT_RXD3_NORMAL_ADDR_TYPE, rxd3) == MT_RXD3_NORMAL_U2M;
163f4d22c118d4 Sean Wang 2021-01-28  316  	idx = FIELD_GET(MT_RXD1_NORMAL_WLAN_IDX, rxd1);
163f4d22c118d4 Sean Wang 2021-01-28  317  	status->wcid = mt7921_rx_get_wcid(dev, idx, unicast);
163f4d22c118d4 Sean Wang 2021-01-28  318  
163f4d22c118d4 Sean Wang 2021-01-28  319  	if (status->wcid) {
163f4d22c118d4 Sean Wang 2021-01-28  320  		struct mt7921_sta *msta;
163f4d22c118d4 Sean Wang 2021-01-28  321  
163f4d22c118d4 Sean Wang 2021-01-28  322  		msta = container_of(status->wcid, struct mt7921_sta, wcid);
163f4d22c118d4 Sean Wang 2021-01-28  323  		spin_lock_bh(&dev->sta_poll_lock);
163f4d22c118d4 Sean Wang 2021-01-28  324  		if (list_empty(&msta->poll_list))
163f4d22c118d4 Sean Wang 2021-01-28  325  			list_add_tail(&msta->poll_list, &dev->sta_poll_list);
163f4d22c118d4 Sean Wang 2021-01-28  326  		spin_unlock_bh(&dev->sta_poll_lock);
163f4d22c118d4 Sean Wang 2021-01-28  327  	}
163f4d22c118d4 Sean Wang 2021-01-28  328  
163f4d22c118d4 Sean Wang 2021-01-28  329  	mt7921_get_status_freq_info(dev, mphy, status, chfreq);
163f4d22c118d4 Sean Wang 2021-01-28  330  
163f4d22c118d4 Sean Wang 2021-01-28  331  	if (status->band == NL80211_BAND_5GHZ)
163f4d22c118d4 Sean Wang 2021-01-28  332  		sband = &mphy->sband_5g.sband;
163f4d22c118d4 Sean Wang 2021-01-28  333  	else
163f4d22c118d4 Sean Wang 2021-01-28  334  		sband = &mphy->sband_2g.sband;
163f4d22c118d4 Sean Wang 2021-01-28  335  
163f4d22c118d4 Sean Wang 2021-01-28  336  	if (!sband->channels)
163f4d22c118d4 Sean Wang 2021-01-28  337  		return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  338  
163f4d22c118d4 Sean Wang 2021-01-28  339  	if (rxd1 & MT_RXD1_NORMAL_FCS_ERR)
163f4d22c118d4 Sean Wang 2021-01-28  340  		status->flag |= RX_FLAG_FAILED_FCS_CRC;
163f4d22c118d4 Sean Wang 2021-01-28  341  
163f4d22c118d4 Sean Wang 2021-01-28  342  	if (rxd1 & MT_RXD1_NORMAL_TKIP_MIC_ERR)
163f4d22c118d4 Sean Wang 2021-01-28  343  		status->flag |= RX_FLAG_MMIC_ERROR;
163f4d22c118d4 Sean Wang 2021-01-28  344  
163f4d22c118d4 Sean Wang 2021-01-28  345  	if (FIELD_GET(MT_RXD1_NORMAL_SEC_MODE, rxd1) != 0 &&
163f4d22c118d4 Sean Wang 2021-01-28  346  	    !(rxd1 & (MT_RXD1_NORMAL_CLM | MT_RXD1_NORMAL_CM))) {
163f4d22c118d4 Sean Wang 2021-01-28  347  		status->flag |= RX_FLAG_DECRYPTED;
163f4d22c118d4 Sean Wang 2021-01-28  348  		status->flag |= RX_FLAG_IV_STRIPPED;
163f4d22c118d4 Sean Wang 2021-01-28  349  		status->flag |= RX_FLAG_MMIC_STRIPPED | RX_FLAG_MIC_STRIPPED;
163f4d22c118d4 Sean Wang 2021-01-28  350  	}
163f4d22c118d4 Sean Wang 2021-01-28  351  
163f4d22c118d4 Sean Wang 2021-01-28  352  	if (!(rxd2 & MT_RXD2_NORMAL_NON_AMPDU)) {
163f4d22c118d4 Sean Wang 2021-01-28  353  		status->flag |= RX_FLAG_AMPDU_DETAILS;
163f4d22c118d4 Sean Wang 2021-01-28  354  
163f4d22c118d4 Sean Wang 2021-01-28  355  		/* all subframes of an A-MPDU have the same timestamp */
163f4d22c118d4 Sean Wang 2021-01-28  356  		if (phy->rx_ampdu_ts != rxd[14]) {
163f4d22c118d4 Sean Wang 2021-01-28  357  			if (!++phy->ampdu_ref)
163f4d22c118d4 Sean Wang 2021-01-28  358  				phy->ampdu_ref++;
163f4d22c118d4 Sean Wang 2021-01-28  359  		}
163f4d22c118d4 Sean Wang 2021-01-28  360  		phy->rx_ampdu_ts = rxd[14];
163f4d22c118d4 Sean Wang 2021-01-28  361  
163f4d22c118d4 Sean Wang 2021-01-28  362  		status->ampdu_ref = phy->ampdu_ref;
163f4d22c118d4 Sean Wang 2021-01-28  363  	}
163f4d22c118d4 Sean Wang 2021-01-28  364  
163f4d22c118d4 Sean Wang 2021-01-28  365  	remove_pad = FIELD_GET(MT_RXD2_NORMAL_HDR_OFFSET, rxd2);
163f4d22c118d4 Sean Wang 2021-01-28  366  
163f4d22c118d4 Sean Wang 2021-01-28  367  	if (rxd2 & MT_RXD2_NORMAL_MAX_LEN_ERROR)
163f4d22c118d4 Sean Wang 2021-01-28  368  		return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  369  
163f4d22c118d4 Sean Wang 2021-01-28  370  	rxd += 6;
163f4d22c118d4 Sean Wang 2021-01-28  371  	if (rxd1 & MT_RXD1_NORMAL_GROUP_4) {
163f4d22c118d4 Sean Wang 2021-01-28  372  		rxd += 4;
163f4d22c118d4 Sean Wang 2021-01-28  373  		if ((u8 *)rxd - skb->data >= skb->len)
163f4d22c118d4 Sean Wang 2021-01-28  374  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  375  	}
163f4d22c118d4 Sean Wang 2021-01-28  376  
163f4d22c118d4 Sean Wang 2021-01-28  377  	if (rxd1 & MT_RXD1_NORMAL_GROUP_1) {
163f4d22c118d4 Sean Wang 2021-01-28  378  		u8 *data = (u8 *)rxd;
163f4d22c118d4 Sean Wang 2021-01-28  379  
163f4d22c118d4 Sean Wang 2021-01-28  380  		if (status->flag & RX_FLAG_DECRYPTED) {
163f4d22c118d4 Sean Wang 2021-01-28  381  			status->iv[0] = data[5];
163f4d22c118d4 Sean Wang 2021-01-28  382  			status->iv[1] = data[4];
163f4d22c118d4 Sean Wang 2021-01-28  383  			status->iv[2] = data[3];
163f4d22c118d4 Sean Wang 2021-01-28  384  			status->iv[3] = data[2];
163f4d22c118d4 Sean Wang 2021-01-28  385  			status->iv[4] = data[1];
163f4d22c118d4 Sean Wang 2021-01-28  386  			status->iv[5] = data[0];
163f4d22c118d4 Sean Wang 2021-01-28  387  
163f4d22c118d4 Sean Wang 2021-01-28  388  			insert_ccmp_hdr = FIELD_GET(MT_RXD2_NORMAL_FRAG, rxd2);
163f4d22c118d4 Sean Wang 2021-01-28  389  		}
163f4d22c118d4 Sean Wang 2021-01-28  390  		rxd += 4;
163f4d22c118d4 Sean Wang 2021-01-28  391  		if ((u8 *)rxd - skb->data >= skb->len)
163f4d22c118d4 Sean Wang 2021-01-28  392  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  393  	}
163f4d22c118d4 Sean Wang 2021-01-28  394  
163f4d22c118d4 Sean Wang 2021-01-28  395  	if (rxd1 & MT_RXD1_NORMAL_GROUP_2) {
163f4d22c118d4 Sean Wang 2021-01-28  396  		rxd += 2;
163f4d22c118d4 Sean Wang 2021-01-28  397  		if ((u8 *)rxd - skb->data >= skb->len)
163f4d22c118d4 Sean Wang 2021-01-28  398  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  399  	}
163f4d22c118d4 Sean Wang 2021-01-28  400  
163f4d22c118d4 Sean Wang 2021-01-28  401  	/* RXD Group 3 - P-RXV */
163f4d22c118d4 Sean Wang 2021-01-28  402  	if (rxd1 & MT_RXD1_NORMAL_GROUP_3) {
163f4d22c118d4 Sean Wang 2021-01-28 @403  		u32 v0, v1, v2;
716af9b953825b Sean Wang 2021-02-09  404  		u8 stbc, gi;
716af9b953825b Sean Wang 2021-02-09  405  		bool cck;
163f4d22c118d4 Sean Wang 2021-01-28  406  
163f4d22c118d4 Sean Wang 2021-01-28  407  		rxv = rxd;
163f4d22c118d4 Sean Wang 2021-01-28  408  		rxd += 2;
163f4d22c118d4 Sean Wang 2021-01-28  409  		if ((u8 *)rxd - skb->data >= skb->len)
163f4d22c118d4 Sean Wang 2021-01-28  410  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  411  
163f4d22c118d4 Sean Wang 2021-01-28  412  		v0 = le32_to_cpu(rxv[0]);
163f4d22c118d4 Sean Wang 2021-01-28  413  		v1 = le32_to_cpu(rxv[1]);
163f4d22c118d4 Sean Wang 2021-01-28  414  		v2 = le32_to_cpu(rxv[2]);
163f4d22c118d4 Sean Wang 2021-01-28  415  
163f4d22c118d4 Sean Wang 2021-01-28  416  		if (v0 & MT_PRXV_HT_AD_CODE)
163f4d22c118d4 Sean Wang 2021-01-28  417  			status->enc_flags |= RX_ENC_FLAG_LDPC;
163f4d22c118d4 Sean Wang 2021-01-28  418  
163f4d22c118d4 Sean Wang 2021-01-28  419  		status->chains = mphy->antenna_mask;
163f4d22c118d4 Sean Wang 2021-01-28  420  		status->chain_signal[0] = to_rssi(MT_PRXV_RCPI0, v1);
163f4d22c118d4 Sean Wang 2021-01-28  421  		status->chain_signal[1] = to_rssi(MT_PRXV_RCPI1, v1);
163f4d22c118d4 Sean Wang 2021-01-28  422  		status->chain_signal[2] = to_rssi(MT_PRXV_RCPI2, v1);
163f4d22c118d4 Sean Wang 2021-01-28  423  		status->chain_signal[3] = to_rssi(MT_PRXV_RCPI3, v1);
163f4d22c118d4 Sean Wang 2021-01-28  424  		status->signal = status->chain_signal[0];
163f4d22c118d4 Sean Wang 2021-01-28  425  
163f4d22c118d4 Sean Wang 2021-01-28  426  		for (i = 1; i < hweight8(mphy->antenna_mask); i++) {
163f4d22c118d4 Sean Wang 2021-01-28  427  			if (!(status->chains & BIT(i)))
163f4d22c118d4 Sean Wang 2021-01-28  428  				continue;
163f4d22c118d4 Sean Wang 2021-01-28  429  
163f4d22c118d4 Sean Wang 2021-01-28  430  			status->signal = max(status->signal,
163f4d22c118d4 Sean Wang 2021-01-28  431  					     status->chain_signal[i]);
163f4d22c118d4 Sean Wang 2021-01-28  432  		}
163f4d22c118d4 Sean Wang 2021-01-28  433  
716af9b953825b Sean Wang 2021-02-09  434  		stbc = FIELD_GET(MT_PRXV_STBC, v0);
716af9b953825b Sean Wang 2021-02-09  435  		gi = FIELD_GET(MT_PRXV_SGI, v0);
716af9b953825b Sean Wang 2021-02-09  436  		cck = false;
163f4d22c118d4 Sean Wang 2021-01-28  437  
163f4d22c118d4 Sean Wang 2021-01-28  438  		idx = i = FIELD_GET(MT_PRXV_TX_RATE, v0);
716af9b953825b Sean Wang 2021-02-09  439  		mode = FIELD_GET(MT_PRXV_TX_MODE, v0);
163f4d22c118d4 Sean Wang 2021-01-28  440  
163f4d22c118d4 Sean Wang 2021-01-28  441  		switch (mode) {
163f4d22c118d4 Sean Wang 2021-01-28  442  		case MT_PHY_TYPE_CCK:
163f4d22c118d4 Sean Wang 2021-01-28  443  			cck = true;
163f4d22c118d4 Sean Wang 2021-01-28  444  			fallthrough;
163f4d22c118d4 Sean Wang 2021-01-28  445  		case MT_PHY_TYPE_OFDM:
163f4d22c118d4 Sean Wang 2021-01-28  446  			i = mt76_get_rate(&dev->mt76, sband, i, cck);
163f4d22c118d4 Sean Wang 2021-01-28  447  			break;
163f4d22c118d4 Sean Wang 2021-01-28  448  		case MT_PHY_TYPE_HT_GF:
163f4d22c118d4 Sean Wang 2021-01-28  449  		case MT_PHY_TYPE_HT:
163f4d22c118d4 Sean Wang 2021-01-28  450  			status->encoding = RX_ENC_HT;
163f4d22c118d4 Sean Wang 2021-01-28  451  			if (i > 31)
163f4d22c118d4 Sean Wang 2021-01-28  452  				return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  453  			break;
163f4d22c118d4 Sean Wang 2021-01-28  454  		case MT_PHY_TYPE_VHT:
163f4d22c118d4 Sean Wang 2021-01-28  455  			status->nss =
163f4d22c118d4 Sean Wang 2021-01-28  456  				FIELD_GET(MT_PRXV_NSTS, v0) + 1;
163f4d22c118d4 Sean Wang 2021-01-28  457  			status->encoding = RX_ENC_VHT;
163f4d22c118d4 Sean Wang 2021-01-28  458  			if (i > 9)
163f4d22c118d4 Sean Wang 2021-01-28  459  				return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  460  			break;
163f4d22c118d4 Sean Wang 2021-01-28  461  		case MT_PHY_TYPE_HE_MU:
163f4d22c118d4 Sean Wang 2021-01-28  462  			status->flag |= RX_FLAG_RADIOTAP_HE_MU;
163f4d22c118d4 Sean Wang 2021-01-28  463  			fallthrough;
163f4d22c118d4 Sean Wang 2021-01-28  464  		case MT_PHY_TYPE_HE_SU:
163f4d22c118d4 Sean Wang 2021-01-28  465  		case MT_PHY_TYPE_HE_EXT_SU:
163f4d22c118d4 Sean Wang 2021-01-28  466  		case MT_PHY_TYPE_HE_TB:
163f4d22c118d4 Sean Wang 2021-01-28  467  			status->nss =
163f4d22c118d4 Sean Wang 2021-01-28  468  				FIELD_GET(MT_PRXV_NSTS, v0) + 1;
163f4d22c118d4 Sean Wang 2021-01-28  469  			status->encoding = RX_ENC_HE;
163f4d22c118d4 Sean Wang 2021-01-28  470  			status->flag |= RX_FLAG_RADIOTAP_HE;
163f4d22c118d4 Sean Wang 2021-01-28  471  			i &= GENMASK(3, 0);
163f4d22c118d4 Sean Wang 2021-01-28  472  
163f4d22c118d4 Sean Wang 2021-01-28  473  			if (gi <= NL80211_RATE_INFO_HE_GI_3_2)
163f4d22c118d4 Sean Wang 2021-01-28  474  				status->he_gi = gi;
163f4d22c118d4 Sean Wang 2021-01-28  475  
163f4d22c118d4 Sean Wang 2021-01-28  476  			status->he_dcm = !!(idx & MT_PRXV_TX_DCM);
163f4d22c118d4 Sean Wang 2021-01-28  477  			break;
163f4d22c118d4 Sean Wang 2021-01-28  478  		default:
163f4d22c118d4 Sean Wang 2021-01-28  479  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  480  		}
716af9b953825b Sean Wang 2021-02-09  481  
163f4d22c118d4 Sean Wang 2021-01-28  482  		status->rate_idx = i;
163f4d22c118d4 Sean Wang 2021-01-28  483  
716af9b953825b Sean Wang 2021-02-09  484  		switch (FIELD_GET(MT_PRXV_FRAME_MODE, v0)) {
163f4d22c118d4 Sean Wang 2021-01-28  485  		case IEEE80211_STA_RX_BW_20:
163f4d22c118d4 Sean Wang 2021-01-28  486  			break;
163f4d22c118d4 Sean Wang 2021-01-28  487  		case IEEE80211_STA_RX_BW_40:
163f4d22c118d4 Sean Wang 2021-01-28  488  			if (mode & MT_PHY_TYPE_HE_EXT_SU &&
163f4d22c118d4 Sean Wang 2021-01-28  489  			    (idx & MT_PRXV_TX_ER_SU_106T)) {
163f4d22c118d4 Sean Wang 2021-01-28  490  				status->bw = RATE_INFO_BW_HE_RU;
163f4d22c118d4 Sean Wang 2021-01-28  491  				status->he_ru =
163f4d22c118d4 Sean Wang 2021-01-28  492  					NL80211_RATE_INFO_HE_RU_ALLOC_106;
163f4d22c118d4 Sean Wang 2021-01-28  493  			} else {
163f4d22c118d4 Sean Wang 2021-01-28  494  				status->bw = RATE_INFO_BW_40;
163f4d22c118d4 Sean Wang 2021-01-28  495  			}
163f4d22c118d4 Sean Wang 2021-01-28  496  			break;
163f4d22c118d4 Sean Wang 2021-01-28  497  		case IEEE80211_STA_RX_BW_80:
163f4d22c118d4 Sean Wang 2021-01-28  498  			status->bw = RATE_INFO_BW_80;
163f4d22c118d4 Sean Wang 2021-01-28  499  			break;
163f4d22c118d4 Sean Wang 2021-01-28  500  		case IEEE80211_STA_RX_BW_160:
163f4d22c118d4 Sean Wang 2021-01-28  501  			status->bw = RATE_INFO_BW_160;
163f4d22c118d4 Sean Wang 2021-01-28  502  			break;
163f4d22c118d4 Sean Wang 2021-01-28  503  		default:
163f4d22c118d4 Sean Wang 2021-01-28  504  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  505  		}
163f4d22c118d4 Sean Wang 2021-01-28  506  
163f4d22c118d4 Sean Wang 2021-01-28  507  		status->enc_flags |= RX_ENC_FLAG_STBC_MASK * stbc;
163f4d22c118d4 Sean Wang 2021-01-28  508  		if (mode < MT_PHY_TYPE_HE_SU && gi)
163f4d22c118d4 Sean Wang 2021-01-28  509  			status->enc_flags |= RX_ENC_FLAG_SHORT_GI;
716af9b953825b Sean Wang 2021-02-09  510  
716af9b953825b Sean Wang 2021-02-09  511  		if (rxd1 & MT_RXD1_NORMAL_GROUP_5) {
716af9b953825b Sean Wang 2021-02-09  512  			rxd += 18;
716af9b953825b Sean Wang 2021-02-09  513  			if ((u8 *)rxd - skb->data >= skb->len)
716af9b953825b Sean Wang 2021-02-09  514  				return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  515  		}
163f4d22c118d4 Sean Wang 2021-01-28  516  	}
163f4d22c118d4 Sean Wang 2021-01-28  517  
163f4d22c118d4 Sean Wang 2021-01-28  518  	skb_pull(skb, (u8 *)rxd - skb->data + 2 * remove_pad);
163f4d22c118d4 Sean Wang 2021-01-28  519  
163f4d22c118d4 Sean Wang 2021-01-28  520  	if (insert_ccmp_hdr) {
163f4d22c118d4 Sean Wang 2021-01-28  521  		u8 key_id = FIELD_GET(MT_RXD1_NORMAL_KEY_ID, rxd1);
163f4d22c118d4 Sean Wang 2021-01-28  522  
163f4d22c118d4 Sean Wang 2021-01-28  523  		mt76_insert_ccmp_hdr(skb, key_id);
163f4d22c118d4 Sean Wang 2021-01-28  524  	}
163f4d22c118d4 Sean Wang 2021-01-28  525  
163f4d22c118d4 Sean Wang 2021-01-28  526  	if (rxv && status->flag & RX_FLAG_RADIOTAP_HE)
163f4d22c118d4 Sean Wang 2021-01-28  527  		mt7921_mac_decode_he_radiotap(skb, status, rxv, mode);
163f4d22c118d4 Sean Wang 2021-01-28  528  
163f4d22c118d4 Sean Wang 2021-01-28  529  	hdr = mt76_skb_get_hdr(skb);
163f4d22c118d4 Sean Wang 2021-01-28  530  	if (!status->wcid || !ieee80211_is_data_qos(hdr->frame_control))
163f4d22c118d4 Sean Wang 2021-01-28  531  		return 0;
163f4d22c118d4 Sean Wang 2021-01-28  532  
163f4d22c118d4 Sean Wang 2021-01-28  533  	status->aggr = unicast &&
163f4d22c118d4 Sean Wang 2021-01-28  534  		       !ieee80211_is_qos_nullfunc(hdr->frame_control);
163f4d22c118d4 Sean Wang 2021-01-28  535  	status->tid = *ieee80211_get_qos_ctl(hdr) & IEEE80211_QOS_CTL_TID_MASK;
163f4d22c118d4 Sean Wang 2021-01-28  536  	status->seqno = IEEE80211_SEQ_TO_SN(le16_to_cpu(hdr->seq_ctrl));
163f4d22c118d4 Sean Wang 2021-01-28  537  
163f4d22c118d4 Sean Wang 2021-01-28  538  	return 0;
163f4d22c118d4 Sean Wang 2021-01-28  539  }
163f4d22c118d4 Sean Wang 2021-01-28  540  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 67047 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 3/6] mt76: mt7921: fixup rx bitrate statistics
Date: Tue, 09 Feb 2021 21:36:28 +0800	[thread overview]
Message-ID: <202102092134.xp1585XK-lkp@intel.com> (raw)
In-Reply-To: <efdb50d47abef9f2a3f08337c2ed57de74c93159.1612867656.git.lorenzo@kernel.org>

[-- Attachment #1: Type: text/plain, Size: 19165 bytes --]

Hi Lorenzo,

I love your patch! Perhaps something to improve:

[auto build test WARNING on nbd168-wireless/mt76]
[cannot apply to wireless-drivers-next/master wireless-drivers/master v5.11-rc6 next-20210125]
[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]

url:    https://github.com/0day-ci/linux/commits/Lorenzo-Bianconi/mt76-mt7921-multiple-fixes/20210209-190328
base:   https://github.com/nbd168/wireless mt76
config: xtensa-allyesconfig (attached as .config)
compiler: xtensa-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/716af9b953825b6ade758b0ed48ee2ceceaee289
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Lorenzo-Bianconi/mt76-mt7921-multiple-fixes/20210209-190328
        git checkout 716af9b953825b6ade758b0ed48ee2ceceaee289
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=xtensa 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/net/wireless/mediatek/mt76/mt7921/mac.c: In function 'mt7921_mac_fill_rx':
>> drivers/net/wireless/mediatek/mt76/mt7921/mac.c:403:15: warning: variable 'v2' set but not used [-Wunused-but-set-variable]
     403 |   u32 v0, v1, v2;
         |               ^~


vim +/v2 +403 drivers/net/wireless/mediatek/mt76/mt7921/mac.c

163f4d22c118d4 Sean Wang 2021-01-28  287  
163f4d22c118d4 Sean Wang 2021-01-28  288  int mt7921_mac_fill_rx(struct mt7921_dev *dev, struct sk_buff *skb)
163f4d22c118d4 Sean Wang 2021-01-28  289  {
163f4d22c118d4 Sean Wang 2021-01-28  290  	struct mt76_rx_status *status = (struct mt76_rx_status *)skb->cb;
163f4d22c118d4 Sean Wang 2021-01-28  291  	struct mt76_phy *mphy = &dev->mt76.phy;
163f4d22c118d4 Sean Wang 2021-01-28  292  	struct mt7921_phy *phy = &dev->phy;
163f4d22c118d4 Sean Wang 2021-01-28  293  	struct ieee80211_supported_band *sband;
163f4d22c118d4 Sean Wang 2021-01-28  294  	struct ieee80211_hdr *hdr;
163f4d22c118d4 Sean Wang 2021-01-28  295  	__le32 *rxd = (__le32 *)skb->data;
163f4d22c118d4 Sean Wang 2021-01-28  296  	__le32 *rxv = NULL;
163f4d22c118d4 Sean Wang 2021-01-28  297  	u32 mode = 0;
163f4d22c118d4 Sean Wang 2021-01-28  298  	u32 rxd1 = le32_to_cpu(rxd[1]);
163f4d22c118d4 Sean Wang 2021-01-28  299  	u32 rxd2 = le32_to_cpu(rxd[2]);
163f4d22c118d4 Sean Wang 2021-01-28  300  	u32 rxd3 = le32_to_cpu(rxd[3]);
163f4d22c118d4 Sean Wang 2021-01-28  301  	bool unicast, insert_ccmp_hdr = false;
163f4d22c118d4 Sean Wang 2021-01-28  302  	u8 remove_pad;
163f4d22c118d4 Sean Wang 2021-01-28  303  	int i, idx;
163f4d22c118d4 Sean Wang 2021-01-28  304  	u8 chfreq;
163f4d22c118d4 Sean Wang 2021-01-28  305  
163f4d22c118d4 Sean Wang 2021-01-28  306  	memset(status, 0, sizeof(*status));
163f4d22c118d4 Sean Wang 2021-01-28  307  
163f4d22c118d4 Sean Wang 2021-01-28  308  	if (rxd1 & MT_RXD1_NORMAL_BAND_IDX)
163f4d22c118d4 Sean Wang 2021-01-28  309  		return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  310  
163f4d22c118d4 Sean Wang 2021-01-28  311  	if (!test_bit(MT76_STATE_RUNNING, &mphy->state))
163f4d22c118d4 Sean Wang 2021-01-28  312  		return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  313  
163f4d22c118d4 Sean Wang 2021-01-28  314  	chfreq = FIELD_GET(MT_RXD3_NORMAL_CH_FREQ, rxd3);
163f4d22c118d4 Sean Wang 2021-01-28  315  	unicast = FIELD_GET(MT_RXD3_NORMAL_ADDR_TYPE, rxd3) == MT_RXD3_NORMAL_U2M;
163f4d22c118d4 Sean Wang 2021-01-28  316  	idx = FIELD_GET(MT_RXD1_NORMAL_WLAN_IDX, rxd1);
163f4d22c118d4 Sean Wang 2021-01-28  317  	status->wcid = mt7921_rx_get_wcid(dev, idx, unicast);
163f4d22c118d4 Sean Wang 2021-01-28  318  
163f4d22c118d4 Sean Wang 2021-01-28  319  	if (status->wcid) {
163f4d22c118d4 Sean Wang 2021-01-28  320  		struct mt7921_sta *msta;
163f4d22c118d4 Sean Wang 2021-01-28  321  
163f4d22c118d4 Sean Wang 2021-01-28  322  		msta = container_of(status->wcid, struct mt7921_sta, wcid);
163f4d22c118d4 Sean Wang 2021-01-28  323  		spin_lock_bh(&dev->sta_poll_lock);
163f4d22c118d4 Sean Wang 2021-01-28  324  		if (list_empty(&msta->poll_list))
163f4d22c118d4 Sean Wang 2021-01-28  325  			list_add_tail(&msta->poll_list, &dev->sta_poll_list);
163f4d22c118d4 Sean Wang 2021-01-28  326  		spin_unlock_bh(&dev->sta_poll_lock);
163f4d22c118d4 Sean Wang 2021-01-28  327  	}
163f4d22c118d4 Sean Wang 2021-01-28  328  
163f4d22c118d4 Sean Wang 2021-01-28  329  	mt7921_get_status_freq_info(dev, mphy, status, chfreq);
163f4d22c118d4 Sean Wang 2021-01-28  330  
163f4d22c118d4 Sean Wang 2021-01-28  331  	if (status->band == NL80211_BAND_5GHZ)
163f4d22c118d4 Sean Wang 2021-01-28  332  		sband = &mphy->sband_5g.sband;
163f4d22c118d4 Sean Wang 2021-01-28  333  	else
163f4d22c118d4 Sean Wang 2021-01-28  334  		sband = &mphy->sband_2g.sband;
163f4d22c118d4 Sean Wang 2021-01-28  335  
163f4d22c118d4 Sean Wang 2021-01-28  336  	if (!sband->channels)
163f4d22c118d4 Sean Wang 2021-01-28  337  		return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  338  
163f4d22c118d4 Sean Wang 2021-01-28  339  	if (rxd1 & MT_RXD1_NORMAL_FCS_ERR)
163f4d22c118d4 Sean Wang 2021-01-28  340  		status->flag |= RX_FLAG_FAILED_FCS_CRC;
163f4d22c118d4 Sean Wang 2021-01-28  341  
163f4d22c118d4 Sean Wang 2021-01-28  342  	if (rxd1 & MT_RXD1_NORMAL_TKIP_MIC_ERR)
163f4d22c118d4 Sean Wang 2021-01-28  343  		status->flag |= RX_FLAG_MMIC_ERROR;
163f4d22c118d4 Sean Wang 2021-01-28  344  
163f4d22c118d4 Sean Wang 2021-01-28  345  	if (FIELD_GET(MT_RXD1_NORMAL_SEC_MODE, rxd1) != 0 &&
163f4d22c118d4 Sean Wang 2021-01-28  346  	    !(rxd1 & (MT_RXD1_NORMAL_CLM | MT_RXD1_NORMAL_CM))) {
163f4d22c118d4 Sean Wang 2021-01-28  347  		status->flag |= RX_FLAG_DECRYPTED;
163f4d22c118d4 Sean Wang 2021-01-28  348  		status->flag |= RX_FLAG_IV_STRIPPED;
163f4d22c118d4 Sean Wang 2021-01-28  349  		status->flag |= RX_FLAG_MMIC_STRIPPED | RX_FLAG_MIC_STRIPPED;
163f4d22c118d4 Sean Wang 2021-01-28  350  	}
163f4d22c118d4 Sean Wang 2021-01-28  351  
163f4d22c118d4 Sean Wang 2021-01-28  352  	if (!(rxd2 & MT_RXD2_NORMAL_NON_AMPDU)) {
163f4d22c118d4 Sean Wang 2021-01-28  353  		status->flag |= RX_FLAG_AMPDU_DETAILS;
163f4d22c118d4 Sean Wang 2021-01-28  354  
163f4d22c118d4 Sean Wang 2021-01-28  355  		/* all subframes of an A-MPDU have the same timestamp */
163f4d22c118d4 Sean Wang 2021-01-28  356  		if (phy->rx_ampdu_ts != rxd[14]) {
163f4d22c118d4 Sean Wang 2021-01-28  357  			if (!++phy->ampdu_ref)
163f4d22c118d4 Sean Wang 2021-01-28  358  				phy->ampdu_ref++;
163f4d22c118d4 Sean Wang 2021-01-28  359  		}
163f4d22c118d4 Sean Wang 2021-01-28  360  		phy->rx_ampdu_ts = rxd[14];
163f4d22c118d4 Sean Wang 2021-01-28  361  
163f4d22c118d4 Sean Wang 2021-01-28  362  		status->ampdu_ref = phy->ampdu_ref;
163f4d22c118d4 Sean Wang 2021-01-28  363  	}
163f4d22c118d4 Sean Wang 2021-01-28  364  
163f4d22c118d4 Sean Wang 2021-01-28  365  	remove_pad = FIELD_GET(MT_RXD2_NORMAL_HDR_OFFSET, rxd2);
163f4d22c118d4 Sean Wang 2021-01-28  366  
163f4d22c118d4 Sean Wang 2021-01-28  367  	if (rxd2 & MT_RXD2_NORMAL_MAX_LEN_ERROR)
163f4d22c118d4 Sean Wang 2021-01-28  368  		return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  369  
163f4d22c118d4 Sean Wang 2021-01-28  370  	rxd += 6;
163f4d22c118d4 Sean Wang 2021-01-28  371  	if (rxd1 & MT_RXD1_NORMAL_GROUP_4) {
163f4d22c118d4 Sean Wang 2021-01-28  372  		rxd += 4;
163f4d22c118d4 Sean Wang 2021-01-28  373  		if ((u8 *)rxd - skb->data >= skb->len)
163f4d22c118d4 Sean Wang 2021-01-28  374  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  375  	}
163f4d22c118d4 Sean Wang 2021-01-28  376  
163f4d22c118d4 Sean Wang 2021-01-28  377  	if (rxd1 & MT_RXD1_NORMAL_GROUP_1) {
163f4d22c118d4 Sean Wang 2021-01-28  378  		u8 *data = (u8 *)rxd;
163f4d22c118d4 Sean Wang 2021-01-28  379  
163f4d22c118d4 Sean Wang 2021-01-28  380  		if (status->flag & RX_FLAG_DECRYPTED) {
163f4d22c118d4 Sean Wang 2021-01-28  381  			status->iv[0] = data[5];
163f4d22c118d4 Sean Wang 2021-01-28  382  			status->iv[1] = data[4];
163f4d22c118d4 Sean Wang 2021-01-28  383  			status->iv[2] = data[3];
163f4d22c118d4 Sean Wang 2021-01-28  384  			status->iv[3] = data[2];
163f4d22c118d4 Sean Wang 2021-01-28  385  			status->iv[4] = data[1];
163f4d22c118d4 Sean Wang 2021-01-28  386  			status->iv[5] = data[0];
163f4d22c118d4 Sean Wang 2021-01-28  387  
163f4d22c118d4 Sean Wang 2021-01-28  388  			insert_ccmp_hdr = FIELD_GET(MT_RXD2_NORMAL_FRAG, rxd2);
163f4d22c118d4 Sean Wang 2021-01-28  389  		}
163f4d22c118d4 Sean Wang 2021-01-28  390  		rxd += 4;
163f4d22c118d4 Sean Wang 2021-01-28  391  		if ((u8 *)rxd - skb->data >= skb->len)
163f4d22c118d4 Sean Wang 2021-01-28  392  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  393  	}
163f4d22c118d4 Sean Wang 2021-01-28  394  
163f4d22c118d4 Sean Wang 2021-01-28  395  	if (rxd1 & MT_RXD1_NORMAL_GROUP_2) {
163f4d22c118d4 Sean Wang 2021-01-28  396  		rxd += 2;
163f4d22c118d4 Sean Wang 2021-01-28  397  		if ((u8 *)rxd - skb->data >= skb->len)
163f4d22c118d4 Sean Wang 2021-01-28  398  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  399  	}
163f4d22c118d4 Sean Wang 2021-01-28  400  
163f4d22c118d4 Sean Wang 2021-01-28  401  	/* RXD Group 3 - P-RXV */
163f4d22c118d4 Sean Wang 2021-01-28  402  	if (rxd1 & MT_RXD1_NORMAL_GROUP_3) {
163f4d22c118d4 Sean Wang 2021-01-28 @403  		u32 v0, v1, v2;
716af9b953825b Sean Wang 2021-02-09  404  		u8 stbc, gi;
716af9b953825b Sean Wang 2021-02-09  405  		bool cck;
163f4d22c118d4 Sean Wang 2021-01-28  406  
163f4d22c118d4 Sean Wang 2021-01-28  407  		rxv = rxd;
163f4d22c118d4 Sean Wang 2021-01-28  408  		rxd += 2;
163f4d22c118d4 Sean Wang 2021-01-28  409  		if ((u8 *)rxd - skb->data >= skb->len)
163f4d22c118d4 Sean Wang 2021-01-28  410  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  411  
163f4d22c118d4 Sean Wang 2021-01-28  412  		v0 = le32_to_cpu(rxv[0]);
163f4d22c118d4 Sean Wang 2021-01-28  413  		v1 = le32_to_cpu(rxv[1]);
163f4d22c118d4 Sean Wang 2021-01-28  414  		v2 = le32_to_cpu(rxv[2]);
163f4d22c118d4 Sean Wang 2021-01-28  415  
163f4d22c118d4 Sean Wang 2021-01-28  416  		if (v0 & MT_PRXV_HT_AD_CODE)
163f4d22c118d4 Sean Wang 2021-01-28  417  			status->enc_flags |= RX_ENC_FLAG_LDPC;
163f4d22c118d4 Sean Wang 2021-01-28  418  
163f4d22c118d4 Sean Wang 2021-01-28  419  		status->chains = mphy->antenna_mask;
163f4d22c118d4 Sean Wang 2021-01-28  420  		status->chain_signal[0] = to_rssi(MT_PRXV_RCPI0, v1);
163f4d22c118d4 Sean Wang 2021-01-28  421  		status->chain_signal[1] = to_rssi(MT_PRXV_RCPI1, v1);
163f4d22c118d4 Sean Wang 2021-01-28  422  		status->chain_signal[2] = to_rssi(MT_PRXV_RCPI2, v1);
163f4d22c118d4 Sean Wang 2021-01-28  423  		status->chain_signal[3] = to_rssi(MT_PRXV_RCPI3, v1);
163f4d22c118d4 Sean Wang 2021-01-28  424  		status->signal = status->chain_signal[0];
163f4d22c118d4 Sean Wang 2021-01-28  425  
163f4d22c118d4 Sean Wang 2021-01-28  426  		for (i = 1; i < hweight8(mphy->antenna_mask); i++) {
163f4d22c118d4 Sean Wang 2021-01-28  427  			if (!(status->chains & BIT(i)))
163f4d22c118d4 Sean Wang 2021-01-28  428  				continue;
163f4d22c118d4 Sean Wang 2021-01-28  429  
163f4d22c118d4 Sean Wang 2021-01-28  430  			status->signal = max(status->signal,
163f4d22c118d4 Sean Wang 2021-01-28  431  					     status->chain_signal[i]);
163f4d22c118d4 Sean Wang 2021-01-28  432  		}
163f4d22c118d4 Sean Wang 2021-01-28  433  
716af9b953825b Sean Wang 2021-02-09  434  		stbc = FIELD_GET(MT_PRXV_STBC, v0);
716af9b953825b Sean Wang 2021-02-09  435  		gi = FIELD_GET(MT_PRXV_SGI, v0);
716af9b953825b Sean Wang 2021-02-09  436  		cck = false;
163f4d22c118d4 Sean Wang 2021-01-28  437  
163f4d22c118d4 Sean Wang 2021-01-28  438  		idx = i = FIELD_GET(MT_PRXV_TX_RATE, v0);
716af9b953825b Sean Wang 2021-02-09  439  		mode = FIELD_GET(MT_PRXV_TX_MODE, v0);
163f4d22c118d4 Sean Wang 2021-01-28  440  
163f4d22c118d4 Sean Wang 2021-01-28  441  		switch (mode) {
163f4d22c118d4 Sean Wang 2021-01-28  442  		case MT_PHY_TYPE_CCK:
163f4d22c118d4 Sean Wang 2021-01-28  443  			cck = true;
163f4d22c118d4 Sean Wang 2021-01-28  444  			fallthrough;
163f4d22c118d4 Sean Wang 2021-01-28  445  		case MT_PHY_TYPE_OFDM:
163f4d22c118d4 Sean Wang 2021-01-28  446  			i = mt76_get_rate(&dev->mt76, sband, i, cck);
163f4d22c118d4 Sean Wang 2021-01-28  447  			break;
163f4d22c118d4 Sean Wang 2021-01-28  448  		case MT_PHY_TYPE_HT_GF:
163f4d22c118d4 Sean Wang 2021-01-28  449  		case MT_PHY_TYPE_HT:
163f4d22c118d4 Sean Wang 2021-01-28  450  			status->encoding = RX_ENC_HT;
163f4d22c118d4 Sean Wang 2021-01-28  451  			if (i > 31)
163f4d22c118d4 Sean Wang 2021-01-28  452  				return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  453  			break;
163f4d22c118d4 Sean Wang 2021-01-28  454  		case MT_PHY_TYPE_VHT:
163f4d22c118d4 Sean Wang 2021-01-28  455  			status->nss =
163f4d22c118d4 Sean Wang 2021-01-28  456  				FIELD_GET(MT_PRXV_NSTS, v0) + 1;
163f4d22c118d4 Sean Wang 2021-01-28  457  			status->encoding = RX_ENC_VHT;
163f4d22c118d4 Sean Wang 2021-01-28  458  			if (i > 9)
163f4d22c118d4 Sean Wang 2021-01-28  459  				return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  460  			break;
163f4d22c118d4 Sean Wang 2021-01-28  461  		case MT_PHY_TYPE_HE_MU:
163f4d22c118d4 Sean Wang 2021-01-28  462  			status->flag |= RX_FLAG_RADIOTAP_HE_MU;
163f4d22c118d4 Sean Wang 2021-01-28  463  			fallthrough;
163f4d22c118d4 Sean Wang 2021-01-28  464  		case MT_PHY_TYPE_HE_SU:
163f4d22c118d4 Sean Wang 2021-01-28  465  		case MT_PHY_TYPE_HE_EXT_SU:
163f4d22c118d4 Sean Wang 2021-01-28  466  		case MT_PHY_TYPE_HE_TB:
163f4d22c118d4 Sean Wang 2021-01-28  467  			status->nss =
163f4d22c118d4 Sean Wang 2021-01-28  468  				FIELD_GET(MT_PRXV_NSTS, v0) + 1;
163f4d22c118d4 Sean Wang 2021-01-28  469  			status->encoding = RX_ENC_HE;
163f4d22c118d4 Sean Wang 2021-01-28  470  			status->flag |= RX_FLAG_RADIOTAP_HE;
163f4d22c118d4 Sean Wang 2021-01-28  471  			i &= GENMASK(3, 0);
163f4d22c118d4 Sean Wang 2021-01-28  472  
163f4d22c118d4 Sean Wang 2021-01-28  473  			if (gi <= NL80211_RATE_INFO_HE_GI_3_2)
163f4d22c118d4 Sean Wang 2021-01-28  474  				status->he_gi = gi;
163f4d22c118d4 Sean Wang 2021-01-28  475  
163f4d22c118d4 Sean Wang 2021-01-28  476  			status->he_dcm = !!(idx & MT_PRXV_TX_DCM);
163f4d22c118d4 Sean Wang 2021-01-28  477  			break;
163f4d22c118d4 Sean Wang 2021-01-28  478  		default:
163f4d22c118d4 Sean Wang 2021-01-28  479  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  480  		}
716af9b953825b Sean Wang 2021-02-09  481  
163f4d22c118d4 Sean Wang 2021-01-28  482  		status->rate_idx = i;
163f4d22c118d4 Sean Wang 2021-01-28  483  
716af9b953825b Sean Wang 2021-02-09  484  		switch (FIELD_GET(MT_PRXV_FRAME_MODE, v0)) {
163f4d22c118d4 Sean Wang 2021-01-28  485  		case IEEE80211_STA_RX_BW_20:
163f4d22c118d4 Sean Wang 2021-01-28  486  			break;
163f4d22c118d4 Sean Wang 2021-01-28  487  		case IEEE80211_STA_RX_BW_40:
163f4d22c118d4 Sean Wang 2021-01-28  488  			if (mode & MT_PHY_TYPE_HE_EXT_SU &&
163f4d22c118d4 Sean Wang 2021-01-28  489  			    (idx & MT_PRXV_TX_ER_SU_106T)) {
163f4d22c118d4 Sean Wang 2021-01-28  490  				status->bw = RATE_INFO_BW_HE_RU;
163f4d22c118d4 Sean Wang 2021-01-28  491  				status->he_ru =
163f4d22c118d4 Sean Wang 2021-01-28  492  					NL80211_RATE_INFO_HE_RU_ALLOC_106;
163f4d22c118d4 Sean Wang 2021-01-28  493  			} else {
163f4d22c118d4 Sean Wang 2021-01-28  494  				status->bw = RATE_INFO_BW_40;
163f4d22c118d4 Sean Wang 2021-01-28  495  			}
163f4d22c118d4 Sean Wang 2021-01-28  496  			break;
163f4d22c118d4 Sean Wang 2021-01-28  497  		case IEEE80211_STA_RX_BW_80:
163f4d22c118d4 Sean Wang 2021-01-28  498  			status->bw = RATE_INFO_BW_80;
163f4d22c118d4 Sean Wang 2021-01-28  499  			break;
163f4d22c118d4 Sean Wang 2021-01-28  500  		case IEEE80211_STA_RX_BW_160:
163f4d22c118d4 Sean Wang 2021-01-28  501  			status->bw = RATE_INFO_BW_160;
163f4d22c118d4 Sean Wang 2021-01-28  502  			break;
163f4d22c118d4 Sean Wang 2021-01-28  503  		default:
163f4d22c118d4 Sean Wang 2021-01-28  504  			return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  505  		}
163f4d22c118d4 Sean Wang 2021-01-28  506  
163f4d22c118d4 Sean Wang 2021-01-28  507  		status->enc_flags |= RX_ENC_FLAG_STBC_MASK * stbc;
163f4d22c118d4 Sean Wang 2021-01-28  508  		if (mode < MT_PHY_TYPE_HE_SU && gi)
163f4d22c118d4 Sean Wang 2021-01-28  509  			status->enc_flags |= RX_ENC_FLAG_SHORT_GI;
716af9b953825b Sean Wang 2021-02-09  510  
716af9b953825b Sean Wang 2021-02-09  511  		if (rxd1 & MT_RXD1_NORMAL_GROUP_5) {
716af9b953825b Sean Wang 2021-02-09  512  			rxd += 18;
716af9b953825b Sean Wang 2021-02-09  513  			if ((u8 *)rxd - skb->data >= skb->len)
716af9b953825b Sean Wang 2021-02-09  514  				return -EINVAL;
163f4d22c118d4 Sean Wang 2021-01-28  515  		}
163f4d22c118d4 Sean Wang 2021-01-28  516  	}
163f4d22c118d4 Sean Wang 2021-01-28  517  
163f4d22c118d4 Sean Wang 2021-01-28  518  	skb_pull(skb, (u8 *)rxd - skb->data + 2 * remove_pad);
163f4d22c118d4 Sean Wang 2021-01-28  519  
163f4d22c118d4 Sean Wang 2021-01-28  520  	if (insert_ccmp_hdr) {
163f4d22c118d4 Sean Wang 2021-01-28  521  		u8 key_id = FIELD_GET(MT_RXD1_NORMAL_KEY_ID, rxd1);
163f4d22c118d4 Sean Wang 2021-01-28  522  
163f4d22c118d4 Sean Wang 2021-01-28  523  		mt76_insert_ccmp_hdr(skb, key_id);
163f4d22c118d4 Sean Wang 2021-01-28  524  	}
163f4d22c118d4 Sean Wang 2021-01-28  525  
163f4d22c118d4 Sean Wang 2021-01-28  526  	if (rxv && status->flag & RX_FLAG_RADIOTAP_HE)
163f4d22c118d4 Sean Wang 2021-01-28  527  		mt7921_mac_decode_he_radiotap(skb, status, rxv, mode);
163f4d22c118d4 Sean Wang 2021-01-28  528  
163f4d22c118d4 Sean Wang 2021-01-28  529  	hdr = mt76_skb_get_hdr(skb);
163f4d22c118d4 Sean Wang 2021-01-28  530  	if (!status->wcid || !ieee80211_is_data_qos(hdr->frame_control))
163f4d22c118d4 Sean Wang 2021-01-28  531  		return 0;
163f4d22c118d4 Sean Wang 2021-01-28  532  
163f4d22c118d4 Sean Wang 2021-01-28  533  	status->aggr = unicast &&
163f4d22c118d4 Sean Wang 2021-01-28  534  		       !ieee80211_is_qos_nullfunc(hdr->frame_control);
163f4d22c118d4 Sean Wang 2021-01-28  535  	status->tid = *ieee80211_get_qos_ctl(hdr) & IEEE80211_QOS_CTL_TID_MASK;
163f4d22c118d4 Sean Wang 2021-01-28  536  	status->seqno = IEEE80211_SEQ_TO_SN(le16_to_cpu(hdr->seq_ctrl));
163f4d22c118d4 Sean Wang 2021-01-28  537  
163f4d22c118d4 Sean Wang 2021-01-28  538  	return 0;
163f4d22c118d4 Sean Wang 2021-01-28  539  }
163f4d22c118d4 Sean Wang 2021-01-28  540  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 67047 bytes --]

  reply	other threads:[~2021-02-09 13:38 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-09 10:54 [PATCH 0/6] mt76: mt7921: multiple fixes Lorenzo Bianconi
2021-02-09 10:54 ` [PATCH 1/6] mt76: mt7921: switch to new api for hardware beacon filter Lorenzo Bianconi
2021-02-09 10:54 ` [PATCH 2/6] mt76: connac: fix up the setting for ht40 mode in mt76_connac_mcu_uni_add_bss Lorenzo Bianconi
2021-02-09 10:54 ` [PATCH 3/6] mt76: mt7921: fixup rx bitrate statistics Lorenzo Bianconi
2021-02-09 13:36   ` kernel test robot [this message]
2021-02-09 13:36     ` kernel test robot
2021-02-09 10:54 ` [PATCH 4/6] mt76: mt7921: add flush operation Lorenzo Bianconi
2021-02-09 10:54 ` [PATCH 5/6] mt76: mt7921: fix uninitialized pointer access in mt7921_get_wtbl_info Lorenzo Bianconi
2021-02-09 10:54 ` [PATCH 6/6] mt76: connac: update sched_scan cmd usage Lorenzo Bianconi

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=202102092134.xp1585XK-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=lorenzo.bianconi@redhat.com \
    --cc=lorenzo@kernel.org \
    --cc=nbd@nbd.name \
    --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 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.