[BNX2]: Disable jumbo rx paging on 5709 Ax.
authorMichael Chan <mchan@broadcom.com>
Tue, 22 Jan 2008 01:06:09 +0000 (17:06 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 28 Jan 2008 23:10:13 +0000 (15:10 -0800)
The chip has problem running in this mode and needs to be disabled.

Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bnx2.c
drivers/net/bnx2.h

index 3bb69d538ef095cc63fefef948ebd823d6b9fa83..44734613ab37c1f777c0a5398e7fb9173ed0b66d 100644 (file)
@@ -4669,7 +4669,7 @@ bnx2_set_rx_ring_size(struct bnx2 *bp, u32 size)
        bp->rx_pg_ring_size = 0;
        bp->rx_max_pg_ring = 0;
        bp->rx_max_pg_ring_idx = 0;
-       if (rx_space > PAGE_SIZE) {
+       if ((rx_space > PAGE_SIZE) && !(bp->flags & JUMBO_BROKEN_FLAG)) {
                int pages = PAGE_ALIGN(bp->dev->mtu - 40) >> PAGE_SHIFT;
 
                jumbo_size = size * pages;
@@ -7031,6 +7031,8 @@ bnx2_init_board(struct pci_dev *pdev, struct net_device *dev)
                        goto err_out_unmap;
                }
                bp->flags |= PCIE_FLAG;
+               if (CHIP_REV(bp) == CHIP_REV_Ax)
+                       bp->flags |= JUMBO_BROKEN_FLAG;
        } else {
                bp->pcix_cap = pci_find_capability(pdev, PCI_CAP_ID_PCIX);
                if (bp->pcix_cap == 0) {
index 09bd665a3b9cf971c265097777aa467fc3c858fe..c1ab30b0f87a20b8d2a38a5dd95c15a39bb11266 100644 (file)
@@ -6582,6 +6582,7 @@ struct bnx2 {
 #define PCIE_FLAG                      0x00000200
 #define USING_MSIX_FLAG                        0x00000400
 #define USING_MSI_OR_MSIX_FLAG         (USING_MSI_FLAG | USING_MSIX_FLAG)
+#define JUMBO_BROKEN_FLAG              0x00000800
 
        /* Put tx producer and consumer fields in separate cache lines. */