Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/netbsd-8]: src/sys/dev/pci/ixgbe Pull up the following revisions, reques...



details:   https://anonhg.NetBSD.org/src/rev/a94a7d7b5359
branches:  netbsd-8
changeset: 852466:a94a7d7b5359
user:      martin <martin%NetBSD.org@localhost>
date:      Thu Aug 01 14:14:30 2019 +0000

description:
Pull up the following revisions, requested by msaitoh in ticket #1313:

        sys/dev/pci/ixgbe/ixgbe_type.h                  1.41
        sys/dev/pci/ixgbe/ixgbe.c                       1.194,1.197-1.199
                                                        via patch
        sys/dev/pci/ixgbe/ixgbe_common.c                1.24
        sys/dev/pci/ixgbe/ixv.c                         1.121,1.124-1.125

 - Avoid undefined behavior of interrupt vector setting.
 - Avoid undefined behavior of TX/RX queue statistics calculation.
 - Avoid undefined behavior of X550EM's PHY accesses.
 - Avoid undefined behavior of Flow Control Transmit Timer setting.
 - Don't call {ixgbe,ixv}_stop() twice while detaching.

diffstat:

 sys/dev/pci/ixgbe/ixgbe.c        |  33 +++++++++++++++++----------------
 sys/dev/pci/ixgbe/ixgbe_common.c |   4 ++--
 sys/dev/pci/ixgbe/ixgbe_type.h   |   8 ++++----
 sys/dev/pci/ixgbe/ixv.c          |  14 +++++---------
 4 files changed, 28 insertions(+), 31 deletions(-)

diffs (196 lines):

diff -r 486805ce97ae -r a94a7d7b5359 sys/dev/pci/ixgbe/ixgbe.c
--- a/sys/dev/pci/ixgbe/ixgbe.c Thu Aug 01 14:02:47 2019 +0000
+++ b/sys/dev/pci/ixgbe/ixgbe.c Thu Aug 01 14:14:30 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.c,v 1.88.2.30 2019/07/22 17:53:35 martin Exp $ */
+/* $NetBSD: ixgbe.c,v 1.88.2.31 2019/08/01 14:14:30 martin Exp $ */
 
 /******************************************************************************
 
@@ -608,7 +608,7 @@
 
                /* Set RQSMR (Receive Queue Statistic Mapping) register */
                reg = IXGBE_READ_REG(hw, IXGBE_RQSMR(regnum));
-               reg &= ~(0x000000ff << (regshift * 8));
+               reg &= ~(0x000000ffUL << (regshift * 8));
                reg |= i << (regshift * 8);
                IXGBE_WRITE_REG(hw, IXGBE_RQSMR(regnum), reg);
 
@@ -697,7 +697,7 @@
                else
                        tqsmreg = IXGBE_TQSM(regnum);
                reg = IXGBE_READ_REG(hw, tqsmreg);
-               reg &= ~(0x000000ff << (regshift * 8));
+               reg &= ~(0x000000ffUL << (regshift * 8));
                reg |= i << (regshift * 8);
                IXGBE_WRITE_REG(hw, tqsmreg, reg);
 
@@ -2572,7 +2572,7 @@
 {
        struct ixgbe_hw *hw = &adapter->hw;
        struct ix_queue *que = &adapter->queues[vector];
-       u64             queue = (u64)(1ULL << vector);
+       u64             queue = 1ULL << vector;
        u32             mask;
 
        mutex_enter(&que->dc_mtx);
@@ -3555,8 +3555,13 @@
                return (EBUSY);
        }
 
-       /* Stop the interface. Callouts are stopped in it. */
-       ixgbe_ifstop(adapter->ifp, 1);
+       /*
+        * Stop the interface. ixgbe_setup_low_power_mode() calls ixgbe_stop(),
+        * so it's not required to call ixgbe_stop() directly.
+        */
+       IXGBE_CORE_LOCK(adapter);
+       ixgbe_setup_low_power_mode(adapter);
+       IXGBE_CORE_UNLOCK(adapter);
 #if NVLAN > 0
        /* Make sure VLANs are not using driver */
        if (!VLAN_ATTACHED(&adapter->osdep.ec))
@@ -3572,10 +3577,6 @@
        pmf_device_deregister(dev);
 
        ether_ifdetach(adapter->ifp);
