Commit 7d46c0e6 authored by Michal Swiatkowski's avatar Michal Swiatkowski Committed by Tony Nguyen
Browse files

ice: remove filters only if VSI is deleted



Filters shouldn't be removed in VSI rebuild path. Removing them on PF
VSI results in no rule for PF MAC after changing for example queues
amount.

Remove all filters only in the VSI remove flow. As unload should also
cause the filter to be removed introduce, a new function ice_stop_eth().
It will unroll ice_start_eth(), so remove filters and close VSI.

Fixes: 6624e780 ("ice: split ice_vsi_setup into smaller functions")
Signed-off-by: default avatarMichal Swiatkowski <michal.swiatkowski@linux.intel.com>
Tested-by: Arpana Arland <arpanax.arland@intel.com> (A Contingent worker at Intel)
Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
parent 83b49e7f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -291,6 +291,7 @@ static void ice_vsi_delete_from_hw(struct ice_vsi *vsi)
	struct ice_vsi_ctx *ctxt;
	int status;

	ice_fltr_remove_all(vsi);
	ctxt = kzalloc(sizeof(*ctxt), GFP_KERNEL);
	if (!ctxt)
		return;
@@ -2892,7 +2893,6 @@ void ice_vsi_decfg(struct ice_vsi *vsi)
	    !test_bit(ICE_FLAG_FW_LLDP_AGENT, pf->flags))
		ice_cfg_sw_lldp(vsi, false, false);

	ice_fltr_remove_all(vsi);
	ice_rm_vsi_lan_cfg(vsi->port_info, vsi->idx);
	err = ice_rm_vsi_rdma_cfg(vsi->port_info, vsi->idx);
	if (err)
+7 −1
Original line number Diff line number Diff line
@@ -4641,6 +4641,12 @@ static int ice_start_eth(struct ice_vsi *vsi)
	return err;
}

static void ice_stop_eth(struct ice_vsi *vsi)
{
	ice_fltr_remove_all(vsi);
	ice_vsi_close(vsi);
}

static int ice_init_eth(struct ice_pf *pf)
{
	struct ice_vsi *vsi = ice_get_main_vsi(pf);
@@ -5129,7 +5135,7 @@ void ice_unload(struct ice_pf *pf)
{
	ice_deinit_features(pf);
	ice_deinit_rdma(pf);
	ice_vsi_close(ice_get_main_vsi(pf));
	ice_stop_eth(ice_get_main_vsi(pf));
	ice_vsi_decfg(ice_get_main_vsi(pf));
	ice_deinit_dev(pf);
}