lkml.org 
[lkml]   [2019]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v3 0/5] brcmfmac: sdio: Deal better w/ transmission errors related to idle
    Date
    This series attempts to deal better with the expected transmission
    errors related to the idle states (handled by the Always-On-Subsystem
    or AOS) on the SDIO-based WiFi on rk3288-veyron-minnie,
    rk3288-veyron-speedy, and rk3288-veyron-mickey.

    Some details about those errors can be found in
    <https://crbug.com/960222>, but to summarize it here: if we try to
    send the wakeup command to the WiFi card at the same time it has
    decided to wake up itself then it will behave badly on the SDIO bus.
    This can cause timeouts or CRC errors.

    When I tested on 4.19 and 4.20 these CRC errors can be seen to cause
    re-tuning. Since I am currently developing on 4.19 this was the
    original problem I attempted to solve.

    On mainline it turns out that you don't see the retuning errors but
    you see tons of spam about timeouts trying to wakeup from sleep. I
    tracked down the commit that was causing that and have partially
    reverted it here. I have no real knowledge about Broadcom WiFi, but
    the commit that was causing problems sounds (from the descriptioin) to
    be a hack commit penalizing all Broadcom WiFi users because of a bug
    in a Cypress SD controller. I will let others comment if this is
    truly the case and, if so, what the right solution should be.

    For v3 of this series I have added 2 patches to the end of the series
    to address errors that would show up on systems with these same SDIO
    WiFi cards when used on controllers that do periodic retuning. These
    systems need an extra fix to prevent the retuning from happening when
    the card is asleep.

    Changes in v3:
    - Took out the spinlock since I believe this is all in one context.
    - Expect errors for all of brcmf_sdio_kso_control() (Adrian).
    - ("mmc: core: Export mmc_retune_hold_now() mmc_retune_release()") new for v3.
    - ("brcmfmac: sdio: Don't tune while the card is off") new for v3.

    Changes in v2:
    - A full revert, not just a partial one (Arend). ...with explicit Cc.
    - Updated commit message to clarify based on discussion of v1.

    Douglas Anderson (5):
    Revert "brcmfmac: disable command decode in sdio_aos"
    mmc: core: API for temporarily disabling auto-retuning due to errors
    brcmfmac: sdio: Disable auto-tuning around commands expected to fail
    mmc: core: Export mmc_retune_hold_now() mmc_retune_release()
    brcmfmac: sdio: Don't tune while the card is off

    drivers/mmc/core/core.c | 19 +++++++++++++++++--
    drivers/mmc/core/host.c | 7 +++++++
    drivers/mmc/core/host.h | 7 -------
    .../broadcom/brcm80211/brcmfmac/sdio.c | 18 +++++++++++++-----
    include/linux/mmc/core.h | 4 ++++
    include/linux/mmc/host.h | 1 +
    6 files changed, 42 insertions(+), 14 deletions(-)

    --
    2.22.0.rc2.383.gf4fbbf30c2-goog

    \
     
     \ /
      Last update: 2019-06-08 00:39    [W:2.269 / U:0.148 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site