|
@@ -332,6 +332,7 @@ static DEFINE_PCI_DEVICE_TABLE(tg3_pci_tbl) = {
|
|
|
{PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5719)},
|
|
|
{PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5720)},
|
|
|
{PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57762)},
|
|
|
+ {PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_57766)},
|
|
|
{PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5762)},
|
|
|
{PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5725)},
|
|
|
{PCI_DEVICE(PCI_VENDOR_ID_BROADCOM, TG3PCI_DEVICE_TIGON3_5727)},
|
|
@@ -9179,7 +9180,14 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
|
|
|
}
|
|
|
|
|
|
if (GET_CHIP_REV(tp->pci_chip_rev_id) != CHIPREV_57765_AX) {
|
|
|
- u32 grc_mode = tr32(GRC_MODE);
|
|
|
+ u32 grc_mode;
|
|
|
+
|
|
|
+ /* Fix transmit hangs */
|
|
|
+ val = tr32(TG3_CPMU_PADRNG_CTL);
|
|
|
+ val |= TG3_CPMU_PADRNG_CTL_RDIV2;
|
|
|
+ tw32(TG3_CPMU_PADRNG_CTL, val);
|
|
|
+
|
|
|
+ grc_mode = tr32(GRC_MODE);
|
|
|
|
|
|
/* Access the lower 1K of DL PCIE block registers. */
|
|
|
val = grc_mode & ~GRC_MODE_PCIE_PORT_MASK;
|
|
@@ -9492,6 +9500,14 @@ static int tg3_reset_hw(struct tg3 *tp, int reset_phy)
|
|
|
if (tg3_flag(tp, PCI_EXPRESS))
|
|
|
rdmac_mode |= RDMAC_MODE_FIFO_LONG_BURST;
|
|
|
|
|
|
+ if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_57766) {
|
|
|
+ tp->dma_limit = 0;
|
|
|
+ if (tp->dev->mtu <= ETH_DATA_LEN) {
|
|
|
+ rdmac_mode |= RDMAC_MODE_JMB_2K_MMRR;
|
|
|
+ tp->dma_limit = TG3_TX_BD_DMA_MAX_2K;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
if (tg3_flag(tp, HW_TSO_1) ||
|
|
|
tg3_flag(tp, HW_TSO_2) ||
|
|
|
tg3_flag(tp, HW_TSO_3))
|