aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/bge/if_bge.c
diff options
context:
space:
mode:
authorPyun YongHyeon <yongari@FreeBSD.org>2010-01-03 21:49:24 +0000
committerPyun YongHyeon <yongari@FreeBSD.org>2010-01-03 21:49:24 +0000
commit4f4a16e1523e442aad46920b7086b5941127c3f2 (patch)
treed1bd20d12f7d109e5a5643ec9130b4eaa48ff27b /sys/dev/bge/if_bge.c
parent4c40efa74aa211508b52df231e16cbb3f87d702c (diff)
downloadsrc-4f4a16e1523e442aad46920b7086b5941127c3f2.tar.gz
src-4f4a16e1523e442aad46920b7086b5941127c3f2.zip
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
Notes
Notes: svn path=/head/; revision=201446
Diffstat (limited to 'sys/dev/bge/if_bge.c')
-rw-r--r--sys/dev/bge/if_bge.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/dev/bge/if_bge.c b/sys/dev/bge/if_bge.c
index 2a19d20176fe..db78cd437bdf 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.