All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates
@ 2015-07-23 20:54 Catherine Sullivan
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 01/15] i40e/i40evf: fix up type clash in i40e_aq_rc_to_posix conversion Catherine Sullivan
                   ` (14 more replies)
  0 siblings, 15 replies; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

Anjali strips VEB stats if they are disabled in HW.

Greg fixes a port VLAN configuration bug and removes a useless message.

Jesse fixes a tx hang workaround, adds a counter for drops in the netstat
interface, refactors the interrupt enable, adds a warning on a double free,
and tightens up reset polling.

Mitch modifies code to use the qos field consistently

Shannon fixes up a type clash in i40e_aq_rc_to_posix conversion, fixes up
a padding issue in get_cee_dcb_cfg_v1_resp, renames a variable to prevent
misunderstandings, limits debugfs io ops, and adds a new device id.

 drivers/net/ethernet/intel/i40e/i40e.h             |   4 +-
 drivers/net/ethernet/intel/i40e/i40e_adminq.h      |   9 +-
 drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h  |  13 ++-
 drivers/net/ethernet/intel/i40e/i40e_common.c      |   1 +
 drivers/net/ethernet/intel/i40e/i40e_debugfs.c     |  12 +--
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c     |  10 +-
 drivers/net/ethernet/intel/i40e/i40e_main.c        |  42 ++++----
 drivers/net/ethernet/intel/i40e/i40e_nvm.c         | 114 ++++++++++-----------
 drivers/net/ethernet/intel/i40e/i40e_txrx.c        |  13 +--
 drivers/net/ethernet/intel/i40e/i40e_type.h        |   1 +
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c |   9 +-
 drivers/net/ethernet/intel/i40evf/i40e_adminq.h    |   9 +-
 drivers/net/ethernet/intel/i40evf/i40e_common.c    |   1 +
 drivers/net/ethernet/intel/i40evf/i40e_txrx.c      |   3 +-
 drivers/net/ethernet/intel/i40evf/i40e_type.h      |   1 +
 drivers/net/ethernet/intel/i40evf/i40evf_main.c    |   6 +-
 16 files changed, 137 insertions(+), 111 deletions(-)

-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 01/15] i40e/i40evf: fix up type clash in i40e_aq_rc_to_posix conversion
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 20:33   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 02/15] i40e: Fix a port VLAN configuration bug Catherine Sullivan
                   ` (13 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

The error code sent into i40e_aq_rc_to_posix() are signed values, so we
really need to treat them as such.

Reported-by: Helin Zhang <helin.zhang@intel.com>
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Change-ID: I3d1ae0ee9ae0b1b6f5fc424f8b8cc58b0ea93203
---
 drivers/net/ethernet/intel/i40e/i40e_adminq.h   | 9 ++++++---
 drivers/net/ethernet/intel/i40evf/i40e_adminq.h | 9 ++++++---
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq.h b/drivers/net/ethernet/intel/i40e/i40e_adminq.h
index 28e519a..299e3d3 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_adminq.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_adminq.h
@@ -108,9 +108,10 @@ struct i40e_adminq_info {
 
 /**
  * i40e_aq_rc_to_posix - convert errors to user-land codes
- * aq_rc: AdminQ error code to convert
+ * aq_ret: AdminQ handler error code can override aq_rc
+ * aq_rc: AdminQ firmware error code to convert
  **/
-static inline int i40e_aq_rc_to_posix(u32 aq_ret, u16 aq_rc)
+static inline int i40e_aq_rc_to_posix(int aq_ret, int aq_rc)
 {
 	int aq_to_posix[] = {
 		0,           /* I40E_AQ_RC_OK */
@@ -142,8 +143,10 @@ static inline int i40e_aq_rc_to_posix(u32 aq_ret, u16 aq_rc)
 	if (aq_ret == I40E_ERR_ADMIN_QUEUE_TIMEOUT)
 		return -EAGAIN;
 
-	if (aq_rc >= ARRAY_SIZE(aq_to_posix))
+	if (aq_rc >= (sizeof(aq_to_posix) / sizeof((aq_to_posix)[0])) ||
+	    aq_rc < 0)
 		return -ERANGE;
+
 	return aq_to_posix[aq_rc];
 }
 
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_adminq.h b/drivers/net/ethernet/intel/i40evf/i40e_adminq.h
index ef43d68..c4efa6b 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_adminq.h
+++ b/drivers/net/ethernet/intel/i40evf/i40e_adminq.h
@@ -108,9 +108,10 @@ struct i40e_adminq_info {
 
 /**
  * i40e_aq_rc_to_posix - convert errors to user-land codes
- * aq_rc: AdminQ error code to convert
+ * aq_ret: AdminQ handler error code can override aq_rc
+ * aq_rc: AdminQ firmware error code to convert
  **/
-static inline int i40e_aq_rc_to_posix(u32 aq_ret, u16 aq_rc)
+static inline int i40e_aq_rc_to_posix(int aq_ret, int aq_rc)
 {
 	int aq_to_posix[] = {
 		0,           /* I40E_AQ_RC_OK */
@@ -142,8 +143,10 @@ static inline int i40e_aq_rc_to_posix(u32 aq_ret, u16 aq_rc)
 	if (aq_ret == I40E_ERR_ADMIN_QUEUE_TIMEOUT)
 		return -EAGAIN;
 
-	if (aq_rc >= ARRAY_SIZE(aq_to_posix))
+	if (aq_rc >= (sizeof(aq_to_posix) / sizeof((aq_to_posix)[0])) ||
+	    aq_rc < 0)
 		return -ERANGE;
+
 	return aq_to_posix[aq_rc];
 }
 
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 02/15] i40e: Fix a port VLAN configuration bug
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 01/15] i40e/i40evf: fix up type clash in i40e_aq_rc_to_posix conversion Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-29 20:34   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 03/15] i40e: fixup padding issue in get_cee_dcb_cfg_v1_resp Catherine Sullivan
                   ` (12 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

From: Greg Rose <gregory.v.rose@intel.com>

If a port VLAN is set for a given virtual function (VF) before the VF
driver is loaded then a configuration error results in which the port
VLAN is ignored when the VF driver is subsequently loaded.  This causes
the VF's MAC/VLAN filters to not use the correct VLAN filter.  This
patch ensures that the port VLAN filter is considered at the right time
during configuration of the VF's MAC/VLAN filters.

Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Change-ID: I28f404cbc21a4c6d70a7980b87c77f13f06685a4
---
 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 ccddddf..fe3bfb8 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -1186,7 +1186,7 @@ bool i40e_is_vsi_in_vlan(struct i40e_vsi *vsi)
 	 * so we have to go through all the list in order to make sure
 	 */
 	list_for_each_entry(f, &vsi->mac_filter_list, list) {
-		if (f->vlan >= 0)
+		if (f->vlan >= 0 || vsi->info.pvid)
 			return true;
 	}
 
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 03/15] i40e: fixup padding issue in get_cee_dcb_cfg_v1_resp
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 01/15] i40e/i40evf: fix up type clash in i40e_aq_rc_to_posix conversion Catherine Sullivan
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 02/15] i40e: Fix a port VLAN configuration bug Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 20:40   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 04/15] i40e: rename variable to prevent clash of understanding Catherine Sullivan
                   ` (11 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

The struct i40e_aqc_get_cee_dcb_cfg_v1_resp was originally defined with
word boundary layout issues, which most compilers deal with by silently
adding padding, making the actual struct larger than designed.
This patch adds an extra byte in fields reserved3 and reserved4 to directly
acknowledge that padding.

Because the struct doesn't actually change in size or layout, this doesn't
constitute a change in the API.

Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Change-ID: I53fa4741b73fa255621232a85fba000b0e223015
---
 drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h b/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
index 95d23bf..b840fab 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
@@ -2074,6 +2074,15 @@ I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_start);
 #define I40E_AQC_CEE_ISCSI_STATUS_MASK	(0x7 << I40E_AQC_CEE_ISCSI_STATUS_SHIFT)
 #define I40E_AQC_CEE_FIP_STATUS_SHIFT	0x10
 #define I40E_AQC_CEE_FIP_STATUS_MASK	(0x7 << I40E_AQC_CEE_FIP_STATUS_SHIFT)
+
+/* struct i40e_aqc_get_cee_dcb_cfg_v1_resp was originally defined with
+ * word boundary layout issues, which the Linux compilers silently deal
+ * with by adding padding, making the actual struct larger than designed.
+ * However, the FW compiler for the NIC is less lenient and complains
+ * about the struct.  Hence, the struct defined here has an extra byte in
+ * fields reserved3 and reserved4 to directly acknowledge that padding,
+ * and the new length is used in the length check macro.
+ */
 struct i40e_aqc_get_cee_dcb_cfg_v1_resp {
 	u8	reserved1;
 	u8	oper_num_tc;
@@ -2081,9 +2090,9 @@ struct i40e_aqc_get_cee_dcb_cfg_v1_resp {
 	u8	reserved2;
 	u8	oper_tc_bw[8];
 	u8	oper_pfc_en;
-	u8	reserved3;
+	u8	reserved3[2];
 	__le16	oper_app_prio;
-	u8	reserved4;
+	u8	reserved4[2];
 	__le16	tlv_status;
 };
 
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 04/15] i40e: rename variable to prevent clash of understanding
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (2 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 03/15] i40e: fixup padding issue in get_cee_dcb_cfg_v1_resp Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 20:44   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 05/15] i40e/i40evf: fix tx hang workaround code Catherine Sullivan
                   ` (10 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

This code returns something that becomes the errno value from ethtool and
passes around a pointer to an errno variable.  This patch changes the name
slightly to differentiate it from the actual user errno variable.

Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Change-ID: Idaa37845c069e66f4cea072e90f471bb2142454d
---
 drivers/net/ethernet/intel/i40e/i40e_nvm.c | 114 ++++++++++++++---------------
 1 file changed, 57 insertions(+), 57 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_nvm.c b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
index 9b83abc..3f2fec9 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_nvm.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
@@ -592,25 +592,25 @@ i40e_validate_nvm_checksum_exit:
 
 static i40e_status i40e_nvmupd_state_init(struct i40e_hw *hw,
 					  struct i40e_nvm_access *cmd,
-					  u8 *bytes, int *errno);
+					  u8 *bytes, int *perrno);
 static i40e_status i40e_nvmupd_state_reading(struct i40e_hw *hw,
 					     struct i40e_nvm_access *cmd,
-					     u8 *bytes, int *errno);
+					     u8 *bytes, int *perrno);
 static i40e_status i40e_nvmupd_state_writing(struct i40e_hw *hw,
 					     struct i40e_nvm_access *cmd,
 					     u8 *bytes, int *errno);
 static enum i40e_nvmupd_cmd i40e_nvmupd_validate_command(struct i40e_hw *hw,
 						struct i40e_nvm_access *cmd,
-						int *errno);
+						int *perrno);
 static i40e_status i40e_nvmupd_nvm_erase(struct i40e_hw *hw,
 					 struct i40e_nvm_access *cmd,
-					 int *errno);
+					 int *perrno);
 static i40e_status i40e_nvmupd_nvm_write(struct i40e_hw *hw,
 					 struct i40e_nvm_access *cmd,
-					 u8 *bytes, int *errno);
+					 u8 *bytes, int *perrno);
 static i40e_status i40e_nvmupd_nvm_read(struct i40e_hw *hw,
 					struct i40e_nvm_access *cmd,
-					u8 *bytes, int *errno);
+					u8 *bytes, int *perrno);
 static inline u8 i40e_nvmupd_get_module(u32 val)
 {
 	return (u8)(val & I40E_NVM_MOD_PNT_MASK);
@@ -641,30 +641,30 @@ static char *i40e_nvm_update_state_str[] = {
  * @hw: pointer to hardware structure
  * @cmd: pointer to nvm update command
  * @bytes: pointer to the data buffer
- * @errno: pointer to return error code
+ * @perrno: pointer to return error code
  *
  * Dispatches command depending on what update state is current
  **/
 i40e_status i40e_nvmupd_command(struct i40e_hw *hw,
 				struct i40e_nvm_access *cmd,
-				u8 *bytes, int *errno)
+				u8 *bytes, int *perrno)
 {
 	i40e_status status;
 
 	/* assume success */
-	*errno = 0;
+	*perrno = 0;
 
 	switch (hw->nvmupd_state) {
 	case I40E_NVMUPD_STATE_INIT:
-		status = i40e_nvmupd_state_init(hw, cmd, bytes, errno);
+		status = i40e_nvmupd_state_init(hw, cmd, bytes, perrno);
 		break;
 
 	case I40E_NVMUPD_STATE_READING:
-		status = i40e_nvmupd_state_reading(hw, cmd, bytes, errno);
+		status = i40e_nvmupd_state_reading(hw, cmd, bytes, perrno);
 		break;
 
 	case I40E_NVMUPD_STATE_WRITING:
-		status = i40e_nvmupd_state_writing(hw, cmd, bytes, errno);
+		status = i40e_nvmupd_state_writing(hw, cmd, bytes, perrno);
 		break;
 
 	default:
@@ -672,7 +672,7 @@ i40e_status i40e_nvmupd_command(struct i40e_hw *hw,
 		i40e_debug(hw, I40E_DEBUG_NVM,
 			   "NVMUPD: no such state %d\n", hw->nvmupd_state);
 		status = I40E_NOT_SUPPORTED;
-		*errno = -ESRCH;
+		*perrno = -ESRCH;
 		break;
 	}
 	return status;
@@ -683,28 +683,28 @@ i40e_status i40e_nvmupd_command(struct i40e_hw *hw,
  * @hw: pointer to hardware structure
  * @cmd: pointer to nvm update command buffer
  * @bytes: pointer to the data buffer
- * @errno: pointer to return error code
+ * @perrno: pointer to return error code
  *
  * Process legitimate commands of the Init state and conditionally set next
  * state. Reject all other commands.
  **/
 static i40e_status i40e_nvmupd_state_init(struct i40e_hw *hw,
 					  struct i40e_nvm_access *cmd,
-					  u8 *bytes, int *errno)
+					  u8 *bytes, int *perrno)
 {
 	i40e_status status = 0;
 	enum i40e_nvmupd_cmd upd_cmd;
 
-	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, errno);
+	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, perrno);
 
 	switch (upd_cmd) {
 	case I40E_NVMUPD_READ_SA:
 		status = i40e_acquire_nvm(hw, I40E_RESOURCE_READ);
 		if (status) {
-			*errno = i40e_aq_rc_to_posix(status,
+			*perrno = i40e_aq_rc_to_posix(status,
 						     hw->aq.asq_last_status);
 		} else {
-			status = i40e_nvmupd_nvm_read(hw, cmd, bytes, errno);
+			status = i40e_nvmupd_nvm_read(hw, cmd, bytes, perrno);
 			i40e_release_nvm(hw);
 		}
 		break;
@@ -712,10 +712,10 @@ static i40e_status i40e_nvmupd_state_init(struct i40e_hw *hw,
 	case I40E_NVMUPD_READ_SNT:
 		status = i40e_acquire_nvm(hw, I40E_RESOURCE_READ);
 		if (status) {
-			*errno = i40e_aq_rc_to_posix(status,
+			*perrno = i40e_aq_rc_to_posix(status,
 						     hw->aq.asq_last_status);
 		} else {
-			status = i40e_nvmupd_nvm_read(hw, cmd, bytes, errno);
+			status = i40e_nvmupd_nvm_read(hw, cmd, bytes, perrno);
 			if (status)
 				i40e_release_nvm(hw);
 			else
@@ -726,10 +726,10 @@ static i40e_status i40e_nvmupd_state_init(struct i40e_hw *hw,
 	case I40E_NVMUPD_WRITE_ERA:
 		status = i40e_acquire_nvm(hw, I40E_RESOURCE_WRITE);
 		if (status) {
-			*errno = i40e_aq_rc_to_posix(status,
+			*perrno = i40e_aq_rc_to_posix(status,
 						     hw->aq.asq_last_status);
 		} else {
-			status = i40e_nvmupd_nvm_erase(hw, cmd, errno);
+			status = i40e_nvmupd_nvm_erase(hw, cmd, perrno);
 			if (status)
 				i40e_release_nvm(hw);
 			else
@@ -740,10 +740,10 @@ static i40e_status i40e_nvmupd_state_init(struct i40e_hw *hw,
 	case I40E_NVMUPD_WRITE_SA:
 		status = i40e_acquire_nvm(hw, I40E_RESOURCE_WRITE);
 		if (status) {
-			*errno = i40e_aq_rc_to_posix(status,
+			*perrno = i40e_aq_rc_to_posix(status,
 						     hw->aq.asq_last_status);
 		} else {
-			status = i40e_nvmupd_nvm_write(hw, cmd, bytes, errno);
+			status = i40e_nvmupd_nvm_write(hw, cmd, bytes, perrno);
 			if (status)
 				i40e_release_nvm(hw);
 			else
@@ -754,10 +754,10 @@ static i40e_status i40e_nvmupd_state_init(struct i40e_hw *hw,
 	case I40E_NVMUPD_WRITE_SNT:
 		status = i40e_acquire_nvm(hw, I40E_RESOURCE_WRITE);
 		if (status) {
-			*errno = i40e_aq_rc_to_posix(status,
+			*perrno = i40e_aq_rc_to_posix(status,
 						     hw->aq.asq_last_status);
 		} else {
-			status = i40e_nvmupd_nvm_write(hw, cmd, bytes, errno);
+			status = i40e_nvmupd_nvm_write(hw, cmd, bytes, perrno);
 			if (status)
 				i40e_release_nvm(hw);
 			else
@@ -768,12 +768,12 @@ static i40e_status i40e_nvmupd_state_init(struct i40e_hw *hw,
 	case I40E_NVMUPD_CSUM_SA:
 		status = i40e_acquire_nvm(hw, I40E_RESOURCE_WRITE);
 		if (status) {
-			*errno = i40e_aq_rc_to_posix(status,
+			*perrno = i40e_aq_rc_to_posix(status,
 						     hw->aq.asq_last_status);
 		} else {
 			status = i40e_update_nvm_checksum(hw);
 			if (status) {
-				*errno = hw->aq.asq_last_status ?
+				*perrno = hw->aq.asq_last_status ?
 				   i40e_aq_rc_to_posix(status,
 						       hw->aq.asq_last_status) :
 				   -EIO;
@@ -789,7 +789,7 @@ static i40e_status i40e_nvmupd_state_init(struct i40e_hw *hw,
 			   "NVMUPD: bad cmd %s in init state\n",
 			   i40e_nvm_update_state_str[upd_cmd]);
 		status = I40E_ERR_NVM;
-		*errno = -ESRCH;
+		*perrno = -ESRCH;
 		break;
 	}
 	return status;
@@ -800,28 +800,28 @@ static i40e_status i40e_nvmupd_state_init(struct i40e_hw *hw,
  * @hw: pointer to hardware structure
  * @cmd: pointer to nvm update command buffer
  * @bytes: pointer to the data buffer
- * @errno: pointer to return error code
+ * @perrno: pointer to return error code
  *
  * NVM ownership is already held.  Process legitimate commands and set any
  * change in state; reject all other commands.
  **/
 static i40e_status i40e_nvmupd_state_reading(struct i40e_hw *hw,
 					     struct i40e_nvm_access *cmd,
-					     u8 *bytes, int *errno)
+					     u8 *bytes, int *perrno)
 {
 	i40e_status status;
 	enum i40e_nvmupd_cmd upd_cmd;
 
-	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, errno);
+	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, perrno);
 
 	switch (upd_cmd) {
 	case I40E_NVMUPD_READ_SA:
 	case I40E_NVMUPD_READ_CON:
-		status = i40e_nvmupd_nvm_read(hw, cmd, bytes, errno);
+		status = i40e_nvmupd_nvm_read(hw, cmd, bytes, perrno);
 		break;
 
 	case I40E_NVMUPD_READ_LCB:
-		status = i40e_nvmupd_nvm_read(hw, cmd, bytes, errno);
+		status = i40e_nvmupd_nvm_read(hw, cmd, bytes, perrno);
 		i40e_release_nvm(hw);
 		hw->nvmupd_state = I40E_NVMUPD_STATE_INIT;
 		break;
@@ -831,7 +831,7 @@ static i40e_status i40e_nvmupd_state_reading(struct i40e_hw *hw,
 			   "NVMUPD: bad cmd %s in reading state.\n",
 			   i40e_nvm_update_state_str[upd_cmd]);
 		status = I40E_NOT_SUPPORTED;
-		*errno = -ESRCH;
+		*perrno = -ESRCH;
 		break;
 	}
 	return status;
@@ -842,29 +842,29 @@ static i40e_status i40e_nvmupd_state_reading(struct i40e_hw *hw,
  * @hw: pointer to hardware structure
  * @cmd: pointer to nvm update command buffer
  * @bytes: pointer to the data buffer
- * @errno: pointer to return error code
+ * @perrno: pointer to return error code
  *
  * NVM ownership is already held.  Process legitimate commands and set any
  * change in state; reject all other commands
  **/
 static i40e_status i40e_nvmupd_state_writing(struct i40e_hw *hw,
 					     struct i40e_nvm_access *cmd,
-					     u8 *bytes, int *errno)
+					     u8 *bytes, int *perrno)
 {
 	i40e_status status;
 	enum i40e_nvmupd_cmd upd_cmd;
 	bool retry_attempt = false;
 
-	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, errno);
+	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, perrno);
 
 retry:
 	switch (upd_cmd) {
 	case I40E_NVMUPD_WRITE_CON:
-		status = i40e_nvmupd_nvm_write(hw, cmd, bytes, errno);
+		status = i40e_nvmupd_nvm_write(hw, cmd, bytes, perrno);
 		break;
 
 	case I40E_NVMUPD_WRITE_LCB:
-		status = i40e_nvmupd_nvm_write(hw, cmd, bytes, errno);
+		status = i40e_nvmupd_nvm_write(hw, cmd, bytes, perrno);
 		if (!status)
 			hw->aq.nvm_release_on_done = true;
 		hw->nvmupd_state = I40E_NVMUPD_STATE_INIT;
@@ -873,7 +873,7 @@ retry:
 	case I40E_NVMUPD_CSUM_CON:
 		status = i40e_update_nvm_checksum(hw);
 		if (status) {
-			*errno = hw->aq.asq_last_status ?
+			*perrno = hw->aq.asq_last_status ?
 				   i40e_aq_rc_to_posix(status,
 						       hw->aq.asq_last_status) :
 				   -EIO;
@@ -884,7 +884,7 @@ retry:
 	case I40E_NVMUPD_CSUM_LCB:
 		status = i40e_update_nvm_checksum(hw);
 		if (status)
-			*errno = hw->aq.asq_last_status ?
+			*perrno = hw->aq.asq_last_status ?
 				   i40e_aq_rc_to_posix(status,
 						       hw->aq.asq_last_status) :
 				   -EIO;
@@ -898,7 +898,7 @@ retry:
 			   "NVMUPD: bad cmd %s in writing state.\n",
 			   i40e_nvm_update_state_str[upd_cmd]);
 		status = I40E_NOT_SUPPORTED;
-		*errno = -ESRCH;
+		*perrno = -ESRCH;
 		break;
 	}
 
@@ -941,13 +941,13 @@ retry:
  * i40e_nvmupd_validate_command - Validate given command
  * @hw: pointer to hardware structure
  * @cmd: pointer to nvm update command buffer
- * @errno: pointer to return error code
+ * @perrno: pointer to return error code
  *
  * Return one of the valid command types or I40E_NVMUPD_INVALID
  **/
 static enum i40e_nvmupd_cmd i40e_nvmupd_validate_command(struct i40e_hw *hw,
 						 struct i40e_nvm_access *cmd,
-						 int *errno)
+						 int *perrno)
 {
 	enum i40e_nvmupd_cmd upd_cmd;
 	u8 transaction;
@@ -963,7 +963,7 @@ static enum i40e_nvmupd_cmd i40e_nvmupd_validate_command(struct i40e_hw *hw,
 		i40e_debug(hw, I40E_DEBUG_NVM,
 			   "i40e_nvmupd_validate_command data_size %d\n",
 			   cmd->data_size);
-		*errno = -EFAULT;
+		*perrno = -EFAULT;
 		return I40E_NVMUPD_INVALID;
 	}
 
@@ -1020,10 +1020,10 @@ static enum i40e_nvmupd_cmd i40e_nvmupd_validate_command(struct i40e_hw *hw,
 		   hw->aq.nvm_release_on_done);
 
 	if (upd_cmd == I40E_NVMUPD_INVALID) {
-		*errno = -EFAULT;
+		*perrno = -EFAULT;
 		i40e_debug(hw, I40E_DEBUG_NVM,
 			   "i40e_nvmupd_validate_command returns %d errno %d\n",
-			   upd_cmd, *errno);
+			   upd_cmd, *perrno);
 	}
 	return upd_cmd;
 }
@@ -1033,13 +1033,13 @@ static enum i40e_nvmupd_cmd i40e_nvmupd_validate_command(struct i40e_hw *hw,
  * @hw: pointer to hardware structure
  * @cmd: pointer to nvm update command buffer
  * @bytes: pointer to the data buffer
- * @errno: pointer to return error code
+ * @perrno: pointer to return error code
  *
  * cmd structure contains identifiers and data buffer
  **/
 static i40e_status i40e_nvmupd_nvm_read(struct i40e_hw *hw,
 					struct i40e_nvm_access *cmd,
-					u8 *bytes, int *errno)
+					u8 *bytes, int *perrno)
 {
 	i40e_status status;
 	u8 module, transaction;
@@ -1058,7 +1058,7 @@ static i40e_status i40e_nvmupd_nvm_read(struct i40e_hw *hw,
 		i40e_debug(hw, I40E_DEBUG_NVM,
 			   "i40e_nvmupd_nvm_read status %d aq %d\n",
 			   status, hw->aq.asq_last_status);
-		*errno = i40e_aq_rc_to_posix(status, hw->aq.asq_last_status);
+		*perrno = i40e_aq_rc_to_posix(status, hw->aq.asq_last_status);
 	}
 
 	return status;
@@ -1068,13 +1068,13 @@ static i40e_status i40e_nvmupd_nvm_read(struct i40e_hw *hw,
  * i40e_nvmupd_nvm_erase - Erase an NVM module
  * @hw: pointer to hardware structure
  * @cmd: pointer to nvm update command buffer
- * @errno: pointer to return error code
+ * @perrno: pointer to return error code
  *
  * module, offset, data_size and data are in cmd structure
  **/
 static i40e_status i40e_nvmupd_nvm_erase(struct i40e_hw *hw,
 					 struct i40e_nvm_access *cmd,
-					 int *errno)
+					 int *perrno)
 {
 	i40e_status status = 0;
 	u8 module, transaction;
@@ -1092,7 +1092,7 @@ static i40e_status i40e_nvmupd_nvm_erase(struct i40e_hw *hw,
 		i40e_debug(hw, I40E_DEBUG_NVM,
 			   "i40e_nvmupd_nvm_erase status %d aq %d\n",
 			   status, hw->aq.asq_last_status);
-		*errno = i40e_aq_rc_to_posix(status, hw->aq.asq_last_status);
+		*perrno = i40e_aq_rc_to_posix(status, hw->aq.asq_last_status);
 	}
 
 	return status;
@@ -1103,13 +1103,13 @@ static i40e_status i40e_nvmupd_nvm_erase(struct i40e_hw *hw,
  * @hw: pointer to hardware structure
  * @cmd: pointer to nvm update command buffer
  * @bytes: pointer to the data buffer
- * @errno: pointer to return error code
+ * @perrno: pointer to return error code
  *
  * module, offset, data_size and data are in cmd structure
  **/
 static i40e_status i40e_nvmupd_nvm_write(struct i40e_hw *hw,
 					 struct i40e_nvm_access *cmd,
-					 u8 *bytes, int *errno)
+					 u8 *bytes, int *perrno)
 {
 	i40e_status status = 0;
 	u8 module, transaction;
@@ -1128,7 +1128,7 @@ static i40e_status i40e_nvmupd_nvm_write(struct i40e_hw *hw,
 		i40e_debug(hw, I40E_DEBUG_NVM,
 			   "i40e_nvmupd_nvm_write status %d aq %d\n",
 			   status, hw->aq.asq_last_status);
-		*errno = i40e_aq_rc_to_posix(status, hw->aq.asq_last_status);
+		*perrno = i40e_aq_rc_to_posix(status, hw->aq.asq_last_status);
 	}
 
 	return status;
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 05/15] i40e/i40evf: fix tx hang workaround code
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (3 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 04/15] i40e: rename variable to prevent clash of understanding Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 20:49   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 06/15] i40e: count drops in netstat interface Catherine Sullivan
                   ` (9 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

The arm writeback (arm_wb) code is used for kicking the tx ring to
make sure any pending work is completed even if interrupts are
disabled. It was running when it didn't need to, and not clearing
the ring->arm_wb state after it was set.  This caused tx hangs
to still occur occasionally when there really was no hang.
Fix this by resetting the variable right after it was used.

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

diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 738aca6..8a3d596 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -793,8 +793,6 @@ static bool i40e_clean_tx_irq(struct i40e_ring *tx_ring, int budget)
 	    !test_bit(__I40E_DOWN, &tx_ring->vsi->state) &&
 	    (I40E_DESC_UNUSED(tx_ring) != tx_ring->count))
 		tx_ring->arm_wb = true;
-	else
-		tx_ring->arm_wb = false;
 
 	if (check_for_tx_hang(tx_ring) && i40e_check_tx_hang(tx_ring)) {
 		/* schedule immediate reset if we believe we hung */
@@ -1921,6 +1919,7 @@ int i40e_napi_poll(struct napi_struct *napi, int budget)
 	i40e_for_each_ring(ring, q_vector->tx) {
 		clean_complete &= i40e_clean_tx_irq(ring, vsi->work_limit);
 		arm_wb |= ring->arm_wb;
+		ring->arm_wb = false;
 	}
 
 	/* We attempt to distribute budget to each Rx queue fairly, but don't
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
index a584e21..6c353b2 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
@@ -309,8 +309,6 @@ static bool i40e_clean_tx_irq(struct i40e_ring *tx_ring, int budget)
 	    !test_bit(__I40E_DOWN, &tx_ring->vsi->state) &&
 	    (I40E_DESC_UNUSED(tx_ring) != tx_ring->count))
 		tx_ring->arm_wb = true;
-	else
-		tx_ring->arm_wb = false;
 
 	if (check_for_tx_hang(tx_ring) && i40e_check_tx_hang(tx_ring)) {
 		/* schedule immediate reset if we believe we hung */
@@ -1367,6 +1365,7 @@ int i40evf_napi_poll(struct napi_struct *napi, int budget)
 	i40e_for_each_ring(ring, q_vector->tx) {
 		clean_complete &= i40e_clean_tx_irq(ring, vsi->work_limit);
 		arm_wb |= ring->arm_wb;
+		ring->arm_wb = false;
 	}
 
 	/* We attempt to distribute budget to each Rx queue fairly, but don't
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 06/15] i40e: count drops in netstat interface
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (4 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 05/15] i40e/i40evf: fix tx hang workaround code Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 20:51   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 07/15] i40e: use qos field consistently Catherine Sullivan
                   ` (8 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

The i40e rx_dropped counter was not showing up in netstat -i.
Add the right counter to be updated with the stats.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Change-ID: I4dd552e9995836099184f9d9a08e90edb591155f
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index fe3bfb8..a6a5f45 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -361,6 +361,7 @@ static struct rtnl_link_stats64 *i40e_get_netdev_stats_struct(
 	stats->tx_errors	= vsi_stats->tx_errors;
 	stats->tx_dropped	= vsi_stats->tx_dropped;
 	stats->rx_errors	= vsi_stats->rx_errors;
+	stats->rx_dropped	= vsi_stats->rx_dropped;
 	stats->rx_crc_errors	= vsi_stats->rx_crc_errors;
 	stats->rx_length_errors	= vsi_stats->rx_length_errors;
 
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 07/15] i40e: use qos field consistently
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (5 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 06/15] i40e: count drops in netstat interface Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 20:55   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 08/15] i40e: limit debugfs io ops Catherine Sullivan
                   ` (7 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

In i40e_ndo_set_vf_port_vlan, we were using the qos value
inconsistently, sometimes shifting it, sometimes not. Do the shift-and-
or operation correctly, once, and use the result consistently everywhere
    in the function.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Change-ID: I46f062f3edc90a8a017ecec9137f4d1ab0ab9e41
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index d99c116..f60cd43 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -2089,6 +2089,7 @@ error_param:
 int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
 			      int vf_id, u16 vlan_id, u8 qos)
 {
+	u16 vlanprio = vlan_id | (qos << I40E_VLAN_PRIORITY_SHIFT);
 	struct i40e_netdev_priv *np = netdev_priv(netdev);
 	struct i40e_pf *pf = np->vsi->back;
 	struct i40e_vsi *vsi;
@@ -2116,8 +2117,7 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
 		goto error_pvid;
 	}
 
-	if (le16_to_cpu(vsi->info.pvid) ==
-	    (vlan_id | (qos << I40E_VLAN_PRIORITY_SHIFT)))
+	if (le16_to_cpu(vsi->info.pvid) == vlanprio)
 		/* duplicate request, so just return success */
 		goto error_pvid;
 
@@ -2141,7 +2141,7 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
 	 * MAC addresses deleted.
 	 */
 	if ((!(vlan_id || qos) ||
-	    (vlan_id | qos) != le16_to_cpu(vsi->info.pvid)) &&
+	    vlanprio != le16_to_cpu(vsi->info.pvid)) &&
 	    vsi->info.pvid)
 		ret = i40e_vsi_add_vlan(vsi, I40E_VLAN_ANY);
 
@@ -2156,8 +2156,7 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
 		}
 	}
 	if (vlan_id || qos)
