• Thomas Gleixner's avatar
    net: brcmfmac: Convey execution context via argument to brcmf_netif_rx() · 687006e2
    Thomas Gleixner authored
    bcrmgf_netif_rx() uses in_interrupt to chose between netif_rx() and
    netif_rx_ni(). in_interrupt() usage in drivers is phased out.
    
    Convey the execution mode via an 'inirq' argument through the various
    callchains leading to brcmf_netif_rx():
    
    brcmf_pcie_isr_thread()		    <- Task context
      brcmf_proto_msgbuf_rx_trigger()
        brcmf_msgbuf_process_rx()
          brcmf_msgbuf_process_msgtype()
            brcmf_msgbuf_process_rx_complete()
    	  brcmf_netif_mon_rx()
    	     brcmf_netif_rx(isirq = false)
    	  brcmf_netif_rx(isirq = false)
    
    brcmf_sdio_readframes()  <- Task context sdio_claim_host() might sleep
      brcmf_rx_frame(isirq = false)
    
    brcmf_sdio_rxglom()      <- Task context sdio_claim_host() might sleep
      brcmf_rx_frame(isirq = false)
    
    brcmf_usb_rx_complete()  <- Interrupt context
      brcmf_rx_frame(isirq = true)
    
    brcmf_rx_frame()
      brcmf_proto_rxreorder()
        brcmf_proto_bcdc_rxreorder()
          brcmf_fws_rxreorder()
            brcmf_netif_rx()
          brcmf_netif_rx()
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Arend van Spriel <arend.vanspriel@broadcom.com>
    Cc: Kalle Valo <kvalo@codeaurora.org>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    687006e2
usb.c 38.5 KB