All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates
@ 2015-09-03 21:18 Catherine Sullivan
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 01/15] i40e: Add missing parameter comment to ndo_bridge_setlink Catherine Sullivan
                   ` (14 more replies)
  0 siblings, 15 replies; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

Anjali adds WB_ON_ITR offload support to i40evf and fixes the PCI
bus info for X722.

Catherine removes 100M settings from get_settings that are no longer
supported.

Jesse adds a missing parameter comment to ndo_bridge_setlink and uses
priv flags to control flow director.

Kevin stores off PHY capabilities.

Kiran adds a spin lock for VSI's MAC filter list.

Mitch removes an obsolete version check and speeds up i40evf's init.

Neerav change some messages from info to debug only.

Shannon allows FD SB if MFP mode only has 1 partition, removes FD atr
control from debugfs, removes redundant declarations of a variable and a
function and removes unnecessary string copy operations.

 drivers/net/ethernet/intel/i40e/i40e.h             |   4 +
 drivers/net/ethernet/intel/i40e/i40e_common.c      |   3 +
 drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c      |   7 +-
 drivers/net/ethernet/intel/i40e/i40e_debugfs.c     |  24 --
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c     |  59 ++-
 drivers/net/ethernet/intel/i40e/i40e_fcoe.c        |   4 +-
 drivers/net/ethernet/intel/i40e/i40e_main.c        | 451 ++++++++++++++++-----
 drivers/net/ethernet/intel/i40e/i40e_virtchnl.h    |   1 +
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c |  30 +-
 drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h  |   1 +
 drivers/net/ethernet/intel/i40evf/i40evf_main.c    |  13 +-
 .../net/ethernet/intel/i40evf/i40evf_virtchnl.c    |   3 +-
 12 files changed, 443 insertions(+), 157 deletions(-)

-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 01/15] i40e: Add missing parameter comment to ndo_bridge_setlink
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-10 22:17   ` Bowers, AndrewX
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 02/15] i40e: use priv flags to control flow director Catherine Sullivan
                   ` (13 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

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

Add nlflags to the function comment for ndo_bridge_setlink.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Change-ID: I34c704f307f2a3f7bac3ca4b44e2a094d3d082d6
---
 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 bb21be2..fee2127 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -8331,6 +8331,7 @@ static int i40e_ndo_bridge_setlink(struct net_device *dev,
  * @seq: RTNL message seq #
  * @dev: the netdev being configured
  * @filter_mask: unused
+ * @nlflags: netlink flags passed in
  *
  * Return the mode in which the hardware bridge is operating in
  * i.e VEB or VEPA.
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 02/15] i40e: use priv flags to control flow director
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 01/15] i40e: Add missing parameter comment to ndo_bridge_setlink Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-10 22:26   ` Bowers, AndrewX
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 03/15] i40e: Change some messages from info to debug only Catherine Sullivan
                   ` (12 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

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

Some customers wish to be able to control our hardware specific
feature called flow director, at runtime.  This patch enables
ethtool priv flags to control this driver/hardware specific feature.

ethtool --set-priv-flags ethX flow-director-atr off

NOTE: the ethtool ntuple interface controls the flow-director
      sideband rules.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Change-ID: Iba156350b07fa2ce66f53ded51739f9a3781fe0e
---
 drivers/net/ethernet/intel/i40e/i40e.h         |  1 +
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 14 ++++++++++++++
 2 files changed, 15 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 031a93a..77148f3 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -102,6 +102,7 @@
 /* Ethtool Private Flags */
 #define I40E_PRIV_FLAGS_NPAR_FLAG	BIT(0)
 #define I40E_PRIV_FLAGS_LINKPOLL_FLAG	BIT(1)
+#define I40E_PRIV_FLAGS_FD_ATR		BIT(2)
 
 #define I40E_NVM_VERSION_LO_SHIFT  0
 #define I40E_NVM_VERSION_LO_MASK   (0xff << I40E_NVM_VERSION_LO_SHIFT)
diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index 831f971..185ac91 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -231,6 +231,7 @@ static const char i40e_gstrings_test[][ETH_GSTRING_LEN] = {
 static const char i40e_priv_flags_strings[][ETH_GSTRING_LEN] = {
 	"NPAR",
 	"LinkPolling",
+	"flow-director-atr",
 };
 
 #define I40E_PRIV_FLAGS_STR_LEN ARRAY_SIZE(i40e_priv_flags_strings)
@@ -2666,6 +2667,8 @@ static u32 i40e_get_priv_flags(struct net_device *dev)
 		I40E_PRIV_FLAGS_NPAR_FLAG : 0;
 	ret_flags |= pf->flags & I40E_FLAG_LINK_POLLING_ENABLED ?
 		I40E_PRIV_FLAGS_LINKPOLL_FLAG : 0;
+	ret_flags |= pf->flags & I40E_FLAG_FD_ATR_ENABLED ?
+		I40E_PRIV_FLAGS_FD_ATR : 0;
 
 	return ret_flags;
 }
@@ -2686,6 +2689,17 @@ static int i40e_set_priv_flags(struct net_device *dev, u32 flags)
 	else
 		pf->flags &= ~I40E_FLAG_LINK_POLLING_ENABLED;
 
+	/* allow the user to control the state of the Flow
+	 * Director ATR (Application Targeted Routing) feature
+	 * of the driver
+	 */
+	if (flags & I40E_PRIV_FLAGS_FD_ATR) {
+		pf->flags |= I40E_FLAG_FD_ATR_ENABLED;
+	} else {
+		pf->flags &= ~I40E_FLAG_FD_ATR_ENABLED;
+		pf->auto_disable_flags |= I40E_FLAG_FD_ATR_ENABLED;
+	}
+
 	return 0;
 }
 
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 03/15] i40e: Change some messages from info to debug only
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 01/15] i40e: Add missing parameter comment to ndo_bridge_setlink Catherine Sullivan
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 02/15] i40e: use priv flags to control flow director Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-10 22:38   ` Bowers, AndrewX
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 04/15] i40e: Lock for VSI's MAC filter list Catherine Sullivan
                   ` (11 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

From: Neerav Parikh <neerav.parikh@intel.com>

There are several error messages that have been printing when there is
no functional issue. These messages should be available at debug message
level only.

Signed-off-by: Neerav Parikh <neerav.parikh@intel.com>
Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Change-ID: Id91e47bf942c483563995f30d8705fa53acd5aa3
---
 drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c |  7 +++----
 drivers/net/ethernet/intel/i40e/i40e_fcoe.c   |  2 +-
 drivers/net/ethernet/intel/i40e/i40e_main.c   | 21 +++++++++++++--------
 3 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c b/drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c
index 7c42d13..886e667 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c
@@ -240,10 +240,9 @@ static void i40e_dcbnl_del_app(struct i40e_pf *pf,
 	for (v = 0; v < pf->num_alloc_vsi; v++) {
 		if (pf->vsi[v] && pf->vsi[v]->netdev) {
 			err = i40e_dcbnl_vsi_del_app(pf->vsi[v], app);
-			if (err)
-				dev_info(&pf->pdev->dev, "Failed deleting app for VSI seid=%d err=%d sel=%d proto=0x%x prio=%d\n",
-					 pf->vsi[v]->seid, err, app->selector,
-					 app->protocolid, app->priority);
+			dev_dbg(&pf->pdev->dev, "Deleting app for VSI seid=%d err=%d sel=%d proto=0x%x prio=%d\n",
+				pf->vsi[v]->seid, err, app->selector,
+				app->protocolid, app->priority);
 		}
 	}
 }
diff --git a/drivers/net/ethernet/intel/i40e/i40e_fcoe.c b/drivers/net/ethernet/intel/i40e/i40e_fcoe.c
index eaedc1f..2ec2411 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_fcoe.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_fcoe.c
@@ -284,7 +284,7 @@ void i40e_init_pf_fcoe(struct i40e_pf *pf)
 	pf->fcoe_hmc_filt_num = 0;
 
 	if (!pf->hw.func_caps.fcoe) {
-		dev_info(&pf->pdev->dev, "FCoE capability is disabled\n");
+		dev_dbg(&pf->pdev->dev, "FCoE capability is disabled\n");
 		return;
 	}
 
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index fee2127..23f36be 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -6518,9 +6518,9 @@ static void i40e_reset_and_rebuild(struct i40e_pf *pf, bool reinit)
 	/* make sure our flow control settings are restored */
 	ret = i40e_set_fc(&pf->hw, &set_fc_aq_fail, true);
 	if (ret)
-		dev_info(&pf->pdev->dev, "set fc fail, err %s aq_err %s\n",
-			 i40e_stat_str(&pf->hw, ret),
-			 i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status));
+		dev_dbg(&pf->pdev->dev, "setting flow control: ret = %s last_status = %s\n",
+			i40e_stat_str(&pf->hw, ret),
+			i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status));
 
 	/* Rebuild the VSIs and VEBs that existed before reset.
 	 * They are still in our local switch element arrays, so only
@@ -9877,8 +9877,14 @@ static void i40e_determine_queue_usage(struct i40e_pf *pf)
 	}
 
 	pf->queues_left = queues_left;
+	dev_dbg(&pf->pdev->dev,
+		"qs_avail=%d FD SB=%d lan_qs=%d lan_tc0=%d vf=%d*%d vmdq=%d*%d, remaining=%d\n",
+		pf->hw.func_caps.num_tx_qp,
+		!!(pf->flags & I40E_FLAG_FD_SB_ENABLED),
+		pf->num_lan_qps, pf->rss_size, pf->num_req_vfs, pf->num_vf_qps,
+		pf->num_vmdq_vsis, pf->num_vmdq_qps, queues_left);
 #ifdef I40E_FCOE
-	dev_info(&pf->pdev->dev, "fcoe queues = %d\n", pf->num_fcoe_qps);
+	dev_dbg(&pf->pdev->dev, "fcoe queues = %d\n", pf->num_fcoe_qps);
 #endif
 }
 
@@ -10364,10 +10370,9 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	/* get the requested speeds from the fw */
 	err = i40e_aq_get_phy_capabilities(hw, false, false, &abilities, NULL);
 	if (err)
-		dev_info(&pf->pdev->dev,
-			 "get phy capabilities failed, err %s aq_err %s, advertised speed settings may not be correct\n",
-			 i40e_stat_str(&pf->hw, err),
-			 i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status));
+		dev_dbg(&pf->pdev->dev, "get requested speeds ret =  %s last_status =  %s\n",
+			i40e_stat_str(&pf->hw, err),
+			i40e_aq_str(&pf->hw, pf->hw.aq.asq_last_status));
 	pf->hw.phy.link_info.requested_speeds = abilities.link_speed;
 
 	/* get the supported phy types from the fw */
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 04/15] i40e: Lock for VSI's MAC filter list
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (2 preceding siblings ...)
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 03/15] i40e: Change some messages from info to debug only Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-11 15:59   ` Bowers, AndrewX
  2015-09-29 19:08   ` Jesse Brandeburg
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 05/15] i40e: Remove 100M SGMII unless hw is X722 Catherine Sullivan
                   ` (10 subsequent siblings)
  14 siblings, 2 replies; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

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

This patch introduces a spinlock which is to be used for synchronizing
access to VSI's MAC filter list.

This patch also synchronizes execution of other codepaths which are
accessing VSI's MAC filter list with execution of
service_task:sync_vsi_filters.

In function i40e_add_vsi, copied out LAA MAC address instead of cloning
MAC filter entry because only MAC address is needed to remove MAC VLAN
filter from FW/HW.

