• Fabio Estevam's avatar
    ath10k: sdio: Add missing BH locking around napi_schdule() · 019edd01
    Fabio Estevam authored
    On a i.MX-based board with a QCA9377 Wifi chip, the following errors
    are seen after launching the 'hostapd' application:
    
    hostapd /etc/wifi.conf
    Configuration file: /etc/wifi.conf
    wlan0: interface state UNINITIALIZED->COUNTRY_UPDATE
    NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #08!!!
    Using interface wlan0 with hwaddr 00:1f:7b:31:04:a0 and ssid "thessid"
    IPv6: ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready
    wlan0: interface state COUNTRY_UPDATE->ENABLED
    wlan0: AP-ENABLED
    NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #08!!!
    NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #08!!!
    NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #08!!!
    NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #08!!!
    ...
    
    Fix this problem by adding the BH locking around napi-schedule(),
    in the same way it was done in commit e63052a5 ("mlx5e: add
    add missing BH locking around napi_schdule()").
    
    Its commit log provides the following explanation:
    
    "It's not correct to call napi_schedule() in pure process
    context. Because we use __raise_softirq_irqoff() we require
    callers to be in a context which will eventually lead to
    softirq handling (hardirq, bh disabled, etc.).
    
    With code as is users will see:
    
    NOHZ tick-stop error: Non-RCU local softirq work is pending, handler #08!!!
    "
    
    Fixes: cfee8793 ("ath10k: enable napi on RX path for sdio")
    Signed-off-by: default avatarFabio Estevam <festevam@denx.de>
    Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
    Link: https://lore.kernel.org/r/20210824144339.2796122-1-festevam@denx.de
    019edd01
sdio.c 66.8 KB