Message ID | 8f2382ad-4778-f32d-762c-09c543e93afd@candelatech.com (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Kalle Valo |
Headers | show |
Am 02.03.2017 um 01:56 schrieb Ben Greear: > 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... i dont know if your patch makes sense, its just looking logic (i handle this with vht_capa in wpa supplicant right now) i also know the crash from older firmwares. with more recent official firmwares it does not occur anymore. or lets i havent seen this issue for a while > > 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 >
On 03/01/2017 05:43 PM, Sebastian Gottschall wrote: > Am 02.03.2017 um 01:56 schrieb Ben Greear: >> 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... > i dont know if your patch makes sense, its just looking logic (i handle this with vht_capa in wpa supplicant right now) > i also know the crash from older firmwares. with more recent official firmwares it does not occur anymore. or lets i havent seen > this issue for a while Did you patch supplicant? If so, can you point me to the change(s) you made? Thanks, Ben >> >> 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 >> > >
Am 02.03.2017 um 22:26 schrieb Ben Greear: > On 03/01/2017 05:43 PM, Sebastian Gottschall wrote: >> Am 02.03.2017 um 01:56 schrieb Ben Greear: >>> 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... >> i dont know if your patch makes sense, its just looking logic (i >> handle this with vht_capa in wpa supplicant right now) >> i also know the crash from older firmwares. with more recent official >> firmwares it does not occur anymore. or lets i havent seen >> this issue for a while > > Did you patch supplicant? If so, can you point me to the change(s) > you made? nope. i just used its features. there is a config entry named "vht_capa" and "vht_capa_mask" which allows to mask out / in vht capabilities > > Thanks, > Ben > >>> >>> 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 >>> >> >> > >
On 2 March 2017 at 14:53, Sebastian Gottschall <s.gottschall@dd-wrt.com> wrote: >> Did you patch supplicant? If so, can you point me to the change(s) you >> made? > > nope. i just used its features. there is a config entry named "vht_capa" and > "vht_capa_mask" which allows to mask out / in vht capabilities RIght, but you just disabled the capabilities entirely, right? That didn't fix negotiation? -adrian >> >> Thanks, >> Ben >> >>>> >>>> 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 >>>> >>> >>> >> >> > > > -- > Mit freundlichen Grüssen / Regards > > Sebastian Gottschall / CTO > > NewMedia-NET GmbH - DD-WRT > Firmensitz: Berliner Ring 101, 64625 Bensheim > Registergericht: Amtsgericht Darmstadt, HRB 25473 > Geschäftsführer: Peter Steinhäuser, Christian Scheele > http://www.dd-wrt.com > email: s.gottschall@dd-wrt.com > Tel.: +496251-582650 / Fax: +496251-5826565 > > > _______________________________________________ > ath10k mailing list > ath10k@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/ath10k
On 03/02/2017 03:30 PM, Adrian Chadd wrote: > On 2 March 2017 at 14:53, Sebastian Gottschall <s.gottschall@dd-wrt.com> wrote: > >>> Did you patch supplicant? If so, can you point me to the change(s) you >>> made? >> >> nope. i just used its features. there is a config entry named "vht_capa" and >> "vht_capa_mask" which allows to mask out / in vht capabilities > > RIght, but you just disabled the capabilities entirely, right? That > didn't fix negotiation? Either way, you shouldn't have to hack on vht_capa_mask in supplicant to get stations to not advertise MU_BEAMFORMER feature, even if it is a work-around for now. Thanks, Ben > > > > -adrian > >>> >>> Thanks, >>> Ben >>> >>>>> >>>>> 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 >>>>> >>>> >>>> >>> >>> >> >> >> -- >> Mit freundlichen Grüssen / Regards >> >> Sebastian Gottschall / CTO >> >> NewMedia-NET GmbH - DD-WRT >> Firmensitz: Berliner Ring 101, 64625 Bensheim >> Registergericht: Amtsgericht Darmstadt, HRB 25473 >> Geschäftsführer: Peter Steinhäuser, Christian Scheele >> http://www.dd-wrt.com >> email: s.gottschall@dd-wrt.com >> Tel.: +496251-582650 / Fax: +496251-5826565 >> >> >> _______________________________________________ >> ath10k mailing list >> ath10k@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/ath10k >
Am 03.03.2017 um 00:30 schrieb Adrian Chadd: > On 2 March 2017 at 14:53, Sebastian Gottschall <s.gottschall@dd-wrt.com> wrote: > >>> Did you patch supplicant? If so, can you point me to the change(s) you >>> made? >> nope. i just used its features. there is a config entry named "vht_capa" and >> "vht_capa_mask" which allows to mask out / in vht capabilities > RIght, but you just disabled the capabilities entirely, right? That > didn't fix negotiation? there wasnt a problem with negotiation. there was a problem with firmware crashes and yes i disabled the crash cause in that way > > > > -adrian > >>> Thanks, >>> Ben >>> >>>>> 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 >>>>> >>>> >>> >> >> -- >> Mit freundlichen Grüssen / Regards >> >> Sebastian Gottschall / CTO >> >> NewMedia-NET GmbH - DD-WRT >> Firmensitz: Berliner Ring 101, 64625 Bensheim >> Registergericht: Amtsgericht Darmstadt, HRB 25473 >> Geschäftsführer: Peter Steinhäuser, Christian Scheele >> http://www.dd-wrt.com >> email: s.gottschall@dd-wrt.com >> Tel.: +496251-582650 / Fax: +496251-5826565 >> >> >> _______________________________________________ >> ath10k mailing list >> ath10k@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/ath10k
Am 03.03.2017 um 00:34 schrieb Ben Greear: > On 03/02/2017 03:30 PM, Adrian Chadd wrote: >> On 2 March 2017 at 14:53, Sebastian Gottschall >> <s.gottschall@dd-wrt.com> wrote: >> >>>> Did you patch supplicant? If so, can you point me to the change(s) >>>> you >>>> made? >>> >>> nope. i just used its features. there is a config entry named >>> "vht_capa" and >>> "vht_capa_mask" which allows to mask out / in vht capabilities >> >> RIght, but you just disabled the capabilities entirely, right? That >> didn't fix negotiation? > > Either way, you shouldn't have to hack on vht_capa_mask in supplicant > to get stations to not advertise MU_BEAMFORMER feature, even if it is > a work-around for now. its a old workaround for sure. now since you wrote that patch we can give it a try > > Thanks, > Ben > >> >> >> >> -adrian >> >>>> >>>> Thanks, >>>> Ben >>>> >>>>>> >>>>>> 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 >>>>>> >>>>> >>>>> >>>> >>>> >>> >>> >>> -- >>> Mit freundlichen Grüssen / Regards >>> >>> Sebastian Gottschall / CTO >>> >>> NewMedia-NET GmbH - DD-WRT >>> Firmensitz: Berliner Ring 101, 64625 Bensheim >>> Registergericht: Amtsgericht Darmstadt, HRB 25473 >>> Geschäftsführer: Peter Steinhäuser, Christian Scheele >>> http://www.dd-wrt.com >>> email: s.gottschall@dd-wrt.com >>> Tel.: +496251-582650 / Fax: +496251-5826565 >>> >>> >>> _______________________________________________ >>> ath10k mailing list >>> ath10k@lists.infradead.org >>> http://lists.infradead.org/mailman/listinfo/ath10k >> > >
On 2 March 2017 at 16:08, Sebastian Gottschall <s.gottschall@dd-wrt.com> wrote: > Am 03.03.2017 um 00:30 schrieb Adrian Chadd: >> >> On 2 March 2017 at 14:53, Sebastian Gottschall <s.gottschall@dd-wrt.com> >> wrote: >> >>>> Did you patch supplicant? If so, can you point me to the change(s) you >>>> made? >>> >>> nope. i just used its features. there is a config entry named "vht_capa" >>> and >>> "vht_capa_mask" which allows to mask out / in vht capabilities >> >> RIght, but you just disabled the capabilities entirely, right? That >> didn't fix negotiation? > > there wasnt a problem with negotiation. there was a problem with firmware > crashes and yes i disabled the crash cause in that way Well, the crash is a bad case of "I shouldn't handle a broken AP by crashing." But an AP shouldn't be saying "mu-beamformee" according to the standard, but mu-beamformer. (or the other way around, I forget - but whatever Ben showed me, it was certainly announcing the /opposite/ of what it should be doing.) -adrian
Am 03.03.2017 um 01:22 schrieb Adrian Chadd: > On 2 March 2017 at 16:08, Sebastian Gottschall <s.gottschall@dd-wrt.com> wrote: >> Am 03.03.2017 um 00:30 schrieb Adrian Chadd: >>> On 2 March 2017 at 14:53, Sebastian Gottschall <s.gottschall@dd-wrt.com> >>> wrote: >>> >>>>> Did you patch supplicant? If so, can you point me to the change(s) you >>>>> made? >>>> nope. i just used its features. there is a config entry named "vht_capa" >>>> and >>>> "vht_capa_mask" which allows to mask out / in vht capabilities >>> RIght, but you just disabled the capabilities entirely, right? That >>> didn't fix negotiation? >> there wasnt a problem with negotiation. there was a problem with firmware >> crashes and yes i disabled the crash cause in that way > Well, the crash is a bad case of "I shouldn't handle a broken AP by crashing." > > But an AP shouldn't be saying "mu-beamformee" according to the > standard, but mu-beamformer. (or the other way around, I forget - but > whatever Ben showed me, it was certainly announcing the /opposite/ of > what it should be doing.) good to know. then the cause for that issue might be also the hostapd config since openwrt as well as my dd-wrt does include all vht capabilities in hostapd.conf which are reported by the driver. now one question. why does hostapd allow to set MU-BEAMFORMEE since its a ap authenticator? > > > > -adrian >
On 2 March 2017 at 23:47, Sebastian Gottschall <s.gottschall@dd-wrt.com> wrote: > Am 03.03.2017 um 01:22 schrieb Adrian Chadd: >> >> On 2 March 2017 at 16:08, Sebastian Gottschall <s.gottschall@dd-wrt.com> >> wrote: >>> >>> Am 03.03.2017 um 00:30 schrieb Adrian Chadd: >>>> >>>> On 2 March 2017 at 14:53, Sebastian Gottschall <s.gottschall@dd-wrt.com> >>>> wrote: >>>> >>>>>> Did you patch supplicant? If so, can you point me to the change(s) >>>>>> you >>>>>> made? >>>>> >>>>> nope. i just used its features. there is a config entry named >>>>> "vht_capa" >>>>> and >>>>> "vht_capa_mask" which allows to mask out / in vht capabilities >>>> >>>> RIght, but you just disabled the capabilities entirely, right? That >>>> didn't fix negotiation? >>> >>> there wasnt a problem with negotiation. there was a problem with >>> firmware >>> crashes and yes i disabled the crash cause in that way >> >> Well, the crash is a bad case of "I shouldn't handle a broken AP by >> crashing." >> >> But an AP shouldn't be saying "mu-beamformee" according to the >> standard, but mu-beamformer. (or the other way around, I forget - but >> whatever Ben showed me, it was certainly announcing the /opposite/ of >> what it should be doing.) > > good to know. then the cause for that issue might be also the hostapd config > since openwrt as well as my dd-wrt does include all vht capabilities > in hostapd.conf which are reported by the driver. now one question. why does > hostapd allow to set MU-BEAMFORMEE since its a ap authenticator? "someone didn't read the spec" ? :) -adrian
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);