Skip to content

Commit

Permalink
igb: Fix overwrite of the VF's flags
Browse files Browse the repository at this point in the history
The vf flags were being overwritten causing the flag that indicates
that the PF has set the VF MAC address to get cleared.  This would
allow the VF to override the MAC address assigned by the Host VMM
using the ip link set command.

Signed-off-by: Greg Rose <gregory.v.rose@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
  • Loading branch information
Greg Rose authored and Jeff Kirsher committed Dec 25, 2010
1 parent b1cdfea commit 8fa7e0f
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions drivers/net/igb/igb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -1654,7 +1654,7 @@ void igb_reset(struct igb_adapter *adapter)
if (adapter->vfs_allocated_count) {
int i;
for (i = 0 ; i < adapter->vfs_allocated_count; i++)
adapter->vf_data[i].flags = 0;
adapter->vf_data[i].flags &= IGB_VF_FLAG_PF_SET_MAC;

/* ping all the active vfs to let them know we are going down */
igb_ping_all_vfs(adapter);
Expand Down Expand Up @@ -4971,8 +4971,8 @@ static int igb_set_vf_vlan(struct igb_adapter *adapter, u32 *msgbuf, u32 vf)

static inline void igb_vf_reset(struct igb_adapter *adapter, u32 vf)
{
/* clear flags */
adapter->vf_data[vf].flags &= ~(IGB_VF_FLAG_PF_SET_MAC);
/* clear flags - except flag that indicates PF has set the MAC */
adapter->vf_data[vf].flags &= IGB_VF_FLAG_PF_SET_MAC;
adapter->vf_data[vf].last_nack = jiffies;

/* reset offloads to defaults */
Expand Down Expand Up @@ -5026,7 +5026,7 @@ static void igb_vf_reset_msg(struct igb_adapter *adapter, u32 vf)
reg = rd32(E1000_VFRE);
wr32(E1000_VFRE, reg | (1 << vf));

adapter->vf_data[vf].flags = IGB_VF_FLAG_CTS;
adapter->vf_data[vf].flags |= IGB_VF_FLAG_CTS;

/* reply to reset with ack and vf mac address */
msgbuf[0] = E1000_VF_RESET | E1000_VT_MSGTYPE_ACK;
Expand Down

0 comments on commit 8fa7e0f

Please sign in to comment.