Commit Graph

1165 Commits

Author SHA1 Message Date
bouyer
4fd8325ec6 Resurect the old register read/write test for non-ATA/ATAPI drives, to avoid
false matches on controllers which properly respond to a WDCC_RECAL command.
Should close PR port-i386/7702 (the author tested this patch, and said it
solves his problem).
1999-06-23 19:00:17 +00:00
abs
b02dbae17e In xxx_mediachange(), if there is no callback to the front-end, just
return 0 instead of EINVAL.  In this case, there will only be one media
type, and the upper-level if_media code will ensure that the user is
setting to that type.
This matches changes Jason made a while back to sys/dev/ic/lance.c
1999-06-23 04:17:10 +00:00
thorpej
b75d5b1fe6 Fix tyop. 1999-06-20 16:44:49 +00:00
thorpej
206460244e Bus-independent back-end driver for Intel i82557 fast Ethernet chips. 1999-06-20 16:33:28 +00:00
thorpej
041cfb14aa Fix that ANNOYING transmit timeout bug, caused by an unfortunate interaction
between a bug in the receive path (buffer length used instead of actual
received frame length) and the ARP code not correctly setting the length
of the reused mbuf, which all told caused the transmit logic in the chip
to wedge.

Also, make sure to count received packets.

Found and fixed by Zdenek Salvet <salvet@ics.muni.cz>, PR #7809.
1999-06-18 17:44:06 +00:00
thorpej
12347b2657 Make uvm_vslock() return the error code from uvm_fault_wire(). All places
which use uvm_vslock() should now test the return value.  If it's not
KERN_SUCCESS, wiring the pages failed, so the operation which is using
uvm_vslock() should error out.

XXX We currently just EFAULT a failed uvm_vslock().  We may want to do
more about translating error codes in the future.
1999-06-17 15:47:22 +00:00
dante
d0fb45fdf3 Clean up some stuff
Remove chip version check
Now compile again on 68k based systems
1999-06-12 12:09:01 +00:00
dante
162dba620b Add support for ISA, EISA and ISApnp cards
Fixed a bus reset bug which shows on arm32
1999-06-06 17:33:18 +00:00
mrg
67cbdf5623 split sbus audiocs code up so we can share it with the ebus. XXX ebus DMA is probably different. 1999-06-05 14:29:10 +00:00
pk
9db217428b Cast size_t to long for printf purposes. 1999-06-05 08:35:45 +00:00
bad
4df5ccb1f6 Now that the ARP code doesn't assume that m_pktdat[0] is the start of the
packet(!) we can enable the code that aligns the struct token_header at the
start of the mbuf.
1999-05-29 22:44:11 +00:00
thorpej
88214f79d2 Pass the appropriate access type for uvm_vslock() based on the FP operation:
fpread == VM_PROT_READ|VM_PROT_WRITE, fpwrite == VM_PROT_READ.
1999-05-26 01:09:02 +00:00
augustss
eca0bbe20e Update doc URL. 1999-05-23 16:07:04 +00:00
pk
6f9ad5b61d Since we're now prepending the ethernet header to mbuf on incoming
packets, make sure to align the data after the ethernet header.
1999-05-21 13:08:50 +00:00
thorpej
f98d358a1f Rework layer 2 protocol input routines. Instead of calling e.g. ether_input()
directly, call the function pointer (*if_input)(ifp, m).  The input routine
expects the packet header to be at the head of the packet, and will adjust
as necessary.  Privatize the layer 2 input and output routines, allowing
*_ifattach() to set them up as appropriate.
1999-05-18 23:52:51 +00:00
drochner
0c3738a17b The last change made the driver go into an interrupt loop after a while.
Obviously, the TX_DEFERRALS counter must be read.
1999-05-14 15:54:16 +00:00
mjacob
61bf929d14 Do a fairly large internal restructuring to accomodate dual-bus host adapters
(e.g., the 1240). Include the new 1080/1240 NVRAM layout reading code. Some
moderately significant mailbox changes were necessary also to accomodate a
second channel.
1999-05-12 18:59:23 +00:00
mjacob
7f137a35ff add a few missing mbox commands 1999-05-12 16:45:58 +00:00
thorpej
9c5ccdf883 Don't count deferrals as output errors. It's only a (single) output error
if an excessive number of deferrals causes the transmission to abort.
1999-05-12 15:33:29 +00:00
thorpej
1a1efc6b68 In lance_mediachange(), if there is no callback to the front-end, just
return 0 instead of EINVAL.  In this case, there will only be one media
type, and the upper-level if_media code will ensure that the user is setting
to that type.

