Search Linux Wireless

Re: Help debugging iwldvm / ath10k stalls

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

 



>>>>>>>> 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.

I'd expect enable to be false... But I might have got lost in
mac80211's PS code... Can  you check the value of enable? Thanks
Anyway - I want to call the cam one. IOW, I want to disable power save
completely. This is what is causing trouble.
We want to add a frame on the ring, and since the NIC is asleep, we
schedule a wakeup of the NIC so that it can fetch the packet when it
wakes up... But it doesn't wake up...
Now - This is firmware / hardware related... which means that there
isn't much I can do for this old device.
 Bottom line, I guess we want to disable power save here.
If you can bisect this, this can be really helpful. This might allow
us to keep the feature.

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

yeah... that's a mess. I have suffered a lot from L1, so... I disable
it (not for newer devices). But here, your BIOS doesn't let me disable
it...

> 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.

no wonder.

>
> 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?
>

I find it hard to believe, but one never knows...
--
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