igbvf: after mailbox write, wait for reply
Two of the VF mailbox commands were not waiting for a reply from the PF, which can result in a VF mailbox timeout in the VM for the next command. Signed-off-by: Greg Edwards <gedwards@ddn.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>hifive-unleashed-5.1
parent
32652c2ac2
commit
0d3ee0d925
|
@ -230,6 +230,7 @@ static void e1000_update_mc_addr_list_vf(struct e1000_hw *hw,
|
||||||
u16 *hash_list = (u16 *)&msgbuf[1];
|
u16 *hash_list = (u16 *)&msgbuf[1];
|
||||||
u32 hash_value;
|
u32 hash_value;
|
||||||
u32 cnt, i;
|
u32 cnt, i;
|
||||||
|
s32 ret_val;
|
||||||
|
|
||||||
/* Each entry in the list uses 1 16 bit word. We have 30
|
/* Each entry in the list uses 1 16 bit word. We have 30
|
||||||
* 16 bit words available in our HW msg buffer (minus 1 for the
|
* 16 bit words available in our HW msg buffer (minus 1 for the
|
||||||
|
@ -250,7 +251,9 @@ static void e1000_update_mc_addr_list_vf(struct e1000_hw *hw,
|
||||||
mc_addr_list += ETH_ALEN;
|
mc_addr_list += ETH_ALEN;
|
||||||
}
|
}
|
||||||
|
|
||||||
mbx->ops.write_posted(hw, msgbuf, E1000_VFMAILBOX_SIZE);
|
ret_val = mbx->ops.write_posted(hw, msgbuf, E1000_VFMAILBOX_SIZE);
|
||||||
|
if (!ret_val)
|
||||||
|
mbx->ops.read_posted(hw, msgbuf, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -293,11 +296,14 @@ void e1000_rlpml_set_vf(struct e1000_hw *hw, u16 max_size)
|
||||||
{
|
{
|
||||||
struct e1000_mbx_info *mbx = &hw->mbx;
|
struct e1000_mbx_info *mbx = &hw->mbx;
|
||||||
u32 msgbuf[2];
|
u32 msgbuf[2];
|
||||||
|
s32 ret_val;
|
||||||
|
|
||||||
msgbuf[0] = E1000_VF_SET_LPE;
|
msgbuf[0] = E1000_VF_SET_LPE;
|
||||||
msgbuf[1] = max_size;
|
msgbuf[1] = max_size;
|
||||||
|
|
||||||
mbx->ops.write_posted(hw, msgbuf, 2);
|
ret_val = mbx->ops.write_posted(hw, msgbuf, 2);
|
||||||
|
if (!ret_val)
|
||||||
|
mbx->ops.read_posted(hw, msgbuf, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue