|
@@ -1254,6 +1254,7 @@ static int i40e_correct_mac_vlan_filters(struct i40e_vsi *vsi,
|
|
|
struct hlist_head *tmp_del_list,
|
|
|
int vlan_filters)
|
|
|
{
|
|
|
+ s16 pvid = le16_to_cpu(vsi->info.pvid);
|
|
|
struct i40e_mac_filter *f, *add_head;
|
|
|
struct i40e_new_mac_filter *new;
|
|
|
struct hlist_node *h;
|
|
@@ -1275,8 +1276,8 @@ static int i40e_correct_mac_vlan_filters(struct i40e_vsi *vsi,
|
|
|
|
|
|
/* Update the filters about to be added in place */
|
|
|
hlist_for_each_entry(new, tmp_add_list, hlist) {
|
|
|
- if (vsi->info.pvid && new->f->vlan != vsi->info.pvid)
|
|
|
- new->f->vlan = vsi->info.pvid;
|
|
|
+ if (pvid && new->f->vlan != pvid)
|
|
|
+ new->f->vlan = pvid;
|
|
|
else if (vlan_filters && new->f->vlan == I40E_VLAN_ANY)
|
|
|
new->f->vlan = 0;
|
|
|
else if (!vlan_filters && new->f->vlan == 0)
|
|
@@ -1290,12 +1291,12 @@ static int i40e_correct_mac_vlan_filters(struct i40e_vsi *vsi,
|
|
|
* order to avoid duplicating code for adding the new filter
|
|
|
* then deleting the old filter.
|
|
|
*/
|
|
|
- if ((vsi->info.pvid && f->vlan != vsi->info.pvid) ||
|
|
|
+ if ((pvid && f->vlan != pvid) ||
|
|
|
(vlan_filters && f->vlan == I40E_VLAN_ANY) ||
|
|
|
(!vlan_filters && f->vlan == 0)) {
|
|
|
/* Determine the new vlan we will be adding */
|
|
|
- if (vsi->info.pvid)
|
|
|
- new_vlan = vsi->info.pvid;
|
|
|
+ if (pvid)
|
|
|
+ new_vlan = pvid;
|
|
|
else if (vlan_filters)
|
|
|
new_vlan = 0;
|
|
|
else
|