Commit 014e33e2 authored by Wei Fang's avatar Wei Fang Committed by Jakub Kicinski
Browse files

net: enetc: extract enetc_refresh_vlan_ht_filter()



Extract the common function enetc_refresh_vlan_ht_filter() from
enetc_sync_vlan_ht_filter() so that it can be reused by the ENETC
v4 PF and VF drivers in the future.

Signed-off-by: default avatarWei Fang <wei.fang@nxp.com>
Reviewed-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
Link: https://patch.msgid.link/20250506080735.3444381-12-wei.fang@nxp.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 22192812
Loading
Loading
Loading
Loading
+8 −12
Original line number Diff line number Diff line
@@ -234,13 +234,11 @@ static int enetc_vid_hash_idx(unsigned int vid)
	return res;
}

static void enetc_sync_vlan_ht_filter(struct enetc_pf *pf, bool rehash)
static void enetc_refresh_vlan_ht_filter(struct enetc_pf *pf)
{
	int i;

	if (rehash) {
	bitmap_zero(pf->vlan_ht_filter, ENETC_VLAN_HT_SIZE);

	for_each_set_bit(i, pf->active_vlans, VLAN_N_VID) {
		int hidx = enetc_vid_hash_idx(i);

@@ -248,9 +246,6 @@ static void enetc_sync_vlan_ht_filter(struct enetc_pf *pf, bool rehash)
	}
}

	enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter);
}

static int enetc_vlan_rx_add_vid(struct net_device *ndev, __be16 prot, u16 vid)
{
	struct enetc_ndev_priv *priv = netdev_priv(ndev);
@@ -261,7 +256,7 @@ static int enetc_vlan_rx_add_vid(struct net_device *ndev, __be16 prot, u16 vid)

	idx = enetc_vid_hash_idx(vid);
	if (!__test_and_set_bit(idx, pf->vlan_ht_filter))
		enetc_sync_vlan_ht_filter(pf, false);
		enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter);

	return 0;
}
@@ -272,7 +267,8 @@ static int enetc_vlan_rx_del_vid(struct net_device *ndev, __be16 prot, u16 vid)
	struct enetc_pf *pf = enetc_si_priv(priv->si);

	__clear_bit(vid, pf->active_vlans);
	enetc_sync_vlan_ht_filter(pf, true);
	enetc_refresh_vlan_ht_filter(pf);
	enetc_set_vlan_ht_filter(&pf->si->hw, 0, *pf->vlan_ht_filter);

	return 0;
}