if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5785) {
                if (tp->tg3_flags2 & TG3_FLG2_PCI_EXPRESS)
-                       pcie_set_readrq(tp->pdev, 4096);
+                       pcie_set_readrq(tp->pdev, tp->pcie_readrq);
                else {
                        pci_write_config_byte(tp->pdev, PCI_CACHE_LINE_SIZE,
                                              tp->pci_cacheline_sz);
                                      tp->pcie_cap + PCI_EXP_DEVCTL,
                                      val16);
 
-               pcie_set_readrq(tp->pdev, 4096);
+               pcie_set_readrq(tp->pdev, tp->pcie_readrq);
 
                /* Clear error status */
                pci_write_config_word(tp->pdev,
 
                tp->tg3_flags2 |= TG3_FLG2_PCI_EXPRESS;
 
-               pcie_set_readrq(tp->pdev, 4096);
+               tp->pcie_readrq = 4096;
+               if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5719) {
+                       u16 word;
+
+                       pci_read_config_word(tp->pdev,
+                                            tp->pcie_cap + PCI_EXP_LNKSTA,
+                                            &word);
+                       switch (word & PCI_EXP_LNKSTA_CLS) {
+                       case PCI_EXP_LNKSTA_CLS_2_5GB:
+                               word &= PCI_EXP_LNKSTA_NLW;
+                               word >>= PCI_EXP_LNKSTA_NLW_SHIFT;
+                               switch (word) {
+                               case 2:
+                                       tp->pcie_readrq = 2048;
+                                       break;
+                               case 4:
+                                       tp->pcie_readrq = 1024;
+                                       break;
+                               }
+                               break;
+
+                       case PCI_EXP_LNKSTA_CLS_5_0GB:
+                               word &= PCI_EXP_LNKSTA_NLW;
+                               word >>= PCI_EXP_LNKSTA_NLW_SHIFT;
+                               switch (word) {
+                               case 1:
+                                       tp->pcie_readrq = 2048;
+                                       break;
+                               case 2:
+                                       tp->pcie_readrq = 1024;
+                                       break;
+                               case 4:
+                                       tp->pcie_readrq = 512;
+                                       break;
+                               }
+                       }
+               }
+
+               pcie_set_readrq(tp->pdev, tp->pcie_readrq);
 
                pci_read_config_word(tp->pdev,
                                     tp->pcie_cap + PCI_EXP_LNKCTL,