Merge branch '1GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue

Jeff Kirsher says:

====================
Intel Wired LAN Driver Updates 2019-11-01

This series contains updates to e1000, igb, igc, ixgbe, i40e and driver
documentation.

Lyude Paul fixes an issue where a fatal read error occurs when the
device is unplugged from the machine.  So change the read error into a
warn while the device is still present.

Manfred Rudigier found that the i350 device was not apart of the "Media
Auto Sense" feature, yet the device supports it.  So add the missing
i350 device to the check and fix an issue where the media auto sense
would flip/flop when no cable was connected to the port causing spurious
kernel log messages.

I fixed an issue where the fix to resolve receive buffer starvation was
applied in more than one place in the driver, one being the incorrect
location in the i40e driver.

Wenwen Wang fixes a potential memory leak in e1000 where allocated
memory is not properly cleaned up in one of the error paths.

Jonathan Neuschäfer cleans up the driver documentation to be consistent
and remove the footnote reference, since the footnote no longer exists in
the documentation.

Igor Pylypiv cleans up a duplicate clearing of a bit, no need to clear
it twice.

v2: Fixed alignment issue in patch 3 of the series based on community
    feedback.
====================

Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
David S. Miller 2019-11-01 14:50:27 -07:00
commit c8c2cd8102
18 changed files with 67 additions and 71 deletions

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
============================================================== =============================================================
Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters Linux Base Driver for the Intel(R) PRO/100 Family of Adapters
============================================================== =============================================================
June 1, 2018 June 1, 2018
@ -21,7 +21,7 @@ Contents
In This Release In This Release
=============== ===============
This file describes the Linux* Base Driver for the Intel(R) PRO/100 Family of This file describes the Linux Base Driver for the Intel(R) PRO/100 Family of
Adapters. This driver includes support for Itanium(R)2-based systems. Adapters. This driver includes support for Itanium(R)2-based systems.
For questions related to hardware requirements, refer to the documentation For questions related to hardware requirements, refer to the documentation
@ -138,9 +138,9 @@ version 1.6 or later is required for this functionality.
The latest release of ethtool can be found from The latest release of ethtool can be found from
https://www.kernel.org/pub/software/network/ethtool/ https://www.kernel.org/pub/software/network/ethtool/
Enabling Wake on LAN* (WoL) Enabling Wake on LAN (WoL)
--------------------------- --------------------------
WoL is provided through the ethtool* utility. For instructions on WoL is provided through the ethtool utility. For instructions on
enabling WoL with ethtool, refer to the ethtool man page. WoL will be enabling WoL with ethtool, refer to the ethtool man page. WoL will be
enabled on the system during the next shut down or reboot. For this enabled on the system during the next shut down or reboot. For this
driver version, in order to enable WoL, the e100 driver must be loaded driver version, in order to enable WoL, the e100 driver must be loaded

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
=========================================================== ==========================================================
Linux* Base Driver for Intel(R) Ethernet Network Connection Linux Base Driver for Intel(R) Ethernet Network Connection
=========================================================== ==========================================================
Intel Gigabit Linux driver. Intel Gigabit Linux driver.
Copyright(c) 1999 - 2013 Intel Corporation. Copyright(c) 1999 - 2013 Intel Corporation.
@ -438,10 +438,10 @@ ethtool
The latest release of ethtool can be found from The latest release of ethtool can be found from
https://www.kernel.org/pub/software/network/ethtool/ https://www.kernel.org/pub/software/network/ethtool/
Enabling Wake on LAN* (WoL) Enabling Wake on LAN (WoL)
--------------------------- --------------------------
WoL is configured through the ethtool* utility. WoL is configured through the ethtool utility.
WoL will be enabled on the system during the next shut down or reboot. WoL will be enabled on the system during the next shut down or reboot.
For this driver version, in order to enable WoL, the e1000 driver must be For this driver version, in order to enable WoL, the e1000 driver must be

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
====================================================== =====================================================
Linux* Driver for Intel(R) Ethernet Network Connection Linux Driver for Intel(R) Ethernet Network Connection
====================================================== =====================================================
Intel Gigabit Linux driver. Intel Gigabit Linux driver.
Copyright(c) 2008-2018 Intel Corporation. Copyright(c) 2008-2018 Intel Corporation.
@ -338,7 +338,7 @@ and higher cannot be forced. Use the autonegotiation advertising setting to
manually set devices for 1 Gbps and higher. manually set devices for 1 Gbps and higher.
Speed, duplex, and autonegotiation advertising are configured through the Speed, duplex, and autonegotiation advertising are configured through the
ethtool* utility. ethtool utility.
Caution: Only experienced network administrators should force speed and duplex Caution: Only experienced network administrators should force speed and duplex
or change autonegotiation advertising manually. The settings at the switch must or change autonegotiation advertising manually. The settings at the switch must
@ -351,9 +351,9 @@ will not attempt to auto-negotiate with its link partner since those adapters
operate only in full duplex and only at their native speed. operate only in full duplex and only at their native speed.
Enabling Wake on LAN* (WoL) Enabling Wake on LAN (WoL)
--------------------------- --------------------------
WoL is configured through the ethtool* utility. WoL is configured through the ethtool utility.
WoL will be enabled on the system during the next shut down or reboot. For WoL will be enabled on the system during the next shut down or reboot. For
this driver version, in order to enable WoL, the e1000e driver must be loaded this driver version, in order to enable WoL, the e1000e driver must be loaded

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
============================================================== =============================================================
Linux* Base Driver for Intel(R) Ethernet Multi-host Controller Linux Base Driver for Intel(R) Ethernet Multi-host Controller
============================================================== =============================================================
August 20, 2018 August 20, 2018
Copyright(c) 2015-2018 Intel Corporation. Copyright(c) 2015-2018 Intel Corporation.
@ -120,8 +120,8 @@ rx-flow-hash tcp4|udp4|ah4|esp4|sctp4|tcp6|udp6|ah6|esp6|sctp6 m|v|t|s|d|f|n|r
Known Issues/Troubleshooting Known Issues/Troubleshooting
============================ ============================
Enabling SR-IOV in a 64-bit Microsoft* Windows Server* 2012/R2 guest OS under Linux KVM Enabling SR-IOV in a 64-bit Microsoft Windows Server 2012/R2 guest OS under Linux KVM
--------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------
KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM. This KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM. This
includes traditional PCIe devices, as well as SR-IOV-capable devices based on includes traditional PCIe devices, as well as SR-IOV-capable devices based on
the Intel Ethernet Controller XL710. the Intel Ethernet Controller XL710.

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
================================================================== =================================================================
Linux* Base Driver for the Intel(R) Ethernet Controller 700 Series Linux Base Driver for the Intel(R) Ethernet Controller 700 Series
================================================================== =================================================================
Intel 40 Gigabit Linux driver. Intel 40 Gigabit Linux driver.
Copyright(c) 1999-2018 Intel Corporation. Copyright(c) 1999-2018 Intel Corporation.
@ -384,7 +384,7 @@ NOTE: You cannot set the speed for devices based on the Intel(R) Ethernet
Network Adapter XXV710 based devices. Network Adapter XXV710 based devices.
Speed, duplex, and autonegotiation advertising are configured through the Speed, duplex, and autonegotiation advertising are configured through the
ethtool* utility. ethtool utility.
Caution: Only experienced network administrators should force speed and duplex Caution: Only experienced network administrators should force speed and duplex
or change autonegotiation advertising manually. The settings at the switch must or change autonegotiation advertising manually. The settings at the switch must

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
================================================================== =================================================================
Linux* Base Driver for Intel(R) Ethernet Adaptive Virtual Function Linux Base Driver for Intel(R) Ethernet Adaptive Virtual Function
================================================================== =================================================================
Intel Ethernet Adaptive Virtual Function Linux driver. Intel Ethernet Adaptive Virtual Function Linux driver.
Copyright(c) 2013-2018 Intel Corporation. Copyright(c) 2013-2018 Intel Corporation.
@ -19,7 +19,7 @@ Contents
Overview Overview
======== ========
This file describes the iavf Linux* Base Driver. This driver was formerly This file describes the iavf Linux Base Driver. This driver was formerly
called i40evf. called i40evf.
The iavf driver supports the below mentioned virtual function devices and The iavf driver supports the below mentioned virtual function devices and

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
=================================================================== ==================================================================
Linux* Base Driver for the Intel(R) Ethernet Connection E800 Series Linux Base Driver for the Intel(R) Ethernet Connection E800 Series
=================================================================== ==================================================================
Intel ice Linux driver. Intel ice Linux driver.
Copyright(c) 2018 Intel Corporation. Copyright(c) 2018 Intel Corporation.

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
=========================================================== ==========================================================
Linux* Base Driver for Intel(R) Ethernet Network Connection Linux Base Driver for Intel(R) Ethernet Network Connection
=========================================================== ==========================================================
Intel Gigabit Linux driver. Intel Gigabit Linux driver.
Copyright(c) 1999-2018 Intel Corporation. Copyright(c) 1999-2018 Intel Corporation.
@ -129,9 +129,9 @@ version is required for this functionality. Download it at:
https://www.kernel.org/pub/software/network/ethtool/ https://www.kernel.org/pub/software/network/ethtool/
Enabling Wake on LAN* (WoL) Enabling Wake on LAN (WoL)
--------------------------- --------------------------
WoL is configured through the ethtool* utility. WoL is configured through the ethtool utility.
WoL will be enabled on the system during the next shut down or reboot. For WoL will be enabled on the system during the next shut down or reboot. For
this driver version, in order to enable WoL, the igb driver must be loaded this driver version, in order to enable WoL, the igb driver must be loaded

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
============================================================ ===========================================================
Linux* Base Virtual Function Driver for Intel(R) 1G Ethernet Linux Base Virtual Function Driver for Intel(R) 1G Ethernet
============================================================ ===========================================================
Intel Gigabit Virtual Function Linux driver. Intel Gigabit Virtual Function Linux driver.
Copyright(c) 1999-2018 Intel Corporation. Copyright(c) 1999-2018 Intel Corporation.

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
============================================================================= ===========================================================================
Linux* Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Adapters Linux Base Driver for the Intel(R) Ethernet 10 Gigabit PCI Express Adapters
============================================================================= ===========================================================================
Intel 10 Gigabit Linux driver. Intel 10 Gigabit Linux driver.
Copyright(c) 1999-2018 Intel Corporation. Copyright(c) 1999-2018 Intel Corporation.
@ -519,8 +519,8 @@ The offload is also supported for ixgbe's VFs, but the VF must be set as
Known Issues/Troubleshooting Known Issues/Troubleshooting
============================ ============================
Enabling SR-IOV in a 64-bit Microsoft* Windows Server* 2012/R2 guest OS Enabling SR-IOV in a 64-bit Microsoft Windows Server 2012/R2 guest OS
----------------------------------------------------------------------- ---------------------------------------------------------------------
Linux KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM. Linux KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM.
This includes traditional PCIe devices, as well as SR-IOV-capable devices based This includes traditional PCIe devices, as well as SR-IOV-capable devices based
on the Intel Ethernet Controller XL710. on the Intel Ethernet Controller XL710.

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
============================================================= ============================================================
Linux* Base Virtual Function Driver for Intel(R) 10G Ethernet Linux Base Virtual Function Driver for Intel(R) 10G Ethernet
============================================================= ============================================================
Intel 10 Gigabit Virtual Function Linux driver. Intel 10 Gigabit Virtual Function Linux driver.
Copyright(c) 1999-2018 Intel Corporation. Copyright(c) 1999-2018 Intel Corporation.

