diff mbox series

[net-next,v3] net: ti: icssg-prueth: Split out common object into module

Message ID 20240712120636.814564-1-danishanwar@ti.com (mailing list archive)
State New, archived
Headers show
Series [net-next,v3] net: ti: icssg-prueth: Split out common object into module | expand

Commit Message

MD Danish Anwar July 12, 2024, 12:06 p.m. UTC
icssg_prueth.c and icssg_prueth_sr1.c drivers use multiple common .c
files. These common objects are getting added to multiple modules. As a
result when both drivers are enabled in .config, below warning is seen.

drivers/net/ethernet/ti/Makefile: icssg/icssg_common.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
drivers/net/ethernet/ti/Makefile: icssg/icssg_classifier.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
drivers/net/ethernet/ti/Makefile: icssg/icssg_config.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
drivers/net/ethernet/ti/Makefile: icssg/icssg_mii_cfg.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
drivers/net/ethernet/ti/Makefile: icssg/icssg_stats.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
drivers/net/ethernet/ti/Makefile: icssg/icssg_ethtool.o is added to multiple modules: icssg-prueth icssg-prueth-sr1

Fix this by building a new module (icssg.o) for all the common objects.
Both the driver can then depend on this common module.

Some APIs being exported have emac_ as the prefix which may result into
confusion with other existing APIs with emac_ prefix, to avoid
confusion, rename the APIs being exported with emac_ to icssg_ prefix.

This also fixes below error seen when both drivers are built.
ERROR: modpost: "icssg_queue_pop"
[drivers/net/ethernet/ti/icssg-prueth-sr1.ko] undefined!
ERROR: modpost: "icssg_queue_push"
[drivers/net/ethernet/ti/icssg-prueth-sr1.ko] undefined!

Reported-and-tested-by: Thorsten Leemhuis <linux@leemhuis.info>
Closes: https://lore.kernel.org/oe-kbuild-all/202405182038.ncf1mL7Z-lkp@intel.com/
Fixes: 487f7323f39a ("net: ti: icssg-prueth: Add helper functions to configure FDB")
Reviewed-by: Roger Quadros <rogerq@kernel.org>
Signed-off-by: MD Danish Anwar <danishanwar@ti.com>
---
Cc: Thorsten Leemhuis <linux@leemhuis.info>

NOTE: This is only applicable on net-next but not on net as the patch that
introduced this dependency is part of net-next.

v2 -> v3:
*) Renamed APIs being exported with emac_ prefix to icssg_ prefix as suggested
   by Andrew Lunn <andrew@lunn.ch> to avoid confusion with arc/emac_rockchip.c,
   allwinner/sun4i-emac.c, ibm/emac/, and qualcomm/emac/
*) Modified commit message to describe renaming APIs as part of this commit as well.
*) Rebased on latest net-next/main.
*) Added RB tag of Roger Quadros <rogerq@kernel.org>
*) Added Reported-and-tested-by tag of Thorsten Leemhuis <linux@leemhuis.info>

v1 -> v2:
*) Instead of just adding the missing module to icssg-prueth-sr1, the
   patch also splits the common objects into new module as suggested by
   Andrew Lunn <andrew@lunn.ch>
*) Not carrying Tested-by tag of Thorsten Leemhuis <linux@leemhuis.info>
   as this patch has significant diff over v1. I would like him to test
   this patch again.

v1 https://lore.kernel.org/all/20240605035617.2189393-1-danishanwar@ti.com/
v2 https://lore.kernel.org/all/20240606073639.3299252-1-danishanwar@ti.com/#t

 drivers/net/ethernet/ti/Makefile              | 32 ++++++------
 .../net/ethernet/ti/icssg/icssg_classifier.c  |  6 +++
 drivers/net/ethernet/ti/icssg/icssg_common.c  | 50 +++++++++++++++----
 drivers/net/ethernet/ti/icssg/icssg_config.c  | 15 +++++-
 drivers/net/ethernet/ti/icssg/icssg_ethtool.c |  1 +
 drivers/net/ethernet/ti/icssg/icssg_mii_cfg.c |  4 ++
 drivers/net/ethernet/ti/icssg/icssg_prueth.c  | 38 +++++++-------
 drivers/net/ethernet/ti/icssg/icssg_prueth.h  | 22 ++++----
 .../net/ethernet/ti/icssg/icssg_prueth_sr1.c  | 14 +++---
 drivers/net/ethernet/ti/icssg/icssg_queues.c  |  2 +
 drivers/net/ethernet/ti/icssg/icssg_stats.c   |  3 +-
 .../net/ethernet/ti/icssg/icssg_switchdev.c   |  4 +-
 12 files changed, 122 insertions(+), 69 deletions(-)


base-commit: 2146b7dd354c2a1384381ca3cd5751bfff6137d6

Comments

