Add build options and doc for mucse.
Initialize pci device access for MUCSE devices.
Signed-off-by: Dong Yibo <dong100@mucse.com>
---
.../device_drivers/ethernet/index.rst | 1 +
.../device_drivers/ethernet/mucse/rnpgbe.rst | 21 ++
MAINTAINERS | 14 +-
drivers/net/ethernet/Kconfig | 1 +
drivers/net/ethernet/Makefile | 1 +
drivers/net/ethernet/mucse/Kconfig | 35 +++
drivers/net/ethernet/mucse/Makefile | 7 +
drivers/net/ethernet/mucse/rnpgbe/Makefile | 9 +
drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h | 35 +++
.../net/ethernet/mucse/rnpgbe/rnpgbe_main.c | 221 ++++++++++++++++++
10 files changed, 340 insertions(+), 5 deletions(-)
create mode 100644 Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst
create mode 100644 drivers/net/ethernet/mucse/Kconfig
create mode 100644 drivers/net/ethernet/mucse/Makefile
create mode 100644 drivers/net/ethernet/mucse/rnpgbe/Makefile
create mode 100644 drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h
create mode 100644 drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c
diff --git a/Documentation/networking/device_drivers/ethernet/index.rst b/Documentation/networking/device_drivers/ethernet/index.rst
index 139b4c75a191..f6db071210d9 100644
--- a/Documentation/networking/device_drivers/ethernet/index.rst
+++ b/Documentation/networking/device_drivers/ethernet/index.rst
@@ -59,6 +59,7 @@ Contents:
ti/icssg_prueth
wangxun/txgbe
wangxun/ngbe
+ mucse/rnpgbe
.. only:: subproject and html
diff --git a/Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst b/Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst
new file mode 100644
index 000000000000..5f0f338dc3d4
--- /dev/null
+++ b/Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst
@@ -0,0 +1,21 @@
+.. SPDX-License-Identifier: GPL-2.0
+
+===========================================================
+Linux Base Driver for MUCSE(R) Gigabit PCI Express Adapters
+===========================================================
+
+MUCSE Gigabit Linux driver.
+Copyright (c) 2020 - 2025 MUCSE Co.,Ltd.
+
+Identifying Your Adapter
+========================
+The driver is compatible with devices based on the following:
+
+ * MUCSE(R) Ethernet Controller N500 series
+ * MUCSE(R) Ethernet Controller N210 series
+
+Support
+=======
+ If you have problems with the software or hardware, please contact our
+ customer support team via email at marketing@mucse.com or check our website
+ at https://www.mucse.com/en/
diff --git a/MAINTAINERS b/MAINTAINERS
index bb9df569a3ff..b43ca711cc5d 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -16001,11 +16001,7 @@ F: tools/testing/vma/
MEMORY MAPPING - LOCKING
M: Andrew Morton <akpm@linux-foundation.org>
-M: Suren Baghdasaryan <surenb@google.com>
-M: Liam R. Howlett <Liam.Howlett@oracle.com>
-M: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
-R: Vlastimil Babka <vbabka@suse.cz>
-R: Shakeel Butt <shakeel.butt@linux.dev>
+M: Suren Baghdasaryan <surenb@google.com> M: Liam R. Howlett <Liam.Howlett@oracle.com> M: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> R: Vlastimil Babka <vbabka@suse.cz> R: Shakeel Butt <shakeel.butt@linux.dev>
L: linux-mm@kvack.org
S: Maintained
W: http://www.linux-mm.org
@@ -16986,6 +16982,14 @@ T: git git://linuxtv.org/media.git
F: Documentation/devicetree/bindings/media/i2c/aptina,mt9v111.yaml
F: drivers/media/i2c/mt9v111.c
+MUCSE ETHERNET DRIVER
+M: Yibo Dong <dong100@mucse.com>
+L: netdev@vger.kernel.org
+S: Maintained
+W: https://www.mucse.com/en/
+F: Documentation/networking/device_drivers/ethernet/mucse/*
+F: drivers/net/ethernet/mucse/*
+
MULTIFUNCTION DEVICES (MFD)
M: Lee Jones <lee@kernel.org>
S: Maintained
diff --git a/drivers/net/ethernet/Kconfig b/drivers/net/ethernet/Kconfig
index f86d4557d8d7..77c55fa11942 100644
--- a/drivers/net/ethernet/Kconfig
+++ b/drivers/net/ethernet/Kconfig
@@ -202,5 +202,6 @@ source "drivers/net/ethernet/wangxun/Kconfig"
source "drivers/net/ethernet/wiznet/Kconfig"
source "drivers/net/ethernet/xilinx/Kconfig"
source "drivers/net/ethernet/xircom/Kconfig"
+source "drivers/net/ethernet/mucse/Kconfig"
endif # ETHERNET
diff --git a/drivers/net/ethernet/Makefile b/drivers/net/ethernet/Makefile
index 67182339469a..696825bd1211 100644
--- a/drivers/net/ethernet/Makefile
+++ b/drivers/net/ethernet/Makefile
@@ -107,3 +107,4 @@ obj-$(CONFIG_NET_VENDOR_XIRCOM) += xircom/
obj-$(CONFIG_NET_VENDOR_SYNOPSYS) += synopsys/
obj-$(CONFIG_NET_VENDOR_PENSANDO) += pensando/
obj-$(CONFIG_OA_TC6) += oa_tc6.o
+obj-$(CONFIG_NET_VENDOR_MUCSE) += mucse/
diff --git a/drivers/net/ethernet/mucse/Kconfig b/drivers/net/ethernet/mucse/Kconfig
new file mode 100644
index 000000000000..5825b37fcd50
--- /dev/null
+++ b/drivers/net/ethernet/mucse/Kconfig
@@ -0,0 +1,35 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# Mucse network device configuration
+#
+
+config NET_VENDOR_MUCSE
+ bool "Mucse devices"
+ default y
+ help
+ If you have a network (Ethernet) card belonging to this class, say Y.
+
+ Note that the answer to this question doesn't directly affect the
+ kernel: saying N will just cause the configurator to skip all
+ the questions about Mucse cards. If you say Y, you will be asked for
+ your specific card in the following questions.
+
+
+if NET_VENDOR_MUCSE
+
+config MGBE
+ tristate "Mucse(R) 1GbE PCI Express adapters support"
+ depends on PCI
+ select PAGE_POOL
+ help
+ This driver supports Mucse(R) 1GbE PCI Express family of
+ adapters.
+
+ More specific information on configuring the driver is in
+ <file:Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst>.
+
+ To compile this driver as a module, choose M here. The module
+ will be called rnpgbe.
+
+endif # NET_VENDOR_MUCSE
+
diff --git a/drivers/net/ethernet/mucse/Makefile b/drivers/net/ethernet/mucse/Makefile
new file mode 100644
index 000000000000..f0bd79882488
--- /dev/null
+++ b/drivers/net/ethernet/mucse/Makefile
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: GPL-2.0
+#
+# Makefile for the Mucse(R) network device drivers.
+#
+
+obj-$(CONFIG_MGBE) += rnpgbe/
+
diff --git a/drivers/net/ethernet/mucse/rnpgbe/Makefile b/drivers/net/ethernet/mucse/rnpgbe/Makefile
new file mode 100644
index 000000000000..0942e27f5913
--- /dev/null
+++ b/drivers/net/ethernet/mucse/rnpgbe/Makefile
@@ -0,0 +1,9 @@
+# SPDX-License-Identifier: GPL-2.0
+# Copyright(c) 2020 - 2025 MUCSE Corporation.
+#
+# Makefile for the MUCSE(R) 1GbE PCI Express ethernet driver
+#
+
+obj-$(CONFIG_MGBE) += rnpgbe.o
+
+rnpgbe-objs := rnpgbe_main.o
diff --git a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h
new file mode 100644
index 000000000000..a44e6b6255d8
--- /dev/null
+++ b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h
@@ -0,0 +1,35 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright(c) 2020 - 2025 Mucse Corporation. */
+
+#ifndef _RNPGBE_H
+#define _RNPGBE_H
+
+#define RNPGBE_MAX_QUEUES (8)
+
+enum rnpgbe_boards {
+ board_n500,
+ board_n210,
+ board_n210L,
+};
+
+struct mucse {
+ struct net_device *netdev;
+ struct pci_dev *pdev;
+ /* board number */
+ u16 bd_number;
+
+ char name[60];
+};
+
+/* Device IDs */
+#ifndef PCI_VENDOR_ID_MUCSE
+#define PCI_VENDOR_ID_MUCSE 0x8848
+#endif /* PCI_VENDOR_ID_MUCSE */
+
+#define PCI_DEVICE_ID_N500_QUAD_PORT 0x8308
+#define PCI_DEVICE_ID_N500_DUAL_PORT 0x8318
+#define PCI_DEVICE_ID_N500_VF 0x8309
+#define PCI_DEVICE_ID_N210 0x8208
+#define PCI_DEVICE_ID_N210L 0x820a
+
+#endif /* _RNPGBE_H */
diff --git a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c
new file mode 100644
index 000000000000..b32b70c98b46
--- /dev/null
+++ b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe_main.c
@@ -0,0 +1,221 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright(c) 2020 - 2025 Mucse Corporation. */
+
+#include <linux/types.h>
+#include <linux/module.h>
+#include <linux/pci.h>
+#include <linux/netdevice.h>
+#include <linux/string.h>
+#include <linux/etherdevice.h>
+
+#include "rnpgbe.h"
+
+char rnpgbe_driver_name[] = "rnpgbe";
+static const char rnpgbe_driver_string[] =
+ "mucse 1 Gigabit PCI Express Network Driver";
+#define DRV_VERSION "1.0.0"
+const char rnpgbe_driver_version[] = DRV_VERSION;
+static const char rnpgbe_copyright[] =
+ "Copyright (c) 2020-2025 mucse Corporation.";
+
+/* rnpgbe_pci_tbl - PCI Device ID Table
+ *
+ * { PCI_DEVICE(Vendor ID, Device ID),
+ * driver_data (used for different hw chip) }
+ */
+static struct pci_device_id rnpgbe_pci_tbl[] = {
+ { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N500_QUAD_PORT),
+ .driver_data = board_n500},
+ { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N500_DUAL_PORT),
+ .driver_data = board_n500},
+ { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N210),
+ .driver_data = board_n210},
+ { PCI_DEVICE(PCI_VENDOR_ID_MUCSE, PCI_DEVICE_ID_N210L),
+ .driver_data = board_n210L},
+ /* required last entry */
+ {0, },
+};
+
+/**
+ * rnpgbe_add_adpater - add netdev for this pci_dev
+ * @pdev: PCI device information structure
+ *
+ * rnpgbe_add_adpater initializes a netdev for this pci_dev
+ * structure. Initializes Bar map, private structure, and a
+ * hardware reset occur.
+ *
+ * Returns 0 on success, negative on failure
+ **/
+static int rnpgbe_add_adpater(struct pci_dev *pdev)
+{
+ struct mucse *mucse = NULL;
+ struct net_device *netdev;
+ static int bd_number;
+
+ pr_info("==== add rnpgbe queues:%d ====", RNPGBE_MAX_QUEUES);
+ netdev = alloc_etherdev_mq(sizeof(struct mucse), RNPGBE_MAX_QUEUES);
+ if (!netdev)
+ return -ENOMEM;
+
+ mucse = netdev_priv(netdev);
+ memset((char *)mucse, 0x00, sizeof(struct mucse));
+ mucse->netdev = netdev;
+ mucse->pdev = pdev;
+ mucse->bd_number = bd_number++;
+ snprintf(mucse->name, sizeof(netdev->name), "%s%d",
+ rnpgbe_driver_name, mucse->bd_number);
+ pci_set_drvdata(pdev, mucse);
+
+ return 0;
+}
+
+/**
+ * rnpgbe_probe - Device Initialization Routine
+ * @pdev: PCI device information struct
+ * @id: entry in rnpgbe_pci_tbl
+ *
+ * rnpgbe_probe initializes a PF adapter identified by a pci_dev
+ * structure. The OS initialization, then call rnpgbe_add_adpater
+ * to initializes netdev.
+ *
+ * Returns 0 on success, negative on failure
+ **/
+static int rnpgbe_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+{
+ int err;
+
+ err = pci_enable_device_mem(pdev);
+ if (err)
+ return err;
+
+ /* hw only support 56-bits dma mask */
+ err = dma_set_coherent_mask(&pdev->dev, DMA_BIT_MASK(56));
+ if (err) {
+ dev_err(&pdev->dev,
+ "No usable DMA configuration, aborting\n");
+ goto err_dma;
+ }
+
+ err = pci_request_mem_regions(pdev, rnpgbe_driver_name);
+ if (err) {
+ dev_err(&pdev->dev,
+ "pci_request_selected_regions failed 0x%x\n", err);
+ goto err_pci_req;
+ }
+
+ pci_set_master(pdev);
+ pci_save_state(pdev);
+ err = rnpgbe_add_adpater(pdev);
+ if (err)
+ goto err_regions;
+
+ return 0;
+err_regions:
+ pci_release_mem_regions(pdev);
+err_dma:
+err_pci_req:
+ pci_disable_device(pdev);
+ return err;
+}
+
+/**
+ * rnpgbe_rm_adpater - remove netdev for this mucse structure
+ * @mucse: pointer to private structure
+ *
+ * rnpgbe_rm_adpater remove a netdev for this mucse structure
+ **/
+static void rnpgbe_rm_adpater(struct mucse *mucse)
+{
+ struct net_device *netdev;
+
+ netdev = mucse->netdev;
+ pr_info("= remove rnpgbe:%s =\n", netdev->name);
+ free_netdev(netdev);
+ pr_info("remove complete\n");
+}
+
+/**
+ * rnpgbe_remove - Device Removal Routine
+ * @pdev: PCI device information struct
+ *
+ * rnpgbe_remove is called by the PCI subsystem to alert the driver
+ * that it should release a PCI device. This could be caused by a
+ * Hot-Plug event, or because the driver is going to be removed from
+ * memory.
+ **/
+static void rnpgbe_remove(struct pci_dev *pdev)
+{
+ struct mucse *mucse = pci_get_drvdata(pdev);
+
+ if (!mucse)
+ return;
+
+ rnpgbe_rm_adpater(mucse);
+ pci_release_mem_regions(pdev);
+ pci_disable_device(pdev);
+}
+
+static void __rnpgbe_shutdown(struct pci_dev *pdev, bool *enable_wake)
+{
+ struct mucse *mucse = pci_get_drvdata(pdev);
+ struct net_device *netdev = mucse->netdev;
+
+ *enable_wake = false;
+ netif_device_detach(netdev);
+ pci_disable_device(pdev);
+}
+
+/**
+ * rnpgbe_shutdown - Device Shutdown Routine
+ * @pdev: PCI device information struct
+ *
+ * rnpgbe_shutdown is called by the PCI subsystem to alert the driver
+ * that os shutdown. Device should setup wakeup state here.
+ **/
+static void rnpgbe_shutdown(struct pci_dev *pdev)
+{
+ bool wake = false;
+
+ __rnpgbe_shutdown(pdev, &wake);
+
+ if (system_state == SYSTEM_POWER_OFF) {
+ pci_wake_from_d3(pdev, wake);
+ pci_set_power_state(pdev, PCI_D3hot);
+ }
+}
+
+static struct pci_driver rnpgbe_driver = {
+ .name = rnpgbe_driver_name,
+ .id_table = rnpgbe_pci_tbl,
+ .probe = rnpgbe_probe,
+ .remove = rnpgbe_remove,
+ .shutdown = rnpgbe_shutdown,
+};
+
+static int __init rnpgbe_init_module(void)
+{
+ int ret;
+
+ pr_info("%s - version %s\n", rnpgbe_driver_string,
+ rnpgbe_driver_version);
+ pr_info("%s\n", rnpgbe_copyright);
+ ret = pci_register_driver(&rnpgbe_driver);
+ if (ret)
+ return ret;
+
+ return 0;
+}
+
+module_init(rnpgbe_init_module);
+
+static void __exit rnpgbe_exit_module(void)
+{
+ pci_unregister_driver(&rnpgbe_driver);
+}
+
+module_exit(rnpgbe_exit_module);
+
+MODULE_DEVICE_TABLE(pci, rnpgbe_pci_tbl);
+MODULE_AUTHOR("Mucse Corporation, <mucse@mucse.com>");
+MODULE_DESCRIPTION("Mucse(R) 1 Gigabit PCI Express Network Driver");
+MODULE_LICENSE("GPL");
--
2.25.1
> --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -16001,11 +16001,7 @@ F: tools/testing/vma/ > > MEMORY MAPPING - LOCKING > M: Andrew Morton <akpm@linux-foundation.org> > -M: Suren Baghdasaryan <surenb@google.com> > -M: Liam R. Howlett <Liam.Howlett@oracle.com> > -M: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> > -R: Vlastimil Babka <vbabka@suse.cz> > -R: Shakeel Butt <shakeel.butt@linux.dev> > +M: Suren Baghdasaryan <surenb@google.com> M: Liam R. Howlett <Liam.Howlett@oracle.com> M: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> R: Vlastimil Babka <vbabka@suse.cz> R: Shakeel Butt <shakeel.butt@linux.dev> You clearly have not reviewed your own patch, or you would not be changing this section of the MAINTAINERs file. > +if NET_VENDOR_MUCSE > + > +config MGBE > + tristate "Mucse(R) 1GbE PCI Express adapters support" > + depends on PCI > + select PAGE_POOL > + help > + This driver supports Mucse(R) 1GbE PCI Express family of > + adapters. > + > + More specific information on configuring the driver is in > + <file:Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst>. > + > + To compile this driver as a module, choose M here. The module > + will be called rnpgbe. There is some odd indentation here. > +#include <linux/string.h> > +#include <linux/etherdevice.h> > + > +#include "rnpgbe.h" > + > +char rnpgbe_driver_name[] = "rnpgbe"; > +static const char rnpgbe_driver_string[] = > + "mucse 1 Gigabit PCI Express Network Driver"; > +#define DRV_VERSION "1.0.0" > +const char rnpgbe_driver_version[] = DRV_VERSION; Driver versions are pointless, since they never change, yet the kernel around the driver changes all the time. Please drop. > +static const char rnpgbe_copyright[] = > + "Copyright (c) 2020-2025 mucse Corporation."; Why do you need this as a string? > +static int rnpgbe_add_adpater(struct pci_dev *pdev) > +{ > + struct mucse *mucse = NULL; > + struct net_device *netdev; > + static int bd_number; > + > + pr_info("==== add rnpgbe queues:%d ====", RNPGBE_MAX_QUEUES); If you are still debugging this driver, please wait until it is mostly bug free before submitting. I would not expect a production quality driver to have prints like this. > + netdev = alloc_etherdev_mq(sizeof(struct mucse), RNPGBE_MAX_QUEUES); > + if (!netdev) > + return -ENOMEM; > + > + mucse = netdev_priv(netdev); > + memset((char *)mucse, 0x00, sizeof(struct mucse)); priv is guaranteed to be zero'ed. > +static void rnpgbe_shutdown(struct pci_dev *pdev) > +{ > + bool wake = false; > + > + __rnpgbe_shutdown(pdev, &wake); Please avoid using __ function names. Those are supposed to be reserved for the compiler. Sometimes you will see single _ for functions which have an unlocked version and a locked version. > +static int __init rnpgbe_init_module(void) > +{ > + int ret; > + > + pr_info("%s - version %s\n", rnpgbe_driver_string, > + rnpgbe_driver_version); > + pr_info("%s\n", rnpgbe_copyright); Please don't spam the log. Only print something on error. Andrew
On Thu, Jul 03, 2025 at 06:25:21PM +0200, Andrew Lunn wrote: > > --- a/MAINTAINERS > > +++ b/MAINTAINERS > > @@ -16001,11 +16001,7 @@ F: tools/testing/vma/ > > > > MEMORY MAPPING - LOCKING > > M: Andrew Morton <akpm@linux-foundation.org> > > -M: Suren Baghdasaryan <surenb@google.com> > > -M: Liam R. Howlett <Liam.Howlett@oracle.com> > > -M: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> > > -R: Vlastimil Babka <vbabka@suse.cz> > > -R: Shakeel Butt <shakeel.butt@linux.dev> > > +M: Suren Baghdasaryan <surenb@google.com> M: Liam R. Howlett <Liam.Howlett@oracle.com> M: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> R: Vlastimil Babka <vbabka@suse.cz> R: Shakeel Butt <shakeel.butt@linux.dev> > > You clearly have not reviewed your own patch, or you would not be > changing this section of the MAINTAINERs file. > Sorry, I didn't review it carefully. I will correct this error and review all the remaining patches. > > +if NET_VENDOR_MUCSE > > + > > +config MGBE > > + tristate "Mucse(R) 1GbE PCI Express adapters support" > > + depends on PCI > > + select PAGE_POOL > > + help > > + This driver supports Mucse(R) 1GbE PCI Express family of > > + adapters. > > + > > + More specific information on configuring the driver is in > > + <file:Documentation/networking/device_drivers/ethernet/mucse/rnpgbe.rst>. > > + > > + To compile this driver as a module, choose M here. The module > > + will be called rnpgbe. > > There is some odd indentation here. > I will correct this in v1. > > +#include <linux/string.h> > > +#include <linux/etherdevice.h> > > + > > +#include "rnpgbe.h" > > + > > +char rnpgbe_driver_name[] = "rnpgbe"; > > +static const char rnpgbe_driver_string[] = > > + "mucse 1 Gigabit PCI Express Network Driver"; > > +#define DRV_VERSION "1.0.0" > > +const char rnpgbe_driver_version[] = DRV_VERSION; > > Driver versions are pointless, since they never change, yet the kernel > around the driver changes all the time. Please drop. > OK, I got it. > > +static const char rnpgbe_copyright[] = > > + "Copyright (c) 2020-2025 mucse Corporation."; > > Why do you need this as a string? > I printed this in 'pr_info' before. Of course, I should remove this belong with 'pr_info'. > > +static int rnpgbe_add_adpater(struct pci_dev *pdev) > > +{ > > + struct mucse *mucse = NULL; > > + struct net_device *netdev; > > + static int bd_number; > > + > > + pr_info("==== add rnpgbe queues:%d ====", RNPGBE_MAX_QUEUES); > > If you are still debugging this driver, please wait until it is mostly > bug free before submitting. I would not expect a production quality > driver to have prints like this. > Got it, I will remove 'pr_info'. > > + netdev = alloc_etherdev_mq(sizeof(struct mucse), RNPGBE_MAX_QUEUES); > > + if (!netdev) > > + return -ENOMEM; > > + > > + mucse = netdev_priv(netdev); > > + memset((char *)mucse, 0x00, sizeof(struct mucse)); > > priv is guaranteed to be zero'ed. > I will remove 'memset' here. > > +static void rnpgbe_shutdown(struct pci_dev *pdev) > > +{ > > + bool wake = false; > > + > > + __rnpgbe_shutdown(pdev, &wake); > > Please avoid using __ function names. Those are supposed to be > reserved for the compiler. Sometimes you will see single _ for > functions which have an unlocked version and a locked version. > Got it, I will fix this. > > +static int __init rnpgbe_init_module(void) > > +{ > > + int ret; > > + > > + pr_info("%s - version %s\n", rnpgbe_driver_string, > > + rnpgbe_driver_version); > > + pr_info("%s\n", rnpgbe_copyright); > > Please don't spam the log. Only print something on error. > > Andrew > I will remove the log, thanks for your feedback.
© 2016 - 2025 Red Hat, Inc.