View File

@ -1,8 +1,8 @@
.. SPDX-License-Identifier: GPL-2.0+ .. SPDX-License-Identifier: GPL-2.0+
========================================================== ========================================================
Linux* Driver for the Pensando(R) Ethernet adapter family Linux Driver for the Pensando(R) Ethernet adapter family
========================================================== ========================================================
Pensando Linux Ethernet driver. Pensando Linux Ethernet driver.
Copyright(c) 2019 Pensando Systems, Inc Copyright(c) 2019 Pensando Systems, Inc

View File

@ -607,6 +607,7 @@ static int e1000_set_ringparam(struct net_device *netdev,
for (i = 0; i < adapter->num_rx_queues; i++) for (i = 0; i < adapter->num_rx_queues; i++)
rxdr[i].count = rxdr->count; rxdr[i].count = rxdr->count;
err = 0;
if (netif_running(adapter->netdev)) { if (netif_running(adapter->netdev)) {
/* Try to get new resources before deleting old */ /* Try to get new resources before deleting old */
err = e1000_setup_all_rx_resources(adapter); err = e1000_setup_all_rx_resources(adapter);
@ -627,14 +628,13 @@ static int e1000_set_ringparam(struct net_device *netdev,
adapter->rx_ring = rxdr; adapter->rx_ring = rxdr;
adapter->tx_ring = txdr; adapter->tx_ring = txdr;
err = e1000_up(adapter); err = e1000_up(adapter);
if (err)
goto err_setup;
} }
kfree(tx_old); kfree(tx_old);
kfree(rx_old); kfree(rx_old);
clear_bit(__E1000_RESETTING, &adapter->flags); clear_bit(__E1000_RESETTING, &adapter->flags);
return 0; return err;
err_setup_tx: err_setup_tx:
e1000_free_all_rx_resources(adapter); e1000_free_all_rx_resources(adapter);
err_setup_rx: err_setup_rx:
@ -646,7 +646,6 @@ err_alloc_rx:
err_alloc_tx: err_alloc_tx:
if (netif_running(adapter->netdev)) if (netif_running(adapter->netdev))
e1000_up(adapter); e1000_up(adapter);
err_setup:
clear_bit(__E1000_RESETTING, &adapter->flags); clear_bit(__E1000_RESETTING, &adapter->flags);
return err; return err;
} }