Sai Krishna Gajula July 13, 2024, 8:33 a.m. UTC | #1
> -----Original Message-----
> From: MD Danish Anwar <danishanwar@ti.com>
> Sent: Friday, July 12, 2024 5:37 PM
> To: Heiner Kallweit <hkallweit1@gmail.com>; Simon Horman
> <horms@kernel.org>; Dan Carpenter <dan.carpenter@linaro.org>; Jan Kiszka
> <jan.kiszka@siemens.com>; Wolfram Sang <wsa+renesas@sang-
> engineering.com>; Diogo Ivo <diogo.ivo@siemens.com>; Andrew Lunn
> <andrew@lunn.ch>; Roger Quadros <rogerq@kernel.org>; MD Danish Anwar
> <danishanwar@ti.com>; Paolo Abeni <pabeni@redhat.com>; Jakub Kicinski
> <kuba@kernel.org>; Eric Dumazet <edumazet@google.com>; David S. Miller
> <davem@davemloft.net>
> Cc: linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> netdev@vger.kernel.org; srk@ti.com; Vignesh Raghavendra
> <vigneshr@ti.com>; Thorsten Leemhuis <linux@leemhuis.info>
> Subject: [EXTERNAL] [PATCH net-next v3] net: ti: icssg-prueth: Split out
> common object into module
> 
> icssg_prueth. c and icssg_prueth_sr1. c drivers use multiple common .c files.
> These common objects are getting added to multiple modules. As a result
> when both drivers are enabled in .config, below warning is seen.
> drivers/net/ethernet/ti/Makefile: 
> icssg_prueth.c and icssg_prueth_sr1.c drivers use multiple common .c files.
> These common objects are getting added to multiple modules. As a result
> when both drivers are enabled in .config, below warning is seen.
> 
> drivers/net/ethernet/ti/Makefile: icssg/icssg_common.o is added to multiple
> modules: icssg-prueth icssg-prueth-sr1
> drivers/net/ethernet/ti/Makefile: icssg/icssg_classifier.o is added to multiple
> modules: icssg-prueth icssg-prueth-sr1
> drivers/net/ethernet/ti/Makefile: icssg/icssg_config.o is added to multiple
> modules: icssg-prueth icssg-prueth-sr1
> drivers/net/ethernet/ti/Makefile: icssg/icssg_mii_cfg.o is added to multiple
> modules: icssg-prueth icssg-prueth-sr1
> drivers/net/ethernet/ti/Makefile: icssg/icssg_stats.o is added to multiple
> modules: icssg-prueth icssg-prueth-sr1
> drivers/net/ethernet/ti/Makefile: icssg/icssg_ethtool.o is added to multiple
> modules: icssg-prueth icssg-prueth-sr1
> 
> Fix this by building a new module (icssg.o) for all the common objects.
> Both the driver can then depend on this common module.
> 
> Some APIs being exported have emac_ as the prefix which may result into
> confusion with other existing APIs with emac_ prefix, to avoid confusion,
> rename the APIs being exported with emac_ to icssg_ prefix.
> 
> This also fixes below error seen when both drivers are built.
> ERROR: modpost: "icssg_queue_pop"
> [drivers/net/ethernet/ti/icssg-prueth-sr1.ko] undefined!
> ERROR: modpost: "icssg_queue_push"
> [drivers/net/ethernet/ti/icssg-prueth-sr1.ko] undefined!
> 
> Reported-and-tested-by: Thorsten Leemhuis <linux@leemhuis.info>
> Closes: https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__lore.kernel.org_oe-2Dkbuild-2Dall_202405182038.ncf1mL7Z-2Dlkp-
> 40intel.com_&d=DwIDAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=c3MsgrR-U-
> HFhmFd6R4MWRZG-8QeikJn5PkjqMTpBSg&m=nS910f-bVPllINeciu3zcX-
> RmmuaN-hU--Y3YDvgknBD5A8sRk6hE3pZSocV-
> 37f&s=sIjxhBrYXEW3mtC1p8o5MaV-xpJ3n16Ct0mRhE52PCQ&e=
> Fixes: 487f7323f39a ("net: ti: icssg-prueth: Add helper functions to configure
> FDB")
> Reviewed-by: Roger Quadros <rogerq@kernel.org>
> Signed-off-by: MD Danish Anwar <danishanwar@ti.com>
> ---
> Cc: Thorsten Leemhuis <linux@leemhuis.info>
> 
> NOTE: This is only applicable on net-next but not on net as the patch that
> introduced this dependency is part of net-next.
> 
> v2 -> v3:
> *) Renamed APIs being exported with emac_ prefix to icssg_ prefix as
> suggested
>    by Andrew Lunn <andrew@lunn.ch> to avoid confusion with
> arc/emac_rockchip.c,
>    allwinner/sun4i-emac.c, ibm/emac/, and qualcomm/emac/
> *) Modified commit message to describe renaming APIs as part of this
> commit as well.
> *) Rebased on latest net-next/main.
> *) Added RB tag of Roger Quadros <rogerq@kernel.org>
> *) Added Reported-and-tested-by tag of Thorsten Leemhuis
> <linux@leemhuis.info>
> 
> v1 -> v2:
> *) Instead of just adding the missing module to icssg-prueth-sr1, the
>    patch also splits the common objects into new module as suggested by
>    Andrew Lunn <andrew@lunn.ch>
> *) Not carrying Tested-by tag of Thorsten Leemhuis <linux@leemhuis.info>
>    as this patch has significant diff over v1. I would like him to test
>    this patch again.
> 
> v1 https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__lore.kernel.org_all_20240605035617.2189393-2D1-2Ddanishanwar-
> 40ti.com_&d=DwIDAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=c3MsgrR-U-
> HFhmFd6R4MWRZG-8QeikJn5PkjqMTpBSg&m=nS910f-bVPllINeciu3zcX-
> RmmuaN-hU--Y3YDvgknBD5A8sRk6hE3pZSocV-
> 37f&s=4oHpIW_5r75GXMLEQgIGHxzDsdm7kfhtPGzhDC8__pk&e=
> v2 https://urldefense.proofpoint.com/v2/url?u=https-
> 3A__lore.kernel.org_all_20240606073639.3299252-2D1-2Ddanishanwar-
> 40ti.com_-23t&d=DwIDAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=c3MsgrR-U-
> HFhmFd6R4MWRZG-8QeikJn5PkjqMTpBSg&m=nS910f-bVPllINeciu3zcX-
> RmmuaN-hU--Y3YDvgknBD5A8sRk6hE3pZSocV-
> 37f&s=UqJ0NW10QJdFPoyOUHFVAMtBHx7ltjQI2PEhJk91M4E&e=
> 
>  drivers/net/ethernet/ti/Makefile              | 32 ++++++------
>  .../net/ethernet/ti/icssg/icssg_classifier.c  |  6 +++
> drivers/net/ethernet/ti/icssg/icssg_common.c  | 50 +++++++++++++++----
> drivers/net/ethernet/ti/icssg/icssg_config.c  | 15 +++++-
> drivers/net/ethernet/ti/icssg/icssg_ethtool.c |  1 +
> drivers/net/ethernet/ti/icssg/icssg_mii_cfg.c |  4 ++
> drivers/net/ethernet/ti/icssg/icssg_prueth.c  | 38 +++++++-------
> drivers/net/ethernet/ti/icssg/icssg_prueth.h  | 22 ++++----
> .../net/ethernet/ti/icssg/icssg_prueth_sr1.c  | 14 +++---
> drivers/net/ethernet/ti/icssg/icssg_queues.c  |  2 +
>  drivers/net/ethernet/ti/icssg/icssg_stats.c   |  3 +-
>  .../net/ethernet/ti/icssg/icssg_switchdev.c   |  4 +-
>  12 files changed, 122 insertions(+), 69 deletions(-)
> 
> diff --git a/drivers/net/ethernet/ti/Makefile
> b/drivers/net/ethernet/ti/Makefile
> index 59cd20a38267..cbcf44806924 100644
> --- a/drivers/net/ethernet/ti/Makefile
> +++ b/drivers/net/ethernet/ti/Makefile
> @@ -31,22 +31,18 @@ ti-am65-cpsw-nuss-$(CONFIG_TI_AM65_CPSW_QOS)
> += am65-cpsw-qos.o
>  ti-am65-cpsw-nuss-$(CONFIG_TI_K3_AM65_CPSW_SWITCHDEV) += am65-
> cpsw-switchdev.o
>  obj-$(CONFIG_TI_K3_AM65_CPTS) += am65-cpts.o
> 
> -obj-$(CONFIG_TI_ICSSG_PRUETH) += icssg-prueth.o -icssg-prueth-y :=
> icssg/icssg_prueth.o \
> -		  icssg/icssg_common.o \
> -		  icssg/icssg_classifier.o \
> -		  icssg/icssg_queues.o \
> -		  icssg/icssg_config.o \
> -		  icssg/icssg_mii_cfg.o \
> -		  icssg/icssg_stats.o \
> -		  icssg/icssg_ethtool.o \
> -		  icssg/icssg_switchdev.o
> -obj-$(CONFIG_TI_ICSSG_PRUETH_SR1) += icssg-prueth-sr1.o -icssg-prueth-
> sr1-y := icssg/icssg_prueth_sr1.o \
> -		      icssg/icssg_common.o \
> -		      icssg/icssg_classifier.o \
> -		      icssg/icssg_config.o \
> -		      icssg/icssg_mii_cfg.o \
> -		      icssg/icssg_stats.o \
> -		      icssg/icssg_ethtool.o
> +obj-$(CONFIG_TI_ICSSG_PRUETH) += icssg-prueth.o icssg.o icssg-prueth-y
> +:= icssg/icssg_prueth.o icssg/icssg_switchdev.o
> +
> +obj-$(CONFIG_TI_ICSSG_PRUETH_SR1) += icssg-prueth-sr1.o icssg.o
> +icssg-prueth-sr1-y := icssg/icssg_prueth_sr1.o
> +
> +icssg-y := icssg/icssg_common.o \
> +	   icssg/icssg_classifier.o \
> +	   icssg/icssg_queues.o \
> +	   icssg/icssg_config.o \
> +	   icssg/icssg_mii_cfg.o \
> +	   icssg/icssg_stats.o \
> +	   icssg/icssg_ethtool.o
> +
>  obj-$(CONFIG_TI_ICSS_IEP) += icssg/icss_iep.o diff --git
> a/drivers/net/ethernet/ti/icssg/icssg_classifier.c
> b/drivers/net/ethernet/ti/icssg/icssg_classifier.c
> index f7d21da1a0fb..9ec504d976d6 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_classifier.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_classifier.c
> @@ -297,6 +297,7 @@ void icssg_class_set_mac_addr(struct regmap
> *miig_rt, int slice, u8 *mac)
>  		     mac[2] << 16 | mac[3] << 24));
>  	regmap_write(miig_rt, offs[slice].mac1, (u32)(mac[4] | mac[5] << 8));
> }
> +EXPORT_SYMBOL_GPL(icssg_class_set_mac_addr);
> 
>  static void icssg_class_ft1_add_mcast(struct regmap *miig_rt, int slice,
>  				      int slot, const u8 *addr, const u8 *mask)
> @@ -360,6 +361,7 @@ void icssg_class_disable(struct regmap *miig_rt, int
> slice)
>  	/* clear CFG2 */
>  	regmap_write(miig_rt, offs[slice].rx_class_cfg2, 0);  }
> +EXPORT_SYMBOL_GPL(icssg_class_disable);
> 
>  void icssg_class_default(struct regmap *miig_rt, int slice, bool allmulti,
>  			 bool is_sr1)
> @@ -390,6 +392,7 @@ void icssg_class_default(struct regmap *miig_rt, int
> slice, bool allmulti,
>  	/* clear CFG2 */
>  	regmap_write(miig_rt, offs[slice].rx_class_cfg2, 0);  }
> +EXPORT_SYMBOL_GPL(icssg_class_default);
> 
>  void icssg_class_promiscuous_sr1(struct regmap *miig_rt, int slice)  { @@ -
> 408,6 +411,7 @@ void icssg_class_promiscuous_sr1(struct regmap *miig_rt,
> int slice)
>  		regmap_write(miig_rt, offset, data);
>  	}
>  }
> +EXPORT_SYMBOL_GPL(icssg_class_promiscuous_sr1);
> 
>  void icssg_class_add_mcast_sr1(struct regmap *miig_rt, int slice,
>  			       struct net_device *ndev)
> @@ -449,6 +453,7 @@ void icssg_class_add_mcast_sr1(struct regmap
> *miig_rt, int slice,
>  		slot++;
>  	}
>  }
> +EXPORT_SYMBOL_GPL(icssg_class_add_mcast_sr1);
> 
>  /* required for SAV check */
>  void icssg_ft1_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac_addr)
> @@ -460,3 +465,4 @@ void icssg_ft1_set_mac_addr(struct regmap *miig_rt,
> int slice, u8 *mac_addr)
>  	rx_class_ft1_set_da_mask(miig_rt, slice, 0, mask_addr);
>  	rx_class_ft1_cfg_set_type(miig_rt, slice, 0, FT1_CFG_TYPE_EQ);  }
> +EXPORT_SYMBOL_GPL(icssg_ft1_set_mac_addr);
> diff --git a/drivers/net/ethernet/ti/icssg/icssg_common.c
> b/drivers/net/ethernet/ti/icssg/icssg_common.c
> index 2f716c0d7060..b9d8a93d1680 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_common.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_common.c
> @@ -51,6 +51,7 @@ void prueth_cleanup_rx_chns(struct prueth_emac
> *emac,
>  	if (rx_chn->rx_chn)
>  		k3_udma_glue_release_rx_chn(rx_chn->rx_chn);
>  }
> +EXPORT_SYMBOL_GPL(prueth_cleanup_rx_chns);
> 
>  void prueth_cleanup_tx_chns(struct prueth_emac *emac)  { @@ -71,6 +72,7
> @@ void prueth_cleanup_tx_chns(struct prueth_emac *emac)
>  		memset(tx_chn, 0, sizeof(*tx_chn));
>  	}
>  }
> +EXPORT_SYMBOL_GPL(prueth_cleanup_tx_chns);
> 
>  void prueth_ndev_del_tx_napi(struct prueth_emac *emac, int num)  { @@ -
> 84,6 +86,7 @@ void prueth_ndev_del_tx_napi(struct prueth_emac *emac, int
> num)
>  		netif_napi_del(&tx_chn->napi_tx);
>  	}
>  }
> +EXPORT_SYMBOL_GPL(prueth_ndev_del_tx_napi);
> 
>  void prueth_xmit_free(struct prueth_tx_chn *tx_chn,
>  		      struct cppi5_host_desc_t *desc) @@ -120,6 +123,7 @@
> void prueth_xmit_free(struct prueth_tx_chn *tx_chn,
> 
>  	k3_cppi_desc_pool_free(tx_chn->desc_pool, first_desc);  }
> +EXPORT_SYMBOL_GPL(prueth_xmit_free);
> 
>  int emac_tx_complete_packets(struct prueth_emac *emac, int chn,
>  			     int budget, bool *tdown)
> @@ -264,6 +268,7 @@ int prueth_ndev_add_tx_napi(struct prueth_emac
> *emac)
>  	prueth_ndev_del_tx_napi(emac, i);
>  	return ret;
>  }
> +EXPORT_SYMBOL_GPL(prueth_ndev_add_tx_napi);
> 
>  int prueth_init_tx_chns(struct prueth_emac *emac)  { @@ -344,6 +349,7
> @@ int prueth_init_tx_chns(struct prueth_emac *emac)
>  	prueth_cleanup_tx_chns(emac);
>  	return ret;
>  }
> +EXPORT_SYMBOL_GPL(prueth_init_tx_chns);
> 
>  int prueth_init_rx_chns(struct prueth_emac *emac,
>  			struct prueth_rx_chn *rx_chn,
> @@ -453,6 +459,7 @@ int prueth_init_rx_chns(struct prueth_emac *emac,
>  	prueth_cleanup_rx_chns(emac, rx_chn, max_rflows);
>  	return ret;
>  }
> +EXPORT_SYMBOL_GPL(prueth_init_rx_chns);
> 
>  int prueth_dma_rx_push(struct prueth_emac *emac,
>  		       struct sk_buff *skb,
> @@ -490,6 +497,7 @@ int prueth_dma_rx_push(struct prueth_emac *emac,
>  	return k3_udma_glue_push_rx_chn(rx_chn->rx_chn, 0,
>  					desc_rx, desc_dma);
>  }
> +EXPORT_SYMBOL_GPL(prueth_dma_rx_push);
> 
>  u64 icssg_ts_to_ns(u32 hi_sw, u32 hi, u32 lo, u32 cycle_time_ns)  { @@ -
> 505,6 +513,7 @@ u64 icssg_ts_to_ns(u32 hi_sw, u32 hi, u32 lo, u32
> cycle_time_ns)
> 
>  	return ns;
>  }
> +EXPORT_SYMBOL_GPL(icssg_ts_to_ns);
> 
>  void emac_rx_timestamp(struct prueth_emac *emac,
>  		       struct sk_buff *skb, u32 *psdata) @@ -636,7 +645,7 @@
> static int prueth_tx_ts_cookie_get(struct prueth_emac *emac)  }
> 
>  /**
> - * emac_ndo_start_xmit - EMAC Transmit function
> + * icssg_ndo_start_xmit - EMAC Transmit function
>   * @skb: SKB pointer
>   * @ndev: EMAC network adapter
>   *
> @@ -647,7 +656,7 @@ static int prueth_tx_ts_cookie_get(struct
> prueth_emac *emac)
>   *
>   * Return: enum netdev_tx
>   */
> -enum netdev_tx emac_ndo_start_xmit(struct sk_buff *skb, struct net_device
> *ndev)
> +enum netdev_tx icssg_ndo_start_xmit(struct sk_buff *skb, struct
> +net_device *ndev)
>  {
>  	struct cppi5_host_desc_t *first_desc, *next_desc, *cur_desc;
>  	struct prueth_emac *emac = netdev_priv(ndev); @@ -806,6 +815,7
> @@ enum netdev_tx emac_ndo_start_xmit(struct sk_buff *skb, struct
> net_device *ndev)
>  	netif_tx_stop_queue(netif_txq);
>  	return NETDEV_TX_BUSY;
>  }
> +EXPORT_SYMBOL_GPL(icssg_ndo_start_xmit);
> 
>  static void prueth_tx_cleanup(void *data, dma_addr_t desc_dma)  { @@ -
> 831,6 +841,7 @@ irqreturn_t prueth_rx_irq(int irq, void *dev_id)
> 
>  	return IRQ_HANDLED;
>  }
> +EXPORT_SYMBOL_GPL(prueth_rx_irq);
> 
>  void prueth_emac_stop(struct prueth_emac *emac)  { @@ -855,6 +866,7
> @@ void prueth_emac_stop(struct prueth_emac *emac)
>  	rproc_shutdown(prueth->rtu[slice]);
>  	rproc_shutdown(prueth->pru[slice]);
>  }
> +EXPORT_SYMBOL_GPL(prueth_emac_stop);
> 
>  void prueth_cleanup_tx_ts(struct prueth_emac *emac)  { @@ -867,8 +879,9
> @@ void prueth_cleanup_tx_ts(struct prueth_emac *emac)
>  		}
>  	}
>  }
> +EXPORT_SYMBOL_GPL(prueth_cleanup_tx_ts);
> 
> -int emac_napi_rx_poll(struct napi_struct *napi_rx, int budget)
> +int icssg_napi_rx_poll(struct napi_struct *napi_rx, int budget)
>  {
>  	struct prueth_emac *emac = prueth_napi_to_emac(napi_rx);
>  	int rx_flow = emac->is_sr1 ?
> @@ -905,6 +918,7 @@ int emac_napi_rx_poll(struct napi_struct *napi_rx, int
> budget)
> 
>  	return num_rx;
>  }
> +EXPORT_SYMBOL_GPL(icssg_napi_rx_poll);
> 
>  int prueth_prepare_rx_chan(struct prueth_emac *emac,
>  			   struct prueth_rx_chn *chn,
> @@ -930,6 +944,7 @@ int prueth_prepare_rx_chan(struct prueth_emac
> *emac,
> 
>  	return 0;
>  }
> +EXPORT_SYMBOL_GPL(prueth_prepare_rx_chan);
> 
>  void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num,
>  			  bool free_skb)
> @@ -944,6 +959,7 @@ void prueth_reset_tx_chan(struct prueth_emac
> *emac, int ch_num,
>  		k3_udma_glue_disable_tx_chn(emac->tx_chns[i].tx_chn);
>  	}
>  }
> +EXPORT_SYMBOL_GPL(prueth_reset_tx_chan);
> 
>  void prueth_reset_rx_chan(struct prueth_rx_chn *chn,
>  			  int num_flows, bool disable)
> @@ -956,11 +972,13 @@ void prueth_reset_rx_chan(struct prueth_rx_chn
> *chn,
>  	if (disable)
>  		k3_udma_glue_disable_rx_chn(chn->rx_chn);
>  }
> +EXPORT_SYMBOL_GPL(prueth_reset_rx_chan);
> 
> -void emac_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue)
> +void icssg_ndo_tx_timeout(struct net_device *ndev, unsigned int
> +txqueue)
>  {
>  	ndev->stats.tx_errors++;
>  }
> +EXPORT_SYMBOL_GPL(icssg_ndo_tx_timeout);
> 
>  static int emac_set_ts_config(struct net_device *ndev, struct ifreq *ifr)  { @@
> -1024,7 +1042,7 @@ static int emac_get_ts_config(struct net_device *ndev,
> struct ifreq *ifr)
>  			    -EFAULT : 0;
>  }
> 
> -int emac_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
> +int icssg_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int
> +cmd)
>  {
>  	switch (cmd) {
>  	case SIOCGHWTSTAMP:
> @@ -1037,9 +1055,10 @@ int emac_ndo_ioctl(struct net_device *ndev, struct
> ifreq *ifr, int cmd)
> 
>  	return phy_do_ioctl(ndev, ifr, cmd);
>  }
> +EXPORT_SYMBOL_GPL(icssg_ndo_ioctl);
> 
> -void emac_ndo_get_stats64(struct net_device *ndev,
> -			  struct rtnl_link_stats64 *stats)
> +void icssg_ndo_get_stats64(struct net_device *ndev,
> +			   struct rtnl_link_stats64 *stats)
>  {
>  	struct prueth_emac *emac = netdev_priv(ndev);
> 
> @@ -1058,9 +1077,10 @@ void emac_ndo_get_stats64(struct net_device
> *ndev,
>  	stats->tx_errors  = ndev->stats.tx_errors;
>  	stats->tx_dropped = ndev->stats.tx_dropped;  }
> +EXPORT_SYMBOL_GPL(icssg_ndo_get_stats64);
> 
> -int emac_ndo_get_phys_port_name(struct net_device *ndev, char *name,
> -				size_t len)
> +int icssg_ndo_get_phys_port_name(struct net_device *ndev, char *name,
> +				 size_t len)
>  {
>  	struct prueth_emac *emac = netdev_priv(ndev);
>  	int ret;
> @@ -1071,6 +1091,7 @@ int emac_ndo_get_phys_port_name(struct
> net_device *ndev, char *name,
> 
>  	return 0;
>  }
> +EXPORT_SYMBOL_GPL(icssg_ndo_get_phys_port_name);
> 
>  /* get emac_port corresponding to eth_node name */  int
> prueth_node_port(struct device_node *eth_node) @@ -1089,6 +1110,7 @@
> int prueth_node_port(struct device_node *eth_node)
>  	else
>  		return PRUETH_PORT_INVALID;
>  }
> +EXPORT_SYMBOL_GPL(prueth_node_port);
> 
>  /* get MAC instance corresponding to eth_node name */  int
> prueth_node_mac(struct device_node *eth_node) @@ -1107,6 +1129,7 @@
> int prueth_node_mac(struct device_node *eth_node)
>  	else
>  		return PRUETH_MAC_INVALID;
>  }
> +EXPORT_SYMBOL_GPL(prueth_node_mac);
> 
>  void prueth_netdev_exit(struct prueth *prueth,
>  			struct device_node *eth_node)
> @@ -1132,6 +1155,7 @@ void prueth_netdev_exit(struct prueth *prueth,
>  	free_netdev(emac->ndev);
>  	prueth->emac[mac] = NULL;
>  }
> +EXPORT_SYMBOL_GPL(prueth_netdev_exit);
> 
>  int prueth_get_cores(struct prueth *prueth, int slice, bool is_sr1)  { @@ -
> 1182,6 +1206,7 @@ int prueth_get_cores(struct prueth *prueth, int slice, bool
> is_sr1)
> 
>  	return 0;
>  }
> +EXPORT_SYMBOL_GPL(prueth_get_cores);
> 
>  void prueth_put_cores(struct prueth *prueth, int slice)  { @@ -1194,6
> +1219,7 @@ void prueth_put_cores(struct prueth *prueth, int slice)
>  	if (prueth->pru[slice])
>  		pru_rproc_put(prueth->pru[slice]);
>  }
> +EXPORT_SYMBOL_GPL(prueth_put_cores);
> 
>  #ifdef CONFIG_PM_SLEEP
>  static int prueth_suspend(struct device *dev) @@ -1250,3 +1276,9 @@ static
> int prueth_resume(struct device *dev)  const struct dev_pm_ops
> prueth_dev_pm_ops = {
>  	SET_SYSTEM_SLEEP_PM_OPS(prueth_suspend, prueth_resume)  };
> +EXPORT_SYMBOL_GPL(prueth_dev_pm_ops);
> +
> +MODULE_AUTHOR("Roger Quadros <rogerq@ti.com>");
> MODULE_AUTHOR("Md
> +Danish Anwar <danishanwar@ti.com>"); MODULE_DESCRIPTION("PRUSS
> ICSSG
> +Ethernet Driver Common Module"); MODULE_LICENSE("GPL");
> diff --git a/drivers/net/ethernet/ti/icssg/icssg_config.c
> b/drivers/net/ethernet/ti/icssg/icssg_config.c
> index 9444e56b7672..dae52a83a378 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_config.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_config.c
> @@ -248,6 +248,7 @@ void icssg_config_ipg(struct prueth_emac *emac)
> 
>  	icssg_mii_update_ipg(prueth->mii_rt, slice, ipg);  }
> +EXPORT_SYMBOL_GPL(icssg_config_ipg);
> 
>  static void emac_r30_cmd_init(struct prueth_emac *emac)  { @@ -508,6
> +509,7 @@ int icssg_config(struct prueth *prueth, struct prueth_emac
> *emac, int slice)
> 
>  	return 0;
>  }
> +EXPORT_SYMBOL_GPL(icssg_config);
> 
>  /* Bitmask for ICSSG r30 commands */
>  static const struct icssg_r30_cmd emac_r32_bitmask[] = { @@ -532,8 +534,8
> @@ static const struct icssg_r30_cmd emac_r32_bitmask[] = {
>  	{{0xffef0000,  EMAC_NONE, 0xffef0000, EMAC_NONE}}	/* VLAN
> UNWARE*/
>  };
> 
> -int emac_set_port_state(struct prueth_emac *emac,
> -			enum icssg_port_state_cmd cmd)
> +int icssg_set_port_state(struct prueth_emac *emac,
> +			 enum icssg_port_state_cmd cmd)
>  {
>  	struct icssg_r30_cmd __iomem *p;
>  	int ret = -ETIMEDOUT;
> @@ -564,6 +566,7 @@ int emac_set_port_state(struct prueth_emac *emac,
> 
>  	return ret;
>  }
> +EXPORT_SYMBOL_GPL(icssg_set_port_state);
> 
>  void icssg_config_half_duplex(struct prueth_emac *emac)  { @@ -575,6
> +578,7 @@ void icssg_config_half_duplex(struct prueth_emac *emac)
>  	val = get_random_u32();
>  	writel(val, emac->dram.va + HD_RAND_SEED_OFFSET);  }
> +EXPORT_SYMBOL_GPL(icssg_config_half_duplex);
> 
>  void icssg_config_set_speed(struct prueth_emac *emac)  { @@ -601,6 +605,7
> @@ void icssg_config_set_speed(struct prueth_emac *emac)
> 
>  	writeb(fw_speed, emac->dram.va + PORT_LINK_SPEED_OFFSET);  }
> +EXPORT_SYMBOL_GPL(icssg_config_set_speed);
> 
>  int icssg_send_fdb_msg(struct prueth_emac *emac, struct mgmt_cmd *cmd,
>  		       struct mgmt_cmd_rsp *rsp)
> @@ -635,6 +640,7 @@ int icssg_send_fdb_msg(struct prueth_emac *emac,
> struct mgmt_cmd *cmd,
> 
>  	return 0;
>  }
> +EXPORT_SYMBOL_GPL(icssg_send_fdb_msg);
> 
>  static void icssg_fdb_setup(struct prueth_emac *emac, struct mgmt_cmd
> *fdb_cmd,
>  			    const unsigned char *addr, u8 fid, int cmd) @@ -
> 687,6 +693,7 @@ int icssg_fdb_add_del(struct prueth_emac *emac, const
> unsigned char *addr,
> 
>  	return -EINVAL;
>  }
> +EXPORT_SYMBOL_GPL(icssg_fdb_add_del);
> 
>  int icssg_fdb_lookup(struct prueth_emac *emac, const unsigned char *addr,
>  		     u8 vid)
> @@ -716,6 +723,7 @@ int icssg_fdb_lookup(struct prueth_emac *emac,
> const unsigned char *addr,
> 
>  	return 0;
>  }
> +EXPORT_SYMBOL_GPL(icssg_fdb_lookup);
> 
>  void icssg_vtbl_modify(struct prueth_emac *emac, u8 vid, u8 port_mask,
>  		       u8 untag_mask, bool add)
> @@ -741,6 +749,7 @@ void icssg_vtbl_modify(struct prueth_emac *emac, u8
> vid, u8 port_mask,
> 
>  	tbl[vid].fid_c1 = fid_c1;
>  }
> +EXPORT_SYMBOL_GPL(icssg_vtbl_modify);
> 
>  u16 icssg_get_pvid(struct prueth_emac *emac)  { @@ -756,6 +765,7 @@ u16
> icssg_get_pvid(struct prueth_emac *emac)
> 
>  	return pvid;
>  }
> +EXPORT_SYMBOL_GPL(icssg_get_pvid);
> 
>  void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port)  { @@ -771,3
> +781,4 @@ void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port)
>  	else
>  		writel(pvid, prueth->shram.va +
> EMAC_ICSSG_SWITCH_PORT0_DEFAULT_VLAN_OFFSET);
>  }
> +EXPORT_SYMBOL_GPL(icssg_set_pvid);
> diff --git a/drivers/net/ethernet/ti/icssg/icssg_ethtool.c
> b/drivers/net/ethernet/ti/icssg/icssg_ethtool.c
> index c8d0f45cc5b1..131eb4cae1c3 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_ethtool.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_ethtool.c
> @@ -312,3 +312,4 @@ const struct ethtool_ops icssg_ethtool_ops = {
>  	.nway_reset = emac_nway_reset,
>  	.get_rmon_stats = emac_get_rmon_stats,  };
> +EXPORT_SYMBOL_GPL(icssg_ethtool_ops);
> diff --git a/drivers/net/ethernet/ti/icssg/icssg_mii_cfg.c
> b/drivers/net/ethernet/ti/icssg/icssg_mii_cfg.c
> index 92718ae40d7e..b64955438bb2 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_mii_cfg.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_mii_cfg.c
> @@ -40,6 +40,7 @@ void icssg_mii_update_mtu(struct regmap *mii_rt, int
> mii, int mtu)
>  				   (mtu - 1) <<
> PRUSS_MII_RT_RX_FRMS_MAX_FRM_SHIFT);
>  	}
>  }
> +EXPORT_SYMBOL_GPL(icssg_mii_update_mtu);
> 
>  void icssg_update_rgmii_cfg(struct regmap *miig_rt, struct prueth_emac
> *emac)  { @@ -66,6 +67,7 @@ void icssg_update_rgmii_cfg(struct regmap
> *miig_rt, struct prueth_emac *emac)
>  	regmap_update_bits(miig_rt, RGMII_CFG_OFFSET, full_duplex_mask,
>  			   full_duplex_val);
>  }
> +EXPORT_SYMBOL_GPL(icssg_update_rgmii_cfg);
> 
>  void icssg_miig_set_interface_mode(struct regmap *miig_rt, int mii,
> phy_interface_t phy_if)  { @@ -105,6 +107,7 @@ u32
> icssg_rgmii_get_speed(struct regmap *miig_rt, int mii)
> 
>  	return icssg_rgmii_cfg_get_bitfield(miig_rt, mask, shift);  }
> +EXPORT_SYMBOL_GPL(icssg_rgmii_get_speed);
> 
>  u32 icssg_rgmii_get_fullduplex(struct regmap *miig_rt, int mii)  { @@ -118,3
> +121,4 @@ u32 icssg_rgmii_get_fullduplex(struct regmap *miig_rt, int mii)
> 
>  	return icssg_rgmii_cfg_get_bitfield(miig_rt, mask, shift);  }
> +EXPORT_SYMBOL_GPL(icssg_rgmii_get_fullduplex);
> diff --git a/drivers/net/ethernet/ti/icssg/icssg_prueth.c
> b/drivers/net/ethernet/ti/icssg/icssg_prueth.c
> index e13835100754..3e51b3a9b0a5 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_prueth.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_prueth.c
> @@ -249,10 +249,10 @@ static void emac_adjust_link(struct net_device
> *ndev)
>  			icssg_config_ipg(emac);
>  			spin_unlock_irqrestore(&emac->lock, flags);
>  			icssg_config_set_speed(emac);
> -			emac_set_port_state(emac,
> ICSSG_EMAC_PORT_FORWARD);
> +			icssg_set_port_state(emac,
> ICSSG_EMAC_PORT_FORWARD);
> 
>  		} else {
> -			emac_set_port_state(emac,
> ICSSG_EMAC_PORT_DISABLE);
> +			icssg_set_port_state(emac,
> ICSSG_EMAC_PORT_DISABLE);
>  		}
>  	}
> 
> @@ -694,17 +694,17 @@ static void emac_ndo_set_rx_mode_work(struct
> work_struct *work)
> 
>  	promisc = ndev->flags & IFF_PROMISC;
>  	allmulti = ndev->flags & IFF_ALLMULTI;
> -	emac_set_port_state(emac,
> ICSSG_EMAC_PORT_UC_FLOODING_DISABLE);
> -	emac_set_port_state(emac,
> ICSSG_EMAC_PORT_MC_FLOODING_DISABLE);
> +	icssg_set_port_state(emac,
> ICSSG_EMAC_PORT_UC_FLOODING_DISABLE);
> +	icssg_set_port_state(emac,
> ICSSG_EMAC_PORT_MC_FLOODING_DISABLE);
> 
>  	if (promisc) {
> -		emac_set_port_state(emac,
> ICSSG_EMAC_PORT_UC_FLOODING_ENABLE);
> -		emac_set_port_state(emac,
> ICSSG_EMAC_PORT_MC_FLOODING_ENABLE);
> +		icssg_set_port_state(emac,
> ICSSG_EMAC_PORT_UC_FLOODING_ENABLE);
> +		icssg_set_port_state(emac,
> ICSSG_EMAC_PORT_MC_FLOODING_ENABLE);
>  		return;
>  	}
> 
>  	if (allmulti) {
> -		emac_set_port_state(emac,
> ICSSG_EMAC_PORT_MC_FLOODING_ENABLE);
> +		icssg_set_port_state(emac,
> ICSSG_EMAC_PORT_MC_FLOODING_ENABLE);
>  		return;
>  	}
> 
> @@ -728,14 +728,14 @@ static void emac_ndo_set_rx_mode(struct
> net_device *ndev)  static const struct net_device_ops emac_netdev_ops = {
>  	.ndo_open = emac_ndo_open,
>  	.ndo_stop = emac_ndo_stop,
> -	.ndo_start_xmit = emac_ndo_start_xmit,
> +	.ndo_start_xmit = icssg_ndo_start_xmit,
>  	.ndo_set_mac_address = eth_mac_addr,
>  	.ndo_validate_addr = eth_validate_addr,
> -	.ndo_tx_timeout = emac_ndo_tx_timeout,
> +	.ndo_tx_timeout = icssg_ndo_tx_timeout,
>  	.ndo_set_rx_mode = emac_ndo_set_rx_mode,
> -	.ndo_eth_ioctl = emac_ndo_ioctl,
> -	.ndo_get_stats64 = emac_ndo_get_stats64,
> -	.ndo_get_phys_port_name = emac_ndo_get_phys_port_name,
> +	.ndo_eth_ioctl = icssg_ndo_ioctl,
> +	.ndo_get_stats64 = icssg_ndo_get_stats64,
> +	.ndo_get_phys_port_name = icssg_ndo_get_phys_port_name,
>  };
> 
>  static int prueth_netdev_init(struct prueth *prueth, @@ -771,7 +771,7 @@
> static int prueth_netdev_init(struct prueth *prueth,
>  	}
>  	INIT_WORK(&emac->rx_mode_work,
> emac_ndo_set_rx_mode_work);
> 
> -	INIT_DELAYED_WORK(&emac->stats_work,
> emac_stats_work_handler);
> +	INIT_DELAYED_WORK(&emac->stats_work,
> icssg_stats_work_handler);
> 
>  	ret = pruss_request_mem_region(prueth->pruss,
>  				       port == PRUETH_PORT_MII0 ?
> @@ -864,7 +864,7 @@ static int prueth_netdev_init(struct prueth *prueth,
>  	ndev->hw_features = NETIF_F_SG;
>  	ndev->features = ndev->hw_features;
> 
> -	netif_napi_add(ndev, &emac->napi_rx, emac_napi_rx_poll);
> +	netif_napi_add(ndev, &emac->napi_rx, icssg_napi_rx_poll);
>  	hrtimer_init(&emac->rx_hrtimer, CLOCK_MONOTONIC,
>  		     HRTIMER_MODE_REL_PINNED);
>  	emac->rx_hrtimer.function = &emac_rx_timer_callback; @@ -927,8
> +927,8 @@ static void prueth_emac_restart(struct prueth *prueth)
>  		netif_device_detach(emac1->ndev);
> 
>  	/* Disable both PRUeth ports */
> -	emac_set_port_state(emac0, ICSSG_EMAC_PORT_DISABLE);
> -	emac_set_port_state(emac1, ICSSG_EMAC_PORT_DISABLE);
> +	icssg_set_port_state(emac0, ICSSG_EMAC_PORT_DISABLE);
> +	icssg_set_port_state(emac1, ICSSG_EMAC_PORT_DISABLE);
> 
>  	/* Stop both pru cores for both PRUeth ports*/
>  	prueth_emac_stop(emac0);
> @@ -943,8 +943,8 @@ static void prueth_emac_restart(struct prueth
> *prueth)
>  	prueth->emacs_initialized++;
> 
>  	/* Enable forwarding for both PRUeth ports */
> -	emac_set_port_state(emac0, ICSSG_EMAC_PORT_FORWARD);
> -	emac_set_port_state(emac1, ICSSG_EMAC_PORT_FORWARD);
> +	icssg_set_port_state(emac0, ICSSG_EMAC_PORT_FORWARD);
> +	icssg_set_port_state(emac1, ICSSG_EMAC_PORT_FORWARD);
> 
>  	/* Attache net_device for both PRUeth ports */
>  	netif_device_attach(emac0->ndev);
> @@ -972,7 +972,7 @@ static void icssg_enable_switch_mode(struct prueth
> *prueth)
>  					  BIT(emac->port_id) |
> DEFAULT_UNTAG_MASK,
>  					  true);
>  			icssg_set_pvid(prueth, emac->port_vlan, emac-
> >port_id);
> -			emac_set_port_state(emac,
> ICSSG_EMAC_PORT_VLAN_AWARE_ENABLE);
> +			icssg_set_port_state(emac,
> ICSSG_EMAC_PORT_VLAN_AWARE_ENABLE);
>  		}
>  	}
>  }
> diff --git a/drivers/net/ethernet/ti/icssg/icssg_prueth.h
> b/drivers/net/ethernet/ti/icssg/icssg_prueth.h
> index 5eeeccb73665..f678d656a3ed 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_prueth.h
> +++ b/drivers/net/ethernet/ti/icssg/icssg_prueth.h
> @@ -329,8 +329,8 @@ void icssg_ft1_set_mac_addr(struct regmap *miig_rt,
> int slice, u8 *mac_addr);  void icssg_config_ipg(struct prueth_emac *emac);
> int icssg_config(struct prueth *prueth, struct prueth_emac *emac,
>  		 int slice);
> -int emac_set_port_state(struct prueth_emac *emac,
> -			enum icssg_port_state_cmd state);
> +int icssg_set_port_state(struct prueth_emac *emac,
> +			 enum icssg_port_state_cmd state);
>  void icssg_config_set_speed(struct prueth_emac *emac);  void
> icssg_config_half_duplex(struct prueth_emac *emac);
> 
> @@ -352,7 +352,7 @@ void icssg_set_pvid(struct prueth *prueth, u8 vid, u8
> port);  #define prueth_napi_to_tx_chn(pnapi) \
>  	container_of(pnapi, struct prueth_tx_chn, napi_tx)
> 
> -void emac_stats_work_handler(struct work_struct *work);
> +void icssg_stats_work_handler(struct work_struct *work);
>  void emac_update_hardware_stats(struct prueth_emac *emac);  int
> emac_get_stat_by_name(struct prueth_emac *emac, char *stat_name);
> 
> @@ -377,11 +377,11 @@ int prueth_dma_rx_push(struct prueth_emac
> *emac,
>  		       struct prueth_rx_chn *rx_chn);  void
> emac_rx_timestamp(struct prueth_emac *emac,
>  		       struct sk_buff *skb, u32 *psdata); -enum netdev_tx
> emac_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev);
> +enum netdev_tx icssg_ndo_start_xmit(struct sk_buff *skb, struct
> +net_device *ndev);
>  irqreturn_t prueth_rx_irq(int irq, void *dev_id);  void
> prueth_emac_stop(struct prueth_emac *emac);  void
> prueth_cleanup_tx_ts(struct prueth_emac *emac); -int
> emac_napi_rx_poll(struct napi_struct *napi_rx, int budget);
> +int icssg_napi_rx_poll(struct napi_struct *napi_rx, int budget);
>  int prueth_prepare_rx_chan(struct prueth_emac *emac,
>  			   struct prueth_rx_chn *chn,
>  			   int buf_size);
> @@ -389,12 +389,12 @@ void prueth_reset_tx_chan(struct prueth_emac
> *emac, int ch_num,
>  			  bool free_skb);
>  void prueth_reset_rx_chan(struct prueth_rx_chn *chn,
>  			  int num_flows, bool disable);
> -void emac_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue); -
> int emac_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd); -void
> emac_ndo_get_stats64(struct net_device *ndev,
> -			  struct rtnl_link_stats64 *stats);
> -int emac_ndo_get_phys_port_name(struct net_device *ndev, char *name,
> -				size_t len);
> +void icssg_ndo_tx_timeout(struct net_device *ndev, unsigned int
> +txqueue); int icssg_ndo_ioctl(struct net_device *ndev, struct ifreq
> +*ifr, int cmd); void icssg_ndo_get_stats64(struct net_device *ndev,
> +			   struct rtnl_link_stats64 *stats); int
> +icssg_ndo_get_phys_port_name(struct net_device *ndev, char *name,
> +				 size_t len);
>  int prueth_node_port(struct device_node *eth_node);  int
> prueth_node_mac(struct device_node *eth_node);  void
> prueth_netdev_exit(struct prueth *prueth, diff --git
> a/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
> b/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
> index fa98bdb11ece..e180c1166170 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
> @@ -722,14 +722,14 @@ static void emac_ndo_set_rx_mode_sr1(struct
> net_device *ndev)  static const struct net_device_ops emac_netdev_ops = {
>  	.ndo_open = emac_ndo_open,
>  	.ndo_stop = emac_ndo_stop,
> -	.ndo_start_xmit = emac_ndo_start_xmit,
> +	.ndo_start_xmit = icssg_ndo_start_xmit,
>  	.ndo_set_mac_address = eth_mac_addr,
>  	.ndo_validate_addr = eth_validate_addr,
> -	.ndo_tx_timeout = emac_ndo_tx_timeout,
> +	.ndo_tx_timeout = icssg_ndo_tx_timeout,
>  	.ndo_set_rx_mode = emac_ndo_set_rx_mode_sr1,
> -	.ndo_eth_ioctl = emac_ndo_ioctl,
> -	.ndo_get_stats64 = emac_ndo_get_stats64,
> -	.ndo_get_phys_port_name = emac_ndo_get_phys_port_name,
> +	.ndo_eth_ioctl = icssg_ndo_ioctl,
> +	.ndo_get_stats64 = icssg_ndo_get_stats64,
> +	.ndo_get_phys_port_name = icssg_ndo_get_phys_port_name,
>  };
> 
>  static int prueth_netdev_init(struct prueth *prueth, @@ -767,7 +767,7 @@
> static int prueth_netdev_init(struct prueth *prueth,
>  		goto free_ndev;
>  	}
> 
> -	INIT_DELAYED_WORK(&emac->stats_work,
> emac_stats_work_handler);
> +	INIT_DELAYED_WORK(&emac->stats_work,
> icssg_stats_work_handler);
> 
>  	ret = pruss_request_mem_region(prueth->pruss,
>  				       port == PRUETH_PORT_MII0 ?
> @@ -854,7 +854,7 @@ static int prueth_netdev_init(struct prueth *prueth,
>  	ndev->hw_features = NETIF_F_SG;
>  	ndev->features = ndev->hw_features;
> 
> -	netif_napi_add(ndev, &emac->napi_rx, emac_napi_rx_poll);
> +	netif_napi_add(ndev, &emac->napi_rx, icssg_napi_rx_poll);
>  	prueth->emac[mac] = emac;
> 
>  	return 0;
> diff --git a/drivers/net/ethernet/ti/icssg/icssg_queues.c
> b/drivers/net/ethernet/ti/icssg/icssg_queues.c
> index 3c34f61ad40b..e5052d9e7807 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_queues.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_queues.c
> @@ -28,6 +28,7 @@ int icssg_queue_pop(struct prueth *prueth, u8 queue)
> 
>  	return val;
>  }
> +EXPORT_SYMBOL_GPL(icssg_queue_pop);
> 
>  void icssg_queue_push(struct prueth *prueth, int queue, u16 addr)  { @@ -
> 36,6 +37,7 @@ void icssg_queue_push(struct prueth *prueth, int queue, u16
> addr)
> 
>  	regmap_write(prueth->miig_rt, ICSSG_QUEUE_OFFSET + 4 * queue,
> addr);  }
> +EXPORT_SYMBOL_GPL(icssg_queue_push);
> 
>  u32 icssg_queue_level(struct prueth *prueth, int queue)  { diff --git
> a/drivers/net/ethernet/ti/icssg/icssg_stats.c
> b/drivers/net/ethernet/ti/icssg/icssg_stats.c
> index 3dbadddd7e35..2fb150c13078 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_stats.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_stats.c
> @@ -42,7 +42,7 @@ void emac_update_hardware_stats(struct prueth_emac
> *emac)
>  	}
>  }
> 
> -void emac_stats_work_handler(struct work_struct *work)
> +void icssg_stats_work_handler(struct work_struct *work)
>  {
>  	struct prueth_emac *emac = container_of(work, struct prueth_emac,
>  						stats_work.work);
> @@ -51,6 +51,7 @@ void emac_stats_work_handler(struct work_struct
> *work)
>  	queue_delayed_work(system_long_wq, &emac->stats_work,
>  			   msecs_to_jiffies((STATS_TIME_LIMIT_1G_MS *
> 1000) / emac->speed));  }
> +EXPORT_SYMBOL_GPL(icssg_stats_work_handler);
> 
>  int emac_get_stat_by_name(struct prueth_emac *emac, char *stat_name)  {
> diff --git a/drivers/net/ethernet/ti/icssg/icssg_switchdev.c
> b/drivers/net/ethernet/ti/icssg/icssg_switchdev.c
> index fceb8bb7d34e..67e2927e176d 100644
> --- a/drivers/net/ethernet/ti/icssg/icssg_switchdev.c
> +++ b/drivers/net/ethernet/ti/icssg/icssg_switchdev.c
> @@ -44,7 +44,7 @@ static int prueth_switchdev_stp_state_set(struct
> prueth_emac *emac,
>  		return -EOPNOTSUPP;
>  	}
> 
> -	emac_set_port_state(emac, emac_state);
> +	icssg_set_port_state(emac, emac_state);
>  	netdev_dbg(emac->ndev, "STP state: %u\n", emac_state);
> 
>  	return ret;
> @@ -64,7 +64,7 @@ static int prueth_switchdev_attr_br_flags_set(struct
> prueth_emac *emac,
>  	netdev_dbg(emac->ndev, "BR_MCAST_FLOOD: %d port %u\n",
>  		   emac_state, emac->port_id);
> 
> -	emac_set_port_state(emac, emac_state);
> +	icssg_set_port_state(emac, emac_state);
> 
>  	return 0;
>  }
> 
> base-commit: 2146b7dd354c2a1384381ca3cd5751bfff6137d6
> --
> 2.34.1
> 
Reviewed-by: Sai Krishna <saikrishnag@marvell.com>
Andrew Lunn July 13, 2024, 2:44 p.m. UTC | #2
On Sat, Jul 13, 2024 at 08:33:42AM +0000, Sai Krishna Gajula wrote:
> > -----Original Message-----
> > From: MD Danish Anwar <danishanwar@ti.com>
> > Sent: Friday, July 12, 2024 5:37 PM
> > To: Heiner Kallweit <hkallweit1@gmail.com>; Simon Horman
> > <horms@kernel.org>; Dan Carpenter <dan.carpenter@linaro.org>; Jan Kiszka
> > <jan.kiszka@siemens.com>; Wolfram Sang <wsa+renesas@sang-
> > engineering.com>; Diogo Ivo <diogo.ivo@siemens.com>; Andrew Lunn
> > <andrew@lunn.ch>; Roger Quadros <rogerq@kernel.org>; MD Danish Anwar
> > <danishanwar@ti.com>; Paolo Abeni <pabeni@redhat.com>; Jakub Kicinski
> > <kuba@kernel.org>; Eric Dumazet <edumazet@google.com>; David S. Miller
> > <davem@davemloft.net>
> > Cc: linux-arm-kernel@lists.infradead.org; linux-kernel@vger.kernel.org;
> > netdev@vger.kernel.org; srk@ti.com; Vignesh Raghavendra
> > <vigneshr@ti.com>; Thorsten Leemhuis <linux@leemhuis.info>
> > Subject: [EXTERNAL] [PATCH net-next v3] net: ti: icssg-prueth: Split out
> > common object into module
> > 
> > icssg_prueth. c and icssg_prueth_sr1. c drivers use multiple common .c files.
> > These common objects are getting added to multiple modules. As a result
> > when both drivers are enabled in .config, below warning is seen.
> > drivers/net/ethernet/ti/Makefile: 
> > icssg_prueth.c and icssg_prueth_sr1.c drivers use multiple common .c files.
> > These common objects are getting added to multiple modules. As a result
> > when both drivers are enabled in .config, below warning is seen.
> > 
> > drivers/net/ethernet/ti/Makefile: icssg/icssg_common.o is added to multiple
> > modules: icssg-prueth icssg-prueth-sr1
> > drivers/net/ethernet/ti/Makefile: icssg/icssg_classifier.o is added to multiple
> > modules: icssg-prueth icssg-prueth-sr1
> > drivers/net/ethernet/ti/Makefile: icssg/icssg_config.o is added to multiple
> > modules: icssg-prueth icssg-prueth-sr1
> > drivers/net/ethernet/ti/Makefile: icssg/icssg_mii_cfg.o is added to multiple
> > modules: icssg-prueth icssg-prueth-sr1
> > drivers/net/ethernet/ti/Makefile: icssg/icssg_stats.o is added to multiple
> > modules: icssg-prueth icssg-prueth-sr1
> > drivers/net/ethernet/ti/Makefile: icssg/icssg_ethtool.o is added to multiple
> > modules: icssg-prueth icssg-prueth-sr1
> > 
> > Fix this by building a new module (icssg.o) for all the common objects.
> > Both the driver can then depend on this common module.
> > 
> > Some APIs being exported have emac_ as the prefix which may result into
> > confusion with other existing APIs with emac_ prefix, to avoid confusion,
> > rename the APIs being exported with emac_ to icssg_ prefix.
> > 
> > This also fixes below error seen when both drivers are built.
> > ERROR: modpost: "icssg_queue_pop"
> > [drivers/net/ethernet/ti/icssg-prueth-sr1.ko] undefined!
> > ERROR: modpost: "icssg_queue_push"
> > [drivers/net/ethernet/ti/icssg-prueth-sr1.ko] undefined!
> > 
> > Reported-and-tested-by: Thorsten Leemhuis <linux@leemhuis.info>
> > Closes: https://urldefense.proofpoint.com/v2/url?u=https-
> > 3A__lore.kernel.org_oe-2Dkbuild-2Dall_202405182038.ncf1mL7Z-2Dlkp-
> > 40intel.com_&d=DwIDAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=c3MsgrR-U-
> > HFhmFd6R4MWRZG-8QeikJn5PkjqMTpBSg&m=nS910f-bVPllINeciu3zcX-
> > RmmuaN-hU--Y3YDvgknBD5A8sRk6hE3pZSocV-
> > 37f&s=sIjxhBrYXEW3mtC1p8o5MaV-xpJ3n16Ct0mRhE52PCQ&e=
> > Fixes: 487f7323f39a ("net: ti: icssg-prueth: Add helper functions to configure
> > FDB")
> > Reviewed-by: Roger Quadros <rogerq@kernel.org>
> > Signed-off-by: MD Danish Anwar <danishanwar@ti.com>
> > ---
> > Cc: Thorsten Leemhuis <linux@leemhuis.info>

> > base-commit: 2146b7dd354c2a1384381ca3cd5751bfff6137d6
> > --
> > 2.34.1
> > 
> Reviewed-by: Sai Krishna <saikrishnag@marvell.com>

Please trim emails when replying.

If you look what everybody else does with tags like this, they place
it directly after the Signed-off-by: and delete the actual patch.

   Andrew
Sai Krishna Gajula July 15, 2024, 6:02 a.m. UTC | #3
> -----Original Message-----
> From: Andrew Lunn <andrew@lunn.ch>
> Sent: Saturday, July 13, 2024 8:15 PM
> To: Sai Krishna Gajula <saikrishnag@marvell.com>
> Cc: MD Danish Anwar <danishanwar@ti.com>; Heiner Kallweit
> <hkallweit1@gmail.com>; Simon Horman <horms@kernel.org>; Dan
> Carpenter <dan.carpenter@linaro.org>; Jan Kiszka
> <jan.kiszka@siemens.com>; Wolfram Sang <wsa+renesas@sang-
> engineering.com>; Diogo Ivo <diogo.ivo@siemens.com>; Roger Quadros
> <rogerq@kernel.org>; Paolo Abeni <pabeni@redhat.com>; Jakub Kicinski
> <kuba@kernel.org>; Eric Dumazet <edumazet@google.com>; David S. Miller
> <davem@davemloft.net>; linux-arm-kernel@lists.infradead.org; linux-
> kernel@vger.kernel.org; netdev@vger.kernel.org; srk@ti.com; Vignesh
> Raghavendra <vigneshr@ti.com>; Thorsten Leemhuis <linux@leemhuis.info>
> Subject: Re: [EXTERNAL] [PATCH net-next v3] net: ti: icssg-prueth: Split out
> common object into module
> 
> On Sat, Jul 13, 2024 at 08: 33: 42AM +0000, Sai Krishna Gajula wrote: > > -----
> Original Message----- > > From: MD Danish Anwar <danishanwar@ ti. com> >
> > Sent: Friday, July 12, 2024 5: 37 PM > > To: Heiner Kallweit
> 
> On Sat, Jul 13, 2024 at 08:33:42AM +0000, Sai Krishna Gajula wrote:
> > > -----Original Message-----
> > > From: MD Danish Anwar <danishanwar@ti.com>
> > > Sent: Friday, July 12, 2024 5:37 PM
> > > To: Heiner Kallweit <hkallweit1@gmail.com>; Simon Horman
> > > <horms@kernel.org>; Dan Carpenter <dan.carpenter@linaro.org>; Jan
> > > Kiszka <jan.kiszka@siemens.com>; Wolfram Sang <wsa+renesas@sang-
> > > engineering.com>; Diogo Ivo <diogo.ivo@siemens.com>; Andrew Lunn
> > > <andrew@lunn.ch>; Roger Quadros <rogerq@kernel.org>; MD Danish
> Anwar
> > > <danishanwar@ti.com>; Paolo Abeni <pabeni@redhat.com>; Jakub
> > > Kicinski <kuba@kernel.org>; Eric Dumazet <edumazet@google.com>;
> > > David S. Miller <davem@davemloft.net>
> > > Cc: linux-arm-kernel@lists.infradead.org;
> > > linux-kernel@vger.kernel.org; netdev@vger.kernel.org; srk@ti.com;
> > > Vignesh Raghavendra <vigneshr@ti.com>; Thorsten Leemhuis
> > > <linux@leemhuis.info>
> > > Subject: [EXTERNAL] [PATCH net-next v3] net: ti: icssg-prueth: Split
> > > out common object into module
> > >
> > > icssg_prueth. c and icssg_prueth_sr1. c drivers use multiple common .c
> files.
> > > These common objects are getting added to multiple modules. As a
> > > result when both drivers are enabled in .config, below warning is seen.
> > > drivers/net/ethernet/ti/Makefile:
> > > icssg_prueth.c and icssg_prueth_sr1.c drivers use multiple common .c
> files.
> > > These common objects are getting added to multiple modules. As a
> > > result when both drivers are enabled in .config, below warning is seen.
> > >
> > > drivers/net/ethernet/ti/Makefile: icssg/icssg_common.o is added to
> > > multiple
> > > modules: icssg-prueth icssg-prueth-sr1
> > > drivers/net/ethernet/ti/Makefile: icssg/icssg_classifier.o is added
> > > to multiple
> > > modules: icssg-prueth icssg-prueth-sr1
> > > drivers/net/ethernet/ti/Makefile: icssg/icssg_config.o is added to
> > > multiple
> > > modules: icssg-prueth icssg-prueth-sr1
> > > drivers/net/ethernet/ti/Makefile: icssg/icssg_mii_cfg.o is added to
> > > multiple
> > > modules: icssg-prueth icssg-prueth-sr1
> > > drivers/net/ethernet/ti/Makefile: icssg/icssg_stats.o is added to
> > > multiple
> > > modules: icssg-prueth icssg-prueth-sr1
> > > drivers/net/ethernet/ti/Makefile: icssg/icssg_ethtool.o is added to
> > > multiple
> > > modules: icssg-prueth icssg-prueth-sr1
> > >
> > > Fix this by building a new module (icssg.o) for all the common objects.
> > > Both the driver can then depend on this common module.
> > >
> > > Some APIs being exported have emac_ as the prefix which may result
> > > into confusion with other existing APIs with emac_ prefix, to avoid
> > > confusion, rename the APIs being exported with emac_ to icssg_ prefix.
> > >
> > > This also fixes below error seen when both drivers are built.
> > > ERROR: modpost: "icssg_queue_pop"
> > > [drivers/net/ethernet/ti/icssg-prueth-sr1.ko] undefined!
> > > ERROR: modpost: "icssg_queue_push"
> > > [drivers/net/ethernet/ti/icssg-prueth-sr1.ko] undefined!
> > >
> > > Reported-and-tested-by: Thorsten Leemhuis <linux@leemhuis.info>
> > > Closes: https://urldefense.proofpoint.com/v2/url?u=https-
> > <https://urldefense.proofpoint.com/v2/url?u=https-  >> >
> > 3A__lore.kernel.org_oe-2Dkbuild-2Dall_202405182038.ncf1mL7Z-2Dlkp-
> > > 40intel.com_&d=DwIDAg&c=nKjWec2b6R0mOyPaz7xtfQ&r=c3MsgrR-U-
> > > HFhmFd6R4MWRZG-8QeikJn5PkjqMTpBSg&m=nS910f-bVPllINeciu3zcX-
> > > RmmuaN-hU--Y3YDvgknBD5A8sRk6hE3pZSocV-
> > > 37f&s=sIjxhBrYXEW3mtC1p8o5MaV-xpJ3n16Ct0mRhE52PCQ&e=
> > > Fixes: 487f7323f39a ("net: ti: icssg-prueth: Add helper functions to
> > > configure
> > > FDB")
> > > Reviewed-by: Roger Quadros <rogerq@kernel.org>
> > > Signed-off-by: MD Danish Anwar <danishanwar@ti.com>
> > > ---
> > > Cc: Thorsten Leemhuis <linux@leemhuis.info>
> 
> > > base-commit: 2146b7dd354c2a1384381ca3cd5751bfff6137d6
> > > --
> > > 2.34.1
> > >
> > Reviewed-by: Sai Krishna <saikrishnag@marvell.com>
> 
> Please trim emails when replying.
> 
> If you look what everybody else does with tags like this, they place it directly
> after the Signed-off-by: and delete the actual patch.

Sure Andrew,  thanks for the suggestion.

> 
>    Andrew
patchwork-bot+netdevbpf@kernel.org July 15, 2024, 1 p.m. UTC | #4
Hello:

This patch was applied to netdev/net-next.git (main)
by David S. Miller <davem@davemloft.net>:

On Fri, 12 Jul 2024 17:36:36 +0530 you wrote:
> icssg_prueth.c and icssg_prueth_sr1.c drivers use multiple common .c
> files. These common objects are getting added to multiple modules. As a
> result when both drivers are enabled in .config, below warning is seen.
> 
> drivers/net/ethernet/ti/Makefile: icssg/icssg_common.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
> drivers/net/ethernet/ti/Makefile: icssg/icssg_classifier.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
> drivers/net/ethernet/ti/Makefile: icssg/icssg_config.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
> drivers/net/ethernet/ti/Makefile: icssg/icssg_mii_cfg.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
> drivers/net/ethernet/ti/Makefile: icssg/icssg_stats.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
> drivers/net/ethernet/ti/Makefile: icssg/icssg_ethtool.o is added to multiple modules: icssg-prueth icssg-prueth-sr1
> 
> [...]

Here is the summary with links:
  - [net-next,v3] net: ti: icssg-prueth: Split out common object into module
    https://git.kernel.org/netdev/net-next/c/a8ea8d531d1e

You are awesome, thank you!
diff mbox series

Patch

diff --git a/drivers/net/ethernet/ti/Makefile b/drivers/net/ethernet/ti/Makefile
index 59cd20a38267..cbcf44806924 100644
--- a/drivers/net/ethernet/ti/Makefile
+++ b/drivers/net/ethernet/ti/Makefile
@@ -31,22 +31,18 @@  ti-am65-cpsw-nuss-$(CONFIG_TI_AM65_CPSW_QOS) += am65-cpsw-qos.o
 ti-am65-cpsw-nuss-$(CONFIG_TI_K3_AM65_CPSW_SWITCHDEV) += am65-cpsw-switchdev.o
 obj-$(CONFIG_TI_K3_AM65_CPTS) += am65-cpts.o
 
-obj-$(CONFIG_TI_ICSSG_PRUETH) += icssg-prueth.o
-icssg-prueth-y := icssg/icssg_prueth.o \
-		  icssg/icssg_common.o \
-		  icssg/icssg_classifier.o \
-		  icssg/icssg_queues.o \
-		  icssg/icssg_config.o \
-		  icssg/icssg_mii_cfg.o \
-		  icssg/icssg_stats.o \
-		  icssg/icssg_ethtool.o \
-		  icssg/icssg_switchdev.o
-obj-$(CONFIG_TI_ICSSG_PRUETH_SR1) += icssg-prueth-sr1.o
-icssg-prueth-sr1-y := icssg/icssg_prueth_sr1.o \
-		      icssg/icssg_common.o \
-		      icssg/icssg_classifier.o \
-		      icssg/icssg_config.o \
-		      icssg/icssg_mii_cfg.o \
-		      icssg/icssg_stats.o \
-		      icssg/icssg_ethtool.o
+obj-$(CONFIG_TI_ICSSG_PRUETH) += icssg-prueth.o icssg.o
+icssg-prueth-y := icssg/icssg_prueth.o icssg/icssg_switchdev.o
+
+obj-$(CONFIG_TI_ICSSG_PRUETH_SR1) += icssg-prueth-sr1.o icssg.o
+icssg-prueth-sr1-y := icssg/icssg_prueth_sr1.o
+
+icssg-y := icssg/icssg_common.o \
+	   icssg/icssg_classifier.o \
+	   icssg/icssg_queues.o \
+	   icssg/icssg_config.o \
+	   icssg/icssg_mii_cfg.o \
+	   icssg/icssg_stats.o \
+	   icssg/icssg_ethtool.o
+
 obj-$(CONFIG_TI_ICSS_IEP) += icssg/icss_iep.o
diff --git a/drivers/net/ethernet/ti/icssg/icssg_classifier.c b/drivers/net/ethernet/ti/icssg/icssg_classifier.c
index f7d21da1a0fb..9ec504d976d6 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_classifier.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_classifier.c
@@ -297,6 +297,7 @@  void icssg_class_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac)
 		     mac[2] << 16 | mac[3] << 24));
 	regmap_write(miig_rt, offs[slice].mac1, (u32)(mac[4] | mac[5] << 8));
 }
+EXPORT_SYMBOL_GPL(icssg_class_set_mac_addr);
 
 static void icssg_class_ft1_add_mcast(struct regmap *miig_rt, int slice,
 				      int slot, const u8 *addr, const u8 *mask)
@@ -360,6 +361,7 @@  void icssg_class_disable(struct regmap *miig_rt, int slice)
 	/* clear CFG2 */
 	regmap_write(miig_rt, offs[slice].rx_class_cfg2, 0);
 }