Signed-off-by: Kiran Patil <kiran.patil@intel.com>
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Change-ID: I0e10ac7c715d44aa994239642aa4d57c998573a2
---
 drivers/net/ethernet/intel/i40e/i40e.h             |   2 +
 drivers/net/ethernet/intel/i40e/i40e_fcoe.c        |   2 +
 drivers/net/ethernet/intel/i40e/i40e_main.c        | 326 +++++++++++++++++----
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c |  26 +-
 4 files changed, 300 insertions(+), 56 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index 77148f3..a2a1d22 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -469,6 +469,8 @@ struct i40e_vsi {
 #define I40E_VSI_FLAG_VEB_OWNER		BIT(1)
 	unsigned long flags;
 
+	/* Per VSI lock to protect elements/list (MAC filter) */
+	spinlock_t mac_filter_list_lock;
 	struct list_head mac_filter_list;
 
 	/* VSI stats */
diff --git a/drivers/net/ethernet/intel/i40e/i40e_fcoe.c b/drivers/net/ethernet/intel/i40e/i40e_fcoe.c
index 2ec2411..61df19e 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_fcoe.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_fcoe.c
@@ -1516,10 +1516,12 @@ void i40e_fcoe_config_netdev(struct net_device *netdev, struct i40e_vsi *vsi)
 	 * same PCI function.
 	 */
 	netdev->dev_port = 1;
+	spin_lock(&vsi->mac_filter_list_lock);
 	i40e_add_filter(vsi, hw->mac.san_addr, 0, false, false);
 	i40e_add_filter(vsi, (u8[6]) FC_FCOE_FLOGI_MAC, 0, false, false);
 	i40e_add_filter(vsi, FIP_ALL_FCOE_MACS, 0, false, false);
 	i40e_add_filter(vsi, FIP_ALL_ENODE_MACS, 0, false, false);
+	spin_unlock(&vsi->mac_filter_list_lock);
 
 	/* use san mac */
 	ether_addr_copy(netdev->dev_addr, hw->mac.san_addr);
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 23f36be..a323d6d 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -1212,6 +1212,9 @@ static struct i40e_mac_filter *i40e_find_filter(struct i40e_vsi *vsi,
 {
 	struct i40e_mac_filter *f;
 
+	WARN(!spin_is_locked(&vsi->mac_filter_list_lock),
+	     "Missing mac_filter_list_lock\n");
+
 	if (!vsi || !macaddr)
 		return NULL;
 
@@ -1240,6 +1243,9 @@ struct i40e_mac_filter *i40e_find_mac(struct i40e_vsi *vsi, u8 *macaddr,
 {
 	struct i40e_mac_filter *f;
 
+	WARN(!spin_is_locked(&vsi->mac_filter_list_lock),
+	     "Missing mac_filter_list_lock\n");
+
 	if (!vsi || !macaddr)
 		return NULL;
 
@@ -1262,6 +1268,9 @@ bool i40e_is_vsi_in_vlan(struct i40e_vsi *vsi)
 {
 	struct i40e_mac_filter *f;
 
+	WARN(!spin_is_locked(&vsi->mac_filter_list_lock),
+	     "Missing mac_filter_list_lock\n");
+
 	/* Only -1 for all the filters denotes not in vlan mode
 	 * so we have to go through all the list in order to make sure
 	 */
@@ -1290,6 +1299,9 @@ struct i40e_mac_filter *i40e_put_mac_in_vlan(struct i40e_vsi *vsi, u8 *macaddr,
 {
 	struct i40e_mac_filter *f;
 
+	WARN(!spin_is_locked(&vsi->mac_filter_list_lock),
+	     "Missing mac_filter_list_lock\n");
+
 	list_for_each_entry(f, &vsi->mac_filter_list, list) {
 		if (vsi->info.pvid)
 			f->vlan = le16_to_cpu(vsi->info.pvid);
@@ -1344,6 +1356,10 @@ static int i40e_rm_default_mac_filter(struct i40e_vsi *vsi, u8 *macaddr)
  * @is_netdev: make sure its a netdev filter, else doesn't matter
  *
  * Returns ptr to the filter object or NULL when no memory available.
+ *
+ * NOTE: This function is expected to be called with mac_filter_list_lock
+ * being held. If needed could add WARN/BUG_ON if lock is not held for debug
+ * purpose.
  **/
 struct i40e_mac_filter *i40e_add_filter(struct i40e_vsi *vsi,
 					u8 *macaddr, s16 vlan,
@@ -1351,6 +1367,9 @@ struct i40e_mac_filter *i40e_add_filter(struct i40e_vsi *vsi,
 {
 	struct i40e_mac_filter *f;
 
+	WARN(!spin_is_locked(&vsi->mac_filter_list_lock),
+	     "Missing mac_filter_list_lock\n");
+
 	if (!vsi || !macaddr)
 		return NULL;
 
@@ -1402,6 +1421,10 @@ add_filter_out:
  * @vlan: the vlan
  * @is_vf: make sure it's a VF filter, else doesn't matter
  * @is_netdev: make sure it's a netdev filter, else doesn't matter
+ *
+ * NOTE: This function is expected to be called with mac_filter_list_lock
+ * being held. If needed could add WARN/BUG_ON if lock is not held for debug
+ * purpose.
  **/
 void i40e_del_filter(struct i40e_vsi *vsi,
 		     u8 *macaddr, s16 vlan,
@@ -1409,6 +1432,9 @@ void i40e_del_filter(struct i40e_vsi *vsi,
 {
 	struct i40e_mac_filter *f;
 
+	WARN(!spin_is_locked(&vsi->mac_filter_list_lock),
+	     "Missing mac_filter_list_lock\n");
+
 	if (!vsi || !macaddr)
 		return;
 
@@ -1520,10 +1546,12 @@ static int i40e_set_mac(struct net_device *netdev, void *p)
 		element.flags = cpu_to_le16(I40E_AQC_MACVLAN_ADD_PERFECT_MATCH);
 		i40e_aq_add_macvlan(&pf->hw, vsi->seid, &element, 1, NULL);
 	} else {
+		spin_lock(&vsi->mac_filter_list_lock);
 		f = i40e_add_filter(vsi, addr->sa_data, I40E_VLAN_ANY,
 				    false, false);
 		if (f)
 			f->is_laa = true;
+		spin_unlock(&vsi->mac_filter_list_lock);
 	}
 
 	i40e_sync_vsi_filters(vsi);
@@ -1696,6 +1724,8 @@ static void i40e_set_rx_mode(struct net_device *netdev)
 	struct netdev_hw_addr *mca;
 	struct netdev_hw_addr *ha;
 
+	spin_lock(&vsi->mac_filter_list_lock);
+
 	/* add addr if not already in the filter list */
 	netdev_for_each_uc_addr(uca, netdev) {
 		if (!i40e_find_mac(vsi, uca->addr, false, true)) {
@@ -1743,6 +1773,7 @@ static void i40e_set_rx_mode(struct net_device *netdev)
 bottom_of_search_loop:
 		continue;
 	}
+	spin_unlock(&vsi->mac_filter_list_lock);
 
 	/* check for other flag changes */
 	if (vsi->current_netdev_flags != vsi->netdev->flags) {
@@ -1752,6 +1783,79 @@ bottom_of_search_loop:
 }
 
 /**
+ * i40e_mac_filter_entry_clone - Clones a MAC filter entry
+ * @src: source MAC filter entry to be clones
+ *
+ * Returns the pointer to newly cloned MAC filter entry or NULL
+ * in case of error
+ **/
+static struct i40e_mac_filter *i40e_mac_filter_entry_clone(
+					struct i40e_mac_filter *src)
+{
+	struct i40e_mac_filter *f;
+
+	f = kzalloc(sizeof(*f), GFP_ATOMIC);
+	if (!f)
+		return NULL;
+	*f = *src;
+
+	INIT_LIST_HEAD(&f->list);
+
+	return f;
+}
+
+/**
+ * i40e_undo_del_filter_entries - Undo the changes made to MAC filter entries
+ * @from: Pointer to list which contains MAC filter entries - changes to
+ *        those entries needs to be undone.
+ *
+ * MAC filter entries from list were slated to be removed from device.
+ **/
+static void i40e_undo_del_filter_entries(struct i40e_vsi *vsi,
+					 struct list_head *from)
+{
+	struct i40e_mac_filter *f, *ftmp;
+
+	list_for_each_entry_safe(f, ftmp, from, list) {
+		f->changed = true;
+		/* Move the element back into MAC filter list*/
+		list_move_tail(&f->list, &vsi->mac_filter_list);
+	}
+}
+
+/**
+ * i40e_undo_add_filter_entries - Undo the changes made to MAC filter entries
+ * @from: Pointer to list which contains MAC filter entries - changes to
+ *        those entries needs to be undone.
+ *
+ * MAC filter entries from list were slated to be added from device.
+ **/
+static void i40e_undo_add_filter_entries(struct i40e_vsi *vsi)
+{
+	struct i40e_mac_filter *f, *ftmp;
+
+	list_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {
+		if (!f->changed && f->counter)
+			f->changed = true;
+	}
+}
+
+/**
+ * i40e_cleanup_add_list - Deletes the element from add list and release
+ *			memory
+ * @from: Pointer to list which contains MAC filter entries
+ **/
+static void i40e_cleanup_add_list(struct list_head *add_list)
+{
+	struct i40e_mac_filter *f, *ftmp;
+
+	list_for_each_entry_safe(f, ftmp, add_list, list) {
+		list_del(&f->list);
+		kfree(f);
+	}
+}
+
+/**
  * i40e_sync_vsi_filters - Update the VSI filter list to the HW
  * @vsi: ptr to the VSI
  *
@@ -1761,11 +1865,13 @@ bottom_of_search_loop:
  **/
 int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
 {
-	struct i40e_mac_filter *f, *ftmp;
+	struct list_head tmp_del_list, tmp_add_list;
+	struct i40e_mac_filter *f, *ftmp, *fclone;
 	bool promisc_forced_on = false;
 	bool add_happened = false;
 	int filter_list_len = 0;
 	u32 changed_flags = 0;
+	bool err_cond = false;
 	i40e_status ret = 0;
 	struct i40e_pf *pf;
 	int num_add = 0;
@@ -1786,17 +1892,13 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
 		vsi->current_netdev_flags = vsi->netdev->flags;
 	}
 
+	INIT_LIST_HEAD(&tmp_del_list);
+	INIT_LIST_HEAD(&tmp_add_list);
+
 	if (vsi->flags & I40E_VSI_FLAG_FILTER_CHANGED) {
 		vsi->flags &= ~I40E_VSI_FLAG_FILTER_CHANGED;
 
-		filter_list_len = pf->hw.aq.asq_buf_size /
-			    sizeof(struct i40e_aqc_remove_macvlan_element_data);
-		del_list = kcalloc(filter_list_len,
-			    sizeof(struct i40e_aqc_remove_macvlan_element_data),
-			    GFP_KERNEL);
-		if (!del_list)
-			return -ENOMEM;
-
+		spin_lock(&vsi->mac_filter_list_lock);
 		list_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {
 			if (!f->changed)
 				continue;
@@ -1804,6 +1906,58 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
 			if (f->counter != 0)
 				continue;
 			f->changed = false;
+
+			/* Move the element into temporary del_list */
+			list_move_tail(&f->list, &tmp_del_list);
+		}
+
+		list_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {
+			if (!f->changed)
+				continue;
+
+			if (f->counter == 0)
+				continue;
+			f->changed = false;
+
+			/* Clone MAC filter entry and add into temporary list */
+			fclone = i40e_mac_filter_entry_clone(f);
+			if (!fclone) {
+				err_cond = true;
+				break;
+			}
+			list_add_tail(&fclone->list, &tmp_add_list);
+		}
+
+		/* if failed to clone MAC filter entry - undo */
+		if (err_cond) {
+			i40e_undo_del_filter_entries(vsi, &tmp_del_list);
+			i40e_undo_add_filter_entries(vsi);
+		}
+		spin_unlock(&vsi->mac_filter_list_lock);
+
+		if (err_cond)
+			i40e_cleanup_add_list(&tmp_add_list);
+	}
+
+	/* Now process 'del_list' outside the lock */
+	if (!list_empty(&tmp_del_list)) {
+		filter_list_len = pf->hw.aq.asq_buf_size /
+			    sizeof(struct i40e_aqc_remove_macvlan_element_data);
+		del_list = kcalloc(filter_list_len,
+			    sizeof(struct i40e_aqc_remove_macvlan_element_data),
+			    GFP_KERNEL);
+		if (!del_list) {
+			i40e_cleanup_add_list(&tmp_add_list);
+
+			/* Undo VSI's MAC filter entry element updates */
+			spin_lock(&vsi->mac_filter_list_lock);
+			i40e_undo_del_filter_entries(vsi, &tmp_del_list);
+			i40e_undo_add_filter_entries(vsi);
+			spin_unlock(&vsi->mac_filter_list_lock);
+			return -ENOMEM;
+		}
+
+		list_for_each_entry_safe(f, ftmp, &tmp_del_list, list) {
 			cmd_flags = 0;
 
 			/* add to delete list */
@@ -1816,10 +1970,6 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
 			del_list[num_del].flags = cmd_flags;
 			num_del++;
 
-			/* unlink from filter list */
-			list_del(&f->list);
-			kfree(f);
-
 			/* flush a full buffer */
 			if (num_del == filter_list_len) {
 				ret = i40e_aq_remove_macvlan(&pf->hw,
@@ -1830,12 +1980,18 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
 				memset(del_list, 0, sizeof(*del_list));
 
 				if (ret && aq_err != I40E_AQ_RC_ENOENT)
-					dev_info(&pf->pdev->dev,
-						 "ignoring delete macvlan error, err %s, aq_err %s while flushing a full buffer\n",
-						 i40e_stat_str(&pf->hw, ret),
-						 i40e_aq_str(&pf->hw, aq_err));
+					dev_err(&pf->pdev->dev,
+						"ignoring delete macvlan error, err %s, aq_err %s while flushing a full buffer\n",
+						i40e_stat_str(&pf->hw, ret),
+						i40e_aq_str(&pf->hw, aq_err));
 			}
+			/* Release memory for MAC filter entries which were
+			 * synced up with HW.
+			 */
+			list_del(&f->list);
+			kfree(f);
 		}
+
 		if (num_del) {
 			ret = i40e_aq_remove_macvlan(&pf->hw, vsi->seid,
 						     del_list, num_del, NULL);
@@ -1851,6 +2007,9 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
 
 		kfree(del_list);
 		del_list = NULL;
+	}
+
+	if (!list_empty(&tmp_add_list)) {
 
 		/* do all the adds now */
 		filter_list_len = pf->hw.aq.asq_buf_size /
@@ -1858,16 +2017,19 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
 		add_list = kcalloc(filter_list_len,
 			       sizeof(struct i40e_aqc_add_macvlan_element_data),
 			       GFP_KERNEL);
-		if (!add_list)
+		if (!add_list) {
+			/* Purge element from temporary lists */
+			i40e_cleanup_add_list(&tmp_add_list);
+
+			/* Undo add filter entries from VSI MAC filter list */
+			spin_lock(&vsi->mac_filter_list_lock);
+			i40e_undo_add_filter_entries(vsi);
+			spin_unlock(&vsi->mac_filter_list_lock);
 			return -ENOMEM;
+		}
 
-		list_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {
-			if (!f->changed)
-				continue;
+		list_for_each_entry_safe(f, ftmp, &tmp_add_list, list) {
 
-			if (f->counter == 0)
-				continue;
-			f->changed = false;
 			add_happened = true;
 			cmd_flags = 0;
 
@@ -1894,7 +2056,13 @@ int i40e_sync_vsi_filters(struct i40e_vsi *vsi)
 					break;
 				memset(add_list, 0, sizeof(*add_list));
 			}
+			/* Entries from tmp_add_list were cloned from MAC
+			 * filter list, hence clean those cloned entries
+			 */
+			list_del(&f->list);
+			kfree(f);
 		}
+
 		if (num_add) {
 			ret = i40e_aq_add_macvlan(&pf->hw, vsi->seid,
 						  add_list, num_add, NULL);
@@ -2122,6 +2290,9 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)
 	is_vf = (vsi->type == I40E_VSI_SRIOV);
 	is_netdev = !!(vsi->netdev);
 
+	/* Locked once because all functions invoked below iterates list*/
+	spin_lock(&vsi->mac_filter_list_lock);
+
 	if (is_netdev) {
 		add_f = i40e_add_filter(vsi, vsi->netdev->dev_addr, vid,
 					is_vf, is_netdev);
@@ -2129,6 +2300,7 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)
 			dev_info(&vsi->back->pdev->dev,
 				 "Could not add vlan filter %d for %pM\n",
 				 vid, vsi->netdev->dev_addr);
+			spin_unlock(&vsi->mac_filter_list_lock);
 			return -ENOMEM;
 		}
 	}
@@ -2139,6 +2311,7 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)
 			dev_info(&vsi->back->pdev->dev,
 				 "Could not add vlan filter %d for %pM\n",
 				 vid, f->macaddr);
+			spin_unlock(&vsi->mac_filter_list_lock);
 			return -ENOMEM;
 		}
 	}
@@ -2160,6 +2333,7 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)
 				dev_info(&vsi->back->pdev->dev,
 					 "Could not add filter 0 for %pM\n",
 					 vsi->netdev->dev_addr);
+				spin_unlock(&vsi->mac_filter_list_lock);
 				return -ENOMEM;
 			}
 		}
@@ -2168,22 +2342,28 @@ int i40e_vsi_add_vlan(struct i40e_vsi *vsi, s16 vid)
 	/* Do not assume that I40E_VLAN_ANY should be reset to VLAN 0 */
 	if (vid > 0 && !vsi->info.pvid) {
 		list_for_each_entry(f, &vsi->mac_filter_list, list) {
-			if (i40e_find_filter(vsi, f->macaddr, I40E_VLAN_ANY,
-					     is_vf, is_netdev)) {
-				i40e_del_filter(vsi, f->macaddr, I40E_VLAN_ANY,
-						is_vf, is_netdev);
-				add_f = i40e_add_filter(vsi, f->macaddr,
-							0, is_vf, is_netdev);
-				if (!add_f) {
-					dev_info(&vsi->back->pdev->dev,
-						 "Could not add filter 0 for %pM\n",
-						 f->macaddr);
-					return -ENOMEM;
-				}
+			if (!i40e_find_filter(vsi, f->macaddr, I40E_VLAN_ANY,
+					      is_vf, is_netdev))
+				continue;
+			i40e_del_filter(vsi, f->macaddr, I40E_VLAN_ANY,
+					is_vf, is_netdev);
+			add_f = i40e_add_filter(vsi, f->macaddr,
+						0, is_vf, is_netdev);
+			if (!add_f) {
+				dev_info(&vsi->back->pdev->dev,
+					 "Could not add filter 0 for %pM\n",
+					f->macaddr);
+				spin_unlock(&vsi->mac_filter_list_lock);
+				return -ENOMEM;
 			}
 		}
 	}
 
+	/* Make sure to release before sync_vsi_filter because that
+	 * function will lock/unlock as necessary
+	 */
+	spin_unlock(&vsi->mac_filter_list_lock);
+
 	if (test_bit(__I40E_DOWN, &vsi->back->state) ||
 	    test_bit(__I40E_RESET_RECOVERY_PENDING, &vsi->back->state))
 		return 0;
@@ -2208,6 +2388,9 @@ int i40e_vsi_kill_vlan(struct i40e_vsi *vsi, s16 vid)
 	is_vf = (vsi->type == I40E_VSI_SRIOV);
 	is_netdev = !!(netdev);
 
+	/* Locked once because all functions invoked below iterates list */
+	spin_lock(&vsi->mac_filter_list_lock);
+
 	if (is_netdev)
 		i40e_del_filter(vsi, netdev->dev_addr, vid, is_vf, is_netdev);
 
@@ -2238,6 +2421,7 @@ int i40e_vsi_kill_vlan(struct i40e_vsi *vsi, s16 vid)
 			dev_info(&vsi->back->pdev->dev,
 				 "Could not add filter %d for %pM\n",
 				 I40E_VLAN_ANY, netdev->dev_addr);
+			spin_unlock(&vsi->mac_filter_list_lock);
 			return -ENOMEM;
 		}
 	}
@@ -2246,16 +2430,22 @@ int i40e_vsi_kill_vlan(struct i40e_vsi *vsi, s16 vid)
 		list_for_each_entry(f, &vsi->mac_filter_list, list) {
 			i40e_del_filter(vsi, f->macaddr, 0, is_vf, is_netdev);
 			add_f = i40e_add_filter(vsi, f->macaddr, I40E_VLAN_ANY,
-					    is_vf, is_netdev);
+						is_vf, is_netdev);
 			if (!add_f) {
 				dev_info(&vsi->back->pdev->dev,
 					 "Could not add filter %d for %pM\n",
 					 I40E_VLAN_ANY, f->macaddr);
+				spin_unlock(&vsi->mac_filter_list_lock);
 				return -ENOMEM;
 			}
 		}
 	}
 
+	/* Make sure to release before sync_vsi_filter because that
+	 * function with lock/unlock as necessary
+	 */
+	spin_unlock(&vsi->mac_filter_list_lock);
+
 	if (test_bit(__I40E_DOWN, &vsi->back->state) ||
 	    test_bit(__I40E_RESET_RECOVERY_PENDING, &vsi->back->state))
 		return 0;
@@ -6987,6 +7177,8 @@ static int i40e_vsi_mem_alloc(struct i40e_pf *pf, enum i40e_vsi_type type)
 	/* Setup default MSIX irq handler for VSI */
 	i40e_vsi_setup_irqhandler(vsi, i40e_msix_clean_rings);
 
+	/* Initialize VSI lock */
+	spin_lock_init(&vsi->mac_filter_list_lock);
 	pf->vsi[vsi_idx] = vsi;
 	ret = vsi_idx;
 	goto unlock_pf;
@@ -8510,17 +8702,26 @@ static int i40e_config_netdev(struct i40e_vsi *vsi)
 		 * default a MAC-VLAN filter that accepts any tagged packet
 		 * which must be replaced by a normal filter.
 		 */
-		if (!i40e_rm_default_mac_filter(vsi, mac_addr))
+		if (!i40e_rm_default_mac_filter(vsi, mac_addr)) {
+			spin_lock(&vsi->mac_filter_list_lock);
 			i40e_add_filter(vsi, mac_addr,
 					I40E_VLAN_ANY, false, true);
+			spin_unlock(&vsi->mac_filter_list_lock);
+		}
 	} else {
 		/* relate the VSI_VMDQ name to the VSI_MAIN name */
 		snprintf(netdev->name, IFNAMSIZ, "%sv%%d",
 			 pf->vsi[pf->lan_vsi]->netdev->name);
 		random_ether_addr(mac_addr);
+
+		spin_lock(&vsi->mac_filter_list_lock);
 		i40e_add_filter(vsi, mac_addr, I40E_VLAN_ANY, false, false);
+		spin_unlock(&vsi->mac_filter_list_lock);
 	}
+
+	spin_lock(&vsi->mac_filter_list_lock);
 	i40e_add_filter(vsi, brdcast, I40E_VLAN_ANY, false, false);
+	spin_unlock(&vsi->mac_filter_list_lock);
 
 	ether_addr_copy(netdev->dev_addr, mac_addr);
 	ether_addr_copy(netdev->perm_addr, mac_addr);
@@ -8594,10 +8795,13 @@ int i40e_is_vsi_uplink_mode_veb(struct i40e_vsi *vsi)
 static int i40e_add_vsi(struct i40e_vsi *vsi)
 {
 	int ret = -ENODEV;
-	struct i40e_mac_filter *f, *ftmp;
+	u8 laa_macaddr[ETH_ALEN];
+	bool found_laa_mac_filter = false;
 	struct i40e_pf *pf = vsi->back;
 	struct i40e_hw *hw = &pf->hw;
 	struct i40e_vsi_context ctxt;
+	struct i40e_mac_filter *f, *ftmp;
+
 	u8 enabled_tc = 0x1; /* TC0 enabled */
 	int f_count = 0;
 
@@ -8769,32 +8973,41 @@ static int i40e_add_vsi(struct i40e_vsi *vsi)
 		vsi->id = ctxt.vsi_number;
 	}
 
+	spin_lock(&vsi->mac_filter_list_lock);
 	/* If macvlan filters already exist, force them to get loaded */
 	list_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list) {
 		f->changed = true;
 		f_count++;
 
+		/* Expected to have only one MAC filter entry for LAA in list */
 		if (f->is_laa && vsi->type == I40E_VSI_MAIN) {
-			struct i40e_aqc_remove_macvlan_element_data element;
+			ether_addr_copy(laa_macaddr, f->macaddr);
+			found_laa_mac_filter = true;
+		}
+	}
+	spin_unlock(&vsi->mac_filter_list_lock);
 
-			memset(&element, 0, sizeof(element));
-			ether_addr_copy(element.mac_addr, f->macaddr);
-			element.flags = I40E_AQC_MACVLAN_DEL_PERFECT_MATCH;
-			ret = i40e_aq_remove_macvlan(hw, vsi->seid,
-						     &element, 1, NULL);
-			if (ret) {
-				/* some older FW has a different default */
-				element.flags |=
-					       I40E_AQC_MACVLAN_DEL_IGNORE_VLAN;
-				i40e_aq_remove_macvlan(hw, vsi->seid,
-						       &element, 1, NULL);
-			}
+	if (found_laa_mac_filter) {
+		struct i40e_aqc_remove_macvlan_element_data element;
 
-			i40e_aq_mac_address_write(hw,
-						  I40E_AQC_WRITE_TYPE_LAA_WOL,
-						  f->macaddr, NULL);
+		memset(&element, 0, sizeof(element));
+		ether_addr_copy(element.mac_addr, laa_macaddr);
+		element.flags = I40E_AQC_MACVLAN_DEL_PERFECT_MATCH;
+		ret = i40e_aq_remove_macvlan(hw, vsi->seid,
+					     &element, 1, NULL);
+		if (ret) {
+			/* some older FW has a different default */
+			element.flags |=
+				       I40E_AQC_MACVLAN_DEL_IGNORE_VLAN;
+			i40e_aq_remove_macvlan(hw, vsi->seid,
+					       &element, 1, NULL);
 		}
+
+		i40e_aq_mac_address_write(hw,
+					  I40E_AQC_WRITE_TYPE_LAA_WOL,
+					  laa_macaddr, NULL);
 	}
+
 	if (f_count) {
 		vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
 		pf->flags |= I40E_FLAG_FILTER_SYNC;
@@ -8857,9 +9070,12 @@ int i40e_vsi_release(struct i40e_vsi *vsi)
 		i40e_vsi_disable_irq(vsi);
 	}
 
+	spin_lock(&vsi->mac_filter_list_lock);
 	list_for_each_entry_safe(f, ftmp, &vsi->mac_filter_list, list)
 		i40e_del_filter(vsi, f->macaddr, f->vlan,
 				f->is_vf, f->is_netdev);
+	spin_unlock(&vsi->mac_filter_list_lock);
+
 	i40e_sync_vsi_filters(vsi);
 
 	i40e_vsi_delete(vsi);
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index 17c21b9..4e383f9 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -547,6 +547,8 @@ static int i40e_alloc_vsi_res(struct i40e_vf *vf, enum i40e_vsi_type type)
 		 */
 		if (vf->port_vlan_id)
 			i40e_vsi_add_pvid(vsi, vf->port_vlan_id);
+
+		spin_lock(&vsi->mac_filter_list_lock);
 		f = i40e_add_filter(vsi, vf->default_lan_addr.addr,
 				    vf->port_vlan_id ? vf->port_vlan_id : -1,
 				    true, false);
@@ -559,6 +561,7 @@ static int i40e_alloc_vsi_res(struct i40e_vf *vf, enum i40e_vsi_type type)
 		if (!f)
 			dev_info(&pf->pdev->dev,
 				 "Could not allocate VF broadcast filter\n");
+		spin_unlock(&vsi->mac_filter_list_lock);
 	}
 
 	/* program mac filter */
@@ -1592,6 +1595,11 @@ static int i40e_vc_add_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
 	}
 	vsi = pf->vsi[vf->lan_vsi_idx];
 
+	/* Lock once, because all function inside for loop accesses VSI's
+	 * MAC filter list which needs to be protected using same lock.
+	 */
+	spin_lock(&vsi->mac_filter_list_lock);
+
 	/* add new addresses to the list */
 	for (i = 0; i < al->num_elements; i++) {
 		struct i40e_mac_filter *f;
@@ -1610,9 +1618,11 @@ static int i40e_vc_add_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
 			dev_err(&pf->pdev->dev,
 				"Unable to add VF MAC filter\n");
 			ret = I40E_ERR_PARAM;
+			spin_unlock(&vsi->mac_filter_list_lock);
 			goto error_param;
 		}
 	}
+	spin_unlock(&vsi->mac_filter_list_lock);
 
 	/* program the updated filter list */
 	if (i40e_sync_vsi_filters(vsi))
@@ -1660,10 +1670,12 @@ static int i40e_vc_del_mac_addr_msg(struct i40e_vf *vf, u8 *msg, u16 msglen)
 	}
 	vsi = pf->vsi[vf->lan_vsi_idx];
 
+	spin_lock(&vsi->mac_filter_list_lock);
 	/* delete addresses from the list */
 	for (i = 0; i < al->num_elements; i++)
 		i40e_del_filter(vsi, al->list[i].addr,
 				I40E_VLAN_ANY, true, false);
+	spin_unlock(&vsi->mac_filter_list_lock);
 
 	/* program the updated filter list */
 	if (i40e_sync_vsi_filters(vsi))
@@ -2060,6 +2072,11 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac)
 		goto error_param;
 	}
 
