Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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


Jeff Kirsher says:

====================
Intel Wired LAN Driver Updates

This series contains updates to i40e, igb, ixgbe and ixgbevf.

Shannon provides a couple of i40e patches, first restricts the ethtool
diag test messages by using netif_info() macro to when the hardware
bit is enabled in the message level netdev message mask.  Second
provides a fix for when there is an out-of-range descriptor request.

Kamil provides a fix for i40e by updating the loopback enum types and
add information about the current loopback mode to data returned from
get_link_info().

Jesse provides a fix for i40e define name that was being mis-used.
I40E_ITR_NONE was being used as an ITRN register index by accident
because it was easily associated with the i40e Rx ITR and friends
defines, when it should be associated with the DYN_CTL register sets.

Jacob provides an update for ixgbevf Kconfig description since the VF
driver supports more than just the 82599 device.

Don and Alex provide a cleanup patch for ixgbe to make it where head,
tail, next to clean and next to use are all reset in a single function
for both Tx and Rx path.  Before, the code for this was spread out over
several areas which made it difficult to track what the values were for
each of the values.

Carolyn provides two igb patches to add a media switching feature for
i354 PHY's and new Media Auto Sense for 82580 devices only.

Aaron Sierra provides a fix for igb to resolve an issue with the 64-bit
PCI addresses being truncated because the return values of
pci_resource_start() and pci_resouce_end() were being cast to unsigned
long.

Guenter Roeck provides two igb patches, first simplifies the code by
attaching the hwmon sysfs attributes to hwmon device instead of the
PCI device.  Second fixes the temperature sensor attribute index by
setting it to 1 instead of 0 (per hwmon ABI).
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 4e34da4d e6e25bba
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -220,12 +220,12 @@ config IXGBE_DCB
	  If unsure, say N.

config IXGBEVF
	tristate "Intel(R) 82599 Virtual Function Ethernet support"
	tristate "Intel(R) 10GbE PCI Express Virtual Function Ethernet support"
	depends on PCI_MSI
	---help---
	  This driver supports Intel(R) 82599 virtual functions.  For more
	  information on how to identify your adapter, go to the Adapter &
	  Driver ID Guide at:
	  This driver supports Intel(R) PCI Express virtual functions for the
	  Intel(R) ixgbe driver.  For more information on how to identify your
	  adapter, go to the Adapter & Driver ID Guide at:

	  <http://support.intel.com/support/network/sb/CS-008441.htm>