+EXPORT_SYMBOL_GPL(icssg_class_disable);
 
 void icssg_class_default(struct regmap *miig_rt, int slice, bool allmulti,
 			 bool is_sr1)
@@ -390,6 +392,7 @@  void icssg_class_default(struct regmap *miig_rt, int slice, bool allmulti,
 	/* clear CFG2 */
 	regmap_write(miig_rt, offs[slice].rx_class_cfg2, 0);
 }
+EXPORT_SYMBOL_GPL(icssg_class_default);
 
 void icssg_class_promiscuous_sr1(struct regmap *miig_rt, int slice)
 {
@@ -408,6 +411,7 @@  void icssg_class_promiscuous_sr1(struct regmap *miig_rt, int slice)
 		regmap_write(miig_rt, offset, data);
 	}
 }
+EXPORT_SYMBOL_GPL(icssg_class_promiscuous_sr1);
 
 void icssg_class_add_mcast_sr1(struct regmap *miig_rt, int slice,
 			       struct net_device *ndev)
@@ -449,6 +453,7 @@  void icssg_class_add_mcast_sr1(struct regmap *miig_rt, int slice,
 		slot++;
 	}
 }
+EXPORT_SYMBOL_GPL(icssg_class_add_mcast_sr1);
 
 /* required for SAV check */
 void icssg_ft1_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac_addr)
