mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-20 10:51:27 +00:00
This series is based on * 2020-07-10 ipq6018-ilq-11-0_qca_oem-034672b0676c37b1f4519e5720e18e95fe6236ef Add support for * qsdk kernel/v4.4 * qsdk ethernet subsystem * v5.7 ath11k backport + QualComm staging patches (wlan_ap_1.0) * ath11k-firmware * hostapd/iw/... Feature support * full boot, system detection * sysupgrade to nand * HE support via latest hostapd * driver support for usb, crypto, hwmon, cpufreq, ... Missing * NSS/HW flow offloading - FW blob is not redistributable Using the qsdk v4.4 is an intermediate solution while the vanilla is being tested. Vanilla kernel is almost on feature par. Work has already started to upstream the ethernet and switch drivers. Once complete the target will be fully upstream. Signed-off-by: John Crispin <john@phrozen.org>
81 lines
2.7 KiB
Diff
81 lines
2.7 KiB
Diff
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
|
@@ -1335,6 +1335,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.
|
|
*/
|
|
@@ -5978,7 +5988,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;
|
|
}
|
|
|
|
@@ -5988,7 +5998,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
|
|
@@ -1966,8 +1966,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
|
|
@@ -3908,8 +3908,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
|
|
@@ -116,6 +116,14 @@ struct ath11k_generic_iter {
|
|
|
|
#define ATH11K_CHAN_WIDTH_NUM 8
|
|
|
|
+/* 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);
|