diff options
author | yongari <yongari@FreeBSD.org> | 2010-01-03 21:49:24 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2010-01-03 21:49:24 +0000 |
commit | 38503175d83662b719e6a3b49ef7ba74cf4551cb (patch) | |
tree | d1bd20d12f7d109e5a5643ec9130b4eaa48ff27b | |
parent | 4c340a7f87fcf9b5f71b96cb1de8dcc3dc3e5254 (diff) | |
download | FreeBSD-src-38503175d83662b719e6a3b49ef7ba74cf4551cb.zip FreeBSD-src-38503175d83662b719e6a3b49ef7ba74cf4551cb.tar.gz |
Fix regression introduced in r198318. BCM5754/BCM5754M uses the
same ASIC ID of BCM5758 such that r198318 incorecctly enabled TSO
on BCM5754.BCM5754M controllers. BCM5754/BCM5754M needs a special
firmware to enable TSO and bge(4) does not support firmware based
TSO.
Reported by: ed
Tested by: ed
-rw-r--r-- | sys/dev/bge/if_bge.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c index 2a19d20..db78cd4 100644 --- a/sys/dev/bge/if_bge.c +++ b/sys/dev/bge/if_bge.c @@ -2642,8 +2642,15 @@ bge_attach(device_t dev) * the TSO to the controllers that are not affected TSO issues * (e.g. 5755 or higher). */ - if (BGE_IS_5755_PLUS(sc)) - sc->bge_flags |= BGE_FLAG_TSO; + if (BGE_IS_5755_PLUS(sc)) { + /* + * BCM5754 and BCM5787 shares the same ASIC id so + * explicit device id check is required. + */ + if (pci_get_device(dev) != BCOM_DEVICEID_BCM5754 && + pci_get_device(dev) != BCOM_DEVICEID_BCM5754M) + sc->bge_flags |= BGE_FLAG_TSO; + } /* * Check if this is a PCI-X or PCI Express device. |