i40e: Warn admin to reload VF driver on port VLAN configuration
authorGreg Rose <gregory.v.rose@intel.com>
Tue, 14 Jan 2014 00:13:03 +0000 (16:13 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 15 Jan 2014 08:00:27 +0000 (00:00 -0800)
The i40e Physical Function (PF) driver will allow the
 Virtual Function (VF) driver to configure its own VLAN filters if no port
 VLAN filter has been configured.  This leads to the possibility of the
 administrator setting a port VLAN filter for the VF after the VF has already
 configured its own VLAN filters.  This leads to a conflict that can only be
 resolved by reloading the VF driver.  When the conflicting administrative
 command is detected in setting the port VLAN then log a message indicating to
 the system administrator that he must now reload the VF driver for the new
 port VLAN settings to take effect.

Change-Id: I8de73b885d944a043aff32226297e4249862bcad
Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Tested-by: Sibai Li <sibai.li@intel.com>
Signed-off-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c

index 53069c0..869b4fb 100644 (file)
@@ -2076,6 +2076,11 @@ int i40e_ndo_set_vf_port_vlan(struct net_device *netdev,
                goto error_pvid;
        }
 
+       if (vsi->info.pvid == 0 && i40e_is_vsi_in_vlan(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);
+
        if (vsi->info.pvid) {
                /* kill old VLAN */
                ret = i40e_vsi_kill_vlan(vsi, (le16_to_cpu(vsi->info.pvid) &