tg3: Add 57766 device support.
The patch also adds a couple of fixes - For the 57766 and non Ax versions of 57765, bootcode needs to setup the PCIE Fast Training Sequence (FTS) value to prevent transmit hangs. Unfortunately, it does not have enough room in the selfboot case (i.e. devices with no NVRAM). The driver needs to implement this. - For performance reasons, the 2k DMA engine mode on the 57766 should be enabled and dma size limited to 2k for standard sized packets. Signed-off-by: Nithin Nayak Sujir <nsujir@broadcom.com> Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
9754e29349
commit
d3f677afb8
@@ -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))
|
||||
|
Reference in New Issue
Block a user