summaryrefslogtreecommitdiff
path: root/package/kernel/mac80211/patches/312-ath10k-move-static-HT-VHT-capability-setup-functions.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/312-ath10k-move-static-HT-VHT-capability-setup-functions.patch')
-rw-r--r--package/kernel/mac80211/patches/312-ath10k-move-static-HT-VHT-capability-setup-functions.patch314
1 files changed, 0 insertions, 314 deletions
diff --git a/package/kernel/mac80211/patches/312-ath10k-move-static-HT-VHT-capability-setup-functions.patch b/package/kernel/mac80211/patches/312-ath10k-move-static-HT-VHT-capability-setup-functions.patch
deleted file mode 100644
index ea79b1a..0000000
--- a/package/kernel/mac80211/patches/312-ath10k-move-static-HT-VHT-capability-setup-functions.patch
+++ /dev/null
@@ -1,314 +0,0 @@
-From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
-Date: Tue, 27 Oct 2015 17:51:13 +0530
-Subject: [PATCH] ath10k: move static HT/VHT capability setup functions
-
-Move HT and VHT capabiltity setup static functions to avoid
-forward declaration.
-
-Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
-Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
----
-
---- a/drivers/net/wireless/ath/ath10k/mac.c
-+++ b/drivers/net/wireless/ath/ath10k/mac.c
-@@ -3757,6 +3757,146 @@ static void ath10k_check_chain_mask(stru
- dbg, cm);
- }
-
-+static int ath10k_mac_get_vht_cap_bf_sts(struct ath10k *ar)
-+{
-+ int nsts = ar->vht_cap_info;
-+
-+ nsts &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK;
-+ nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT;
-+
-+ /* If firmware does not deliver to host number of space-time
-+ * streams supported, assume it support up to 4 BF STS and return
-+ * the value for VHT CAP: nsts-1)
-+ */
-+ if (nsts == 0)
-+ return 3;
-+
-+ return nsts;
-+}
-+
-+static int ath10k_mac_get_vht_cap_bf_sound_dim(struct ath10k *ar)
-+{
-+ int sound_dim = ar->vht_cap_info;
-+
-+ sound_dim &= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK;
-+ sound_dim >>= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT;
-+
-+ /* If the sounding dimension is not advertised by the firmware,
-+ * let's use a default value of 1
-+ */
-+ if (sound_dim == 0)
-+ return 1;
-+
-+ return sound_dim;
-+}
-+
-+static struct ieee80211_sta_vht_cap ath10k_create_vht_cap(struct ath10k *ar)
-+{
-+ struct ieee80211_sta_vht_cap vht_cap = {0};
-+ u16 mcs_map;
-+ u32 val;
-+ int i;
-+
-+ vht_cap.vht_supported = 1;
-+ vht_cap.cap = ar->vht_cap_info;
-+
-+ if (ar->vht_cap_info & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE |
-+ IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE)) {
-+ val = ath10k_mac_get_vht_cap_bf_sts(ar);
-+ val <<= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT;
-+ val &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK;
-+
-+ vht_cap.cap |= val;
-+ }
-+
-+ if (ar->vht_cap_info & (IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE |
-+ IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE)) {
-+ val = ath10k_mac_get_vht_cap_bf_sound_dim(ar);
-+ val <<= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT;
-+ val &= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK;
-+
-+ vht_cap.cap |= val;
-+ }
-+
-+ mcs_map = 0;
-+ for (i = 0; i < 8; i++) {
-+ if ((i < ar->num_rf_chains) && (ar->cfg_tx_chainmask & BIT(i)))
-+ mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << (i * 2);
-+ else
-+ mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2);
-+ }
-+
-+ vht_cap.vht_mcs.rx_mcs_map = cpu_to_le16(mcs_map);
-+ vht_cap.vht_mcs.tx_mcs_map = cpu_to_le16(mcs_map);
-+
-+ return vht_cap;
-+}
-+
-+static struct ieee80211_sta_ht_cap ath10k_get_ht_cap(struct ath10k *ar)
-+{
-+ int i;
-+ struct ieee80211_sta_ht_cap ht_cap = {0};
-+
-+ if (!(ar->ht_cap_info & WMI_HT_CAP_ENABLED))
-+ return ht_cap;
-+
-+ ht_cap.ht_supported = 1;
-+ ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
-+ ht_cap.ampdu_density = IEEE80211_HT_MPDU_DENSITY_8;
-+ ht_cap.cap |= IEEE80211_HT_CAP_SUP_WIDTH_20_40;
-+ ht_cap.cap |= IEEE80211_HT_CAP_DSSSCCK40;
-+ ht_cap.cap |= WLAN_HT_CAP_SM_PS_STATIC << IEEE80211_HT_CAP_SM_PS_SHIFT;
-+
-+ if (ar->ht_cap_info & WMI_HT_CAP_HT20_SGI)
-+ ht_cap.cap |= IEEE80211_HT_CAP_SGI_20;
-+
-+ if (ar->ht_cap_info & WMI_HT_CAP_HT40_SGI)
-+ ht_cap.cap |= IEEE80211_HT_CAP_SGI_40;
-+
-+ if (ar->ht_cap_info & WMI_HT_CAP_DYNAMIC_SMPS) {
-+ u32 smps;
-+
-+ smps = WLAN_HT_CAP_SM_PS_DYNAMIC;
-+ smps <<= IEEE80211_HT_CAP_SM_PS_SHIFT;
-+
-+ ht_cap.cap |= smps;
-+ }
-+
-+ if (ar->ht_cap_info & WMI_HT_CAP_TX_STBC)
-+ ht_cap.cap |= IEEE80211_HT_CAP_TX_STBC;
-+
-+ if (ar->ht_cap_info & WMI_HT_CAP_RX_STBC) {
-+ u32 stbc;
-+
-+ stbc = ar->ht_cap_info;
-+ stbc &= WMI_HT_CAP_RX_STBC;
-+ stbc >>= WMI_HT_CAP_RX_STBC_MASK_SHIFT;
-+ stbc <<= IEEE80211_HT_CAP_RX_STBC_SHIFT;
-+ stbc &= IEEE80211_HT_CAP_RX_STBC;
-+
-+ ht_cap.cap |= stbc;
-+ }
-+
-+ if (ar->ht_cap_info & WMI_HT_CAP_LDPC)
-+ ht_cap.cap |= IEEE80211_HT_CAP_LDPC_CODING;
-+
-+ if (ar->ht_cap_info & WMI_HT_CAP_L_SIG_TXOP_PROT)
-+ ht_cap.cap |= IEEE80211_HT_CAP_LSIG_TXOP_PROT;
-+
-+ /* max AMSDU is implicitly taken from vht_cap_info */
-+ if (ar->vht_cap_info & WMI_VHT_CAP_MAX_MPDU_LEN_MASK)
-+ ht_cap.cap |= IEEE80211_HT_CAP_MAX_AMSDU;
-+
-+ for (i = 0; i < ar->num_rf_chains; i++) {
-+ if (ar->cfg_rx_chainmask & BIT(i))
-+ ht_cap.mcs.rx_mask[i] = 0xFF;
-+ }
-+
-+ ht_cap.mcs.tx_params |= IEEE80211_HT_MCS_TX_DEFINED;
-+
-+ return ht_cap;
-+}
-+
- static int __ath10k_set_antenna(struct ath10k *ar, u32 tx_ant, u32 rx_ant)
- {
- int ret;
-@@ -4068,39 +4208,6 @@ static u32 get_nss_from_chainmask(u16 ch
- return 1;
- }
-
--static int ath10k_mac_get_vht_cap_bf_sts(struct ath10k *ar)
--{
-- int nsts = ar->vht_cap_info;
--
-- nsts &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK;
-- nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT;
--
-- /* If firmware does not deliver to host number of space-time
-- * streams supported, assume it support up to 4 BF STS and return
-- * the value for VHT CAP: nsts-1)
-- * */
-- if (nsts == 0)
-- return 3;
--
-- return nsts;
--}
--
--static int ath10k_mac_get_vht_cap_bf_sound_dim(struct ath10k *ar)
--{
-- int sound_dim = ar->vht_cap_info;
--
-- sound_dim &= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK;
-- sound_dim >>= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT;
--
-- /* If the sounding dimension is not advertised by the firmware,
-- * let's use a default value of 1
-- */
-- if (sound_dim == 0)
-- return 1;
--
-- return sound_dim;
--}
--
- static int ath10k_mac_set_txbf_conf(struct ath10k_vif *arvif)
- {
- u32 value = 0;
-@@ -6954,113 +7061,6 @@ static const struct ieee80211_iface_comb
- },
- };
-
--static struct ieee80211_sta_vht_cap ath10k_create_vht_cap(struct ath10k *ar)
--{
-- struct ieee80211_sta_vht_cap vht_cap = {0};
-- u16 mcs_map;
-- u32 val;
-- int i;
--
-- vht_cap.vht_supported = 1;
-- vht_cap.cap = ar->vht_cap_info;
--
-- if (ar->vht_cap_info & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE |
-- IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE)) {
-- val = ath10k_mac_get_vht_cap_bf_sts(ar);
-- val <<= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT;
-- val &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK;
--
-- vht_cap.cap |= val;
-- }
--
-- if (ar->vht_cap_info & (IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE |
-- IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE)) {
-- val = ath10k_mac_get_vht_cap_bf_sound_dim(ar);
-- val <<= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT;
-- val &= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK;
--
-- vht_cap.cap |= val;
-- }
--
-- mcs_map = 0;
-- for (i = 0; i < 8; i++) {
-- if ((i < ar->num_rf_chains) && (ar->cfg_tx_chainmask & BIT(i)))
-- mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << (i*2);
-- else
-- mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2);
-- }
--
-- vht_cap.vht_mcs.rx_mcs_map = cpu_to_le16(mcs_map);
-- vht_cap.vht_mcs.tx_mcs_map = cpu_to_le16(mcs_map);
--
-- return vht_cap;
--}
--
--static struct ieee80211_sta_ht_cap ath10k_get_ht_cap(struct ath10k *ar)
--{
-- int i;
-- struct ieee80211_sta_ht_cap ht_cap = {0};
--
-- if (!(ar->ht_cap_info & WMI_HT_CAP_ENABLED))
-- return ht_cap;
--
-- ht_cap.ht_supported = 1;
-- ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
-- ht_cap.ampdu_density = IEEE80211_HT_MPDU_DENSITY_8;
-- ht_cap.cap |= IEEE80211_HT_CAP_SUP_WIDTH_20_40;
-- ht_cap.cap |= IEEE80211_HT_CAP_DSSSCCK40;
-- ht_cap.cap |= WLAN_HT_CAP_SM_PS_STATIC << IEEE80211_HT_CAP_SM_PS_SHIFT;
--
-- if (ar->ht_cap_info & WMI_HT_CAP_HT20_SGI)
-- ht_cap.cap |= IEEE80211_HT_CAP_SGI_20;
--
-- if (ar->ht_cap_info & WMI_HT_CAP_HT40_SGI)
-- ht_cap.cap |= IEEE80211_HT_CAP_SGI_40;
--
-- if (ar->ht_cap_info & WMI_HT_CAP_DYNAMIC_SMPS) {
-- u32 smps;
--
-- smps = WLAN_HT_CAP_SM_PS_DYNAMIC;
-- smps <<= IEEE80211_HT_CAP_SM_PS_SHIFT;
--
-- ht_cap.cap |= smps;
-- }
--
-- if (ar->ht_cap_info & WMI_HT_CAP_TX_STBC)
-- ht_cap.cap |= IEEE80211_HT_CAP_TX_STBC;
--
-- if (ar->ht_cap_info & WMI_HT_CAP_RX_STBC) {
-- u32 stbc;
--
-- stbc = ar->ht_cap_info;
-- stbc &= WMI_HT_CAP_RX_STBC;
-- stbc >>= WMI_HT_CAP_RX_STBC_MASK_SHIFT;
-- stbc <<= IEEE80211_HT_CAP_RX_STBC_SHIFT;
-- stbc &= IEEE80211_HT_CAP_RX_STBC;
--
-- ht_cap.cap |= stbc;
-- }
--
-- if (ar->ht_cap_info & WMI_HT_CAP_LDPC)
-- ht_cap.cap |= IEEE80211_HT_CAP_LDPC_CODING;
--
-- if (ar->ht_cap_info & WMI_HT_CAP_L_SIG_TXOP_PROT)
-- ht_cap.cap |= IEEE80211_HT_CAP_LSIG_TXOP_PROT;
--
-- /* max AMSDU is implicitly taken from vht_cap_info */
-- if (ar->vht_cap_info & WMI_VHT_CAP_MAX_MPDU_LEN_MASK)
-- ht_cap.cap |= IEEE80211_HT_CAP_MAX_AMSDU;
--
-- for (i = 0; i < ar->num_rf_chains; i++) {
-- if (ar->cfg_rx_chainmask & BIT(i))
-- ht_cap.mcs.rx_mask[i] = 0xFF;
-- }
--
-- ht_cap.mcs.tx_params |= IEEE80211_HT_MCS_TX_DEFINED;
--
-- return ht_cap;
--}
--
- static void ath10k_get_arvif_iter(void *data, u8 *mac,
- struct ieee80211_vif *vif)
- {