All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates
@ 2015-12-09 23:50 Joshua Hay
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 01/13] i40e: Fix Rx hash reported to the stack by our driver Joshua Hay
                   ` (12 more replies)
  0 siblings, 13 replies; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

Anjali fixes Rx hash reported to the stack by our driver,
adds fix for recursive RTNL lock during PROMISC change,
fixes RSS rx-flow-hash configuration through ethtool,
makes some changes in the nvm read code, and
cleans up the code with respect to restarting autoneg.

Catherine replaces X722 mac check in ethtool get_settings.

Jesse removes forever unused ID, makes tunnels generic, and
updates features with right offload.

Kiran adds mac_filter_element at the end of the list instead of HEAD.

Mitch allows channel bonding of VFs, and nulls out ring pointers on free.

Shannon defines function capabilities in only one place.

 drivers/net/ethernet/intel/i40e/i40e.h             |  4 +-
 drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h  |  1 +
 drivers/net/ethernet/intel/i40e/i40e_common.c      | 86 +++++++---------------
 drivers/net/ethernet/intel/i40e/i40e_devids.h      |  1 -
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c     | 16 ++--
 drivers/net/ethernet/intel/i40e/i40e_main.c        | 27 ++++---
 drivers/net/ethernet/intel/i40e/i40e_nvm.c         | 70 +++++++++++++++---
 drivers/net/ethernet/intel/i40e/i40e_txrx.c        | 61 ++++++++-------
 drivers/net/ethernet/intel/i40e/i40e_txrx.h        |  2 +-
 .../net/ethernet/intel/i40evf/i40e_adminq_cmd.h    |  1 +
 drivers/net/ethernet/intel/i40evf/i40e_common.c    |  1 -
 drivers/net/ethernet/intel/i40evf/i40e_devids.h    |  1 -
 drivers/net/ethernet/intel/i40evf/i40e_txrx.c      | 56 +++++++-------
 drivers/net/ethernet/intel/i40evf/i40e_txrx.h      |  2 +-
 drivers/net/ethernet/intel/i40evf/i40evf.h         |  1 +
 drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c | 40 ++--------
 drivers/net/ethernet/intel/i40evf/i40evf_main.c    | 11 ++-
 .../net/ethernet/intel/i40evf/i40evf_virtchnl.c    |  2 +
 18 files changed, 196 insertions(+), 187 deletions(-)

-- 
2.1.0


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 01/13] i40e: Fix Rx hash reported to the stack by our driver
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2015-12-16 18:31   ` Bowers, AndrewX
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 02/13] i40e: remove forever unused ID Joshua Hay
                   ` (11 subsequent siblings)
  12 siblings, 1 reply; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Anjali Singhai Jain <anjali.singhai@intel.com>

If the driver calls skb_set_hash even with a zero hash, that
indicates to the stack that the hash calculation is offloaded
in hardware. So the Stack doesn't do a SW hash which is required
for load balancing if the user decides to turn of rx-hashing
on our device.

This patch fixes the path so that we do not call skb_set_hash
if the feature is disabled.

Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Change-ID: Ic4debfa4ff91b5a72e447348a75768ed7a2d3e1b
---
Testing Hints:Test interrupt overload x710 Apart from the
interrupt overload, the user sees a problem where the stack
is not calculating the hash when rx-hasing is turned off which
is resulting in tpacket_v3 not balancing the load across
multiple threads.

 drivers/net/ethernet/intel/i40e/i40e_txrx.c   | 54 ++++++++++++++-------------
 drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 54 ++++++++++++++-------------
 2 files changed, 58 insertions(+), 50 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index e2ab7a6..28d2943 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -1422,31 +1422,12 @@ checksum_fail:
 }
 
 /**
- * i40e_rx_hash - returns the hash value from the Rx descriptor
- * @ring: descriptor ring
- * @rx_desc: specific descriptor
- **/
-static inline u32 i40e_rx_hash(struct i40e_ring *ring,
-			       union i40e_rx_desc *rx_desc)
-{
-	const __le64 rss_mask =
-		cpu_to_le64((u64)I40E_RX_DESC_FLTSTAT_RSS_HASH <<
-			    I40E_RX_DESC_STATUS_FLTSTAT_SHIFT);
-
-	if ((ring->netdev->features & NETIF_F_RXHASH) &&
-	    (rx_desc->wb.qword1.status_error_len & rss_mask) == rss_mask)
-		return le32_to_cpu(rx_desc->wb.qword0.hi_dword.rss);
-	else
-		return 0;
-}
-
-/**
- * i40e_ptype_to_hash - get a hash type
+ * i40e_ptype_to_htype - get a hash type
  * @ptype: the ptype value from the descriptor
  *
  * Returns a hash type to be used by skb_set_hash
  **/
-static inline enum pkt_hash_types i40e_ptype_to_hash(u8 ptype)
+static inline enum pkt_hash_types i40e_ptype_to_htype(u8 ptype)
 {
 	struct i40e_rx_ptype_decoded decoded = decode_rx_desc_ptype(ptype);
 
@@ -1464,6 +1445,30 @@ static inline enum pkt_hash_types i40e_ptype_to_hash(u8 ptype)
 }
 
 /**
+ * i40e_rx_hash - set the hash value in the skb
+ * @ring: descriptor ring
+ * @rx_desc: specific descriptor
+ **/
+static inline void i40e_rx_hash(struct i40e_ring *ring,
+				union i40e_rx_desc *rx_desc,
+				struct sk_buff *skb,
+				u8 rx_ptype)
+{
+	u32 hash;
+	const __le64 rss_mask  =
+		cpu_to_le64((u64)I40E_RX_DESC_FLTSTAT_RSS_HASH <<
+			    I40E_RX_DESC_STATUS_FLTSTAT_SHIFT);
+
+	if (ring->netdev->features & NETIF_F_RXHASH)
+		return;
+
+	if ((rx_desc->wb.qword1.status_error_len & rss_mask) == rss_mask) {
+		hash = le32_to_cpu(rx_desc->wb.qword0.hi_dword.rss);
+		skb_set_hash(skb, hash, i40e_ptype_to_htype(rx_ptype));
+	}
+}
+
+/**
  * i40e_clean_rx_irq_ps - Reclaim resources after receive; packet split
  * @rx_ring:  rx ring to clean
  * @budget:   how many cleans we're allowed
@@ -1612,8 +1617,8 @@ static int i40e_clean_rx_irq_ps(struct i40e_ring *rx_ring, int budget)
 			continue;
 		}
 
-		skb_set_hash(skb, i40e_rx_hash(rx_ring, rx_desc),
-			     i40e_ptype_to_hash(rx_ptype));
+		i40e_rx_hash(rx_ring, rx_desc, skb, rx_ptype);
+
 		if (unlikely(rx_status & I40E_RXD_QW1_STATUS_TSYNVALID_MASK)) {
 			i40e_ptp_rx_hwtstamp(vsi->back, skb, (rx_status &
 					   I40E_RXD_QW1_STATUS_TSYNINDX_MASK) >>
@@ -1741,8 +1746,7 @@ static int i40e_clean_rx_irq_1buf(struct i40e_ring *rx_ring, int budget)
 			continue;
 		}
 
-		skb_set_hash(skb, i40e_rx_hash(rx_ring, rx_desc),
-			     i40e_ptype_to_hash(rx_ptype));
+		i40e_rx_hash(rx_ring, rx_desc, skb, rx_ptype);
 		if (unlikely(rx_status & I40E_RXD_QW1_STATUS_TSYNVALID_MASK)) {
 			i40e_ptp_rx_hwtstamp(vsi->back, skb, (rx_status &
 					   I40E_RXD_QW1_STATUS_TSYNINDX_MASK) >>
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
index 4ca4065..7a00657 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
@@ -886,31 +886,12 @@ checksum_fail:
 }
 
 /**
- * i40e_rx_hash - returns the hash value from the Rx descriptor
- * @ring: descriptor ring
- * @rx_desc: specific descriptor
- **/
-static inline u32 i40e_rx_hash(struct i40e_ring *ring,
-			       union i40e_rx_desc *rx_desc)
-{
-	const __le64 rss_mask =
-		cpu_to_le64((u64)I40E_RX_DESC_FLTSTAT_RSS_HASH <<
-			    I40E_RX_DESC_STATUS_FLTSTAT_SHIFT);
-
-	if ((ring->netdev->features & NETIF_F_RXHASH) &&
-	    (rx_desc->wb.qword1.status_error_len & rss_mask) == rss_mask)
-		return le32_to_cpu(rx_desc->wb.qword0.hi_dword.rss);
-	else
-		return 0;
-}
-
-/**
- * i40e_ptype_to_hash - get a hash type
+ * i40e_ptype_to_htype - get a hash type
  * @ptype: the ptype value from the descriptor
  *
  * Returns a hash type to be used by skb_set_hash
  **/
-static inline enum pkt_hash_types i40e_ptype_to_hash(u8 ptype)
+static inline enum pkt_hash_types i40e_ptype_to_htype(u8 ptype)
 {
 	struct i40e_rx_ptype_decoded decoded = decode_rx_desc_ptype(ptype);
 
@@ -928,6 +909,30 @@ static inline enum pkt_hash_types i40e_ptype_to_hash(u8 ptype)
 }
 
 /**
+ * i40e_rx_hash - set the hash value in the skb
+ * @ring: descriptor ring
+ * @rx_desc: specific descriptor
+ **/
+static inline void i40e_rx_hash(struct i40e_ring *ring,
+				union i40e_rx_desc *rx_desc,
+				struct sk_buff *skb,
+				u8 rx_ptype)
+{
+	u32 hash;
+	const __le64 rss_mask  =
+		cpu_to_le64((u64)I40E_RX_DESC_FLTSTAT_RSS_HASH <<
+			    I40E_RX_DESC_STATUS_FLTSTAT_SHIFT);
+
+	if (ring->netdev->features & NETIF_F_RXHASH)
+		return;
+
+	if ((rx_desc->wb.qword1.status_error_len & rss_mask) == rss_mask) {
+		hash = le32_to_cpu(rx_desc->wb.qword0.hi_dword.rss);
+		skb_set_hash(skb, hash, i40e_ptype_to_htype(rx_ptype));
+	}
+}
+
+/**
  * i40e_clean_rx_irq_ps - Reclaim resources after receive; packet split
  * @rx_ring:  rx ring to clean
  * @budget:   how many cleans we're allowed
@@ -1068,8 +1073,8 @@ static int i40e_clean_rx_irq_ps(struct i40e_ring *rx_ring, int budget)
 			continue;
 		}
 
-		skb_set_hash(skb, i40e_rx_hash(rx_ring, rx_desc),
-			     i40e_ptype_to_hash(rx_ptype));
+		i40e_rx_hash(rx_ring, rx_desc, skb, rx_ptype);
+
 		/* probably a little skewed due to removing CRC */
 		total_rx_bytes += skb->len;
 		total_rx_packets++;
@@ -1185,8 +1190,7 @@ static int i40e_clean_rx_irq_1buf(struct i40e_ring *rx_ring, int budget)
 			continue;
 		}
 
-		skb_set_hash(skb, i40e_rx_hash(rx_ring, rx_desc),
-			     i40e_ptype_to_hash(rx_ptype));
+		i40e_rx_hash(rx_ring, rx_desc, skb, rx_ptype);
 		/* probably a little skewed due to removing CRC */
 		total_rx_bytes += skb->len;
 		total_rx_packets++;
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 02/13] i40e: remove forever unused ID
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 01/13] i40e: Fix Rx hash reported to the stack by our driver Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2015-12-16 18:35   ` Bowers, AndrewX
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 03/13] i40e: Add mac_filter_element at the end of the list instead of HEAD Joshua Hay
                   ` (10 subsequent siblings)
  12 siblings, 1 reply; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Jesse Brandeburg <jesse.brandeburg@intel.com>

Somehow an ID that has never been productized is in the
code.  There are no plans to use it, so just get
rid of it.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Change-ID: I59117d48ea9ee0360b0fe33833ac8092f8a24b4c
---
Testing Hints: make sure the code is all gone that refers
to it.

 drivers/net/ethernet/intel/i40e/i40e_common.c   | 1 -
 drivers/net/ethernet/intel/i40e/i40e_devids.h   | 1 -
 drivers/net/ethernet/intel/i40e/i40e_main.c     | 1 -
 drivers/net/ethernet/intel/i40evf/i40e_common.c | 1 -
 drivers/net/ethernet/intel/i40evf/i40e_devids.h | 1 -
 5 files changed, 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
index 2d74c6e..6a034dd 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
@@ -44,7 +44,6 @@ static i40e_status i40e_set_mac_type(struct i40e_hw *hw)
 		switch (hw->device_id) {
 		case I40E_DEV_ID_SFP_XL710:
 		case I40E_DEV_ID_QEMU:
-		case I40E_DEV_ID_KX_A:
 		case I40E_DEV_ID_KX_B:
 		case I40E_DEV_ID_KX_C:
 		case I40E_DEV_ID_QSFP_A:
diff --git a/drivers/net/ethernet/intel/i40e/i40e_devids.h b/drivers/net/ethernet/intel/i40e/i40e_devids.h
index c601ca4..448ef4c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_devids.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_devids.h
@@ -30,7 +30,6 @@
 /* Device IDs */
 #define I40E_DEV_ID_SFP_XL710		0x1572
 #define I40E_DEV_ID_QEMU		0x1574
-#define I40E_DEV_ID_KX_A		0x157F
 #define I40E_DEV_ID_KX_B		0x1580
 #define I40E_DEV_ID_KX_C		0x1581
 #define I40E_DEV_ID_QSFP_A		0x1583
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index f3e4b1a..4fd29e7 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -79,7 +79,6 @@ static int i40e_veb_get_bw_info(struct i40e_veb *veb);
 static const struct pci_device_id i40e_pci_tbl[] = {
 	{PCI_VDEVICE(INTEL, I40E_DEV_ID_SFP_XL710), 0},
 	{PCI_VDEVICE(INTEL, I40E_DEV_ID_QEMU), 0},
-	{PCI_VDEVICE(INTEL, I40E_DEV_ID_KX_A), 0},
 	{PCI_VDEVICE(INTEL, I40E_DEV_ID_KX_B), 0},
 	{PCI_VDEVICE(INTEL, I40E_DEV_ID_KX_C), 0},
 	{PCI_VDEVICE(INTEL, I40E_DEV_ID_QSFP_A), 0},
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_common.c b/drivers/net/ethernet/intel/i40evf/i40e_common.c
index 72b1942..938783e 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40evf/i40e_common.c
@@ -44,7 +44,6 @@ i40e_status i40e_set_mac_type(struct i40e_hw *hw)
 		switch (hw->device_id) {
 		case I40E_DEV_ID_SFP_XL710:
 		case I40E_DEV_ID_QEMU:
-		case I40E_DEV_ID_KX_A:
 		case I40E_DEV_ID_KX_B:
 		case I40E_DEV_ID_KX_C:
 		case I40E_DEV_ID_QSFP_A:
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_devids.h b/drivers/net/ethernet/intel/i40evf/i40e_devids.h
index e6a39c9..ca8b58c 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_devids.h
+++ b/drivers/net/ethernet/intel/i40evf/i40e_devids.h
@@ -30,7 +30,6 @@
 /* Device IDs */
 #define I40E_DEV_ID_SFP_XL710		0x1572
 #define I40E_DEV_ID_QEMU		0x1574
-#define I40E_DEV_ID_KX_A		0x157F
 #define I40E_DEV_ID_KX_B		0x1580
 #define I40E_DEV_ID_KX_C		0x1581
 #define I40E_DEV_ID_QSFP_A		0x1583
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 03/13] i40e: Add mac_filter_element at the end of the list instead of HEAD
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 01/13] i40e: Fix Rx hash reported to the stack by our driver Joshua Hay
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 02/13] i40e: remove forever unused ID Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2015-12-16 18:37   ` Bowers, AndrewX
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 04/13] i40e/i40evf: Fix RSS rx-flow-hash configuration through ethtool Joshua Hay
                   ` (9 subsequent siblings)
  12 siblings, 1 reply; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Kiran Patil <kiran.patil@intel.com>

Add MAC filter element to the end of the list in the given order,
just to be tidy, and just in case there are ever any ordering issues in
the future.

Signed-off-by: Kiran Patil <kiran.patil@intel.com>
Change-ID: Idc15276147593ea9393ac72c861f9c7905a791b4
---
Testing Hints: There is no straight targeted test for this issue.

 drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 4fd29e7..44bbfd8 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -1365,7 +1365,7 @@ struct i40e_mac_filter *i40e_add_filter(struct i40e_vsi *vsi,
 		f->changed = true;
 
 		INIT_LIST_HEAD(&f->list);
-		list_add(&f->list, &vsi->mac_filter_list);
+		list_add_tail(&f->list, &vsi->mac_filter_list);
 	}
 
 	/* increment counter and add a new flag if needed */
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 04/13] i40e/i40evf: Fix RSS rx-flow-hash configuration through ethtool
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
                   ` (2 preceding siblings ...)
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 03/13] i40e: Add mac_filter_element at the end of the list instead of HEAD Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2016-01-13 19:25   ` Bowers, AndrewX
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 05/13] i40e: Replace X722 mac check in ethtool get_settings Joshua Hay
                   ` (8 subsequent siblings)
  12 siblings, 1 reply; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Anjali Singhai Jain <anjali.singhai@intel.com>

