diff mbox

ath10k: first qca6174 hw2.1 firmware released

Message ID CA+BoTQmKNL+Zruv4oh51ucgKNCUR8s2OGfr4LRD-sMUL=20kEg@mail.gmail.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

Michal Kazior Aug. 26, 2015, 5:01 a.m. UTC
On 25 August 2015 at 16:04, Lapo Calamandrei <calamandrei@gmail.com> wrote:
[...]
> Yep, the previous crash was without your patch applied, the following
> is with the patch applied though.
>
> iw list output:
[...]
>     Band 2:
>         Capabilities: 0x19e3
>             RX LDPC
>             HT20/HT40
>             Static SM Power Save
>             RX HT20 SGI
>             RX HT40 SGI
>             TX STBC
>             RX STBC 1-stream
>             Max AMSDU length: 7935 bytes
>             DSSS/CCK HT40
>         Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
>         Minimum RX AMPDU time spacing: 8 usec (0x06)
>         HT TX/RX MCS rate indexes supported: 0-15
>         VHT Capabilities (0x339011b2):
>             Max MPDU length: 11454
>             Supported Channel Width: neither 160 nor 80+80
>             RX LDPC
>             short GI (80 MHz)
>             TX STBC
>             SU Beamformee
>             MU Beamformee
[...]

Sorry, my bad. The diff I provided earlier wasn't correct (it was a
quick hack-idea I didn't test myself).

The correct thing that should work is:

                if (i < ar->num_rf_chains)


Micha?

Comments

Lapo Calamandrei Aug. 26, 2015, 10:05 a.m. UTC | #1
2015-08-26 7:01 GMT+02:00 Michal Kazior <michal.kazior@tieto.com>:
> On 25 August 2015 at 16:04, Lapo Calamandrei <calamandrei@gmail.com> wrote:
> [...]
>> Yep, the previous crash was without your patch applied, the following
>> is with the patch applied though.
>>
>> iw list output:
> [...]
>>     Band 2:
>>         Capabilities: 0x19e3
>>             RX LDPC
>>             HT20/HT40
>>             Static SM Power Save
>>             RX HT20 SGI
>>             RX HT40 SGI
>>             TX STBC
>>             RX STBC 1-stream
>>             Max AMSDU length: 7935 bytes
>>             DSSS/CCK HT40
>>         Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
>>         Minimum RX AMPDU time spacing: 8 usec (0x06)
>>         HT TX/RX MCS rate indexes supported: 0-15
>>         VHT Capabilities (0x339011b2):
>>             Max MPDU length: 11454
>>             Supported Channel Width: neither 160 nor 80+80
>>             RX LDPC
>>             short GI (80 MHz)
>>             TX STBC
>>             SU Beamformee
>>             MU Beamformee
> [...]
>
> Sorry, my bad. The diff I provided earlier wasn't correct (it was a
> quick hack-idea I didn't test myself).
>
> The correct thing that should work is:
>
> --- a/drivers/net/wireless/ath/ath10k/mac.c
> +++ b/drivers/net/wireless/ath/ath10k/mac.c
> @@ -6798,27 +6798,14 @@ static struct ieee80211_sta_vht_cap
> ath10k_create_vht_cap(struct ath10k *ar)
>         u32 val;
>         int i;
>
> +       ar->vht_cap_info &= ~(IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE |
> +                             IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE |
> +                             IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE |
> +                             IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE);
> +
>         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 = ar->num_rf_chains - 1;
> -               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 = ar->num_rf_chains - 1;
> -               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)
>
>
> Micha?

The firmware crash is gone now, thanks. Do you need any kind of
additional tests on this hw I can do?

Ciao
Lapo
Michal Kazior Aug. 26, 2015, 10:12 a.m. UTC | #2
On 26 August 2015 at 12:05, Lapo Calamandrei <calamandrei@gmail.com> wrote:
> 2015-08-26 7:01 GMT+02:00 Michal Kazior <michal.kazior@tieto.com>:
>> On 25 August 2015 at 16:04, Lapo Calamandrei <calamandrei@gmail.com> wrote:
>> [...]
>>> Yep, the previous crash was without your patch applied, the following
>>> is with the patch applied though.
>>>
>>> iw list output:
>> [...]
>>>     Band 2:
>>>         Capabilities: 0x19e3
>>>             RX LDPC
>>>             HT20/HT40
>>>             Static SM Power Save
>>>             RX HT20 SGI
>>>             RX HT40 SGI
>>>             TX STBC
>>>             RX STBC 1-stream
>>>             Max AMSDU length: 7935 bytes
>>>             DSSS/CCK HT40
>>>         Maximum RX AMPDU length 65535 bytes (exponent: 0x003)
>>>         Minimum RX AMPDU time spacing: 8 usec (0x06)
>>>         HT TX/RX MCS rate indexes supported: 0-15
>>>         VHT Capabilities (0x339011b2):
>>>             Max MPDU length: 11454
>>>             Supported Channel Width: neither 160 nor 80+80
>>>             RX LDPC
>>>             short GI (80 MHz)
>>>             TX STBC
>>>             SU Beamformee
>>>             MU Beamformee
>> [...]
>>
>> Sorry, my bad. The diff I provided earlier wasn't correct (it was a
>> quick hack-idea I didn't test myself).
>>
>> The correct thing that should work is:
>>
>> --- a/drivers/net/wireless/ath/ath10k/mac.c
>> +++ b/drivers/net/wireless/ath/ath10k/mac.c
>> @@ -6798,27 +6798,14 @@ static struct ieee80211_sta_vht_cap
>> ath10k_create_vht_cap(struct ath10k *ar)
>>         u32 val;
>>         int i;
>>
>> +       ar->vht_cap_info &= ~(IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE |
>> +                             IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE |
>> +                             IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE |
>> +                             IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE);
>> +
>>         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 = ar->num_rf_chains - 1;
>> -               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 = ar->num_rf_chains - 1;
>> -               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)
>>
>>
>> Micha?
>
> The firmware crash is gone now, thanks.

Awesome. Thanks for testing!


> Do you need any kind of
> additional tests on this hw I can do?

No, thanks.


Micha?
diff mbox

Patch

--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -6798,27 +6798,14 @@  static struct ieee80211_sta_vht_cap
ath10k_create_vht_cap(struct ath10k *ar)
        u32 val;
        int i;

+       ar->vht_cap_info &= ~(IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE |
+                             IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE |
+                             IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE |
+                             IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE);
+
        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 = ar->num_rf_chains - 1;
-               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 = ar->num_rf_chains - 1;
-               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++) {