Explorar el Código

qcacld-3.0: Fix the Nss config issues in 160MHz

Currently pdev_nss is used to populate VHT and HT capabilities
causing STA to advertise  2NSS capabilities in peer assoc for 160MHz.
Populate the VHT and HT MCS based on Nss value of that session
and send the correct Nss values to FW to use appropriate rates in Tx.

Change-Id: If78e7d4fb2238c1e83ee4f8f71a9ace2fcaddfd9
CRs-Fixed: 1043757
Arif Hussain hace 8 años
padre
commit
74fc571c11

+ 7 - 7
core/mac/src/pe/lim/lim_assoc_utils.c

@@ -1419,7 +1419,7 @@ tSirRetStatus lim_populate_vht_mcs_set(tpAniSirGlobal mac_ctx,
 		QDF_MIN(rates->vhtRxHighestDataRate,
 			peer_vht_caps->rxHighSupDataRate);
 
-	if (session_entry && session_entry->vdev_nss == NSS_2x2_MODE) {
+	if (session_entry && session_entry->nss == NSS_2x2_MODE) {
 		if (mac_ctx->lteCoexAntShare &&
 			IS_24G_CH(session_entry->currentOperChannel)) {
 			if (IS_2X2_CHAIN(session_entry->chainMask))
@@ -1637,7 +1637,7 @@ lim_populate_own_rate_set(tpAniSirGlobal mac_ctx,
 			return eSIR_FAILURE;
 		}
 
-		if (session_entry->vdev_nss == NSS_1x1_MODE)
+		if (session_entry->nss == NSS_1x1_MODE)
 			rates->supportedMCSSet[1] = 0;
 		/*
 		 * if supported MCS Set of the peer is passed in,
@@ -1657,7 +1657,7 @@ lim_populate_own_rate_set(tpAniSirGlobal mac_ctx,
 				       rates->supportedMCSSet[i]);)
 	}
 	lim_populate_vht_mcs_set(mac_ctx, rates, vht_caps,
-			session_entry, session_entry->vdev_nss);
+			session_entry, session_entry->nss);
 
 	return eSIR_SUCCESS;
 }
@@ -1779,7 +1779,7 @@ lim_populate_peer_rate_set(tpAniSirGlobal pMac,
 			       )
 			return eSIR_FAILURE;
 		}
-		if (psessionEntry->vdev_nss == NSS_1x1_MODE)
+		if (psessionEntry->nss == NSS_1x1_MODE)
 			pRates->supportedMCSSet[1] = 0;
 
 		/* if supported MCS Set of the peer is passed in, then do the
@@ -1803,7 +1803,7 @@ lim_populate_peer_rate_set(tpAniSirGlobal pMac,
 			psessionEntry->supported_nss_1x1);
 	}
 	lim_populate_vht_mcs_set(pMac, pRates, pVHTCaps,
-			psessionEntry, psessionEntry->vdev_nss);
+			psessionEntry, psessionEntry->nss);
 	return eSIR_SUCCESS;
 } /*** lim_populate_peer_rate_set() ***/
 
@@ -2009,7 +2009,7 @@ tSirRetStatus lim_populate_matching_rate_set(tpAniSirGlobal mac_ctx,
 			return eSIR_FAILURE;
 		}
 
-		if (session_entry->vdev_nss == NSS_1x1_MODE)
+		if (session_entry->nss == NSS_1x1_MODE)
 			mcs_set[1] = 0;
 
 		for (i = 0; i < val; i++)
@@ -2025,7 +2025,7 @@ tSirRetStatus lim_populate_matching_rate_set(tpAniSirGlobal mac_ctx,
 		}
 	}
 	lim_populate_vht_mcs_set(mac_ctx, &sta_ds->supportedRates, vht_caps,
-				 session_entry, session_entry->vdev_nss);
+				 session_entry, session_entry->nss);
 	/*
 	 * Set the erpEnabled bit if the phy is in G mode and at least
 	 * one A rate is supported

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

@@ -767,7 +767,7 @@ populate_dot11f_ht_caps(tpAniSirGlobal pMac,
 				}
 			}
 		}
-		if (psessionEntry->vdev_nss == NSS_1x1_MODE)
+		if (psessionEntry->nss == NSS_1x1_MODE)
 			pDot11f->supportedMCSSet[1] = 0;
 	}
 
@@ -1116,7 +1116,7 @@ populate_dot11f_vht_caps(tpAniSirGlobal pMac,
 				pDot11f->rxMCSMap |= DISABLE_NSS2_MCS;
 			}
 		}
-		if (psessionEntry->vdev_nss == NSS_1x1_MODE) {
+		if (psessionEntry->nss == NSS_1x1_MODE) {
 			pDot11f->txMCSMap |= DISABLE_NSS2_MCS;
 			pDot11f->rxMCSMap |= DISABLE_NSS2_MCS;
 			pDot11f->txSupDataRate =