This patch fixes the Hash PCTYPE enable for X722 since it supports
a broader selection of PCTYPES for TCP and UDP.

This patch also fixes a bug in XL710, X710, X722 support for RSS,
as of now we cannot reduce the (4)tuple for RSS for TCP/IPv4/IPV6 or
UDP/IPv4/IPv6 packets since this requires a product feature change
that comes in a later release.

A VF should never be allowed to change the tuples for RSS for any
PCTYPE since that's a global setting for the device in case of i40e
devices.

Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Change-ID: I0ee7203c9b24813260f58f3220798bc9d9ac4a12
---
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c     | 14 +++-----
 drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c | 40 +++++-----------------
 2 files changed, 12 insertions(+), 42 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index 29d5833..c8b9dca 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -2166,8 +2166,7 @@ static int i40e_set_rss_hash_opt(struct i40e_pf *pf, struct ethtool_rxnfc *nfc)
 	case TCP_V4_FLOW:
 		switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
 		case 0:
-			hena &= ~BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP);
-			break;
+			return -EINVAL;
 		case (RXH_L4_B_0_1 | RXH_L4_B_2_3):
 			hena |= BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP);
 			break;
@@ -2178,8 +2177,7 @@ static int i40e_set_rss_hash_opt(struct i40e_pf *pf, struct ethtool_rxnfc *nfc)
 	case TCP_V6_FLOW:
 		switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
 		case 0:
-			hena &= ~BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_TCP);
-			break;
+			return -EINVAL;
 		case (RXH_L4_B_0_1 | RXH_L4_B_2_3):
 			hena |= BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_TCP);
 			break;
@@ -2190,9 +2188,7 @@ static int i40e_set_rss_hash_opt(struct i40e_pf *pf, struct ethtool_rxnfc *nfc)
 	case UDP_V4_FLOW:
 		switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
 		case 0:
-			hena &= ~(BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_UDP) |
-				  BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV4));
-			break;
+			return -EINVAL;
 		case (RXH_L4_B_0_1 | RXH_L4_B_2_3):
 			hena |= (BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_UDP) |
 				 BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV4));
@@ -2204,9 +2200,7 @@ static int i40e_set_rss_hash_opt(struct i40e_pf *pf, struct ethtool_rxnfc *nfc)
 	case UDP_V6_FLOW:
 		switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
 		case 0:
-			hena &= ~(BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_UDP) |
-				  BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV6));
-			break;
+			return -EINVAL;
 		case (RXH_L4_B_0_1 | RXH_L4_B_2_3):
 			hena |= (BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_UDP) |
 				 BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV6));
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c b/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c
index a4c9feb..8906785 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c
@@ -477,54 +477,30 @@ static int i40evf_set_rss_hash_opt(struct i40evf_adapter *adapter,
 
 	switch (nfc->flow_type) {
 	case TCP_V4_FLOW:
-		switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
-		case 0:
-			hena &= ~BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP);
-			break;
-		case (RXH_L4_B_0_1 | RXH_L4_B_2_3):
+		if (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3))
 			hena |= BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_TCP);
-			break;
-		default:
+		else
 			return -EINVAL;
-		}
 		break;
 	case TCP_V6_FLOW:
-		switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
-		case 0:
-			hena &= ~BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_TCP);
-			break;
-		case (RXH_L4_B_0_1 | RXH_L4_B_2_3):
+		if (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3))
 			hena |= BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_TCP);
-			break;
-		default:
+		else
 			return -EINVAL;
-		}
 		break;
 	case UDP_V4_FLOW:
-		switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
-		case 0:
-			hena &= ~(BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_UDP) |
-				  BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV4));
-			break;
-		case (RXH_L4_B_0_1 | RXH_L4_B_2_3):
+		if (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
 			hena |= (BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV4_UDP) |
 				 BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV4));
-			break;
-		default:
+		} else {
 			return -EINVAL;
 		}
 		break;
 	case UDP_V6_FLOW:
