hc
2024-03-22 f63cd4c03ea42695d5f9b0e1798edd196923aae6
kernel/drivers/net/ethernet/realtek/r8169_main.c
....@@ -158,7 +158,6 @@
158158 { PCI_VDEVICE(REALTEK, 0x8129) },
159159 { PCI_VDEVICE(REALTEK, 0x8136), RTL_CFG_NO_GBIT },
160160 { PCI_VDEVICE(REALTEK, 0x8161) },
161
- { PCI_VDEVICE(REALTEK, 0x8162) },
162161 { PCI_VDEVICE(REALTEK, 0x8167) },
163162 { PCI_VDEVICE(REALTEK, 0x8168) },
164163 { PCI_VDEVICE(NCUBE, 0x8168) },
....@@ -4184,6 +4183,7 @@
41844183 static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,
41854184 struct sk_buff *skb, u32 *opts)
41864185 {
4186
+ u32 transport_offset = (u32)skb_transport_offset(skb);
41874187 struct skb_shared_info *shinfo = skb_shinfo(skb);
41884188 u32 mss = shinfo->gso_size;
41894189
....@@ -4200,7 +4200,7 @@
42004200 WARN_ON_ONCE(1);
42014201 }
42024202
4203
- opts[0] |= skb_transport_offset(skb) << GTTCPHO_SHIFT;
4203
+ opts[0] |= transport_offset << GTTCPHO_SHIFT;
42044204 opts[1] |= mss << TD1_MSS_SHIFT;
42054205 } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
42064206 u8 ip_protocol;
....@@ -4228,7 +4228,7 @@
42284228 else
42294229 WARN_ON_ONCE(1);
42304230
4231
- opts[1] |= skb_transport_offset(skb) << TCPHO_SHIFT;
4231
+ opts[1] |= transport_offset << TCPHO_SHIFT;
42324232 } else {
42334233 unsigned int padto = rtl_quirk_packet_padto(tp, skb);
42344234
....@@ -4401,13 +4401,14 @@
44014401 struct net_device *dev,
44024402 netdev_features_t features)
44034403 {
4404
+ int transport_offset = skb_transport_offset(skb);
44044405 struct rtl8169_private *tp = netdev_priv(dev);
44054406
44064407 if (skb_is_gso(skb)) {
44074408 if (tp->mac_version == RTL_GIGA_MAC_VER_34)
44084409 features = rtl8168evl_fix_tso(skb, features);
44094410
4410
- if (skb_transport_offset(skb) > GTTCPHO_MAX &&
4411
+ if (transport_offset > GTTCPHO_MAX &&
44114412 rtl_chip_supports_csum_v2(tp))
44124413 features &= ~NETIF_F_ALL_TSO;
44134414 } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
....@@ -4418,7 +4419,7 @@
44184419 if (rtl_quirk_packet_padto(tp, skb))
44194420 features &= ~NETIF_F_CSUM_MASK;
44204421
4421
- if (skb_transport_offset(skb) > TCPHO_MAX &&
4422
+ if (transport_offset > TCPHO_MAX &&
44224423 rtl_chip_supports_csum_v2(tp))
44234424 features &= ~NETIF_F_CSUM_MASK;
44244425 }
....@@ -5291,13 +5292,14 @@
52915292
52925293 return rc;
52935294 }
5294
-
5295
+extern ssize_t at24_mac_read(unsigned char* mac);
52955296 static void rtl_init_mac_address(struct rtl8169_private *tp)
52965297 {
52975298 struct net_device *dev = tp->dev;
52985299 u8 *mac_addr = dev->dev_addr;
5299
- int rc;
5300
-
5300
+ int rc,i;
5301
+ unsigned char mac[6];
5302
+/*
53015303 rc = eth_platform_get_mac_address(tp_to_dev(tp), mac_addr);
53025304 if (!rc)
53035305 goto done;
....@@ -5309,6 +5311,29 @@
53095311 rtl_read_mac_from_reg(tp, mac_addr, MAC0);
53105312 if (is_valid_ether_addr(mac_addr))
53115313 goto done;
5314
+*/
5315
+ memset(mac, 0x00, 6);
5316
+ at24_mac_read(mac);
5317
+
5318
+ if ((mac[0] == 0x68) && (mac[1] == 0xed))
5319
+ {
5320
+ printk("troy : rtl811h mac read from eeprom success!! \n");
5321
+ for (i = 0; i < ETH_ALEN; i++)
5322
+ dev->dev_addr[i] = mac[i];
5323
+ }
5324
+ else
5325
+ {
5326
+ printk("troy : rtl811h mac read from eeprom error!! \n");
5327
+ dev->dev_addr[0] = 0x66;
5328
+ dev->dev_addr[1] = 0xED;
5329
+ dev->dev_addr[2] = 0xB5;
5330
+ dev->dev_addr[3] = 0x64;
5331
+ dev->dev_addr[4] = 0x72;
5332
+ dev->dev_addr[5] = 0x2C;
5333
+ }
5334
+ if (is_valid_ether_addr(mac_addr))
5335
+ goto done;
5336
+
53125337
53135338 eth_hw_addr_random(dev);
53145339 dev_warn(tp_to_dev(tp), "can't read MAC address, setting random one\n");
....@@ -5316,6 +5341,7 @@
53165341 rtl_rar_set(tp, mac_addr);
53175342 }
53185343
5344
+extern ssize_t at24_mac1_read(unsigned char* mac);
53195345 static int rtl_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
53205346 {
53215347 struct rtl8169_private *tp;
....@@ -5323,6 +5349,7 @@
53235349 enum mac_version chipset;
53245350 struct net_device *dev;
53255351 u16 xid;
5352
+ unsigned char mac[6];
53265353
53275354 dev = devm_alloc_etherdev(&pdev->dev, sizeof (*tp));
53285355 if (!dev)
....@@ -5518,4 +5545,5 @@
55185545 #endif
55195546 };
55205547
5521
-module_pci_driver(rtl8169_pci_driver);
5548
+//module_pci_driver(rtl8169_pci_driver);
5549
+module_pci_driver2(rtl8169_pci_driver); //late_initcall();