diff options
author | Wei Fang <wei.fang@nxp.com> | 2025-05-06 16:07:32 +0800 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2025-05-08 19:43:52 -0700 |
commit | 014e33e2d8e9e792df10c880e46b3278ad912a7f (patch) | |
tree | 155c347a0b6da733b463ad6d6bd520995da8ce73 | |
parent | 2219281242fce2bbe8809eff7ab4ca4301e18258 (diff) |
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>
-rw-r--r-- | drivers/net/ethernet/freescale/enetc/enetc_pf.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/ethernet/freescale/enetc/enetc_pf.c index 8f2616fd83d2..ae2dbd159ab4 100644 --- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c +++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c @@ -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; } |