• Emmanuel Grumbach's avatar
    iwlwifi: pcie: don't panic on host commands in iwldvm · 23e76d1a
    Emmanuel Grumbach authored
    None of the devices supported by iwldvm have support for
    shadow registers. This means that we wake the NIC
    when we increment the write pointer on Tx ring.
    This happened even before my bad commit mentionned below.
    Since my commit below, we wake up the NIC when we put a
    host command on the ring regardless of shadow register
    support. This means that in iwldvm (when the NIC doesn't
    support shadow register), we wake up the NIC twice:
    
    pcie_enqueue_hcmd:
    	wake up the NIC
    	iwl_pcie_txq_inc_wr_ptr:
    		wake up the NIC - no shadow reg support
    
    Since waking up the NIC means that we need to acquire a
    spinlock, this obviously leads to a recursive spinlock
    and hence a freeze.
    
    Fixes: b9439491 ("iwlwifi: pcie: keep the NIC awake when commands are in flight")
    Reported-by: default avatarJanusz Dziedzic <janusz.dziedzic@gmail.com>
    Reviewed-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarEmmanuel Grumbach <emmanuel.grumbach@intel.com>
    23e76d1a
tx.c 50.8 KB