* [PATCH net-next] net: wangxun: Add base ethtool ops.
@ 2023-02-13 8:09 Mengyuan Lou
2023-02-13 8:22 ` Leon Romanovsky
2023-02-13 13:48 ` Andrew Lunn
0 siblings, 2 replies; 3+ messages in thread
From: Mengyuan Lou @ 2023-02-13 8:09 UTC (permalink / raw)
To: netdev; +Cc: jiawenwu, Mengyuan Lou
Add base ethtool ops get_drvinfo for ngbe and txgbe.
Signed-off-by: Mengyuan Lou <mengyuanlou@net-swift.com>
---
drivers/net/ethernet/wangxun/libwx/Makefile | 2 +-
.../net/ethernet/wangxun/libwx/wx_ethtool.c | 29 +++++++++++++++++++
.../net/ethernet/wangxun/libwx/wx_ethtool.h | 9 ++++++
drivers/net/ethernet/wangxun/libwx/wx_type.h | 1 +
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c | 5 ++++
.../net/ethernet/wangxun/txgbe/txgbe_main.c | 3 ++
6 files changed, 48 insertions(+), 1 deletion(-)
create mode 100644 drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
create mode 100644 drivers/net/ethernet/wangxun/libwx/wx_ethtool.h
diff --git a/drivers/net/ethernet/wangxun/libwx/Makefile b/drivers/net/ethernet/wangxun/libwx/Makefile
index 850d1615cd18..42ccd6e4052e 100644
--- a/drivers/net/ethernet/wangxun/libwx/Makefile
+++ b/drivers/net/ethernet/wangxun/libwx/Makefile
@@ -4,4 +4,4 @@
obj-$(CONFIG_LIBWX) += libwx.o
-libwx-objs := wx_hw.o wx_lib.o
+libwx-objs := wx_hw.o wx_lib.o wx_ethtool.o
diff --git a/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
new file mode 100644
index 000000000000..e83235aa6ff2
--- /dev/null
+++ b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
@@ -0,0 +1,29 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (c) 2015 - 2023 Beijing WangXun Technology Co., Ltd. */
+
+#include <linux/pci.h>
+#include <linux/phy.h>
+
+#include "wx_type.h"
+#include "wx_ethtool.h"
+
+static void wx_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *info)
+{
+ struct wx *wx = netdev_priv(netdev);
+
+ strscpy(info->driver, wx->driver_name, sizeof(info->driver));
+ strscpy(info->fw_version, wx->eeprom_id, sizeof(info->fw_version));
+ strscpy(info->bus_info, pci_name(wx->pdev), sizeof(info->bus_info));
+}
+
+static const struct ethtool_ops wx_ethtool_ops = {
+ .get_drvinfo = wx_get_drvinfo,
+};
+
+void wx_set_ethtool_ops(struct net_device *netdev)
+{
+ netdev->ethtool_ops = &wx_ethtool_ops;
+}
+EXPORT_SYMBOL(wx_set_ethtool_ops);
+
+MODULE_LICENSE("GPL");
diff --git a/drivers/net/ethernet/wangxun/libwx/wx_ethtool.h b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.h
new file mode 100644
index 000000000000..42c222e3210e
--- /dev/null
+++ b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.h
@@ -0,0 +1,9 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright (c) 2015 - 2023 Beijing WangXun Technology Co., Ltd. */
+
+#ifndef _WX_ETHTOOL_H_
+#define _WX_ETHTOOL_H_
+
+void wx_set_ethtool_ops(struct net_device *netdev);
+
+#endif /* _WX_HW_H_ */
diff --git a/drivers/net/ethernet/wangxun/libwx/wx_type.h b/drivers/net/ethernet/wangxun/libwx/wx_type.h
index eede93d4120d..6d51b1e509d8 100644
--- a/drivers/net/ethernet/wangxun/libwx/wx_type.h
+++ b/drivers/net/ethernet/wangxun/libwx/wx_type.h
@@ -633,6 +633,7 @@ struct wx {
bool adapter_stopped;
u16 tpid[8];
char eeprom_id[32];
+ char driver_name[32];
enum wx_reset_type reset_type;
/* PHY stuff */
diff --git a/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c b/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
index f94d415daf3c..4d80ff8a0e5a 100644
--- a/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
+++ b/drivers/net/ethernet/wangxun/ngbe/ngbe_main.c
@@ -14,6 +14,7 @@
#include "../libwx/wx_type.h"
#include "../libwx/wx_hw.h"
#include "../libwx/wx_lib.h"
+#include "../libwx/wx_ethtool.h"
#include "ngbe_type.h"
#include "ngbe_mdio.h"
#include "ngbe_hw.h"
@@ -546,6 +547,8 @@ static int ngbe_probe(struct pci_dev *pdev,
goto err_pci_release_regions;
}
+ strscpy(wx->driver_name, ngbe_driver_name, sizeof(wx->driver_name));
+ wx_set_ethtool_ops(netdev);
netdev->netdev_ops = &ngbe_netdev_ops;
netdev->features |= NETIF_F_HIGHDMA;
@@ -631,6 +634,8 @@ static int ngbe_probe(struct pci_dev *pdev,
etrack_id |= e2rom_ver;
wr32(wx, NGBE_EEPROM_VERSION_STORE_REG, etrack_id);
}
+ snprintf(wx->eeprom_id, sizeof(wx->eeprom_id),
+ "0x%08x", etrack_id);
eth_hw_addr_set(netdev, wx->mac.perm_addr);
wx_mac_set_default_filter(wx, wx->mac.perm_addr);
diff --git a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
index 094df377726b..f532137c283d 100644
--- a/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
+++ b/drivers/net/ethernet/wangxun/txgbe/txgbe_main.c
@@ -13,6 +13,7 @@
#include "../libwx/wx_type.h"
#include "../libwx/wx_lib.h"
#include "../libwx/wx_hw.h"
+#include "../libwx/wx_ethtool.h"
#include "txgbe_type.h"
#include "txgbe_hw.h"
@@ -565,6 +566,8 @@ static int txgbe_probe(struct pci_dev *pdev,
goto err_pci_release_regions;
}
+ strscpy(wx->driver_name, txgbe_driver_name, sizeof(wx->driver_name));
+ wx_set_ethtool_ops(netdev);
netdev->netdev_ops = &txgbe_netdev_ops;
/* setup the private structure */
--
2.39.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] net: wangxun: Add base ethtool ops.
2023-02-13 8:09 [PATCH net-next] net: wangxun: Add base ethtool ops Mengyuan Lou
@ 2023-02-13 8:22 ` Leon Romanovsky
2023-02-13 13:48 ` Andrew Lunn
1 sibling, 0 replies; 3+ messages in thread
From: Leon Romanovsky @ 2023-02-13 8:22 UTC (permalink / raw)
To: Mengyuan Lou; +Cc: netdev, jiawenwu
On Mon, Feb 13, 2023 at 04:09:49PM +0800, Mengyuan Lou wrote:
> Add base ethtool ops get_drvinfo for ngbe and txgbe.
>
> Signed-off-by: Mengyuan Lou <mengyuanlou@net-swift.com>
> ---
> drivers/net/ethernet/wangxun/libwx/Makefile | 2 +-
> .../net/ethernet/wangxun/libwx/wx_ethtool.c | 29 +++++++++++++++++++
> .../net/ethernet/wangxun/libwx/wx_ethtool.h | 9 ++++++
> drivers/net/ethernet/wangxun/libwx/wx_type.h | 1 +
> drivers/net/ethernet/wangxun/ngbe/ngbe_main.c | 5 ++++
> .../net/ethernet/wangxun/txgbe/txgbe_main.c | 3 ++
> 6 files changed, 48 insertions(+), 1 deletion(-)
> create mode 100644 drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
> create mode 100644 drivers/net/ethernet/wangxun/libwx/wx_ethtool.h
Please remove dot in the patch subject.
>
> diff --git a/drivers/net/ethernet/wangxun/libwx/Makefile b/drivers/net/ethernet/wangxun/libwx/Makefile
> index 850d1615cd18..42ccd6e4052e 100644
> --- a/drivers/net/ethernet/wangxun/libwx/Makefile
> +++ b/drivers/net/ethernet/wangxun/libwx/Makefile
> @@ -4,4 +4,4 @@
>
> obj-$(CONFIG_LIBWX) += libwx.o
>
> -libwx-objs := wx_hw.o wx_lib.o
> +libwx-objs := wx_hw.o wx_lib.o wx_ethtool.o
> diff --git a/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
> new file mode 100644
> index 000000000000..e83235aa6ff2
> --- /dev/null
> +++ b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c
> @@ -0,0 +1,29 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/* Copyright (c) 2015 - 2023 Beijing WangXun Technology Co., Ltd. */
> +
> +#include <linux/pci.h>
> +#include <linux/phy.h>
> +
> +#include "wx_type.h"
> +#include "wx_ethtool.h"
> +
> +static void wx_get_drvinfo(struct net_device *netdev, struct ethtool_drvinfo *info)
> +{
> + struct wx *wx = netdev_priv(netdev);
> +
> + strscpy(info->driver, wx->driver_name, sizeof(info->driver));
> + strscpy(info->fw_version, wx->eeprom_id, sizeof(info->fw_version));
> + strscpy(info->bus_info, pci_name(wx->pdev), sizeof(info->bus_info));
> +}
> +
> +static const struct ethtool_ops wx_ethtool_ops = {
> + .get_drvinfo = wx_get_drvinfo,
> +};
> +
> +void wx_set_ethtool_ops(struct net_device *netdev)
> +{
> + netdev->ethtool_ops = &wx_ethtool_ops;
> +}
> +EXPORT_SYMBOL(wx_set_ethtool_ops);
> +
> +MODULE_LICENSE("GPL");
You don't need to put MODULE_LICENSE() in every libwx/*.c file.
Thanks
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH net-next] net: wangxun: Add base ethtool ops.
2023-02-13 8:09 [PATCH net-next] net: wangxun: Add base ethtool ops Mengyuan Lou
2023-02-13 8:22 ` Leon Romanovsky
@ 2023-02-13 13:48 ` Andrew Lunn
1 sibling, 0 replies; 3+ messages in thread
From: Andrew Lunn @ 2023-02-13 13:48 UTC (permalink / raw)
To: Mengyuan Lou; +Cc: netdev, jiawenwu
> @@ -633,6 +633,7 @@ struct wx {
> bool adapter_stopped;
> u16 tpid[8];
> char eeprom_id[32];
> + char driver_name[32];
> + strscpy(wx->driver_name, ngbe_driver_name, sizeof(wx->driver_name));
You don't need a copy of the driver name, a pointer to
ngbe_driver_name would be sufficient.
> + wx_set_ethtool_ops(netdev);
Since you can using phylib, there are a number of other ethtool ops
you can implement for free using phylib code.
phy_ethtool_nway_reset()
phy_ethtool_set_wol()
phy_ethtool_get_wol()
phy_ethtool_set_eee()
phy_ethtool_get_eee()
etc. Take a look at drivers/net/phy/phy.c and other MAC drivers.
Andrew
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-02-13 13:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-13 8:09 [PATCH net-next] net: wangxun: Add base ethtool ops Mengyuan Lou
2023-02-13 8:22 ` Leon Romanovsky
2023-02-13 13:48 ` Andrew Lunn
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).