|
@@ -1382,7 +1382,7 @@ struct i40e_mac_filter *i40e_add_filter(struct i40e_vsi *vsi,
|
|
hash_add(vsi->mac_filter_hash, &f->hlist, key);
|
|
hash_add(vsi->mac_filter_hash, &f->hlist, key);
|
|
|
|
|
|
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
|
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
|
- vsi->back->flags |= I40E_FLAG_FILTER_SYNC;
|
|
|
|
|
|
+ set_bit(__I40E_MACVLAN_SYNC_PENDING, vsi->back->state);
|
|
}
|
|
}
|
|
|
|
|
|
/* If we're asked to add a filter that has been marked for removal, it
|
|
/* If we're asked to add a filter that has been marked for removal, it
|
|
@@ -1432,7 +1432,7 @@ void __i40e_del_filter(struct i40e_vsi *vsi, struct i40e_mac_filter *f)
|
|
}
|
|
}
|
|
|
|
|
|
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
|
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
|
- vsi->back->flags |= I40E_FLAG_FILTER_SYNC;
|
|
|
|
|
|
+ set_bit(__I40E_MACVLAN_SYNC_PENDING, vsi->state);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1955,7 +1955,7 @@ static void i40e_set_rx_mode(struct net_device *netdev)
|
|
/* check for other flag changes */
|
|
/* check for other flag changes */
|
|
if (vsi->current_netdev_flags != vsi->netdev->flags) {
|
|
if (vsi->current_netdev_flags != vsi->netdev->flags) {
|
|
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
|
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
|
- vsi->back->flags |= I40E_FLAG_FILTER_SYNC;
|
|
|
|
|
|
+ set_bit(__I40E_MACVLAN_SYNC_PENDING, vsi->back->state);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2577,9 +2577,10 @@ static void i40e_sync_filters_subtask(struct i40e_pf *pf)
|
|
{
|
|
{
|
|
int v;
|
|
int v;
|
|
|
|
|
|
- if (!pf || !(pf->flags & I40E_FLAG_FILTER_SYNC))
|
|
|
|
|
|
+ if (!pf)
|
|
|
|
+ return;
|
|
|
|
+ if (!test_and_clear_bit(__I40E_MACVLAN_SYNC_PENDING, pf->state))
|
|
return;
|
|
return;
|
|
- pf->flags &= ~I40E_FLAG_FILTER_SYNC;
|
|
|
|
|
|
|
|
for (v = 0; v < pf->num_alloc_vsi; v++) {
|
|
for (v = 0; v < pf->num_alloc_vsi; v++) {
|
|
if (pf->vsi[v] &&
|
|
if (pf->vsi[v] &&
|
|
@@ -2588,7 +2589,8 @@ static void i40e_sync_filters_subtask(struct i40e_pf *pf)
|
|
|
|
|
|
if (ret) {
|
|
if (ret) {
|
|
/* come back and try again later */
|
|
/* come back and try again later */
|
|
- pf->flags |= I40E_FLAG_FILTER_SYNC;
|
|
|
|
|
|
+ set_bit(__I40E_MACVLAN_SYNC_PENDING,
|
|
|
|
+ pf->state);
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -12240,7 +12242,7 @@ static int i40e_add_vsi(struct i40e_vsi *vsi)
|
|
|
|
|
|
if (f_count) {
|
|
if (f_count) {
|
|
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
|
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
|
- pf->flags |= I40E_FLAG_FILTER_SYNC;
|
|
|
|
|
|
+ set_bit(__I40E_MACVLAN_SYNC_PENDING, pf->state);
|
|
}
|
|
}
|
|
|
|
|
|
/* Update VSI BW information */
|
|
/* Update VSI BW information */
|