ATH10K Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [bug report] ath10k: get the legacy rate index to update the txrate table
@ 2018-10-10 11:05 Dan Carpenter
  0 siblings, 0 replies; only message in thread
From: Dan Carpenter @ 2018-10-10 11:05 UTC (permalink / raw)
  To: akolli; +Cc: ath10k

Hello Anilkumar Kolli,

The patch 0189dbd71cbd: "ath10k: get the legacy rate index to update
the txrate table" from Sep 4, 2018, leads to the following static
checker warning:

	drivers/net/wireless/ath/ath10k/htt_rx.c:2788 ath10k_update_per_peer_tx_stats()
	warn: impossible condition '(rate_idx < 0) => (0-255 < 0)'

drivers/net/wireless/ath/ath10k/htt_rx.c
  2750  static void
  2751  ath10k_update_per_peer_tx_stats(struct ath10k *ar,
  2752                                  struct ieee80211_sta *sta,
  2753                                  struct ath10k_per_peer_tx_stats *peer_stats)
  2754  {
  2755          struct ath10k_sta *arsta = (struct ath10k_sta *)sta->drv_priv;
  2756          u8 rate = 0, rate_idx = 0, sgi;
                ^^           ^^^^^^^^

  2757          struct rate_info txrate;
  2758  
  2759          lockdep_assert_held(&ar->data_lock);
  2760  
  2761          txrate.flags = ATH10K_HW_PREAMBLE(peer_stats->ratecode);
  2762          txrate.bw = ATH10K_HW_BW(peer_stats->flags);
  2763          txrate.nss = ATH10K_HW_NSS(peer_stats->ratecode);
  2764          txrate.mcs = ATH10K_HW_MCS_RATE(peer_stats->ratecode);
  2765          sgi = ATH10K_HW_GI(peer_stats->flags);
  2766  
  2767          if (txrate.flags == WMI_RATE_PREAMBLE_VHT && txrate.mcs > 9) {
  2768                  ath10k_warn(ar, "Invalid VHT mcs %hhd peer stats",  txrate.mcs);
  2769                  return;
  2770          }
  2771  
  2772          if (txrate.flags == WMI_RATE_PREAMBLE_HT &&
  2773              (txrate.mcs > 7 || txrate.nss < 1)) {
  2774                  ath10k_warn(ar, "Invalid HT mcs %hhd nss %hhd peer stats",
  2775                              txrate.mcs, txrate.nss);
  2776                  return;
  2777          }
  2778  
  2779          memset(&arsta->txrate, 0, sizeof(arsta->txrate));
  2780  
  2781          if (txrate.flags == WMI_RATE_PREAMBLE_CCK ||
  2782              txrate.flags == WMI_RATE_PREAMBLE_OFDM) {
  2783                  rate = ATH10K_HW_LEGACY_RATE(peer_stats->ratecode);
  2784                  /* This is hacky, FW sends CCK rate 5.5Mbps as 6 */
  2785                  if (rate == 6 && txrate.flags == WMI_RATE_PREAMBLE_CCK)
  2786                          rate = 5;
  2787                  rate_idx = ath10k_get_legacy_rate_idx(ar, rate);
  2788                  if (rate_idx < 0)
                            ^^^^^^^^^^^^
Impossible

  2789                          return;
  2790                  arsta->txrate.legacy = rate;
  2791          } else if (txrate.flags == WMI_RATE_PREAMBLE_HT) {
  2792                  arsta->txrate.flags = RATE_INFO_FLAGS_MCS;
  2793                  arsta->txrate.mcs = txrate.mcs + 8 * (txrate.nss - 1);

regards,
dan carpenter

_______________________________________________
ath10k mailing list
ath10k@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/ath10k

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

only message in thread, other threads:[~2018-10-10 11:05 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-10 11:05 [bug report] ath10k: get the legacy rate index to update the txrate table Dan Carpenter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox