Source: r8168
Version: 8.040.00-1
Severity: wishlist

PS: here is another mirror: https://github.com/mtorromeo/r8168

---
 debian/changelog |  6 ++++
 src/r8168.h      |  2 +-
 src/r8168_n.c    | 87 ++++++++++++++++++++++++++++++++++++++++----------------
 3 files changed, 69 insertions(+), 26 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 1ab4d87..f733c9e 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+r8168 (8.041.00-1) UNRELEASED; urgency=high
+
+  * New upstream release 8.041.00 (2015-12-08).
+
+ -- Konstantin Demin <rockdri...@gmail.com>  Wed, 16 Dec 2015 12:26:56 +0300
+
 r8168 (8.040.00-1) unstable; urgency=medium
 
   * New upstream release 8.040.00 (2015-05-14).
diff --git a/src/r8168.h b/src/r8168.h
index 33afc6c..a4c7077 100755
--- a/src/r8168.h
+++ b/src/r8168.h
@@ -141,7 +141,7 @@
 #define NAPI_SUFFIX ""
 #endif
 
-#define RTL8168_VERSION "8.040.00" NAPI_SUFFIX
+#define RTL8168_VERSION "8.041.00" NAPI_SUFFIX
 #define MODULENAME "r8168"
 #define PFX MODULENAME ": "
 
diff --git a/src/r8168_n.c b/src/r8168_n.c
index 8b08e63..d197630 100755
--- a/src/r8168_n.c
+++ b/src/r8168_n.c
@@ -297,7 +297,7 @@ static struct pci_device_id rtl8168_pci_tbl[] = {
 
 MODULE_DEVICE_TABLE(pci, rtl8168_pci_tbl);
 
-static int rx_copybreak = 200;
+static int rx_copybreak = 0;
 static int timer_count = 0x2600;
 
 static struct {
@@ -3241,9 +3241,11 @@ rtl8168_init_pci_offset_99(struct rtl8168_private *tp)
 
         switch (tp->mcfg) {
         case CFG_METHOD_26:
-                csi_tmp = rtl8168_eri_read(ioaddr, 0x5C2, 1, ERIAR_ExGMAC);
-                csi_tmp &= ~BIT_1;
-                rtl8168_eri_write(ioaddr, 0x5C2, 1, csi_tmp, ERIAR_ExGMAC);
+                if (tp->org_pci_offset_99 & BIT_2) {
+                        csi_tmp = rtl8168_eri_read(ioaddr, 0x5C2, 1, 
ERIAR_ExGMAC);
+                        csi_tmp &= ~BIT_1;
+                        rtl8168_eri_write(ioaddr, 0x5C2, 1, csi_tmp, 
ERIAR_ExGMAC);
+                }
                 break;
         }
 
@@ -3272,9 +3274,19 @@ rtl8168_init_pci_offset_99(struct rtl8168_private *tp)
 
         switch (tp->mcfg) {
         case CFG_METHOD_26:
-                csi_tmp = rtl8168_eri_read(ioaddr, 0x5C8, 1, ERIAR_ExGMAC);
-                csi_tmp |= BIT_0;
-                rtl8168_eri_write(ioaddr, 0x5C8, 1, csi_tmp, ERIAR_ExGMAC);
+                rtl8168_eri_write(ioaddr, 0x5C0, 1, 0xFA, ERIAR_ExGMAC);
+                break;
+        }
+
+        switch (tp->mcfg) {
+        case CFG_METHOD_26:
+        case CFG_METHOD_29:
+        case CFG_METHOD_30:
+                if (tp->org_pci_offset_99 & BIT_2) {
+                        csi_tmp = rtl8168_eri_read(ioaddr, 0x5C8, 1, 
ERIAR_ExGMAC);
+                        csi_tmp |= BIT_0;
+                        rtl8168_eri_write(ioaddr, 0x5C8, 1, csi_tmp, 
ERIAR_ExGMAC);
+                }
                 break;
         }
 
@@ -3306,18 +3318,6 @@ rtl8168_init_pci_offset_99(struct rtl8168_private *tp)
         }
 
         switch (tp->mcfg) {
-        case CFG_METHOD_26:
-        case CFG_METHOD_29:
-        case CFG_METHOD_30:
-                RTL_W8(0xB6, RTL_R8(0xB6) | BIT_0);
-
-                csi_tmp = rtl8168_eri_read(ioaddr, 0x5C8, 1, ERIAR_ExGMAC);
-                csi_tmp |= BIT_0;
-                rtl8168_eri_write(ioaddr, 0x5C8, 1, csi_tmp, ERIAR_ExGMAC);
-                break;
-        }
-
-        switch (tp->mcfg) {
         case CFG_METHOD_21:
         case CFG_METHOD_22:
         case CFG_METHOD_24:
@@ -3331,6 +3331,15 @@ rtl8168_init_pci_offset_99(struct rtl8168_private *tp)
                 break;
         }
 
+        switch (tp->mcfg) {
+        case CFG_METHOD_26:
+        case CFG_METHOD_29:
+        case CFG_METHOD_30:
+                if (tp->org_pci_offset_99 & BIT_2)
+                        RTL_W8(0xB6, RTL_R8(0xB6) | BIT_0);
+                break;
+        }
+
         rtl8168_enable_pci_offset_99(tp);
 }
 
