mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-26 17:01:14 +00:00
789a0bac35
Synchronize the ath11k backports with the current ath-next tree. This brings in actually setting the MU-MIMO parameters in HW and 6GHz regulatory support along with some minor resource handling fixes. This allows to easily backport further fixes as cherry picking them has started requiring manual conflict resolution. Signed-off-by: Robert Marko <robimarko@gmail.com>
65 lines
2.3 KiB
Diff
65 lines
2.3 KiB
Diff
From ebf82988f844dd98e6b007cffcc5e95986056995 Mon Sep 17 00:00:00 2001
|
|
From: Muna Sinada <quic_msinada@quicinc.com>
|
|
Date: Fri, 24 Feb 2023 12:28:04 +0200
|
|
Subject: [PATCH] wifi: ath11k: generate rx and tx mcs maps for supported HE
|
|
mcs
|
|
|
|
Generate rx and tx mcs maps in ath11k_mac_set_hemcsmap() and set them
|
|
in supported mcs/nss for HE capabilities.
|
|
|
|
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.4.0.1-00356-QCAHKSWPL_SILICONZ-1
|
|
|
|
Signed-off-by: Muna Sinada <quic_msinada@quicinc.com>
|
|
Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com>
|
|
Link: https://lore.kernel.org/r/1666128501-12364-5-git-send-email-quic_msinada@quicinc.com
|
|
---
|
|
drivers/net/wireless/ath/ath11k/mac.c | 30 ++++++++++++++++++++-------
|
|
1 file changed, 23 insertions(+), 7 deletions(-)
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
|
@@ -5488,20 +5488,36 @@ static void ath11k_mac_set_hemcsmap(stru
|
|
struct ieee80211_sta_he_cap *he_cap,
|
|
int band)
|
|
{
|
|
- struct ath11k_band_cap *band_cap = &cap->band[band];
|
|
+ u16 txmcs_map, rxmcs_map;
|
|
+ u32 i;
|
|
|
|
+ rxmcs_map = 0;
|
|
+ txmcs_map = 0;
|
|
+ for (i = 0; i < 8; i++) {
|
|
+ if (i < ar->num_tx_chains &&
|
|
+ (ar->cfg_tx_chainmask >> cap->tx_chain_mask_shift) & BIT(i))
|
|
+ txmcs_map |= IEEE80211_HE_MCS_SUPPORT_0_11 << (i * 2);
|
|
+ else
|
|
+ txmcs_map |= IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2);
|
|
+
|
|
+ if (i < ar->num_rx_chains &&
|
|
+ (ar->cfg_rx_chainmask >> cap->tx_chain_mask_shift) & BIT(i))
|
|
+ rxmcs_map |= IEEE80211_HE_MCS_SUPPORT_0_11 << (i * 2);
|
|
+ else
|
|
+ rxmcs_map |= IEEE80211_HE_MCS_NOT_SUPPORTED << (i * 2);
|
|
+ }
|
|
he_cap->he_mcs_nss_supp.rx_mcs_80 =
|
|
- cpu_to_le16(band_cap->he_mcs & 0xffff);
|
|
+ cpu_to_le16(rxmcs_map & 0xffff);
|
|
he_cap->he_mcs_nss_supp.tx_mcs_80 =
|
|
- cpu_to_le16(band_cap->he_mcs & 0xffff);
|
|
+ cpu_to_le16(txmcs_map & 0xffff);
|
|
he_cap->he_mcs_nss_supp.rx_mcs_160 =
|
|
- cpu_to_le16((band_cap->he_mcs >> 16) & 0xffff);
|
|
+ cpu_to_le16(rxmcs_map & 0xffff);
|
|
he_cap->he_mcs_nss_supp.tx_mcs_160 =
|
|
- cpu_to_le16((band_cap->he_mcs >> 16) & 0xffff);
|
|
+ cpu_to_le16(txmcs_map & 0xffff);
|
|
he_cap->he_mcs_nss_supp.rx_mcs_80p80 =
|
|
- cpu_to_le16((band_cap->he_mcs >> 16) & 0xffff);
|
|
+ cpu_to_le16(rxmcs_map & 0xffff);
|
|
he_cap->he_mcs_nss_supp.tx_mcs_80p80 =
|
|
- cpu_to_le16((band_cap->he_mcs >> 16) & 0xffff);
|
|
+ cpu_to_le16(txmcs_map & 0xffff);
|
|
}
|
|
|
|
static int ath11k_mac_copy_he_cap(struct ath11k *ar,
|