Commit 4d3163cf authored by David S. Miller's avatar David S. Miller
Browse files


Jeff Kirsher says:

====================
Intel Wired LAN Driver Updates 2018-10-31

This series contains a various collection of fixes.

Miroslav Lichvar from Red Hat or should I say IBM now?  Updates the PHC
timecounter interval for igb so that it gets updated at least once
every 550 seconds.

Ngai-Mint provides a fix for fm10k to prevent a soft lockup or system
crash by adding a new condition to determine if the SM mailbox is in the
correct state before proceeding.

Jake provides several fm10k fixes, first one marks complier aborts as
non-fatal since on some platforms trigger machine check errors when the
compile aborts.  Added missing device ids to the in-kernel driver.  Due
to the recent fixes, bumped the driver version.

I (Jeff Kirsher) fixed a XFRM_ALGO dependency for both ixgbe and
ixgbevf.  This fix was based on the original work from Arnd Bergmann,
which only fixed ixgbe.

Mitch provides a fix for i40e/avf to update the status codes, which
resolves an issue between a mis-match between i40e and the iavf driver,
which also supports the ice LAN driver.

Radoslaw fixes the ixgbe where the driver is logging a message about
spoofed packets detected when the VF is re-started with a different MAC
address.
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents df975da4 6702185c
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -200,6 +200,15 @@ config IXGBE_DCB

	  If unsure, say N.

config IXGBE_IPSEC
	bool "IPSec XFRM cryptography-offload acceleration"
	depends on IXGBE
	depends on XFRM_OFFLOAD
	default y
	select XFRM_ALGO
	---help---
	  Enable support for IPSec offload in ixgbe.ko

config IXGBEVF
	tristate "Intel(R) 10GbE PCI Express Virtual Function Ethernet support"
	depends on PCI_MSI
@@ -217,6 +226,15 @@ config IXGBEVF
	  will be called ixgbevf.  MSI-X interrupt support is required
	  for this driver to work correctly.

config IXGBEVF_IPSEC
	bool "IPSec XFRM cryptography-offload acceleration"
	depends on IXGBEVF
	depends on XFRM_OFFLOAD
	default y
	select XFRM_ALGO
	---help---
	  Enable support for IPSec offload in ixgbevf.ko

config I40E
	tristate "Intel(R) Ethernet Controller XL710 Family support"
	imply PTP_1588_CLOCK
+30 −21
Original line number Diff line number Diff line
@@ -244,7 +244,8 @@ process_mbx:
		}

		/* guarantee we have free space in the SM mailbox */
		if (!hw->mbx.ops.tx_ready(&hw->mbx, FM10K_VFMBX_MSG_MTU)) {
		if (hw->mbx.state == FM10K_STATE_OPEN &&
		    !hw->mbx.ops.tx_ready(&hw->mbx, FM10K_VFMBX_MSG_MTU)) {
			/* keep track of how many times this occurs */
			interface->hw_sm_mbx_full++;

@@ -302,6 +303,28 @@ void fm10k_iov_suspend(struct pci_dev *pdev)
	}
}

static void fm10k_mask_aer_comp_abort(struct pci_dev *pdev)
{
	u32 err_mask;
	int pos;

	pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ERR);
	if (!pos)
		return;

	/* Mask the completion abort bit in the ERR_UNCOR_MASK register,
	 * preventing the device from reporting these errors to the upstream
	 * PCIe root device. This avoids bringing down platforms which upgrade
	 * non-fatal completer aborts into machine check exceptions. Completer
	 * aborts can occur whenever a VF reads a queue it doesn't own.
	 */
	pci_read_config_dword(pdev, pos + PCI_ERR_UNCOR_MASK, &err_mask);
	err_mask |= PCI_ERR_UNC_COMP_ABORT;
	pci_write_config_dword(pdev, pos + PCI_ERR_UNCOR_MASK, err_mask);

	mmiowb();
}

int fm10k_iov_resume(struct pci_dev *pdev)
{
	struct fm10k_intfc *interface = pci_get_drvdata(pdev);
@@ -317,6 +340,12 @@ int fm10k_iov_resume(struct pci_dev *pdev)
	if (!iov_data)
		return -ENOMEM;

	/* Lower severity of completer abort error reporting as
	 * the VFs can trigger this any time they read a queue
	 * that they don't own.
	 */
	fm10k_mask_aer_comp_abort(pdev);

	/* allocate hardware resources for the VFs */
	hw->iov.ops.assign_resources(hw, num_vfs, num_vfs);

@@ -460,20 +489,6 @@ void fm10k_iov_disable(struct pci_dev *pdev)
	fm10k_iov_free_data(pdev);
}

static void fm10k_disable_aer_comp_abort(struct pci_dev *pdev)
{
	u32 err_sev;
	int pos;

	pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_ERR);
	if (!pos)
		return;

	pci_read_config_dword(pdev, pos + PCI_ERR_UNCOR_SEVER, &err_sev);
	err_sev &= ~PCI_ERR_UNC_COMP_ABORT;
	pci_write_config_dword(pdev, pos + PCI_ERR_UNCOR_SEVER, err_sev);
}

int fm10k_iov_configure(struct pci_dev *pdev, int num_vfs)
{
	int current_vfs = pci_num_vf(pdev);
@@ -495,12 +510,6 @@ int fm10k_iov_configure(struct pci_dev *pdev, int num_vfs)

	/* allocate VFs if not already allocated */
	if (num_vfs && num_vfs != current_vfs) {
		/* Disable completer abort error reporting as
		 * the VFs can trigger this any time they read a queue
		 * that they don't own.
		 */
		fm10k_disable_aer_comp_abort(pdev);

		err = pci_enable_sriov(pdev, num_vfs);
		if (err) {
			dev_err(&pdev->dev,
+1 −1
Original line number Diff line number Diff line
@@ -11,7 +11,7 @@

#include "fm10k.h"

#define DRV_VERSION	"0.23.4-k"
#define DRV_VERSION	"0.26.1-k"
#define DRV_SUMMARY	"Intel(R) Ethernet Switch Host Interface Driver"
const char fm10k_driver_version[] = DRV_VERSION;
char fm10k_driver_name[] = "fm10k";
+2 −0
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ static const struct fm10k_info *fm10k_info_tbl[] = {
 */
static const struct pci_device_id fm10k_pci_tbl[] = {
	{ PCI_VDEVICE(INTEL, FM10K_DEV_ID_PF), fm10k_device_pf },
	{ PCI_VDEVICE(INTEL, FM10K_DEV_ID_SDI_FM10420_QDA2), fm10k_device_pf },
	{ PCI_VDEVICE(INTEL, FM10K_DEV_ID_SDI_FM10420_DA2), fm10k_device_pf },
	{ PCI_VDEVICE(INTEL, FM10K_DEV_ID_VF), fm10k_device_vf },
	/* required last entry */
	{ 0, }
+2 −0
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@ struct fm10k_hw;

#define FM10K_DEV_ID_PF			0x15A4
#define FM10K_DEV_ID_VF			0x15A5
#define FM10K_DEV_ID_SDI_FM10420_QDA2	0x15D0
#define FM10K_DEV_ID_SDI_FM10420_DA2	0x15D5

#define FM10K_MAX_QUEUES		256
#define FM10K_MAX_QUEUES_PF		128
Loading