-		ret = i40e_vsi_add_pvid(vsi,
-				vlan_id | (qos << I40E_VLAN_PRIORITY_SHIFT));
+		ret = i40e_vsi_add_pvid(vsi, vlanprio);
 	else
 		i40e_vsi_remove_pvid(vsi);
 
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 08/15] i40e: limit debugfs io ops
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (6 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 07/15] i40e: use qos field consistently Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 21:09   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 09/15] i40e: Remove useless message Catherine Sullivan
                   ` (6 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

Don't let the debugfs register read and write commands try to access
outside of the ioremapped space.  While we're at it, remove the use of
a misleading constant.

Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Change-ID: Ifce2893e232c65c7a76c23532c658f298218a81b
---
 drivers/net/ethernet/intel/i40e/i40e.h         |  3 ++-
 drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 12 ++++++------
 drivers/net/ethernet/intel/i40e/i40e_main.c    |  9 ++++-----
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index c452527..d821c99 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -71,7 +71,6 @@
 #define I40E_MAX_VEB          16
 
 #define I40E_MAX_NUM_DESCRIPTORS      4096
-#define I40E_MAX_REGISTER     0x800000
 #define I40E_MAX_CSR_SPACE (4 * 1024 * 1024 - 64 * 1024)
 #define I40E_DEFAULT_NUM_DESCRIPTORS  512
 #define I40E_REQ_DESCRIPTOR_MULTIPLE  32
@@ -408,6 +407,8 @@ struct i40e_pf {
 	/* These are only valid in NPAR modes */
 	u32 npar_max_bw;
 	u32 npar_min_bw;
+
+	u32 ioremap_len;
 };
 
 struct i40e_mac_filter {
diff --git a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
index d7c15d1..3671611 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
@@ -1495,9 +1495,9 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
 		}
 
 		/* check the range on address */
-		if (address >= I40E_MAX_REGISTER) {
-			dev_info(&pf->pdev->dev, "read reg address 0x%08x too large\n",
-				 address);
+		if (address > (pf->ioremap_len - sizeof(u32))) {
+			dev_info(&pf->pdev->dev, "read reg address 0x%08x too large, max=0x%08lx\n",
+				 address, (pf->ioremap_len - sizeof(u32)));
 			goto command_write_done;
 		}
 
@@ -1514,9 +1514,9 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
 		}
 
 		/* check the range on address */
-		if (address >= I40E_MAX_REGISTER) {
-			dev_info(&pf->pdev->dev, "write reg address 0x%08x too large\n",
-				 address);
+		if (address > (pf->ioremap_len - sizeof(u32))) {
+			dev_info(&pf->pdev->dev, "write reg address 0x%08x too large, max=0x%08lx\n",
+				 address, (pf->ioremap_len - sizeof(u32)));
 			goto command_write_done;
 		}
 		wr32(&pf->hw, address, value);
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index a6a5f45..b267e7a 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -9792,7 +9792,6 @@ static void i40e_print_features(struct i40e_pf *pf)
 static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
 	struct i40e_aq_get_phy_abilities_resp abilities;
-	unsigned long ioremap_len;
 	struct i40e_pf *pf;
 	struct i40e_hw *hw;
 	static u16 pfs_found;
@@ -9845,15 +9844,15 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	hw = &pf->hw;
 	hw->back = pf;
 
-	ioremap_len = min_t(unsigned long, pci_resource_len(pdev, 0),
-			    I40E_MAX_CSR_SPACE);
+	pf->ioremap_len = min_t(int, pci_resource_len(pdev, 0),
+				I40E_MAX_CSR_SPACE);
 
-	hw->hw_addr = ioremap(pci_resource_start(pdev, 0), ioremap_len);
+	hw->hw_addr = ioremap(pci_resource_start(pdev, 0), pf->ioremap_len);
 	if (!hw->hw_addr) {
 		err = -EIO;
 		dev_info(&pdev->dev, "ioremap(0x%04x, 0x%04x) failed: 0x%x\n",
 			 (unsigned int)pci_resource_start(pdev, 0),
-			 (unsigned int)pci_resource_len(pdev, 0), err);
+			 pf->ioremap_len, err);
 		goto err_ioremap;
 	}
 	hw->vendor_id = pdev->vendor;
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 09/15] i40e: Remove useless message
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (7 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 08/15] i40e: limit debugfs io ops Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 21:11   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 10/15] i40e/i40evf: add new device id 1588 Catherine Sullivan
                   ` (5 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

From: Greg Rose <gregory.v.rose@intel.com>

Remove a useless message that blathers on whenever a vxlan port is deleted.

Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Change-ID: If63fb8cf38e56cf433b68e498f11389de51919ba
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index b267e7a..a43062e 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -8028,9 +8028,6 @@ static void i40e_del_vxlan_port(struct net_device *netdev,
 		pf->vxlan_ports[idx] = 0;
 		pf->pending_vxlan_bitmap |= BIT_ULL(idx);
 		pf->flags |= I40E_FLAG_VXLAN_FILTER_SYNC;
-
-		dev_info(&pf->pdev->dev, "deleting vxlan port %d\n",
-			 ntohs(port));
 	} else {
 		netdev_warn(netdev, "vxlan port %d was not found, not deleting\n",
 			    ntohs(port));
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 10/15] i40e/i40evf: add new device id 1588
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (8 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 09/15] i40e: Remove useless message Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 21:14   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 11/15] i40e: Strip VEB stats if they are disabled in HW Catherine Sullivan
                   ` (4 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

Add new device id and support for another 20Gb device.

Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Change-ID: Ib1b61e5bb6201d84953f97cade39a6e3369c2cf2
---
 drivers/net/ethernet/intel/i40e/i40e_common.c   | 1 +
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c  | 1 +
 drivers/net/ethernet/intel/i40e/i40e_main.c     | 2 ++
 drivers/net/ethernet/intel/i40e/i40e_type.h     | 1 +
 drivers/net/ethernet/intel/i40evf/i40e_common.c | 1 +
 drivers/net/ethernet/intel/i40evf/i40e_type.h   | 1 +
 6 files changed, 7 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
index 114dc64..80c354c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
@@ -52,6 +52,7 @@ static i40e_status i40e_set_mac_type(struct i40e_hw *hw)
 		case I40E_DEV_ID_QSFP_C:
 		case I40E_DEV_ID_10G_BASE_T:
 		case I40E_DEV_ID_20G_KR2:
+		case I40E_DEV_ID_20G_KR2_A:
 			hw->mac.type = I40E_MAC_XL710;
 			break;
 		case I40E_DEV_ID_SFP_X722:
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index e972b5e..dd2b620 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -437,6 +437,7 @@ static void i40e_get_settings_link_down(struct i40e_hw *hw,
 			ecmd->advertising |= ADVERTISED_100baseT_Full;
 		break;
 	case I40E_DEV_ID_20G_KR2:
+	case I40E_DEV_ID_20G_KR2_A:
 		/* backplane 20G */
 		ecmd->supported = SUPPORTED_20000baseKR2_Full;
 		ecmd->advertising = ADVERTISED_20000baseKR2_Full;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index a43062e..4f0660f 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -80,6 +80,8 @@ static const struct pci_device_id i40e_pci_tbl[] = {
 	{PCI_VDEVICE(INTEL, I40E_DEV_ID_SFP_X722), 0},
 	{PCI_VDEVICE(INTEL, I40E_DEV_ID_1G_BASE_T_X722), 0},
 	{PCI_VDEVICE(INTEL, I40E_DEV_ID_10G_BASE_T_X722), 0},
+	{PCI_VDEVICE(INTEL, I40E_DEV_ID_20G_KR2), 0},
+	{PCI_VDEVICE(INTEL, I40E_DEV_ID_20G_KR2_A), 0},
 	/* required last entry */
 	{0, }
 };
diff --git a/drivers/net/ethernet/intel/i40e/i40e_type.h b/drivers/net/ethernet/intel/i40e/i40e_type.h
index 4842239..91d0b9e 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_type.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_type.h
@@ -45,6 +45,7 @@
 #define I40E_DEV_ID_QSFP_C		0x1585
 #define I40E_DEV_ID_10G_BASE_T		0x1586
 #define I40E_DEV_ID_20G_KR2		0x1587
+#define I40E_DEV_ID_20G_KR2_A		0x1588
 #define I40E_DEV_ID_VF			0x154C
 #define I40E_DEV_ID_VF_HV		0x1571
 #define I40E_DEV_ID_SFP_X722		0x37D0
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_common.c b/drivers/net/ethernet/intel/i40evf/i40e_common.c
index d45d0ae..1950db1 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40evf/i40e_common.c
@@ -52,6 +52,7 @@ i40e_status i40e_set_mac_type(struct i40e_hw *hw)
 		case I40E_DEV_ID_QSFP_C:
 		case I40E_DEV_ID_10G_BASE_T:
 		case I40E_DEV_ID_20G_KR2:
+		case I40E_DEV_ID_20G_KR2_A:
 			hw->mac.type = I40E_MAC_XL710;
 			break;
 		case I40E_DEV_ID_SFP_X722:
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_type.h b/drivers/net/ethernet/intel/i40evf/i40e_type.h
index 24a2693..ae9498c 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_type.h
+++ b/drivers/net/ethernet/intel/i40evf/i40e_type.h
@@ -45,6 +45,7 @@
 #define I40E_DEV_ID_QSFP_C		0x1585
 #define I40E_DEV_ID_10G_BASE_T		0x1586
 #define I40E_DEV_ID_20G_KR2		0x1587
+#define I40E_DEV_ID_20G_KR2_A		0x1588
 #define I40E_DEV_ID_VF			0x154C
 #define I40E_DEV_ID_VF_HV		0x1571
 #define I40E_DEV_ID_SFP_X722		0x37D0
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 11/15] i40e: Strip VEB stats if they are disabled in HW
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (9 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 10/15] i40e/i40evf: add new device id 1588 Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 21:17   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 12/15] i40e: refactor interrupt enable Catherine Sullivan
                   ` (3 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

Due to performance reasons, VEB stats have been disabled in the hw. This
patch adds code to check for that condition before accumulating these
stats.

Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Change-ID: I7d805669476fedabb073790403703798ae5d878e
---
 drivers/net/ethernet/intel/i40e/i40e.h         |  1 +
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c |  9 ++++++---
 drivers/net/ethernet/intel/i40e/i40e_main.c    | 13 +++++++++----
 3 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index d821c99..5a25c2c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -326,6 +326,7 @@ struct i40e_pf {
 #define I40E_FLAG_OUTER_UDP_CSUM_CAPABLE	BIT_ULL(33)
 #define I40E_FLAG_128_QP_RSS_CAPABLE		BIT_ULL(34)
 #define I40E_FLAG_WB_ON_ITR_CAPABLE		BIT_ULL(35)
+#define I40E_FLAG_VEB_STATS_ENABLED		BIT_ULL(37)
 #define I40E_FLAG_MULTIPLE_TCP_UDP_RSS_PCTYPE	BIT_ULL(38)
 #define I40E_FLAG_VEB_MODE_ENABLED		BIT_ULL(40)
 
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index dd2b620..1345de2 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -1264,7 +1264,8 @@ static int i40e_get_sset_count(struct net_device *netdev, int sset)
 		if (vsi == pf->vsi[pf->lan_vsi] && pf->hw.partition_id == 1) {
 			int len = I40E_PF_STATS_LEN(netdev);
 
-			if (pf->lan_veb != I40E_NO_VEB)
+			if ((pf->lan_veb != I40E_NO_VEB) &&
+			    (pf->flags & I40E_FLAG_VEB_STATS_ENABLED))
 				len += I40E_VEB_STATS_TOTAL;
 			return len;
 		} else {
@@ -1337,7 +1338,8 @@ static void i40e_get_ethtool_stats(struct net_device *netdev,
 	if (vsi != pf->vsi[pf->lan_vsi] || pf->hw.partition_id != 1)
 		return;
 
-	if (pf->lan_veb != I40E_NO_VEB) {
+	if ((pf->lan_veb != I40E_NO_VEB) &&
+	    (pf->flags & I40E_FLAG_VEB_STATS_ENABLED)) {
 		struct i40e_veb *veb = pf->veb[pf->lan_veb];
 		for (j = 0; j < I40E_VEB_STATS_LEN; j++) {
 			p = (char *)veb;
@@ -1410,7 +1412,8 @@ static void i40e_get_strings(struct net_device *netdev, u32 stringset,
 		if (vsi != pf->vsi[pf->lan_vsi] || pf->hw.partition_id != 1)
 			return;
 
-		if (pf->lan_veb != I40E_NO_VEB) {
+		if ((pf->lan_veb != I40E_NO_VEB) &&
+		    (pf->flags & I40E_FLAG_VEB_STATS_ENABLED)) {
 			for (i = 0; i < I40E_VEB_STATS_LEN; i++) {
 				snprintf(p, ETH_GSTRING_LEN, "veb.%s",
 					i40e_gstrings_veb_stats[i].stat_string);
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 4f0660f..464fba3 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -5761,10 +5761,12 @@ static void i40e_watchdog_subtask(struct i40e_pf *pf)
 		if (pf->vsi[i] && pf->vsi[i]->netdev)
 			i40e_update_stats(pf->vsi[i]);
 
-	/* Update the stats for the active switching components */
-	for (i = 0; i < I40E_MAX_VEB; i++)
-		if (pf->veb[i])
-			i40e_update_veb_stats(pf->veb[i]);
+	if (pf->flags & I40E_FLAG_VEB_STATS_ENABLED) {
+		/* Update the stats for the active switching components */
+		for (i = 0; i < I40E_MAX_VEB; i++)
+			if (pf->veb[i])
+				i40e_update_veb_stats(pf->veb[i]);
+	}
 
 	i40e_ptp_rx_hang(pf->vsi[pf->lan_vsi]);
 }
@@ -7851,6 +7853,9 @@ static int i40e_sw_init(struct i40e_pf *pf)
 	pf->lan_veb = I40E_NO_VEB;
 	pf->lan_vsi = I40E_NO_VSI;
 
+	/* By default FW has this off for performance reasons */
+	pf->flags &= ~I40E_FLAG_VEB_STATS_ENABLED;
+
 	/* set up queue assignment tracking */
 	size = sizeof(struct i40e_lump_tracking)
 		+ (sizeof(u16) * pf->hw.func_caps.num_tx_qp);
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 12/15] i40e: refactor interrupt enable
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (10 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 11/15] i40e: Strip VEB stats if they are disabled in HW Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 21:22   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 13/15] i40e: warn on double free Catherine Sullivan
                   ` (2 subsequent siblings)
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

The interrupt enable function was always making the caller add
the base_vector from the vsi struct which is already passed to
the function. Just collapse the math into the helper function.

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

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 464fba3..1681e7f 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -2960,7 +2960,7 @@ void i40e_irq_dynamic_enable_icr0(struct i40e_pf *pf)
 /**
  * i40e_irq_dynamic_enable - Enable default interrupt generation settings
  * @vsi: pointer to a vsi
- * @vector: enable a particular Hw Interrupt vector
+ * @vector: enable a particular Hw Interrupt vector, without base_vector
  **/
 void i40e_irq_dynamic_enable(struct i40e_vsi *vsi, int vector)
 {
@@ -2971,7 +2971,7 @@ void i40e_irq_dynamic_enable(struct i40e_vsi *vsi, int vector)
 	val = I40E_PFINT_DYN_CTLN_INTENA_MASK |
 	      I40E_PFINT_DYN_CTLN_CLEARPBA_MASK |
 	      (I40E_ITR_NONE << I40E_PFINT_DYN_CTLN_ITR_INDX_SHIFT);
-	wr32(hw, I40E_PFINT_DYN_CTLN(vector - 1), val);
+	wr32(hw, I40E_PFINT_DYN_CTLN(vector + vsi->base_vector - 1), val);
 	/* skip the flush */
 }
 
@@ -3114,8 +3114,7 @@ static int i40e_vsi_enable_irq(struct i40e_vsi *vsi)
 	int i;
 
 	if (pf->flags & I40E_FLAG_MSIX_ENABLED) {
-		for (i = vsi->base_vector;
-		     i < (vsi->num_q_vectors + vsi->base_vector); i++)
+		for (i = 0; i < vsi->num_q_vectors; i++)
 			i40e_irq_dynamic_enable(vsi, i);
 	} else {
 		i40e_irq_dynamic_enable_icr0(pf);
@@ -3347,8 +3346,7 @@ static bool i40e_clean_fdir_tx_irq(struct i40e_ring *tx_ring, int budget)
 	tx_ring->next_to_clean = i;
 
 	if (vsi->back->flags & I40E_FLAG_MSIX_ENABLED) {
-		i40e_irq_dynamic_enable(vsi,
-				tx_ring->q_vector->v_idx + vsi->base_vector);
+		i40e_irq_dynamic_enable(vsi, tx_ring->q_vector->v_idx);
 	}
 	return budget > 0;
 }
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 8a3d596..ce3f7cc 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -1860,8 +1860,7 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,
 		if (!test_bit(__I40E_DOWN, &vsi->state))
 			wr32(hw, I40E_PFINT_DYN_CTLN(vector - 1), val);
 	} else {
-		i40e_irq_dynamic_enable(vsi,
-					q_vector->v_idx + vsi->base_vector);
+		i40e_irq_dynamic_enable(vsi, q_vector->v_idx);
 	}
 	if (ITR_IS_DYNAMIC(vsi->tx_itr_setting)) {
 		old_itr = q_vector->tx.itr;
@@ -1883,8 +1882,7 @@ static inline void i40e_update_enable_itr(struct i40e_vsi *vsi,
 			wr32(hw, I40E_PFINT_DYN_CTLN(q_vector->v_idx +
 			      vsi->base_vector - 1), val);
 	} else {
-		i40e_irq_dynamic_enable(vsi,
-					q_vector->v_idx + vsi->base_vector);
+		i40e_irq_dynamic_enable(vsi, q_vector->v_idx);
 	}
 }
 
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 13/15] i40e: warn on double free
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (11 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 12/15] i40e: refactor interrupt enable Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 21:24   ` Bowers, AndrewX
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 14/15] i40evf: tighten up reset polling Catherine Sullivan
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 15/15] i40e/i40evf: Bump i40e to 1.3.12 and i40evf to 1.3.6 Catherine Sullivan
  14 siblings, 1 reply; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

Down was requesting queue disables, but then exited immediately without
waiting for the queues to actually disable. This could allow any
function called after i40evf_down to run immediately, including
i40evf_up, and causes a memory leak.

This issue has been fixed in a recent refactor of the reset code, but
add a couple WARN_ONs in the slow path to help us recognize if we
reintroduce this issue or if we missed any cases.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Change-ID: I27b6b5c9a79c1892f0ba453129f116bc32647dd0
---
 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index ce3f7cc..ca4d72b 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -1000,6 +1000,8 @@ int i40e_setup_tx_descriptors(struct i40e_ring *tx_ring)
 	if (!dev)
 		return -ENOMEM;
 
+	/* warn if we are about to overwrite the pointer */
+	WARN_ON(tx_ring->tx_bi);
 	bi_size = sizeof(struct i40e_tx_buffer) * tx_ring->count;
 	tx_ring->tx_bi = kzalloc(bi_size, GFP_KERNEL);
 	if (!tx_ring->tx_bi)
@@ -1160,6 +1162,8 @@ int i40e_setup_rx_descriptors(struct i40e_ring *rx_ring)
 	struct device *dev = rx_ring->dev;
 	int bi_size;
 
+	/* warn if we are about to overwrite the pointer */
+	WARN_ON(rx_ring->rx_bi);
 	bi_size = sizeof(struct i40e_rx_buffer) * rx_ring->count;
 	rx_ring->rx_bi = kzalloc(bi_size, GFP_KERNEL);
 	if (!rx_ring->rx_bi)
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 14/15] i40evf: tighten up reset polling
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (12 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 13/15] i40e: warn on double free Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 15/15] i40e/i40evf: Bump i40e to 1.3.12 and i40evf to 1.3.6 Catherine Sullivan
  14 siblings, 0 replies; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

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

Poll longer and more often for reset completion. This helps the driver
to recover more quickly and more reliably when a reset occurs.

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

diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index 4dccc0b..588cacf 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -1478,8 +1478,8 @@ restart_watchdog:
 	schedule_work(&adapter->adminq_task);
 }
 
-#define I40EVF_RESET_WAIT_MS 100
-#define I40EVF_RESET_WAIT_COUNT 200
+#define I40EVF_RESET_WAIT_MS 10
+#define I40EVF_RESET_WAIT_COUNT 500
 /**
  * i40evf_reset_task - Call-back task to handle hardware reset
  * @work: pointer to work_struct
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 15/15] i40e/i40evf: Bump i40e to 1.3.12 and i40evf to 1.3.6
  2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (13 preceding siblings ...)
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 14/15] i40evf: tighten up reset polling Catherine Sullivan
@ 2015-07-23 20:54 ` Catherine Sullivan
  2015-07-28 20:26   ` Bowers, AndrewX
  2015-07-28 21:25   ` Bowers, AndrewX
  14 siblings, 2 replies; 36+ messages in thread
From: Catherine Sullivan @ 2015-07-23 20:54 UTC (permalink / raw)
  To: intel-wired-lan

Bump.

Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Change-ID: Iaf6c969d620704b374584ff82d09922a4d57b025
---
 drivers/net/ethernet/intel/i40e/i40e_main.c     | 2 +-
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 1681e7f..aef0a4c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -40,7 +40,7 @@ static const char i40e_driver_string[] =
 
 #define DRV_VERSION_MAJOR 1
 #define DRV_VERSION_MINOR 3
-#define DRV_VERSION_BUILD 9
+#define DRV_VERSION_BUILD 12
 #define DRV_VERSION __stringify(DRV_VERSION_MAJOR) "." \
 	     __stringify(DRV_VERSION_MINOR) "." \
 	     __stringify(DRV_VERSION_BUILD)    DRV_KERN
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index 588cacf..177fd47 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -35,7 +35,7 @@ char i40evf_driver_name[] = "i40evf";
 static const char i40evf_driver_string[] =
 	"Intel(R) XL710/X710 Virtual Function Network Driver";
 
-#define DRV_VERSION "1.3.5"
+#define DRV_VERSION "1.3.6"
 const char i40evf_driver_version[] = DRV_VERSION;
 static const char i40evf_copyright[] =
 	"Copyright (c) 2013 - 2015 Intel Corporation.";
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S9 15/15] i40e/i40evf: Bump i40e to 1.3.12 and i40evf to 1.3.6
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 15/15] i40e/i40evf: Bump i40e to 1.3.12 and i40evf to 1.3.6 Catherine Sullivan
@ 2015-07-28 20:26   ` Bowers, AndrewX
  2015-07-28 21:25   ` Bowers, AndrewX
  1 sibling, 0 replies; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 20:26 UTC (permalink / raw)
  To: intel-wired-lan

Verified-by: Andrew Bowers <Andrewx.bowers@intel.com>
Present  in git log, code changes present in tree, drivers report correct versions through modinfo.

-----Original Message-----
From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On Behalf Of Catherine Sullivan
Sent: Thursday, July 23, 2015 1:55 PM
To: intel-wired-lan@lists.osuosl.org
Subject: [Intel-wired-lan] [next PATCH S9 15/15] i40e/i40evf: Bump i40e to 1.3.12 and i40evf to 1.3.6

Bump.

Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Change-ID: Iaf6c969d620704b374584ff82d09922a4d57b025
---
 drivers/net/ethernet/intel/i40e/i40e_main.c     | 2 +-
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 1681e7f..aef0a4c 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -40,7 +40,7 @@ static const char i40e_driver_string[] =
 
 #define DRV_VERSION_MAJOR 1
 #define DRV_VERSION_MINOR 3
-#define DRV_VERSION_BUILD 9
+#define DRV_VERSION_BUILD 12
 #define DRV_VERSION __stringify(DRV_VERSION_MAJOR) "." \
 	     __stringify(DRV_VERSION_MINOR) "." \
 	     __stringify(DRV_VERSION_BUILD)    DRV_KERN
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index 588cacf..177fd47 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -35,7 +35,7 @@ char i40evf_driver_name[] = "i40evf";  static const char i40evf_driver_string[] =
 	"Intel(R) XL710/X710 Virtual Function Network Driver";
 
-#define DRV_VERSION "1.3.5"
+#define DRV_VERSION "1.3.6"
 const char i40evf_driver_version[] = DRV_VERSION;  static const char i40evf_copyright[] =
 	"Copyright (c) 2013 - 2015 Intel Corporation.";
--
1.9.3

_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan at lists.osuosl.org
http://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* [Intel-wired-lan] [next PATCH S9 01/15] i40e/i40evf: fix up type clash in i40e_aq_rc_to_posix conversion
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 01/15] i40e/i40evf: fix up type clash in i40e_aq_rc_to_posix conversion Catherine Sullivan
@ 2015-07-28 20:33   ` Bowers, AndrewX
  2015-09-29 21:44     ` Sullivan, Catherine
  0 siblings, 1 reply; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 20:33 UTC (permalink / raw)
  To: intel-wired-lan

Verified-by: Andrew Bowers <andrewx.bowers@intel.com>
Present in git log, code changes present in tree.

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 01/15] i40e/i40evf: fix up type clash
> in i40e_aq_rc_to_posix conversion
> 
> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> The error code sent into i40e_aq_rc_to_posix() are signed values, so we
> really need to treat them as such.
> 
> Reported-by: Helin Zhang <helin.zhang@intel.com>
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: I3d1ae0ee9ae0b1b6f5fc424f8b8cc58b0ea93203
> ---
>  drivers/net/ethernet/intel/i40e/i40e_adminq.h   | 9 ++++++---
>  drivers/net/ethernet/intel/i40evf/i40e_adminq.h | 9 ++++++---
>  2 files changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq.h
> b/drivers/net/ethernet/intel/i40e/i40e_adminq.h
> index 28e519a..299e3d3 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_adminq.h
> +++ b/drivers/net/ethernet/intel/i40e/i40e_adminq.h
> @@ -108,9 +108,10 @@ struct i40e_adminq_info {
> 
>  /**
>   * i40e_aq_rc_to_posix - convert errors to user-land codes
> - * aq_rc: AdminQ error code to convert
> + * aq_ret: AdminQ handler error code can override aq_rc
> + * aq_rc: AdminQ firmware error code to convert
>   **/
> -static inline int i40e_aq_rc_to_posix(u32 aq_ret, u16 aq_rc)
> +static inline int i40e_aq_rc_to_posix(int aq_ret, int aq_rc)
>  {
>  	int aq_to_posix[] = {
>  		0,           /* I40E_AQ_RC_OK */
> @@ -142,8 +143,10 @@ static inline int i40e_aq_rc_to_posix(u32 aq_ret, u16
> aq_rc)
>  	if (aq_ret == I40E_ERR_ADMIN_QUEUE_TIMEOUT)
>  		return -EAGAIN;
> 
> -	if (aq_rc >= ARRAY_SIZE(aq_to_posix))
> +	if (aq_rc >= (sizeof(aq_to_posix) / sizeof((aq_to_posix)[0])) ||
> +	    aq_rc < 0)
>  		return -ERANGE;
> +
>  	return aq_to_posix[aq_rc];
>  }
> 
> diff --git a/drivers/net/ethernet/intel/i40evf/i40e_adminq.h
> b/drivers/net/ethernet/intel/i40evf/i40e_adminq.h
> index ef43d68..c4efa6b 100644
> --- a/drivers/net/ethernet/intel/i40evf/i40e_adminq.h
> +++ b/drivers/net/ethernet/intel/i40evf/i40e_adminq.h
> @@ -108,9 +108,10 @@ struct i40e_adminq_info {
> 
>  /**
>   * i40e_aq_rc_to_posix - convert errors to user-land codes
> - * aq_rc: AdminQ error code to convert
> + * aq_ret: AdminQ handler error code can override aq_rc
> + * aq_rc: AdminQ firmware error code to convert
>   **/
> -static inline int i40e_aq_rc_to_posix(u32 aq_ret, u16 aq_rc)
> +static inline int i40e_aq_rc_to_posix(int aq_ret, int aq_rc)
>  {
>  	int aq_to_posix[] = {
>  		0,           /* I40E_AQ_RC_OK */
> @@ -142,8 +143,10 @@ static inline int i40e_aq_rc_to_posix(u32 aq_ret, u16
> aq_rc)
>  	if (aq_ret == I40E_ERR_ADMIN_QUEUE_TIMEOUT)
>  		return -EAGAIN;
> 
> -	if (aq_rc >= ARRAY_SIZE(aq_to_posix))
> +	if (aq_rc >= (sizeof(aq_to_posix) / sizeof((aq_to_posix)[0])) ||
> +	    aq_rc < 0)
>  		return -ERANGE;
> +
>  	return aq_to_posix[aq_rc];
>  }
> 
> --
> 1.9.3
> 
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan at lists.osuosl.org
> http://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* [Intel-wired-lan] [next PATCH S9 03/15] i40e: fixup padding issue in get_cee_dcb_cfg_v1_resp
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 03/15] i40e: fixup padding issue in get_cee_dcb_cfg_v1_resp Catherine Sullivan
@ 2015-07-28 20:40   ` Bowers, AndrewX
  2015-09-29 21:45     ` Sullivan, Catherine
  0 siblings, 1 reply; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 20:40 UTC (permalink / raw)
  To: intel-wired-lan

Verified-by: Andrew Bowers <andrewx.bowers@intel.com>

Present in git log, code changes present in tree.

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 03/15] i40e: fixup padding issue in
> get_cee_dcb_cfg_v1_resp
> 
> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> The struct i40e_aqc_get_cee_dcb_cfg_v1_resp was originally defined with
> word boundary layout issues, which most compilers deal with by silently
> adding padding, making the actual struct larger than designed.
> This patch adds an extra byte in fields reserved3 and reserved4 to directly
> acknowledge that padding.
> 
> Because the struct doesn't actually change in size or layout, this doesn't
> constitute a change in the API.
> 
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: I53fa4741b73fa255621232a85fba000b0e223015
> ---
>  drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
> b/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
> index 95d23bf..b840fab 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
> +++ b/drivers/net/ethernet/intel/i40e/i40e_adminq_cmd.h
> @@ -2074,6 +2074,15 @@ I40E_CHECK_CMD_LENGTH(i40e_aqc_lldp_start);
>  #define I40E_AQC_CEE_ISCSI_STATUS_MASK	(0x7 <<
> I40E_AQC_CEE_ISCSI_STATUS_SHIFT)
>  #define I40E_AQC_CEE_FIP_STATUS_SHIFT	0x10
>  #define I40E_AQC_CEE_FIP_STATUS_MASK	(0x7 <<
> I40E_AQC_CEE_FIP_STATUS_SHIFT)
> +
> +/* struct i40e_aqc_get_cee_dcb_cfg_v1_resp was originally defined with
> + * word boundary layout issues, which the Linux compilers silently deal
> + * with by adding padding, making the actual struct larger than designed.
> + * However, the FW compiler for the NIC is less lenient and complains
> + * about the struct.  Hence, the struct defined here has an extra byte
> +in
> + * fields reserved3 and reserved4 to directly acknowledge that padding,
> + * and the new length is used in the length check macro.
> + */
>  struct i40e_aqc_get_cee_dcb_cfg_v1_resp {
>  	u8	reserved1;
>  	u8	oper_num_tc;
> @@ -2081,9 +2090,9 @@ struct i40e_aqc_get_cee_dcb_cfg_v1_resp {
>  	u8	reserved2;
>  	u8	oper_tc_bw[8];
>  	u8	oper_pfc_en;
> -	u8	reserved3;
> +	u8	reserved3[2];
>  	__le16	oper_app_prio;
> -	u8	reserved4;
> +	u8	reserved4[2];
>  	__le16	tlv_status;
>  };
> 
> --
> 1.9.3
> 
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan at lists.osuosl.org
> http://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* [Intel-wired-lan] [next PATCH S9 04/15] i40e: rename variable to prevent clash of understanding
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 04/15] i40e: rename variable to prevent clash of understanding Catherine Sullivan
@ 2015-07-28 20:44   ` Bowers, AndrewX
  0 siblings, 0 replies; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 20:44 UTC (permalink / raw)
  To: intel-wired-lan

Verified-by: Andrew Bowers <andrewx.bowers@intel.com>

Present in git log, code changes present in tree.

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 04/15] i40e: rename variable to
> prevent clash of understanding
> 
> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> This code returns something that becomes the errno value from ethtool and
> passes around a pointer to an errno variable.  This patch changes the name
> slightly to differentiate it from the actual user errno variable.
> 
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: Idaa37845c069e66f4cea072e90f471bb2142454d
> ---
>  drivers/net/ethernet/intel/i40e/i40e_nvm.c | 114 ++++++++++++++---------
> ------
>  1 file changed, 57 insertions(+), 57 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_nvm.c
> b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
> index 9b83abc..3f2fec9 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_nvm.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
> @@ -592,25 +592,25 @@ i40e_validate_nvm_checksum_exit:
> 
>  static i40e_status i40e_nvmupd_state_init(struct i40e_hw *hw,
>  					  struct i40e_nvm_access *cmd,
> -					  u8 *bytes, int *errno);
> +					  u8 *bytes, int *perrno);
>  static i40e_status i40e_nvmupd_state_reading(struct i40e_hw *hw,
>  					     struct i40e_nvm_access *cmd,
> -					     u8 *bytes, int *errno);
> +					     u8 *bytes, int *perrno);
>  static i40e_status i40e_nvmupd_state_writing(struct i40e_hw *hw,
>  					     struct i40e_nvm_access *cmd,
>  					     u8 *bytes, int *errno);
>  static enum i40e_nvmupd_cmd i40e_nvmupd_validate_command(struct
> i40e_hw *hw,
>  						struct i40e_nvm_access
> *cmd,
> -						int *errno);
> +						int *perrno);
>  static i40e_status i40e_nvmupd_nvm_erase(struct i40e_hw *hw,
>  					 struct i40e_nvm_access *cmd,
> -					 int *errno);
> +					 int *perrno);
>  static i40e_status i40e_nvmupd_nvm_write(struct i40e_hw *hw,
>  					 struct i40e_nvm_access *cmd,
> -					 u8 *bytes, int *errno);
> +					 u8 *bytes, int *perrno);
>  static i40e_status i40e_nvmupd_nvm_read(struct i40e_hw *hw,
>  					struct i40e_nvm_access *cmd,
> -					u8 *bytes, int *errno);
> +					u8 *bytes, int *perrno);
>  static inline u8 i40e_nvmupd_get_module(u32 val)  {
>  	return (u8)(val & I40E_NVM_MOD_PNT_MASK); @@ -641,30
> +641,30 @@ static char *i40e_nvm_update_state_str[] = {
>   * @hw: pointer to hardware structure
>   * @cmd: pointer to nvm update command
>   * @bytes: pointer to the data buffer
> - * @errno: pointer to return error code
> + * @perrno: pointer to return error code
>   *
>   * Dispatches command depending on what update state is current
>   **/
>  i40e_status i40e_nvmupd_command(struct i40e_hw *hw,
>  				struct i40e_nvm_access *cmd,
> -				u8 *bytes, int *errno)
> +				u8 *bytes, int *perrno)
>  {
>  	i40e_status status;
> 
>  	/* assume success */
> -	*errno = 0;
> +	*perrno = 0;
> 
>  	switch (hw->nvmupd_state) {
>  	case I40E_NVMUPD_STATE_INIT:
> -		status = i40e_nvmupd_state_init(hw, cmd, bytes, errno);
> +		status = i40e_nvmupd_state_init(hw, cmd, bytes, perrno);
>  		break;
> 
>  	case I40E_NVMUPD_STATE_READING:
> -		status = i40e_nvmupd_state_reading(hw, cmd, bytes,
> errno);
> +		status = i40e_nvmupd_state_reading(hw, cmd, bytes,
> perrno);
>  		break;
> 
>  	case I40E_NVMUPD_STATE_WRITING:
> -		status = i40e_nvmupd_state_writing(hw, cmd, bytes, errno);
> +		status = i40e_nvmupd_state_writing(hw, cmd, bytes,
> perrno);
>  		break;
> 
>  	default:
> @@ -672,7 +672,7 @@ i40e_status i40e_nvmupd_command(struct i40e_hw
> *hw,
>  		i40e_debug(hw, I40E_DEBUG_NVM,
>  			   "NVMUPD: no such state %d\n", hw-
> >nvmupd_state);
>  		status = I40E_NOT_SUPPORTED;
> -		*errno = -ESRCH;
> +		*perrno = -ESRCH;
>  		break;
>  	}
>  	return status;
> @@ -683,28 +683,28 @@ i40e_status i40e_nvmupd_command(struct
> i40e_hw *hw,
>   * @hw: pointer to hardware structure
>   * @cmd: pointer to nvm update command buffer
>   * @bytes: pointer to the data buffer
> - * @errno: pointer to return error code
> + * @perrno: pointer to return error code
>   *
>   * Process legitimate commands of the Init state and conditionally set next
>   * state. Reject all other commands.
>   **/
>  static i40e_status i40e_nvmupd_state_init(struct i40e_hw *hw,
>  					  struct i40e_nvm_access *cmd,
> -					  u8 *bytes, int *errno)
> +					  u8 *bytes, int *perrno)
>  {
>  	i40e_status status = 0;
>  	enum i40e_nvmupd_cmd upd_cmd;
> 
> -	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, errno);
> +	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, perrno);
> 
>  	switch (upd_cmd) {
>  	case I40E_NVMUPD_READ_SA:
>  		status = i40e_acquire_nvm(hw, I40E_RESOURCE_READ);
>  		if (status) {
> -			*errno = i40e_aq_rc_to_posix(status,
> +			*perrno = i40e_aq_rc_to_posix(status,
>  						     hw->aq.asq_last_status);
>  		} else {
> -			status = i40e_nvmupd_nvm_read(hw, cmd, bytes,
> errno);
> +			status = i40e_nvmupd_nvm_read(hw, cmd, bytes,
> perrno);
>  			i40e_release_nvm(hw);
>  		}
>  		break;
> @@ -712,10 +712,10 @@ static i40e_status i40e_nvmupd_state_init(struct
> i40e_hw *hw,
>  	case I40E_NVMUPD_READ_SNT:
>  		status = i40e_acquire_nvm(hw, I40E_RESOURCE_READ);
>  		if (status) {
> -			*errno = i40e_aq_rc_to_posix(status,
> +			*perrno = i40e_aq_rc_to_posix(status,
>  						     hw->aq.asq_last_status);
>  		} else {
> -			status = i40e_nvmupd_nvm_read(hw, cmd, bytes,
> errno);
> +			status = i40e_nvmupd_nvm_read(hw, cmd, bytes,
> perrno);
>  			if (status)
>  				i40e_release_nvm(hw);
>  			else
> @@ -726,10 +726,10 @@ static i40e_status i40e_nvmupd_state_init(struct
> i40e_hw *hw,
>  	case I40E_NVMUPD_WRITE_ERA:
>  		status = i40e_acquire_nvm(hw, I40E_RESOURCE_WRITE);
>  		if (status) {
> -			*errno = i40e_aq_rc_to_posix(status,
> +			*perrno = i40e_aq_rc_to_posix(status,
>  						     hw->aq.asq_last_status);
>  		} else {
> -			status = i40e_nvmupd_nvm_erase(hw, cmd, errno);
> +			status = i40e_nvmupd_nvm_erase(hw, cmd,
> perrno);
>  			if (status)
>  				i40e_release_nvm(hw);
>  			else
> @@ -740,10 +740,10 @@ static i40e_status i40e_nvmupd_state_init(struct
> i40e_hw *hw,
>  	case I40E_NVMUPD_WRITE_SA:
>  		status = i40e_acquire_nvm(hw, I40E_RESOURCE_WRITE);
>  		if (status) {
> -			*errno = i40e_aq_rc_to_posix(status,
> +			*perrno = i40e_aq_rc_to_posix(status,
>  						     hw->aq.asq_last_status);
>  		} else {
> -			status = i40e_nvmupd_nvm_write(hw, cmd, bytes,
> errno);
> +			status = i40e_nvmupd_nvm_write(hw, cmd, bytes,
> perrno);
>  			if (status)
>  				i40e_release_nvm(hw);
>  			else
> @@ -754,10 +754,10 @@ static i40e_status i40e_nvmupd_state_init(struct
> i40e_hw *hw,
>  	case I40E_NVMUPD_WRITE_SNT:
>  		status = i40e_acquire_nvm(hw, I40E_RESOURCE_WRITE);
>  		if (status) {
> -			*errno = i40e_aq_rc_to_posix(status,
> +			*perrno = i40e_aq_rc_to_posix(status,
>  						     hw->aq.asq_last_status);
>  		} else {
> -			status = i40e_nvmupd_nvm_write(hw, cmd, bytes,
> errno);
> +			status = i40e_nvmupd_nvm_write(hw, cmd, bytes,
> perrno);
>  			if (status)
>  				i40e_release_nvm(hw);
>  			else
> @@ -768,12 +768,12 @@ static i40e_status i40e_nvmupd_state_init(struct
> i40e_hw *hw,
>  	case I40E_NVMUPD_CSUM_SA:
>  		status = i40e_acquire_nvm(hw, I40E_RESOURCE_WRITE);
>  		if (status) {
> -			*errno = i40e_aq_rc_to_posix(status,
> +			*perrno = i40e_aq_rc_to_posix(status,
>  						     hw->aq.asq_last_status);
>  		} else {
>  			status = i40e_update_nvm_checksum(hw);
>  			if (status) {
> -				*errno = hw->aq.asq_last_status ?
> +				*perrno = hw->aq.asq_last_status ?
>  				   i40e_aq_rc_to_posix(status,
>  						       hw->aq.asq_last_status) :
>  				   -EIO;
> @@ -789,7 +789,7 @@ static i40e_status i40e_nvmupd_state_init(struct
> i40e_hw *hw,
>  			   "NVMUPD: bad cmd %s in init state\n",
>  			   i40e_nvm_update_state_str[upd_cmd]);
>  		status = I40E_ERR_NVM;
> -		*errno = -ESRCH;
> +		*perrno = -ESRCH;
>  		break;
>  	}
>  	return status;
> @@ -800,28 +800,28 @@ static i40e_status i40e_nvmupd_state_init(struct
> i40e_hw *hw,
>   * @hw: pointer to hardware structure
>   * @cmd: pointer to nvm update command buffer
>   * @bytes: pointer to the data buffer
> - * @errno: pointer to return error code
> + * @perrno: pointer to return error code
>   *
>   * NVM ownership is already held.  Process legitimate commands and set
> any
>   * change in state; reject all other commands.
>   **/
>  static i40e_status i40e_nvmupd_state_reading(struct i40e_hw *hw,
>  					     struct i40e_nvm_access *cmd,
> -					     u8 *bytes, int *errno)
> +					     u8 *bytes, int *perrno)
>  {
>  	i40e_status status;
>  	enum i40e_nvmupd_cmd upd_cmd;
> 
> -	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, errno);
> +	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, perrno);
> 
>  	switch (upd_cmd) {
>  	case I40E_NVMUPD_READ_SA:
>  	case I40E_NVMUPD_READ_CON:
> -		status = i40e_nvmupd_nvm_read(hw, cmd, bytes, errno);
> +		status = i40e_nvmupd_nvm_read(hw, cmd, bytes, perrno);
>  		break;
> 
>  	case I40E_NVMUPD_READ_LCB:
> -		status = i40e_nvmupd_nvm_read(hw, cmd, bytes, errno);
> +		status = i40e_nvmupd_nvm_read(hw, cmd, bytes, perrno);
>  		i40e_release_nvm(hw);
>  		hw->nvmupd_state = I40E_NVMUPD_STATE_INIT;
>  		break;
> @@ -831,7 +831,7 @@ static i40e_status i40e_nvmupd_state_reading(struct
> i40e_hw *hw,
>  			   "NVMUPD: bad cmd %s in reading state.\n",
>  			   i40e_nvm_update_state_str[upd_cmd]);
>  		status = I40E_NOT_SUPPORTED;
> -		*errno = -ESRCH;
> +		*perrno = -ESRCH;
>  		break;
>  	}
>  	return status;
> @@ -842,29 +842,29 @@ static i40e_status
> i40e_nvmupd_state_reading(struct i40e_hw *hw,
>   * @hw: pointer to hardware structure
>   * @cmd: pointer to nvm update command buffer
>   * @bytes: pointer to the data buffer
> - * @errno: pointer to return error code
> + * @perrno: pointer to return error code
>   *
>   * NVM ownership is already held.  Process legitimate commands and set
> any
>   * change in state; reject all other commands
>   **/
>  static i40e_status i40e_nvmupd_state_writing(struct i40e_hw *hw,
>  					     struct i40e_nvm_access *cmd,
> -					     u8 *bytes, int *errno)
> +					     u8 *bytes, int *perrno)
>  {
>  	i40e_status status;
>  	enum i40e_nvmupd_cmd upd_cmd;
>  	bool retry_attempt = false;
> 
> -	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, errno);
> +	upd_cmd = i40e_nvmupd_validate_command(hw, cmd, perrno);
> 
>  retry:
>  	switch (upd_cmd) {
>  	case I40E_NVMUPD_WRITE_CON:
> -		status = i40e_nvmupd_nvm_write(hw, cmd, bytes, errno);
> +		status = i40e_nvmupd_nvm_write(hw, cmd, bytes, perrno);
>  		break;
> 
>  	case I40E_NVMUPD_WRITE_LCB:
> -		status = i40e_nvmupd_nvm_write(hw, cmd, bytes, errno);
> +		status = i40e_nvmupd_nvm_write(hw, cmd, bytes, perrno);
>  		if (!status)
>  			hw->aq.nvm_release_on_done = true;
>  		hw->nvmupd_state = I40E_NVMUPD_STATE_INIT; @@ -
> 873,7 +873,7 @@ retry:
>  	case I40E_NVMUPD_CSUM_CON:
>  		status = i40e_update_nvm_checksum(hw);
>  		if (status) {
> -			*errno = hw->aq.asq_last_status ?
> +			*perrno = hw->aq.asq_last_status ?
>  				   i40e_aq_rc_to_posix(status,
>  						       hw->aq.asq_last_status) :
>  				   -EIO;
> @@ -884,7 +884,7 @@ retry:
>  	case I40E_NVMUPD_CSUM_LCB:
>  		status = i40e_update_nvm_checksum(hw);
>  		if (status)
> -			*errno = hw->aq.asq_last_status ?
> +			*perrno = hw->aq.asq_last_status ?
>  				   i40e_aq_rc_to_posix(status,
>  						       hw->aq.asq_last_status) :
>  				   -EIO;
> @@ -898,7 +898,7 @@ retry:
>  			   "NVMUPD: bad cmd %s in writing state.\n",
>  			   i40e_nvm_update_state_str[upd_cmd]);
>  		status = I40E_NOT_SUPPORTED;
> -		*errno = -ESRCH;
> +		*perrno = -ESRCH;
>  		break;
>  	}
> 
> @@ -941,13 +941,13 @@ retry:
>   * i40e_nvmupd_validate_command - Validate given command
>   * @hw: pointer to hardware structure
>   * @cmd: pointer to nvm update command buffer
> - * @errno: pointer to return error code
> + * @perrno: pointer to return error code
>   *
>   * Return one of the valid command types or I40E_NVMUPD_INVALID
>   **/
>  static enum i40e_nvmupd_cmd i40e_nvmupd_validate_command(struct
> i40e_hw *hw,
>  						 struct i40e_nvm_access
> *cmd,
> -						 int *errno)
> +						 int *perrno)
>  {
>  	enum i40e_nvmupd_cmd upd_cmd;
>  	u8 transaction;
> @@ -963,7 +963,7 @@ static enum i40e_nvmupd_cmd
> i40e_nvmupd_validate_command(struct i40e_hw *hw,
>  		i40e_debug(hw, I40E_DEBUG_NVM,
>  			   "i40e_nvmupd_validate_command data_size
> %d\n",
>  			   cmd->data_size);
> -		*errno = -EFAULT;
> +		*perrno = -EFAULT;
>  		return I40E_NVMUPD_INVALID;
>  	}
> 
> @@ -1020,10 +1020,10 @@ static enum i40e_nvmupd_cmd
> i40e_nvmupd_validate_command(struct i40e_hw *hw,
>  		   hw->aq.nvm_release_on_done);
> 
>  	if (upd_cmd == I40E_NVMUPD_INVALID) {
> -		*errno = -EFAULT;
> +		*perrno = -EFAULT;
>  		i40e_debug(hw, I40E_DEBUG_NVM,
>  			   "i40e_nvmupd_validate_command returns %d
> errno %d\n",
> -			   upd_cmd, *errno);
> +			   upd_cmd, *perrno);
>  	}
>  	return upd_cmd;
>  }
> @@ -1033,13 +1033,13 @@ static enum i40e_nvmupd_cmd
> i40e_nvmupd_validate_command(struct i40e_hw *hw,
>   * @hw: pointer to hardware structure
>   * @cmd: pointer to nvm update command buffer
>   * @bytes: pointer to the data buffer
> - * @errno: pointer to return error code
> + * @perrno: pointer to return error code
>   *
>   * cmd structure contains identifiers and data buffer
>   **/
>  static i40e_status i40e_nvmupd_nvm_read(struct i40e_hw *hw,
>  					struct i40e_nvm_access *cmd,
> -					u8 *bytes, int *errno)
> +					u8 *bytes, int *perrno)
>  {
>  	i40e_status status;
>  	u8 module, transaction;
> @@ -1058,7 +1058,7 @@ static i40e_status i40e_nvmupd_nvm_read(struct
> i40e_hw *hw,
>  		i40e_debug(hw, I40E_DEBUG_NVM,
>  			   "i40e_nvmupd_nvm_read status %d aq %d\n",
>  			   status, hw->aq.asq_last_status);
> -		*errno = i40e_aq_rc_to_posix(status, hw-
> >aq.asq_last_status);
> +		*perrno = i40e_aq_rc_to_posix(status, hw-
> >aq.asq_last_status);
>  	}
> 
>  	return status;
> @@ -1068,13 +1068,13 @@ static i40e_status
> i40e_nvmupd_nvm_read(struct i40e_hw *hw,
>   * i40e_nvmupd_nvm_erase - Erase an NVM module
>   * @hw: pointer to hardware structure
>   * @cmd: pointer to nvm update command buffer
> - * @errno: pointer to return error code
> + * @perrno: pointer to return error code
>   *
>   * module, offset, data_size and data are in cmd structure
>   **/
>  static i40e_status i40e_nvmupd_nvm_erase(struct i40e_hw *hw,
>  					 struct i40e_nvm_access *cmd,
> -					 int *errno)
> +					 int *perrno)
>  {
>  	i40e_status status = 0;
>  	u8 module, transaction;
> @@ -1092,7 +1092,7 @@ static i40e_status i40e_nvmupd_nvm_erase(struct
> i40e_hw *hw,
>  		i40e_debug(hw, I40E_DEBUG_NVM,
>  			   "i40e_nvmupd_nvm_erase status %d aq %d\n",
>  			   status, hw->aq.asq_last_status);
> -		*errno = i40e_aq_rc_to_posix(status, hw-
> >aq.asq_last_status);
> +		*perrno = i40e_aq_rc_to_posix(status, hw-
> >aq.asq_last_status);
>  	}
> 
>  	return status;
> @@ -1103,13 +1103,13 @@ static i40e_status
> i40e_nvmupd_nvm_erase(struct i40e_hw *hw,
>   * @hw: pointer to hardware structure
>   * @cmd: pointer to nvm update command buffer
>   * @bytes: pointer to the data buffer
> - * @errno: pointer to return error code
> + * @perrno: pointer to return error code
>   *
>   * module, offset, data_size and data are in cmd structure
>   **/
>  static i40e_status i40e_nvmupd_nvm_write(struct i40e_hw *hw,
>  					 struct i40e_nvm_access *cmd,
> -					 u8 *bytes, int *errno)
> +					 u8 *bytes, int *perrno)
>  {
>  	i40e_status status = 0;
>  	u8 module, transaction;
> @@ -1128,7 +1128,7 @@ static i40e_status i40e_nvmupd_nvm_write(struct
> i40e_hw *hw,
>  		i40e_debug(hw, I40E_DEBUG_NVM,
>  			   "i40e_nvmupd_nvm_write status %d aq %d\n",
>  			   status, hw->aq.asq_last_status);
> -		*errno = i40e_aq_rc_to_posix(status, hw-
> >aq.asq_last_status);
> +		*perrno = i40e_aq_rc_to_posix(status, hw-
> >aq.asq_last_status);
>  	}
> 
>  	return status;
> --
> 1.9.3
> 
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan at lists.osuosl.org
> http://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* [Intel-wired-lan] [next PATCH S9 05/15] i40e/i40evf: fix tx hang workaround code
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 05/15] i40e/i40evf: fix tx hang workaround code Catherine Sullivan
@ 2015-07-28 20:49   ` Bowers, AndrewX
  2015-09-29 21:47     ` Sullivan, Catherine
  0 siblings, 1 reply; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 20:49 UTC (permalink / raw)
  To: intel-wired-lan

Verified-by: Andrew Bowers <Andrewx.bowers@intel.com>

Present in git log, code changes present in tree.

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 05/15] i40e/i40evf: fix tx hang
> workaround code
> 
> From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 
> The arm writeback (arm_wb) code is used for kicking the tx ring to make sure
> any pending work is completed even if interrupts are disabled. It was running
> when it didn't need to, and not clearing the ring->arm_wb state after it was
> set.  This caused tx hangs to still occur occasionally when there really was no
> hang.
> Fix this by resetting the variable right after it was used.
> 
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Change-ID: I7bf75d552ba9c4bd203d40615213861a24bb5594
> ---
>  drivers/net/ethernet/intel/i40e/i40e_txrx.c   | 3 +--
>  drivers/net/ethernet/intel/i40evf/i40e_txrx.c | 3 +--
>  2 files changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> index 738aca6..8a3d596 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> @@ -793,8 +793,6 @@ static bool i40e_clean_tx_irq(struct i40e_ring
> *tx_ring, int budget)
>  	    !test_bit(__I40E_DOWN, &tx_ring->vsi->state) &&
>  	    (I40E_DESC_UNUSED(tx_ring) != tx_ring->count))
>  		tx_ring->arm_wb = true;
> -	else
> -		tx_ring->arm_wb = false;
> 
>  	if (check_for_tx_hang(tx_ring) && i40e_check_tx_hang(tx_ring)) {
>  		/* schedule immediate reset if we believe we hung */ @@ -
> 1921,6 +1919,7 @@ int i40e_napi_poll(struct napi_struct *napi, int budget)
>  	i40e_for_each_ring(ring, q_vector->tx) {
>  		clean_complete &= i40e_clean_tx_irq(ring, vsi->work_limit);
>  		arm_wb |= ring->arm_wb;
> +		ring->arm_wb = false;
>  	}
> 
>  	/* We attempt to distribute budget to each Rx queue fairly, but don't
> diff --git a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
> b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
> index a584e21..6c353b2 100644
> --- a/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
> +++ b/drivers/net/ethernet/intel/i40evf/i40e_txrx.c
> @@ -309,8 +309,6 @@ static bool i40e_clean_tx_irq(struct i40e_ring
> *tx_ring, int budget)
>  	    !test_bit(__I40E_DOWN, &tx_ring->vsi->state) &&
>  	    (I40E_DESC_UNUSED(tx_ring) != tx_ring->count))
>  		tx_ring->arm_wb = true;
> -	else
> -		tx_ring->arm_wb = false;
> 
>  	if (check_for_tx_hang(tx_ring) && i40e_check_tx_hang(tx_ring)) {
>  		/* schedule immediate reset if we believe we hung */ @@ -
> 1367,6 +1365,7 @@ int i40evf_napi_poll(struct napi_struct *napi, int budget)
>  	i40e_for_each_ring(ring, q_vector->tx) {
>  		clean_complete &= i40e_clean_tx_irq(ring, vsi->work_limit);
>  		arm_wb |= ring->arm_wb;
> +		ring->arm_wb = false;
>  	}
> 
>  	/* We attempt to distribute budget to each Rx queue fairly, but don't
> --
> 1.9.3
> 
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan at lists.osuosl.org
> http://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* [Intel-wired-lan] [next PATCH S9 06/15] i40e: count drops in netstat interface
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 06/15] i40e: count drops in netstat interface Catherine Sullivan
@ 2015-07-28 20:51   ` Bowers, AndrewX
  2015-09-29 21:48     ` Sullivan, Catherine
  0 siblings, 1 reply; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 20:51 UTC (permalink / raw)
  To: intel-wired-lan

Verified-by: Andrew Bowers <andrewx.bowers@intel.com>

Present in git log, code changes present in tree, netstat -I shows rx_dropped counter

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 06/15] i40e: count drops in netstat
> interface
> 
> From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 
> The i40e rx_dropped counter was not showing up in netstat -i.
> Add the right counter to be updated with the stats.
> 
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Change-ID: I4dd552e9995836099184f9d9a08e90edb591155f
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c
> b/drivers/net/ethernet/intel/i40e/i40e_main.c
> index fe3bfb8..a6a5f45 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_main.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
> @@ -361,6 +361,7 @@ static struct rtnl_link_stats64
> *i40e_get_netdev_stats_struct(
>  	stats->tx_errors	= vsi_stats->tx_errors;
>  	stats->tx_dropped	= vsi_stats->tx_dropped;
>  	stats->rx_errors	= vsi_stats->rx_errors;
> +	stats->rx_dropped	= vsi_stats->rx_dropped;
>  	stats->rx_crc_errors	= vsi_stats->rx_crc_errors;
>  	stats->rx_length_errors	= vsi_stats->rx_length_errors;
> 
> --
> 1.9.3
> 
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan at lists.osuosl.org
> http://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* [Intel-wired-lan] [next PATCH S9 07/15] i40e: use qos field consistently
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 07/15] i40e: use qos field consistently Catherine Sullivan
@ 2015-07-28 20:55   ` Bowers, AndrewX
  2015-09-29 21:49     ` Sullivan, Catherine
  0 siblings, 1 reply; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 20:55 UTC (permalink / raw)
  To: intel-wired-lan

Verified-by: Andrew Bowers <andrewx.bowers@intel.com>

Present in git log, code changes present in tree.

> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 07/15] i40e: use qos field
> consistently
> 
> From: Mitch Williams <mitch.a.williams@intel.com>
> 
> In i40e_ndo_set_vf_port_vlan, we were using the qos value inconsistently,
> sometimes shifting it, sometimes not. Do the shift-and- or operation
> correctly, once, and use the result consistently everywhere
>     in the function.
> 
> Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
> Change-ID: I46f062f3edc90a8a017ecec9137f4d1ab0ab9e41
> ---
>  drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 9 ++++-----
>  1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
> b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
> index d99c116..f60cd43 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
> @@ -2089,6 +2089,7 @@ error_param:
>  int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
>  			      int vf_id, u16 vlan_id, u8 qos)  {
> +	u16 vlanprio = vlan_id | (qos << I40E_VLAN_PRIORITY_SHIFT);
>  	struct i40e_netdev_priv *np = netdev_priv(netdev);
>  	struct i40e_pf *pf = np->vsi->back;
>  	struct i40e_vsi *vsi;
> @@ -2116,8 +2117,7 @@ int i40e_ndo_set_vf_port_vlan(struct net_device
> *netdev,
>  		goto error_pvid;
>  	}
> 
> -	if (le16_to_cpu(vsi->info.pvid) ==
> -	    (vlan_id | (qos << I40E_VLAN_PRIORITY_SHIFT)))
> +	if (le16_to_cpu(vsi->info.pvid) == vlanprio)
>  		/* duplicate request, so just return success */
>  		goto error_pvid;
> 
> @@ -2141,7 +2141,7 @@ int i40e_ndo_set_vf_port_vlan(struct net_device
> *netdev,
>  	 * MAC addresses deleted.
>  	 */
>  	if ((!(vlan_id || qos) ||
> -	    (vlan_id | qos) != le16_to_cpu(vsi->info.pvid)) &&
> +	    vlanprio != le16_to_cpu(vsi->info.pvid)) &&
>  	    vsi->info.pvid)
>  		ret = i40e_vsi_add_vlan(vsi, I40E_VLAN_ANY);
> 
> @@ -2156,8 +2156,7 @@ int i40e_ndo_set_vf_port_vlan(struct net_device
> *netdev,
>  		}
>  	}
>  	if (vlan_id || qos)
> -		ret = i40e_vsi_add_pvid(vsi,
> -				vlan_id | (qos <<
> I40E_VLAN_PRIORITY_SHIFT));
> +		ret = i40e_vsi_add_pvid(vsi, vlanprio);
>  	else
>  		i40e_vsi_remove_pvid(vsi);
> 
> --
> 1.9.3
> 
> _______________________________________________
> Intel-wired-lan mailing list
> Intel-wired-lan at lists.osuosl.org
> http://lists.osuosl.org/mailman/listinfo/intel-wired-lan

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

* [Intel-wired-lan] [next PATCH S9 08/15] i40e: limit debugfs io ops
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 08/15] i40e: limit debugfs io ops Catherine Sullivan
@ 2015-07-28 21:09   ` Bowers, AndrewX
  0 siblings, 0 replies; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 21: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 Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 08/15] i40e: limit debugfs io ops
> 
> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> Don't let the debugfs register read and write commands try to access outside
> of the ioremapped space.  While we're at it, remove the use of a misleading
> constant.
> 
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: Ifce2893e232c65c7a76c23532c658f298218a81b
> ---
>  drivers/net/ethernet/intel/i40e/i40e.h         |  3 ++-
>  drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 12 ++++++------
>  drivers/net/ethernet/intel/i40e/i40e_main.c    |  9 ++++-----
>  3 files changed, 12 insertions(+), 12 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Present in git log, code changes present in tree.

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

* [Intel-wired-lan] [next PATCH S9 09/15] i40e: Remove useless message
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 09/15] i40e: Remove useless message Catherine Sullivan
@ 2015-07-28 21:11   ` Bowers, AndrewX
  0 siblings, 0 replies; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 21:11 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 Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 09/15] i40e: Remove useless
> message
> 
> From: Greg Rose <gregory.v.rose@intel.com>
> 
> Remove a useless message that blathers on whenever a vxlan port is
> deleted.
> 
> Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
> Change-ID: If63fb8cf38e56cf433b68e498f11389de51919ba
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 3 ---
>  1 file changed, 3 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Present in git log, code changes present in tree.

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

* [Intel-wired-lan] [next PATCH S9 10/15] i40e/i40evf: add new device id 1588
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 10/15] i40e/i40evf: add new device id 1588 Catherine Sullivan
@ 2015-07-28 21:14   ` Bowers, AndrewX
  0 siblings, 0 replies; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 21:14 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 Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 10/15] i40e/i40evf: add new device