-		switch (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
-		case 0:
-			hena &= ~(BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_UDP) |
-				  BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV6));
-			break;
-		case (RXH_L4_B_0_1 | RXH_L4_B_2_3):
+		if (nfc->data & (RXH_L4_B_0_1 | RXH_L4_B_2_3)) {
 			hena |= (BIT_ULL(I40E_FILTER_PCTYPE_NONF_IPV6_UDP) |
 				 BIT_ULL(I40E_FILTER_PCTYPE_FRAG_IPV6));
-			break;
-		default:
+		} else {
 			return -EINVAL;
 		}
 		break;
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 05/13] i40e: Replace X722 mac check in ethtool get_settings
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
                   ` (3 preceding siblings ...)
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 04/13] i40e/i40evf: Fix RSS rx-flow-hash configuration through ethtool Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2016-01-13 18:58   ` Bowers, AndrewX
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 06/13] i40e/i40evf: tunnels can be generic Joshua Hay
                   ` (7 subsequent siblings)
  12 siblings, 1 reply; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Catherine Sullivan <catherine.sullivan@intel.com>

100M SGMII is only supported on X722.  Replace the mac check with
a feature flag check that is only set for the X722 device.

Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Change-ID: I53452d9af6af8cd9dca8500215fbc6ce93418f52
---
Testing Hints: Check that 100M SGMII is not listed as supported on X710
devices and is listed as supported on X722 devices.

 drivers/net/ethernet/intel/i40e/i40e.h         | 3 ++-
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 3d0269b..4747219 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -334,7 +334,8 @@ struct i40e_pf {
 #define I40E_FLAG_MULTIPLE_TCP_UDP_RSS_PCTYPE	BIT_ULL(38)
 #define I40E_FLAG_LINK_POLLING_ENABLED		BIT_ULL(39)
 #define I40E_FLAG_VEB_MODE_ENABLED		BIT_ULL(40)
-#define I40E_FLAG_NO_PCI_LINK_CHECK		BIT_ULL(42)
+#define I40E_FLAG_NO_PCI_LINK_CHECK		BIT_ULL(41)
+#define I40E_FLAG_100M_SGMII_CAPABLE		BIT_ULL(42)
 
 	/* tracks features that get auto disabled by errors */
 	u64 auto_disable_flags;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index c8b9dca..252a9dd 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -340,7 +340,7 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
 				  SUPPORTED_1000baseT_Full;
 		if (hw_link_info->requested_speeds & I40E_LINK_SPEED_1GB)
 			ecmd->advertising |= ADVERTISED_1000baseT_Full;
-		if (pf->hw.mac.type == I40E_MAC_X722) {
+		if (pf->flags & I40E_FLAG_100M_SGMII_CAPABLE) {
 			ecmd->supported |= SUPPORTED_100baseT_Full;
 			if (hw_link_info->requested_speeds &
 			    I40E_LINK_SPEED_100MB)
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 06/13] i40e/i40evf: tunnels can be generic
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
                   ` (4 preceding siblings ...)
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 05/13] i40e: Replace X722 mac check in ethtool get_settings Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2015-12-17 16:43   ` Bowers, AndrewX
  2016-01-20  3:54   ` [Intel-wired-lan] [next, S23, " Alexander Duyck
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 07/13] i40evf: allow channel bonding of VFs Joshua Hay
                   ` (6 subsequent siblings)
  12 siblings, 2 replies; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Jesse Brandeburg <jesse.brandeburg@intel.com>

Since the i40e driver now supports VxLAN, GRE, and soon
to be Geneve tunnels, the driver can just note that an skb
contains a tunneled packet generically, instead of calling
out VXLAN specifically.  The tunnel set up we do for hardware
is almost always the same for all tunnel types.

This specifically enables ATR/Flow Director on GRE packets
which increases performance/scaling.  Without this patch
GRE RX packets end up on a random RSS assigned queue.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Change-ID: Ie8e205603654910d2f718592cbef8132ae0719e4
---
 drivers/net/ethernet/intel/i40e/i40e_txrx.c   | 7 ++++---
 drivers/net/ethernet/intel/i40e/i40e_txrx.h   | 2 +-
 drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 2 +-
 drivers/net/ethernet/intel/i40evf/i40e_txrx.h | 2 +-
 4 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 28d2943..ba79f67 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -2005,7 +2005,7 @@ static void i40e_atr(struct i40e_ring *tx_ring, struct sk_buff *skb,
 	if (!(tx_flags & (I40E_TX_FLAGS_IPV4 | I40E_TX_FLAGS_IPV6)))
 		return;
 
-	if (!(tx_flags & I40E_TX_FLAGS_VXLAN_TUNNEL)) {
+	if ((tx_flags & I40E_TX_FLAGS_TUNNEL)) {
 		/* snag network header to get L4 type and address */
 		hdr.network = skb_network_header(skb);
 
@@ -2090,7 +2090,7 @@ static void i40e_atr(struct i40e_ring *tx_ring, struct sk_buff *skb,
 		     I40E_TXD_FLTR_QW1_FD_STATUS_SHIFT;
 
 	dtype_cmd |= I40E_TXD_FLTR_QW1_CNT_ENA_MASK;
-	if (!(tx_flags & I40E_TX_FLAGS_VXLAN_TUNNEL))
+	if (!(tx_flags & I40E_TX_FLAGS_TUNNEL))
 		dtype_cmd |=
 			((u32)I40E_FD_ATR_STAT_IDX(pf->hw.pf_id) <<
 			I40E_TXD_FLTR_QW1_CNTINDEX_SHIFT) &
@@ -2323,10 +2323,11 @@ static void i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,
 			oudph = udp_hdr(skb);
 			oiph = ip_hdr(skb);
 			l4_tunnel = I40E_TXD_CTX_UDP_TUNNELING;
-			*tx_flags |= I40E_TX_FLAGS_VXLAN_TUNNEL;
+			*tx_flags |= I40E_TX_FLAGS_TUNNEL;
 			break;
 		case IPPROTO_GRE:
 			l4_tunnel = I40E_TXD_CTX_GRE_TUNNELING;
+			*tx_flags |= I40E_TX_FLAGS_TUNNEL;
 			break;
 		default:
 			return;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.h b/drivers/net/ethernet/intel/i40e/i40e_txrx.h
index dccc1eb..1d167b6 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.h
@@ -163,7 +163,7 @@ enum i40e_dyn_idx_t {
 #define I40E_TX_FLAGS_FSO		BIT(7)
 #define I40E_TX_FLAGS_TSYN		BIT(8)
 #define I40E_TX_FLAGS_FD_SB		BIT(9)
-#define I40E_TX_FLAGS_VXLAN_TUNNEL	BIT(10)
+#define I40E_TX_FLAGS_TUNNEL		BIT(10)
 #define I40E_TX_FLAGS_VLAN_MASK		0xffff0000
 #define I40E_TX_FLAGS_VLAN_PRIO_MASK	0xe0000000
 #define I40E_TX_FLAGS_VLAN_PRIO_SHIFT	29
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
index 7a00657..ed4934a 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
@@ -1521,7 +1521,7 @@ static void i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,
 			oudph = udp_hdr(skb);
 			oiph = ip_hdr(skb);
 			l4_tunnel = I40E_TXD_CTX_UDP_TUNNELING;
-			*tx_flags |= I40E_TX_FLAGS_VXLAN_TUNNEL;
+			*tx_flags |= I40E_TX_FLAGS_TUNNEL;
 			break;
 		default:
 			return;
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.h b/drivers/net/ethernet/intel/i40evf/i40e_txrx.h
index e29bb3e..d7950b1 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.h
+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.h
@@ -162,7 +162,7 @@ enum i40e_dyn_idx_t {
 #define I40E_TX_FLAGS_FCCRC		BIT(6)
 #define I40E_TX_FLAGS_FSO		BIT(7)
 #define I40E_TX_FLAGS_FD_SB		BIT(9)
-#define I40E_TX_FLAGS_VXLAN_TUNNEL	BIT(10)
+#define I40E_TX_FLAGS_TUNNEL		BIT(10)
 #define I40E_TX_FLAGS_VLAN_MASK		0xffff0000
 #define I40E_TX_FLAGS_VLAN_PRIO_MASK	0xe0000000
 #define I40E_TX_FLAGS_VLAN_PRIO_SHIFT	29
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 07/13] i40evf: allow channel bonding of VFs
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
                   ` (5 preceding siblings ...)
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 06/13] i40e/i40evf: tunnels can be generic Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2015-12-17 16:49   ` Bowers, AndrewX
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 08/13] i40e: define function capabilities in only one place Joshua Hay
                   ` (5 subsequent siblings)
  12 siblings, 1 reply; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Mitch Williams <mitch.a.williams@intel.com>

In some modes, bonding would not enslave VF interfaces. This is due to
bonding calling change_mtu and the immediately calling open. Because of
the asynchronous nature of the admin queue mechanism, the VF returns
-EBUSY to the open call, because it knows the previous operation hasn't
finished yet. This causes bonding to fail with a less-than-useful error
message.

To fix this, remove the check for pending operations at the beginning of
open. But this introduces a new bug where the driver will panic on a
quick close/open cycle. To fix that, we add a new driver state,
__I40EVF_DOWN_PENDING, that the driver enters when down is called. The
driver finally transitions to a fully DOWN state when it receives
confirmation from the PF driver that all the queues are disabled. This
allows open to complete even if there is a pending mtu change, and
bonding is finally happy.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Change-ID: I06f4c7e435d5bacbfceaa7c3f209e0ff04be21cc
---
 drivers/net/ethernet/intel/i40evf/i40evf.h          | 1 +
 drivers/net/ethernet/intel/i40evf/i40evf_main.c     | 9 +++++----
 drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c | 2 ++
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf.h b/drivers/net/ethernet/intel/i40evf/i40evf.h
index be1b72b..9e15f68 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf.h
+++ b/drivers/net/ethernet/intel/i40evf/i40evf.h
@@ -173,6 +173,7 @@ enum i40evf_state_t {
 	__I40EVF_RESETTING,		/* in reset */
 	/* Below here, watchdog is running */
 	__I40EVF_DOWN,			/* ready, can be opened */
+	__I40EVF_DOWN_PENDING,		/* descending, waiting for watchdog */
 	__I40EVF_TESTING,		/* in ethtool self-test */
 	__I40EVF_RUNNING,		/* opened, working */
 };
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index 455394c..d859045 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -1032,7 +1032,7 @@ void i40evf_down(struct i40evf_adapter *adapter)
 	struct net_device *netdev = adapter->netdev;
 	struct i40evf_mac_filter *f;
 
