ixgbe: Simplify configuration of setting VLVF and VLVFB
authorAlexander Duyck <aduyck@mirantis.com>
Tue, 3 Nov 2015 01:09:54 +0000 (17:09 -0800)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 12 Dec 2015 09:25:48 +0000 (01:25 -0800)
commit5ac736a65ac131e76edb5bbe75f7f9acef7a8a7b
tree9c401aaf98226e4331a291e78eadb4be17fba6ea
parent63d9379a598ed9fbb887b8679623f8a328ee394e
ixgbe: Simplify configuration of setting VLVF and VLVFB

This patch addresses several issues within the VLVF and VLVFB
configuration

First was the fact that code was overly complicated with multiple
conditional paths depending on if we adding or removing and which bit we
were going to add or remove.  Instead of messing with all that I have
simplified it by using (vid / 32) and (1 - vid / 32) to identify our
register and the other vlvfb register.

Second was the fact that we were likely leaking a few packets into the PF
in cases where we were deleting an entry and the VFTA filter for that entry
as the ordering was such that we deleted the pool and then the VLAN filter
instead of the other way around.  I have updated that by adding a check for
no bits being set and if that occurs we clear things up in the proper
order.

Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c