summaryrefslogtreecommitdiff
path: root/sys/dev/ic/dc.c
AgeCommit message (Collapse)Author
2005-01-15make sure interface is in RUNNING state before touching the multicast filtersBrad Smith
From NetBSD NetBSD PR 27678 for details ok mcbride@
2005-01-14rev 1.63Brad Smith
Avoid an unnecessary copy of a packet if it is already in a single mbuf. Introduce an additional device flag for those NICs which require the transmit buffers to be aligned to 32-bit boundaries. From FreeBSD
2005-01-08rev 1.125Brad Smith
Don't read the MAC address from a copy of the EEPROM in the softc that has been recorded earlier and overwrite it again later by reading it directly from the EEPROM again. Read the MAC address from the PAR0/PAR1 registers instead, which are autoloaded on reboot. From FreeBSD Thanks to David Snyder <dasnyderx at yahoo dot com> for testing on a AN983 based card which used to come up with a MAC address of ff:ff:ff:ff:ff:ff.
2004-12-17add missing braces.Brad Smith
From FreeBSD
2004-12-02rev 1.126Brad Smith
Ignore CSR13, CSR14, CSR15 'Media Specific Data' registers for 21143 based cards which use SIA mode. This fixes 10mbit mode for ZNYX ZX346Q cards and other 21143 based cards. rev 1.108 Only use a SIA/SYM media info block if no MII block is detected. The submitter of PR 32118 told me that this patch also fixes autoselecting for znyx 4 port cards (10baseT, 100baseTX did work already). From FreeBSD ok deraadt@
2004-11-28rev 1.74Brad Smith
Fix if_timer logic to make sure that there is always a timeout pending if there are packets queued for transmission. From FreeBSD ok deraadt@
2004-11-16if_dc.c rev 1.56Brad Smith
Do not call mii_pollstat() from within device tick routines; the status information is updated by mii_tick(). dcphy.c rev 1.13 Work around an Intel 21143 chip bug. Rev 1.56 of if_dc.c removed calls to mii_pollstat() from the dc_tick() routine. dc_tick() is called regularly to detect link up and link down status, especially when autonegotiating. The expectation was that mii_tick() (which is still called from dc_tick()) would update status information automatically in all cases where it would be sensible to do so. Unfortunately, with authentic 21143 chips this is not the case, and the driver never successfully autonegotiates. This is because (despite what it says in the 21143 manual) the chip always claims that link is not present while the autonegotiation enable bit is set. Autonegotation takes place and succeeds, but the driver tests the link bits before it switches off the autonegotiation enable bit, and success is not recognised. The simplest solution is to call dcphy_status() more often for MII_TICK calls by dropping out of the switch statement instead of exiting when we are autonegotiating and link appears to not be present. When autonegotiation succeeds, dcphy_status() will note the speed and fdx/hdx state and turn off the autonegotiation enable bit. The next call to dcphy_status() will notice that link is present, and the dc driver code will be notified. Macronix chips also use this code, but implement link detection as described in the manual, and hence don't need this patch. However, tests on a Macronix 98715AEC-C show that it does not adversely affect them. From FreeBSD ok deraadt@
2004-10-29rev 1.78Brad Smith
Enable the automatic TX underrun recovery for the ADMtek chips. This solves cvsup update on my laptop which aborts after a while without this patch. rev 1.79 Fix the support for the AN985/983 chips, which do not set the RXSTATE to STOPPED, but to WAIT. This should fix hangs which could only be solved by replugging the cable. From FreeBSD Thanks to C. Bensend <benny at bennyvision dot com> for testing.
2004-10-14rev 1.47Brad Smith
Add a check in the interrupt service routine to return quickly in case there is nothing to do. This happens normally when the card shares the interrupt line with other devices. This code saves a couple of microseconds per interrupt even on a fast CPU. You normally would not care, except under heavy tinygram traffic where you can have some 50-100.000 interrupts per second... rev 1.51 Patch to allow TX underrun handling without issuing a complete chip reset. Just temporarily turn off the transmitter instead. From FreeBSD ok mcbride@ tested by mcbride@, jaredy@, marco@, grange@, <harding at motd dot ca>
2004-10-06typoBrad Smith
2004-10-06Enable round-robin arbitration between transmit and receive unitBrad Smith
in the 21143, instead of giving priority to the receive unit. This gives a 10-15% performance improvement in the forwarding rate under heavy load. From FreeBSD ok mcbride@ nick@ deraadt@
2004-09-28Use ETHER_MIN_LEN/ETHER_MAX_DIX_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@
2004-05-31multicast cleanups:Ryan Thomas McBride
- get rid of hand rolled crc32 logic, use ether_crc32_{le,be} - accept all multicast if a range is encountered
2004-04-15user bus_dmamap_load_mbuf and set rcvif on receiveMichael Shalayeff
2003-10-21typos from Tom Cosgrove;Jason McIntyre
Tom: I did not commit a couple of your changes. i did not include some punctuation fixes (full stops, etc.) mnemorable -> mnemonic: i decided memorable was probably better instrunctions -> instruction: i kept the plural
2003-09-29add more dmamap_sync()s where appropriate modify loops to insure proper ↵Michael Shalayeff
syncing; jason@ testing
2003-09-25no need for a redundant check; from form@ and jason okMichael Shalayeff
2003-08-28fix bzero size; from pechkinMichael Shalayeff
2003-06-16be more sane w/ byte swapping and leave the le archs at the same behaviour ↵Michael Shalayeff
and give be archs a better chance at getting the correct mac address as tested on the mac and hppa where mac has an additional bug w/ the phy bit still remaining and hppa seems fine; jason@ ok
2003-05-20AN983 endian issue; from FreeBSD via PR 3263 with minor style fixes by meHenning Brauer
ok jason@
2003-05-17fix up the media handling for the intel based MACs. Also hack around aJason Wright
bug in the Momenco firmware on the Leopard-V, which now has one port working.
2003-04-29grr... %s, not dc%sJason Wright
2003-04-29- remove last vestige of "old autoconf": dc_unit is dead, long live dv_xnameJason Wright
- remove a bunch of #if 0 stuff (most of which referred to dc_unit, grr) - delay a bzero until necessary
2003-04-29KNFJason Wright
2003-02-25remove redundant check.Ted Unangst
ok henning@
2003-01-31more quietTheo de Raadt
2002-10-21ugly hack to make the 21145 work without manual media setting.Henning Brauer
many many many thanks to nick@, who booted no less then 8 kernels for me today while hacking on that (and this includes going downstairs to the basement and up again 8 times...) ok jason@
2002-10-20add support for intel 21145Henning Brauer
This chip is some strange abnormal 21143 variant. It really only works with 10 MBit/s halfduplex only and autonegotiation is totally broken in hardware. Should also have a HomePNA phy, but we don't support that. for now requires and explicit "media 10BaseT". if anybody has such a chip please mail me. nick@ is the only one who has the hardware and did an incredible amount of testing. Thanks for all the help, Nick! some hints and ok jason@
2002-07-05Remove an unused #define (belongs only in the PCI attachment source file).Aaron Campbell
2002-06-09a step towards consistancy; in general:Todd T. Fries
'struct arpcom foo' -> 'struct arpcom sc_arpcom' ok itojun@
2002-06-09Handle out of memory gracefully. ok jason@Thomas Nordin
2002-04-18add support for Conexant LANfinity RS7112; based on patch from Maurice ↵Jason Wright
Nonnekes <maurice@amaze.nl> based on FreeBSD (only minor surgery necessary)
2002-03-14First round of __P removal in sysTodd C. Miller
2002-02-17drivers may not be noisyTheo de Raadt
2002-02-15Don't cast nonexistent return value from splx to (void). ok art@Thomas Nordin
2001-12-13Fix old alpha bug recently triggered by conversion to busdma.Nathan Binkert
2001-12-08Go ahead and fix the xircom filter setup to work on big endian too ↵Jason Wright
(untested, but it's pretty similiar to the tested 21143 case).
2001-12-08use htole32() on the data going into the setup frame for the ↵Jason Wright
dc_setfilt_21143() case at least. XXX I'm looking at the other filter setups and they appear to need work for BE too.
2001-12-06add bus_dmamap_sync()'s on the descriptors tooJason Wright
(with all this, my Netra X1 is up and running with an NFS root)
2001-12-06a few more bus_dmamap_sync()'s and some borrowed setup frame macros from ↵Jason Wright
NetBSD, and RX works on sparc64.
2001-12-06enough bus_dmamap_sync() and htole()/letoh() to get TX working on sparc64.Jason Wright
ALso, get the MAC address from myetheraddr() instead of trying to use the eeprom on sparc64.
2001-12-06vtophys, R.I.P. (tx now uses bus_dma)Jason Wright
2001-12-06move rx handling over to bus_dma... that just leaves one vtophys() in tx.Jason Wright
2001-12-06move the setup buffer and pad into a bus_dma alloced areaJason Wright
(current score: 2 vtophys calls to go...)
2001-12-06Checkpoint bus_dma work in progress:Jason Wright
- descriptor lists are now bus_dma allocated and manipulated (for those keeping score: 6 vtophys dead, 4 to go)
2001-11-06Replace inclusion of <vm/foo.h> with the correct <uvm/bar.h> when necessary.Miod Vallat
(Look ma, I might have broken the tree)
2001-08-22Support more dc(4) CardBus devices, including the AN985-based Linksys PCMPC200Aaron Campbell
10/100 CardBus Ethernet adapter (thanks to beck@ for the donation).
2001-08-12remove some of the redundant vm includesMichael Shalayeff
2001-08-03Set IFCAP_VLAN_MTU, this driver already allows vlan-size framesChris Cappuccio