summaryrefslogtreecommitdiff
blob: 1a4afdb31bea79df2535bf298edc4e6d3fcda3fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
Added compatibility with Linux Kernel 5.17+.

Author: Karlson2k (Evgeny Grin)
Gentoo bug: https://bugs.gentoo.org/839282

diff --git a/src/r8125_n.c b/src/r8125_n.c
--- a/src/r8125_n.c
+++ b/src/r8125_n.c
@@ -349,7 +349,7 @@ static int rtl8125_change_mtu(struct net_device *dev, int new_mtu);
 static void rtl8125_down(struct net_device *dev);
 
 static int rtl8125_set_mac_address(struct net_device *dev, void *p);
-static void rtl8125_rar_set(struct rtl8125_private *tp, uint8_t *addr);
+static void rtl8125_rar_set(struct rtl8125_private *tp, const uint8_t *addr);
 static void rtl8125_desc_addr_fill(struct rtl8125_private *);
 static void rtl8125_tx_desc_init(struct rtl8125_private *tp);
 static void rtl8125_rx_desc_init(struct rtl8125_private *tp);
@@ -1750,7 +1750,13 @@ static void rtl8125_proc_module_init(void)
 static int rtl8125_proc_open(struct inode *inode, struct file *file)
 {
         struct net_device *dev = proc_get_parent_data(inode);
-        int (*show)(struct seq_file *, void *) = PDE_DATA(inode);
+        int (*show)(struct seq_file *, void *) =
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,0)
+            PDE_DATA(inode);
+#else
+            pde_data(inode);
+#endif
+
 
         return single_open(file, show, dev);
 }
@@ -5234,8 +5240,15 @@ rtl8125_set_ring_size(struct rtl8125_private *tp, u32 rx, u32 tx)
 }
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,0)
 static void rtl8125_get_ringparam(struct net_device *dev,
                                   struct ethtool_ringparam *ring)
+#else
+static void rtl8125_get_ringparam(struct net_device* dev,
+                                  struct ethtool_ringparam* ring,
+                                  struct kernel_ethtool_ringparam* kernel_ring,
+                                  struct netlink_ext_ack* extack)
+#endif
 {
         struct rtl8125_private *tp = netdev_priv(dev);
 
@@ -5245,8 +5258,15 @@ static void rtl8125_get_ringparam(struct net_device *dev,
         ring->tx_pending = tp->tx_ring[0].num_tx_desc;
 }
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,0)
 static int rtl8125_set_ringparam(struct net_device *dev,
                                  struct ethtool_ringparam *ring)
+#else
+static int rtl8125_set_ringparam(struct net_device* dev,
+                                 struct ethtool_ringparam* ring,
+                                 struct kernel_ethtool_ringparam* kernel_ring,
+                                 struct netlink_ext_ack* extack)
+#endif
 {
         struct rtl8125_private *tp = netdev_priv(dev);
         u32 new_rx_count, new_tx_count;
@@ -10889,6 +10909,9 @@ rtl8125_get_mac_address(struct net_device *dev)
         struct rtl8125_private *tp = netdev_priv(dev);
         int i;
         u8 mac_addr[MAC_ADDR_LEN];
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)
+        u8 addr[ETH_ALEN];
+#endif
 
         for (i = 0; i < MAC_ADDR_LEN; i++)
                 mac_addr[i] = RTL_R8(tp, MAC0 + i);
@@ -10916,9 +10939,17 @@ rtl8125_get_mac_address(struct net_device *dev)
         rtl8125_rar_set(tp, mac_addr);
 
         for (i = 0; i < MAC_ADDR_LEN; i++) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,0)
                 dev->dev_addr[i] = RTL_R8(tp, MAC0 + i);
                 tp->org_mac_addr[i] = dev->dev_addr[i]; /* keep the original MAC address */
+#else
+                addr[i] = RTL_R8(tp, MAC0 + i);
+                tp->org_mac_addr[i] = addr[i]; /* keep the original MAC address */
+#endif
         }
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,17,0)
+        eth_hw_addr_set(dev, addr);
+#endif
 #if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,13)
         memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
 #endif
@@ -10944,7 +10975,11 @@ rtl8125_set_mac_address(struct net_device *dev,
         if (!is_valid_ether_addr(addr->sa_data))
                 return -EADDRNOTAVAIL;
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,17,0)
         memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
+#else
+        eth_hw_addr_set(dev, addr->sa_data);
+#endif
 
         rtl8125_rar_set(tp, dev->dev_addr);
 
@@ -10959,7 +10994,7 @@ rtl8125_set_mac_address(struct net_device *dev,
  *****************************************************************************/
 void
 rtl8125_rar_set(struct rtl8125_private *tp,
-                uint8_t *addr)
+                const uint8_t *addr)
 {
         uint32_t rar_low = 0;
         uint32_t rar_high = 0;