-	if (adapter->state == __I40EVF_DOWN)
+	if (adapter->state <= __I40EVF_DOWN_PENDING)
 		return;
 
 	while (test_and_set_bit(__I40EVF_IN_CRITICAL_TASK,
@@ -2142,7 +2142,8 @@ static int i40evf_open(struct net_device *netdev)
 		dev_err(&adapter->pdev->dev, "Unable to open device due to PF driver failure.\n");
 		return -EIO;
 	}
-	if (adapter->state != __I40EVF_DOWN || adapter->aq_required)
+
+	if (adapter->state != __I40EVF_DOWN)
 		return -EBUSY;
 
 	/* allocate transmit descriptors */
@@ -2197,14 +2198,14 @@ static int i40evf_close(struct net_device *netdev)
 {
 	struct i40evf_adapter *adapter = netdev_priv(netdev);
 
-	if (adapter->state <= __I40EVF_DOWN)
+	if (adapter->state <= __I40EVF_DOWN_PENDING)
 		return 0;
 
 
 	set_bit(__I40E_DOWN, &adapter->vsi.state);
 
 	i40evf_down(adapter);
-	adapter->state = __I40EVF_DOWN;
+	adapter->state = __I40EVF_DOWN_PENDING;
 	i40evf_free_traffic_irqs(adapter);
 
 	return 0;
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
index c1c5262..d3739cc 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
@@ -804,6 +804,8 @@ void i40evf_virtchnl_completion(struct i40evf_adapter *adapter,
 	case I40E_VIRTCHNL_OP_DISABLE_QUEUES:
 		i40evf_free_all_tx_resources(adapter);
 		i40evf_free_all_rx_resources(adapter);
+		if (adapter->state == __I40EVF_DOWN_PENDING)
+			adapter->state = __I40EVF_DOWN;
 		break;
 	case I40E_VIRTCHNL_OP_VERSION:
 	case I40E_VIRTCHNL_OP_CONFIG_IRQ_MAP:
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 08/13] i40e: define function capabilities in only one place
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
                   ` (6 preceding siblings ...)
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 07/13] i40evf: allow channel bonding of VFs Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2015-12-10 18:47   ` Jesse Brandeburg
  2015-12-17 16:53   ` Bowers, AndrewX
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 09/13] i40e: Make some changes in the nvm read code Joshua Hay
                   ` (4 subsequent siblings)
  12 siblings, 2 replies; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Shannon Nelson <shannon.nelson@intel.com>

The device capabilities were defined in two places, and neither had all
the definitions.  It really belongs with the AQ API definition, so this
patch removes the other set of definitions and fills out the missing item.

Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Change-ID: I273ba7d79a476cd11d2e0ca5825fec1716740de2
---
Testing Hints: Apply and compile cleanly

 drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h  |  1 +
 drivers/net/ethernet/intel/i40e/i40e_common.c      | 85 +++++++---------------
 .../net/ethernet/intel/i40evf/i40e_adminq_cmd.h    |  1 +
 3 files changed, 30 insertions(+), 57 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h b/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
index b22012a..256ce65 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
@@ -422,6 +422,7 @@ struct i40e_aqc_list_capabilities_element_resp {
 #define I40E_AQ_CAP_ID_LED		0x0061
 #define I40E_AQ_CAP_ID_SDP		0x0062
 #define I40E_AQ_CAP_ID_MDIO		0x0063
+#define I40E_AQ_CAP_ID_WSR_PROT		0x0064
 #define I40E_AQ_CAP_ID_FLEX10		0x00F1
 #define I40E_AQ_CAP_ID_CEM		0x00F2
 
diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
index 6a034dd..4bdb08b 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
@@ -2765,35 +2765,6 @@ i40e_aq_erase_nvm_exit:
 	return status;
 }
 
-#define I40E_DEV_FUNC_CAP_SWITCH_MODE	0x01
-#define I40E_DEV_FUNC_CAP_MGMT_MODE	0x02
-#define I40E_DEV_FUNC_CAP_NPAR		0x03
-#define I40E_DEV_FUNC_CAP_OS2BMC	0x04
-#define I40E_DEV_FUNC_CAP_VALID_FUNC	0x05
-#define I40E_DEV_FUNC_CAP_SRIOV_1_1	0x12
-#define I40E_DEV_FUNC_CAP_VF		0x13
-#define I40E_DEV_FUNC_CAP_VMDQ		0x14
-#define I40E_DEV_FUNC_CAP_802_1_QBG	0x15
-#define I40E_DEV_FUNC_CAP_802_1_QBH	0x16
-#define I40E_DEV_FUNC_CAP_VSI		0x17
-#define I40E_DEV_FUNC_CAP_DCB		0x18
-#define I40E_DEV_FUNC_CAP_FCOE		0x21
-#define I40E_DEV_FUNC_CAP_ISCSI		0x22
-#define I40E_DEV_FUNC_CAP_RSS		0x40
-#define I40E_DEV_FUNC_CAP_RX_QUEUES	0x41
-#define I40E_DEV_FUNC_CAP_TX_QUEUES	0x42
-#define I40E_DEV_FUNC_CAP_MSIX		0x43
-#define I40E_DEV_FUNC_CAP_MSIX_VF	0x44
-#define I40E_DEV_FUNC_CAP_FLOW_DIRECTOR	0x45
-#define I40E_DEV_FUNC_CAP_IEEE_1588	0x46
-#define I40E_DEV_FUNC_CAP_FLEX10	0xF1
-#define I40E_DEV_FUNC_CAP_CEM		0xF2
-#define I40E_DEV_FUNC_CAP_IWARP		0x51
-#define I40E_DEV_FUNC_CAP_LED		0x61
-#define I40E_DEV_FUNC_CAP_SDP		0x62
-#define I40E_DEV_FUNC_CAP_MDIO		0x63
-#define I40E_DEV_FUNC_CAP_WR_CSR_PROT	0x64
-
 /**
  * i40e_parse_discover_capabilities
  * @hw: pointer to the hw struct
@@ -2832,79 +2803,79 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
 		major_rev = cap->major_rev;
 
 		switch (id) {
-		case I40E_DEV_FUNC_CAP_SWITCH_MODE:
+		case I40E_AQ_CAP_ID_SWITCH_MODE:
 			p->switch_mode = number;
 			break;
-		case I40E_DEV_FUNC_CAP_MGMT_MODE:
+		case I40E_AQ_CAP_ID_MNG_MODE:
 			p->management_mode = number;
 			break;
-		case I40E_DEV_FUNC_CAP_NPAR:
+		case I40E_AQ_CAP_ID_NPAR_ACTIVE:
 			p->npar_enable = number;
 			break;
-		case I40E_DEV_FUNC_CAP_OS2BMC:
+		case I40E_AQ_CAP_ID_OS2BMC_CAP:
 			p->os2bmc = number;
 			break;
-		case I40E_DEV_FUNC_CAP_VALID_FUNC:
+		case I40E_AQ_CAP_ID_FUNCTIONS_VALID:
 			p->valid_functions = number;
 			break;
-		case I40E_DEV_FUNC_CAP_SRIOV_1_1:
+		case I40E_AQ_CAP_ID_SRIOV:
 			if (number == 1)
 				p->sr_iov_1_1 = true;
 			break;
-		case I40E_DEV_FUNC_CAP_VF:
+		case I40E_AQ_CAP_ID_VF:
 			p->num_vfs = number;
 			p->vf_base_id = logical_id;
 			break;
-		case I40E_DEV_FUNC_CAP_VMDQ:
+		case I40E_AQ_CAP_ID_VMDQ:
 			if (number == 1)
 				p->vmdq = true;
 			break;
-		case I40E_DEV_FUNC_CAP_802_1_QBG:
+		case I40E_AQ_CAP_ID_8021QBG:
 			if (number == 1)
 				p->evb_802_1_qbg = true;
 			break;
-		case I40E_DEV_FUNC_CAP_802_1_QBH:
+		case I40E_AQ_CAP_ID_8021QBR:
 			if (number == 1)
 				p->evb_802_1_qbh = true;
 			break;
-		case I40E_DEV_FUNC_CAP_VSI:
+		case I40E_AQ_CAP_ID_VSI:
 			p->num_vsis = number;
 			break;
-		case I40E_DEV_FUNC_CAP_DCB:
+		case I40E_AQ_CAP_ID_DCB:
 			if (number == 1) {
 				p->dcb = true;
 				p->enabled_tcmap = logical_id;
 				p->maxtc = phys_id;
 			}
 			break;
-		case I40E_DEV_FUNC_CAP_FCOE:
+		case I40E_AQ_CAP_ID_FCOE:
 			if (number == 1)
 				p->fcoe = true;
 			break;
-		case I40E_DEV_FUNC_CAP_ISCSI:
+		case I40E_AQ_CAP_ID_ISCSI:
 			if (number == 1)
 				p->iscsi = true;
 			break;
-		case I40E_DEV_FUNC_CAP_RSS:
+		case I40E_AQ_CAP_ID_RSS:
 			p->rss = true;
 			p->rss_table_size = number;
 			p->rss_table_entry_width = logical_id;
 			break;
-		case I40E_DEV_FUNC_CAP_RX_QUEUES:
+		case I40E_AQ_CAP_ID_RXQ:
 			p->num_rx_qp = number;
 			p->base_queue = phys_id;
 			break;
-		case I40E_DEV_FUNC_CAP_TX_QUEUES:
+		case I40E_AQ_CAP_ID_TXQ:
 			p->num_tx_qp = number;
 			p->base_queue = phys_id;
 			break;
-		case I40E_DEV_FUNC_CAP_MSIX:
+		case I40E_AQ_CAP_ID_MSIX:
 			p->num_msix_vectors = number;
 			break;
-		case I40E_DEV_FUNC_CAP_MSIX_VF:
+		case I40E_AQ_CAP_ID_VF_MSIX:
 			p->num_msix_vectors_vf = number;
 			break;
-		case I40E_DEV_FUNC_CAP_FLEX10:
+		case I40E_AQ_CAP_ID_FLEX10:
 			if (major_rev == 1) {
 				if (number == 1) {
 					p->flex10_enable = true;
@@ -2920,38 +2891,38 @@ static void i40e_parse_discover_capabilities(struct i40e_hw *hw, void *buff,
 			p->flex10_mode = logical_id;
 			p->flex10_status = phys_id;
 			break;
-		case I40E_DEV_FUNC_CAP_CEM:
+		case I40E_AQ_CAP_ID_CEM:
 			if (number == 1)
 				p->mgmt_cem = true;
 			break;
-		case I40E_DEV_FUNC_CAP_IWARP:
+		case I40E_AQ_CAP_ID_IWARP:
 			if (number == 1)
 				p->iwarp = true;
 			break;
-		case I40E_DEV_FUNC_CAP_LED:
+		case I40E_AQ_CAP_ID_LED:
 			if (phys_id < I40E_HW_CAP_MAX_GPIO)
 				p->led[phys_id] = true;
 			break;
-		case I40E_DEV_FUNC_CAP_SDP:
+		case I40E_AQ_CAP_ID_SDP:
 			if (phys_id < I40E_HW_CAP_MAX_GPIO)
 				p->sdp[phys_id] = true;
 			break;
-		case I40E_DEV_FUNC_CAP_MDIO:
+		case I40E_AQ_CAP_ID_MDIO:
 			if (number == 1) {
 				p->mdio_port_num = phys_id;
 				p->mdio_port_mode = logical_id;
 			}
 			break;
-		case I40E_DEV_FUNC_CAP_IEEE_1588:
+		case I40E_AQ_CAP_ID_1588:
 			if (number == 1)
 				p->ieee_1588 = true;
 			break;
-		case I40E_DEV_FUNC_CAP_FLOW_DIRECTOR:
+		case I40E_AQ_CAP_ID_FLOW_DIRECTOR:
 			p->fd = true;
 			p->fd_filters_guaranteed = number;
 			p->fd_filters_best_effort = logical_id;
 			break;
-		case I40E_DEV_FUNC_CAP_WR_CSR_PROT:
+		case I40E_AQ_CAP_ID_WSR_PROT:
 			p->wr_csr_prot = (u64)number;
 			p->wr_csr_prot |= (u64)logical_id << 32;
 			break;
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_adminq_cmd.h b/drivers/net/ethernet/intel/i40evf/i40e_adminq_cmd.h
index f5b2b36..0d3bc3b 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_adminq_cmd.h
+++ b/drivers/net/ethernet/intel/i40evf/i40e_adminq_cmd.h
@@ -419,6 +419,7 @@ struct i40e_aqc_list_capabilities_element_resp {
 #define I40E_AQ_CAP_ID_LED		0x0061
 #define I40E_AQ_CAP_ID_SDP		0x0062
 #define I40E_AQ_CAP_ID_MDIO		0x0063
+#define I40E_AQ_CAP_ID_WSR_PROT		0x0064
 #define I40E_AQ_CAP_ID_FLEX10		0x00F1
 #define I40E_AQ_CAP_ID_CEM		0x00F2
 
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 09/13] i40e: Make some changes in the nvm read code
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
                   ` (7 preceding siblings ...)
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 08/13] i40e: define function capabilities in only one place Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 10/13] i40evf: null out ring pointers on free Joshua Hay
                   ` (3 subsequent siblings)
  12 siblings, 0 replies; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Anjali Singhai Jain <anjali.singhai@intel.com>

In X722, NVM reads can't be done through SRCTL registers.
And require AQ calls, which require grabbing the NVM lock.
Unfortunately some paths need the lock to be acquired once
and do a whole bunch of stuff and then release it.
This patch creates an unsafe version of the read calls, so
that it can be called from the paths that need the bulk access.

Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Acked-by: Shannon Nelson <shannon.nelson@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Change-ID: Ia9076e9100c5cf61206a856bd279059d3a052024
---
Testing Hints: Also make sure LAN driver
sees the correct NVM version and does not fail verify checksum
during init and during reset.

 drivers/net/ethernet/intel/i40e/i40e_nvm.c | 70 +++++++++++++++++++++++++-----
 1 file changed, 59 insertions(+), 11 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_nvm.c b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
index 6100cdd..79c0053 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_nvm.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
@@ -212,6 +212,24 @@ read_nvm_exit:
 }
 
 /**
+ * __i40e_read_nvm_word - Reads nvm word, assumes caller does the locking
+ * @hw: pointer to the HW structure
+ * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF)
+ * @data: word read from the Shadow RAM
+ *
+ * Reads one 16 bit word from the Shadow RAM using the GLNVM_SRCTL register.
+ **/
+static i40e_status __i40e_read_nvm_word(struct i40e_hw *hw,
+					u16 offset,
+					u16 *data)
+{
+	i40e_status ret_code = 0;
+
+	ret_code = i40e_read_nvm_word_srctl(hw, offset, data);
+	return ret_code;
+}
+
+/**
  * i40e_read_nvm_aq - Read Shadow RAM.
  * @hw: pointer to the HW structure.
  * @module_pointer: module pointer location in words from the NVM beginning
@@ -280,7 +298,7 @@ static i40e_status i40e_read_nvm_word_aq(struct i40e_hw *hw, u16 offset,
 }
 
 /**
- * i40e_read_nvm_word - Reads Shadow RAM
+ * i40e_read_nvm_word - Reads nvm word and acquire lock if necessary
  * @hw: pointer to the HW structure
  * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF)
  * @data: word read from the Shadow RAM
@@ -393,7 +411,28 @@ read_nvm_buffer_aq_exit:
 }
 
 /**
- * i40e_read_nvm_buffer - Reads Shadow RAM buffer
+ * __i40e_read_nvm_buffer - Reads nvm buffer, caller must acquire lock
+ * @hw: pointer to the HW structure
+ * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF).
+ * @words: (in) number of words to read; (out) number of words actually read
+ * @data: words read from the Shadow RAM
+ *
+ * Reads 16 bit words (data buffer) from the SR using the i40e_read_nvm_srrd()
+ * method. The buffer read is preceded by the NVM ownership take
+ * and followed by the release.
+ **/
+static i40e_status __i40e_read_nvm_buffer(struct i40e_hw *hw,
+					  u16 offset,
+					  u16 *words, u16 *data)
+{
+	i40e_status ret_code = 0;
+
+	ret_code = i40e_read_nvm_buffer_srctl(hw, offset, words, data);
+	return ret_code;
+}
+
+/**
+ * i40e_read_nvm_buffer - Reads Shadow RAM buffer and acuire lock if necessary
  * @hw: pointer to the HW structure
  * @offset: offset of the Shadow RAM word to read (0x000000 - 0x001FFF).
  * @words: (in) number of words to read; (out) number of words actually read
@@ -499,15 +538,17 @@ static i40e_status i40e_calc_nvm_checksum(struct i40e_hw *hw,
 	data = (u16 *)vmem.va;
 
 	/* read pointer to VPD area */
-	ret_code = i40e_read_nvm_word(hw, I40E_SR_VPD_PTR, &vpd_module);
+	ret_code = __i40e_read_nvm_word(hw, I40E_SR_VPD_PTR,
+					&vpd_module);
 	if (ret_code) {
 		ret_code = I40E_ERR_NVM_CHECKSUM;
 		goto i40e_calc_nvm_checksum_exit;
 	}
 
 	/* read pointer to PCIe Alt Auto-load module */
-	ret_code = i40e_read_nvm_word(hw, I40E_SR_PCIE_ALT_AUTO_LOAD_PTR,
-				      &pcie_alt_module);
+	ret_code = __i40e_read_nvm_word(hw,
+					I40E_SR_PCIE_ALT_AUTO_LOAD_PTR,
+					&pcie_alt_module);
 	if (ret_code) {
 		ret_code = I40E_ERR_NVM_CHECKSUM;
 		goto i40e_calc_nvm_checksum_exit;
@@ -521,7 +562,7 @@ static i40e_status i40e_calc_nvm_checksum(struct i40e_hw *hw,
 		if ((i % I40E_SR_SECTOR_SIZE_IN_WORDS) == 0) {
 			u16 words = I40E_SR_SECTOR_SIZE_IN_WORDS;
 
-			ret_code = i40e_read_nvm_buffer(hw, i, &words, data);
+			ret_code = __i40e_read_nvm_buffer(hw, i, &words, data);
 			if (ret_code) {
 				ret_code = I40E_ERR_NVM_CHECKSUM;
 				goto i40e_calc_nvm_checksum_exit;
@@ -593,13 +634,18 @@ i40e_status i40e_validate_nvm_checksum(struct i40e_hw *hw,
 	u16 checksum_sr = 0;
 	u16 checksum_local = 0;
 
-	ret_code = i40e_calc_nvm_checksum(hw, &checksum_local);
-	if (ret_code)
+	if (hw->flags & I40E_HW_FLAG_AQ_SRCTL_ACCESS_ENABLE)
+		ret_code = i40e_acquire_nvm(hw, I40E_RESOURCE_READ);
+	if (!ret_code) {
+		ret_code = i40e_calc_nvm_checksum(hw, &checksum_local);
+		if (hw->flags & I40E_HW_FLAG_AQ_SRCTL_ACCESS_ENABLE)
+			i40e_release_nvm(hw);
+		if (ret_code)
+			goto i40e_validate_nvm_checksum_exit;
+	} else {
 		goto i40e_validate_nvm_checksum_exit;
+	}
 
-	/* Do not use i40e_read_nvm_word() because we do not want to take
-	 * the synchronization semaphores twice here.
-	 */
 	i40e_read_nvm_word(hw, I40E_SR_SW_CHECKSUM_WORD, &checksum_sr);
 
 	/* Verify read checksum from EEPROM is the same as
@@ -958,6 +1004,7 @@ retry:
 		break;
 
 	case I40E_NVMUPD_CSUM_CON:
+		/* Assumes the caller has acquired the nvm */
 		status = i40e_update_nvm_checksum(hw);
 		if (status) {
 			*perrno = hw->aq.asq_last_status ?
@@ -971,6 +1018,7 @@ retry:
 		break;
 
 	case I40E_NVMUPD_CSUM_LCB:
+		/* Assumes the caller has acquired the nvm */
 		status = i40e_update_nvm_checksum(hw);
 		if (status) {
 			*perrno = hw->aq.asq_last_status ?
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 10/13] i40evf: null out ring pointers on free
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
                   ` (8 preceding siblings ...)
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 09/13] i40e: Make some changes in the nvm read code Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2015-12-17 16:58   ` Bowers, AndrewX
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 11/13] i40e: Cleanup the code with respect to restarting autoneg Joshua Hay
                   ` (2 subsequent siblings)
  12 siblings, 1 reply; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Mitch Williams <mitch.a.williams@intel.com>

Since we check these ring pointers to make sure we don't double-allocate
or double-free the rings, we had better null them out after we free
them. In very rare cases this can cause a panic if the driver is removed
during reset recovery.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Change-ID: Ib06eb4910a3058275c8f7ec5ef7f45baa4674f96
---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index d859045..c7f98e7 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -1122,7 +1122,9 @@ static void i40evf_free_queues(struct i40evf_adapter *adapter)
 	if (!adapter->vsi_res)
 		return;
 	kfree(adapter->tx_rings);
+	adapter->tx_rings = NULL;
 	kfree(adapter->rx_rings);
+	adapter->rx_rings = NULL;
 }
 
 /**
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 11/13] i40e: Cleanup the code with respect to restarting autoneg
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
                   ` (9 preceding siblings ...)
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 10/13] i40evf: null out ring pointers on free Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2015-12-17 17:00   ` Bowers, AndrewX
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 12/13] i40e: update features with right offload Joshua Hay
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 13/13] i40e: bump version to 1.4.10 Joshua Hay
  12 siblings, 1 reply; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Anjali Singhai Jain <anjali.singhai@intel.com>

The restart-autoneg work around does not apply to X722.
Added a flag to set it only for the right MAC and right FW version
where the work around should be applied.

Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Change-ID: I942c3ff40cccd1e56f424b1da776b020fe3c9d2a
---
 drivers/net/ethernet/intel/i40e/i40e.h      |  1 +
 drivers/net/ethernet/intel/i40e/i40e_main.c | 12 ++++++++----
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 4747219..bf3776f 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -336,6 +336,7 @@ struct i40e_pf {
 #define I40E_FLAG_VEB_MODE_ENABLED		BIT_ULL(40)
 #define I40E_FLAG_NO_PCI_LINK_CHECK		BIT_ULL(41)
 #define I40E_FLAG_100M_SGMII_CAPABLE		BIT_ULL(42)
+#define I40E_FLAG_RESTART_AUTONEG	        BIT_ULL(43)
 
 	/* tracks features that get auto disabled by errors */
 	u64 auto_disable_flags;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 44bbfd8..747387f 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -6882,8 +6882,7 @@ static void i40e_reset_and_rebuild(struct i40e_pf *pf, bool reinit)
 		wr32(hw, I40E_REG_MSS, val);
 	}
 
-	if (((pf->hw.aq.fw_maj_ver == 4) && (pf->hw.aq.fw_min_ver < 33)) ||
-	    (pf->hw.aq.fw_maj_ver < 4)) {
+	if (pf->flags & I40E_FLAG_RESTART_AUTONEG) {
 		msleep(75);
 		ret = i40e_aq_set_link_restart_an(&pf->hw, true, NULL);
 		if (ret)
@@ -8362,6 +8361,12 @@ static int i40e_sw_init(struct i40e_pf *pf)
 				 pf->hw.func_caps.fd_filters_best_effort;
 	}
 
+	if (((pf->hw.mac.type == I40E_MAC_X710) ||
+	     (pf->hw.mac.type == I40E_MAC_XL710)) &&
+	    (((pf->hw.aq.fw_maj_ver == 4) && (pf->hw.aq.fw_min_ver < 33)) ||
+	    (pf->hw.aq.fw_maj_ver < 4)))
+		pf->flags |= I40E_FLAG_RESTART_AUTONEG;
+
 	if (pf->hw.func_caps.vmdq) {
 		pf->num_vmdq_vsis = I40E_DEFAULT_NUM_VMDQ_VSI;
 		pf->flags |= I40E_FLAG_VMDQ_ENABLED;
@@ -10791,8 +10796,7 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 		wr32(hw, I40E_REG_MSS, val);
 	}
 
-	if (((pf->hw.aq.fw_maj_ver == 4) && (pf->hw.aq.fw_min_ver < 33)) ||
-	    (pf->hw.aq.fw_maj_ver < 4)) {
+	if (pf->flags & I40E_FLAG_RESTART_AUTONEG) {
 		msleep(75);
 		err = i40e_aq_set_link_restart_an(&pf->hw, true, NULL);
 		if (err)
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 12/13] i40e: update features with right offload
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
                   ` (10 preceding siblings ...)
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 11/13] i40e: Cleanup the code with respect to restarting autoneg Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2015-12-10 18:46   ` Jesse Brandeburg
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 13/13] i40e: bump version to 1.4.10 Joshua Hay
  12 siblings, 1 reply; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Jesse Brandeburg <jesse.brandeburg@intel.com>

Synchronize code bases and add SCTP offload support.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Reviewed-by: Brandeburg, Jesse <jesse.brandeburg@intel.com>
Change-ID: I9f99071f7176225479026930c387bf681a47494e
---
Testing Hints: Test SCTP in a tunnel like vxlan and make sure
TSO is still working.  Test GRE tunnels and make sure they
work.  See already applied GRE upstream commit for instructions.

 drivers/net/ethernet/intel/i40e/i40e_main.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 747387f..cc83332 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -8847,10 +8847,12 @@ static int i40e_config_netdev(struct i40e_vsi *vsi)
 	np = netdev_priv(netdev);
 	np->vsi = vsi;
 
-	netdev->hw_enc_features |= NETIF_F_IP_CSUM	 |
-				  NETIF_F_GSO_UDP_TUNNEL |
-				  NETIF_F_GSO_GRE	 |
-				  NETIF_F_TSO;
+	netdev->hw_enc_features |= NETIF_F_IP_CSUM	  |
+				   NETIF_F_SCTP_CSUM	  |
+				   NETIF_F_GSO_UDP_TUNNEL |
+				   NETIF_F_GSO_GRE        |
+				   NETIF_F_TSO		  |
+				   0;
 
 	netdev->features = NETIF_F_SG		       |
 			   NETIF_F_IP_CSUM	       |
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 13/13] i40e: bump version to 1.4.10
  2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
                   ` (11 preceding siblings ...)
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 12/13] i40e: update features with right offload Joshua Hay
@ 2015-12-09 23:50 ` Joshua Hay
  2015-12-17 17:09   ` Bowers, AndrewX
  12 siblings, 1 reply; 32+ messages in thread
From: Joshua Hay @ 2015-12-09 23:50 UTC (permalink / raw)
  To: intel-wired-lan

From: Catherine Sullivan <catherine.sullivan@intel.com>

Bump.

Change-Id: I81c407a988a8ff3c0b3ae64b4330800c95e6c31b

Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Change-ID: Ic9a495feb9ab0606f953c3848b0acf67169d3930
---
Testing Hints: check version

 drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index cc83332..fb58608 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -48,7 +48,7 @@ static const char i40e_driver_string[] =
 
 #define DRV_VERSION_MAJOR 1
 #define DRV_VERSION_MINOR 4
-#define DRV_VERSION_BUILD 8
+#define DRV_VERSION_BUILD 10
 #define DRV_VERSION __stringify(DRV_VERSION_MAJOR) "." \
 	     __stringify(DRV_VERSION_MINOR) "." \
 	     __stringify(DRV_VERSION_BUILD)    DRV_KERN
-- 
2.1.0


^ permalink raw reply related	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 12/13] i40e: update features with right offload
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 12/13] i40e: update features with right offload Joshua Hay
@ 2015-12-10 18:46   ` Jesse Brandeburg
  0 siblings, 0 replies; 32+ messages in thread
From: Jesse Brandeburg @ 2015-12-10 18:46 UTC (permalink / raw)
  To: intel-wired-lan

On Wed, 9 Dec 2015 15:50:32 -0800
Joshua Hay <joshua.a.hay@intel.com> wrote:

> From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 
> Synchronize code bases and add SCTP offload support.
> 
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Reviewed-by: Brandeburg, Jesse <jesse.brandeburg@intel.com>

signed off by and reviewed by the same person looks bogus.  Please only
include the originator's S.O.B. when generating upstream commits.

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 08/13] i40e: define function capabilities in only one place
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 08/13] i40e: define function capabilities in only one place Joshua Hay
@ 2015-12-10 18:47   ` Jesse Brandeburg
  2015-12-17 16:53   ` Bowers, AndrewX
  1 sibling, 0 replies; 32+ messages in thread
From: Jesse Brandeburg @ 2015-12-10 18:47 UTC (permalink / raw)
  To: intel-wired-lan

On Wed, 9 Dec 2015 15:50:28 -0800
Joshua Hay <joshua.a.hay@intel.com> wrote:

> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> The device capabilities were defined in two places, and neither had all
> the definitions.  It really belongs with the AQ API definition, so this
> patch removes the other set of definitions and fills out the missing item.
> 
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>

Only the Author's S.O.B should be included when submitting upstream,
until Jeff adds his own S.O.B as part of the upstreaming process.


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 01/13] i40e: Fix Rx hash reported to the stack by our driver
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 01/13] i40e: Fix Rx hash reported to the stack by our driver Joshua Hay
@ 2015-12-16 18:31   ` Bowers, AndrewX
  0 siblings, 0 replies; 32+ messages in thread
From: Bowers, AndrewX @ 2015-12-16 18:31 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:50 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 01/13] i40e: Fix Rx hash reported
> to the stack by our driver
> 
> From: Anjali Singhai Jain <anjali.singhai@intel.com>
> 
> If the driver calls skb_set_hash even with a zero hash, that indicates to the
> stack that the hash calculation is offloaded in hardware. So the Stack doesn't
> do a SW hash which is required for load balancing if the user decides to turn
> of rx-hashing on our device.
> 
> This patch fixes the path so that we do not call skb_set_hash if the feature is
> disabled.
> 
> Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
> Change-ID: Ic4debfa4ff91b5a72e447348a75768ed7a2d3e1b
> ---
> Testing Hints:Test interrupt overload x710 Apart from the interrupt overload,
> the user sees a problem where the stack is not calculating the hash when rx-
> hasing is turned off which is resulting in tpacket_v3 not balancing the load
> across multiple threads.
> 
>  drivers/net/ethernet/intel/i40e/i40e_txrx.c   | 54 ++++++++++++++----------
> ---
>  drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 54 ++++++++++++++---------
> ----
>  2 files changed, 58 insertions(+), 50 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied, load properly balances across queues with hashing enabled and disabled

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 02/13] i40e: remove forever unused ID
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 02/13] i40e: remove forever unused ID Joshua Hay
@ 2015-12-16 18:35   ` Bowers, AndrewX
  0 siblings, 0 replies; 32+ messages in thread
From: Bowers, AndrewX @ 2015-12-16 18:35 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:50 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 02/13] i40e: remove forever
> unused ID
> 
> From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 
> Somehow an ID that has never been productized is in the code.  There are no
> plans to use it, so just get rid of it.
> 
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Change-ID: I59117d48ea9ee0360b0fe33833ac8092f8a24b4c
> ---
> Testing Hints: make sure the code is all gone that refers to it.
> 
>  drivers/net/ethernet/intel/i40e/i40e_common.c   | 1 -
>  drivers/net/ethernet/intel/i40e/i40e_devids.h   | 1 -
>  drivers/net/ethernet/intel/i40e/i40e_main.c     | 1 -
>  drivers/net/ethernet/intel/i40evf/i40e_common.c | 1 -
> drivers/net/ethernet/intel/i40evf/i40e_devids.h | 1 -
>  5 files changed, 5 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 03/13] i40e: Add mac_filter_element at the end of the list instead of HEAD
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 03/13] i40e: Add mac_filter_element at the end of the list instead of HEAD Joshua Hay
@ 2015-12-16 18:37   ` Bowers, AndrewX
  0 siblings, 0 replies; 32+ messages in thread
