Bladeren bron

qcacmn: Fix legacy rate and group id in rx_status

In radiotap section of sniffer, fix group id field for vht
and rate field for legacy.

Change-Id: I3c1e2e650548551230d9eca5bc043b690169e844
CRs-fixed: 2143521
sumedh baikady 7 jaren geleden
bovenliggende
commit
2a19fe4317
2 gewijzigde bestanden met toevoegingen van 22 en 20 verwijderingen
  1. 19 16
      hal/wifi3.0/hal_api_mon.h
  2. 3 4
      qdf/linux/src/qdf_nbuf.c

+ 19 - 16
hal/wifi3.0/hal_api_mon.h

@@ -86,22 +86,25 @@
 #define HAL_RX_RECEPTION_TYPE_OFDMA	2
 #define HAL_RX_RECEPTION_TYPE_MU_OFDMA	3
 
-#define HAL_11B_RATE_0MCS	11
-#define HAL_11B_RATE_1MCS	5.5
-#define HAL_11B_RATE_2MCS	2
-#define HAL_11B_RATE_3MCS	1
-#define HAL_11B_RATE_4MCS	11
-#define HAL_11B_RATE_5MCS	5.5
-#define HAL_11B_RATE_6MCS	2
-
-#define HAL_11A_RATE_0MCS	48
-#define HAL_11A_RATE_1MCS	24
-#define HAL_11A_RATE_2MCS	12
-#define HAL_11A_RATE_3MCS	6
-#define HAL_11A_RATE_4MCS	54
-#define HAL_11A_RATE_5MCS	36
-#define HAL_11A_RATE_6MCS	18
-#define HAL_11A_RATE_7MCS	9
+/* Multiply rate by 2 to avoid float point
+ * and get rate in units of 500kbps
+ */
+#define HAL_11B_RATE_0MCS	11*2
+#define HAL_11B_RATE_1MCS	5.5*2
+#define HAL_11B_RATE_2MCS	2*2
+#define HAL_11B_RATE_3MCS	1*2
+#define HAL_11B_RATE_4MCS	11*2
+#define HAL_11B_RATE_5MCS	5.5*2
+#define HAL_11B_RATE_6MCS	2*2
+
+#define HAL_11A_RATE_0MCS	48*2
+#define HAL_11A_RATE_1MCS	24*2
+#define HAL_11A_RATE_2MCS	12*2
+#define HAL_11A_RATE_3MCS	6*2
+#define HAL_11A_RATE_4MCS	54*2
+#define HAL_11A_RATE_5MCS	36*2
+#define HAL_11A_RATE_6MCS	18*2
+#define HAL_11A_RATE_7MCS	9*2
 
 #define HE_GI_0_8 0
 #define HE_GI_1_6 1

+ 3 - 4
qdf/linux/src/qdf_nbuf.c

@@ -66,8 +66,6 @@
 #define qdf_nbuf_users_read refcount_read
 #endif /* KERNEL_VERSION(4, 13, 0) */
 
-#define RATE_MULTIPLIER		2
-
 #define IEEE80211_RADIOTAP_VHT_BW_20	0
 #define IEEE80211_RADIOTAP_VHT_BW_40	1
 #define IEEE80211_RADIOTAP_VHT_BW_80	2
@@ -2992,7 +2990,8 @@ static unsigned int qdf_nbuf_update_radiotap_vht_flags(
 		IEEE80211_RADIOTAP_VHT_KNOWN_GI |
 		IEEE80211_RADIOTAP_VHT_KNOWN_LDPC_EXTRA_OFDM_SYM |
 		IEEE80211_RADIOTAP_VHT_KNOWN_BEAMFORMED |
-		IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH;
+		IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH |
+		IEEE80211_RADIOTAP_VHT_KNOWN_GROUP_ID;
 	put_unaligned_le16(vht_flags, &rtap_buf[rtap_len]);
 	rtap_len += 2;
 
@@ -3225,7 +3224,7 @@ unsigned int qdf_nbuf_update_radiotap(struct mon_rx_status *rx_status,
 	if (!rx_status->ht_flags && !rx_status->vht_flags &&
 	    !rx_status->he_flags) {
 		rthdr->it_present |= cpu_to_le32(1 << IEEE80211_RADIOTAP_RATE);
-		rtap_buf[rtap_len] = rx_status->rate * RATE_MULTIPLIER;
+		rtap_buf[rtap_len] = rx_status->rate;
 	} else
 		rtap_buf[rtap_len] = 0;
 	rtap_len += 1;