-       /* Stop the adapter */
-       IXGBE_CORE_LOCK(adapter);
-       ixgbe_setup_low_power_mode(adapter);
-       IXGBE_CORE_UNLOCK(adapter);
 
        ixgbe_free_softint(adapter);
 
@@ -4174,8 +4175,8 @@
                        entry += (type * 64);
                index = (entry >> 2) & 0x1F;
                ivar = IXGBE_READ_REG(hw, IXGBE_IVAR(index));
-               ivar &= ~(0xFF << (8 * (entry & 0x3)));
-               ivar |= (vector << (8 * (entry & 0x3)));
+               ivar &= ~(0xffUL << (8 * (entry & 0x3)));
+               ivar |= ((u32)vector << (8 * (entry & 0x3)));
                IXGBE_WRITE_REG(&adapter->hw, IXGBE_IVAR(index), ivar);
                break;
        case ixgbe_mac_82599EB:
@@ -4186,14 +4187,14 @@
                if (type == -1) { /* MISC IVAR */
                        index = (entry & 1) * 8;
                        ivar = IXGBE_READ_REG(hw, IXGBE_IVAR_MISC);
-                       ivar &= ~(0xFF << index);
-                       ivar |= (vector << index);
+                       ivar &= ~(0xffUL << index);
+                       ivar |= ((u32)vector << index);
                        IXGBE_WRITE_REG(hw, IXGBE_IVAR_MISC, ivar);
                } else {        /* RX/TX IVARS */
                        index = (16 * (entry & 1)) + (8 * type);
                        ivar = IXGBE_READ_REG(hw, IXGBE_IVAR(entry >> 1));
-                       ivar &= ~(0xFF << index);
-                       ivar |= (vector << index);
+                       ivar &= ~(0xffUL << index);
+                       ivar |= ((u32)vector << index);
                        IXGBE_WRITE_REG(hw, IXGBE_IVAR(entry >> 1), ivar);
                }
                break;
diff -r 486805ce97ae -r a94a7d7b5359 sys/dev/pci/ixgbe/ixgbe_common.c
--- a/sys/dev/pci/ixgbe/ixgbe_common.c  Thu Aug 01 14:02:47 2019 +0000
+++ b/sys/dev/pci/ixgbe/ixgbe_common.c  Thu Aug 01 14:14:30 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe_common.c,v 1.13.2.5 2019/07/22 17:53:35 martin Exp $ */
+/* $NetBSD: ixgbe_common.c,v 1.13.2.6 2019/08/01 14:14:30 martin Exp $ */
 
 /******************************************************************************
   SPDX-License-Identifier: BSD-3-Clause
@@ -2950,7 +2950,7 @@
        }
 
        /* Configure pause time (2 TCs per register) */
-       reg = hw->fc.pause_time * 0x00010001;
+       reg = (u32)hw->fc.pause_time * 0x00010001;
        for (i = 0; i < (IXGBE_DCB_MAX_TRAFFIC_CLASS / 2); i++)
                IXGBE_WRITE_REG(hw, IXGBE_FCTTV(i), reg);
 