From: Bowers, AndrewX @ 2015-12-16 18:37 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:50 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 03/13] i40e: Add
> mac_filter_element at the end of the list instead of HEAD
> 
> From: Kiran Patil <kiran.patil@intel.com>
> 
> Add MAC filter element to the end of the list in the given order, just to be
> tidy, and just in case there are ever any ordering issues in the future.
> 
> Signed-off-by: Kiran Patil <kiran.patil@intel.com>
> Change-ID: Idc15276147593ea9393ac72c861f9c7905a791b4
> ---
> Testing Hints: There is no straight targeted test for this issue.
> 
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 06/13] i40e/i40evf: tunnels can be generic
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 06/13] i40e/i40evf: tunnels can be generic Joshua Hay
@ 2015-12-17 16:43   ` Bowers, AndrewX
  2016-01-20  3:54   ` [Intel-wired-lan] [next, S23, " Alexander Duyck
  1 sibling, 0 replies; 32+ messages in thread
From: Bowers, AndrewX @ 2015-12-17 16:43 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:50 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 06/13] i40e/i40evf: tunnels can be
> generic
> 
> From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 
> Since the i40e driver now supports VxLAN, GRE, and soon to be Geneve
> tunnels, the driver can just note that an skb contains a tunneled packet
> generically, instead of calling out VXLAN specifically.  The tunnel set up we do
> for hardware is almost always the same for all tunnel types.
> 
> This specifically enables ATR/Flow Director on GRE packets which increases
> performance/scaling.  Without this patch GRE RX packets end up on a
> random RSS assigned queue.
> 
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Change-ID: Ie8e205603654910d2f718592cbef8132ae0719e4
> ---
>  drivers/net/ethernet/intel/i40e/i40e_txrx.c   | 7 ++++---
>  drivers/net/ethernet/intel/i40e/i40e_txrx.h   | 2 +-
>  drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 2 +-
> drivers/net/ethernet/intel/i40evf/i40e_txrx.h | 2 +-
>  4 files changed, 7 insertions(+), 6 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 07/13] i40evf: allow channel bonding of VFs
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 07/13] i40evf: allow channel bonding of VFs Joshua Hay
@ 2015-12-17 16:49   ` Bowers, AndrewX
  0 siblings, 0 replies; 32+ messages in thread
From: Bowers, AndrewX @ 2015-12-17 16:49 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:50 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 07/13] i40evf: allow channel
> bonding of VFs
> 
> From: Mitch Williams <mitch.a.williams@intel.com>
> 
> In some modes, bonding would not enslave VF interfaces. This is due to
> bonding calling change_mtu and the immediately calling open. Because of
> the asynchronous nature of the admin queue mechanism, the VF returns -
> EBUSY to the open call, because it knows the previous operation hasn't
> finished yet. This causes bonding to fail with a less-than-useful error
> message.
> 
> To fix this, remove the check for pending operations at the beginning of
> open. But this introduces a new bug where the driver will panic on a quick
> close/open cycle. To fix that, we add a new driver state,
> __I40EVF_DOWN_PENDING, that the driver enters when down is called. The
> driver finally transitions to a fully DOWN state when it receives confirmation
> from the PF driver that all the queues are disabled. This allows open to
> complete even if there is a pending mtu change, and bonding is finally happy.
> 
> Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
> Change-ID: I06f4c7e435d5bacbfceaa7c3f209e0ff04be21cc
> ---
>  drivers/net/ethernet/intel/i40evf/i40evf.h          | 1 +
>  drivers/net/ethernet/intel/i40evf/i40evf_main.c     | 9 +++++----
>  drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c | 2 ++
>  3 files changed, 8 insertions(+), 4 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 08/13] i40e: define function capabilities in only one place
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 08/13] i40e: define function capabilities in only one place Joshua Hay
  2015-12-10 18:47   ` Jesse Brandeburg
