On 11/05/2017 10:09 PM, Nik Nyby wrote:
On 11/05/2017 09:09 PM, Larry Finger wrote:
Disabling all of _rtl8821ae_enable_aspm_back_door() may not be wise. We tried
that patch as part of debugging.
That routine consists of two mdio r/w sequences, and 3 dbi r/w sequences. The
third one of the latter is only used for RTL8812AE, thus it can be ignored.
What happens if you try disabling those r/w pairs one at a time? It is
possible that one, or more of them, should be disabled when aspm is zero.
I first tried disabling only the mdio sequences, then the dbi sequences. I was
able to reproduce my problem in both cases. But I have found that my problem is
resolved by only removing the enable_aspm() call, and leaving the call to
_rtl8821ae_enable_aspm_back_door() intact.
If removing rtlpriv->intf_ops->enable_aspm(hw) is the same as setting aspm=0,
then it's possible I'm not setting the option correctly. But as far as I can see
right now, removing enable_aspm() is necessary for my stable connection.
Your results seem to indicate that aspm, which is support_aspm internally, is
not being set to zero. The first executable statement in enable_aspm is
if (!ppsc->support_aspm)
return;
That statement should disable the entire routine; however, you still need to
disable the call to this routine. It is possible that the timing is messed up
when built into the kernel. Building as a module will be instructive.
Larry