Module Name: src
Committed By: msaitoh
Date: Wed Oct 4 11:03:21 UTC 2017
Modified Files:
src/sys/dev/pci/ixgbe: ixv.c
Log Message:
- ixv_enableintr(): Fix a bug that ixv_enable_queue() is called with incorrect
argument. This bug was added in rev. 1.68.
- Don't check neither VTEICR nor VTEICS same as Linux. It seems that both
registers can't be used to check which MSI-X vector is triggered. A bit is
set on very low probability and the bit location is incorrect. Is this an
errata?
To generate a diff of this commit:
cvs rdiff -u -r1.68 -r1.69 src/sys/dev/pci/ixgbe/ixv.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/pci/ixgbe/ixv.c
diff -u src/sys/dev/pci/ixgbe/ixv.c:1.68 src/sys/dev/pci/ixgbe/ixv.c:1.69
--- src/sys/dev/pci/ixgbe/ixv.c:1.68 Tue Oct 3 03:12:29 2017
+++ src/sys/dev/pci/ixgbe/ixv.c Wed Oct 4 11:03:20 2017
@@ -1,4 +1,4 @@
-/*$NetBSD: ixv.c,v 1.68 2017/10/03 03:12:29 msaitoh Exp $*/
+/*$NetBSD: ixv.c,v 1.69 2017/10/04 11:03:20 msaitoh Exp $*/
/******************************************************************************
@@ -912,20 +912,13 @@ ixv_msix_mbx(void *arg)
{
struct adapter *adapter = arg;
struct ixgbe_hw *hw = &adapter->hw;
- u32 reg;
++adapter->link_irq.ev_count;
-
- /* First get the cause */
- reg = IXGBE_READ_REG(hw, IXGBE_VTEICR);
-#if 0 /* NetBSD: We use auto-clear, so it's not required to write VTEICR */
- /* Clear interrupt with write */
- IXGBE_WRITE_REG(hw, IXGBE_VTEICR, (1 << adapter->vector));
-#endif
+ /* NetBSD: We use auto-clear, so it's not required to write VTEICR */
/* Link status change */
- if (reg & (1 << adapter->vector))
- softint_schedule(adapter->link_si);
+ hw->mac.get_link_status = TRUE;
+ softint_schedule(adapter->link_si);
IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, (1 << adapter->vector));
@@ -1865,6 +1858,7 @@ ixv_enable_intr(struct adapter *adapter)
/* For VTEIMS */
IXGBE_WRITE_REG(hw, IXGBE_VTEIMS, (1 << adapter->vector));
+ que = adapter->queues;
for (i = 0; i < adapter->num_queues; i++, que++)
ixv_enable_queue(adapter, que->msix);