@ 2015-12-17 16:53   ` Bowers, AndrewX
  2015-12-30 16:12     ` Bowers, AndrewX
  1 sibling, 1 reply; 32+ messages in thread
From: Bowers, AndrewX @ 2015-12-17 16:53 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:50 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 08/13] i40e: define function
> capabilities in only one place
> 
> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> The device capabilities were defined in two places, and neither had all the
> definitions.  It really belongs with the AQ API definition, so this patch
> removes the other set of definitions and fills out the missing item.
> 
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> Change-ID: I273ba7d79a476cd11d2e0ca5825fec1716740de2
> ---
> Testing Hints: Apply and compile cleanly
> 
>  drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h  |  1 +
>  drivers/net/ethernet/intel/i40e/i40e_common.c      | 85 +++++++-------------
> --
>  .../net/ethernet/intel/i40evf/i40e_adminq_cmd.h    |  1 +
>  3 files changed, 30 insertions(+), 57 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 10/13] i40evf: null out ring pointers on free
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 10/13] i40evf: null out ring pointers on free Joshua Hay
@ 2015-12-17 16:58   ` Bowers, AndrewX
  0 siblings, 0 replies; 32+ messages in thread
From: Bowers, AndrewX @ 2015-12-17 16:58 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:51 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 10/13] i40evf: null out ring
> pointers on free
> 
> From: Mitch Williams <mitch.a.williams@intel.com>
> 
> Since we check these ring pointers to make sure we don't double-allocate or
> double-free the rings, we had better null them out after we free them. In
> very rare cases this can cause a panic if the driver is removed during reset
> recovery.
> 
> Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
> Change-ID: Ib06eb4910a3058275c8f7ec5ef7f45baa4674f96
> ---
>  drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 ++
>  1 file changed, 2 insertions(+)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 11/13] i40e: Cleanup the code with respect to restarting autoneg
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 11/13] i40e: Cleanup the code with respect to restarting autoneg Joshua Hay
@ 2015-12-17 17:00   ` Bowers, AndrewX
  0 siblings, 0 replies; 32+ messages in thread
