igb: Warn on attempt to override administratively set MAC/VLAN
authorGreg Rose <gregory.v.rose@intel.com>
Sat, 6 Nov 2010 05:42:59 +0000 (05:42 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 25 Dec 2010 05:34:13 +0000 (21:34 -0800)
Print a warning message to the system log when the VF attempts to
override administratively set MAC/VLAN configuration.

Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/igb/igb_main.c

index be426a4..c9aac7f 100644 (file)
@@ -5105,7 +5105,14 @@ static void igb_rcv_msg_from_vf(struct igb_adapter *adapter, u32 vf)
 
        switch ((msgbuf[0] & 0xFFFF)) {
        case E1000_VF_SET_MAC_ADDR:
-               retval = igb_set_vf_mac_addr(adapter, msgbuf, vf);
+               retval = -EINVAL;
+               if (!(vf_data->flags & IGB_VF_FLAG_PF_SET_MAC))
+                       retval = igb_set_vf_mac_addr(adapter, msgbuf, vf);
+               else
+                       dev_warn(&pdev->dev,
+                                "VF %d attempted to override administratively "
+                                "set MAC address\nReload the VF driver to "
+                                "resume operations\n", vf);
                break;
        case E1000_VF_SET_PROMISC:
                retval = igb_set_vf_promisc(adapter, msgbuf, vf);
@@ -5117,8 +5124,12 @@ static void igb_rcv_msg_from_vf(struct igb_adapter *adapter, u32 vf)
                retval = igb_set_vf_rlpml(adapter, msgbuf[1], vf);
                break;
        case E1000_VF_SET_VLAN:
-               if (adapter->vf_data[vf].pf_vlan)
-                       retval = -1;
+               retval = -1;
+               if (vf_data->pf_vlan)
+                       dev_warn(&pdev->dev,
+                                "VF %d attempted to override administratively "
+                                "set VLAN tag\nReload the VF driver to "
+                                "resume operations\n", vf);
                else
                        retval = igb_set_vf_vlan(adapter, msgbuf, vf);
                break;