Merge branch '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue
Tony Nguyen says: ==================== Intel Wired LAN Driver Updates 2023-04-17 (i40e) This series contains updates to i40e only. Alex moves setting of active filters to occur under lock and checks/takes error path in rebuild if re-initializing the misc interrupt vector failed. * '40GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/tnguy/net-queue: i40e: fix i40e_setup_misc_vector() error handling i40e: fix accessing vsi->active_filters without holding lock ==================== Reviewed-by: Simon Horman <simon.horman@corigine.com> Link: https://lore.kernel.org/r/20230417205245.1030733-1-anthony.l.nguyen@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
commit
7b97174d0e
|
@ -11059,8 +11059,11 @@ static void i40e_rebuild(struct i40e_pf *pf, bool reinit, bool lock_acquired)
|
||||||
pf->hw.aq.asq_last_status));
|
pf->hw.aq.asq_last_status));
|
||||||
}
|
}
|
||||||
/* reinit the misc interrupt */
|
/* reinit the misc interrupt */
|
||||||
if (pf->flags & I40E_FLAG_MSIX_ENABLED)
|
if (pf->flags & I40E_FLAG_MSIX_ENABLED) {
|
||||||
ret = i40e_setup_misc_vector(pf);
|
ret = i40e_setup_misc_vector(pf);
|
||||||
|
if (ret)
|
||||||
|
goto end_unlock;
|
||||||
|
}
|
||||||
|
|
||||||
/* Add a filter to drop all Flow control frames from any VSI from being
|
/* Add a filter to drop all Flow control frames from any VSI from being
|
||||||
* transmitted. By doing so we stop a malicious VF from sending out
|
* transmitted. By doing so we stop a malicious VF from sending out
|
||||||
|
@ -14133,15 +14136,15 @@ static int i40e_add_vsi(struct i40e_vsi *vsi)
|
||||||
vsi->id = ctxt.vsi_number;
|
vsi->id = ctxt.vsi_number;
|
||||||
}
|
}
|
||||||
|
|
||||||
vsi->active_filters = 0;
|
|
||||||
clear_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
|
|
||||||
spin_lock_bh(&vsi->mac_filter_hash_lock);
|
spin_lock_bh(&vsi->mac_filter_hash_lock);
|
||||||
|
vsi->active_filters = 0;
|
||||||
/* If macvlan filters already exist, force them to get loaded */
|
/* If macvlan filters already exist, force them to get loaded */
|
||||||
hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) {
|
hash_for_each_safe(vsi->mac_filter_hash, bkt, h, f, hlist) {
|
||||||
f->state = I40E_FILTER_NEW;
|
f->state = I40E_FILTER_NEW;
|
||||||
f_count++;
|
f_count++;
|
||||||
}
|
}
|
||||||
spin_unlock_bh(&vsi->mac_filter_hash_lock);
|
spin_unlock_bh(&vsi->mac_filter_hash_lock);
|
||||||
|
clear_bit(__I40E_VSI_OVERFLOW_PROMISC, vsi->state);
|
||||||
|
|
||||||
if (f_count) {
|
if (f_count) {
|
||||||
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
vsi->flags |= I40E_VSI_FLAG_FILTER_CHANGED;
|
||||||
|
|
Loading…
Reference in New Issue