From: Bowers, AndrewX @ 2015-12-17 17:00 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:51 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 11/13] i40e: Cleanup the code
> with respect to restarting autoneg
> 
> From: Anjali Singhai Jain <anjali.singhai@intel.com>
> 
> The restart-autoneg work around does not apply to X722.
> Added a flag to set it only for the right MAC and right FW version where the
> work around should be applied.
> 
> Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
> Change-ID: I942c3ff40cccd1e56f424b1da776b020fe3c9d2a
> ---
>  drivers/net/ethernet/intel/i40e/i40e.h      |  1 +
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 12 ++++++++----
>  2 files changed, 9 insertions(+), 4 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 13/13] i40e: bump version to 1.4.10
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 13/13] i40e: bump version to 1.4.10 Joshua Hay
@ 2015-12-17 17:09   ` Bowers, AndrewX
  0 siblings, 0 replies; 32+ messages in thread
From: Bowers, AndrewX @ 2015-12-17 17:09 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:51 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 13/13] i40e: bump version to
> 1.4.10
> 
> From: Catherine Sullivan <catherine.sullivan@intel.com>
> 
> Bump.
> 
> Change-Id: I81c407a988a8ff3c0b3ae64b4330800c95e6c31b
> 
> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
> Change-ID: Ic9a495feb9ab0606f953c3848b0acf67169d3930
> ---
> Testing Hints: check version
> 
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied, modinfo/ethtool show correct version

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 08/13] i40e: define function capabilities in only one place
  2015-12-17 16:53   ` Bowers, AndrewX
@ 2015-12-30 16:12     ` Bowers, AndrewX
  0 siblings, 0 replies; 32+ messages in thread
From: Bowers, AndrewX @ 2015-12-30 16:12 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Bowers, AndrewX
> Sent: Thursday, December 17, 2015 8:54 AM
> To: intel-wired-lan at lists.osuosl.org
> Subject: Re: [Intel-wired-lan] [next PATCH S23 08/13] i40e: define function
> capabilities in only one place
> 
> > -----Original Message-----
> > From: Intel-wired-lan
> > [mailto:intel-wired-lan-bounces at lists.osuosl.org] On Behalf Of Joshua
> > Hay
> > Sent: Wednesday, December 09, 2015 3:50 PM
> > To: intel-wired-lan at lists.osuosl.org
> > Subject: [Intel-wired-lan] [next PATCH S23 08/13] i40e: define
> > function capabilities in only one place
> >
> > From: Shannon Nelson <shannon.nelson@intel.com>
> >
> > The device capabilities were defined in two places, and neither had
> > all the definitions.  It really belongs with the AQ API definition, so
> > this patch removes the other set of definitions and fills out the missing
> item.
> >
> > Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> > Acked-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
> > Change-ID: I273ba7d79a476cd11d2e0ca5825fec1716740de2
> > ---
> > Testing Hints: Apply and compile cleanly
> >
> >  drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h  |  1 +
> >  drivers/net/ethernet/intel/i40e/i40e_common.c      | 85 +++++++-----------
> --
> > --
> >  .../net/ethernet/intel/i40evf/i40e_adminq_cmd.h    |  1 +
> >  3 files changed, 30 insertions(+), 57 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
 Patch code changes correctly applied

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 05/13] i40e: Replace X722 mac check in ethtool get_settings
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 05/13] i40e: Replace X722 mac check in ethtool get_settings Joshua Hay
@ 2016-01-13 18:58   ` Bowers, AndrewX
  0 siblings, 0 replies; 32+ messages in thread
From: Bowers, AndrewX @ 2016-01-13 18:58 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:50 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 05/13] i40e: Replace X722 mac
> check in ethtool get_settings
> 
> From: Catherine Sullivan <catherine.sullivan@intel.com>
> 
> 100M SGMII is only supported on X722.  Replace the mac check with a
> feature flag check that is only set for the X722 device.
> 
> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
> Change-ID: I53452d9af6af8cd9dca8500215fbc6ce93418f52
> ---
> Testing Hints: Check that 100M SGMII is not listed as supported on X710
> devices and is listed as supported on X722 devices.
> 
>  drivers/net/ethernet/intel/i40e/i40e.h         | 3 ++-
>  drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 2 +-
>  2 files changed, 3 insertions(+), 2 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied, does not break base driver

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next PATCH S23 04/13] i40e/i40evf: Fix RSS rx-flow-hash configuration through ethtool
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 04/13] i40e/i40evf: Fix RSS rx-flow-hash configuration through ethtool Joshua Hay
@ 2016-01-13 19:25   ` Bowers, AndrewX
  0 siblings, 0 replies; 32+ messages in thread
From: Bowers, AndrewX @ 2016-01-13 19:25 UTC (permalink / raw)
  To: intel-wired-lan

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Joshua Hay
> Sent: Wednesday, December 09, 2015 3:50 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S23 04/13] i40e/i40evf: Fix RSS rx-
> flow-hash configuration through ethtool
> 
> From: Anjali Singhai Jain <anjali.singhai@intel.com>
> 
> This patch fixes the Hash PCTYPE enable for X722 since it supports a broader
> selection of PCTYPES for TCP and UDP.
> 
> This patch also fixes a bug in XL710, X710, X722 support for RSS, as of now we
> cannot reduce the (4)tuple for RSS for TCP/IPv4/IPV6 or
> UDP/IPv4/IPv6 packets since this requires a product feature change that
> comes in a later release.
> 
> A VF should never be allowed to change the tuples for RSS for any PCTYPE
> since that's a global setting for the device in case of i40e devices.
> 
> Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
> Change-ID: I0ee7203c9b24813260f58f3220798bc9d9ac4a12
> ---
>  drivers/net/ethernet/intel/i40e/i40e_ethtool.c     | 14 +++-----
>  drivers/net/ethernet/intel/i40evf/i40evf_ethtool.c | 40 +++++-----------------
>  2 files changed, 12 insertions(+), 42 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Patch code changes correctly applied, RSS works correctly on PF and VF with UDP and TCP traffic

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next, S23, 06/13] i40e/i40evf: tunnels can be generic
  2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 06/13] i40e/i40evf: tunnels can be generic Joshua Hay
  2015-12-17 16:43   ` Bowers, AndrewX
