svn commit: r320628 - head/sys/dev/ena

Zbigniew Bodek zbb at FreeBSD.org
Tue Jul 4 00:02:30 UTC 2017


Author: zbb
Date: Tue Jul  4 00:02:28 2017
New Revision: 320628
URL: https://svnweb.freebsd.org/changeset/base/320628

Log:
  Unmask all IO irqs after driver state is set as running
  
  If driver left MSI-x handlling routine because interface was put down,
  it is not unmasking IRQs, so any requesting interrupt will be awaiting
  for unmasking.
  
  On ena_up() routine all interrupts are being unmasked and any awaiting
  interrupt will be handled right away.
  
  If handler was executed before driver state was set as running, handling
  routine is being ended immediately, leaving IO irqs for given queue
  masked.
  
  Submitted by:   Michal Krawczyk <mk at semihalf.com>
  Obtained from:  Semihalf
  Sponsored by:   Amazon.com Inc.

Modified:
  head/sys/dev/ena/ena.c

Modified: head/sys/dev/ena/ena.c
==============================================================================
--- head/sys/dev/ena/ena.c	Tue Jul  4 00:02:06 2017	(r320627)
+++ head/sys/dev/ena/ena.c	Tue Jul  4 00:02:28 2017	(r320628)
@@ -2097,7 +2097,6 @@ ena_up_complete(struct ena_adapter *adapter)
 
 	ena_change_mtu(adapter->ifp, adapter->ifp->if_mtu);
 	ena_refill_all_rx_bufs(adapter);
-	ena_unmask_all_io_irqs(adapter);
 
 	return (0);
 }
@@ -2170,6 +2169,8 @@ ena_up(struct ena_adapter *adapter)
 		taskqueue_enqueue(adapter->stats_tq, &adapter->stats_task);
 
 		adapter->up = true;
+
+		ena_unmask_all_io_irqs(adapter);
 	}
 
 	return (0);


More information about the svn-src-all mailing list