]> rtime.felk.cvut.cz Git - hercules2020/nv-tegra/linux-4.4.git/commitdiff
ath10k: print invalid mcs reported in rx descriptor
authorManikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>
Wed, 2 Sep 2015 14:05:27 +0000 (17:05 +0300)
committerKalle Valo <kvalo@qca.qualcomm.com>
Wed, 9 Sep 2015 09:45:00 +0000 (12:45 +0300)
Sometimes hardware reports invalid mcs index in rx descriptor
when operating in VHT80 mode and all packets with invalid mcs
will be eventually dropped in mac80211. This issue is observerd during
testing on QCA99X0 chipsets.

This patch adds a warn message for dumping the rx desc info which helps
in analysing the issue when invalid mcs is received.

Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/htt_rx.c

index 8ba8fa9004cfc67fb3f68cfba9d859c45c2a923c..606c1a34f004026afd31991bfc277583cf1b3ea6 100644 (file)
@@ -717,6 +717,29 @@ static void ath10k_htt_rx_h_rates(struct ath10k *ar,
                        nss = 1;
                }
 
+               if (mcs > 0x09) {
+                       ath10k_warn(ar, "invalid MCS received %u\n", mcs);
+                       ath10k_warn(ar, "rxd %08x mpdu start %08x %08x msdu start %08x %08x ppdu start %08x %08x %08x %08x %08x\n",
+                                   __le32_to_cpu(rxd->attention.flags),
+                                   __le32_to_cpu(rxd->mpdu_start.info0),
+                                   __le32_to_cpu(rxd->mpdu_start.info1),
+                                   __le32_to_cpu(rxd->msdu_start.common.info0),
+                                   __le32_to_cpu(rxd->msdu_start.common.info1),
+                                   rxd->ppdu_start.info0,
+                                   __le32_to_cpu(rxd->ppdu_start.info1),
+                                   __le32_to_cpu(rxd->ppdu_start.info2),
+                                   __le32_to_cpu(rxd->ppdu_start.info3),
+                                   __le32_to_cpu(rxd->ppdu_start.info4));
+
+                       ath10k_warn(ar, "msdu end %08x mpdu end %08x\n",
+                                   __le32_to_cpu(rxd->msdu_end.common.info0),
+                                   __le32_to_cpu(rxd->mpdu_end.info0));
+
+                       ath10k_dbg_dump(ar, ATH10K_DBG_HTT_DUMP, NULL,
+                                       "rx desc msdu payload: ",
+                                       rxd->msdu_payload, 50);
+               }
+
                status->rate_idx = mcs;
                status->vht_nss = nss;