From: Manish Awasthi <mawasthi@linux.microsoft.com>
To: kys@microsoft.com, haiyangz@microsoft.com, wei.liu@kernel.org,
decui@microsoft.com, longli@microsoft.com, andrew+netdev@lunn.ch,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, kotaranov@microsoft.com
Cc: horms@kernel.org, linux-hyperv@vger.kernel.org,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-rdma@vger.kernel.org, bpf@vger.kernel.org,
nipun.gupta@amd.com, nikhil.agarwal@amd.com,
gargaditya@linux.microsoft.com, ernis@linux.microsoft.com,
kees@kernel.org, paulros@microsoft.com, mawasthi@microsoft.com
Subject: [PATCH net-next 3/4] net: mana: Build the PCI transport as a separate module
Date: Thu, 24 Sep 2026 17:30:53 +0000 [thread overview]
Message-ID: <20260924173054.589291-4-mawasthi@linux.microsoft.com> (raw)
In-Reply-To: <20260924173054.589291-1-mawasthi@linux.microsoft.com>
Build the shared GDMA and Ethernet code as gdma_core.ko, selected by
MICROSOFT_GDMA_CORE. Build the PCI transport separately as mana.ko and
export the required core symbols.
Preserve the PCI module name, device table, and mana.eth/mana.rdma
auxiliary-device names. Each transport registers its own bus driver.
Signed-off-by: Manish Awasthi <mawasthi@linux.microsoft.com>
---
drivers/net/ethernet/microsoft/Kconfig | 12 ++++++---
drivers/net/ethernet/microsoft/Makefile | 2 +-
drivers/net/ethernet/microsoft/mana/Makefile | 7 ++++--
.../net/ethernet/microsoft/mana/gdma_main.c | 25 ++++++-------------
.../net/ethernet/microsoft/mana/gdma_pci.c | 11 ++++++--
drivers/net/ethernet/microsoft/mana/mana_en.c | 7 +++++-
include/net/mana/gdma.h | 3 ---
7 files changed, 36 insertions(+), 31 deletions(-)
diff --git a/drivers/net/ethernet/microsoft/Kconfig b/drivers/net/ethernet/microsoft/Kconfig
index e9be18c92ca5..ee5bc1c1bf59 100644
--- a/drivers/net/ethernet/microsoft/Kconfig
+++ b/drivers/net/ethernet/microsoft/Kconfig
@@ -15,15 +15,19 @@ config NET_VENDOR_MICROSOFT
if NET_VENDOR_MICROSOFT
+config MICROSOFT_GDMA_CORE
+ tristate
+ select AUXILIARY_BUS
+ select DIMLIB
+ select PAGE_POOL
+ select NET_SHAPER
+
config MICROSOFT_MANA
tristate "Microsoft Azure Network Adapter (MANA) support"
depends on PCI_MSI
depends on X86_64 || (ARM64 && !CPU_BIG_ENDIAN)
depends on PCI_HYPERV
- select AUXILIARY_BUS
- select DIMLIB
- select PAGE_POOL
- select NET_SHAPER
+ select MICROSOFT_GDMA_CORE
help
This driver supports Microsoft Azure Network Adapter (MANA).
So far, the driver is only supported on X86_64.
diff --git a/drivers/net/ethernet/microsoft/Makefile b/drivers/net/ethernet/microsoft/Makefile
index d2ddc218135f..c3b6dafdf473 100644
--- a/drivers/net/ethernet/microsoft/Makefile
+++ b/drivers/net/ethernet/microsoft/Makefile
@@ -2,4 +2,4 @@
# Makefile for the Microsoft Azure network device driver.
#
-obj-$(CONFIG_MICROSOFT_MANA) += mana/
+obj-$(CONFIG_MICROSOFT_GDMA_CORE) += mana/
diff --git a/drivers/net/ethernet/microsoft/mana/Makefile b/drivers/net/ethernet/microsoft/mana/Makefile
index 6705bf65c92c..72c03fb6e441 100644
--- a/drivers/net/ethernet/microsoft/mana/Makefile
+++ b/drivers/net/ethernet/microsoft/mana/Makefile
@@ -2,6 +2,9 @@
#
# Makefile for the Microsoft Azure Network Adapter driver
+obj-$(CONFIG_MICROSOFT_GDMA_CORE) += gdma_core.o
+gdma_core-y := gdma_main.o shm_channel.o hw_channel.o mana_en.o mana_ethtool.o \
+ mana_bpf.o
+
obj-$(CONFIG_MICROSOFT_MANA) += mana.o
-mana-y := gdma_main.o shm_channel.o hw_channel.o mana_en.o mana_ethtool.o mana_bpf.o \
- gdma_pci.o
+mana-y := gdma_pci.o
diff --git a/drivers/net/ethernet/microsoft/mana/gdma_main.c b/drivers/net/ethernet/microsoft/mana/gdma_main.c
index 531170e58a62..ae0ed700b3b9 100644
--- a/drivers/net/ethernet/microsoft/mana/gdma_main.c
+++ b/drivers/net/ethernet/microsoft/mana/gdma_main.c
@@ -1991,6 +1991,7 @@ int mana_gd_setup(struct gdma_context *gc)
dev_err(gc->dev, "%s failed (error %d)\n", __func__, err);
return err;
}
+EXPORT_SYMBOL_NS(mana_gd_setup, "NET_MANA");
void mana_gd_cleanup(struct gdma_context *gc)
{
@@ -2005,36 +2006,24 @@ void mana_gd_cleanup(struct gdma_context *gc)
dev_dbg(gc->dev, "mana gdma cleanup successful\n");
}
+EXPORT_SYMBOL_NS(mana_gd_cleanup, "NET_MANA");
-static int __init mana_driver_init(void)
+static int __init gdma_core_init(void)
{
- int err;
-
mana_debugfs_root = debugfs_create_dir("mana", NULL);
- err = mana_pci_driver_register();
- if (err)
- goto err_debugfs;
-
return 0;
-
-err_debugfs:
- debugfs_remove(mana_debugfs_root);
- mana_debugfs_root = NULL;
- return err;
}
-static void __exit mana_driver_exit(void)
+static void __exit gdma_core_exit(void)
{
- mana_pci_driver_unregister();
-
debugfs_remove(mana_debugfs_root);
mana_debugfs_root = NULL;
}
-module_init(mana_driver_init);
-module_exit(mana_driver_exit);
+module_init(gdma_core_init);
+module_exit(gdma_core_exit);
MODULE_LICENSE("Dual BSD/GPL");
-MODULE_DESCRIPTION("Microsoft Azure Network Adapter driver");
+MODULE_DESCRIPTION("Microsoft Azure Network Adapter GDMA core");
diff --git a/drivers/net/ethernet/microsoft/mana/gdma_pci.c b/drivers/net/ethernet/microsoft/mana/gdma_pci.c
index 4f6a77f55e5a..92a1e66e18b7 100644
--- a/drivers/net/ethernet/microsoft/mana/gdma_pci.c
+++ b/drivers/net/ethernet/microsoft/mana/gdma_pci.c
@@ -878,7 +878,7 @@ static struct pci_driver mana_driver = {
MODULE_DEVICE_TABLE(pci, mana_id_table);
-int mana_pci_driver_register(void)
+static int __init mana_driver_init(void)
{
INIT_LIST_HEAD(&mana_dev_recovery_work.dev_list);
spin_lock_init(&mana_dev_recovery_work.lock);
@@ -888,7 +888,7 @@ int mana_pci_driver_register(void)
return pci_register_driver(&mana_driver);
}
-void mana_pci_driver_unregister(void)
+static void __exit mana_driver_exit(void)
{
struct mana_dev_recovery *dev;
unsigned long flags;
@@ -907,3 +907,10 @@ void mana_pci_driver_unregister(void)
pci_unregister_driver(&mana_driver);
}
+
+module_init(mana_driver_init);
+module_exit(mana_driver_exit);
+
+MODULE_LICENSE("Dual BSD/GPL");
+MODULE_DESCRIPTION("Microsoft Azure Network Adapter driver");
+MODULE_IMPORT_NS("NET_MANA");
diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c
index 62b89b3d6072..16a9d192c099 100644
--- a/drivers/net/ethernet/microsoft/mana/mana_en.c
+++ b/drivers/net/ethernet/microsoft/mana/mana_en.c
@@ -3957,7 +3957,8 @@ static int add_adev(struct gdma_dev *gd, const char *name)
/* madev is owned by the auxiliary device */
madev = NULL;
- ret = auxiliary_device_add(adev);
+ /* Keep the established mana.{eth,rdma} auxiliary match names. */
+ ret = __auxiliary_device_add(adev, "mana");
if (ret)
goto add_fail;
@@ -4194,6 +4195,7 @@ int mana_probe(struct gdma_dev *gd, bool resuming)
return err;
}
+EXPORT_SYMBOL_NS(mana_probe, "NET_MANA");
void mana_remove(struct gdma_dev *gd, bool suspending)
{
@@ -4272,6 +4274,7 @@ void mana_remove(struct gdma_dev *gd, bool suspending)
kfree(ac);
dev_dbg(dev, "%s succeeded\n", __func__);
}
+EXPORT_SYMBOL_NS(mana_remove, "NET_MANA");
int mana_rdma_probe(struct gdma_dev *gd)
{
@@ -4307,6 +4310,7 @@ int mana_rdma_probe(struct gdma_dev *gd)
return err;
}
+EXPORT_SYMBOL_NS(mana_rdma_probe, "NET_MANA");
void mana_rdma_remove(struct gdma_dev *gd)
{
@@ -4327,6 +4331,7 @@ void mana_rdma_remove(struct gdma_dev *gd)
mana_gd_deregister_device(gd);
}
+EXPORT_SYMBOL_NS(mana_rdma_remove, "NET_MANA");
struct net_device *mana_get_primary_netdev(struct mana_context *ac,
u32 port_index,
diff --git a/include/net/mana/gdma.h b/include/net/mana/gdma.h
index 238ff8b9f067..cdec5558304f 100644
--- a/include/net/mana/gdma.h
+++ b/include/net/mana/gdma.h
@@ -1175,7 +1175,4 @@ int mana_gd_query_device_cfg(struct gdma_context *gc, u32 proto_major_ver,
u16 *max_num_vports, u8 *bm_hostmode);
int mana_gd_dev_reset(struct gdma_context *gc);
-int mana_pci_driver_register(void);
-void mana_pci_driver_unregister(void);
-
#endif /* _GDMA_H */
--
2.54.0
next prev parent reply other threads:[~2026-09-24 17:31 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-24 17:30 [PATCH net-next 0/4] net: mana: Add support for the CDX bus Manish Awasthi
2026-09-24 17:30 ` [PATCH net-next 1/4] net: mana: Introduce gdma_bus_ops for bus-specific operations Manish Awasthi
2026-09-24 17:43 ` sashiko-bot
2026-09-25 17:33 ` netdev-bot+sashiko
2026-09-28 19:16 ` Haiyang Zhang
2026-09-24 17:30 ` [PATCH net-next 2/4] net: mana: Move PCI transport code into gdma_pci.c Manish Awasthi
2026-09-24 17:43 ` sashiko-bot
2026-09-25 17:33 ` netdev-bot+sashiko
2026-09-28 19:17 ` Haiyang Zhang
2026-09-24 17:30 ` Manish Awasthi [this message]
2026-09-24 17:43 ` [PATCH net-next 3/4] net: mana: Build the PCI transport as a separate module sashiko-bot
2026-09-28 19:18 ` Haiyang Zhang
2026-09-24 17:30 ` [PATCH net-next 4/4] net: mana: Add support for CDX device ID 0x00C2 Manish Awasthi
2026-09-24 17:43 ` sashiko-bot
2026-09-25 17:33 ` netdev-bot+sashiko
2026-09-28 20:25 ` Manish Awasthi
2026-09-29 13:57 ` Simon Horman
2026-09-29 23:45 ` Manish Awasthi
2026-10-06 15:12 ` Simon Horman
2026-09-28 19:18 ` Haiyang Zhang
2026-09-29 13:58 ` [PATCH net-next 0/4] net: mana: Add support for the CDX bus Simon Horman
2026-10-01 1:10 ` patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260924173054.589291-4-mawasthi@linux.microsoft.com \
--to=mawasthi@linux.microsoft.com \
--cc=andrew+netdev@lunn.ch \
--cc=bpf@vger.kernel.org \
--cc=davem@davemloft.net \
--cc=decui@microsoft.com \
--cc=edumazet@google.com \
--cc=ernis@linux.microsoft.com \
--cc=gargaditya@linux.microsoft.com \
--cc=haiyangz@microsoft.com \
--cc=horms@kernel.org \
--cc=kees@kernel.org \
--cc=kotaranov@microsoft.com \
--cc=kuba@kernel.org \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=longli@microsoft.com \
--cc=mawasthi@microsoft.com \
--cc=netdev@vger.kernel.org \
--cc=nikhil.agarwal@amd.com \
--cc=nipun.gupta@amd.com \
--cc=pabeni@redhat.com \
--cc=paulros@microsoft.com \
--cc=wei.liu@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.