@@ -460,3 +465,4 @@  void icssg_ft1_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac_addr)
 	rx_class_ft1_set_da_mask(miig_rt, slice, 0, mask_addr);
 	rx_class_ft1_cfg_set_type(miig_rt, slice, 0, FT1_CFG_TYPE_EQ);
 }
+EXPORT_SYMBOL_GPL(icssg_ft1_set_mac_addr);
diff --git a/drivers/net/ethernet/ti/icssg/icssg_common.c b/drivers/net/ethernet/ti/icssg/icssg_common.c
index 2f716c0d7060..b9d8a93d1680 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_common.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_common.c
@@ -51,6 +51,7 @@  void prueth_cleanup_rx_chns(struct prueth_emac *emac,
 	if (rx_chn->rx_chn)
 		k3_udma_glue_release_rx_chn(rx_chn->rx_chn);
 }
+EXPORT_SYMBOL_GPL(prueth_cleanup_rx_chns);
 
 void prueth_cleanup_tx_chns(struct prueth_emac *emac)
 {
@@ -71,6 +72,7 @@  void prueth_cleanup_tx_chns(struct prueth_emac *emac)
 		memset(tx_chn, 0, sizeof(*tx_chn));
 	}
 }
+EXPORT_SYMBOL_GPL(prueth_cleanup_tx_chns);
 
 void prueth_ndev_del_tx_napi(struct prueth_emac *emac, int num)
 {
@@ -84,6 +86,7 @@  void prueth_ndev_del_tx_napi(struct prueth_emac *emac, int num)
 		netif_napi_del(&tx_chn->napi_tx);
 	}
 }