@ 2016-01-20  3:54   ` Alexander Duyck
  2016-01-20 22:13     ` Jeff Kirsher
  2016-01-20 22:39     ` Jesse Brandeburg
  1 sibling, 2 replies; 32+ messages in thread
From: Alexander Duyck @ 2016-01-20  3:54 UTC (permalink / raw)
  To: intel-wired-lan

On 12/09/2015 03:50 PM, Hay, Joshua A wrote:
> From: Jesse Brandeburg <jesse.brandeburg@intel.com>
>
> Since the i40e driver now supports VxLAN, GRE, and soon
> to be Geneve tunnels, the driver can just note that an skb
> contains a tunneled packet generically, instead of calling
> out VXLAN specifically.  The tunnel set up we do for hardware
> is almost always the same for all tunnel types.
>
> This specifically enables ATR/Flow Director on GRE packets
> which increases performance/scaling.  Without this patch
> GRE RX packets end up on a random RSS assigned queue.
>
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Change-ID: Ie8e205603654910d2f718592cbef8132ae0719e4
> Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
> ---
>   drivers/net/ethernet/intel/i40e/i40e_txrx.c   | 7 ++++---
>   drivers/net/ethernet/intel/i40e/i40e_txrx.h   | 2 +-
>   drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 2 +-
>   drivers/net/ethernet/intel/i40evf/i40e_txrx.h | 2 +-
>   4 files changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> index 28d2943..ba79f67 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> @@ -2005,7 +2005,7 @@ static void i40e_atr(struct i40e_ring *tx_ring, struct sk_buff *skb,
>   	if (!(tx_flags & (I40E_TX_FLAGS_IPV4 | I40E_TX_FLAGS_IPV6)))
>   		return;
>
> -	if (!(tx_flags & I40E_TX_FLAGS_VXLAN_TUNNEL)) {
> +	if ((tx_flags & I40E_TX_FLAGS_TUNNEL)) {
>   		/* snag network header to get L4 type and address */
>   		hdr.network = skb_network_header(skb);
>

So this patch has a major bug right here.  Specifically it is disabling 
ATR for everything since the logic got flipped an you are checking the 
outer headers for tunneled frames, and the inner headers for 
non-tunneled frames.

There is another bug a bit further down from here where the variable 
protocol is used which means it is outer header only and as such breaks 
any cases where you have v4 over v6 or v6 over v4.


> @@ -2090,7 +2090,7 @@ static void i40e_atr(struct i40e_ring *tx_ring, struct sk_buff *skb,
>   		     I40E_TXD_FLTR_QW1_FD_STATUS_SHIFT;
>
>   	dtype_cmd |= I40E_TXD_FLTR_QW1_CNT_ENA_MASK;
> -	if (!(tx_flags & I40E_TX_FLAGS_VXLAN_TUNNEL))
> +	if (!(tx_flags & I40E_TX_FLAGS_TUNNEL))
>   		dtype_cmd |=
>   			((u32)I40E_FD_ATR_STAT_IDX(pf->hw.pf_id) <<
>   			I40E_TXD_FLTR_QW1_CNTINDEX_SHIFT) &
> @@ -2323,10 +2323,11 @@ static void i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,
>   			oudph = udp_hdr(skb);
>   			oiph = ip_hdr(skb);
>   			l4_tunnel = I40E_TXD_CTX_UDP_TUNNELING;
> -			*tx_flags |= I40E_TX_FLAGS_VXLAN_TUNNEL;
> +			*tx_flags |= I40E_TX_FLAGS_TUNNEL;
>   			break;
>   		case IPPROTO_GRE:
>   			l4_tunnel = I40E_TXD_CTX_GRE_TUNNELING;
> +			*tx_flags |= I40E_TX_FLAGS_TUNNEL;
>   			break;
>   		default:
>   			return;
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.h b/drivers/net/ethernet/intel/i40e/i40e_txrx.h
> index dccc1eb..1d167b6 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.h
> +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.h
> @@ -163,7 +163,7 @@ enum i40e_dyn_idx_t {
>   #define I40E_TX_FLAGS_FSO		BIT(7)
>   #define I40E_TX_FLAGS_TSYN		BIT(8)
>   #define I40E_TX_FLAGS_FD_SB		BIT(9)
> -#define I40E_TX_FLAGS_VXLAN_TUNNEL	BIT(10)
> +#define I40E_TX_FLAGS_TUNNEL		BIT(10)
>   #define I40E_TX_FLAGS_VLAN_MASK		0xffff0000
>   #define I40E_TX_FLAGS_VLAN_PRIO_MASK	0xe0000000
>   #define I40E_TX_FLAGS_VLAN_PRIO_SHIFT	29
> diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
> index 7a00657..ed4934a 100644
> --- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
> +++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
> @@ -1521,7 +1521,7 @@ static void i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,
>   			oudph = udp_hdr(skb);
>   			oiph = ip_hdr(skb);
>   			l4_tunnel = I40E_TXD_CTX_UDP_TUNNELING;
> -			*tx_flags |= I40E_TX_FLAGS_VXLAN_TUNNEL;
> +			*tx_flags |= I40E_TX_FLAGS_TUNNEL;
>   			break;
>   		default:
>   			return;
> diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.h b/drivers/net/ethernet/intel/i40evf/i40e_txrx.h
> index e29bb3e..d7950b1 100644
> --- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.h
> +++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.h
> @@ -162,7 +162,7 @@ enum i40e_dyn_idx_t {
>   #define I40E_TX_FLAGS_FCCRC		BIT(6)
>   #define I40E_TX_FLAGS_FSO		BIT(7)
>   #define I40E_TX_FLAGS_FD_SB		BIT(9)
> -#define I40E_TX_FLAGS_VXLAN_TUNNEL	BIT(10)
> +#define I40E_TX_FLAGS_TUNNEL		BIT(10)
>   #define I40E_TX_FLAGS_VLAN_MASK		0xffff0000
>   #define I40E_TX_FLAGS_VLAN_PRIO_MASK	0xe0000000
>   #define I40E_TX_FLAGS_VLAN_PRIO_SHIFT	29
>


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next, S23, 06/13] i40e/i40evf: tunnels can be generic
  2016-01-20  3:54   ` [Intel-wired-lan] [next, S23, " Alexander Duyck
@ 2016-01-20 22:13     ` Jeff Kirsher
  2016-01-20 22:39     ` Jesse Brandeburg
  1 sibling, 0 replies; 32+ messages in thread
From: Jeff Kirsher @ 2016-01-20 22:13 UTC (permalink / raw)
  To: intel-wired-lan

On Tue, 2016-01-19 at 19:54 -0800, Alexander Duyck wrote:
> On 12/09/2015 03:50 PM, Hay, Joshua A wrote:
> > From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> >
> > Since the i40e driver now supports VxLAN, GRE, and soon
> > to be Geneve tunnels, the driver can just note that an skb
> > contains a tunneled packet generically, instead of calling
> > out VXLAN specifically.? The tunnel set up we do for hardware
> > is almost always the same for all tunnel types.
> >
> > This specifically enables ATR/Flow Director on GRE packets
> > which increases performance/scaling.? Without this patch
> > GRE RX packets end up on a random RSS assigned queue.
> >
> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > Change-ID: Ie8e205603654910d2f718592cbef8132ae0719e4
> > Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
> > ---
> >?? drivers/net/ethernet/intel/i40e/i40e_txrx.c?? | 7 ++++---
> >?? drivers/net/ethernet/intel/i40e/i40e_txrx.h?? | 2 +-
> >?? drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 2 +-
> >?? drivers/net/ethernet/intel/i40evf/i40e_txrx.h | 2 +-
> >?? 4 files changed, 7 insertions(+), 6 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> > index 28d2943..ba79f67 100644
> > --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> > +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> > @@ -2005,7 +2005,7 @@ static void i40e_atr(struct i40e_ring
> *tx_ring, struct sk_buff *skb,
> >???????if (!(tx_flags & (I40E_TX_FLAGS_IPV4 | I40E_TX_FLAGS_IPV6)))
> >???????????????return;
> >
> > -?????if (!(tx_flags & I40E_TX_FLAGS_VXLAN_TUNNEL)) {
> > +?????if ((tx_flags & I40E_TX_FLAGS_TUNNEL)) {
> >???????????????/* snag network header to get L4 type and address */
> >???????????????hdr.network = skb_network_header(skb);
> >
> 
> So this patch has a major bug right here.? Specifically it is
> disabling?
> ATR for everything since the logic got flipped an you are checking
> the?
> outer headers for tunneled frames, and the inner headers for?
> non-tunneled frames.
> 
> There is another bug a bit further down from here where the variable?
> protocol is used which means it is outer header only and as such
> breaks?
> any cases where you have v4 over v6 or v6 over v4.

Thanks Alex for finding this, Jesse is working on a revised patch right
now.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20160120/f6e716a6/attachment.asc>

^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next, S23, 06/13] i40e/i40evf: tunnels can be generic
  2016-01-20  3:54   ` [Intel-wired-lan] [next, S23, " Alexander Duyck
  2016-01-20 22:13     ` Jeff Kirsher
@ 2016-01-20 22:39     ` Jesse Brandeburg
  2016-01-20 22:44       ` Alexander Duyck
  1 sibling, 1 reply; 32+ messages in thread
From: Jesse Brandeburg @ 2016-01-20 22:39 UTC (permalink / raw)
  To: intel-wired-lan

On Tue, 19 Jan 2016 19:54:07 -0800
Alexander Duyck <alexander.duyck@gmail.com> wrote:

> On 12/09/2015 03:50 PM, Hay, Joshua A wrote:
> > From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > -	if (!(tx_flags & I40E_TX_FLAGS_VXLAN_TUNNEL)) {
> > +	if ((tx_flags & I40E_TX_FLAGS_TUNNEL)) {
> >   		/* snag network header to get L4 type and address */
> >   		hdr.network = skb_network_header(skb);
> >
> 
> So this patch has a major bug right here.  Specifically it is disabling 
> ATR for everything since the logic got flipped an you are checking the 
> outer headers for tunneled frames, and the inner headers for 
> non-tunneled frames.

I've got a patch ready that fixes the "major bug" part, which appears
to be due to be a combination of several factors leading to this point
where the code was broken.  Thank you VERY much for catching this.

> There is another bug a bit further down from here where the variable 
> protocol is used which means it is outer header only and as such breaks 
> any cases where you have v4 over v6 or v6 over v4.

Since this issue was not introduced in this patch, I'm going to punt to
a separate patch to fix the "protocol".


^ permalink raw reply	[flat|nested] 32+ messages in thread

* [Intel-wired-lan] [next, S23, 06/13] i40e/i40evf: tunnels can be generic
  2016-01-20 22:39     ` Jesse Brandeburg
@ 2016-01-20 22:44       ` Alexander Duyck
  0 siblings, 0 replies; 32+ messages in thread
From: Alexander Duyck @ 2016-01-20 22:44 UTC (permalink / raw)
  To: intel-wired-lan

On Wed, Jan 20, 2016 at 2:39 PM, Jesse Brandeburg
<jesse.brandeburg@intel.com> wrote:
> On Tue, 19 Jan 2016 19:54:07 -0800
> Alexander Duyck <alexander.duyck@gmail.com> wrote:
>
>> On 12/09/2015 03:50 PM, Hay, Joshua A wrote:
>> > From: Jesse Brandeburg <jesse.brandeburg@intel.com>
>> > -   if (!(tx_flags & I40E_TX_FLAGS_VXLAN_TUNNEL)) {
>> > +   if ((tx_flags & I40E_TX_FLAGS_TUNNEL)) {
>> >             /* snag network header to get L4 type and address */
>> >             hdr.network = skb_network_header(skb);
>> >
>>
>> So this patch has a major bug right here.  Specifically it is disabling
>> ATR for everything since the logic got flipped an you are checking the
>> outer headers for tunneled frames, and the inner headers for
>> non-tunneled frames.
>
> I've got a patch ready that fixes the "major bug" part, which appears
> to be due to be a combination of several factors leading to this point
> where the code was broken.  Thank you VERY much for catching this.
>
>> There is another bug a bit further down from here where the variable
>> protocol is used which means it is outer header only and as such breaks
>> any cases where you have v4 over v6 or v6 over v4.
>
> Since this issue was not introduced in this patch, I'm going to punt to
> a separate patch to fix the "protocol".
>

That's fine with me.  I actually have a patch already put together to
address the protocol bug.  I just have to finish up sorting out the
ATA issues I am having with the current net-next and once I have that
resolved I will hopefully be able to work on splitting up the patches
a bit more and will submit my v2 either tonight or early tomorrow.

- Alex

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2016-01-20 22:44 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-09 23:50 [Intel-wired-lan] [next PATCH S23 00/13] i40e/i40evf updates Joshua Hay
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 01/13] i40e: Fix Rx hash reported to the stack by our driver Joshua Hay
2015-12-16 18:31   ` Bowers, AndrewX
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 02/13] i40e: remove forever unused ID Joshua Hay
2015-12-16 18:35   ` Bowers, AndrewX
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 03/13] i40e: Add mac_filter_element at the end of the list instead of HEAD Joshua Hay
2015-12-16 18:37   ` Bowers, AndrewX
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 04/13] i40e/i40evf: Fix RSS rx-flow-hash configuration through ethtool Joshua Hay
2016-01-13 19:25   ` Bowers, AndrewX
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 05/13] i40e: Replace X722 mac check in ethtool get_settings Joshua Hay
2016-01-13 18:58   ` Bowers, AndrewX
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 06/13] i40e/i40evf: tunnels can be generic Joshua Hay
2015-12-17 16:43   ` Bowers, AndrewX
2016-01-20  3:54   ` [Intel-wired-lan] [next, S23, " Alexander Duyck
2016-01-20 22:13     ` Jeff Kirsher
2016-01-20 22:39     ` Jesse Brandeburg
2016-01-20 22:44       ` Alexander Duyck
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 07/13] i40evf: allow channel bonding of VFs Joshua Hay
2015-12-17 16:49   ` Bowers, AndrewX
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 08/13] i40e: define function capabilities in only one place Joshua Hay
2015-12-10 18:47   ` Jesse Brandeburg
2015-12-17 16:53   ` Bowers, AndrewX
2015-12-30 16:12     ` Bowers, AndrewX
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 09/13] i40e: Make some changes in the nvm read code Joshua Hay
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 10/13] i40evf: null out ring pointers on free Joshua Hay
2015-12-17 16:58   ` Bowers, AndrewX
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 11/13] i40e: Cleanup the code with respect to restarting autoneg Joshua Hay
2015-12-17 17:00   ` Bowers, AndrewX
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 12/13] i40e: update features with right offload Joshua Hay
2015-12-10 18:46   ` Jesse Brandeburg
2015-12-09 23:50 ` [Intel-wired-lan] [next PATCH S23 13/13] i40e: bump version to 1.4.10 Joshua Hay
2015-12-17 17:09   ` Bowers, AndrewX

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.