|
@@ -640,14 +640,14 @@ static int ixgbe_rcv_msg_from_vf(struct ixgbe_adapter *adapter, u32 vf)
|
|
|
}
|
|
|
break;
|
|
|
case IXGBE_VF_SET_MACVLAN:
|
|
|
- if (adapter->vfinfo[vf].pf_set_mac) {
|
|
|
+ index = (msgbuf[0] & IXGBE_VT_MSGINFO_MASK) >>
|
|
|
+ IXGBE_VT_MSGINFO_SHIFT;
|
|
|
+ if (adapter->vfinfo[vf].pf_set_mac && index > 0) {
|
|
|
e_warn(drv, "VF %d requested MACVLAN filter but is "
|
|
|
"administratively denied\n", vf);
|
|
|
retval = -1;
|
|
|
break;
|
|
|
}
|
|
|
- index = (msgbuf[0] & IXGBE_VT_MSGINFO_MASK) >>
|
|
|
- IXGBE_VT_MSGINFO_SHIFT;
|
|
|
/*
|
|
|
* If the VF is allowed to set MAC filters then turn off
|
|
|
* anti-spoofing to avoid false positives. An index
|