+	/* Lock once because below invoked function add/del_filter requires
+	 * mac_filter_list_lock to be held
+	 */
+	spin_lock(&vsi->mac_filter_list_lock);
+
 	/* delete the temporary mac address */
 	i40e_del_filter(vsi, vf->default_lan_addr.addr,
 			vf->port_vlan_id ? vf->port_vlan_id : -1,
@@ -2071,6 +2088,8 @@ int i40e_ndo_set_vf_mac(struct net_device *netdev, int vf_id, u8 *mac)
 	list_for_each_entry(f, &vsi->mac_filter_list, list)
 		i40e_del_filter(vsi, f->macaddr, f->vlan, true, false);
 
+	spin_unlock(&vsi->mac_filter_list_lock);
+
 	dev_info(&pf->pdev->dev, "Setting MAC %pM on VF %d\n", mac, vf_id);
 	/* program mac filter */
 	if (i40e_sync_vsi_filters(vsi)) {
@@ -2103,6 +2122,7 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
 	u16 vlanprio = vlan_id | (qos << I40E_VLAN_PRIORITY_SHIFT);
 	struct i40e_netdev_priv *np = netdev_priv(netdev);
 	struct i40e_pf *pf = np->vsi->back;
+	bool is_vsi_in_vlan = false;
 	struct i40e_vsi *vsi;
 	struct i40e_vf *vf;
 	int ret = 0;
@@ -2132,7 +2152,11 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
 		/* duplicate request, so just return success */
 		goto error_pvid;
 
-	if (le16_to_cpu(vsi->info.pvid) == 0 && i40e_is_vsi_in_vlan(vsi)) {
+	spin_lock(&vsi->mac_filter_list_lock);
+	is_vsi_in_vlan = i40e_is_vsi_in_vlan(vsi);
+	spin_unlock(&vsi->mac_filter_list_lock);
+
+	if (le16_to_cpu(vsi->info.pvid) == 0 && is_vsi_in_vlan) {
 		dev_err(&pf->pdev->dev,
 			"VF %d has already configured VLAN filters and the administrator is requesting a port VLAN override.\nPlease unload and reload the VF driver for this change to take effect.\n",
 			vf_id);
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 05/15] i40e: Remove 100M SGMII unless hw is X722
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (3 preceding siblings ...)
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 04/15] i40e: Lock for VSI's MAC filter list Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-11 16:03   ` Bowers, AndrewX
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 06/15] i40e/i40evf: Add WB_ON_ITR offload support Catherine Sullivan
                   ` (9 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

Only the X722 device now supports 100M SGMII, and nothing supports
100M on 1000Base_T.

Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Change-ID: I6f44dcd818944edd40041410e6de380f4a359a0c
---
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 42 ++++++++++++++++----------
 1 file changed, 26 insertions(+), 16 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index 185ac91..a22f1d9 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -255,7 +255,8 @@ static void i40e_partition_setting_complaint(struct i40e_pf *pf)
  **/
 static void i40e_get_settings_link_up(struct i40e_hw *hw,
 				      struct ethtool_cmd *ecmd,
-				      struct net_device *netdev)
+				      struct net_device *netdev,
+				      struct i40e_pf *pf)
 {
 	struct i40e_link_status *hw_link_info = &hw->phy.link_info;
 	u32 link_speed = hw_link_info->link_speed;
@@ -299,16 +300,18 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
 		break;
 	case I40E_PHY_TYPE_10GBASE_T:
 	case I40E_PHY_TYPE_1000BASE_T:
-	case I40E_PHY_TYPE_100BASE_TX:
 		ecmd->supported = SUPPORTED_Autoneg |
 				  SUPPORTED_10000baseT_Full |
-				  SUPPORTED_1000baseT_Full |
-				  SUPPORTED_100baseT_Full;
+				  SUPPORTED_1000baseT_Full;
 		ecmd->advertising = ADVERTISED_Autoneg;
 		if (hw_link_info->requested_speeds & I40E_LINK_SPEED_10GB)
 			ecmd->advertising |= ADVERTISED_10000baseT_Full;
 		if (hw_link_info->requested_speeds & I40E_LINK_SPEED_1GB)
 			ecmd->advertising |= ADVERTISED_1000baseT_Full;
+		break;
+	case I40E_PHY_TYPE_100BASE_TX:
+		ecmd->supported = SUPPORTED_Autoneg |
+				  SUPPORTED_100baseT_Full;
 		if (hw_link_info->requested_speeds & I40E_LINK_SPEED_100MB)
 			ecmd->advertising |= ADVERTISED_100baseT_Full;
 		break;
@@ -328,12 +331,15 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
 		break;
 	case I40E_PHY_TYPE_SGMII:
 		ecmd->supported = SUPPORTED_Autoneg |
-				  SUPPORTED_1000baseT_Full |
-				  SUPPORTED_100baseT_Full;
+				  SUPPORTED_1000baseT_Full;
 		if (hw_link_info->requested_speeds & I40E_LINK_SPEED_1GB)
 			ecmd->advertising |= ADVERTISED_1000baseT_Full;
-		if (hw_link_info->requested_speeds & I40E_LINK_SPEED_100MB)
-			ecmd->advertising |= ADVERTISED_100baseT_Full;
+		if (pf->hw.mac.type == I40E_MAC_X722) {
+			ecmd->supported |= SUPPORTED_100baseT_Full;
+			if (hw_link_info->requested_speeds &
+			    I40E_LINK_SPEED_100MB)
+				ecmd->advertising |= ADVERTISED_100baseT_Full;
+		}
 		break;
 	/* Backplane is set based on supported phy types in get_settings
 	 * so don't set anything here but don't warn either
@@ -381,7 +387,8 @@ static void i40e_get_settings_link_up(struct i40e_hw *hw,
  * Reports link settings that can be determined when link is down
  **/
 static void i40e_get_settings_link_down(struct i40e_hw *hw,
-					struct ethtool_cmd *ecmd)
+					struct ethtool_cmd *ecmd,
+					struct i40e_pf *pf)
 {
 	enum i40e_aq_capabilities_phy_type phy_types = hw->phy.phy_types;
 
@@ -392,11 +399,13 @@ static void i40e_get_settings_link_down(struct i40e_hw *hw,
 	ecmd->advertising = 0x0;
 	if (phy_types & I40E_CAP_PHY_TYPE_SGMII) {
 		ecmd->supported |= SUPPORTED_Autoneg |
-				   SUPPORTED_1000baseT_Full |
-				   SUPPORTED_100baseT_Full;
+				SUPPORTED_1000baseT_Full;
 		ecmd->advertising |= ADVERTISED_Autoneg |
-				     ADVERTISED_1000baseT_Full |
-				     ADVERTISED_100baseT_Full;
+				     ADVERTISED_1000baseT_Full;
+		if (pf->hw.mac.type == I40E_MAC_X722) {
+			ecmd->supported |= SUPPORTED_100baseT_Full;
+			ecmd->advertising |= ADVERTISED_100baseT_Full;
+		}
 	}
 	if (phy_types & I40E_CAP_PHY_TYPE_XAUI ||
 	    phy_types & I40E_CAP_PHY_TYPE_XFI ||
@@ -425,7 +434,8 @@ static void i40e_get_settings_link_down(struct i40e_hw *hw,
 		ecmd->advertising |= ADVERTISED_Autoneg |
 				    ADVERTISED_40000baseCR4_Full;
 	}
-	if (phy_types & I40E_CAP_PHY_TYPE_100BASE_TX) {
+	if ((phy_types & I40E_CAP_PHY_TYPE_100BASE_TX) &&
+	    !(phy_types & I40E_CAP_PHY_TYPE_1000BASE_T)) {
 		ecmd->supported |= SUPPORTED_Autoneg |
 				   SUPPORTED_100baseT_Full;
 		ecmd->advertising |= ADVERTISED_Autoneg |
@@ -467,9 +477,9 @@ static int i40e_get_settings(struct net_device *netdev,
 	bool link_up = hw_link_info->link_info & I40E_AQ_LINK_UP;
 
 	if (link_up)
-		i40e_get_settings_link_up(hw, ecmd, netdev);
+		i40e_get_settings_link_up(hw, ecmd, netdev, pf);
 	else
-		i40e_get_settings_link_down(hw, ecmd);
+		i40e_get_settings_link_down(hw, ecmd, pf);
 
 	/* Now set the settings that don't rely on link being up/down */
 
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 06/15] i40e/i40evf: Add WB_ON_ITR offload support
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (4 preceding siblings ...)
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 05/15] i40e: Remove 100M SGMII unless hw is X722 Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-11 16:08   ` Bowers, AndrewX
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 07/15] i40e: remove obsolete version check Catherine Sullivan
                   ` (8 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

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

X722 has a way to work around the descriptor WB issue,
this offload helps turn that feature on.

Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Change-ID: I7ffa67622426bfca5a651417b63e3afcfeb60412
---
 drivers/net/ethernet/intel/i40e/i40e_virtchnl.h     | 1 +
 drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c  | 4 ++++
 drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h   | 1 +
 drivers/net/ethernet/intel/i40evf/i40evf_main.c     | 5 +++++
 drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c | 3 ++-
 5 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h b/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h
index 95d0f8c..ae87982 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl.h
@@ -150,6 +150,7 @@ struct i40e_virtchnl_vsi_resource {
 #define I40E_VIRTCHNL_VF_OFFLOAD_FCOE		0x00000004
 #define I40E_VIRTCHNL_VF_OFFLOAD_RSS_AQ		0x00000008
 #define I40E_VIRTCHNL_VF_OFFLOAD_RSS_REG	0x00000010
+#define I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR	0x00000020
 #define I40E_VIRTCHNL_VF_OFFLOAD_VLAN		0x00010000
 #define I40E_VIRTCHNL_VF_OFFLOAD_RX_POLLING	0x00020000
 
diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index 4e383f9..465b1e9 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -1206,6 +1206,10 @@ static int i40e_vc_get_vf_resources_msg(struct i40e_vf *vf, u8 *msg)
 	} else {
 		vfres->vf_offload_flags |= I40E_VIRTCHNL_VF_OFFLOAD_RSS_REG;
 	}
+
+	if (vf->driver_caps & I40E_VIRTCHNL_VF_OFFLOAD_RX_POLLING)
+		vfres->vf_offload_flags |= I40E_VIRTCHNL_VF_OFFLOAD_RX_POLLING;
+
 	vfres->num_vsis = num_vsis;
 	vfres->num_queue_pairs = vf->num_queue_pairs;
 	vfres->max_vectors = pf->hw.func_caps.num_msix_vectors_vf;
diff --git a/drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h b/drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h
index cadda64..9f7b279 100644
--- a/drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h
+++ b/drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h
@@ -150,6 +150,7 @@ struct i40e_virtchnl_vsi_resource {
 #define I40E_VIRTCHNL_VF_OFFLOAD_FCOE		0x00000004
 #define I40E_VIRTCHNL_VF_OFFLOAD_RSS_AQ		0x00000008
 #define I40E_VIRTCHNL_VF_OFFLOAD_RSS_REG	0x00000010
+#define I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR	0x00000020
 #define I40E_VIRTCHNL_VF_OFFLOAD_VLAN		0x00010000
 #define I40E_VIRTCHNL_VF_OFFLOAD_RX_POLLING	0x00020000
 
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index 69767c0..feb9ad5 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -1123,6 +1123,8 @@ static int i40evf_alloc_queues(struct i40evf_adapter *adapter)
 		tx_ring->netdev = adapter->netdev;
 		tx_ring->dev = &adapter->pdev->dev;
 		tx_ring->count = adapter->tx_desc_count;
+		if (adapter->flags & I40E_FLAG_WB_ON_ITR_CAPABLE)
+			tx_ring->flags |= I40E_TXR_FLAGS_WB_ON_ITR;
 		adapter->tx_rings[i] = tx_ring;
 
 		rx_ring = &tx_ring[1];
@@ -2275,6 +2277,9 @@ static void i40evf_init_task(struct work_struct *work)
 	if (err)
 		goto err_sw_init;
 	i40evf_map_rings_to_vectors(adapter);
+	if (adapter->vf_res->vf_offload_flags &
+		    I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR)
+		adapter->flags |= I40EVF_FLAG_WB_ON_ITR_CAPABLE;
 	if (!RSS_AQ(adapter))
 		i40evf_configure_rss(adapter);
 	err = i40evf_request_misc_irq(adapter);
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
index 4f056ef..32e620e 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c
@@ -156,7 +156,8 @@ int i40evf_send_vf_config_msg(struct i40evf_adapter *adapter)
 	caps = I40E_VIRTCHNL_VF_OFFLOAD_L2 |
 	       I40E_VIRTCHNL_VF_OFFLOAD_RSS_AQ |
 	       I40E_VIRTCHNL_VF_OFFLOAD_RSS_REG |
-	       I40E_VIRTCHNL_VF_OFFLOAD_VLAN;
+	       I40E_VIRTCHNL_VF_OFFLOAD_VLAN |
+	       I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR;
 	adapter->current_op = I40E_VIRTCHNL_OP_GET_VF_RESOURCES;
 	adapter->aq_required &= ~I40EVF_FLAG_AQ_GET_CONFIG;
 	if (PF_IS_V11(adapter))
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 07/15] i40e: remove obsolete version check
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (5 preceding siblings ...)
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 06/15] i40e/i40evf: Add WB_ON_ITR offload support Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-11 16:09   ` Bowers, AndrewX
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 08/15] i40e: allow FD SB if MFP mode only has 1 partition Catherine Sullivan
                   ` (7 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

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

This version check only applies to very, very old firmware,
that only ran on A0 hardware, which we never shipped and don't
support in this driver anyway. Remove it, before somebody
gets hurt.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Change-ID: I3752d090ff488acf98ee76b075af961e9c968ee4
---
 drivers/net/ethernet/intel/i40e/i40e_main.c | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index a323d6d..dd04b61 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -6468,12 +6468,6 @@ static int i40e_get_capabilities(struct i40e_pf *pf)
 		}
 	} while (err);
 
-	if (((pf->hw.aq.fw_maj_ver == 2) && (pf->hw.aq.fw_min_ver < 22)) ||
-	    (pf->hw.aq.fw_maj_ver < 2)) {
-		pf->hw.func_caps.num_msix_vectors++;
-		pf->hw.func_caps.num_msix_vectors_vf++;
-	}
-
 	if (pf->hw.debug_mask & I40E_DEBUG_USER)
 		dev_info(&pf->pdev->dev,
 			 "pf=%d, num_vfs=%d, msix_pf=%d, msix_vf=%d, fd_g=%d, fd_b=%d, pf_max_q=%d num_vsi=%d\n",
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 08/15] i40e: allow FD SB if MFP mode only has 1 partition
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (6 preceding siblings ...)
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 07/15] i40e: remove obsolete version check Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-11 16:11   ` Bowers, AndrewX
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 09/15] i40e: remove FD atr control from debugfs Catherine Sullivan
                   ` (6 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

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

Even though the device might be in MFP mode, if there's only one partition
enabled, then we still have plenty of interrupts for managing the Flow
Directory Sideband activity.  This patch enables FD SB in this case.
This patch also reverses the sense of the conditional in order to remove
the negative logic.

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

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index dd04b61..6a28c04 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -8061,12 +8061,12 @@ static int i40e_sw_init(struct i40e_pf *pf)
 	    (pf->hw.func_caps.fd_filters_best_effort > 0)) {
 		pf->flags |= I40E_FLAG_FD_ATR_ENABLED;
 		pf->atr_sample_rate = I40E_DEFAULT_ATR_SAMPLE_RATE;
-		if (!(pf->flags & I40E_FLAG_MFP_ENABLED)) {
-			pf->flags |= I40E_FLAG_FD_SB_ENABLED;
-		} else {
+		if (pf->flags & I40E_FLAG_MFP_ENABLED &&
+		    pf->hw.num_partitions > 1)
 			dev_info(&pf->pdev->dev,
 				 "Flow Director Sideband mode Disabled in MFP mode\n");
-		}
+		else
+			pf->flags |= I40E_FLAG_FD_SB_ENABLED;
 		pf->fdir_pf_filter_count =
 				 pf->hw.func_caps.fd_filters_guaranteed;
 		pf->hw.fdir_shared_filter_count =
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 09/15] i40e: remove FD atr control from debugfs
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (7 preceding siblings ...)
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 08/15] i40e: allow FD SB if MFP mode only has 1 partition Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-11 16:14   ` Bowers, AndrewX
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 10/15] i40e/i40evf: remove redundant declarations of a variable and a function Catherine Sullivan
                   ` (5 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

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

Since the flow-director-atr priv flag was added to our ethtool interface,
we don't need the on/off control in debugfs.

Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Change-ID: Ib3b599916434ab30ccd40074e71d7a81609b5bb5
---
 drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 24 ------------------------
 1 file changed, 24 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
index e19d479..2f0e2f5 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_debugfs.c
@@ -953,24 +953,6 @@ static void i40e_dbg_dump_veb_all(struct i40e_pf *pf)
 	}
 }
 
-/**
- * i40e_dbg_cmd_fd_ctrl - Enable/disable FD sideband/ATR
- * @pf: the PF that would be altered
- * @flag: flag that needs enabling or disabling
- * @enable: Enable/disable FD SD/ATR
- **/
-static void i40e_dbg_cmd_fd_ctrl(struct i40e_pf *pf, u64 flag, bool enable)
-{
-	if (enable) {
-		pf->flags |= flag;
-	} else {
-		pf->flags &= ~flag;
-		pf->auto_disable_flags |= flag;
-	}
-	dev_info(&pf->pdev->dev, "requesting a PF reset\n");
-	i40e_do_reset_safe(pf, BIT(__I40E_PF_RESET_REQUESTED));
-}
-
 #define I40E_MAX_DEBUG_OUT_BUFFER (4096*4)
 /**
  * i40e_dbg_command_write - write into command datum
@@ -1759,10 +1741,6 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
 		raw_packet = NULL;
 		kfree(asc_packet);
 		asc_packet = NULL;
-	} else if (strncmp(cmd_buf, "fd-atr off", 10) == 0) {
-		i40e_dbg_cmd_fd_ctrl(pf, I40E_FLAG_FD_ATR_ENABLED, false);
-	} else if (strncmp(cmd_buf, "fd-atr on", 9) == 0) {
-		i40e_dbg_cmd_fd_ctrl(pf, I40E_FLAG_FD_ATR_ENABLED, true);
 	} else if (strncmp(cmd_buf, "fd current cnt", 14) == 0) {
 		dev_info(&pf->pdev->dev, "FD current total filter count for this interface: %d\n",
 			 i40e_get_current_fd_count(pf));
@@ -1989,8 +1967,6 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
 		dev_info(&pf->pdev->dev, "  send indirect aq_cmd <flags> <opcode> <datalen> <retval> <cookie_h> <cookie_l> <param0> <param1> <param2> <param3> <buffer_len>\n");
 		dev_info(&pf->pdev->dev, "  add fd_filter <dest q_index> <flex_off> <pctype> <dest_vsi> <dest_ctl> <fd_status> <cnt_index> <fd_id> <packet_len> <packet>\n");
 		dev_info(&pf->pdev->dev, "  rem fd_filter <dest q_index> <flex_off> <pctype> <dest_vsi> <dest_ctl> <fd_status> <cnt_index> <fd_id> <packet_len> <packet>\n");
-		dev_info(&pf->pdev->dev, "  fd-atr off\n");
-		dev_info(&pf->pdev->dev, "  fd-atr on\n");
 		dev_info(&pf->pdev->dev, "  fd current cnt");
 		dev_info(&pf->pdev->dev, "  lldp start\n");
 		dev_info(&pf->pdev->dev, "  lldp stop\n");
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 10/15] i40e/i40evf: remove redundant declarations of a variable and a function
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (8 preceding siblings ...)
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 09/15] i40e: remove FD atr control from debugfs Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-11 16:16   ` Bowers, AndrewX
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 11/15] i40e: Store off PHY capabilities Catherine Sullivan
                   ` (4 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

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

Remove a variable declaration inside an if block hiding an existing
declaration at the start of the function.

Also remove a forward function declaration that is no longer needed due
to code re-organization.

Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
Change-ID: I12954668b722718074949c93d74cd20eaacd93e4
---
 drivers/net/ethernet/intel/i40e/i40e_ethtool.c  | 3 ---
 drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 +-
 2 files changed, 1 insertion(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
index a22f1d9..d6b0788 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c
@@ -90,9 +90,6 @@ static const struct i40e_stats i40e_gstrings_misc_stats[] = {
 	I40E_VSI_STAT("tx_linearize", tx_linearize),
 };
 
-static int i40e_add_fdir_ethtool(struct i40e_vsi *vsi,
-				 struct ethtool_rxnfc *cmd);
-
 /* These PF_STATs might look like duplicates of some NETDEV_STATs,
  * but they are separate.  This device supports Virtualization, and
  * as such might have several netdevs supporting VMDq and FCoE going
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
index feb9ad5..f156226 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -1628,7 +1628,7 @@ static void i40evf_reset_task(struct work_struct *work)
 	/* extra wait to make sure minimum wait is met */
 	msleep(I40EVF_RESET_WAIT_MS);
 	if (i == I40EVF_RESET_WAIT_COUNT) {
-		struct i40evf_mac_filter *f, *ftmp;
+		struct i40evf_mac_filter *ftmp;
 		struct i40evf_vlan_filter *fv, *fvtmp;
 
 		/* reset never finished */
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 11/15] i40e: Store off PHY capabilities
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (9 preceding siblings ...)
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 10/15] i40e/i40evf: remove redundant declarations of a variable and a function Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-11 16:20   ` Bowers, AndrewX
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 12/15] i40e: X722 is on the IOSF bus and does not report the PCI bus info Catherine Sullivan
                   ` (3 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

From: Kevin Scott <kevin.c.scott@intel.com>

Store off reported PHY capabilities in link_info structure.

Signed-off-by: Kevin Scott <kevin.c.scott@intel.com>
Change-ID: Ife0f037c26983ca985dbf79abf33f8f8791369e8
---
 drivers/net/ethernet/intel/i40e/i40e_common.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
index c1d0dca..26bb922 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_common.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
@@ -1617,6 +1617,9 @@ i40e_status i40e_aq_get_phy_capabilities(struct i40e_hw *hw,
 	if (hw->aq.asq_last_status == I40E_AQ_RC_EIO)
 		status = I40E_ERR_UNKNOWN_PHY;
 
+	if (report_init)
+		hw->phy.phy_types = le32_to_cpu(abilities->phy_type);
+
 	return status;
 }
 
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 12/15] i40e: X722 is on the IOSF bus and does not report the PCI bus info
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (10 preceding siblings ...)
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 11/15] i40e: Store off PHY capabilities Catherine Sullivan
@ 2015-09-03 21:18 ` Catherine Sullivan
  2015-09-22 21:17   ` Bowers, AndrewX
  2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 13/15] i40e: remove unnecessary string copy operations Catherine Sullivan
                   ` (2 subsequent siblings)
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:18 UTC (permalink / raw
  To: intel-wired-lan

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

X722 will report Gen 1x1 in the PCI config space as it is on
IOSF bus, so skip the PCI bus link/speed check.

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

diff --git a/drivers/net/ethernet/intel/i40e/i40e.h b/drivers/net/ethernet/intel/i40e/i40e.h
index a2a1d22..a404036 100644
--- a/drivers/net/ethernet/intel/i40e/i40e.h
+++ b/drivers/net/ethernet/intel/i40e/i40e.h
@@ -336,6 +336,7 @@ struct i40e_pf {
 #define I40E_FLAG_LINK_POLLING_ENABLED		BIT_ULL(39)
 #define I40E_FLAG_VEB_MODE_ENABLED		BIT_ULL(40)
 #define I40E_FLAG_GENEVE_OFFLOAD_CAPABLE	BIT_ULL(41)
+#define I40E_FLAG_NO_PCI_LINK_CHECK		BIT_ULL(42)
 
 	/* tracks features that get auto disabled by errors */
 	u64 auto_disable_flags;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 6a28c04..4bcf4a1 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -10555,26 +10555,55 @@ static int i40e_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
 	i40e_fcoe_vsi_setup(pf);
 
 #endif
-	/* Get the negotiated link width and speed from PCI config space */
-	pcie_capability_read_word(pf->pdev, PCI_EXP_LNKSTA, &link_status);
-
-	i40e_set_pci_config_data(hw, link_status);
-
-	dev_info(&pdev->dev, "PCI-Express: %s %s\n",
-		(hw->bus.speed == i40e_bus_speed_8000 ? "Speed 8.0GT/s" :
-		 hw->bus.speed == i40e_bus_speed_5000 ? "Speed 5.0GT/s" :
-		 hw->bus.speed == i40e_bus_speed_2500 ? "Speed 2.5GT/s" :
-		 "Unknown"),
-		(hw->bus.width == i40e_bus_width_pcie_x8 ? "Width x8" :
-		 hw->bus.width == i40e_bus_width_pcie_x4 ? "Width x4" :
-		 hw->bus.width == i40e_bus_width_pcie_x2 ? "Width x2" :
-		 hw->bus.width == i40e_bus_width_pcie_x1 ? "Width x1" :
-		 "Unknown"));
-
-	if (hw->bus.width < i40e_bus_width_pcie_x8 ||
-	    hw->bus.speed < i40e_bus_speed_8000) {
-		dev_warn(&pdev->dev, "PCI-Express bandwidth available for this device may be insufficient for optimal performance.\n");
-		dev_warn(&pdev->dev, "Please move the device to a different PCI-e link with more lanes and/or higher transfer rate.\n");
+#define PCI_SPEED_SIZE 8
+#define PCI_WIDTH_SIZE 8
+	/* Devices on the IOSF bus do not have this information
+	 * and will report PCI Gen 1 x 1 by default so don't bother
+	 * checking them.
+	 */
+	if (!(pf->flags & I40E_FLAG_NO_PCI_LINK_CHECK)) {
+		char speed[PCI_SPEED_SIZE] = "Unknown";
+		char width[PCI_WIDTH_SIZE] = "Unknown";
+
+		/* Get the negotiated link width and speed from PCI config
+		 * space
+		 */
+		pcie_capability_read_word(pf->pdev, PCI_EXP_LNKSTA,
+					  &link_status);
+
+		i40e_set_pci_config_data(hw, link_status);
+
+		switch (hw->bus.speed) {
+		case i40e_bus_speed_8000:
+			strncpy(speed, "8.0", PCI_SPEED_SIZE); break;
+		case i40e_bus_speed_5000:
+			strncpy(speed, "5.0", PCI_SPEED_SIZE); break;
+		case i40e_bus_speed_2500:
+			strncpy(speed, "2.5", PCI_SPEED_SIZE); break;
+		default:
+			break;
+		}
+		switch (hw->bus.width) {
+		case i40e_bus_width_pcie_x8:
+			strncpy(width, "8", PCI_WIDTH_SIZE); break;
+		case i40e_bus_width_pcie_x4:
+			strncpy(width, "4", PCI_WIDTH_SIZE); break;
+		case i40e_bus_width_pcie_x2:
+			strncpy(width, "2", PCI_WIDTH_SIZE); break;
+		case i40e_bus_width_pcie_x1:
+			strncpy(width, "1", PCI_WIDTH_SIZE); break;
+		default:
+			break;
+		}
+
+		dev_info(&pdev->dev, "PCI-Express: Speed %sGT/s Width x%s\n",
+			 speed, width);
+
+		if (hw->bus.width < i40e_bus_width_pcie_x8 ||
+		    hw->bus.speed < i40e_bus_speed_8000) {
+			dev_warn(&pdev->dev, "PCI-Express bandwidth available for this device may be insufficient for optimal performance.\n");
+			dev_warn(&pdev->dev, "Please move the device to a different PCI-e link with more lanes and/or higher transfer rate.\n");
+		}
 	}
 
 	/* get the requested speeds from the fw */
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 13/15] i40e: remove unnecessary string copy operations
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (11 preceding siblings ...)
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 12/15] i40e: X722 is on the IOSF bus and does not report the PCI bus info Catherine Sullivan
@ 2015-09-03 21:19 ` Catherine Sullivan
  2015-09-22 21:20   ` Bowers, AndrewX
  2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 14/15] i40evf: speed up init Catherine Sullivan
  2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 15/15] i40e/i40evf: Bump i40e version to 1.3.28 and i40evf to 1.3.19 Catherine Sullivan
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:19 UTC (permalink / raw
  To: intel-wired-lan

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

Save a little stack space and remove unnecessary strncpy() with a little
string pointer.

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

diff --git a/drivers/net/ethernet/intel/i40e/i40e_main.c b/drivers/net/ethernet/intel/i40e/i40e_main.c
index 4bcf4a1..848482b 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_main.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_main.c
@@ -4896,8 +4896,8 @@ out:
  */
 void i40e_print_link_message(struct i40e_vsi *vsi, bool isup)
 {
-	char speed[SPEED_SIZE] = "Unknown";
-	char fc[FC_SIZE] = "RX/TX";
+	char *speed = "Unknown";
+	char *fc = "Unknown";
 
 	if (vsi->current_isup == isup)
 		return;
@@ -4918,19 +4918,19 @@ void i40e_print_link_message(struct i40e_vsi *vsi, bool isup)
 
 	switch (vsi->back->hw.phy.link_info.link_speed) {
 	case I40E_LINK_SPEED_40GB:
-		strlcpy(speed, "40 Gbps", SPEED_SIZE);
+		speed = "40 G";
 		break;
 	case I40E_LINK_SPEED_20GB:
-		strncpy(speed, "20 Gbps", SPEED_SIZE);
+		speed = "20 G";
 		break;
 	case I40E_LINK_SPEED_10GB:
-		strlcpy(speed, "10 Gbps", SPEED_SIZE);
+		speed = "10 G";
 		break;
 	case I40E_LINK_SPEED_1GB:
-		strlcpy(speed, "1000 Mbps", SPEED_SIZE);
+		speed = "1000 M";
 		break;
 	case I40E_LINK_SPEED_100MB:
-		strncpy(speed, "100 Mbps", SPEED_SIZE);
+		speed = "100 M";
 		break;
 	default:
 		break;
@@ -4938,20 +4938,20 @@ void i40e_print_link_message(struct i40e_vsi *vsi, bool isup)
 
 	switch (vsi->back->hw.fc.current_mode) {
 	case I40E_FC_FULL:
-		strlcpy(fc, "RX/TX", FC_SIZE);
+		fc = "RX/TX";
 		break;
 	case I40E_FC_TX_PAUSE:
-		strlcpy(fc, "TX", FC_SIZE);
+		fc = "TX";
 		break;
 	case I40E_FC_RX_PAUSE:
-		strlcpy(fc, "RX", FC_SIZE);
+		fc = "RX";
 		break;
 	default:
-		strlcpy(fc, "None", FC_SIZE);
+		fc = "None";
 		break;
 	}
 
-	netdev_info(vsi->netdev, "NIC Link is Up %s Full Duplex, Flow Control: %s\n",
+	netdev_info(vsi->netdev, "NIC Link is Up %sbps Full Duplex, Flow Control: %s\n",
 		    speed, fc);
 }
 
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 14/15] i40evf: speed up init
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (12 preceding siblings ...)
  2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 13/15] i40e: remove unnecessary string copy operations Catherine Sullivan
@ 2015-09-03 21:19 ` Catherine Sullivan
  2015-09-22 21:23   ` Bowers, AndrewX
  2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 15/15] i40e/i40evf: Bump i40e version to 1.3.28 and i40evf to 1.3.19 Catherine Sullivan
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:19 UTC (permalink / raw
  To: intel-wired-lan

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

Shorten up the delays in the init task, allowing the VF driver to
initialize faster. This aids performance in load/unload tests and
mitigates DMAR errors in VF enable/disable tests with absurdly short
delays. In the real world, the VF driver will come up more quickly.

The original values were set conservatively based on what we expected
from the firmware in terms of performance. Now that the driver is in use
and we know how well firmware responds to our requests, we can shorten
these delays.

Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
Change-ID: Ibead77d34b19e8170e667c3f58bc14748bbc5bc9
---
 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 f156226..bccca50 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -2315,7 +2315,7 @@ static void i40evf_init_task(struct work_struct *work)
 	}
 	return;
 restart:
-	schedule_delayed_work(&adapter->init_task, msecs_to_jiffies(30));
+	schedule_delayed_work(&adapter->init_task, msecs_to_jiffies(20));
 	return;
 
 err_register:
@@ -2332,7 +2332,7 @@ err:
 		adapter->flags |= I40EVF_FLAG_PF_COMMS_FAILED;
 		return; /* do not reschedule */
 	}
-	schedule_delayed_work(&adapter->init_task, HZ * 3);
+	schedule_delayed_work(&adapter->init_task, HZ / 2);
 }
 
 /**
-- 
1.9.3


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

* [Intel-wired-lan] [next PATCH S15 15/15] i40e/i40evf: Bump i40e version to 1.3.28 and i40evf to 1.3.19
  2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
                   ` (13 preceding siblings ...)
  2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 14/15] i40evf: speed up init Catherine Sullivan
@ 2015-09-03 21:19 ` Catherine Sullivan
  2015-09-22 21:24   ` Bowers, AndrewX
  14 siblings, 1 reply; 33+ messages in thread
From: Catherine Sullivan @ 2015-09-03 21:19 UTC (permalink / raw
  To: intel-wired-lan

Bump.

Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Change-ID: I8d9a99f320af43960deba8718eee2d6de50eaf46
---
 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 848482b..bacffe8 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 25
+#define DRV_VERSION_BUILD 28
 #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 bccca50..429a46c 100644
--- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c
+++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c
@@ -34,7 +34,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.17"
+#define DRV_VERSION "1.3.19"
 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] 33+ messages in thread

* [Intel-wired-lan] [next PATCH S15 01/15] i40e: Add missing parameter comment to ndo_bridge_setlink
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 01/15] i40e: Add missing parameter comment to ndo_bridge_setlink Catherine Sullivan
@ 2015-09-10 22:17   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-10 22: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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 01/15] i40e: Add missing
> parameter comment to ndo_bridge_setlink
> 
> From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 
> Add nlflags to the function comment for ndo_bridge_setlink.
> 
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Change-ID: I34c704f307f2a3f7bac3ca4b44e2a094d3d082d6
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 1 +
>  1 file changed, 1 insertion(+)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 02/15] i40e: use priv flags to control flow director
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 02/15] i40e: use priv flags to control flow director Catherine Sullivan
@ 2015-09-10 22:26   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-10 22:26 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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 02/15] i40e: use priv flags to
> control flow director
> 
> From: Jesse Brandeburg <jesse.brandeburg@intel.com>
> 
> Some customers wish to be able to control our hardware specific feature
> called flow director, at runtime.  This patch enables ethtool priv flags to
> control this driver/hardware specific feature.
> 
> ethtool --set-priv-flags ethX flow-director-atr off
> 
> NOTE: the ethtool ntuple interface controls the flow-director
>       sideband rules.
> 
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Change-ID: Iba156350b07fa2ce66f53ded51739f9a3781fe0e
> ---
>  drivers/net/ethernet/intel/i40e/i40e.h         |  1 +
>  drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 14 ++++++++++++++
>  2 files changed, 15 insertions(+)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree, ethtool sets and shows flags properly

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

* [Intel-wired-lan] [next PATCH S15 03/15] i40e: Change some messages from info to debug only
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 03/15] i40e: Change some messages from info to debug only Catherine Sullivan
@ 2015-09-10 22:38   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-10 22:38 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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 03/15] i40e: Change some
> messages from info to debug only
> 
> From: Neerav Parikh <neerav.parikh@intel.com>
> 
> There are several error messages that have been printing when there is no
> functional issue. These messages should be available at debug message level
> only.
> 
> Signed-off-by: Neerav Parikh <neerav.parikh@intel.com>
> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: Id91e47bf942c483563995f30d8705fa53acd5aa3
> ---
>  drivers/net/ethernet/intel/i40e/i40e_dcb_nl.c |  7 +++----
>  drivers/net/ethernet/intel/i40e/i40e_fcoe.c   |  2 +-
>  drivers/net/ethernet/intel/i40e/i40e_main.c   | 21 +++++++++++++--------
>  3 files changed, 17 insertions(+), 13 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 04/15] i40e: Lock for VSI's MAC filter list
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 04/15] i40e: Lock for VSI's MAC filter list Catherine Sullivan
@ 2015-09-11 15:59   ` Bowers, AndrewX
  2015-09-29 19:08   ` Jesse Brandeburg
  1 sibling, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-11 15:59 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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 04/15] i40e: Lock for VSI's MAC
> filter list
> 
> From: Kiran Patil <kiran.patil@intel.com>
> 
> This patch introduces a spinlock which is to be used for synchronizing access
> to VSI's MAC filter list.
> 
> This patch also synchronizes execution of other codepaths which are
> accessing VSI's MAC filter list with execution of service_task:sync_vsi_filters.
> 
> In function i40e_add_vsi, copied out LAA MAC address instead of cloning
> MAC filter entry because only MAC address is needed to remove MAC VLAN
> filter from FW/HW.
> 
> Signed-off-by: Kiran Patil <kiran.patil@intel.com>
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Change-ID: I0e10ac7c715d44aa994239642aa4d57c998573a2
> ---
>  drivers/net/ethernet/intel/i40e/i40e.h             |   2 +
>  drivers/net/ethernet/intel/i40e/i40e_fcoe.c        |   2 +
>  drivers/net/ethernet/intel/i40e/i40e_main.c        | 326
> +++++++++++++++++----
>  drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c |  26 +-
>  4 files changed, 300 insertions(+), 56 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 05/15] i40e: Remove 100M SGMII unless hw is X722
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 05/15] i40e: Remove 100M SGMII unless hw is X722 Catherine Sullivan
@ 2015-09-11 16:03   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-11 16:03 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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 05/15] i40e: Remove 100M SGMII
> unless hw is X722
> 
> Only the X722 device now supports 100M SGMII, and nothing supports 100M
> on 1000Base_T.
> 
> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: I6f44dcd818944edd40041410e6de380f4a359a0c
> ---
>  drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 42 ++++++++++++++++----
> ------
>  1 file changed, 26 insertions(+), 16 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 06/15] i40e/i40evf: Add WB_ON_ITR offload support
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 06/15] i40e/i40evf: Add WB_ON_ITR offload support Catherine Sullivan
@ 2015-09-11 16:08   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-11 16:08 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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 06/15] i40e/i40evf: Add
> WB_ON_ITR offload support
> 
> From: Anjali Singhai Jain <anjali.singhai@intel.com>
> 
> X722 has a way to work around the descriptor WB issue, this offload helps
> turn that feature on.
> 
> Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
> Change-ID: I7ffa67622426bfca5a651417b63e3afcfeb60412
> ---
>  drivers/net/ethernet/intel/i40e/i40e_virtchnl.h     | 1 +
>  drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c  | 4 ++++
>  drivers/net/ethernet/intel/i40evf/i40e_virtchnl.h   | 1 +
>  drivers/net/ethernet/intel/i40evf/i40evf_main.c     | 5 +++++
>  drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c | 3 ++-
>  5 files changed, 13 insertions(+), 1 deletion(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 07/15] i40e: remove obsolete version check
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 07/15] i40e: remove obsolete version check Catherine Sullivan
@ 2015-09-11 16:09   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-11 16: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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 07/15] i40e: remove obsolete
> version check
> 
> From: Mitch Williams <mitch.a.williams@intel.com>
> 
> This version check only applies to very, very old firmware, that only ran on A0
> hardware, which we never shipped and don't support in this driver anyway.
> Remove it, before somebody gets hurt.
> 
> Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
> Change-ID: I3752d090ff488acf98ee76b075af961e9c968ee4
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 6 ------
>  1 file changed, 6 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 08/15] i40e: allow FD SB if MFP mode only has 1 partition
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 08/15] i40e: allow FD SB if MFP mode only has 1 partition Catherine Sullivan
@ 2015-09-11 16:11   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-11 16: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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 08/15] i40e: allow FD SB if MFP
> mode only has 1 partition
> 
> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> Even though the device might be in MFP mode, if there's only one partition
> enabled, then we still have plenty of interrupts for managing the Flow
> Directory Sideband activity.  This patch enables FD SB in this case.
> This patch also reverses the sense of the conditional in order to remove the
> negative logic.
> 
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: I9edf211a6219fc8d159b4be9964f9fd7f4e00bc0
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 09/15] i40e: remove FD atr control from debugfs
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 09/15] i40e: remove FD atr control from debugfs Catherine Sullivan
@ 2015-09-11 16:14   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-11 16: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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 09/15] i40e: remove FD atr control
> from debugfs
> 
> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> Since the flow-director-atr priv flag was added to our ethtool interface, we
> don't need the on/off control in debugfs.
> 
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: Ib3b599916434ab30ccd40074e71d7a81609b5bb5
> ---
>  drivers/net/ethernet/intel/i40e/i40e_debugfs.c | 24 ------------------------
>  1 file changed, 24 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 10/15] i40e/i40evf: remove redundant declarations of a variable and a function
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 10/15] i40e/i40evf: remove redundant declarations of a variable and a function Catherine Sullivan
@ 2015-09-11 16:16   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-11 16:16 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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 10/15] i40e/i40evf: remove
> redundant declarations of a variable and a function
> 
> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> Remove a variable declaration inside an if block hiding an existing declaration
> at the start of the function.
> 
> Also remove a forward function declaration that is no longer needed due to
> code re-organization.
> 
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: I12954668b722718074949c93d74cd20eaacd93e4
> ---
>  drivers/net/ethernet/intel/i40e/i40e_ethtool.c  | 3 ---
> drivers/net/ethernet/intel/i40evf/i40evf_main.c | 2 +-
>  2 files changed, 1 insertion(+), 4 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 11/15] i40e: Store off PHY capabilities
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 11/15] i40e: Store off PHY capabilities Catherine Sullivan
@ 2015-09-11 16:20   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-11 16:20 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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Cc: Scott, Kevin C
> Subject: [Intel-wired-lan] [next PATCH S15 11/15] i40e: Store off PHY
> capabilities
> 
> From: Kevin Scott <kevin.c.scott@intel.com>
> 
> Store off reported PHY capabilities in link_info structure.
> 
> Signed-off-by: Kevin Scott <kevin.c.scott@intel.com>
> Change-ID: Ife0f037c26983ca985dbf79abf33f8f8791369e8
> ---
>  drivers/net/ethernet/intel/i40e/i40e_common.c | 3 +++
>  1 file changed, 3 insertions(+)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 12/15] i40e: X722 is on the IOSF bus and does not report the PCI bus info
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 12/15] i40e: X722 is on the IOSF bus and does not report the PCI bus info Catherine Sullivan
@ 2015-09-22 21:17   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-22 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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 12/15] i40e: X722 is on the IOSF
> bus and does not report the PCI bus info
> 
> From: Anjali Singhai Jain <anjali.singhai@intel.com>
> 
> X722 will report Gen 1x1 in the PCI config space as it is on IOSF bus, so skip
> the PCI bus link/speed check.
> 
> Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
> Change-ID: Icd5f5751dc7fb00dccf0d5dc5a0a644948e7062e
> ---
>  drivers/net/ethernet/intel/i40e/i40e.h      |  1 +
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 69
> ++++++++++++++++++++---------
>  2 files changed, 50 insertions(+), 20 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 13/15] i40e: remove unnecessary string copy operations
  2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 13/15] i40e: remove unnecessary string copy operations Catherine Sullivan
@ 2015-09-22 21:20   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-22 21:20 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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 13/15] i40e: remove unnecessary
> string copy operations
> 
> From: Shannon Nelson <shannon.nelson@intel.com>
> 
> Save a little stack space and remove unnecessary strncpy() with a little string
> pointer.
> 
> Signed-off-by: Shannon Nelson <shannon.nelson@intel.com>
> Change-ID: Id2719d34710bfc273d3bb445fec085cd04276e88
> ---
>  drivers/net/ethernet/intel/i40e/i40e_main.c | 24 ++++++++++++------------
>  1 file changed, 12 insertions(+), 12 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 14/15] i40evf: speed up init
  2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 14/15] i40evf: speed up init Catherine Sullivan
@ 2015-09-22 21:23   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-22 21:23 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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 14/15] i40evf: speed up init
> 
> From: Mitch Williams <mitch.a.williams@intel.com>
> 
> Shorten up the delays in the init task, allowing the VF driver to initialize
> faster. This aids performance in load/unload tests and mitigates DMAR errors
> in VF enable/disable tests with absurdly short delays. In the real world, the
> VF driver will come up more quickly.
> 
> The original values were set conservatively based on what we expected from
> the firmware in terms of performance. Now that the driver is in use and we
> know how well firmware responds to our requests, we can shorten these
> delays.
> 
> Signed-off-by: Mitch Williams <mitch.a.williams@intel.com>
> Change-ID: Ibead77d34b19e8170e667c3f58bc14748bbc5bc9
> ---
>  drivers/net/ethernet/intel/i40evf/i40evf_main.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Code changes present in tree

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

* [Intel-wired-lan] [next PATCH S15 15/15] i40e/i40evf: Bump i40e version to 1.3.28 and i40evf to 1.3.19
  2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 15/15] i40e/i40evf: Bump i40e version to 1.3.28 and i40evf to 1.3.19 Catherine Sullivan
@ 2015-09-22 21:24   ` Bowers, AndrewX
  0 siblings, 0 replies; 33+ messages in thread
From: Bowers, AndrewX @ 2015-09-22 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, September 03, 2015 2:19 PM
> To: intel-wired-lan at lists.osuosl.org
> Subject: [Intel-wired-lan] [next PATCH S15 15/15] i40e/i40evf: Bump i40e
> version to 1.3.28 and i40evf to 1.3.19
> 
> Bump.
> 
> Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
> Change-ID: I8d9a99f320af43960deba8718eee2d6de50eaf46
> ---
>  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>
Code changes present in tree, modinfo reports 1.3.28 for i40e and 1.3.19 for i40evf

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

* [Intel-wired-lan] [next PATCH S15 04/15] i40e: Lock for VSI's MAC filter list
  2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 04/15] i40e: Lock for VSI's MAC filter list Catherine Sullivan
  2015-09-11 15:59   ` Bowers, AndrewX
@ 2015-09-29 19:08   ` Jesse Brandeburg
  2015-09-30 16:18     ` Sullivan, Catherine
  1 sibling, 1 reply; 33+ messages in thread
From: Jesse Brandeburg @ 2015-09-29 19:08 UTC (permalink / raw
  To: intel-wired-lan

On Thu, 3 Sep 2015 17:18:51 -0400
Catherine Sullivan <catherine.sullivan@intel.com> wrote:

> From: Kiran Patil <kiran.patil@intel.com>
> 
> This patch introduces a spinlock which is to be used for synchronizing
> access to VSI's MAC filter list.
> 
> This patch also synchronizes execution of other codepaths which are
> accessing VSI's MAC filter list with execution of
> service_task:sync_vsi_filters.
> 
> In function i40e_add_vsi, copied out LAA MAC address instead of cloning
> MAC filter entry because only MAC address is needed to remove MAC VLAN
> filter from FW/HW.
> 
> Signed-off-by: Kiran Patil <kiran.patil@intel.com>
> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> Change-ID: I0e10ac7c715d44aa994239642aa4d57c998573a2
> ---
>  drivers/net/ethernet/intel/i40e/i40e.h             |   2 +
>  drivers/net/ethernet/intel/i40e/i40e_fcoe.c        |   2 +
>  drivers/net/ethernet/intel/i40e/i40e_main.c        | 326 +++++++++++++++++----
>  drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c |  26 +-
>  4 files changed, 300 insertions(+), 56 deletions(-)
> 

This patch introduces a locking dependency issue, already solved by
another patch we have prepared, which should either be applied on top of
this one or squashed onto it.

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

* [Intel-wired-lan] [next PATCH S15 04/15] i40e: Lock for VSI's MAC filter list
  2015-09-29 19:08   ` Jesse Brandeburg
@ 2015-09-30 16:18     ` Sullivan, Catherine
  0 siblings, 0 replies; 33+ messages in thread
From: Sullivan, Catherine @ 2015-09-30 16:18 UTC (permalink / raw
  To: intel-wired-lan

> From: Brandeburg, Jesse
> Sent: Tuesday, September 29, 2015 12:08 PM
> 
> On Thu, 3 Sep 2015 17:18:51 -0400
> Catherine Sullivan <catherine.sullivan@intel.com> wrote:
> 
> > From: Kiran Patil <kiran.patil@intel.com>
> >
> > This patch introduces a spinlock which is to be used for synchronizing
> > access to VSI's MAC filter list.
> >
> > This patch also synchronizes execution of other codepaths which are
> > accessing VSI's MAC filter list with execution of
> > service_task:sync_vsi_filters.
> >
> > In function i40e_add_vsi, copied out LAA MAC address instead of
> > cloning MAC filter entry because only MAC address is needed to remove
> > MAC VLAN filter from FW/HW.
> >
> > Signed-off-by: Kiran Patil <kiran.patil@intel.com>
> > Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
> > Change-ID: I0e10ac7c715d44aa994239642aa4d57c998573a2
> > ---
> >  drivers/net/ethernet/intel/i40e/i40e.h             |   2 +
> >  drivers/net/ethernet/intel/i40e/i40e_fcoe.c        |   2 +
> >  drivers/net/ethernet/intel/i40e/i40e_main.c        | 326 +++++++++++++++++-
> ---
> >  drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c |  26 +-
> >  4 files changed, 300 insertions(+), 56 deletions(-)
> >
> 
> This patch introduces a locking dependency issue, already solved by another
> patch we have prepared, which should either be applied on top of this one or
> squashed onto it.

Jeff, please drop this patch from S15, I will pull it in with the changes mentioned in S16. 

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

end of thread, other threads:[~2015-09-30 16:18 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-03 21:18 [Intel-wired-lan] [next PATCH S15 00/15] i40e/i40evf updates Catherine Sullivan
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 01/15] i40e: Add missing parameter comment to ndo_bridge_setlink Catherine Sullivan
2015-09-10 22:17   ` Bowers, AndrewX
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 02/15] i40e: use priv flags to control flow director Catherine Sullivan
2015-09-10 22:26   ` Bowers, AndrewX
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 03/15] i40e: Change some messages from info to debug only Catherine Sullivan
2015-09-10 22:38   ` Bowers, AndrewX
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 04/15] i40e: Lock for VSI's MAC filter list Catherine Sullivan
2015-09-11 15:59   ` Bowers, AndrewX
2015-09-29 19:08   ` Jesse Brandeburg
2015-09-30 16:18     ` Sullivan, Catherine
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 05/15] i40e: Remove 100M SGMII unless hw is X722 Catherine Sullivan
2015-09-11 16:03   ` Bowers, AndrewX
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 06/15] i40e/i40evf: Add WB_ON_ITR offload support Catherine Sullivan
2015-09-11 16:08   ` Bowers, AndrewX
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 07/15] i40e: remove obsolete version check Catherine Sullivan
2015-09-11 16:09   ` Bowers, AndrewX
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 08/15] i40e: allow FD SB if MFP mode only has 1 partition Catherine Sullivan
2015-09-11 16:11   ` Bowers, AndrewX
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 09/15] i40e: remove FD atr control from debugfs Catherine Sullivan
2015-09-11 16:14   ` Bowers, AndrewX
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 10/15] i40e/i40evf: remove redundant declarations of a variable and a function Catherine Sullivan
2015-09-11 16:16   ` Bowers, AndrewX
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 11/15] i40e: Store off PHY capabilities Catherine Sullivan
2015-09-11 16:20   ` Bowers, AndrewX
2015-09-03 21:18 ` [Intel-wired-lan] [next PATCH S15 12/15] i40e: X722 is on the IOSF bus and does not report the PCI bus info Catherine Sullivan
2015-09-22 21:17   ` Bowers, AndrewX
2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 13/15] i40e: remove unnecessary string copy operations Catherine Sullivan
2015-09-22 21:20   ` Bowers, AndrewX
2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 14/15] i40evf: speed up init Catherine Sullivan
2015-09-22 21:23   ` Bowers, AndrewX
2015-09-03 21:19 ` [Intel-wired-lan] [next PATCH S15 15/15] i40e/i40evf: Bump i40e version to 1.3.28 and i40evf to 1.3.19 Catherine Sullivan
2015-09-22 21:24   ` 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.