@@ -4841,7 +4850,7 @@ static int rtl8168_enable_EEE(struct rtl8168_private *tp)
         case CFG_METHOD_28:
                 OOB_mutex_lock(tp);
                 data = mac_ocp_read(tp, 0xE052);
-                data |= BIT_0;
+                data &= ~BIT_0;
                 mac_ocp_write(tp, 0xE052, data);
                 OOB_mutex_unlock(tp);
                 data = mac_ocp_read(tp, 0xE056);
@@ -4861,7 +4870,8 @@ static int rtl8168_enable_EEE(struct rtl8168_private *tp)
                 mdio_write(tp, 0x10, data);
 
                 mdio_write(tp, 0x1F, 0x0A44);
-                data = mdio_read( tp, 0x11 ) | BIT_12 | BIT_13| BIT_14;
+                data = mdio_read(tp, 0x11) | BIT_13 | BIT_14;
+                data &= ~(BIT_12);
                 mdio_write(tp, 0x11, data);
                 spin_unlock_irqrestore(&tp->phy_lock, flags);
                 break;
@@ -5091,7 +5101,7 @@ static int rtl8168_disable_EEE(struct rtl8168_private *tp)
                 mdio_write(tp, 0x10, data);
 
                 mdio_write(tp, 0x1F, 0x0A44);
-                data = mdio_read( tp, 0x11 ) & ~(BIT_12 | BIT_13 | BIT_14);
+                data = mdio_read(tp, 0x11) & ~(BIT_12 | BIT_13 | BIT_14);
                 mdio_write(tp, 0x11, data);
                 spin_unlock_irqrestore(&tp->phy_lock, flags);
                 break;
@@ -5684,6 +5694,8 @@ rtl8168_exit_oob(struct net_device *dev)
         void __iomem *ioaddr = tp->mmio_addr;
         u16 data16;
 
+        RTL_W32(RxConfig, RTL_R32(RxConfig) & ~(AcceptErr | AcceptRunt | 
AcceptBroadcast | AcceptMulticast | AcceptMyPhys |  AcceptAllPhys));
+
         switch (tp->mcfg) {
         case CFG_METHOD_23:
         case CFG_METHOD_27:
@@ -6767,6 +6779,8 @@ rtl8168_hw_mac_mcu_config(struct net_device *dev)
                 mac_ocp_write(tp, 0xFC2A, 0x0210);
                 mac_ocp_write(tp, 0xFC2C, 0x1A04);
                 mac_ocp_write(tp, 0xFC2E, 0x0B26);
+                mac_ocp_write(tp, 0xFC30, 0x0F02);
+                mac_ocp_write(tp, 0xFC32, 0x0CA0);
 
                 mac_ocp_write(tp, 0xFC38, 0x003F);
         }