> id 1588
> 
> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> Add new device id and support for another 20Gb device.
> 
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: Ib1b61e5bb6201d84953f97cade39a6e3369c2cf2
> ---
>  drivers/net/ethernet/intel/i40e/i40e_common.c   | 1 +
>  drivers/net/ethernet/intel/i40e/i40e_ethtool.c  | 1 +
>  drivers/net/ethernet/intel/i40e/i40e_main.c     | 2 ++
>  drivers/net/ethernet/intel/i40e/i40e_type.h     | 1 +
>  drivers/net/ethernet/intel/i40evf/i40e_common.c | 1 +
>  drivers/net/ethernet/intel/i40evf/i40e_type.h   | 1 +
>  6 files changed, 7 insertions(+)


Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Present in git log, "modinfo i40e" shows additional device id 1588.

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

* [Intel-wired-lan] [next PATCH S9 11/15] i40e: Strip VEB stats if they are disabled in HW
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 11/15] i40e: Strip VEB stats if they are disabled in HW Catherine Sullivan
@ 2015-07-28 21:17   ` Bowers, AndrewX
  0 siblings, 0 replies; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 21:17 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 Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Cc: Singhai, Anjali
> Subject: [Intel-wired-lan] [next PATCH S9 11/15] i40e: Strip VEB stats if they
> are disabled in HW
> 
> From: Anjali Singhai Jain <anjali.singhai@intel.com>
> 
> Due to performance reasons, VEB stats have been disabled in the hw. This
> patch adds code to check for that condition before accumulating these stats.
> 
> Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
> Change-ID: I7d805669476fedabb073790403703798ae5d878e
> ---
>  drivers/net/ethernet/intel/i40e/i40e.h         |  1 +
>  drivers/net/ethernet/intel/i40e/i40e_ethtool.c |  9 ++++++---
>  drivers/net/ethernet/intel/i40e/i40e_main.c    | 13 +++++++++----
>  3 files changed, 16 insertions(+), 7 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Present in git log, code changes present in tree.

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

* [Intel-wired-lan] [next PATCH S9 12/15] i40e: refactor interrupt enable
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 12/15] i40e: refactor interrupt enable Catherine Sullivan
@ 2015-07-28 21:22   ` Bowers, AndrewX
  0 siblings, 0 replies; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 21:22 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 Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 12/15] i40e: refactor interrupt
