source: branches/chaos_calmer/package/kernel/mac80211/patches/351-0028-brcmfmac-defer-DPC-processing-during-probe.patch @ 49407

Last change on this file since 49407 was 49407, checked in by rmilecki, 12 months ago

mac80211: brcmfmac: backport changes from 2016-09-27

This fixes memory leaks, some possible crashes and bug that could cause
WARNING on every add_key/del_key call. It also replaces WARNING with
a simple message. They may still occur e.g. on station going out of
range and A-MPDU stall in the firmware.

Signed-off-by: Rafał Miłecki <rafal@…>

File size: 1.6 KB
  • drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c

    From fd3ed33f51c2a586412d35b4f64803f019ab589f Mon Sep 17 00:00:00 2001
    From: Arend Van Spriel <arend.vanspriel@broadcom.com>
    Date: Fri, 15 Jul 2016 12:39:13 +0200
    Subject: [PATCH] brcmfmac: defer DPC processing during probe
    
    The sdio dpc starts processing when in SDIOD_STATE_DATA. This state was
    entered right after firmware download. This patch moves that transition
    just before enabling sdio interrupt handling thus avoiding watchdog
    expiry which would put the bus to sleep while probing.
    
    Reviewed-by: Hante Meuleman <hante.meuleman@broadcom.com>
    Reviewed-by: Pieter-Paul Giesberts <pieter-paul.giesberts@broadcom.com>
    Reviewed-by: Franky Lin <franky.lin@broadcom.com>
    Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    ---
     drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 7 +++----
     1 file changed, 3 insertions(+), 4 deletions(-)
    
    a b static int brcmf_sdio_download_firmware( 
    33043304                goto err; 
    33053305        } 
    33063306 
    3307         /* Allow full data communication using DPC from now on. */ 
    3308         brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA); 
    3309         bcmerror = 0; 
    3310  
    33113307err: 
    33123308        brcmf_sdio_clkctl(bus, CLK_SDONLY, false); 
    33133309        sdio_release_host(bus->sdiodev->func[1]); 
    static void brcmf_sdio_firmware_callback 
    40454041        } 
    40464042 
    40474043        if (err == 0) { 
     4044                /* Allow full data communication using DPC from now on. */ 
     4045                brcmf_sdiod_change_state(bus->sdiodev, BRCMF_SDIOD_DATA); 
     4046 
    40484047                err = brcmf_sdiod_intr_register(sdiodev); 
    40494048                if (err != 0) 
    40504049                        brcmf_err("intr register failed:%d\n", err); 
Note: See TracBrowser for help on using the repository browser.