Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 4 Jul 2017 00:02:29 +0000 (UTC)
From:      Zbigniew Bodek <zbb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r320628 - head/sys/dev/ena
Message-ID:  <201707040002.v6402T3T082813@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
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@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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201707040002.v6402T3T082813>