> enable
> 
> From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 
> The interrupt enable function was always making the caller add the
> base_vector from the vsi struct which is already passed to the function. Just
> collapse the math into the helper function.
> 
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Change-ID: I54ef33aa7ceebc3231c3cc48f7b39fd0c3ff5806
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 10 ++++------
> drivers/net/ethernet/intel/i40e/i40e_txrx.c |  6 ++----
>  2 files changed, 6 insertions(+), 10 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Present in git log, code changes present in tree.

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

* [Intel-wired-lan] [next PATCH S9 13/15] i40e: warn on double free
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 13/15] i40e: warn on double free Catherine Sullivan
@ 2015-07-28 21:24   ` Bowers, AndrewX
  0 siblings, 0 replies; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 21:24 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 Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 13/15] i40e: warn on double free
> 
> From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 
> Down was requesting queue disables, but then exited immediately without
> waiting for the queues to actually disable. This could allow any function called
> after i40evf_down to run immediately, including i40evf_up, and causes a
> memory leak.
> 
> This issue has been fixed in a recent refactor of the reset code, but add a
> couple WARN_ONs in the slow path to help us recognize if we reintroduce
> this issue or if we missed any cases.
> 
> Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Change-ID: I27b6b5c9a79c1892f0ba453129f116bc32647dd0
> ---
>  drivers/net/ethernet/intel/i40e/i40e_txrx.c | 4 ++++
>  1 file changed, 4 insertions(+)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Present in git log, code changes present in tree.

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

* [Intel-wired-lan] [next PATCH S9 15/15] i40e/i40evf: Bump i40e to 1.3.12 and i40evf to 1.3.6
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 15/15] i40e/i40evf: Bump i40e to 1.3.12 and i40evf to 1.3.6 Catherine Sullivan
  2015-07-28 20:26   ` Bowers, AndrewX
