mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-20 19:03:39 +00:00
81 lines
2.8 KiB
Diff
81 lines
2.8 KiB
Diff
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
|
@@ -1740,6 +1740,16 @@ static void ath11k_peer_assoc_h_he(struc
|
|
he_tx_mcs = v;
|
|
break;
|
|
}
|
|
+
|
|
+ if ((he_mcs_mask[0] == 0 || he_mcs_mask[1] == 0) &&
|
|
+ (he_cap->he_cap_elem.phy_cap_info[HECAP_PHYDWORD_4] &
|
|
+ IEEE80211_HE_PHY_CAP4_SU_BEAMFORMEE)) {
|
|
+ arg->peer_vht_caps &= ~IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE;
|
|
+ arg->peer_he_cap_macinfo_internal |=
|
|
+ IEEE80211_HE_DL_MU_SUPPORT_DISABLE <<
|
|
+ IEEE80211_HE_DL_MUMIMO_SUPP_S;
|
|
+ }
|
|
+
|
|
/* Calculate peer NSS capability from HE capabilities if STA
|
|
* supports HE.
|
|
*/
|
|
@@ -6761,7 +6771,7 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
|
* RATEMASK CMD
|
|
*/
|
|
ath11k_warn(ar->ab,
|
|
- "Setting more than one MCS Value in bitrate mask not supported\n");
|
|
+ "Setting VHT MCS range other than 0-7, 0-8 and 0-9 in bitrate mask not supported\n");
|
|
return -EINVAL;
|
|
}
|
|
|
|
@@ -6771,7 +6781,7 @@ ath11k_mac_op_set_bitrate_mask(struct ie
|
|
if (!ath11k_mac_he_mcs_range_present(ar, band, mask) &&
|
|
num_rates > 1) {
|
|
ath11k_warn(ar->ab,
|
|
- "Setting more than one HE MCS Value in bitrate mask not supported\n");
|
|
+ "Setting HE MCS range other than 0-7, 0-9 and 0-11 in bitrate mask not supported\n");
|
|
return -EINVAL;
|
|
}
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
|
@@ -2006,8 +2006,8 @@ int ath11k_wmi_send_peer_assoc_cmd(struc
|
|
FIELD_PREP(WMI_TLV_LEN,
|
|
sizeof(*he_mcs) - TLV_HDR_SIZE);
|
|
|
|
- he_mcs->rx_mcs_set = param->peer_he_rx_mcs_set[i];
|
|
- he_mcs->tx_mcs_set = param->peer_he_tx_mcs_set[i];
|
|
+ he_mcs->rx_mcs_set = param->peer_he_tx_mcs_set[i];
|
|
+ he_mcs->tx_mcs_set = param->peer_he_rx_mcs_set[i];
|
|
ptr += sizeof(*he_mcs);
|
|
}
|
|
|
|
--- a/drivers/net/wireless/ath/ath11k/wmi.h
|
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.h
|
|
@@ -3956,8 +3956,8 @@ struct wmi_vht_rate_set {
|
|
|
|
struct wmi_he_rate_set {
|
|
u32 tlv_header;
|
|
- u32 rx_mcs_set;
|
|
- u32 tx_mcs_set;
|
|
+ u32 rx_mcs_set; /* MCS at which the peer can receive */
|
|
+ u32 tx_mcs_set; /* MCS at which the peer can transmit */
|
|
} __packed;
|
|
|
|
#define MAX_REG_RULES 10
|
|
--- a/drivers/net/wireless/ath/ath11k/mac.h
|
|
+++ b/drivers/net/wireless/ath/ath11k/mac.h
|
|
@@ -122,6 +122,14 @@ struct ath11k_generic_iter {
|
|
#define ATH11K_OBSS_PD_SRG_EN BIT(30)
|
|
#define ATH11K_OBSS_PD_NON_SRG_EN BIT(31)
|
|
|
|
+/* HECAP info internal bits */
|
|
+#define IEEE80211_HE_DL_MUMIMO_SUPP_S 5
|
|
+
|
|
+#define IEEE80211_HE_DL_MU_SUPPORT_DEFAULT 0
|
|
+#define IEEE80211_HE_DL_MU_SUPPORT_DISABLE 1
|
|
+#define IEEE80211_HE_DL_MU_SUPPORT_ENABLE 2
|
|
+#define IEEE80211_HE_DL_MU_SUPPORT_INVALID 3
|
|
+
|
|
extern const struct htt_rx_ring_tlv_filter ath11k_mac_mon_status_filter_default;
|
|
|
|
int ath11k_mac_ap_ps_recalc(struct ath11k *ar);
|