+EXPORT_SYMBOL_GPL(prueth_ndev_del_tx_napi);
 
 void prueth_xmit_free(struct prueth_tx_chn *tx_chn,
 		      struct cppi5_host_desc_t *desc)
@@ -120,6 +123,7 @@  void prueth_xmit_free(struct prueth_tx_chn *tx_chn,
 
 	k3_cppi_desc_pool_free(tx_chn->desc_pool, first_desc);
 }
+EXPORT_SYMBOL_GPL(prueth_xmit_free);
 
 int emac_tx_complete_packets(struct prueth_emac *emac, int chn,
 			     int budget, bool *tdown)
@@ -264,6 +268,7 @@  int prueth_ndev_add_tx_napi(struct prueth_emac *emac)
 	prueth_ndev_del_tx_napi(emac, i);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(prueth_ndev_add_tx_napi);
 
 int prueth_init_tx_chns(struct prueth_emac *emac)
 {
@@ -344,6 +349,7 @@  int prueth_init_tx_chns(struct prueth_emac *emac)
 	prueth_cleanup_tx_chns(emac);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(prueth_init_tx_chns);
 
 int prueth_init_rx_chns(struct prueth_emac *emac,
 			struct prueth_rx_chn *rx_chn,
@@ -453,6 +459,7 @@  int prueth_init_rx_chns(struct prueth_emac *emac,
 	prueth_cleanup_rx_chns(emac, rx_chn, max_rflows);
 	return ret;
 }
+EXPORT_SYMBOL_GPL(prueth_init_rx_chns);
 
 int prueth_dma_rx_push(struct prueth_emac *emac,
 		       struct sk_buff *skb,
@@ -490,6 +497,7 @@  int prueth_dma_rx_push(struct prueth_emac *emac,
 	return k3_udma_glue_push_rx_chn(rx_chn->rx_chn, 0,
 					desc_rx, desc_dma);
 }
+EXPORT_SYMBOL_GPL(prueth_dma_rx_push);
 
 u64 icssg_ts_to_ns(u32 hi_sw, u32 hi, u32 lo, u32 cycle_time_ns)
 {
@@ -505,6 +513,7 @@  u64 icssg_ts_to_ns(u32 hi_sw, u32 hi, u32 lo, u32 cycle_time_ns)
 
 	return ns;
 }
+EXPORT_SYMBOL_GPL(icssg_ts_to_ns);
 
 void emac_rx_timestamp(struct prueth_emac *emac,
 		       struct sk_buff *skb, u32 *psdata)
@@ -636,7 +645,7 @@  static int prueth_tx_ts_cookie_get(struct prueth_emac *emac)
 }
 
 /**
- * emac_ndo_start_xmit - EMAC Transmit function
+ * icssg_ndo_start_xmit - EMAC Transmit function
  * @skb: SKB pointer
  * @ndev: EMAC network adapter
  *
@@ -647,7 +656,7 @@  static int prueth_tx_ts_cookie_get(struct prueth_emac *emac)
  *
  * Return: enum netdev_tx
  */
-enum netdev_tx emac_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev)
+enum netdev_tx icssg_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev)
 {
 	struct cppi5_host_desc_t *first_desc, *next_desc, *cur_desc;
 	struct prueth_emac *emac = netdev_priv(ndev);
@@ -806,6 +815,7 @@  enum netdev_tx emac_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev)
 	netif_tx_stop_queue(netif_txq);
 	return NETDEV_TX_BUSY;
 }