@ 2015-07-28 21:25   ` Bowers, AndrewX
  1 sibling, 0 replies; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-28 21: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 Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 15/15] i40e/i40evf: Bump i40e to
> 1.3.12 and i40evf to 1.3.6
> 
> Bump.
> 
> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
> Change-ID: Iaf6c969d620704b374584ff82d09922a4d57b025
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c     | 2 +-
>  drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Present in git log, modinfo shows correct driver versions for i40e and i40evf

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

* [Intel-wired-lan] [next PATCH S9 02/15] i40e: Fix a port VLAN configuration bug
  2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 02/15] i40e: Fix a port VLAN configuration bug Catherine Sullivan
@ 2015-07-29 20:34   ` Bowers, AndrewX
  0 siblings, 0 replies; 36+ messages in thread
From: Bowers, AndrewX @ 2015-07-29 20:34 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 Catherine Sullivan
> Sent: Thursday, July 23, 2015 1:55 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S9 02/15] i40e: Fix a port VLAN
> configuration bug
> 
> From: Greg Rose <gregory.v.rose@intel.com>
> 
> If a port VLAN is set for a given virtual function (VF) before the VF driver is
> loaded then a configuration error results in which the port VLAN is ignored
> when the VF driver is subsequently loaded.  This causes the VF's MAC/VLAN
> filters to not use the correct VLAN filter.  This patch ensures that the port
> VLAN filter is considered at the right time during configuration of the VF's
> MAC/VLAN filters.
> 
> Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
> Change-ID: I28f404cbc21a4c6d70a7980b87c77f13f06685a4
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Present in git log, code changes present in tree, verified able to create VF prior to driver loading, no errors when driver is subsequently loaded, and VF is able to pass traffic.

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

