Commit Graph

22 Commits

Author SHA1 Message Date
bjh21 03e45ae8c7 In ea_writembuf(), reset the DMA pointer for each mbuf we copy, since
odd-sized mbufs will confuse things.  This makes transmission of odd-sized
packets work.
2001-04-06 00:02:49 +00:00
bjh21 d109dd795a Add a bit of voodoo code from the old "eb" driver that seems to prevent the
80C04 returning garbage when we read from it.  This driver can now handle flood
pings without dropping packets.
2001-04-05 22:55:46 +00:00
bjh21 0c5b5be69f Tweak product ID printing in light of the 80C04A data sheet.
Split out Rx and Tx interrupt handlers into their own functions for clarity.
2001-04-02 22:25:17 +00:00
bjh21 f6ec9b4ab2 On an 80C04, try not to start reads at addresses of the form xx,ea, xx,ee, or
xx,f0.  This appears to heavily alleviate, but not to eliminate entirely,
the problems I've been seeing with garbage being read from the rx buffer.
I suspect the real solution lies elsewhere.
2001-03-29 20:49:44 +00:00
bjh21 2f6fd6b040 Print a warning message when the DMA FIFO fails to fill or empty before we
time out.
2001-03-29 17:46:39 +00:00
bjh21 758fa94327 Print the address within the Rx buffer whenever anything goes wrong: it seems
to be significant.
2001-03-27 22:17:51 +00:00
bjh21 4beebf7d5d Clean up debugging printfs a little. 2001-03-27 21:43:13 +00:00
bjh21 8fc709ee67 Add some extra diagnostics:
* Use the timer to timoe out transmit operations.
 * Spot when the "next packet" pointer falls outside the recieve buffer and
   reset the interface.
 * Don't reset the interface when we get a bad packet (unless there's
   something else wrong as well).
2001-03-27 20:26:45 +00:00
bjh21 7dae264309 Comment and #ifdef cleanup. 2001-03-27 18:03:04 +00:00
bjh21 39c267bb01 Tweak handling of multicast on 80C04. I think we need to set the match mode
to "multicast" for it to work, but I could be wrong.

Also make ALLMULTI work on 80C04, but this is untested.
2001-03-25 01:06:59 +00:00
bjh21 304809f5f1 Re-arrange board memory to suit the current (crude) transmit code.
Add ea_writembuf() from mark's code, and re-work eatxpacket() to use it.
2001-03-24 23:31:06 +00:00
bjh21 b94b953e92 Enormous pile of changes from mark's (uncommitted) work on this driver.
About the only bit of his code not here is the transmit routines, which I'll
merge in separately.

Also a few bug-fixes, so (for instance) multicast on an 8005 doesn't
immediately fall back to IFF_ALLMULTI.
2001-03-24 20:38:41 +00:00
bjh21 b83b8ac01f Change all the register definitions to match the names using in mark's
improved version of the driver.
2001-03-24 13:40:41 +00:00
bjh21 18db220fba Handle IFF_ALLMULTI correctly. We can now cope with multicast, but for
some reason DAD fails when starting IPv6.
2001-03-24 00:16:41 +00:00
bjh21 a48c9194bb Print the newline after the memory test. This makes it clear that the delay's
related to this driver rather than the next device to be attached.
2000-12-23 16:37:20 +00:00
thorpej 6b16911a43 ALTQ'ify. 2000-12-14 06:27:23 +00:00
thorpej b84f740be0 Move bpfattach()/bpfdetach() calls into ether_ifattach()/ether_ifdetach(). 2000-11-15 01:02:11 +00:00
bjh21 930c4cf062 First attempt at multicast stuff. I suspect it doesn't work.
Use ether_ioctl -- saves 300 bytes of text.
2000-11-03 00:25:36 +00:00
thorpej 7ca3fb9ef0 Move the check for "promisc + unicast + not for us" into ether_input(),
and change Ethernet drivers to always pass all received frames to
ether_input() (with a few exceptions, which are documented in the
code).
2000-10-01 23:32:39 +00:00
bjh21 a48f581877 Substantial overhaul, factoring out of common code, removal of redundancy
and general cleanup.  Still not a beautiful driver, but one I'd be willing to
introduce to my parents now.
2000-09-23 15:13:02 +00:00
bjh21 f3ef35c447 Add rudimentary 80C04 support (basically saying "Oh look, an 80C04!").
Move printing the initial ":" into the board driver, like i82586.c does.
Don't bother printing the amount of RAM, as it's always 64 KB.
2000-09-21 22:20:38 +00:00
bjh21 40aba7cd4d Split the arm26 Ether3 (ea) driver into an MI driver for the SEEQ 8005 chip,
and a front-end driver for the Ether3.  Only semantic change is to remove
ea_claimirq() and ea_releaseirq() on the grounds that the seem too spurious
to warrant a callback to the front-end.
2000-09-18 20:51:14 +00:00