In other words, don't require the front-end to provide the no-op.
1999-04-30 18:15:04 +00:00
bad
8fb6c6124b From Onno van der Linden:
Reorganise the driver some what.
Rename tr_reset() to the more appropriate tr_stop().
Create a common tropic reset routine and use it in the frontends.
Move the code in tr_config() which is only used in the card attachment
routines into a new tr_attach() function.
Take adapter off the ring through tr_shutdown() in a shutdown hook.
This simplifies the bus-specific frontend.
1999-04-29 15:47:02 +00:00
jonathan
5847397a4d Add EEPROM_SSI EEPROM field (hardware revision-level info). 1999-04-28 22:47:44 +00:00
dean
188c3f6ae5 Fix for PR kern/7483: ex driver gets bogus MAC address with 3c905B 1999-04-28 17:34:01 +00:00
thorpej
82f0525910 Make the 3Com Etherlink XL driver work on big-endian systems. From
Izumi Tsutsui, PR #7279.
1999-04-26 23:28:31 +00:00
pk
c3f1aa0d3e Don't send any data upstream if we're not open yet. 1999-04-22 20:37:37 +00:00
pk
d93e27676e Remove splbio()/splserial(), which should not try to protect bus_dma*(9)
internals.
1999-04-20 20:21:04 +00:00
jonathan
055b827e11 Calling DELAY() during polling for command completion of the normal
per-packet discard of every received packet increases latency and
decrease throughput.  INstead, Spin on S_COMMAND_IN_PROGESS for enough
iterations as the expected time to completion.  Only do DELAY()/poll
loops (as suggested by Jason Thorpe) if spinning fails.
Take PCI as fastest case and compute worst-case estimate.