+1 −0
Original line number Diff line number Diff line
@@ -562,6 +562,7 @@ i40e_status i40e_aq_get_link_info(struct i40e_hw *hw,
	hw_link_info->link_info = resp->link_info;
	hw_link_info->an_info = resp->an_info;
	hw_link_info->ext_info = resp->ext_info;
	hw_link_info->loopback = resp->loopback;

	if (resp->command_flags & cpu_to_le16(I40E_AQ_LSE_ENABLE))
		hw_link_info->lse_enable = true;
+4 −4
Original line number Diff line number Diff line
@@ -31,10 +31,10 @@
#include "i40e_type.h"

enum i40e_lb_mode {
	I40E_LB_MODE_NONE = 0,
	I40E_LB_MODE_PHY_LOCAL,
	I40E_LB_MODE_PHY_REMOTE,
	I40E_LB_MODE_MAC_LOCAL,
	I40E_LB_MODE_NONE       = 0x0,
	I40E_LB_MODE_PHY_LOCAL  = I40E_AQ_LB_PHY_LOCAL,
	I40E_LB_MODE_PHY_REMOTE = I40E_AQ_LB_PHY_REMOTE,
	I40E_LB_MODE_MAC_LOCAL  = I40E_AQ_LB_MAC_LOCAL,
};

struct i40e_diag_reg_test_info {
+24 −17
Original line number Diff line number Diff line
@@ -422,15 +422,19 @@ static int i40e_set_ringparam(struct net_device *netdev,
	if ((ring->rx_mini_pending) || (ring->rx_jumbo_pending))
		return -EINVAL;

	new_tx_count = clamp_t(u32, ring->tx_pending,
			       I40E_MIN_NUM_DESCRIPTORS,
			       I40E_MAX_NUM_DESCRIPTORS);
	new_tx_count = ALIGN(new_tx_count, I40E_REQ_DESCRIPTOR_MULTIPLE);
	if (ring->tx_pending > I40E_MAX_NUM_DESCRIPTORS ||
	    ring->tx_pending < I40E_MIN_NUM_DESCRIPTORS ||
	    ring->rx_pending > I40E_MAX_NUM_DESCRIPTORS ||
	    ring->rx_pending < I40E_MIN_NUM_DESCRIPTORS) {
		netdev_info(netdev,
			    "Descriptors requested (Tx: %d / Rx: %d) out of range [%d-%d]\n",
			    ring->tx_pending, ring->rx_pending,
			    I40E_MIN_NUM_DESCRIPTORS, I40E_MAX_NUM_DESCRIPTORS);
		return -EINVAL;
	}

	new_rx_count = clamp_t(u32, ring->rx_pending,
			       I40E_MIN_NUM_DESCRIPTORS,
			       I40E_MAX_NUM_DESCRIPTORS);
	new_rx_count = ALIGN(new_rx_count, I40E_REQ_DESCRIPTOR_MULTIPLE);
	new_tx_count = ALIGN(ring->tx_pending, I40E_REQ_DESCRIPTOR_MULTIPLE);
	new_rx_count = ALIGN(ring->rx_pending, I40E_REQ_DESCRIPTOR_MULTIPLE);

	/* if nothing to do return success */
	if ((new_tx_count == vsi->tx_rings[0]->count) &&
@@ -711,7 +715,7 @@ static int i40e_link_test(struct net_device *netdev, u64 *data)
	struct i40e_netdev_priv *np = netdev_priv(netdev);
	struct i40e_pf *pf = np->vsi->back;

	netdev_info(netdev, "link test\n");
	netif_info(pf, hw, netdev, "link test\n");
	if (i40e_get_link_status(&pf->hw))
		*data = 0;
	else
@@ -725,7 +729,7 @@ static int i40e_reg_test(struct net_device *netdev, u64 *data)
	struct i40e_netdev_priv *np = netdev_priv(netdev);
	struct i40e_pf *pf = np->vsi->back;

	netdev_info(netdev, "register test\n");
	netif_info(pf, hw, netdev, "register test\n");
	*data = i40e_diag_reg_test(&pf->hw);

	i40e_do_reset(pf, (1 << __I40E_PF_RESET_REQUESTED));
@@ -737,7 +741,7 @@ static int i40e_eeprom_test(struct net_device *netdev, u64 *data)
	struct i40e_netdev_priv *np = netdev_priv(netdev);
	struct i40e_pf *pf = np->vsi->back;

	netdev_info(netdev, "eeprom test\n");
	netif_info(pf, hw, netdev, "eeprom test\n");
	*data = i40e_diag_eeprom_test(&pf->hw);

	return *data;
@@ -749,7 +753,7 @@ static int i40e_intr_test(struct net_device *netdev, u64 *data)
	struct i40e_pf *pf = np->vsi->back;
	u16 swc_old = pf->sw_int_count;

	netdev_info(netdev, "interrupt test\n");
	netif_info(pf, hw, netdev, "interrupt test\n");
	wr32(&pf->hw, I40E_PFINT_DYN_CTL0,
	     (I40E_PFINT_DYN_CTL0_INTENA_MASK |
	      I40E_PFINT_DYN_CTL0_SWINT_TRIG_MASK));
@@ -761,7 +765,10 @@ static int i40e_intr_test(struct net_device *netdev, u64 *data)

static int i40e_loopback_test(struct net_device *netdev, u64 *data)
{
	netdev_info(netdev, "loopback test not implemented\n");
	struct i40e_netdev_priv *np = netdev_priv(netdev);
	struct i40e_pf *pf = np->vsi->back;

	netif_info(pf, hw, netdev, "loopback test not implemented\n");
	*data = 0;

	return *data;
@@ -776,8 +783,7 @@ static void i40e_diag_test(struct net_device *netdev,
	set_bit(__I40E_TESTING, &pf->state);
	if (eth_test->flags == ETH_TEST_FL_OFFLINE) {
		/* Offline tests */

		netdev_info(netdev, "offline testing starting\n");
		netif_info(pf, drv, netdev, "offline testing starting\n");

		/* Link test performed before hardware reset
		 * so autoneg doesn't interfere with test result
@@ -798,8 +804,9 @@ static void i40e_diag_test(struct net_device *netdev,
			eth_test->flags |= ETH_TEST_FL_FAILED;

	} else {
		netdev_info(netdev, "online test starting\n");
		/* Online tests */
		netif_info(pf, drv, netdev, "online testing starting\n");

		if (i40e_link_test(netdev, &data[I40E_ETH_TEST_LINK]))
			eth_test->flags |= ETH_TEST_FL_FAILED;

@@ -811,7 +818,7 @@ static void i40e_diag_test(struct net_device *netdev,
	}
	clear_bit(__I40E_TESTING, &pf->state);

	netdev_info(netdev, "testing finished\n");
	netif_info(pf, drv, netdev, "testing finished\n");
}

static void i40e_get_wol(struct net_device *netdev,
+1 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ static const char i40e_driver_string[] =

#define DRV_VERSION_MAJOR 0
#define DRV_VERSION_MINOR 3
#define DRV_VERSION_BUILD 12
#define DRV_VERSION_BUILD 13
#define DRV_VERSION __stringify(DRV_VERSION_MAJOR) "." \
	     __stringify(DRV_VERSION_MINOR) "." \
	     __stringify(DRV_VERSION_BUILD)    DRV_KERN
Loading