* [Intel-wired-lan] [next PATCH S9 01/15] i40e/i40evf: fix up type clash in i40e_aq_rc_to_posix conversion
  2015-07-28 20:33   ` Bowers, AndrewX
@ 2015-09-29 21:44     ` Sullivan, Catherine
  0 siblings, 0 replies; 36+ messages in thread
From: Sullivan, Catherine @ 2015-09-29 21:44 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
> > Catherine Sullivan
> > Sent: Thursday, July 23, 2015 1:55 PM
> > To: intel-wired-lan at lists.osuosl.org
> > Subject: [Intel-wired-lan] [next PATCH S9 01/15] i40e/i40evf: fix up
> > type clash in i40e_aq_rc_to_posix conversion
> >
> > From: Shannon Nelson <shannon.nelson@intel.com>
> >
> > The error code sent into i40e_aq_rc_to_posix() are signed values, so
> > we really need to treat them as such.
> >
> > Reported-by: Helin Zhang <helin.zhang@intel.com>
> > Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> > Change-ID: I3d1ae0ee9ae0b1b6f5fc424f8b8cc58b0ea93203

> Verified-by: Andrew Bowers <andrewx.bowers@intel.com> Present in git log,
> code changes present in tree.

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>

Already verified, but wasn't flagged as such in patchwork.

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

