Re: [PATCH v3 5/5] net: rnpgbe: Add register_netdev

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 13/08/2025 10:04, Yibo Dong wrote:
On Tue, Aug 12, 2025 at 04:32:00PM +0100, Vadim Fedorenko wrote:
On 12/08/2025 10:39, Dong Yibo wrote:
Initialize get mac from hw, register the netdev.

Signed-off-by: Dong Yibo <dong100@xxxxxxxxx>
---
   drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h    | 22 ++++++
   .../net/ethernet/mucse/rnpgbe/rnpgbe_chip.c   | 73 ++++++++++++++++++
   drivers/net/ethernet/mucse/rnpgbe/rnpgbe_hw.h |  1 +
   .../net/ethernet/mucse/rnpgbe/rnpgbe_main.c   | 76 +++++++++++++++++++
   4 files changed, 172 insertions(+)

diff --git a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h
index 6cb14b79cbfe..644b8c85c29d 100644
--- a/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h
+++ b/drivers/net/ethernet/mucse/rnpgbe/rnpgbe.h
@@ -6,6 +6,7 @@
   #include <linux/types.h>
   #include <linux/mutex.h>
+#include <linux/netdevice.h>
   extern const struct rnpgbe_info rnpgbe_n500_info;
   extern const struct rnpgbe_info rnpgbe_n210_info;
@@ -86,6 +87,18 @@ struct mucse_mbx_info {
   	u32 fw2pf_mbox_vec;
   };
+struct mucse_hw_operations {
+	int (*init_hw)(struct mucse_hw *hw);
+	int (*reset_hw)(struct mucse_hw *hw);
+	void (*start_hw)(struct mucse_hw *hw);
+	void (*init_rx_addrs)(struct mucse_hw *hw);
+	void (*driver_status)(struct mucse_hw *hw, bool enable, int mode);
+};
+
+enum {
+	mucse_driver_insmod,
+};
+
   struct mucse_hw {
   	void *back;
   	u8 pfvfnum;
@@ -96,12 +109,18 @@ struct mucse_hw {
   	u32 axi_mhz;
   	u32 bd_uid;
   	enum rnpgbe_hw_type hw_type;
+	const struct mucse_hw_operations *ops;
   	struct mucse_dma_info dma;
   	struct mucse_eth_info eth;
   	struct mucse_mac_info mac;
   	struct mucse_mbx_info mbx;
+	u32 flags;
+#define M_FLAGS_INIT_MAC_ADDRESS BIT(0)
   	u32 driver_version;
   	u16 usecstocount;
+	int lane;
+	u8 addr[ETH_ALEN];
+	u8 perm_addr[ETH_ALEN];

why do you need both addresses if you have this info already in netdev?


'perm_addr' is address from firmware (fixed, can't be changed by user).
'addr' is the current netdev address (It is Initialized the same with
'perm_addr', but can be changed by user)
Maybe I should add 'addr' in the patch which support ndo_set_mac_address?

But why do you need 'addr' at all? Current netdev address can be
retrieved from netdev, why do you need to store it within driver's
structure?





[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux FS]     [Yosemite Forum]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux