summaryrefslogtreecommitdiff
path: root/sys/dev/pci/if_bge.c
AgeCommit message (Collapse)Author
2005-08-30- add BCM5780 PCI idsBrad Smith
- recognize BCM5704 B0 - recognize BCM5780 which is supposedly part of the BCM5714 family according to the Linux driver but there is a BCM5714 core too. huh? ok deraadt@
2005-08-27recognize 5752 A1 ASIC rev.Brad Smith
Noticed by niklas@ on some newer hardware ok deraadt@
2005-08-09do not set PCI_COMMAND_MASTER_ENABLE explicitly as it's already set in ↵Michael Shalayeff
pcisubmatch(); kettenis@ testing; brad@ ok
2005-07-25don't bother with printf in *_jalloc()Brad Smith
2005-07-20remove some unused code.Brad Smith
2005-07-16remove braces here tooBrad Smith
2005-07-14More bge ids, found in Broadcom's Linux driver. ok brad@Jonathan Gray
2005-07-09remove braces hereBrad Smith
2005-07-07check ETHERMIN and stop calling em_init_locked() from SIOCSIFMTU ioctl.Brad Smith
2005-07-06allow bge(4) to receive Jumbos by default.Brad Smith
ok krw@
2005-07-02add support for PCI-E 5752 core and recognize a few additionalBrad Smith
5750 revisions. Info from the Broadcom Linux driver
2005-07-01revert rev 1.59Brad Smith
2005-06-29volatile hereBrad Smith
2005-06-29rev 1.25Brad Smith
* Add workaround for revision Bx bcm5700: chip bugs in decoding of PCI register writes may leave the hardware in (partial) powersave state, such that writes to "indirect" registers do not work. Explicitly force chip into D0 state at attach time. From NetBSD
2005-06-29- sync bus_dma ops and add bus_dmamap_sync()'sBrad Smith
and rev 1.25 * bcm5700 chips rev Bx wedge up if given DMA descriptors of eight bytes or less. Once hit, only reovery is a watchdog timeout/reset. If the offending packet is retransmitted, the chip will wedge again... Check for teeny fragments in a Tx request, and either fold the teeny chunk residue into an adjacent mbuf, or m_dup the entire buffer. From NetBSD Tested on alpha/amd64/macppc by krw@ and ok krw@
2005-06-26remove unused code in bge_intr()Brad Smith
2005-06-26- clear IFF_RUNNING & IFF_OACTIVE in dc_stop() before de-allocating resources.Brad Smith
- remove unused FreeBSD specific code
2005-06-17- fix description for BCM5750 A0, A1 -> A0Brad Smith
- recognize BCM5750 B1
2005-06-15Disable hardware vlan decapsulation.Camiel Dobbelaar
ok brad henning jason
2005-06-07put the whole thing in this time.Brad Smith
add support for the BCM5714.
2005-06-07undo busted diff. why AGAIN brad????Theo de Raadt
2005-06-07add support for the BCM5714.Brad Smith
From FreeBSD
2005-05-21backout part of rev 1.35, which breaks some 5704-based fibre interfaces onBrad Smith
some IBM/Intel blade servers. From FreeBSD
2005-04-25csum -> csum_flagsBrad Smith
ok krw@ canacar@
2005-04-04Fix interrupt sharing on bge, by checking the same way the linuxBob Beck
driver does. ok deraadt@, testing and ok krw@, markus@
2005-04-010 -> prodidx. breakage for 5700 Bx workaround introduced in rev 1.21Brad Smith
Noticed/tested by aaron@
2005-03-27Fix possible double alignment, and a memory leak in error path. MostlyKenneth R Westerback
from FreeBSD. ok brad@.
2005-03-07print ASIC ID in hex too incase only the "superclass" of the ASIC isBrad Smith
recognized.
2005-03-07Enable basic big-endian operation. i.e. now works on some big-endianKenneth R Westerback
machines (macppc) but not others (sparc64). No-op for little-endian architectures. Diff from NetBSD with tweaks by drahn@. ok brad@
2005-03-04Put the dmamap for a transmission at the correct array index. Fixes aKenneth R Westerback
crash on sparc64. From FreeBSD.
2005-01-17add BGE_QUIRK_FEWER_MBUFS to 5704 fallback case.Brad Smith
2005-01-01Add BGE_QUIRK_ONLY_PHY_1 to BCM5701_B2. From NetBSD PR #23778, asKenneth R Westerback
pointed out by Theo 2003/12/13. ok brad@.
2004-12-30Don't zero error value, return it.Kenneth R Westerback
ok brad@.
2004-12-26add BGE_QUIRK_PCIX_DMA_ALIGN_BUG for BCM5701 A0Brad Smith
2004-12-24brad should compile before commitingTheo de Raadt
2004-12-24init Jumbo RX ring by default.Brad Smith
ok krw@
2004-12-17rev 1.62Brad Smith
Possibloe fix for some bge chip revisions taking a long time to reset (e.g., polling for a half-second or more at splnet(), blocking most interrupts, durin an ifconfig down/ifconfig up). Appears to help for a 5704C rev A3, which is the only chip I've ever seen that had even a mild version of the reported problem. rev 1.61 Check for BGE_PCI_PCISTATE register failing to revert on reset. if it occurs, print a message indicating why the reset took so long. From NetBSD
2004-12-16rev 1.71Brad Smith
* Set buffer management high water marks for MTU > 1514. * Set BGE_MAX_RX_FRAME_LOWAT (from Linux driver). rev 1.25 * Update onchip buffer tunables to recommended values from Linux drivers. * Increase Tx interrupt-coalescing thresholds, to reduce Tx-done interrupts. From NetBSD ok krw@
2004-12-12use quirk flags where appropriate.Brad Smith
Based on NetBSD driver ok krw@
2004-12-12add quirk lookup table, isn't used for anything at the momentBrad Smith
except printing the ASIC model and rev in dmesg. will be used instead of checking ASIC revs all over the place. From NetBSD
2004-12-11rev 1.11Brad Smith
When stopping the various functional blocks of the chip, clear the bit and then read it back in a loop (with appropriate delays) waiting for it to read back clear. This fixes a problem where the bus would hang when bringing down the interface or changing interface flags on a system with a sufficiently fast CPU (e.g. 2GHz P4 Xeon). From NetBSD ok krw@
2004-12-10rev 1.5Brad Smith
Put some delay in the loops that poll for MII transaction completion. Without this, reading the PHY can hang the bus on a sufficiently fast CPU. From NetBSD
2004-12-101) Don't manually fiddle with dma address of jumbo buffer after m_adj().Kenneth R Westerback
2) Create tx_map's large enough to map jumbo buffers. 3) Set length of jumbo frame to BGE_JLEN rather than ETHER_MAX_DIX_LEN. 4) Activate jumbo rx ring when MTU changed. (From FreeBSD). Makes jumbo frames work on bge. ok brad@.
2004-12-10more Broadcom ids taken from the Linux driver.Brad Smith
2004-11-24use ETHER_MAX_LENBrad Smith
2004-11-16allow for the reception of VLAN sized frames.Brad Smith
From FreeBSD ok deraadt@
2004-11-11rev 1.71Brad Smith
Add some special case code to fix a problem with the BCM5704 in TBI (fiber) mode. The 5704 apparently has some s00p3r s33kr1t registers for setting the advertisement of pause frame ability (i.e flow control) when in autoneg mode. If we don't set these registers correctly, we may not be able to negotiate a proper link with some switches. (Symptom is that the NIC reports the link as up (PCS synched) but no traffic can be exchanged.) rev 1.73 Commit patch to supress spurious link change events. Apparently, with copper NICs, a link change event is posted whenever MII autopolling is toggled off and on, which happens whenever someone calls bge_miibus_readreg() or bge_miibus_writereg() to access the PHY registers. This means anytime someone called the SIOCGIFMEDIA ioctl on a bge interface, the link would reset. Even a simple "ifconfig bge0" would do it, though other apps like dhclient or the PPPoE daemon could trigger it as well. An obvious symptom of this problem is lots of "bgeX: gigabit link up" messages appearing on the console for no apparent reason. Through experimentation, I determined that when a real link change event occurs, the BGE_MIMODE_AUTOPOLL in the BGE_MI_MODE register is always set, so now if we have a copper NIC and an link change event occurs and the BGE_MIMODE_AUTOPOLL bit is clear, we ignore the event. Note that this does not apply to the original BCM5700 chip since we use a different method for sensing link changes with that chip (the status block method was broken), nor to fiber optic NICs since they don't use the GMII PHY access registers. From FreeBSD ok deraadt@
2004-10-31rev 1.68Brad Smith
Add support for BCM5705K rev 1.74 Add support for the BCM5750/5751. Unfortunately the documentation I have from Broadcom does not give much information on these devices, so the Broadcom Linux driver was used for clues to what these chips support. It turns out they are similar to the 5705 with the 5751 being the PCI-Express version and needing special work-arounds and settings. From FreeBSD
2004-09-28Use ETHER_MAX_DIX_LEN/ETHER_MIN_LENBrad Smith
2004-09-23don't need to set ifp->if_mtu or ifp->if_output in each driver,Brad Smith
{ether,atm,fddi}_ifattach already does this. ok mcbride@ markus@ henning@