mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 04:09:18 -04:00
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: Wei Fang <wei.fang@nxp.com> Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com> Link: https://patch.msgid.link/20250506080735.3444381-12-wei.fang@nxp.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -234,21 +234,16 @@ 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);
|
||||
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);
|
||||
|
||||
for_each_set_bit(i, pf->active_vlans, VLAN_N_VID) {
|
||||
int hidx = enetc_vid_hash_idx(i);
|
||||
|
||||
__set_bit(hidx, pf->vlan_ht_filter);
|
||||
}
|
||||
__set_bit(hidx, pf->vlan_ht_filter);
|
||||
}
|
||||
|
||||
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)
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user