ath10k bug in station mode with regard to TX-BEAMFORMER?

Ben Greear greearb at candelatech.com
Wed Mar 1 16:56:18 PST 2017


I have a user with an AP that advertises itself as a MU-BEAMFORMEE (and not MU-BEAMFORMER).
My station firmware on 9984 is crashing because it tries to set up MU-MIMO tx logic as
best as I can figure.

Does the patch below look like a good idea?

If so, I'll do it up official.  Unfortunately, I don't have a good way to
test this locally, so this is just based on my vague understanding of this
feature...

diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 219daaee..5aefc8a 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -5372,6 +5372,7 @@ static int ath10k_mac_set_txbf_conf(struct ath10k_vif *arvif)
  {
         u32 value = 0;
         struct ath10k *ar = arvif->ar;
+       struct ieee80211_vif *vif = arvif->vif;
         int nsts;
         int sound_dim;

@@ -5391,17 +5392,21 @@ static int ath10k_mac_set_txbf_conf(struct ath10k_vif *arvif)
         if (!value)
                 return 0;

-       if (ar->vht_cap_info & IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE)
+       if ((ar->vht_cap_info & IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE) &&
+           (vif->type != NL80211_IFTYPE_STATION))
                 value |= WMI_VDEV_PARAM_TXBF_SU_TX_BFER;

-       if (ar->vht_cap_info & IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE)
+       if ((ar->vht_cap_info & IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE) &&
+           (vif->type != NL80211_IFTYPE_STATION))
                 value |= (WMI_VDEV_PARAM_TXBF_MU_TX_BFER |
                           WMI_VDEV_PARAM_TXBF_SU_TX_BFER);

-       if (ar->vht_cap_info & IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE)
+       if ((ar->vht_cap_info & IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE) &&
+           (vif->type == NL80211_IFTYPE_STATION))
                 value |= WMI_VDEV_PARAM_TXBF_SU_TX_BFEE;

-       if (ar->vht_cap_info & IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE)
+       if ((ar->vht_cap_info & IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE) &&
+               (vif->type == NL80211_IFTYPE_STATION))
                 value |= (WMI_VDEV_PARAM_TXBF_MU_TX_BFEE |
                           WMI_VDEV_PARAM_TXBF_SU_TX_BFEE);


Thanks,
Ben

-- 
Ben Greear <greearb at candelatech.com>
Candela Technologies Inc  http://www.candelatech.com




More information about the ath10k mailing list