]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
iwlwifi: pcie: fix ALIVE interrupt handling for gen2 devices w/o MSI-X
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Tue, 21 May 2019 12:03:21 +0000 (15:03 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 26 Jul 2019 07:10:54 +0000 (09:10 +0200)
commit ec46ae30245ecb41d73f8254613db07c653fb498 upstream.

We added code to restock the buffer upon ALIVE interrupt
when MSI-X is disabled. This was added as part of the context
info code. This code was added only if the ISR debug level
is set which is very unlikely to be related.
Move this code to run even when the ISR debug level is not
set.

Note that gen2 devices work with MSI-X in most cases so that
this path is seldom used.

Cc: stable@vger.kernel.org
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/net/wireless/intel/iwlwifi/pcie/rx.c

index ca7573e343fa565c4e8456517a8353fe921c257b..1e33a6a336eccab590d1b5ced094a4673c1f212f 100644 (file)
@@ -1827,25 +1827,23 @@ irqreturn_t iwl_pcie_irq_handler(int irq, void *dev_id)
                goto out;
        }
 
-       if (iwl_have_debug_level(IWL_DL_ISR)) {
-               /* NIC fires this, but we don't use it, redundant with WAKEUP */
-               if (inta & CSR_INT_BIT_SCD) {
-                       IWL_DEBUG_ISR(trans,
-                                     "Scheduler finished to transmit the frame/frames.\n");
-                       isr_stats->sch++;
-               }
+       /* NIC fires this, but we don't use it, redundant with WAKEUP */
+       if (inta & CSR_INT_BIT_SCD) {
+               IWL_DEBUG_ISR(trans,
+                             "Scheduler finished to transmit the frame/frames.\n");
+               isr_stats->sch++;
+       }
 
-               /* Alive notification via Rx interrupt will do the real work */
-               if (inta & CSR_INT_BIT_ALIVE) {
-                       IWL_DEBUG_ISR(trans, "Alive interrupt\n");
-                       isr_stats->alive++;
-                       if (trans->cfg->gen2) {
-                               /*
-                                * We can restock, since firmware configured
-                                * the RFH
-                                */
-                               iwl_pcie_rxmq_restock(trans, trans_pcie->rxq);
-                       }
+       /* Alive notification via Rx interrupt will do the real work */
+       if (inta & CSR_INT_BIT_ALIVE) {
+               IWL_DEBUG_ISR(trans, "Alive interrupt\n");
+               isr_stats->alive++;
+               if (trans->cfg->gen2) {
+                       /*
+                        * We can restock, since firmware configured
+                        * the RFH
+                        */
+                       iwl_pcie_rxmq_restock(trans, trans_pcie->rxq);
                }
        }