Index: /branches/rel_avx_2_7_2/3rdpartyappliance/centos-i40e/SOURCES/fix_set_vf_vlan_crash.patch
===================================================================
--- /branches/rel_avx_2_7_2/3rdpartyappliance/centos-i40e/SOURCES/fix_set_vf_vlan_crash.patch	(revision 0)
+++ /branches/rel_avx_2_7_2/3rdpartyappliance/centos-i40e/SOURCES/fix_set_vf_vlan_crash.patch	(working copy)
@@ -0,0 +1,89 @@
+diff --git a/src/i40e_adminq.c b/src/i40e_adminq.c
+index caf8427..d2235ac 100644
+--- a/src/i40e_adminq.c
++++ b/src/i40e_adminq.c
+@@ -877,8 +877,8 @@ i40e_status i40e_asq_send_command(struct i40e_hw *hw,
+ 			 */
+ 			if (i40e_asq_done(hw))
+ 				break;
+-			usleep_range(1000, 2000);
+-			total_delay++;
++			udelay(50);
++			total_delay += 50;
+ 		} while (total_delay < hw->aq.asq_cmd_timeout);
+ 	}
+ 
+diff --git a/src/i40e_adminq.h b/src/i40e_adminq.h
+index ec5a009..e6739d3 100644
+--- a/src/i40e_adminq.h
++++ b/src/i40e_adminq.h
+@@ -148,7 +148,7 @@ static INLINE int i40e_aq_rc_to_posix(int aq_ret, int aq_rc)
+ 
+ /* general information */
+ #define I40E_AQ_LARGE_BUF	512
+-#define I40E_ASQ_CMD_TIMEOUT	250  /* msecs */
++#define I40E_ASQ_CMD_TIMEOUT	250000  /* usecs */
+ 
+ void i40e_fill_default_direct_cmd_desc(struct i40e_aq_desc *desc,
+ 				       u16 opcode);
+diff --git a/src/i40e_virtchnl_pf.c b/src/i40e_virtchnl_pf.c
+index f325147..f7c2d15 100644
+--- a/src/i40e_virtchnl_pf.c
++++ b/src/i40e_virtchnl_pf.c
+@@ -2518,6 +2518,34 @@ error_param:
+ 	return ret;
+ }
+ 
++/**
++ * i40e_vsi_has_vlans - True if VSI has configured VLANs
++ * @vsi: pointer to the vsi
++ *
++ * Check if a VSI has configured any VLANs. False if we have a port VLAN or if
++ * we have no configured VLANs. Do not call while holding the
++ * mac_filter_hash_lock.
++ */
++static bool i40e_vsi_has_vlans(struct i40e_vsi *vsi)
++{
++	bool have_vlans;
++
++	/* If we have a port VLAN, then the VSI cannot have any VLANs
++	 * configured, as all MAC/VLAN filters will be assigned to the PVID.
++	 */
++	if (vsi->info.pvid)
++		return false;
++
++	/* Since we don't have a PVID, we know that if the device is in VLAN
++	 * mode it must be because of a VLAN filter configured on this VSI.
++	 */
++	spin_lock_bh(&vsi->mac_filter_hash_lock);
++	have_vlans = i40e_is_vsi_in_vlan(vsi);
++	spin_unlock_bh(&vsi->mac_filter_hash_lock);
++
++	return have_vlans;
++}
++
+ #ifdef IFLA_VF_VLAN_INFO_MAX
+ /**
+  * i40e_ndo_set_vf_port_vlan
+@@ -2584,10 +2612,7 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
+ 		/* duplicate request, so just return success */
+ 		goto error_pvid;
+ 
+-	/* Locked once because multiple functions below iterate list */
+-	spin_lock_bh(&vsi->mac_filter_hash_lock);
+-
+-	if (le16_to_cpu(vsi->info.pvid) == 0 && i40e_is_vsi_in_vlan(vsi)) {
++	if (i40e_vsi_has_vlans(vsi)) {
+ 		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);
+@@ -2600,6 +2625,9 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
+ 		vsi = pf->vsi[vf->lan_vsi_idx];
+ 	}
+ 
++	/* Locked once because multiple functions below iterate list */
++	spin_lock_bh(&vsi->mac_filter_hash_lock);
++
+ 	/* Check for condition where there was already a port VLAN ID
+ 	 * filter set and now it is being deleted by setting it to zero.
+ 	 * Additionally check for the condition where there was a port
Index: /branches/rel_avx_2_7_2/3rdpartyappliance/centos-i40e/SPECS/i40e.spec
===================================================================
--- /branches/rel_avx_2_7_2/3rdpartyappliance/centos-i40e/SPECS/i40e.spec	(revision 8764)
+++ /branches/rel_avx_2_7_2/3rdpartyappliance/centos-i40e/SPECS/i40e.spec	(working copy)
@@ -1,7 +1,7 @@
 Name: i40e
 Summary: Intel(R) 40-10 Gigabit Ethernet Connection Network Driver
 Version: 1.6.42
-Release: 10
+Release: 11
 Source: %{name}-%{version}.tar.gz
 Vendor: Intel Corporation
 License: GPL
@@ -31,6 +31,7 @@
 Patch999008: i40e_vf_promisc.patch
 Patch999009: x722_support.patch
 Patch999010: avx_get_i40e_info_bug77356.patch
+Patch999011: fix_set_vf_vlan_crash.patch
 
 %description
 This package contains the Intel(R) 40-10 Gigabit Ethernet Connection Network Driver.
@@ -47,6 +48,7 @@
 %patch999008 -p2
 %patch999009 -p1
 %patch999010 -p2
+%patch999011 -p1
 
 %build
 make -C src clean
Index: /branches/rel_avx_2_7_2/update/avxsystem.ks
===================================================================
--- /branches/rel_avx_2_7_2/update/avxsystem.ks	(revision 8764)
+++ /branches/rel_avx_2_7_2/update/avxsystem.ks	(working copy)
@@ -110,7 +110,7 @@
 bind-libs-lite-9.9.4-29.el7.x86_64
 avx_cli-1.0-2.el7.centos.x86_64
 httpd-tools-2.4.6-40.el7.centos.4.1.x86_64
-i40e-1.6.42-10.x86_64
+i40e-1.6.42-11.x86_64
 flac-libs-1.3.0-5.el7_1.x86_64
 ipmitool-1.8.13-8.el7_1.x86_64
 file-5.11-31.el7.x86_64