diff -r 486805ce97ae -r a94a7d7b5359 sys/dev/pci/ixgbe/ixgbe_type.h
--- a/sys/dev/pci/ixgbe/ixgbe_type.h    Thu Aug 01 14:02:47 2019 +0000
+++ b/sys/dev/pci/ixgbe/ixgbe_type.h    Thu Aug 01 14:14:30 2019 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe_type.h,v 1.22.2.9 2019/07/22 17:53:35 martin Exp $ */
+/* $NetBSD: ixgbe_type.h,v 1.22.2.10 2019/08/01 14:14:30 martin Exp $ */
 
 /******************************************************************************
   SPDX-License-Identifier: BSD-3-Clause
@@ -4457,7 +4457,7 @@
 #define IXGBE_KRM_LINK_CTRL_1_TETH_EEE_CAP_KR          (1 << 26)
 #define IXGBE_KRM_LINK_S1_MAC_AN_COMPLETE              (1 << 28)
 #define IXGBE_KRM_LINK_CTRL_1_TETH_AN_ENABLE           (1 << 29)
-#define IXGBE_KRM_LINK_CTRL_1_TETH_AN_RESTART          (1 << 31)
+#define IXGBE_KRM_LINK_CTRL_1_TETH_AN_RESTART          (1UL << 31)
 
 #define IXGBE_KRM_AN_CNTL_1_SYM_PAUSE                  (1 << 28)
 #define IXGBE_KRM_AN_CNTL_1_ASM_PAUSE                  (1 << 29)
@@ -4487,7 +4487,7 @@
 #define IXGBE_KRM_TX_COEFF_CTRL_1_CMINUS1_OVRRD_EN     (1 << 1)
 #define IXGBE_KRM_TX_COEFF_CTRL_1_CPLUS1_OVRRD_EN      (1 << 2)
 #define IXGBE_KRM_TX_COEFF_CTRL_1_CZERO_EN             (1 << 3)
-#define IXGBE_KRM_TX_COEFF_CTRL_1_OVRRD_EN             (1 << 31)
+#define IXGBE_KRM_TX_COEFF_CTRL_1_OVRRD_EN             (1UL << 31)
 
 #define IXGBE_SB_IOSF_INDIRECT_CTRL    0x00011144
 #define IXGBE_SB_IOSF_INDIRECT_DATA    0x00011148
@@ -4503,7 +4503,7 @@
 #define IXGBE_SB_IOSF_CTRL_TARGET_SELECT_SHIFT 28
 #define IXGBE_SB_IOSF_CTRL_TARGET_SELECT_MASK  0x7
 #define IXGBE_SB_IOSF_CTRL_BUSY_SHIFT          31
-#define IXGBE_SB_IOSF_CTRL_BUSY                (1 << IXGBE_SB_IOSF_CTRL_BUSY_SHIFT)
+#define IXGBE_SB_IOSF_CTRL_BUSY                (1UL << IXGBE_SB_IOSF_CTRL_BUSY_SHIFT)
 #define IXGBE_SB_IOSF_TARGET_KR_PHY    0
 
 #define IXGBE_NW_MNG_IF_SEL            0x00011178
diff -r 486805ce97ae -r a94a7d7b5359 sys/dev/pci/ixgbe/ixv.c
--- a/sys/dev/pci/ixgbe/ixv.c   Thu Aug 01 14:02:47 2019 +0000
+++ b/sys/dev/pci/ixgbe/ixv.c   Thu Aug 01 14:14:30 2019 +0000
@@ -1,4 +1,4 @@
-/*$NetBSD: ixv.c,v 1.56.2.22 2019/07/22 17:53:35 martin Exp $*/
+/*$NetBSD: ixv.c,v 1.56.2.23 2019/08/01 14:14:30 martin Exp $*/
 
 /******************************************************************************
 
@@ -606,10 +606,6 @@
        }
 #endif
 
-       IXGBE_CORE_LOCK(adapter);
-       ixv_stop(adapter);
-       IXGBE_CORE_UNLOCK(adapter);
-
        for (int i = 0; i < adapter->num_queues; i++, que++, txr++) {
                if (!(adapter->feat_en & IXGBE_FEATURE_LEGACY_TX))
                        softint_disestablish(txr->txr_si);
@@ -846,7 +842,7 @@
 {
        struct ixgbe_hw *hw = &adapter->hw;
        struct ix_queue *que = &adapter->queues[vector];
-       u32             queue = 1 << vector;
+       u32             queue = 1UL << vector;
        u32             mask;
 
        mutex_enter(&que->dc_mtx);
@@ -867,7 +863,7 @@
 {
        struct ixgbe_hw *hw = &adapter->hw;
        struct ix_queue *que = &adapter->queues[vector];
-       u64             queue = (u64)(1 << vector);
+       u32             queue = 1UL << vector;
        u32             mask;
 
        mutex_enter(&que->dc_mtx);
@@ -2146,8 +2142,8 @@
        } else {          /* RX/TX IVARS */
                index = (16 * (entry & 1)) + (8 * type);
                ivar = IXGBE_READ_REG(hw, IXGBE_VTIVAR(entry >> 1));
-               ivar &= ~(0xFF << index);
-               ivar |= (vector << index);
+               ivar &= ~(0xffUL << index);
+               ivar |= ((u32)vector << index);
                IXGBE_WRITE_REG(hw, IXGBE_VTIVAR(entry >> 1), ivar);
        }
 } /* ixv_set_ivar */



Home | Main Index | Thread Index | Old Index