+EXPORT_SYMBOL_GPL(icssg_ndo_start_xmit);
 
 static void prueth_tx_cleanup(void *data, dma_addr_t desc_dma)
 {
@@ -831,6 +841,7 @@  irqreturn_t prueth_rx_irq(int irq, void *dev_id)
 
 	return IRQ_HANDLED;
 }
+EXPORT_SYMBOL_GPL(prueth_rx_irq);
 
 void prueth_emac_stop(struct prueth_emac *emac)
 {
@@ -855,6 +866,7 @@  void prueth_emac_stop(struct prueth_emac *emac)
 	rproc_shutdown(prueth->rtu[slice]);
 	rproc_shutdown(prueth->pru[slice]);
 }
+EXPORT_SYMBOL_GPL(prueth_emac_stop);
 
 void prueth_cleanup_tx_ts(struct prueth_emac *emac)
 {
@@ -867,8 +879,9 @@  void prueth_cleanup_tx_ts(struct prueth_emac *emac)
 		}
 	}
 }
+EXPORT_SYMBOL_GPL(prueth_cleanup_tx_ts);
 
-int emac_napi_rx_poll(struct napi_struct *napi_rx, int budget)
+int icssg_napi_rx_poll(struct napi_struct *napi_rx, int budget)
 {
 	struct prueth_emac *emac = prueth_napi_to_emac(napi_rx);
 	int rx_flow = emac->is_sr1 ?
@@ -905,6 +918,7 @@  int emac_napi_rx_poll(struct napi_struct *napi_rx, int budget)
 
 	return num_rx;
 }
+EXPORT_SYMBOL_GPL(icssg_napi_rx_poll);
 
 int prueth_prepare_rx_chan(struct prueth_emac *emac,
 			   struct prueth_rx_chn *chn,
@@ -930,6 +944,7 @@  int prueth_prepare_rx_chan(struct prueth_emac *emac,
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(prueth_prepare_rx_chan);
 
 void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num,
 			  bool free_skb)
@@ -944,6 +959,7 @@  void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num,
 		k3_udma_glue_disable_tx_chn(emac->tx_chns[i].tx_chn);
 	}
 }
