From 2f529f9b558ca1c1bd74be7437a84e4711743404 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Fri, 01 Nov 2024 02:11:33 +0000
Subject: [PATCH] add xenomai

---
 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