* [Intel-wired-lan] [next PATCH S9 03/15] i40e: fixup padding issue in get_cee_dcb_cfg_v1_resp
  2015-07-28 20:40   ` Bowers, AndrewX
@ 2015-09-29 21:45     ` Sullivan, Catherine
  0 siblings, 0 replies; 36+ messages in thread
From: Sullivan, Catherine @ 2015-09-29 21:45 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
> > Catherine Sullivan
> > Sent: Thursday, July 23, 2015 1:55 PM
> > To: intel-wired-lan at lists.osuosl.org
> > Subject: [Intel-wired-lan] [next PATCH S9 03/15] i40e: fixup padding
> > issue in get_cee_dcb_cfg_v1_resp
> >
> > From: Shannon Nelson <shannon.nelson@intel.com>
> >
> > The struct i40e_aqc_get_cee_dcb_cfg_v1_resp was originally defined
> > with word boundary layout issues, which most compilers deal with by
> > silently adding padding, making the actual struct larger than designed.
> > This patch adds an extra byte in fields reserved3 and reserved4 to
> > directly acknowledge that padding.
> >
> > Because the struct doesn't actually change in size or layout, this
> > doesn't constitute a change in the API.
> >
> > Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> > Change-ID: I53fa4741b73fa255621232a85fba000b0e223015