+EXPORT_SYMBOL_GPL(prueth_reset_tx_chan);
 
 void prueth_reset_rx_chan(struct prueth_rx_chn *chn,
 			  int num_flows, bool disable)
@@ -956,11 +972,13 @@  void prueth_reset_rx_chan(struct prueth_rx_chn *chn,
 	if (disable)
 		k3_udma_glue_disable_rx_chn(chn->rx_chn);
 }
+EXPORT_SYMBOL_GPL(prueth_reset_rx_chan);
 
-void emac_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue)
+void icssg_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue)
 {
 	ndev->stats.tx_errors++;
 }
+EXPORT_SYMBOL_GPL(icssg_ndo_tx_timeout);
 
 static int emac_set_ts_config(struct net_device *ndev, struct ifreq *ifr)
 {
@@ -1024,7 +1042,7 @@  static int emac_get_ts_config(struct net_device *ndev, struct ifreq *ifr)
 			    -EFAULT : 0;
 }
 
-int emac_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
+int icssg_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
 {
 	switch (cmd) {
 	case SIOCGHWTSTAMP:
@@ -1037,9 +1055,10 @@  int emac_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd)
 
 	return phy_do_ioctl(ndev, ifr, cmd);
 }
+EXPORT_SYMBOL_GPL(icssg_ndo_ioctl);
 
-void emac_ndo_get_stats64(struct net_device *ndev,
-			  struct rtnl_link_stats64 *stats)
+void icssg_ndo_get_stats64(struct net_device *ndev,
+			   struct rtnl_link_stats64 *stats)
 {
 	struct prueth_emac *emac = netdev_priv(ndev);
 
@@ -1058,9 +1077,10 @@  void emac_ndo_get_stats64(struct net_device *ndev,
 	stats->tx_errors  = ndev->stats.tx_errors;
 	stats->tx_dropped = ndev->stats.tx_dropped;
 }
+EXPORT_SYMBOL_GPL(icssg_ndo_get_stats64);
 
-int emac_ndo_get_phys_port_name(struct net_device *ndev, char *name,
-				size_t len)
+int icssg_ndo_get_phys_port_name(struct net_device *ndev, char *name,
+				 size_t len)
 {
 	struct prueth_emac *emac = netdev_priv(ndev);
 	int ret;
@@ -1071,6 +1091,7 @@  int emac_ndo_get_phys_port_name(struct net_device *ndev, char *name,
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(icssg_ndo_get_phys_port_name);
 
 /* get emac_port corresponding to eth_node name */
 int prueth_node_port(struct device_node *eth_node)
@@ -1089,6 +1110,7 @@  int prueth_node_port(struct device_node *eth_node)
 	else
 		return PRUETH_PORT_INVALID;
 }
+EXPORT_SYMBOL_GPL(prueth_node_port);
 
 /* get MAC instance corresponding to eth_node name */
 int prueth_node_mac(struct device_node *eth_node)
@@ -1107,6 +1129,7 @@  int prueth_node_mac(struct device_node *eth_node)
 	else
 		return PRUETH_MAC_INVALID;
 }
+EXPORT_SYMBOL_GPL(prueth_node_mac);
 
 void prueth_netdev_exit(struct prueth *prueth,
 			struct device_node *eth_node)
@@ -1132,6 +1155,7 @@  void prueth_netdev_exit(struct prueth *prueth,
 	free_netdev(emac->ndev);
 	prueth->emac[mac] = NULL;
 }
+EXPORT_SYMBOL_GPL(prueth_netdev_exit);
 
 int prueth_get_cores(struct prueth *prueth, int slice, bool is_sr1)
 {
@@ -1182,6 +1206,7 @@  int prueth_get_cores(struct prueth *prueth, int slice, bool is_sr1)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(prueth_get_cores);
 
 void prueth_put_cores(struct prueth *prueth, int slice)
 {
@@ -1194,6 +1219,7 @@  void prueth_put_cores(struct prueth *prueth, int slice)
 	if (prueth->pru[slice])
 		pru_rproc_put(prueth->pru[slice]);
 }
+EXPORT_SYMBOL_GPL(prueth_put_cores);
 
 #ifdef CONFIG_PM_SLEEP
 static int prueth_suspend(struct device *dev)
@@ -1250,3 +1276,9 @@  static int prueth_resume(struct device *dev)
 const struct dev_pm_ops prueth_dev_pm_ops = {
 	SET_SYSTEM_SLEEP_PM_OPS(prueth_suspend, prueth_resume)
 };
+EXPORT_SYMBOL_GPL(prueth_dev_pm_ops);
+
+MODULE_AUTHOR("Roger Quadros <rogerq@ti.com>");
+MODULE_AUTHOR("Md Danish Anwar <danishanwar@ti.com>");
+MODULE_DESCRIPTION("PRUSS ICSSG Ethernet Driver Common Module");
+MODULE_LICENSE("GPL");
diff --git a/drivers/net/ethernet/ti/icssg/icssg_config.c b/drivers/net/ethernet/ti/icssg/icssg_config.c
index 9444e56b7672..dae52a83a378 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_config.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_config.c
@@ -248,6 +248,7 @@  void icssg_config_ipg(struct prueth_emac *emac)
 
 	icssg_mii_update_ipg(prueth->mii_rt, slice, ipg);
 }
+EXPORT_SYMBOL_GPL(icssg_config_ipg);
 
 static void emac_r30_cmd_init(struct prueth_emac *emac)
 {
@@ -508,6 +509,7 @@  int icssg_config(struct prueth *prueth, struct prueth_emac *emac, int slice)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(icssg_config);
 
 /* Bitmask for ICSSG r30 commands */
 static const struct icssg_r30_cmd emac_r32_bitmask[] = {
@@ -532,8 +534,8 @@  static const struct icssg_r30_cmd emac_r32_bitmask[] = {
 	{{0xffef0000,  EMAC_NONE, 0xffef0000, EMAC_NONE}}	/* VLAN UNWARE*/
 };
 
-int emac_set_port_state(struct prueth_emac *emac,
-			enum icssg_port_state_cmd cmd)
+int icssg_set_port_state(struct prueth_emac *emac,
+			 enum icssg_port_state_cmd cmd)
 {
 	struct icssg_r30_cmd __iomem *p;
 	int ret = -ETIMEDOUT;
@@ -564,6 +566,7 @@  int emac_set_port_state(struct prueth_emac *emac,
 
 	return ret;
 }
+EXPORT_SYMBOL_GPL(icssg_set_port_state);
 
 void icssg_config_half_duplex(struct prueth_emac *emac)
 {
@@ -575,6 +578,7 @@  void icssg_config_half_duplex(struct prueth_emac *emac)
 	val = get_random_u32();
 	writel(val, emac->dram.va + HD_RAND_SEED_OFFSET);
 }
+EXPORT_SYMBOL_GPL(icssg_config_half_duplex);
 
 void icssg_config_set_speed(struct prueth_emac *emac)
 {
@@ -601,6 +605,7 @@  void icssg_config_set_speed(struct prueth_emac *emac)
 
 	writeb(fw_speed, emac->dram.va + PORT_LINK_SPEED_OFFSET);
 }
+EXPORT_SYMBOL_GPL(icssg_config_set_speed);
 
 int icssg_send_fdb_msg(struct prueth_emac *emac, struct mgmt_cmd *cmd,
 		       struct mgmt_cmd_rsp *rsp)
@@ -635,6 +640,7 @@  int icssg_send_fdb_msg(struct prueth_emac *emac, struct mgmt_cmd *cmd,
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(icssg_send_fdb_msg);
 
 static void icssg_fdb_setup(struct prueth_emac *emac, struct mgmt_cmd *fdb_cmd,
 			    const unsigned char *addr, u8 fid, int cmd)
@@ -687,6 +693,7 @@  int icssg_fdb_add_del(struct prueth_emac *emac, const unsigned char *addr,
 
 	return -EINVAL;
 }
+EXPORT_SYMBOL_GPL(icssg_fdb_add_del);
 
 int icssg_fdb_lookup(struct prueth_emac *emac, const unsigned char *addr,
 		     u8 vid)
@@ -716,6 +723,7 @@  int icssg_fdb_lookup(struct prueth_emac *emac, const unsigned char *addr,
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(icssg_fdb_lookup);
 
 void icssg_vtbl_modify(struct prueth_emac *emac, u8 vid, u8 port_mask,
 		       u8 untag_mask, bool add)
@@ -741,6 +749,7 @@  void icssg_vtbl_modify(struct prueth_emac *emac, u8 vid, u8 port_mask,
 
 	tbl[vid].fid_c1 = fid_c1;
 }
+EXPORT_SYMBOL_GPL(icssg_vtbl_modify);
 
 u16 icssg_get_pvid(struct prueth_emac *emac)
 {
@@ -756,6 +765,7 @@  u16 icssg_get_pvid(struct prueth_emac *emac)
 
 	return pvid;
 }
+EXPORT_SYMBOL_GPL(icssg_get_pvid);
 
 void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port)
 {
@@ -771,3 +781,4 @@  void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port)
 	else
 		writel(pvid, prueth->shram.va + EMAC_ICSSG_SWITCH_PORT0_DEFAULT_VLAN_OFFSET);
 }
+EXPORT_SYMBOL_GPL(icssg_set_pvid);
diff --git a/drivers/net/ethernet/ti/icssg/icssg_ethtool.c b/drivers/net/ethernet/ti/icssg/icssg_ethtool.c
index c8d0f45cc5b1..131eb4cae1c3 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_ethtool.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_ethtool.c
@@ -312,3 +312,4 @@  const struct ethtool_ops icssg_ethtool_ops = {
 	.nway_reset = emac_nway_reset,
 	.get_rmon_stats = emac_get_rmon_stats,
 };
+EXPORT_SYMBOL_GPL(icssg_ethtool_ops);
diff --git a/drivers/net/ethernet/ti/icssg/icssg_mii_cfg.c b/drivers/net/ethernet/ti/icssg/icssg_mii_cfg.c
index 92718ae40d7e..b64955438bb2 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_mii_cfg.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_mii_cfg.c
@@ -40,6 +40,7 @@  void icssg_mii_update_mtu(struct regmap *mii_rt, int mii, int mtu)
 				   (mtu - 1) << PRUSS_MII_RT_RX_FRMS_MAX_FRM_SHIFT);
 	}
 }
+EXPORT_SYMBOL_GPL(icssg_mii_update_mtu);
 
 void icssg_update_rgmii_cfg(struct regmap *miig_rt, struct prueth_emac *emac)
 {
@@ -66,6 +67,7 @@  void icssg_update_rgmii_cfg(struct regmap *miig_rt, struct prueth_emac *emac)
 	regmap_update_bits(miig_rt, RGMII_CFG_OFFSET, full_duplex_mask,
 			   full_duplex_val);
 }
+EXPORT_SYMBOL_GPL(icssg_update_rgmii_cfg);
 
 void icssg_miig_set_interface_mode(struct regmap *miig_rt, int mii, phy_interface_t phy_if)
 {
@@ -105,6 +107,7 @@  u32 icssg_rgmii_get_speed(struct regmap *miig_rt, int mii)
 
 	return icssg_rgmii_cfg_get_bitfield(miig_rt, mask, shift);
 }
+EXPORT_SYMBOL_GPL(icssg_rgmii_get_speed);
 
 u32 icssg_rgmii_get_fullduplex(struct regmap *miig_rt, int mii)
 {
@@ -118,3 +121,4 @@  u32 icssg_rgmii_get_fullduplex(struct regmap *miig_rt, int mii)
 
 	return icssg_rgmii_cfg_get_bitfield(miig_rt, mask, shift);
 }
+EXPORT_SYMBOL_GPL(icssg_rgmii_get_fullduplex);
diff --git a/drivers/net/ethernet/ti/icssg/icssg_prueth.c b/drivers/net/ethernet/ti/icssg/icssg_prueth.c
index e13835100754..3e51b3a9b0a5 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_prueth.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_prueth.c
@@ -249,10 +249,10 @@  static void emac_adjust_link(struct net_device *ndev)
 			icssg_config_ipg(emac);
 			spin_unlock_irqrestore(&emac->lock, flags);
 			icssg_config_set_speed(emac);
-			emac_set_port_state(emac, ICSSG_EMAC_PORT_FORWARD);
+			icssg_set_port_state(emac, ICSSG_EMAC_PORT_FORWARD);
 
 		} else {
-			emac_set_port_state(emac, ICSSG_EMAC_PORT_DISABLE);
+			icssg_set_port_state(emac, ICSSG_EMAC_PORT_DISABLE);
 		}
 	}
 
@@ -694,17 +694,17 @@  static void emac_ndo_set_rx_mode_work(struct work_struct *work)
 
 	promisc = ndev->flags & IFF_PROMISC;
 	allmulti = ndev->flags & IFF_ALLMULTI;
-	emac_set_port_state(emac, ICSSG_EMAC_PORT_UC_FLOODING_DISABLE);
-	emac_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_DISABLE);
+	icssg_set_port_state(emac, ICSSG_EMAC_PORT_UC_FLOODING_DISABLE);
+	icssg_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_DISABLE);
 
 	if (promisc) {
-		emac_set_port_state(emac, ICSSG_EMAC_PORT_UC_FLOODING_ENABLE);
-		emac_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_ENABLE);
+		icssg_set_port_state(emac, ICSSG_EMAC_PORT_UC_FLOODING_ENABLE);
+		icssg_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_ENABLE);
 		return;
 	}
 
 	if (allmulti) {
-		emac_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_ENABLE);
+		icssg_set_port_state(emac, ICSSG_EMAC_PORT_MC_FLOODING_ENABLE);
 		return;
 	}
 
