mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-11 00:06:39 +07:00
igb: clear VF_PROMISC bits instead of setting all other bits
This change corrects an issue in which we were setting all flag bits except for promisc instead of clearing the promisc bits due to the incorrect use of an |= instead of an &=. Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com> Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
768190fdc0
commit
d85b9004bc
@ -4659,12 +4659,13 @@ static int igb_set_vf_promisc(struct igb_adapter *adapter, u32 *msgbuf, u32 vf)
|
||||
u32 vmolr = rd32(E1000_VMOLR(vf));
|
||||
struct vf_data_storage *vf_data = &adapter->vf_data[vf];
|
||||
|
||||
vf_data->flags |= ~(IGB_VF_FLAG_UNI_PROMISC |
|
||||
vf_data->flags &= ~(IGB_VF_FLAG_UNI_PROMISC |
|
||||
IGB_VF_FLAG_MULTI_PROMISC);
|
||||
vmolr &= ~(E1000_VMOLR_ROPE | E1000_VMOLR_ROMPE | E1000_VMOLR_MPME);
|
||||
|
||||
if (*msgbuf & E1000_VF_SET_PROMISC_MULTICAST) {
|
||||
vmolr |= E1000_VMOLR_MPME;
|
||||
vf_data->flags |= IGB_VF_FLAG_MULTI_PROMISC;
|
||||
*msgbuf &= ~E1000_VF_SET_PROMISC_MULTICAST;
|
||||
} else {
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user