tree: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git pending head: c9a516b946c4b3ce25d422890ca78d0ca730b065 commit: 1b8bb94c0612cf32e418e90ae93cf37214d84669 [8/17] ath11k: report tx bitrate for iw wlan station dump config: microblaze-randconfig-m031-20211222 (https://download.01.org/0day-ci/archive/20211223/202112230637.BasxPV7i-lkp@intel.com/config) compiler: microblaze-linux-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Dan Carpenter smatch warnings: drivers/net/wireless/ath/ath11k/dp_tx.c:511 ath11k_dp_tx_update_txcompl() error: uninitialized symbol 'rate_idx'. vim +/rate_idx +511 drivers/net/wireless/ath/ath11k/dp_tx.c 1b8bb94c0612cf Wen Gong 2021-12-20 418 void ath11k_dp_tx_update_txcompl(struct ath11k *ar, struct hal_tx_status *ts) 1b8bb94c0612cf Wen Gong 2021-12-20 419 { 1b8bb94c0612cf Wen Gong 2021-12-20 420 struct ath11k_base *ab = ar->ab; 1b8bb94c0612cf Wen Gong 2021-12-20 421 struct ath11k_per_peer_tx_stats *peer_stats = &ar->cached_stats; 1b8bb94c0612cf Wen Gong 2021-12-20 422 enum hal_tx_rate_stats_pkt_type pkt_type; 1b8bb94c0612cf Wen Gong 2021-12-20 423 enum hal_tx_rate_stats_sgi sgi; 1b8bb94c0612cf Wen Gong 2021-12-20 424 enum hal_tx_rate_stats_bw bw; 1b8bb94c0612cf Wen Gong 2021-12-20 425 struct ath11k_peer *peer; 1b8bb94c0612cf Wen Gong 2021-12-20 426 struct ath11k_sta *arsta; 1b8bb94c0612cf Wen Gong 2021-12-20 427 struct ieee80211_sta *sta; 1b8bb94c0612cf Wen Gong 2021-12-20 428 u16 rate, ru_tones; 1b8bb94c0612cf Wen Gong 2021-12-20 429 u8 mcs, rate_idx, ofdma; 1b8bb94c0612cf Wen Gong 2021-12-20 430 int ret; 1b8bb94c0612cf Wen Gong 2021-12-20 431 1b8bb94c0612cf Wen Gong 2021-12-20 432 spin_lock_bh(&ab->base_lock); 1b8bb94c0612cf Wen Gong 2021-12-20 433 peer = ath11k_peer_find_by_id(ab, ts->peer_id); 1b8bb94c0612cf Wen Gong 2021-12-20 434 if (!peer || !peer->sta) { 1b8bb94c0612cf Wen Gong 2021-12-20 435 ath11k_dbg(ab, ATH11K_DBG_DP_TX, 1b8bb94c0612cf Wen Gong 2021-12-20 436 "failed to find the peer by id %u\n", ts->peer_id); 1b8bb94c0612cf Wen Gong 2021-12-20 437 goto err_out; 1b8bb94c0612cf Wen Gong 2021-12-20 438 } 1b8bb94c0612cf Wen Gong 2021-12-20 439 1b8bb94c0612cf Wen Gong 2021-12-20 440 sta = peer->sta; 1b8bb94c0612cf Wen Gong 2021-12-20 441 arsta = (struct ath11k_sta *)sta->drv_priv; 1b8bb94c0612cf Wen Gong 2021-12-20 442 1b8bb94c0612cf Wen Gong 2021-12-20 443 memset(&arsta->txrate, 0, sizeof(arsta->txrate)); 1b8bb94c0612cf Wen Gong 2021-12-20 444 pkt_type = FIELD_GET(HAL_TX_RATE_STATS_INFO0_PKT_TYPE, 1b8bb94c0612cf Wen Gong 2021-12-20 445 ts->rate_stats); 1b8bb94c0612cf Wen Gong 2021-12-20 446 mcs = FIELD_GET(HAL_TX_RATE_STATS_INFO0_MCS, 1b8bb94c0612cf Wen Gong 2021-12-20 447 ts->rate_stats); 1b8bb94c0612cf Wen Gong 2021-12-20 448 sgi = FIELD_GET(HAL_TX_RATE_STATS_INFO0_SGI, 1b8bb94c0612cf Wen Gong 2021-12-20 449 ts->rate_stats); 1b8bb94c0612cf Wen Gong 2021-12-20 450 bw = FIELD_GET(HAL_TX_RATE_STATS_INFO0_BW, ts->rate_stats); 1b8bb94c0612cf Wen Gong 2021-12-20 451 ru_tones = FIELD_GET(HAL_TX_RATE_STATS_INFO0_TONES_IN_RU, ts->rate_stats); 1b8bb94c0612cf Wen Gong 2021-12-20 452 ofdma = FIELD_GET(HAL_TX_RATE_STATS_INFO0_OFDMA_TX, ts->rate_stats); 1b8bb94c0612cf Wen Gong 2021-12-20 453 1b8bb94c0612cf Wen Gong 2021-12-20 454 /* This is to prefer choose the real NSS value arsta->last_txrate.nss, 1b8bb94c0612cf Wen Gong 2021-12-20 455 * if it is invalid, then choose the NSS value while assoc. 1b8bb94c0612cf Wen Gong 2021-12-20 456 */ 1b8bb94c0612cf Wen Gong 2021-12-20 457 if (arsta->last_txrate.nss) 1b8bb94c0612cf Wen Gong 2021-12-20 458 arsta->txrate.nss = arsta->last_txrate.nss; 1b8bb94c0612cf Wen Gong 2021-12-20 459 else 1b8bb94c0612cf Wen Gong 2021-12-20 460 arsta->txrate.nss = arsta->peer_nss; 1b8bb94c0612cf Wen Gong 2021-12-20 461 1b8bb94c0612cf Wen Gong 2021-12-20 462 if (pkt_type == HAL_TX_RATE_STATS_PKT_TYPE_11A || 1b8bb94c0612cf Wen Gong 2021-12-20 463 pkt_type == HAL_TX_RATE_STATS_PKT_TYPE_11B) { 1b8bb94c0612cf Wen Gong 2021-12-20 464 ret = ath11k_mac_hw_ratecode_to_legacy_rate(mcs, 1b8bb94c0612cf Wen Gong 2021-12-20 465 pkt_type, 1b8bb94c0612cf Wen Gong 2021-12-20 466 &rate_idx, 1b8bb94c0612cf Wen Gong 2021-12-20 467 &rate); 1b8bb94c0612cf Wen Gong 2021-12-20 468 if (ret < 0) 1b8bb94c0612cf Wen Gong 2021-12-20 469 goto err_out; "rate_idx" not initialized on other paths. 1b8bb94c0612cf Wen Gong 2021-12-20 470 arsta->txrate.legacy = rate; 1b8bb94c0612cf Wen Gong 2021-12-20 471 } else if (pkt_type == HAL_TX_RATE_STATS_PKT_TYPE_11N) { 1b8bb94c0612cf Wen Gong 2021-12-20 472 if (mcs > 7) { 1b8bb94c0612cf Wen Gong 2021-12-20 473 ath11k_warn(ab, "Invalid HT mcs index %d\n", mcs); 1b8bb94c0612cf Wen Gong 2021-12-20 474 goto err_out; 1b8bb94c0612cf Wen Gong 2021-12-20 475 } 1b8bb94c0612cf Wen Gong 2021-12-20 476 1b8bb94c0612cf Wen Gong 2021-12-20 477 if (arsta->txrate.nss != 0) 1b8bb94c0612cf Wen Gong 2021-12-20 478 arsta->txrate.mcs = mcs + 8 * (arsta->txrate.nss - 1); 1b8bb94c0612cf Wen Gong 2021-12-20 479 arsta->txrate.flags = RATE_INFO_FLAGS_MCS; 1b8bb94c0612cf Wen Gong 2021-12-20 480 if (sgi) 1b8bb94c0612cf Wen Gong 2021-12-20 481 arsta->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI; 1b8bb94c0612cf Wen Gong 2021-12-20 482 } else if (pkt_type == HAL_TX_RATE_STATS_PKT_TYPE_11AC) { 1b8bb94c0612cf Wen Gong 2021-12-20 483 if (mcs > 9) { 1b8bb94c0612cf Wen Gong 2021-12-20 484 ath11k_warn(ab, "Invalid VHT mcs index %d\n", mcs); 1b8bb94c0612cf Wen Gong 2021-12-20 485 goto err_out; 1b8bb94c0612cf Wen Gong 2021-12-20 486 } 1b8bb94c0612cf Wen Gong 2021-12-20 487 1b8bb94c0612cf Wen Gong 2021-12-20 488 arsta->txrate.mcs = mcs; 1b8bb94c0612cf Wen Gong 2021-12-20 489 arsta->txrate.flags = RATE_INFO_FLAGS_VHT_MCS; 1b8bb94c0612cf Wen Gong 2021-12-20 490 if (sgi) 1b8bb94c0612cf Wen Gong 2021-12-20 491 arsta->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI; 1b8bb94c0612cf Wen Gong 2021-12-20 492 } else if (pkt_type == HAL_TX_RATE_STATS_PKT_TYPE_11AX) { 1b8bb94c0612cf Wen Gong 2021-12-20 493 if (mcs > 11) { 1b8bb94c0612cf Wen Gong 2021-12-20 494 ath11k_warn(ab, "Invalid HE mcs index %d\n", mcs); 1b8bb94c0612cf Wen Gong 2021-12-20 495 goto err_out; 1b8bb94c0612cf Wen Gong 2021-12-20 496 } 1b8bb94c0612cf Wen Gong 2021-12-20 497 1b8bb94c0612cf Wen Gong 2021-12-20 498 arsta->txrate.mcs = mcs; 1b8bb94c0612cf Wen Gong 2021-12-20 499 arsta->txrate.flags = RATE_INFO_FLAGS_HE_MCS; 1b8bb94c0612cf Wen Gong 2021-12-20 500 arsta->txrate.he_gi = ath11k_mac_he_gi_to_nl80211_he_gi(sgi); 1b8bb94c0612cf Wen Gong 2021-12-20 501 } 1b8bb94c0612cf Wen Gong 2021-12-20 502 1b8bb94c0612cf Wen Gong 2021-12-20 503 arsta->txrate.bw = ath11k_mac_bw_to_mac80211_bw(bw); 1b8bb94c0612cf Wen Gong 2021-12-20 504 if (ofdma && pkt_type == HAL_TX_RATE_STATS_PKT_TYPE_11AX) { 1b8bb94c0612cf Wen Gong 2021-12-20 505 arsta->txrate.bw = RATE_INFO_BW_HE_RU; 1b8bb94c0612cf Wen Gong 2021-12-20 506 arsta->txrate.he_ru_alloc = 1b8bb94c0612cf Wen Gong 2021-12-20 507 ath11k_mac_he_ru_tones_to_nl80211_he_ru_alloc(ru_tones); 1b8bb94c0612cf Wen Gong 2021-12-20 508 } 1b8bb94c0612cf Wen Gong 2021-12-20 509 1b8bb94c0612cf Wen Gong 2021-12-20 510 if (ath11k_debugfs_is_extd_tx_stats_enabled(ar)) 1b8bb94c0612cf Wen Gong 2021-12-20 @511 ath11k_debugfs_sta_add_tx_stats(arsta, peer_stats, rate_idx); ^^^^^^^^ 1b8bb94c0612cf Wen Gong 2021-12-20 512 1b8bb94c0612cf Wen Gong 2021-12-20 513 err_out: 1b8bb94c0612cf Wen Gong 2021-12-20 514 spin_unlock_bh(&ab->base_lock); 1b8bb94c0612cf Wen Gong 2021-12-20 515 } --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org