mac80211: update support for QAM-256 in 2.4GHz
This commit is contained in:
@@ -12,11 +12,9 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|||||||
drivers/net/wireless/ath/ath10k/mac.c | 6 ++++--
|
drivers/net/wireless/ath/ath10k/mac.c | 6 ++++--
|
||||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
|
|
||||||
index 9c4bf2fdbc0f..8d362ba351e6 100644
|
|
||||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||||
@@ -2749,9 +2749,9 @@ static void ath10k_peer_assoc_h_phymode(struct ath10k *ar,
|
@@ -2749,9 +2749,9 @@ static void ath10k_peer_assoc_h_phymode(
|
||||||
if (sta->deflink.vht_cap.vht_supported &&
|
if (sta->deflink.vht_cap.vht_supported &&
|
||||||
!ath10k_peer_assoc_h_vht_masked(vht_mcs_mask)) {
|
!ath10k_peer_assoc_h_vht_masked(vht_mcs_mask)) {
|
||||||
if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
|
if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
|
||||||
@@ -28,7 +26,7 @@ index 9c4bf2fdbc0f..8d362ba351e6 100644
|
|||||||
} else if (sta->deflink.ht_cap.ht_supported &&
|
} else if (sta->deflink.ht_cap.ht_supported &&
|
||||||
!ath10k_peer_assoc_h_ht_masked(ht_mcs_mask)) {
|
!ath10k_peer_assoc_h_ht_masked(ht_mcs_mask)) {
|
||||||
if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
|
if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
|
||||||
@@ -4998,6 +4998,8 @@ static void ath10k_mac_setup_ht_vht_cap(struct ath10k *ar)
|
@@ -4998,6 +4998,8 @@ static void ath10k_mac_setup_ht_vht_cap(
|
||||||
if (ar->phy_capability & WHAL_WLAN_11G_CAPABILITY) {
|
if (ar->phy_capability & WHAL_WLAN_11G_CAPABILITY) {
|
||||||
band = &ar->mac.sbands[NL80211_BAND_2GHZ];
|
band = &ar->mac.sbands[NL80211_BAND_2GHZ];
|
||||||
band->ht_cap = ht_cap;
|
band->ht_cap = ht_cap;
|
||||||
@@ -37,6 +35,3 @@ index 9c4bf2fdbc0f..8d362ba351e6 100644
|
|||||||
}
|
}
|
||||||
if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY) {
|
if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY) {
|
||||||
band = &ar->mac.sbands[NL80211_BAND_5GHZ];
|
band = &ar->mac.sbands[NL80211_BAND_5GHZ];
|
||||||
--
|
|
||||||
2.40.1
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,11 +13,9 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|||||||
drivers/net/wireless/ath/ath11k/wmi.c | 2 ++
|
drivers/net/wireless/ath/ath11k/wmi.c | 2 ++
|
||||||
2 files changed, 7 insertions(+), 2 deletions(-)
|
2 files changed, 7 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
diff --git a/drivers/net/wireless/ath/ath11k/mac.c b/drivers/net/wireless/ath/ath11k/mac.c
|
|
||||||
index c947d1c8d8c1..1cadfdd50afc 100644
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
--- a/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
+++ b/drivers/net/wireless/ath/ath11k/mac.c
|
||||||
@@ -2773,9 +2773,9 @@ static void ath11k_peer_assoc_h_phymode(struct ath11k *ar,
|
@@ -2773,9 +2773,9 @@ static void ath11k_peer_assoc_h_phymode(
|
||||||
} else if (sta->deflink.vht_cap.vht_supported &&
|
} else if (sta->deflink.vht_cap.vht_supported &&
|
||||||
!ath11k_peer_assoc_h_vht_masked(vht_mcs_mask)) {
|
!ath11k_peer_assoc_h_vht_masked(vht_mcs_mask)) {
|
||||||
if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
|
if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
|
||||||
@@ -29,7 +27,7 @@ index c947d1c8d8c1..1cadfdd50afc 100644
|
|||||||
} else if (sta->deflink.ht_cap.ht_supported &&
|
} else if (sta->deflink.ht_cap.ht_supported &&
|
||||||
!ath11k_peer_assoc_h_ht_masked(ht_mcs_mask)) {
|
!ath11k_peer_assoc_h_ht_masked(ht_mcs_mask)) {
|
||||||
if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
|
if (sta->deflink.bandwidth == IEEE80211_STA_RX_BW_40)
|
||||||
@@ -5613,6 +5613,9 @@ static void ath11k_mac_setup_ht_vht_cap(struct ath11k *ar,
|
@@ -5613,6 +5613,9 @@ static void ath11k_mac_setup_ht_vht_cap(
|
||||||
*ht_cap_info = ht_cap;
|
*ht_cap_info = ht_cap;
|
||||||
band->ht_cap = ath11k_create_ht_cap(ar, ht_cap,
|
band->ht_cap = ath11k_create_ht_cap(ar, ht_cap,
|
||||||
rate_cap_rx_chainmask);
|
rate_cap_rx_chainmask);
|
||||||
@@ -39,11 +37,9 @@ index c947d1c8d8c1..1cadfdd50afc 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (cap->supported_bands & WMI_HOST_WLAN_5G_CAP &&
|
if (cap->supported_bands & WMI_HOST_WLAN_5G_CAP &&
|
||||||
diff --git a/drivers/net/wireless/ath/ath11k/wmi.c b/drivers/net/wireless/ath/ath11k/wmi.c
|
|
||||||
index 443199e85fa2..77054ed687d5 100644
|
|
||||||
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
--- a/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
+++ b/drivers/net/wireless/ath/ath11k/wmi.c
|
||||||
@@ -406,6 +406,8 @@ ath11k_pull_mac_phy_cap_svc_ready_ext(struct ath11k_pdev_wmi *wmi_handle,
|
@@ -406,6 +406,8 @@ ath11k_pull_mac_phy_cap_svc_ready_ext(st
|
||||||
* handled.
|
* handled.
|
||||||
*/
|
*/
|
||||||
if (mac_phy_caps->supported_bands & WMI_HOST_WLAN_2G_CAP) {
|
if (mac_phy_caps->supported_bands & WMI_HOST_WLAN_2G_CAP) {
|
||||||
@@ -52,6 +48,3 @@ index 443199e85fa2..77054ed687d5 100644
|
|||||||
pdev_cap->tx_chain_mask = mac_phy_caps->tx_chain_mask_2g;
|
pdev_cap->tx_chain_mask = mac_phy_caps->tx_chain_mask_2g;
|
||||||
pdev_cap->rx_chain_mask = mac_phy_caps->rx_chain_mask_2g;
|
pdev_cap->rx_chain_mask = mac_phy_caps->rx_chain_mask_2g;
|
||||||
}
|
}
|
||||||
--
|
|
||||||
2.40.1
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,11 +25,9 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|||||||
net/mac80211/vht.c | 52 +++++++++++++++++++++++++++---------------
|
net/mac80211/vht.c | 52 +++++++++++++++++++++++++++---------------
|
||||||
4 files changed, 51 insertions(+), 27 deletions(-)
|
4 files changed, 51 insertions(+), 27 deletions(-)
|
||||||
|
|
||||||
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
|
|
||||||
index 1b8619685bf6..e9c9afae9a80 100644
|
|
||||||
--- a/include/net/cfg80211.h
|
--- a/include/net/cfg80211.h
|
||||||
+++ b/include/net/cfg80211.h
|
+++ b/include/net/cfg80211.h
|
||||||
@@ -338,11 +338,13 @@ struct ieee80211_sta_ht_cap {
|
@@ -343,11 +343,13 @@ struct ieee80211_sta_ht_cap {
|
||||||
* to describe 802.11ac VHT capabilities for an STA.
|
* to describe 802.11ac VHT capabilities for an STA.
|
||||||
*
|
*
|
||||||
* @vht_supported: is VHT supported by the STA
|
* @vht_supported: is VHT supported by the STA
|
||||||
@@ -43,11 +41,9 @@ index 1b8619685bf6..e9c9afae9a80 100644
|
|||||||
u32 cap; /* use IEEE80211_VHT_CAP_ */
|
u32 cap; /* use IEEE80211_VHT_CAP_ */
|
||||||
struct ieee80211_vht_mcs_info vht_mcs;
|
struct ieee80211_vht_mcs_info vht_mcs;
|
||||||
};
|
};
|
||||||
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
|
|
||||||
index 3827b5dcdb03..9c3b3de28dc8 100644
|
|
||||||
--- a/net/mac80211/mlme.c
|
--- a/net/mac80211/mlme.c
|
||||||
+++ b/net/mac80211/mlme.c
|
+++ b/net/mac80211/mlme.c
|
||||||
@@ -4720,7 +4720,7 @@ static int ieee80211_prep_channel(struct ieee80211_sub_if_data *sdata,
|
@@ -4637,7 +4637,7 @@ static int ieee80211_prep_channel(struct
|
||||||
const struct cfg80211_bss_ies *ies;
|
const struct cfg80211_bss_ies *ies;
|
||||||
int ret;
|
int ret;
|
||||||
u32 i;
|
u32 i;
|
||||||
@@ -56,7 +52,7 @@ index 3827b5dcdb03..9c3b3de28dc8 100644
|
|||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
|
|
||||||
@@ -4867,18 +4867,22 @@ static int ieee80211_prep_channel(struct ieee80211_sub_if_data *sdata,
|
@@ -4770,18 +4770,22 @@ static int ieee80211_prep_channel(struct
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Allow VHT if at least one channel on the sband supports 80 MHz */
|
/* Allow VHT if at least one channel on the sband supports 80 MHz */
|
||||||
@@ -83,11 +79,9 @@ index 3827b5dcdb03..9c3b3de28dc8 100644
|
|||||||
*conn_flags |= IEEE80211_CONN_DISABLE_VHT;
|
*conn_flags |= IEEE80211_CONN_DISABLE_VHT;
|
||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
|
|
||||||
index 083ad56d08d9..3fc1e84e4275 100644
|
|
||||||
--- a/net/mac80211/util.c
|
--- a/net/mac80211/util.c
|
||||||
+++ b/net/mac80211/util.c
|
+++ b/net/mac80211/util.c
|
||||||
@@ -1951,7 +1951,7 @@ static int ieee80211_build_preq_ies_band(struct ieee80211_sub_if_data *sdata,
|
@@ -1843,7 +1843,7 @@ static int ieee80211_build_preq_ies_band
|
||||||
int ext_rates_len;
|
int ext_rates_len;
|
||||||
int shift;
|
int shift;
|
||||||
u32 rate_flags;
|
u32 rate_flags;
|
||||||
@@ -96,7 +90,7 @@ index 083ad56d08d9..3fc1e84e4275 100644
|
|||||||
|
|
||||||
*offset = 0;
|
*offset = 0;
|
||||||
|
|
||||||
@@ -2089,11 +2089,15 @@ static int ieee80211_build_preq_ies_band(struct ieee80211_sub_if_data *sdata,
|
@@ -1973,11 +1973,15 @@ static int ieee80211_build_preq_ies_band
|
||||||
IEEE80211_CHAN_NO_80MHZ))
|
IEEE80211_CHAN_NO_80MHZ))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@@ -114,20 +108,18 @@ index 083ad56d08d9..3fc1e84e4275 100644
|
|||||||
if (end - pos < 2 + sizeof(struct ieee80211_vht_cap))
|
if (end - pos < 2 + sizeof(struct ieee80211_vht_cap))
|
||||||
goto out_err;
|
goto out_err;
|
||||||
pos = ieee80211_ie_build_vht_cap(pos, &sband->vht_cap,
|
pos = ieee80211_ie_build_vht_cap(pos, &sband->vht_cap,
|
||||||
diff --git a/net/mac80211/vht.c b/net/mac80211/vht.c
|
|
||||||
index c1250aa47808..37f4673d4194 100644
|
|
||||||
--- a/net/mac80211/vht.c
|
--- a/net/mac80211/vht.c
|
||||||
+++ b/net/mac80211/vht.c
|
+++ b/net/mac80211/vht.c
|
||||||
@@ -121,7 +121,7 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata,
|
@@ -122,7 +122,7 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(stru
|
||||||
struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap;
|
struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap;
|
||||||
struct ieee80211_sta_vht_cap own_cap;
|
struct ieee80211_sta_vht_cap own_cap;
|
||||||
u32 cap_info, i;
|
u32 cap_info, i;
|
||||||
- bool have_80mhz;
|
- bool have_80mhz;
|
||||||
+ bool can_vht;
|
+ bool can_vht;
|
||||||
|
u32 mpdu_len;
|
||||||
|
|
||||||
memset(vht_cap, 0, sizeof(*vht_cap));
|
memset(vht_cap, 0, sizeof(*vht_cap));
|
||||||
|
@@ -134,17 +134,21 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(stru
|
||||||
@@ -132,17 +132,21 @@ ieee80211_vht_cap_ie_to_sta_vht_cap(struct ieee80211_sub_if_data *sdata,
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Allow VHT if at least one channel on the sband supports 80 MHz */
|
/* Allow VHT if at least one channel on the sband supports 80 MHz */
|
||||||
@@ -152,7 +144,7 @@ index c1250aa47808..37f4673d4194 100644
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -346,16 +350,16 @@ ieee80211_sta_cap_rx_bw(struct link_sta_info *link_sta)
|
@@ -358,16 +362,16 @@ ieee80211_sta_cap_rx_bw(struct link_sta_
|
||||||
struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap;
|
struct ieee80211_sta_vht_cap *vht_cap = &link_sta->pub->vht_cap;
|
||||||
struct ieee80211_sta_he_cap *he_cap = &link_sta->pub->he_cap;
|
struct ieee80211_sta_he_cap *he_cap = &link_sta->pub->he_cap;
|
||||||
struct ieee80211_sta_eht_cap *eht_cap = &link_sta->pub->eht_cap;
|
struct ieee80211_sta_eht_cap *eht_cap = &link_sta->pub->eht_cap;
|
||||||
@@ -174,7 +166,7 @@ index c1250aa47808..37f4673d4194 100644
|
|||||||
if (eht_cap->has_eht &&
|
if (eht_cap->has_eht &&
|
||||||
link_conf->chandef.chan->band == NL80211_BAND_6GHZ) {
|
link_conf->chandef.chan->band == NL80211_BAND_6GHZ) {
|
||||||
info = eht_cap->eht_cap_elem.phy_cap_info[0];
|
info = eht_cap->eht_cap_elem.phy_cap_info[0];
|
||||||
@@ -383,32 +387,42 @@ ieee80211_sta_cap_rx_bw(struct link_sta_info *link_sta)
|
@@ -395,32 +399,42 @@ ieee80211_sta_cap_rx_bw(struct link_sta_
|
||||||
ret = IEEE80211_STA_RX_BW_80;
|
ret = IEEE80211_STA_RX_BW_80;
|
||||||
else
|
else
|
||||||
ret = IEEE80211_STA_RX_BW_20;
|
ret = IEEE80211_STA_RX_BW_20;
|
||||||
@@ -217,16 +209,13 @@ index c1250aa47808..37f4673d4194 100644
|
|||||||
+ ret = IEEE80211_STA_RX_BW_160;
|
+ ret = IEEE80211_STA_RX_BW_160;
|
||||||
+ goto out;
|
+ goto out;
|
||||||
+ }
|
+ }
|
||||||
+
|
|
||||||
+ ret = IEEE80211_STA_RX_BW_80;
|
|
||||||
|
|
||||||
- return IEEE80211_STA_RX_BW_80;
|
- return IEEE80211_STA_RX_BW_80;
|
||||||
|
+ ret = IEEE80211_STA_RX_BW_80;
|
||||||
|
+
|
||||||
+out:
|
+out:
|
||||||
+ rcu_read_unlock();
|
+ rcu_read_unlock();
|
||||||
+ return ret;
|
+ return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum nl80211_chan_width
|
enum nl80211_chan_width
|
||||||
--
|
|
||||||
2.40.1
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,11 +15,9 @@ Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
|
|||||||
net/mac80211/vht.c | 6 ++++++
|
net/mac80211/vht.c | 6 ++++++
|
||||||
1 file changed, 6 insertions(+)
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
diff --git a/net/mac80211/vht.c b/net/mac80211/vht.c
|
|
||||||
index 37f4673d4194..b57391a032c8 100644
|
|
||||||
--- a/net/mac80211/vht.c
|
--- a/net/mac80211/vht.c
|
||||||
+++ b/net/mac80211/vht.c
|
+++ b/net/mac80211/vht.c
|
||||||
@@ -400,6 +400,12 @@ ieee80211_sta_cap_rx_bw(struct link_sta_info *link_sta)
|
@@ -412,6 +412,12 @@ ieee80211_sta_cap_rx_bw(struct link_sta_
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32,6 +30,3 @@ index 37f4673d4194..b57391a032c8 100644
|
|||||||
cap_width = vht_cap->cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK;
|
cap_width = vht_cap->cap & IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK;
|
||||||
|
|
||||||
if (cap_width == IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ ||
|
if (cap_width == IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ ||
|
||||||
--
|
|
||||||
2.40.1
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user