hc
2024-08-13 72be3801e63d82671c9d90577a9efb3126a6aa37
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) },
....@@ -3201,7 +3200,6 @@
32013200 { 0x01, 0xffff, 0x068b }
32023201 };
32033202 int rg_saw_cnt;
3204
-
32053203 /* disable aspm and clock request before access ephy */
32063204 rtl_hw_aspm_clkreq_enable(tp, false);
32073205 rtl_ephy_init(tp, e_info_8168h_1);
....@@ -3227,8 +3225,13 @@
32273225
32283226 RTL_W8(tp, DLLPR, RTL_R8(tp, DLLPR) & ~PFM_EN);
32293227 RTL_W8(tp, MISC_1, RTL_R8(tp, MISC_1) & ~PFM_D3COLD_EN);
3230
-
3228
+
32313229 RTL_W8(tp, DLLPR, RTL_R8(tp, DLLPR) & ~TX_10M_PS_EN);
3230
+
3231
+
3232
+ printk("troy 0x18 value init: %x\n",RTL_R16(tp,0x18));
3233
+ RTL_W16(tp, 0x18, 0x042F);
3234
+ printk("troy 0x18 value write: %x\n",RTL_R16(tp,0x18));
32323235
32333236 rtl_eri_clear_bits(tp, 0x1b0, BIT(12));
32343237
....@@ -4184,6 +4187,7 @@
41844187 static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,
41854188 struct sk_buff *skb, u32 *opts)
41864189 {
4190
+ u32 transport_offset = (u32)skb_transport_offset(skb);
41874191 struct skb_shared_info *shinfo = skb_shinfo(skb);
41884192 u32 mss = shinfo->gso_size;
41894193
....@@ -4200,7 +4204,7 @@
42004204 WARN_ON_ONCE(1);
42014205 }
42024206
4203
- opts[0] |= skb_transport_offset(skb) << GTTCPHO_SHIFT;
4207
+ opts[0] |= transport_offset << GTTCPHO_SHIFT;
42044208 opts[1] |= mss << TD1_MSS_SHIFT;
42054209 } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
42064210 u8 ip_protocol;
....@@ -4228,7 +4232,7 @@
42284232 else
42294233 WARN_ON_ONCE(1);
42304234
4231
- opts[1] |= skb_transport_offset(skb) << TCPHO_SHIFT;
4235
+ opts[1] |= transport_offset << TCPHO_SHIFT;
42324236 } else {
42334237 unsigned int padto = rtl_quirk_packet_padto(tp, skb);
42344238
....@@ -4401,13 +4405,14 @@
44014405 struct net_device *dev,
44024406 netdev_features_t features)
44034407 {
4408
+ int transport_offset = skb_transport_offset(skb);
44044409 struct rtl8169_private *tp = netdev_priv(dev);
44054410
44064411 if (skb_is_gso(skb)) {
44074412 if (tp->mac_version == RTL_GIGA_MAC_VER_34)
44084413 features = rtl8168evl_fix_tso(skb, features);
44094414
4410
- if (skb_transport_offset(skb) > GTTCPHO_MAX &&
4415
+ if (transport_offset > GTTCPHO_MAX &&
44114416 rtl_chip_supports_csum_v2(tp))
44124417 features &= ~NETIF_F_ALL_TSO;
44134418 } else if (skb->ip_summed == CHECKSUM_PARTIAL) {
....@@ -4418,7 +4423,7 @@
44184423 if (rtl_quirk_packet_padto(tp, skb))
44194424 features &= ~NETIF_F_CSUM_MASK;
44204425
4421
- if (skb_transport_offset(skb) > TCPHO_MAX &&
4426
+ if (transport_offset > TCPHO_MAX &&
44224427 rtl_chip_supports_csum_v2(tp))
44234428 features &= ~NETIF_F_CSUM_MASK;
44244429 }
....@@ -5291,13 +5296,14 @@
52915296
52925297 return rc;
52935298 }
5294
-
5299
+extern ssize_t at24_mac1_read(unsigned char* mac);
52955300 static void rtl_init_mac_address(struct rtl8169_private *tp)
52965301 {
52975302 struct net_device *dev = tp->dev;
52985303 u8 *mac_addr = dev->dev_addr;
5299
- int rc;
5300
-
5304
+ int rc,i;
5305
+ unsigned char mac[6];
5306
+/*
53015307 rc = eth_platform_get_mac_address(tp_to_dev(tp), mac_addr);
53025308 if (!rc)
53035309 goto done;
....@@ -5309,6 +5315,29 @@
53095315 rtl_read_mac_from_reg(tp, mac_addr, MAC0);
53105316 if (is_valid_ether_addr(mac_addr))
53115317 goto done;
5318
+*/
5319
+ memset(mac, 0x00, 6);
5320
+ at24_mac1_read(mac);
5321
+
5322
+ if ((mac[0] == 0x68) && (mac[1] == 0xed))
5323
+ {
5324
+ printk("troy : rtl811h mac read from eeprom success!! \n");
5325
+ for (i = 0; i < ETH_ALEN; i++)
5326
+ dev->dev_addr[i] = mac[i];
5327
+ }
5328
+ else
5329
+ {
5330
+ printk("troy : rtl811h mac read from eeprom error!! \n");
5331
+ dev->dev_addr[0] = 0x66;
5332
+ dev->dev_addr[1] = 0xED;
5333
+ dev->dev_addr[2] = 0xB5;
5334
+ dev->dev_addr[3] = 0x64;
5335
+ dev->dev_addr[4] = 0x72;
5336
+ dev->dev_addr[5] = 0x2C;
5337
+ }
5338
+ if (is_valid_ether_addr(mac_addr))
5339
+ goto done;
5340
+
53125341
53135342 eth_hw_addr_random(dev);
53145343 dev_warn(tp_to_dev(tp), "can't read MAC address, setting random one\n");
....@@ -5323,6 +5352,7 @@
53235352 enum mac_version chipset;
53245353 struct net_device *dev;
53255354 u16 xid;
5355
+ unsigned char mac[6];
53265356
53275357 dev = devm_alloc_etherdev(&pdev->dev, sizeof (*tp));
53285358 if (!dev)
....@@ -5518,4 +5548,5 @@
55185548 #endif
55195549 };
55205550
5521
-module_pci_driver(rtl8169_pci_driver);
5551
+//module_pci_driver(rtl8169_pci_driver);
5552
+module_pci_driver2(rtl8169_pci_driver); //late_initcall();