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>