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 --]
next prev parent 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.