@@ -7122,7 +7136,7 @@ rtl8168_hw_ephy_config(struct net_device *dev)
                                        (BIT_13 | BIT_12 | BIT_10 | BIT_9 | 
BIT_8 | BIT_7 | BIT_6 | BIT_4),
                                        (BIT_5 | BIT_11)
                                      );
-                ClearPCIePhyBit(tp, 0x1E, BIT_0);
+                SetPCIePhyBit(tp, 0x1E, BIT_0);
                 ClearPCIePhyBit(tp, 0x19, BIT_15);
 
                 ClearPCIePhyBit(tp, 0x19, (BIT_5 | BIT_0));
@@ -22105,7 +22119,7 @@ rtl8168_init_board(struct pci_dev *pdev,
         tp->msg_enable = netif_msg_init(debug.msg_enable, R8168_MSG_DEFAULT);
 
 #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
-        if (!aspm)
+        if (!aspm || tp->mcfg == CFG_METHOD_9)
                 pci_disable_link_state(pdev, PCIE_LINK_STATE_L0S | 
PCIE_LINK_STATE_L1 |
                                        PCIE_LINK_STATE_CLKPM);
 #endif
@@ -22575,6 +22589,7 @@ rtl8168_init_one(struct pci_dev *pdev,
 #ifdef  CONFIG_R8168_NAPI
                 RTL_NAPI_DEL(tp);
 #endif
+                rtl8168_disable_msi(pdev, tp);
                 rtl8168_release_board(pdev, dev, ioaddr);
                 return rc;
         }
@@ -22794,10 +22809,10 @@ rtl8168_dsm(struct net_device *dev, int dev_state)
         }
 
 }
+
 static void
 set_offset70F(struct rtl8168_private *tp, u8 setting)
 {
-
         u32 csi_tmp;
         u32 temp = (u32)setting;
         temp = temp << 24;
@@ -22824,6 +22839,19 @@ set_offset79(struct rtl8168_private *tp, u8 setting)
 }
 
 static void
+set_offset711(struct rtl8168_private *tp, u8 setting)
+{
+        u32 csi_tmp;
+        u32 temp = (u32)setting;
+       temp &= 0x0f;
+        temp = temp << 12;
+        /*set PCI configuration space offset 0x711 to setting*/
+
+        csi_tmp = rtl8168_csi_read(tp, 0x710) & 0xffff0fff;
+        rtl8168_csi_write(tp, 0x710, csi_tmp | temp);
+}
+
+static void
 rtl8168_hw_set_rx_packet_filter(struct net_device *dev)
 {
         struct rtl8168_private *tp = netdev_priv(dev);
@@ -23433,6 +23461,8 @@ rtl8168_hw_config(struct net_device *dev)
                    tp->mcfg == CFG_METHOD_30) {
                 set_offset70F(tp, 0x17);
                 set_offset79(tp, 0x50);
+                if (tp->mcfg == CFG_METHOD_21 || tp->mcfg == CFG_METHOD_22)
+                        set_offset711(tp, 0x04);
 
                 rtl8168_eri_write(ioaddr, 0xC8, 4, 0x00080002, ERIAR_ExGMAC);
                 rtl8168_eri_write(ioaddr, 0xCC, 1, 0x38, ERIAR_ExGMAC);
@@ -23742,6 +23772,13 @@ rtl8168_hw_config(struct net_device *dev)
         rtl8168_hw_clear_timer_int(dev);
 
         switch (tp->mcfg) {
+        case CFG_METHOD_29:
+        case CFG_METHOD_30:
+                mac_ocp_write(tp, 0xE098, 0x0AA2);
+                break;
+        }
+
+        switch (tp->mcfg) {
         case CFG_METHOD_21:
         case CFG_METHOD_22:
         case CFG_METHOD_23:
-- 
SY,
Konstantin Demin

Reply via email to