diff mbox

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

Message ID 8f2382ad-4778-f32d-762c-09c543e93afd@candelatech.com (mailing list archive)
State RFC
Delegated to: Kalle Valo
Headers show

Commit Message

Ben Greear March 2, 2017, 12:56 a.m. UTC
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...


Thanks,
Ben

Comments

Sebastian Gottschall March 2, 2017, 1:43 a.m. UTC | #1
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
>
Ben Greear March 2, 2017, 9:26 p.m. UTC | #2
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
>>
>
>
Sebastian Gottschall March 2, 2017, 10:53 p.m. UTC | #3
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
>>>
>>
>>
>
>
Adrian Chadd March 2, 2017, 11:30 p.m. UTC | #4
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
Ben Greear March 2, 2017, 11:34 p.m. UTC | #5
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
>
Sebastian Gottschall March 3, 2017, 12:08 a.m. UTC | #6
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
Sebastian Gottschall March 3, 2017, 12:08 a.m. UTC | #7
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
>>
>
>
Adrian Chadd March 3, 2017, 12:22 a.m. UTC | #8
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
Sebastian Gottschall March 3, 2017, 7:47 a.m. UTC | #9
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
>
Adrian Chadd March 3, 2017, 7:49 a.m. UTC | #10
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 mbox

Patch

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);