Shorten DELAY() in S_COMMAND_COMPLETE polling-loop up 10, loop-count
down.  to speed up epreset() completion (m/c filter change, ifup/ipdown, etc).
1999-04-20 04:40:24 +00:00
jonathan
07c7535688 * Make doubly sure that the ep shutdownhooks are run at splnet() or above.
* Clear the `enabled' bit in the softc so late hardware interrupts
  (e.g., just after the full reset) done as part of shutdown) are dropped.
* Eliminate loops that  poll forever on S_COMMAND_IN_PROGRESS to complete.
  Add inline function with bounded loopcount plus small delay, to avoid
  bugs in EISA hardware which never sets S_COMMAND_IN_PROGRESS.
  Use for both TX_RESET/RX_RESET/GLOBAL_RESET cmds, and polling for
  discard-Rx completion
1999-04-19 23:26:48 +00:00
ross
4b0326d939 Get rid of delay() in com_common_putc() because the Shark delay() is borked
and can't be called until after the timers are setup. (It should not use
a timer, or it should have a fallback algorithm.)
1999-04-19 19:27:31 +00:00
thorpej
552465011e Revert revision 1.159. The correct answer was not to re-break the
serial console support, but rather to fix the Shark delay().
1999-04-18 22:02:47 +00:00
pk
cd6eaa20b1 Print register contents before we modify it. 1999-04-16 13:35:41 +00:00
mjl
6224c1beda Correct wrong board IDs (used ID definition from FreeBSD) 1999-04-15 23:51:44 +00:00
jonathan
0028097812 Fix ex_read_eeprom() for 3c57x. 1999-04-13 23:07:25 +00:00
jonathan
2bf9a70e67 Endian-ness bugfix for elink3 on big-endian hosts.
Big-endian CPUs should use bus_space_{read,write}_multi_stream methods
  to PIO packet data to NIC in 16-bit or 32-bit chunks.
  Make it so.
  Since we don't have stream methods on all ports yet (esp. i386), use
  the bus_space_{read,write}_multi methods if the compile-time
  stream-method feature-test   macro is not set.
Originally from tsubai@netbsd.org, via HAYAKAWA koichi's cardbus patches.
1999-04-13 20:23:52 +00:00
pk
b13e5d1469 Quote "AS IS" as in the majority of Carnegy Mellon notices. 1999-04-12 20:38:17 +00:00
bouyer
503de51fdd Fix probe code for IDE devices:
- Don't rely on ATA signature: some ide controllers seems to not transmit it
  properly (SIMIDE on arm32 machines). Instead, when we guess a drive is here
  after reset, just mark it as ATA and OLD is it's not ATAPI.
- at attach time, use IDENTIFY to eliminate ghost from the probe. If the
  drive had the old flag and IDENTIFY failed, issue a WDCC_RECAL command
  to detect a pre-ATA disk. If IDENTIFY succeded, remove the OLD flag,
  it's obviously not a pre-ATA disk.
- add a new controller flag, WDC_CAPABILITY_PREATA, used to shorcut parts
  of the probe (not necessary, but makes the probe/attach faster). This is
  only set by the ISA front-end, all other controllers supported can't have
  pre-ATA drives attached.
The mechanism used are more or less the same as before, they have just been
reordered. Should solve port-arm32/7324 (waiting for feedback).
1999-04-11 20:50:28 +00:00
drochner
2a614bc836 add support for 80x40 screens 1999-04-10 14:02:11 +00:00
dbj
4397d4c1fd convert tabs to spaces in ascii art circuit diagram 1999-04-07 10:21:31 +00:00
pk
c40eb1cd97 Fix a pasto in copyright text which has been procreating like rabbits.. 1999-04-06 20:09:18 +00:00
mjacob
2b311c7218 roll internal revs 1999-04-04 02:29:51 +00:00
mjacob
a529f8f3b4 firmware revision now a triple 1999-04-04 02:29:34 +00:00
mjacob
cd0cf2b5ca Make firmware revision a triple. Clean up some FC init stuff for
board versions with no BIOS. Separate mailbox interrupts from
IOCB interrupts. Read OUTMAILBOX5 while RISC_INT is active- not
after you clear it (potential race condition). Clear out older broken
BIG_ENDIAN goop. Don't negotiate narrow/async for LVD busses at startup
if already in LVD mode. Note usage of presumptive 1040C revision. For
all the LIP, PDB Changed, Loop UP/DOWN async events, mark fw state
as unknown as well as marking the need to do a getpdb on targets- after
a LIP for certain the f/w has to do PRLI/PLOGI for all targets again
and marking f/w state as unknown gives us a fighting chance to (start
to) hold up for that to complete.
1999-04-04 02:28:53 +00:00
mjacob
0fc69df287 Remove incorrect BIG_ENDIAN defines and substitute in the SBus only macros
that will SBusify an isp header or the lun/target portions of a request IOCB-
and have these only valid iff __sparc__ (no non-sparc SBus machine that *I*
know about).
1999-04-04 01:32:44 +00:00
mjacob
b7406cc163 Change f/w revision to major,minor,micro version. Add in ISP1040C definition. 1999-04-04 01:27:06 +00:00
scw
9737cf763a Fix a problem where no Tx Empty interrupt ever happened if CTS
was deasserted and we wanted to change parameters to -crtscts
This effectively stalled the transmitter since with TS_BUSY set
we only change parameters during the Tx interrupt handler.
1999-04-03 13:13:19 +00:00
bouyer
b43b844f6f - change the interrupt routines to take a 3rd arguments, set to 1 if we
are called from the interrupt or timeout handler, 0 otherwise.
- use this to know if we can busy-wait for wait_for_unbusy or wait_for_ready
This fixes a bug where CDs withot the DRQ_INTR capability would not busy-wait
for the CMDOUT phase.
While I'm there change 2 delay() to DELAY() for consistency, and
garbage-collect some old code from wdcintr() which has been ifdef'd out
for some time now.
1999-04-01 21:46:28 +00:00
drochner
00a4d0521a use defopted WSCONS_SUPPORT_PCVTFONTS, refuse to load pcvt fonts if this
option is not given, suppress complaints in non-debug case
1999-04-01 11:52:42 +00:00
mrg
833fb0ac7f back date this file to version 1.155 which works on the shark. 1999-03-31 12:44:04 +00:00
bouyer
bb47e5aecf Increase some DELAY(), this seems required on some hardware (I'm not sure if
the hardware is at fault, or if DELAY(1) waits for less than 1us).
Improve debuging messages for wdcreset_wait().
1999-03-31 11:18:31 +00:00
perry
d5a261206d Replace the #ifdef'ed variable DELAYs with a pair of non-ifdefed
DELAY(1)'s. This should fix interrupt driven lpt driver hang and
reboot problems for the group of users who have experienced them, and
shouldn't hurt anyone else.
1999-03-29 21:50:06 +00:00