@@ -728,14 +728,14 @@  static void emac_ndo_set_rx_mode(struct net_device *ndev)
 static const struct net_device_ops emac_netdev_ops = {
 	.ndo_open = emac_ndo_open,
 	.ndo_stop = emac_ndo_stop,
-	.ndo_start_xmit = emac_ndo_start_xmit,
+	.ndo_start_xmit = icssg_ndo_start_xmit,
 	.ndo_set_mac_address = eth_mac_addr,
 	.ndo_validate_addr = eth_validate_addr,
-	.ndo_tx_timeout = emac_ndo_tx_timeout,
+	.ndo_tx_timeout = icssg_ndo_tx_timeout,
 	.ndo_set_rx_mode = emac_ndo_set_rx_mode,
-	.ndo_eth_ioctl = emac_ndo_ioctl,
-	.ndo_get_stats64 = emac_ndo_get_stats64,
-	.ndo_get_phys_port_name = emac_ndo_get_phys_port_name,
+	.ndo_eth_ioctl = icssg_ndo_ioctl,
+	.ndo_get_stats64 = icssg_ndo_get_stats64,
+	.ndo_get_phys_port_name = icssg_ndo_get_phys_port_name,
 };
 
 static int prueth_netdev_init(struct prueth *prueth,
@@ -771,7 +771,7 @@  static int prueth_netdev_init(struct prueth *prueth,
 	}
 	INIT_WORK(&emac->rx_mode_work, emac_ndo_set_rx_mode_work);
 
-	INIT_DELAYED_WORK(&emac->stats_work, emac_stats_work_handler);
+	INIT_DELAYED_WORK(&emac->stats_work, icssg_stats_work_handler);
 
 	ret = pruss_request_mem_region(prueth->pruss,
 				       port == PRUETH_PORT_MII0 ?
@@ -864,7 +864,7 @@  static int prueth_netdev_init(struct prueth *prueth,
 	ndev->hw_features = NETIF_F_SG;
 	ndev->features = ndev->hw_features;
 
-	netif_napi_add(ndev, &emac->napi_rx, emac_napi_rx_poll);
+	netif_napi_add(ndev, &emac->napi_rx, icssg_napi_rx_poll);
 	hrtimer_init(&emac->rx_hrtimer, CLOCK_MONOTONIC,
 		     HRTIMER_MODE_REL_PINNED);
 	emac->rx_hrtimer.function = &emac_rx_timer_callback;
@@ -927,8 +927,8 @@  static void prueth_emac_restart(struct prueth *prueth)
 		netif_device_detach(emac1->ndev);
 
 	/* Disable both PRUeth ports */
-	emac_set_port_state(emac0, ICSSG_EMAC_PORT_DISABLE);
-	emac_set_port_state(emac1, ICSSG_EMAC_PORT_DISABLE);
+	icssg_set_port_state(emac0, ICSSG_EMAC_PORT_DISABLE);
+	icssg_set_port_state(emac1, ICSSG_EMAC_PORT_DISABLE);
 
 	/* Stop both pru cores for both PRUeth ports*/
 	prueth_emac_stop(emac0);
@@ -943,8 +943,8 @@  static void prueth_emac_restart(struct prueth *prueth)
 	prueth->emacs_initialized++;
 
 	/* Enable forwarding for both PRUeth ports */
-	emac_set_port_state(emac0, ICSSG_EMAC_PORT_FORWARD);
-	emac_set_port_state(emac1, ICSSG_EMAC_PORT_FORWARD);
+	icssg_set_port_state(emac0, ICSSG_EMAC_PORT_FORWARD);
+	icssg_set_port_state(emac1, ICSSG_EMAC_PORT_FORWARD);
 
 	/* Attache net_device for both PRUeth ports */
 	netif_device_attach(emac0->ndev);
@@ -972,7 +972,7 @@  static void icssg_enable_switch_mode(struct prueth *prueth)
 					  BIT(emac->port_id) | DEFAULT_UNTAG_MASK,
 					  true);
 			icssg_set_pvid(prueth, emac->port_vlan, emac->port_id);
-			emac_set_port_state(emac, ICSSG_EMAC_PORT_VLAN_AWARE_ENABLE);
+			icssg_set_port_state(emac, ICSSG_EMAC_PORT_VLAN_AWARE_ENABLE);
 		}
 	}
 }
diff --git a/drivers/net/ethernet/ti/icssg/icssg_prueth.h b/drivers/net/ethernet/ti/icssg/icssg_prueth.h
index 5eeeccb73665..f678d656a3ed 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_prueth.h
+++ b/drivers/net/ethernet/ti/icssg/icssg_prueth.h
@@ -329,8 +329,8 @@  void icssg_ft1_set_mac_addr(struct regmap *miig_rt, int slice, u8 *mac_addr);
 void icssg_config_ipg(struct prueth_emac *emac);
 int icssg_config(struct prueth *prueth, struct prueth_emac *emac,
 		 int slice);
-int emac_set_port_state(struct prueth_emac *emac,
-			enum icssg_port_state_cmd state);
+int icssg_set_port_state(struct prueth_emac *emac,
+			 enum icssg_port_state_cmd state);
 void icssg_config_set_speed(struct prueth_emac *emac);
 void icssg_config_half_duplex(struct prueth_emac *emac);
 
@@ -352,7 +352,7 @@  void icssg_set_pvid(struct prueth *prueth, u8 vid, u8 port);
 #define prueth_napi_to_tx_chn(pnapi) \
 	container_of(pnapi, struct prueth_tx_chn, napi_tx)
 
-void emac_stats_work_handler(struct work_struct *work);
+void icssg_stats_work_handler(struct work_struct *work);
 void emac_update_hardware_stats(struct prueth_emac *emac);
 int emac_get_stat_by_name(struct prueth_emac *emac, char *stat_name);
 
@@ -377,11 +377,11 @@  int prueth_dma_rx_push(struct prueth_emac *emac,
 		       struct prueth_rx_chn *rx_chn);
 void emac_rx_timestamp(struct prueth_emac *emac,
 		       struct sk_buff *skb, u32 *psdata);
-enum netdev_tx emac_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev);
+enum netdev_tx icssg_ndo_start_xmit(struct sk_buff *skb, struct net_device *ndev);
 irqreturn_t prueth_rx_irq(int irq, void *dev_id);
 void prueth_emac_stop(struct prueth_emac *emac);
 void prueth_cleanup_tx_ts(struct prueth_emac *emac);
-int emac_napi_rx_poll(struct napi_struct *napi_rx, int budget);
+int icssg_napi_rx_poll(struct napi_struct *napi_rx, int budget);
 int prueth_prepare_rx_chan(struct prueth_emac *emac,
 			   struct prueth_rx_chn *chn,
 			   int buf_size);
@@ -389,12 +389,12 @@  void prueth_reset_tx_chan(struct prueth_emac *emac, int ch_num,
 			  bool free_skb);
 void prueth_reset_rx_chan(struct prueth_rx_chn *chn,
 			  int num_flows, bool disable);
-void emac_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue);
-int emac_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd);
-void emac_ndo_get_stats64(struct net_device *ndev,
-			  struct rtnl_link_stats64 *stats);
-int emac_ndo_get_phys_port_name(struct net_device *ndev, char *name,
-				size_t len);
+void icssg_ndo_tx_timeout(struct net_device *ndev, unsigned int txqueue);
+int icssg_ndo_ioctl(struct net_device *ndev, struct ifreq *ifr, int cmd);
+void icssg_ndo_get_stats64(struct net_device *ndev,
+			   struct rtnl_link_stats64 *stats);
+int icssg_ndo_get_phys_port_name(struct net_device *ndev, char *name,
+				 size_t len);
 int prueth_node_port(struct device_node *eth_node);
 int prueth_node_mac(struct device_node *eth_node);
 void prueth_netdev_exit(struct prueth *prueth,
diff --git a/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c b/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
index fa98bdb11ece..e180c1166170 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_prueth_sr1.c
@@ -722,14 +722,14 @@  static void emac_ndo_set_rx_mode_sr1(struct net_device *ndev)
 static const struct net_device_ops emac_netdev_ops = {
 	.ndo_open = emac_ndo_open,
 	.ndo_stop = emac_ndo_stop,
-	.ndo_start_xmit = emac_ndo_start_xmit,
+	.ndo_start_xmit = icssg_ndo_start_xmit,
 	.ndo_set_mac_address = eth_mac_addr,
 	.ndo_validate_addr = eth_validate_addr,
-	.ndo_tx_timeout = emac_ndo_tx_timeout,
+	.ndo_tx_timeout = icssg_ndo_tx_timeout,
 	.ndo_set_rx_mode = emac_ndo_set_rx_mode_sr1,
-	.ndo_eth_ioctl = emac_ndo_ioctl,
-	.ndo_get_stats64 = emac_ndo_get_stats64,
-	.ndo_get_phys_port_name = emac_ndo_get_phys_port_name,
+	.ndo_eth_ioctl = icssg_ndo_ioctl,
+	.ndo_get_stats64 = icssg_ndo_get_stats64,
+	.ndo_get_phys_port_name = icssg_ndo_get_phys_port_name,
 };
 
 static int prueth_netdev_init(struct prueth *prueth,
@@ -767,7 +767,7 @@  static int prueth_netdev_init(struct prueth *prueth,
 		goto free_ndev;
 	}
 
-	INIT_DELAYED_WORK(&emac->stats_work, emac_stats_work_handler);
+	INIT_DELAYED_WORK(&emac->stats_work, icssg_stats_work_handler);
 
 	ret = pruss_request_mem_region(prueth->pruss,
 				       port == PRUETH_PORT_MII0 ?
@@ -854,7 +854,7 @@  static int prueth_netdev_init(struct prueth *prueth,
 	ndev->hw_features = NETIF_F_SG;
 	ndev->features = ndev->hw_features;
 
-	netif_napi_add(ndev, &emac->napi_rx, emac_napi_rx_poll);
+	netif_napi_add(ndev, &emac->napi_rx, icssg_napi_rx_poll);
 	prueth->emac[mac] = emac;
 
 	return 0;
diff --git a/drivers/net/ethernet/ti/icssg/icssg_queues.c b/drivers/net/ethernet/ti/icssg/icssg_queues.c
index 3c34f61ad40b..e5052d9e7807 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_queues.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_queues.c
@@ -28,6 +28,7 @@  int icssg_queue_pop(struct prueth *prueth, u8 queue)
 
 	return val;
 }
+EXPORT_SYMBOL_GPL(icssg_queue_pop);
 
 void icssg_queue_push(struct prueth *prueth, int queue, u16 addr)
 {
@@ -36,6 +37,7 @@  void icssg_queue_push(struct prueth *prueth, int queue, u16 addr)
 
 	regmap_write(prueth->miig_rt, ICSSG_QUEUE_OFFSET + 4 * queue, addr);
 }
+EXPORT_SYMBOL_GPL(icssg_queue_push);
 
 u32 icssg_queue_level(struct prueth *prueth, int queue)
 {
diff --git a/drivers/net/ethernet/ti/icssg/icssg_stats.c b/drivers/net/ethernet/ti/icssg/icssg_stats.c
index 3dbadddd7e35..2fb150c13078 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_stats.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_stats.c
@@ -42,7 +42,7 @@  void emac_update_hardware_stats(struct prueth_emac *emac)
 	}
 }
 
-void emac_stats_work_handler(struct work_struct *work)
+void icssg_stats_work_handler(struct work_struct *work)
 {
 	struct prueth_emac *emac = container_of(work, struct prueth_emac,
 						stats_work.work);
@@ -51,6 +51,7 @@  void emac_stats_work_handler(struct work_struct *work)
 	queue_delayed_work(system_long_wq, &emac->stats_work,
 			   msecs_to_jiffies((STATS_TIME_LIMIT_1G_MS * 1000) / emac->speed));
 }
+EXPORT_SYMBOL_GPL(icssg_stats_work_handler);
 
 int emac_get_stat_by_name(struct prueth_emac *emac, char *stat_name)
 {
diff --git a/drivers/net/ethernet/ti/icssg/icssg_switchdev.c b/drivers/net/ethernet/ti/icssg/icssg_switchdev.c
index fceb8bb7d34e..67e2927e176d 100644
--- a/drivers/net/ethernet/ti/icssg/icssg_switchdev.c
+++ b/drivers/net/ethernet/ti/icssg/icssg_switchdev.c
@@ -44,7 +44,7 @@  static int prueth_switchdev_stp_state_set(struct prueth_emac *emac,
 		return -EOPNOTSUPP;
 	}
 
-	emac_set_port_state(emac, emac_state);
+	icssg_set_port_state(emac, emac_state);
 	netdev_dbg(emac->ndev, "STP state: %u\n", emac_state);
 
 	return ret;
@@ -64,7 +64,7 @@  static int prueth_switchdev_attr_br_flags_set(struct prueth_emac *emac,
 	netdev_dbg(emac->ndev, "BR_MCAST_FLOOD: %d port %u\n",
 		   emac_state, emac->port_id);
 
-	emac_set_port_state(emac, emac_state);
+	icssg_set_port_state(emac, emac_state);
 
 	return 0;
 }