[PATCH v4 net-next 08/15] net: enetc: move mac_filter from struct enetc_pf to struct enetc_si
From: <hidden>
Date: 2026-09-09 10:36:27
Also in:
imx, lkml
Subsystem:
freescale enetc ethernet drivers, networking drivers, the rest · Maintainers:
Claudiu Manoil, Vladimir Oltean, Wei Fang, Clark Wang, Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds
From: Wei Fang <wei.fang@nxp.com> The mac_filter array currently resides in struct enetc_pf and is used to track unicast and multicast MAC address filters for the PF. Since struct enetc_si is the common structure shared between the PF and VF drivers, move mac_filter into struct enetc_si to prepare for MAC filter support in the VF driver. Signed-off-by: Wei Fang <wei.fang@nxp.com> --- drivers/net/ethernet/freescale/enetc/enetc.h | 2 ++ .../net/ethernet/freescale/enetc/enetc4_pf.c | 6 +++--- drivers/net/ethernet/freescale/enetc/enetc_pf.c | 17 ++++++++--------- drivers/net/ethernet/freescale/enetc/enetc_pf.h | 2 -- 4 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/drivers/net/ethernet/freescale/enetc/enetc.h b/drivers/net/ethernet/freescale/enetc/enetc.h
index 0eff25b0c81b..0501cc2fc304 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc.h
+++ b/drivers/net/ethernet/freescale/enetc/enetc.h@@ -337,6 +337,8 @@ struct enetc_si { struct workqueue_struct *workqueue; struct work_struct msg_task; char msg_int_name[ENETC_INT_NAME_MAX]; + + struct enetc_mac_filter mac_filter[MADDR_TYPE]; }; #define ENETC_SI_ALIGN 32
diff --git a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c
index a44d50b7fd2a..eedcaf2d7bc9 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc4_pf.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc4_pf.c@@ -137,7 +137,7 @@ static int enetc4_pf_add_maft_entries(struct enetc_pf *pf, static void enetc4_pf_set_uc_hash_filter(struct enetc_pf *pf, struct netdev_hw_addr_list *uc) { - struct enetc_mac_filter *mac_filter = &pf->mac_filter[UC]; + struct enetc_mac_filter *mac_filter = &pf->si->mac_filter[UC]; struct netdev_hw_addr *ha; u64 hash;
@@ -172,7 +172,7 @@ static int enetc4_pf_set_uc_exact_filter(struct enetc_pf *pf, err = enetc4_pf_add_maft_entries(pf, uc); if (!err) { - enetc_reset_mac_addr_filter(&pf->mac_filter[UC]); + enetc_reset_mac_addr_filter(&si->mac_filter[UC]); enetc_set_si_uc_hash_filter(si, 0, 0); }
@@ -182,7 +182,7 @@ static int enetc4_pf_set_uc_exact_filter(struct enetc_pf *pf, static void enetc4_pf_set_mc_hash_filter(struct enetc_pf *pf, struct netdev_hw_addr_list *mc) { - struct enetc_mac_filter *mac_filter = &pf->mac_filter[MC]; + struct enetc_mac_filter *mac_filter = &pf->si->mac_filter[MC]; struct netdev_hw_addr *ha; u64 hash;
diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.c b/drivers/net/ethernet/freescale/enetc/enetc_pf.c
index c467dc05510e..523c71324780 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc_pf.c
+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.c@@ -60,10 +60,9 @@ static void enetc_add_mac_addr_em_filter(struct enetc_mac_filter *filter, filter->mac_addr_cnt++; } -static void enetc_sync_mac_filters(struct enetc_pf *pf) +static void enetc_sync_mac_filters(struct enetc_si *si) { - struct enetc_mac_filter *f = pf->mac_filter; - struct enetc_si *si = pf->si; + struct enetc_mac_filter *f = si->mac_filter; int i, pos; pos = EMETC_MAC_ADDR_FILT_RES;
@@ -115,9 +114,9 @@ static void enetc_sync_mac_filters(struct enetc_pf *pf) static void enetc_pf_set_rx_mode(struct net_device *ndev) { struct enetc_ndev_priv *priv = netdev_priv(ndev); - struct enetc_pf *pf = enetc_si_priv(priv->si); bool uprom = false, mprom = false; struct enetc_mac_filter *filter; + struct enetc_si *si = priv->si; struct netdev_hw_addr *ha; bool em;
@@ -133,7 +132,7 @@ static void enetc_pf_set_rx_mode(struct net_device *ndev) /* first 2 filter entries belong to PF */ if (!uprom) { /* Update unicast filters */ - filter = &pf->mac_filter[UC]; + filter = &si->mac_filter[UC]; enetc_reset_mac_addr_filter(filter); em = (netdev_uc_count(ndev) == 1);
@@ -149,7 +148,7 @@ static void enetc_pf_set_rx_mode(struct net_device *ndev) if (!mprom) { /* Update multicast filters */ - filter = &pf->mac_filter[MC]; + filter = &si->mac_filter[MC]; enetc_reset_mac_addr_filter(filter); netdev_for_each_mc_addr(ha, ndev) {
@@ -162,10 +161,10 @@ static void enetc_pf_set_rx_mode(struct net_device *ndev) if (!uprom || !mprom) /* update PF entries */ - enetc_sync_mac_filters(pf); + enetc_sync_mac_filters(si); - enetc_set_si_uc_promisc(priv->si, 0, uprom); - enetc_set_si_mc_promisc(priv->si, 0, mprom); + enetc_set_si_uc_promisc(si, 0, uprom); + enetc_set_si_mc_promisc(si, 0, mprom); } static void enetc_set_loopback(struct net_device *ndev, bool en)
diff --git a/drivers/net/ethernet/freescale/enetc/enetc_pf.h b/drivers/net/ethernet/freescale/enetc/enetc_pf.h
index b3ad498f91a0..88a558649c68 100644
--- a/drivers/net/ethernet/freescale/enetc/enetc_pf.h
+++ b/drivers/net/ethernet/freescale/enetc/enetc_pf.h@@ -40,8 +40,6 @@ struct enetc_pf { int num_vfs; /* number of active VFs, after sriov_init */ int total_vfs; /* max number of VFs, set for PF at probe */ struct enetc_vf_state *vf_state; - - struct enetc_mac_filter mac_filter[MADDR_TYPE]; struct enetc_msg_swbd *rxmsg; DECLARE_BITMAP(vlan_ht_filter, ENETC_VLAN_HT_SIZE);
--
2.34.1