if (rc)
                return rc;
 
-       /* Disable ASPM L1 as that cause random device stop working
-        * problems as well as full system hangs for some PCIe devices users.
-        */
-       rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
-       tp->aspm_manageable = !rc;
-
        /* enable device (incl. PCI PM wakeup and hotplug setup) */
        rc = pcim_enable_device(pdev);
        if (rc < 0) {
 
        tp->mac_version = chipset;
 
+       /* Disable ASPM L1 as that cause random device stop working
+        * problems as well as full system hangs for some PCIe devices users.
+        * Chips from RTL8168h partially have issues with L1.2, but seem
+        * to work fine with L1 and L1.1.
+        */
+       if (tp->mac_version >= RTL_GIGA_MAC_VER_45)
+               rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1_2);
+       else
+               rc = pci_disable_link_state(pdev, PCIE_LINK_STATE_L1);
+       tp->aspm_manageable = !rc;
+
        tp->dash_type = rtl_check_dash(tp);
 
        tp->cp_cmd = RTL_R16(tp, CPlusCmd) & CPCMD_MASK;