aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igb
diff options
context:
space:
mode:
authorAlexander Duyck <alexander.h.duyck@intel.com>2010-09-22 13:56:20 -0400
committerDavid S. Miller <davem@davemloft.net>2010-09-23 00:20:03 -0400
commitd85b9004bc2047d79248b167cc151ff9a4b509c3 (patch)
treeb507aff12a94c51e48e0bca5eaa21ab5c82e6b50 /drivers/net/igb
parent768190fdc058cc7405330f7782782df084c25d61 (diff)
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>
Diffstat (limited to 'drivers/net/igb')
-rw-r--r--drivers/net/igb/igb_main.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/igb/igb_main.c b/drivers/net/igb/igb_main.c
index c4d861b557ca..fd922e7db1d5 100644
--- a/drivers/net/igb/igb_main.c
+++ b/drivers/net/igb/igb_main.c
@@ -4659,12 +4659,13 @@ static int igb_set_vf_promisc(struct igb_adapter *adapter, u32 *msgbuf, u32 vf)
4659 u32 vmolr = rd32(E1000_VMOLR(vf)); 4659 u32 vmolr = rd32(E1000_VMOLR(vf));
4660 struct vf_data_storage *vf_data = &adapter->vf_data[vf]; 4660 struct vf_data_storage *vf_data = &adapter->vf_data[vf];
4661 4661
4662 vf_data->flags |= ~(IGB_VF_FLAG_UNI_PROMISC | 4662 vf_data->flags &= ~(IGB_VF_FLAG_UNI_PROMISC |
4663 IGB_VF_FLAG_MULTI_PROMISC); 4663 IGB_VF_FLAG_MULTI_PROMISC);
4664 vmolr &= ~(E1000_VMOLR_ROPE | E1000_VMOLR_ROMPE | E1000_VMOLR_MPME); 4664 vmolr &= ~(E1000_VMOLR_ROPE | E1000_VMOLR_ROMPE | E1000_VMOLR_MPME);
4665 4665
4666 if (*msgbuf & E1000_VF_SET_PROMISC_MULTICAST) { 4666 if (*msgbuf & E1000_VF_SET_PROMISC_MULTICAST) {
4667 vmolr |= E1000_VMOLR_MPME; 4667 vmolr |= E1000_VMOLR_MPME;
4668 vf_data->flags |= IGB_VF_FLAG_MULTI_PROMISC;
4668 *msgbuf &= ~E1000_VF_SET_PROMISC_MULTICAST; 4669 *msgbuf &= ~E1000_VF_SET_PROMISC_MULTICAST;
4669 } else { 4670 } else {
4670 /* 4671 /*