qcacld-3.0: Use peer STA bandwidth for MCS calculation
STA is associating on 20 MHz, whereas the SAP is operating in 80 MHz. During the rate set preparation for the client, instead of intersecting the 20 MHz MCS(sent by the peer in EHT Cap) with the self cap of APUT, the validation happens for the 80 MHz MCS set of STA and APUT. However, while sending peer assoc to firmware, the 20 MHz MCS rate set of the client is being used. To fix this, generate the EHT MCS rate set of the client by intersecting the MCS params corresponding to the STA's assoc channel width. Change-Id: I1baf79a3705922531d2ff3db8199633a35793129 CRs-Fixed: 3849051
This commit is contained in:

committed by
Ravindra Konda

parent
eef3281ef7
commit
5030ad43aa
@@ -1575,7 +1575,7 @@ QDF_STATUS lim_populate_own_rate_set(struct mac_context *mac_ctx,
|
||||
lim_populate_he_mcs_set(mac_ctx, rates, he_caps,
|
||||
session_entry, session_entry->nss);
|
||||
lim_populate_eht_mcs_set(mac_ctx, rates, eht_caps,
|
||||
session_entry, session_entry->nss);
|
||||
session_entry, session_entry->ch_width);
|
||||
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
@@ -1830,7 +1830,7 @@ QDF_STATUS lim_populate_peer_rate_set(struct mac_context *mac,
|
||||
lim_populate_he_mcs_set(mac, pRates, peer_he_caps,
|
||||
pe_session, pe_session->nss);
|
||||
lim_populate_eht_mcs_set(mac, pRates, eht_caps,
|
||||
pe_session, pe_session->nss);
|
||||
pe_session, pe_session->ch_width);
|
||||
|
||||
pe_debug("nss 1x1 %d nss %d", pe_session->supported_nss_1x1,
|
||||
pe_session->nss);
|
||||
@@ -2066,7 +2066,7 @@ QDF_STATUS lim_populate_matching_rate_set(struct mac_context *mac_ctx,
|
||||
lim_populate_he_mcs_set(mac_ctx, &sta_ds->supportedRates, he_caps,
|
||||
session_entry, session_entry->nss);
|
||||
lim_populate_eht_mcs_set(mac_ctx, &sta_ds->supportedRates, eht_caps,
|
||||
session_entry, session_entry->nss);
|
||||
session_entry, sta_ds->ch_width);
|
||||
/*
|
||||
* Set the erpEnabled bit if the phy is in G mode and at least
|
||||
* one A rate is supported
|
||||
|
@@ -3333,7 +3333,7 @@ lim_tdls_populate_eht_mcs(struct mac_context *mac_ctx, tpDphHashNode stads,
|
||||
{
|
||||
lim_populate_eht_mcs_set(mac_ctx, &stads->supportedRates,
|
||||
&stads->eht_config, session_entry,
|
||||
session_entry->nss);
|
||||
session_entry->ch_width);
|
||||
}
|
||||
#else
|
||||
static void
|
||||
|
@@ -8553,7 +8553,7 @@ QDF_STATUS lim_populate_eht_mcs_set(struct mac_context *mac_ctx,
|
||||
struct supported_rates *rates,
|
||||
tDot11fIEeht_cap *peer_eht_caps,
|
||||
struct pe_session *session_entry,
|
||||
uint8_t nss)
|
||||
enum phy_ch_width ch_width)
|
||||
{
|
||||
if ((!peer_eht_caps) || (!peer_eht_caps->present)) {
|
||||
pe_debug("peer not eht capable or eht_caps NULL");
|
||||
@@ -8564,7 +8564,7 @@ QDF_STATUS lim_populate_eht_mcs_set(struct mac_context *mac_ctx,
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
switch (session_entry->ch_width) {
|
||||
switch (ch_width) {
|
||||
case CH_WIDTH_320MHZ:
|
||||
lim_populate_eht_320_mcs_set(mac_ctx, rates, peer_eht_caps);
|
||||
fallthrough;
|
||||
|
@@ -1827,7 +1827,7 @@ QDF_STATUS lim_strip_eht_cap_ie(struct mac_context *mac_ctx,
|
||||
* @rates: pointer to supported rate set
|
||||
* @peer_eht_caps: pointer to peer EHT capabilities
|
||||
* @session_entry: pe session entry
|
||||
* @nss: number of spatial streams
|
||||
* @ch_width: channel width of the association
|
||||
*
|
||||
* Populates EHT mcs rate set based on peer and self capabilities
|
||||
*
|
||||
@@ -1837,7 +1837,7 @@ QDF_STATUS lim_populate_eht_mcs_set(struct mac_context *mac_ctx,
|
||||
struct supported_rates *rates,
|
||||
tDot11fIEeht_cap *peer_eht_caps,
|
||||
struct pe_session *session_entry,
|
||||
uint8_t nss);
|
||||
enum phy_ch_width ch_width);
|
||||
|
||||
/**
|
||||
* lim_update_eht_bw_cap_mcs(): Update eht mcs map per bandwidth
|
||||
@@ -2204,7 +2204,7 @@ QDF_STATUS lim_populate_eht_mcs_set(struct mac_context *mac_ctx,
|
||||
struct supported_rates *rates,
|
||||
tDot11fIEeht_cap *peer_eht_caps,
|
||||
struct pe_session *session_entry,
|
||||
uint8_t nss)
|
||||
enum phy_ch_width ch_width)
|
||||
{
|
||||
return QDF_STATUS_SUCCESS;
|
||||
}
|
||||
|
@@ -8938,6 +8938,7 @@ QDF_STATUS lim_ieee80211_unpack_ehtcap(const uint8_t *eht_cap_ie,
|
||||
ehtcap_ie_get(ehtcap->mcs_nss_map_bytes[idx],
|
||||
EHTCAP_TX_MCS_NSS_MAP_IDX,
|
||||
EHTCAP_TX_MCS_NSS_MAP_BITS);
|
||||
idx++;
|
||||
|
||||
dot11f_eht_cap->bw_20_rx_max_nss_for_mcs_8_and_9 =
|
||||
ehtcap_ie_get(ehtcap->mcs_nss_map_bytes[idx],
|
||||
|
Reference in New Issue
Block a user