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.f...@nxp.com>
---
v5: New patch
v6: no changes
---
 .../net/ethernet/freescale/enetc/enetc_pf.c   | 20 ++++++++-----------
 1 file 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;
 }
-- 
2.34.1


Reply via email to