View File

@ -157,11 +157,6 @@ static int i40e_xsk_umem_disable(struct i40e_vsi *vsi, u16 qid)
err = i40e_queue_pair_enable(vsi, qid); err = i40e_queue_pair_enable(vsi, qid);
if (err) if (err)
return err; return err;
/* Kick start the NAPI context so that receiving will start */
err = i40e_xsk_wakeup(vsi->netdev, qid, XDP_WAKEUP_RX);
if (err)
return err;
} }
return 0; return 0;

View File

@ -466,7 +466,7 @@ static s32 igb_init_mac_params_82575(struct e1000_hw *hw)
? igb_setup_copper_link_82575 ? igb_setup_copper_link_82575
: igb_setup_serdes_link_82575; : igb_setup_serdes_link_82575;
if (mac->type == e1000_82580) { if (mac->type == e1000_82580 || mac->type == e1000_i350) {
switch (hw->device_id) { switch (hw->device_id) {
/* feature not supported on these id's */ /* feature not supported on these id's */
case E1000_DEV_ID_DH89XXCC_SGMII: case E1000_DEV_ID_DH89XXCC_SGMII:

View File

@ -753,7 +753,8 @@ u32 igb_rd32(struct e1000_hw *hw, u32 reg)
struct net_device *netdev = igb->netdev; struct net_device *netdev = igb->netdev;
hw->hw_addr = NULL; hw->hw_addr = NULL;
netdev_err(netdev, "PCIe link lost\n"); netdev_err(netdev, "PCIe link lost\n");
WARN(1, "igb: Failed to read reg 0x%x!\n", reg); WARN(pci_device_is_present(igb->pdev),
"igb: Failed to read reg 0x%x!\n", reg);
} }
return value; return value;
@ -2064,7 +2065,8 @@ static void igb_check_swap_media(struct igb_adapter *adapter)
if ((hw->phy.media_type == e1000_media_type_copper) && if ((hw->phy.media_type == e1000_media_type_copper) &&
(!(connsw & E1000_CONNSW_AUTOSENSE_EN))) { (!(connsw & E1000_CONNSW_AUTOSENSE_EN))) {
swap_now = true; swap_now = true;
} else if (!(connsw & E1000_CONNSW_SERDESD)) { } else if ((hw->phy.media_type != e1000_media_type_copper) &&
!(connsw & E1000_CONNSW_SERDESD)) {
/* copper signal takes time to appear */ /* copper signal takes time to appear */
if (adapter->copper_tries < 4) { if (adapter->copper_tries < 4) {
adapter->copper_tries++; adapter->copper_tries++;
@ -2370,7 +2372,7 @@ void igb_reset(struct igb_adapter *adapter)
adapter->ei.get_invariants(hw); adapter->ei.get_invariants(hw);
adapter->flags &= ~IGB_FLAG_MEDIA_RESET; adapter->flags &= ~IGB_FLAG_MEDIA_RESET;
} }
if ((mac->type == e1000_82575) && if ((mac->type == e1000_82575 || mac->type == e1000_i350) &&
(adapter->flags & IGB_FLAG_MAS_ENABLE)) { (adapter->flags & IGB_FLAG_MAS_ENABLE)) {
igb_enable_mas(adapter); igb_enable_mas(adapter);
} }

View File

@ -4047,7 +4047,8 @@ u32 igc_rd32(struct igc_hw *hw, u32 reg)
hw->hw_addr = NULL; hw->hw_addr = NULL;
netif_device_detach(netdev); netif_device_detach(netdev);
netdev_err(netdev, "PCIe link lost, device now detached\n"); netdev_err(netdev, "PCIe link lost, device now detached\n");
WARN(1, "igc: Failed to read reg 0x%x!\n", reg); WARN(pci_device_is_present(igc->pdev),
"igc: Failed to read reg 0x%x!\n", reg);
} }
return value; return value;

View File

@ -4310,7 +4310,6 @@ static void ixgbe_set_rx_buffer_len(struct ixgbe_adapter *adapter)
if (test_bit(__IXGBE_RX_FCOE, &rx_ring->state)) if (test_bit(__IXGBE_RX_FCOE, &rx_ring->state))
set_bit(__IXGBE_RX_3K_BUFFER, &rx_ring->state); set_bit(__IXGBE_RX_3K_BUFFER, &rx_ring->state);
clear_bit(__IXGBE_RX_BUILD_SKB_ENABLED, &rx_ring->state);
if (adapter->flags2 & IXGBE_FLAG2_RX_LEGACY) if (adapter->flags2 & IXGBE_FLAG2_RX_LEGACY)
continue; continue;