Browse Source

qcacld-3.0: Set the variables BW 20 MHz of eht cap

Currently, if AP advertises it supports BW 40 & 80 MHz in
5 GHz and 6 GHz in HE Phy Capability IE, driver does not set
the varibles such as bw_20_rx_max_nss_for_mcs_0_to_7 etc
in function lim_ieee80211_unpack_ehtcap. When STA is only
set to support channel width 20 MHz, then it invokes function
lim_populate_eht_20only_mcs_set and causes the intersection
result EHT RxMCSmap 0 TxMCSmap 0 when set to fw.

Change-Id: I9e52fad7f5e429b05402e4413f7599c01d2e50d0
CRs-Fixed: 3261970
Paul Zhang 2 years ago
parent
commit
8c2950c03a
1 changed files with 16 additions and 0 deletions
  1. 16 0
      core/mac/src/sys/legacy/src/utils/src/parser_api.c

+ 16 - 0
core/mac/src/sys/legacy/src/utils/src/parser_api.c

@@ -8233,33 +8233,49 @@ QDF_STATUS lim_ieee80211_unpack_ehtcap(const uint8_t *eht_cap_ie,
 				ehtcap_ie_get(ehtcap->mcs_nss_map_bytes[idx],
 					      EHTCAP_RX_MCS_NSS_MAP_IDX,
 					      EHTCAP_RX_MCS_NSS_MAP_BITS);
+			dot11f_eht_cap->bw_20_rx_max_nss_for_mcs_0_to_7 =
+			     dot11f_eht_cap->bw_le_80_rx_max_nss_for_mcs_0_to_9;
+			dot11f_eht_cap->bw_20_rx_max_nss_for_mcs_8_and_9 =
+			     dot11f_eht_cap->bw_le_80_rx_max_nss_for_mcs_0_to_9;
 
 			dot11f_eht_cap->bw_le_80_tx_max_nss_for_mcs_0_to_9 =
 				ehtcap_ie_get(ehtcap->mcs_nss_map_bytes[idx],
 					      EHTCAP_TX_MCS_NSS_MAP_IDX,
 					      EHTCAP_TX_MCS_NSS_MAP_BITS);
+			dot11f_eht_cap->bw_20_tx_max_nss_for_mcs_0_to_7 =
+			     dot11f_eht_cap->bw_le_80_tx_max_nss_for_mcs_0_to_9;
+			dot11f_eht_cap->bw_20_tx_max_nss_for_mcs_8_and_9 =
+			     dot11f_eht_cap->bw_le_80_tx_max_nss_for_mcs_0_to_9;
 			idx++;
 
 			dot11f_eht_cap->bw_le_80_rx_max_nss_for_mcs_10_and_11 =
 				ehtcap_ie_get(ehtcap->mcs_nss_map_bytes[idx],
 					      EHTCAP_RX_MCS_NSS_MAP_IDX,
 					      EHTCAP_RX_MCS_NSS_MAP_BITS);
+			dot11f_eht_cap->bw_20_rx_max_nss_for_mcs_10_and_11 =
+			  dot11f_eht_cap->bw_le_80_rx_max_nss_for_mcs_10_and_11;
 
 			dot11f_eht_cap->bw_le_80_tx_max_nss_for_mcs_10_and_11 =
 				ehtcap_ie_get(ehtcap->mcs_nss_map_bytes[idx],
 					      EHTCAP_TX_MCS_NSS_MAP_IDX,
 					      EHTCAP_TX_MCS_NSS_MAP_BITS);
+			dot11f_eht_cap->bw_20_tx_max_nss_for_mcs_10_and_11 =
+			  dot11f_eht_cap->bw_le_80_tx_max_nss_for_mcs_10_and_11;
 			idx++;
 
 			dot11f_eht_cap->bw_le_80_rx_max_nss_for_mcs_12_and_13 =
 				ehtcap_ie_get(ehtcap->mcs_nss_map_bytes[idx],
 					      EHTCAP_RX_MCS_NSS_MAP_IDX,
 					      EHTCAP_RX_MCS_NSS_MAP_BITS);
+			dot11f_eht_cap->bw_20_rx_max_nss_for_mcs_12_and_13 =
+			  dot11f_eht_cap->bw_le_80_rx_max_nss_for_mcs_12_and_13;
 
 			dot11f_eht_cap->bw_le_80_tx_max_nss_for_mcs_12_and_13 =
 				ehtcap_ie_get(ehtcap->mcs_nss_map_bytes[idx],
 					      EHTCAP_TX_MCS_NSS_MAP_IDX,
 					      EHTCAP_TX_MCS_NSS_MAP_BITS);
+			dot11f_eht_cap->bw_20_tx_max_nss_for_mcs_12_and_13 =
+			  dot11f_eht_cap->bw_le_80_tx_max_nss_for_mcs_12_and_13;
 			idx++;
 		}