> Verified-by: Andrew Bowers <andrewx.bowers@intel.com>
> 
> Present in git log, code changes present in tree.

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>

Already verified, but wasn't flagged as such in patchwork.

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

* [Intel-wired-lan] [next PATCH S9 05/15] i40e/i40evf: fix tx hang workaround code
  2015-07-28 20:49   ` Bowers, AndrewX
@ 2015-09-29 21:47     ` Sullivan, Catherine
  0 siblings, 0 replies; 36+ messages in thread
From: Sullivan, Catherine @ 2015-09-29 21:47 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
> > Catherine Sullivan
> > Sent: Thursday, July 23, 2015 1:55 PM
> > To: intel-wired-lan at lists.osuosl.org
> > Subject: [Intel-wired-lan] [next PATCH S9 05/15] i40e/i40evf: fix tx
> > hang workaround code
> >
> > From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> >
> > The arm writeback (arm_wb) code is used for kicking the tx ring to
> > make sure any pending work is completed even if interrupts are
> > disabled. It was running when it didn't need to, and not clearing the
> > ring->arm_wb state after it was set.  This caused tx hangs to still
> > occur occasionally when there really was no hang.
> > Fix this by resetting the variable right after it was used.
> >
> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > Change-ID: I7bf75d552ba9c4bd203d40615213861a24bb5594

> Verified-by: Andrew Bowers <Andrewx.bowers@intel.com>
> 
> Present in git log, code changes present in tree.

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>

Already verified, but wasn't flagged as such in patchwork.

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

* [Intel-wired-lan] [next PATCH S9 06/15] i40e: count drops in netstat interface
  2015-07-28 20:51   ` Bowers, AndrewX
@ 2015-09-29 21:48     ` Sullivan, Catherine
  0 siblings, 0 replies; 36+ messages in thread
From: Sullivan, Catherine @ 2015-09-29 21:48 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
> > Catherine Sullivan
> > Sent: Thursday, July 23, 2015 1:55 PM
> > To: intel-wired-lan at lists.osuosl.org
> > Subject: [Intel-wired-lan] [next PATCH S9 06/15] i40e: count drops in
> > netstat interface
> >
> > From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> >
> > The i40e rx_dropped counter was not showing up in netstat -i.
> > Add the right counter to be updated with the stats.
> >
> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > Change-ID: I4dd552e9995836099184f9d9a08e90edb591155f

> Verified-by: Andrew Bowers <andrewx.bowers@intel.com>
> 
> Present in git log, code changes present in tree, netstat -I shows rx_dropped
> counter
>

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>

Already verified, but wasn't flagged as such in patchwork.

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

* [Intel-wired-lan] [next PATCH S9 07/15] i40e: use qos field consistently
  2015-07-28 20:55   ` Bowers, AndrewX
@ 2015-09-29 21:49     ` Sullivan, Catherine
  0 siblings, 0 replies; 36+ messages in thread
From: Sullivan, Catherine @ 2015-09-29 21: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
> > Catherine Sullivan
> > Sent: Thursday, July 23, 2015 1:55 PM
> > To: intel-wired-lan at lists.osuosl.org
> > Subject: [Intel-wired-lan] [next PATCH S9 07/15] i40e: use qos field
> > consistently
> >
> > From: Mitch Williams <mitch.a.williams@intel.com>
> >
> > In i40e_ndo_set_vf_port_vlan, we were using the qos value
> > inconsistently, sometimes shifting it, sometimes not. Do the
> > shift-and- or operation correctly, once, and use the result consistently
> everywhere
> >     in the function.
> >
> > Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
> > Change-ID: I46f062f3edc90a8a017ecec9137f4d1ab0ab9e41
> > ---
> >  drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 9 ++++-----
> >  1 file changed, 4 insertions(+), 5 deletions(-)
> >
> Verified-by: Andrew Bowers <andrewx.bowers@intel.com>
> 
> Present in git log, code changes present in tree.

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>

Already verified, but wasn't flagged as such in patchwork.


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

end of thread, other threads:[~2015-09-29 21:49 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-07-23 20:54 [Intel-wired-lan] [next PATCH S9 00/15] i40e/i40evf updates Catherine Sullivan
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 01/15] i40e/i40evf: fix up type clash in i40e_aq_rc_to_posix conversion Catherine Sullivan
2015-07-28 20:33   ` Bowers, AndrewX
2015-09-29 21:44     ` Sullivan, Catherine
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 02/15] i40e: Fix a port VLAN configuration bug Catherine Sullivan
2015-07-29 20:34   ` Bowers, AndrewX
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 03/15] i40e: fixup padding issue in get_cee_dcb_cfg_v1_resp Catherine Sullivan
2015-07-28 20:40   ` Bowers, AndrewX
2015-09-29 21:45     ` Sullivan, Catherine
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 04/15] i40e: rename variable to prevent clash of understanding Catherine Sullivan
2015-07-28 20:44   ` Bowers, AndrewX
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 05/15] i40e/i40evf: fix tx hang workaround code Catherine Sullivan
2015-07-28 20:49   ` Bowers, AndrewX
2015-09-29 21:47     ` Sullivan, Catherine
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 06/15] i40e: count drops in netstat interface Catherine Sullivan
2015-07-28 20:51   ` Bowers, AndrewX
2015-09-29 21:48     ` Sullivan, Catherine
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 07/15] i40e: use qos field consistently Catherine Sullivan
2015-07-28 20:55   ` Bowers, AndrewX
2015-09-29 21:49     ` Sullivan, Catherine
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 08/15] i40e: limit debugfs io ops Catherine Sullivan
2015-07-28 21:09   ` Bowers, AndrewX
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 09/15] i40e: Remove useless message Catherine Sullivan
2015-07-28 21:11   ` Bowers, AndrewX
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 10/15] i40e/i40evf: add new device id 1588 Catherine Sullivan
2015-07-28 21:14   ` Bowers, AndrewX
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 11/15] i40e: Strip VEB stats if they are disabled in HW Catherine Sullivan
2015-07-28 21:17   ` Bowers, AndrewX
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 12/15] i40e: refactor interrupt enable Catherine Sullivan
2015-07-28 21:22   ` Bowers, AndrewX
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 13/15] i40e: warn on double free Catherine Sullivan
2015-07-28 21:24   ` Bowers, AndrewX
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 14/15] i40evf: tighten up reset polling Catherine Sullivan
2015-07-23 20:54 ` [Intel-wired-lan] [next PATCH S9 15/15] i40e/i40evf: Bump i40e to 1.3.12 and i40evf to 1.3.6 Catherine Sullivan
2015-07-28 20:26   ` Bowers, AndrewX
2015-07-28 21:25   ` 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.