igb: Warn on attempt to override administratively set MAC/VLAN
[deliverable/linux.git] / drivers / net / igb / igb_main.c
index be426a4a7240186fbec35b014c8b27a0d672cf30..c9aac7f15cd29461a41496fc58bbbbbd9e474c21 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;
This page took 0.030536 seconds and 5 git commands to generate.