From a46a1ad097419aeea7350987dd95230f50d90392 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 15 Nov 2024 08:53:41 +0000
Subject: [PATCH] 固定GMAC1 网卡名为 eth3
---
kernel/drivers/net/ethernet/realtek/r8168/r8168_n.c | 37 ++++++++++++++++++++++++++++++++++++-
1 files changed, 36 insertions(+), 1 deletions(-)
diff --git a/kernel/drivers/net/ethernet/realtek/r8168/r8168_n.c b/kernel/drivers/net/ethernet/realtek/r8168/r8168_n.c
index 84c4d09..d07e7b0 100644
--- a/kernel/drivers/net/ethernet/realtek/r8168/r8168_n.c
+++ b/kernel/drivers/net/ethernet/realtek/r8168/r8168_n.c
@@ -115,6 +115,8 @@
#define FIRMWARE_8168FP_3 "rtl_nic/rtl8168fp-3.fw"
#define FIRMWARE_8168FP_4 "rtl_nic/rtl8168fp-4.fw"
+static int my_id=1;
+
/* Maximum number of multicast addresses to filter (vs. Rx-all-multicast).
The RTL chips use a 64 element hash table based on the Ethernet CRC. */
static const int multicast_filter_limit = 32;
@@ -24055,12 +24057,18 @@
free_netdev(dev);
}
+extern ssize_t at24_mac1_read(unsigned char* mac);
+extern ssize_t at24_mac2_read(unsigned char* mac);
+extern ssize_t at24_mac3_read(unsigned char* mac);
+
+
static int
rtl8168_get_mac_address(struct net_device *dev)
{
struct rtl8168_private *tp = netdev_priv(dev);
int i;
u8 mac_addr[MAC_ADDR_LEN];
+ unsigned char mac[6];
for (i = 0; i < MAC_ADDR_LEN; i++)
mac_addr[i] = RTL_R8(tp, MAC0 + i);
@@ -24115,6 +24123,32 @@
}
}
}
+
+
+ if (my_id == 1)
+ at24_mac1_read(mac);
+ if (my_id == 2)
+ at24_mac2_read(mac);
+ if (my_id == 3)
+ at24_mac3_read(mac);
+ if ((mac[0] == 0x68) && (mac[1] == 0xed))
+ {
+ for (i = 0; i < ETH_ALEN; i++)
+ mac_addr[i] = mac[i];
+ my_id+=1;
+ netif_err(tp, probe, dev, "Get ether addr form at24 %pM\n",
+ mac_addr);
+ }
+ else{
+ printk("rtl811h mac read from eeprom error!! \n");
+ mac_addr[0] = 0x66;
+ mac_addr[1] = 0xED;
+ mac_addr[2] = 0xB5;
+ mac_addr[3] = 0x64;
+ mac_addr[4] = 0x72;
+ mac_addr[5] = my_id;
+ my_id+=1;
+ }
if (!is_valid_ether_addr(mac_addr)) {
netif_err(tp, probe, dev, "Invalid ether addr %pM\n",
@@ -28739,5 +28773,6 @@
#endif
}
-module_init(rtl8168_init_module);
+//module_init(rtl8168_init_module);
+late_initcall(rtl8168_init_module);
module_exit(rtl8168_cleanup_module);
--
Gitblit v1.6.2