Search Linux Wireless

Re: Help debugging iwldvm / ath10k stalls

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 27, 2014 at 10:09 AM, Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote:
> On Mon, May 26, 2014 at 11:47 AM, Andy Lutomirski <luto@xxxxxxxxxxxxxx> wrote:
>> On Mon, May 26, 2014 at 11:13 AM, Emmanuel Grumbach <egrumbach@xxxxxxxxx> wrote:
>>>>>>>
>>>>>>> diff --git a/drivers/net/wireless/iwlwifi/dvm/power.c
>>>>>>> b/drivers/net/wireless/iwlwifi/dvm/power.c
>>>>>>> index f2c1439..e5a6b70 100644
>>>>>>> --- a/drivers/net/wireless/iwlwifi/dvm/power.c
>>>>>>> +++ b/drivers/net/wireless/iwlwifi/dvm/power.c
>>>>>>> @@ -288,6 +288,9 @@ static void iwl_power_build_cmd(struct iwl_priv *priv,
>>>>>>>         bool enabled = priv->hw->conf.flags & IEEE80211_CONF_PS;
>>>>>>>         int dtimper;
>>>>>>>
>>>>>>> +       iwl_power_sleep_cam_cmd(priv, cmd);
>>>>>>> +       return;
>>>>>>> +
>>>>>>>         dtimper = priv->hw->conf.ps_dtim_period ?: 1;
>>>>>>>
>>>>>>>         if (priv->wowlan)
>>>>>>
>>>>>> This patch has survived for about 15 minutes on 3.15-rc.  It certainly
>>>>>> has some effect: pinging from the AP to the STA now takes a consistent
>>>>>> ~3.8ms instead of taking varying amounts of time between 5 and 200 ms
>>>>>> or so.
>>>>>>
>>>>>> I wonder if this is something 802.11n/802.11ac-specific?  I remember
>>>>>> having all kinds of problems with 802.11n on this laptop that were
>>>>>> resolved by turning off 11n or turning off power saving.
>>>>>>
>>>>>
>>>>> well... my patch really turns off power saving. The hard way.
>>>>> But since you are having issues - I guess I'll post it and disable
>>>>> power save for these devices. Note that today most of the power save
>>>>> features are disabled anyway.
>>>>
>>>> Would it make sense to do this only when connected to a VHT-supporting
>>>> AP or whatever AP feature is probably triggering the problem?
>>>
>>> I am not sure it is related to some "VHT / whatever" feature. From
>>> your logs, I'd say this bug could have happened with any AP. It is
>>> down there in the PCI layer.
>>>
>>>>
>>>> *sigh* I'd just plug in a new PCIe wireless card, except that I think
>>>> that my evil BIOS will refuse to boot if I do that.
>>>>
>>> I can recommend 7260 :)
>>
>> http://www.thinkwiki.org/wiki/Problem_with_unauthorized_MiniPCI_network_card
>>
>> I'm not sure how I feel about flashing my BIOS with random things off
>> the internet :(
>>
>>> Before you do that, can you check this one?
>>>
>>> diff --git a/drivers/net/wireless/iwlwifi/dvm/power.c
>>> b/drivers/net/wireless/iwlwifi/dvm/power.c
>>> index f2c1439..047112c 100644
>>> --- a/drivers/net/wireless/iwlwifi/dvm/power.c
>>> +++ b/drivers/net/wireless/iwlwifi/dvm/power.c
>>> @@ -292,6 +292,8 @@ static void iwl_power_build_cmd(struct iwl_priv *priv,
>>>
>>>         if (priv->wowlan)
>>>                 iwl_static_sleep_cmd(priv, cmd, IWL_POWER_INDEX_5, dtimper);
>>> +       if (!enabled)
>>> +               iwl_power_sleep_cam_cmd(priv, cmd);
>>>         else if (!priv->lib->no_idle_support &&
>>>                  priv->hw->conf.flags & IEEE80211_CONF_IDLE)
>>>                 iwl_static_sleep_cmd(priv, cmd, IWL_POWER_INDEX_5, 20);
>>> @@ -299,9 +301,7 @@ static void iwl_power_build_cmd(struct iwl_priv *priv,
>>>                 /* in thermal throttling low power state */
>>>                 iwl_static_sleep_cmd(priv, cmd,
>>>                     iwl_tt_current_power_mode(priv), dtimper);
>>> -       } else if (!enabled)
>>> -               iwl_power_sleep_cam_cmd(priv, cmd);
>>> -       else if (priv->power_data.debug_sleep_level_override >= 0)
>>> +       } else if (priv->power_data.debug_sleep_level_override >= 0)
>>>                 iwl_static_sleep_cmd(priv, cmd,
>>>
>>> priv->power_data.debug_sleep_level_override,
>>>                                      dtimper);
>>>
>>> This is the final version I want to send.
>>
>> I'll test it tonight.  I'm away from both the network and the laptop right now.
>
> No good :(  I got the same issue again, but it still sames rarer than unpatched.
>
> It looks like your patch allows both:
>
> iwl_static_sleep_cmd(priv, cmd, IWL_POWER_INDEX_5, dtimper);
>
> and
>
> iwl_static_sleep_cmd(priv, cmd, IWL_POWER_INDEX_5, 20);
>
> I don't know whether that's a problem.
>
> Also, is this bad?
>
> iwlwifi 0000:03:00.0: can't disable ASPM; OS doesn't have ASPM control
>
> lspci seems to think that L1 is enabled (see attached logs).
>

This seems surprisingly consistent: on first boot, wireless is okay w/
this AP, but after suspend/resume, it's unreliable.  I could be wrong
(the unreliability isn't *that* consistent), but I've just seen this a
couple more times.

Using pcie_aspm=force to forcibly disable L1 makes no difference.

Is there possibly a driver bug that causes some workaround to be
applied on boot but not on resume?  Or is BIOS doing something
different?

--Andy
--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux