Commit Graph

2367 Commits

Author SHA1 Message Date
thorpej
18e25d5feb Add a flag to suppress SCC reset at attach time.
From Rafal K. Boni.
2001-05-11 01:40:48 +00:00
fvdl
ba2882488a Despite what the hardware docs say, the global reset command is not
done when the command-in-progress bit has been cleared. The 1ms
time that is mentioned also seems wrong; 20,000us is not enough
on at least one machine. So, do a delay(100000) in ex_reset.
Fortunately, this function is only called when the card is
attached or when hardware failure is suspected.

While here, only mask one 1 bit in the 'reset hack' case.
2001-05-10 22:57:44 +00:00
tsutsui
330ab2b636 Print a clock frequency of the chip. 2001-05-09 16:24:43 +00:00
ichiro
09858f6fc8 change promisc mode in case of SIOCSIFFLAGS of wi_ioctl.
Fix indentation.
2001-05-08 16:42:49 +00:00
ichiro
1480c8fae2 delay(10) is too much enough for command waiting routine. 2001-05-08 13:42:04 +00:00
lukem
a9bf1b0410 delint 2001-05-07 08:15:41 +00:00
ad
95450fbced Make provision for resetting the board at start-up. 2001-05-06 19:53:04 +00:00
ichiro
8bb5cfe6aa divided into PCMCIA attachment and common code of wi.
since if_wi_ieee.h does not depend for pcmcia,
sys/dev/pcmcia/if_wi_ieee.h was moved to sys/dev/ic/wi_ieee.h .
2001-05-06 03:26:38 +00:00
ross
e3f2f91bfb Split pci and eisa/isa attachment calls, plus misc cleanup. 2001-05-03 20:34:54 +00:00
fvdl
487447a9bf Bump values of the number of up- and downlaod descriptors such that
saturating a 100Mbit link will not lead to running out of them.
2001-05-03 17:59:24 +00:00
minoura
58b62ea0cf Correct playing mu-law and linear. 2001-05-03 02:09:11 +00:00
minoura
ff3917c60f Oops, it contained some debug code. 2001-05-02 13:34:33 +00:00
minoura
1a9388aa50 Software codec for Oki MSM6258 voice synthesizer.
Recording untested.
2001-05-02 12:53:31 +00:00
scw
2963ff5c58 Add l_poll' to struct linesw' and provide an xxxpoll() entry point
in each tty driver to indirect through it.

This allows tty line-disciplines to handle poll(2) system calls.
2001-05-02 10:32:08 +00:00
bouyer
6baecd7e87 Don't forget to init chan_bustype. 2001-05-02 10:31:41 +00:00
lukem
796f5b43a7 delint 2001-05-01 16:40:03 +00:00
bouyer
19b0c05827 Ops, don't forget to increment li->used for each tagged command. 2001-04-30 13:58:32 +00:00
bouyer
2cc0fbbe14 remplace /*
*/
with
#ifdef notdef
#endif
to avoid:
../../../../dev/ic/hmereg.h:275: warning: `/*' within comment
2001-04-30 12:22:42 +00:00
tsutsui
613923b42e Add a MI driver for the Symbios/NCR 53c710 SCSI controller.
This is based on amiga's siop driver, but converted to use
bus_space(9) functions and modified to fit bus_dma(9) framework.

Currently tested on NetBSD/arc with jazzio 53c710 SCSI,
which really requires bus_dma(9) functions :-)
Sync transfers and disconnect/reconnect are also working.

TODO:
- Test under more heavy load
- Clean up osiop_checkintr() hander
- Reorganize command queue and sync negotiation handling more suitable
  for thorpej-scsipi mid-layer
- Re-think defered interrupt handling for amiga
2001-04-30 04:47:50 +00:00
lukem
b3b4a527b3 remove trigraph 2001-04-30 03:53:19 +00:00
lukem
5de219fbef delint 2001-04-30 03:49:12 +00:00
lukem
c83fa97ec8 remove trigraph 2001-04-30 03:48:06 +00:00
lukem
52a1d62934 delint 2001-04-30 03:45:35 +00:00
lukem
786063e4da use #if 0 rather than // or /* to comment out blocks of code 2001-04-30 03:43:09 +00:00
lukem
f863105161 remove some lint, including ansifying funcs 2001-04-30 02:55:08 +00:00
lukem
abf1970c82 delint newline in string 2001-04-30 02:17:55 +00:00
lukem
599ac910c6 this is _C_ not _C++_, and // is NOT valid in _C_ 2001-04-30 01:34:04 +00:00
erh
acc17cc823 Set the delta for the particular source so telling mixerctl to decrease the
volume (using --) adjusts it far enough to stick.
2001-04-29 02:47:25 +00:00
bouyer
1346d56311 - don't wait when called from interrupt context (basically this means we
can't sleep in HBA drivers)
- pool_get can fail, so return XS_RESOURCE_SHORTAGE instead of panic()
- don't try to bzero() a NULL pointer
2001-04-28 15:09:42 +00:00
jdolecek
6589e65051 Don't panic if the memory size is "weird", but instead compute
reasonable transmit/receive buffer count.
This is needed for e.g. SKNET adapters, which use top 30 bytes of 16KB
memory to map registers and PROM and hence not all the memory is
available for buffers.
2001-04-27 17:08:02 +00:00
bouyer
af5fd4c7d8 Stopgap measure for PR kern/12762: cut the number of openings per device
to 16 or 4 (depending on capabilities of adapter), as it was before
thorpej_scsipi integration
Waiting feedback to known whenever the problem with openings set to AHC_SCB_MAX
existed before.
2001-04-27 14:49:11 +00:00
bouyer
856411129e Disable tagged queuing for now, it causes commands timeouts.
Note that it's not worse since thorpej_scsipi integration: tagged queuing
was not used before, because of a tag message rejected at probe time.
2001-04-26 17:09:39 +00:00
bouyer
d032d80637 Redo xfer sync/wide/tag notification again: we need to notify upper layer
that we can do tag.
Start sync/wide nego at first command, but wait ADAPTER_REQ_SET_XFER_MODE
to notify upper level.
2001-04-26 16:56:53 +00:00
kanaoka
0d6646292e - Fix typo in comment.
- Add (missed)powerhook_disestablish() in ex_detach().
 - Sync with below.     Original commit log message:
 Add new powerhook argument values, PWR_SOFTSUSPEND, PWR_SOFTSTANDBY and
 PWR_SOFTRESUME. Apm calls powerhook with the values in normal interrupt
 priority level while others are protected with splhigh().
2001-04-26 08:21:51 +00:00
bouyer
937a7a3ed9 Pull up the thorpej_scsipi branch to main branch.
This is a completely rewritten scsipi_xfer execution engine, and the
associated changes to HBA drivers. Overview of changes & features:
- All xfers are queued in the mid-layer, rather than doing so in an
  ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
  to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
  peripherals.
- Better peripheral queue management: freeze/thaw, sorted requeueing during
  recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
  scsipi_link).
- Kernel thread for each scsipi_channel makes error recovery much easier
  (no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
  set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
  the need to use buggy tag ID allocation schemes in many adapter drivers).
- support for QUEUE FULL and CHECK CONDITION status in mid-layer; the command
  will be requeued, or a REQUEST SENSE will be sent as appropriate.

Just before the merge syssrc has been tagged with thorpej_scsipi_beforemerge
2001-04-25 17:53:04 +00:00
tsutsui
f39a68828d Make sure to check SC_ACCEL_TAGS in ncr53c9x_ioctl()
even if sync transfer is disabled or not supported.
2001-04-21 07:28:22 +00:00
tsutsui
64eed5859d Clean up ncr53c9x_select():
- Define NCR_F_SELATN3 for sc_features and use it to check if the chip
  supports SELATN3 command
- Make conditions of sending messages a bit simpler.
2001-04-21 05:35:20 +00:00
tsutsui
f2e3f6d5d4 Cosmetics. (tab/space etc.) 2001-04-20 17:32:33 +00:00
fredette
31d512c2e3 Added support for the chipset used on the Sun2 "sc" SCSI adapters.
A little rough around the edges, but definitely a starting point.
2001-04-20 16:35:22 +00:00
ragge
849d818db4 Remove some unused variables. 2001-04-15 15:01:35 +00:00
ross
7e0b361d84 Fix for kernel alignment crash reported on port-alpha. A developer went on
a happy code sweep (in the kernel!) and constified a random selection of
kernel objects. This changed the alignment of the previously-aligned-by-
accident seqprog array, and exposed a lurking bug.  I can't decide if this
is good or bad.
2001-04-14 19:37:17 +00:00
thorpej
bf2dcec4f5 Remove the use of splimp() from the NetBSD kernel. splnet()
and only splnet() is allowed for the protection of data structures
used by network devices.
2001-04-13 23:29:55 +00:00
thorpej
a3fd502107 Nuke some unneeded splimp. 2001-04-12 03:16:56 +00:00
thorpej
d94ce2f426 splimp -> splnet 2001-04-12 03:10:35 +00:00
wiz
b7f59127c9 re-add bt8xx.h (needed for fxtv, without which bktr is pretty much useless) 2001-04-11 09:07:21 +00:00
jdolecek
372e5956ef Only install headers which are actually used by our userland. This
saves about 2.2MB under /usr/include/dev/. Discussed on tech-kern@
recently.

I HOPE to get the list right. The headers I left in are ones
used for MI tools and those whose usage I discovered by grep over tree sources.
Feel free to put needed includes back in if you encounter anything which
should not be removed from lists.
2001-04-11 07:42:31 +00:00
mjacob
dfb8f5f43f Include isp_ioctl.h. 2001-04-10 21:52:15 +00:00
mjacob
78a44662f5 Add initial implementation of ISP_SDBLEV, ISP_RESETHBA, ISP_FC_RESCAN,
ISP_FC_LIP and ISP_FC_GETDINFO ioctls.
2001-04-10 21:52:00 +00:00
mjacob
7bcf01a29a Note one other place that bogus interrupts can be measured. 2001-04-10 21:51:21 +00:00
mjacob
81a6d0ec41 Add isp_ioctl.h. 2001-04-10 21:50:53 +00:00
mjacob
5f8aa905e6 Add some HBA ioctl functions (LIP resets, rescan, setting debugging level). 2001-04-10 21:50:40 +00:00
fredette
b27eda4ead Added. 2001-04-10 12:46:26 +00:00
fvdl
0ccb3965dd Fix missing splx calls. One of them from OpenBSD. 2001-04-09 23:51:28 +00:00
bjh21
fd7c4f1c79 ether_ioctl() expects i82586_init() to return an errno. Have it do so
(admittedly only EIO at present).
2001-04-09 22:31:16 +00:00
drochner
9e9590f441 Change the way the aux port is probed for. Some older chipsets w/o
mouse port seem to interpret the "test aux port" (0xa9) command differently,
leading to a non-working keyboard.
Now we try to echo a byte through the aux port by means of the "echo aux"
(0xd3) command, which is what Linux does.
Thanks to Christoph Badura for detailed reports and testing.
2001-04-09 15:45:50 +00:00
ad
e637d8a38d - Some firmware fills the system drive table with junk, so get the number
of system drives from an ENQUIRY.
- Complain if there's more than 1 segment when issuing some kind of enquiry
  (this needs to be fixed properly).
- Fix the ID hack for 2.xx firmware.
- Fix an argument to bus_dmamap_sync().
2001-04-09 15:40:09 +00:00
tsutsui
aa31658cf0 Correct values for sanity checks. 2001-04-08 17:05:10 +00:00
tsutsui
c65417c92f Make sure to print "\n" at the end of the attach line on non-DEBUG case. 2001-04-08 11:45:45 +00:00
tsutsui
2f9f69455f Fix some bus_dma(9) usage:
- bus_dmamap_sync() takes offset into the dmamap, not VA.
- Use BUS_DMA_STREAMING for the data dmamap, not BUS_DMA_COHERENT.
2001-04-07 10:50:13 +00:00
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
mjacob
5dafac6e18 Add a few opcodes for target mode. Define firmware attributes (for FC f/w). 2001-04-05 02:28:53 +00:00
mjacob
ad454c818c Keep up with the Joneses: sync with common core target mode code. Eventually
we'll do something with it here.
2001-04-05 02:28:17 +00:00
mjacob
6c28def28f Change how SCSI defaults are latched if we're supporting Target Mode.
Make sure we pick up the channel for dual bus cards when enabling target
mode. Catch a silly null pointer dereference.
2001-04-05 02:27:33 +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
7b7d57c2da Add some definitions for the 80C04A, thanks to Reinoud, who found me a data
sheet for it.
2001-04-01 21:15:15 +00:00
jdolecek
5a3d02fe8b fix the copyright - Charles's name was added here by mistake, use
standard TNF cookie instead
2001-03-31 09:49:00 +00:00
jdolecek
592dfdc76b Prepare for MCA attachment:
* split off sharable stuff to dev/ic/ate_subr.[ch], move ate(4) device
  definition to conf/files
* cosmetic: attach with ate_isa
2001-03-31 00:26:53 +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
jdolecek
2a2070aec3 kill bunch of unneeded includes 2001-03-29 08:48:55 +00:00
petrov
b0605f71d5 fas support added 2001-03-29 02:58:38 +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
bouyer
f099a26df2 Cast to u_int64_t when computing callout argument, to avoid int overflow.
Fixes kern/12471.
2001-03-27 17:24:03 +00:00
ad
d54c705158 Missing splx(). From OpenBSD. 2001-03-25 14:48:28 +00:00
is
51144af34f improve readibility 2001-03-25 14:38:23 +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
martin
5171d409a5 First step to cleanup the hardware driver <-> upper layers interface.
This now provides slightly more functionality than the FreeBSD layer1-newbus
interface. It was meant to be a simple change to one header and a few
c files, but the change rippled all through various stuff.

To prevent a change to the kernel<->userland interface right now the kernel
is now lying about card types to userland (but who cares). This will be fixed
when the userland interface changes, after layer 3 <-> layer 4 has been
fixed.

Functional changes:

Provide a clean interface for hardware drivers to attach to the upper
layers. This will need another small change in the B-channel handling
when a similar change to the layer 3 <-> layer 4 interface happens.

Avoid passing indices into global arrays of pointers around, instead pass
the pointers itself. Don't code hardware driver types by predefined magic
numbers (think LKM). Prepare for detachable drivers (think pcmcia).

While there remove some sets of function pointers always pointing to the
same function (meant to be the configurable set of D channel protocol
handlers). It is unlikely another supported D-channel protocol will fit into
that (maximal layer interface) abstraction. When we get support for another
protocol, we will need to come up with a workable interface. Besides, the
old implementation was, uhm, strange.
2001-03-24 12:40:29 +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
jdolecek
6d79f8ce1e Split we(4) driver to bus independant and ISA-specific parts, in preparation
for MCA attachment.
2001-03-23 17:34:41 +00:00
jdolecek
031c6d8c24 Add MCA ep(4) attachment, for 3Com 3c529-type cards. Tested with 3c529-TP,
provided to me by David Brownlee (thanks!).

Performance of this card is quite poor on my PS/2 with 386DX, like 100KB/s
at best, but as low as 5KB/s when transferring bigger files due to
packet overruns. It would be good to revisit this later, probably by
teaching the ic code to use RX Early.
2001-03-22 16:54:45 +00:00
jdolecek
4ffa6a80d6 convert to use ether_ioctl()
fix bunch of typos
2001-03-22 12:00:26 +00:00
bouyer
be5f917514 Add a small delay before reset at attach time, required by one old ATAPI
CD. Reported by Onno van der Linden.
2001-03-21 08:44:14 +00:00
is
a4dce1a3f4 Don't need to use the hash filter for a single individual address; make
sure concurrent receive processing is disabled.
2001-03-16 13:43:31 +00:00
bouyer
2b318d4800 Note that SF_CHIP_QUAD is for clock quadrupler with busy wait for PPL.
SF_CHIP_DBLR is for clock doubler or quadrupler.
2001-03-15 17:38:59 +00:00
tsutsui
585b6f2b0a Fix tyop in comments. 2001-03-15 13:45:00 +00:00
chs
ac3bc537bd eliminate the KERN_* error codes in favor of the traditional E* codes.
the mapping is:

KERN_SUCCESS			0
KERN_INVALID_ADDRESS		EFAULT
KERN_PROTECTION_FAILURE		EACCES
KERN_NO_SPACE			ENOMEM
KERN_INVALID_ARGUMENT		EINVAL
KERN_FAILURE			various, mostly turn into KASSERTs
KERN_RESOURCE_SHORTAGE		ENOMEM
KERN_NOT_RECEIVER		<unused>
KERN_NO_ACCESS			<unused>
KERN_PAGES_LOCKED		<unused>
2001-03-15 06:10:32 +00:00
mjacob
c67c3d855d Clean up and update copyright (remove advertising clause). Clean
up header guard.  Clean up structure definition for at2_entry so
it's correct rather than derived from at_entry- this is important
for unswizzling purposes. Add a whole bunch of unswizzle macros-
they're not quite right yet but at least they're a start. Note that
we now have, for at_entry, a 16 bit firmware handle as part of what
had been at_reserved- this is to correlate ATIOs with CTIOs- and
this must be carried along as part of a tag value to use with all
CTIOs we send in relation to this ATIO. ANSIfy.
2001-03-14 05:46:50 +00:00
mjacob
98381c7a2d ANSIfy source. 2001-03-14 05:44:46 +00:00
mjacob
8d81f18e84 Handles are now 16 bits. ANSIfy. 2001-03-14 05:44:21 +00:00
mjacob
765a49664e Roll core minor. ANSify. 2001-03-14 05:14:36 +00:00
mjacob
6112b6b2e7 Clean up some comments. Expand usage of cd_reserved. Expand cd_tagval
to 32 bits so it can haul along this furshlugginer handle for parallel
SCSI as well as a regular vanilla 8 bit SCSI tag.
2001-03-14 05:10:38 +00:00
mjacob
928cef6eb8 Clean up license && copyright a tad. ct_reserved should now be more
properly called ct_syshandle.
2001-03-14 05:01:54 +00:00
mjacob
5d68eec9d1 Handles are now u_int16_t instead of u_int32_t. ANSIfy (NetBSD was the holdout). 2001-03-14 04:55:21 +00:00
mjacob
4a005e2d38 Update copyright date. ANSIfy isp.c (NetBSD was the holdout of all
the platforms this code runs on). Handles are now u_int16_t, so adjust
code as required.
2001-03-14 04:54:13 +00:00
tsutsui
06237a6a03 Add some delay in zstty_attach() to wait previous console output
to complete before hardware initialization.
2001-03-12 15:46:56 +00:00
bouyer
9ea2b5098b Preliminary support for SYM53C1010-33 (at 80MB/s only for now), based on
patches sent by Matthias Drochner <M.Drochner@fz-juelich.de> and
Kenneth R Westerback <kwesterback@home.com>
2001-03-12 10:00:50 +00:00
wdk
688a84b1b2 Add missing \n during probe if port is dedicated to kgdb 2001-03-11 09:06:09 +00:00
jdolecek
9d66d7180b add 'why' argument to the channel attention hook function; this argument
is similar to the one passed to hwreset hook function
2001-03-10 20:04:30 +00:00
jdolecek
c0d40387a0 improve the error messages for IE_TDR_OPEN & IE_TDR_SHORT 2001-03-10 19:59:13 +00:00
jdolecek
a557028a27 improve description of IE_TDR_OPEN & IE_TDR_SHORT a bit 2001-03-10 19:57:38 +00:00
briggs
0828a1bcd0 Make this work on a PowerPC system:
- Load the DMA address a byte at a time, and
 - Use bus_space_read_stream_2() instead of bus_space_read_2() when reading
   the byte-stream of configuration data from the card.

Sanity-checked on both i386 and sandpoint.  Reviewed by ad.
2001-03-10 13:30:55 +00:00
thorpej
32a284db3a Make sure data after the header is aligned, so that this works on
systems with strict alignment constraints.
kern/12356, Feico Dillema <feico@pasta.cs.uit.no>.
2001-03-08 16:33:43 +00:00
thorpej
09cc55c97c Add additional padding to the status record, needed by the AIR-PCM342.
kern/12357, Feico Dillema <feico@pasta.cs.uit.no>.
2001-03-08 16:30:50 +00:00
thorpej
54bb0eddd9 Preliminary support for detaching an "adv" instance. This
could use some more work.

Derived from kern/12341, takashi.yamamoto@bigfoot.com.
2001-03-08 06:49:49 +00:00
thorpej
fd7ed72be1 Add BUS_DMA_STREAMING to data transfer maps. 2001-03-07 23:07:12 +00:00
mjacob
bf630787f7 Fix isp_print_qentry to print all four lines- it's been broken for months. 2001-03-02 04:51:14 +00:00
thorpej
8f79095477 Differentiate a couple of similar error message, and add newlines
on the end of them.
2001-03-01 22:10:57 +00:00
itojun
0913c0736c IPv6 support, from fujiwara@rcac.tdi.co.jp 2001-03-01 00:40:41 +00:00
mjacob
bcc65cfc34 roll platform minor 2001-02-28 05:53:59 +00:00
ad
8be33f9cc5 Remove mlxvar.h, which was added for no apparent reason. 2001-02-25 16:15:07 +00:00
cgd
c105346203 Avoid sequence point issues. 2001-02-24 00:03:12 +00:00
cgd
023e9f0649 C requires that labels be followed by statements. 2001-02-24 00:01:22 +00:00
mjacob
baf0985f2a Fix a longstanding bug- we had the sense of what bit 14
for the ICB firmware options meant- *I* had taken it to
mean that if you set it, Node Name would be ignored and
derived from Port Name. Actually, it meant the opposite.
As a consequence- change ICBOPT_USE_PORTNAME to the
define ICBOPT_BOTH_WWNS- makes more sense.
2001-02-23 05:38:27 +00:00
jdolecek
522f569810 make some more constant arrays 'const' 2001-02-21 21:39:52 +00:00
martin
f0d6660cf4 Filename cleanup: remove i4b_ prefixes outside sys/netisdn, last round.
Renamed in sys/dev/ic:
i4b_hscx.c -> hscx.c
i4b_hscx.h -> hscx.h
i4b_ipac.h -> ipac.h
i4b_isac.c -> isac.c
i4b_isac.h -> isac.h
i4b_isic.c -> isic.c
i4b_isicbchan.c -> isic_bchan.c
i4b_isicl1.c -> isic_l1.c
i4b_isicl1.h -> isic_l1.h
i4b_isicl1fsm.c -> isic_l1fsm.c
2001-02-20 22:24:31 +00:00
mjacob
1c40195bea Add ISPCTL_RUN_MBOXCMD control op and ISPASYNC_UNHANDLED_RESPONSE async event. 2001-02-20 01:11:35 +00:00
mjacob
3f7d69fe2c Add ISPCTL_RUN_MBOXCMD control function and ISPASYNC_UNHANDLED_RESPONSE
async event. Call ISP_DUMPREGS on f/w erro. Correct problem in bitmap
for MBOX_DUMP_RAM.
2001-02-20 01:10:50 +00:00
taca
47e672bfdc Add mlxvar.h as include files to install. 2001-02-18 14:17:45 +00:00
thorpej
4027cab9ea Support for the MII on the D-Link DL10019/DL10022 NE2000-compatible
Ethernet chips.
2001-02-13 01:43:02 +00:00
mjacob
a898cb6cb0 Eliminate ISP2100_FABRIC- we always allow for fabric now. Add an
isp_iid_set/isp_iid for fibre channel- this is because we now
fake a port database entry for ourselves. Add the additional loop
states between LOOP_PDB_RCVD and LOOP_READY.

Change and comment on a wad of Fibre Channel isp_control functions.
Change and comment on some of the ISPASYNC Fibre Channel events.

Add was_fabric_dev/fabric_dev tags to our local FC database structure
(so we can see rapidly whether something was a fabric device but is
now gone).

Add a tag which says what role this adapter should take. It can take
on the value of None, Target, Initiator or Both. None is useful for
warm failover purposes. Remove the ISP_CFG_NOINIT silliness since
a role of "None" does this.

Add a isp_lastmbxcmd tag to store the opcode for the last mailbox
command used.
2001-02-12 23:33:49 +00:00
mjacob
b01ecfe65c Put in offset definitions for FPM and FBM registers, plus just enough
bits defined so we can reset them.
2001-02-12 23:33:11 +00:00
mjacob
a86729db93 Add structure defining FC-AL position maps. The only tool that I know of
that really uses this is luxadm(8) under Solaris.
2001-02-12 23:32:44 +00:00
mjacob
4409fa23b2 Remove ISP2100_FABRIC (we're always fabric now). Fix usage of isp_lastmbxcmd
to report the mailbox command that times out. Fix isp_unswizzle_sns_rsp
which for reasons *I* find obscurer just doesn't work correctly on sparc64
with words past 128. I have no idea why this *does* work on SparcLinux.
2001-02-12 23:32:11 +00:00
mjacob
25bc760687 Do some cleanup based upon adapter role- mainly not enabling interrupts
if we're ISP_ROLE_NONE. Change ISPASYNC_LOGGED_INOUT to ISPASYNC_PROMENADE.
Make sure we note if something is a fabric device.
2001-02-12 23:30:12 +00:00
mjacob
d9696b793a Add isp_fc_runstate function- this function's purpose is to, in stages,
and depending on role, make sure link is up, scan the fabric (if we're
connected to a fabric), scan the local loop (if appropriate), merge
the results into the local port database then, check once again
to make sure we have f/w at FW_READY state and the the loopstate
is LOOP_READY.
2001-02-12 23:29:26 +00:00
mjacob
85b0326ec6 Minor stuff:
Remove ISP2100_FABRIC defines- we always handle fabric now. Insert
isp_getmap helper function (for getting Loop Position map). Make
sure we (for our own benefit) mark req_state_flags with RQSF_GOT_SENSE
for Fibre Channel if we got sense data- the !*$)!*$)~*$)*$ Qlogic
f/w doesn't do so. Add ISPCTL_SCAN_FABRIC, ISPCTL_SCAN_LOOP, ISPCTL_SEND_LIP,
and ISPCTL_GET_POSMAP isp_control functions. Correctly send async notifications
upstream for changes in the name server, changes in the port database, and
f/w crashes. Correctly set topology when we get a ASYNC_PTPMODE event.

When resetting the Qlogic 2X00 units, reset the FPM (Fibre Protocol
Module) and FBM (Fibre Buffer Modules). Also remember to clear the
semaphore registers. Tell the RISC processor to not halt on FPM
parity errors.


Finally, use a new tag in the softc to store the opcode for the
last mailbox command used so we can report which opcode timed
out.

Major stuff:
Quite massively redo how we handle Loop events- we've now added several
intermediate states between LOOP_PDB_RCVD and LOOP_READY. This allows us
a lot finer control about how we scan fabric, whether we go further
than scanning fabric, how we look at the local loop, and whether we
merge entries at the level or not. This is the next to last step for
moving managing loop state out of the core module entirely (whereupon
loop && fabric events will simply freeze the command queue and a thread
will run to figure out what's changed and *it* will re-enable the queu).
This fine amount of control also gets us closer to having an external
policy engine decide which fabric devices we really want to log into.

Throw out the ISP_CFG_NOINIT silliness and instead go to the use of
adapter 'roles' to see whether one completes initialization or not
(mostly for Fibre Channel). The ultimate intent, btw, of all of this
is to have a warm standby adapter for failover reasons.  Because
we do roles now, setting of Target Capable Class 3 service parameters
in the ICB for the 2x00 cards reflects from role. Also, in isp_start,
if we're not supporting an initiator role, we bounce outgoing commands
with a Selection Timeout error. Also clean out the TOGGLE_TMODE
goop for FC- there is no toggling of target mode like there is
for parallel SCSI cards.

Do more cleanup with respect to using target ids 0..125 in F-port
topologies. Also keep track of things which *were* fabric devices
so that when you rescan the fabric you can notify the outer layers
when fabric devices go away.

Only force a LOGOUT for fabric devices if they're still logged in
(i.e., you cat their Port Database entry. Clean up the Get All Next
scanning.
2001-02-12 23:28:50 +00:00
ad
469b91fce0 Don't put the request onto the `worklist' in ccb_submit(), since it may
still be on the pending queue.
2001-02-12 19:04:35 +00:00
thorpej
ec0ab7054b Add a "stop_card", which is the opposite of "init_card", and
call it from dp8390_stop().
2001-02-12 18:56:26 +00:00
thorpej
b17ef220b5 Print the Ethernet address before attaching media. 2001-02-12 18:52:22 +00:00
thorpej
043e519d55 Adjust the way that media is initialized on DP8390-compatible
chips.  The dp8390_softc now has media_init and media_fini
function pointers that do the work.
2001-02-12 18:49:03 +00:00
hpeyerl
2dcf59c673 Fix for kern/12114 and kern/12158 Advansys DMA errors.
Reported by Bob Bernstein who heard from Kenneth Westerback that this
might be the problem.  Tested by HP.
2001-02-11 23:40:03 +00:00
bouyer
0653304779 Avoid sending new commands to the device if it has sense pending:
- run request sense command without disconnect
- don't restart the script before siop_scsicmd_end has been called if the
  cmd didn't complete with good status.
- reserve slot 0 for request sense, to make sure it'll be sent first.
2001-02-11 18:04:49 +00:00
thorpej
21096fc86d Include MII glue here -- some DP8390-compatible chips have MII
interfaces on them (scary, eh?)
2001-02-10 17:18:02 +00:00
thorpej
72d4eea6ef Register definitions for the D-Link DL10019 and DL10022 Ethernet
chips.  These are NE2000-compatible chips with an MII interface
on them for media.
2001-02-10 16:41:40 +00:00
thorpej
ef958d8898 Add a type for the DL10022. 2001-02-10 16:09:55 +00:00
ad
77c450a230 Squash some nits. 2001-02-06 12:53:48 +00:00
chs
09cb38f22b expose the definitions of MIN() and MAX() in sys/param.h to the kernel
and use those in favor of a dozen copies scattered around the source tree.
2001-02-05 10:42:40 +00:00
enami
5760375275 Include uvm/uvm_extern.h to pull in the definition of PAGE_SIZE. 2001-02-05 04:50:27 +00:00
ad
8d75ab98d3 Add a driver for the Mylex DAC960 family (including DEC SWXCR). 2001-02-04 17:05:11 +00:00
thorpej
311479928a Rework the transmit logic. Use a "free" and "dirty" list of
transmit jobs.  The previous logic occasionally, under heavy
load, would attempt to sync and unload DMA maps that weren't
currently in use, and also occasionally leaked mbufs under
heavy load.

Yay, NFS now works pretty well on my Dreamcast.
2001-02-02 04:34:19 +00:00
thorpej
bf8be41116 Put the rx buf pointer into the softc directly. 2001-02-02 03:51:51 +00:00
thorpej
84b5bb2f1b Fix a bug in ring-buffer wrap calculation. On the Dreamcast,
it causes assertions to fail in the PCI bounce buffer code.  On
other platforms, it causes the address of the next packet to
be mis-calculated, leading to packet loss.
2001-02-01 04:45:17 +00:00
thorpej
3c0c1146ac Use a 16K receive buffer on the SEGA Dreamcast (XXX should be
done differently than it is).
2001-01-31 07:44:51 +00:00
thorpej
9710d432c2 Power management support for the CardBus Etherlink XL cards.
From Masanori Kanaoka <kanaoka@ann.hi-ho.ne.jp>.
2001-01-30 19:27:39 +00:00
enami
2c218a4926 Handle allmulti case correctly as a NetBSD network driver;
if we are requested range of multicast address or too many multicast address,
program multicast filter to receive all multicast address.   And set/clear
IFF_ALLMULTI flag properly.
2001-01-29 01:24:42 +00:00
bouyer
22189b442b Add a few siop_table_sync() calls. 2001-01-26 22:00:01 +00:00
bouyer
05b5119cdf Fix a 4 byte ovferflow in an array:
resel[sizeof(load_dsa) / sizeof(load_dsa[0])] is 25, not 24.
2001-01-26 21:58:56 +00:00
bjh21
fe3273fbb4 Patch from PR kern/8001, submitted by Rafal Boni.
This adds support for EtherExpress/16 cards with 16k of RAM, and in the
process adds general support for PIO mode on these cards.  This entails
changing the way the i82586 driver handles bus barriers, since it doesn't
allow for strange cases like this.

This has been tested on the i386 port with the 'ix' driver in both
16KB (which was the source of the problem) and 32KB modes, as well
as with the 'ef' driver.  I've tested it (briefly) with 'ei' on arm26
as well.  In theory, drivers other than 'ix' should follow precisely the
same code paths as before.
2001-01-22 22:28:43 +00:00
jdolecek
9e7736f1dc make patches[] const 2001-01-22 14:30:43 +00:00
mycroft
f2d987f8a4 Force certain commands (i.e. DVD authentication) to PIO mode. They are
explicitly not supported in DMA mode, and generally return an `illegal field
in CDB' error.
This should have been done ages ago.
2001-01-22 07:00:39 +00:00
thorpej
3966e66ec8 Untangle some spl-spaghetti in cy_modem_control(). 2001-01-21 16:55:10 +00:00
thorpej
13ad8f5ba7 Pack the minor numbers like the Cyclades-Z driver does, and
make the dialout bit compatible with the other serial drivers
(and with what MAKEDEV generates for dtyCYxxx).
2001-01-20 19:29:05 +00:00
lukem
1d15673dae consistently use FE_DEBUG (DEBUG was used a couple of places where it
was obvious that FE_DEBUG should have been used instead)
2001-01-20 07:31:00 +00:00
thorpej
c38c39fc9b Only need to pass a cy_softc * to cy_attach(). 2001-01-20 02:26:39 +00:00
thorpej
44ff75e3c5 ANSI'ify. 2001-01-20 02:24:16 +00:00
thorpej
a0f7017e2e Clean up the PCI attachment a bit, and adjust the other pieces
to suit.
2001-01-20 02:15:01 +00:00
eeh
905ef1b7fa Use the SCSIACCEL ioctl() to turn on TAG QUEUEs. 2001-01-19 23:04:23 +00:00
martin
0f589a40df Nuke all uses of splimp() in the isdn subsystem, replace by splnet(). 2001-01-19 12:44:44 +00:00
jdolecek
34c8ae80da constify 2001-01-18 20:28:15 +00:00
thorpej
3d0bbf9152 Filter "receive process failed to idle" on noisy chips (like the
ADMtek AN985).
2001-01-17 19:37:09 +00:00
thorpej
fc5dafc79b Fix a rather annoying problem where the sockaddr_dl which holds
the link level name for the interface (ifp->if_sadl) is allocated
before ifp->if_addrlen is initialized, which could lead to allocating
too little space for the link level address.

Do this by splitting allocation of the link level name out of
if_attach() and into if_alloc_sadl(), which is normally called
by functions like ether_ifattach().  Network interfaces which
don't have a link-specific attach routine must call if_alloc_sadl()
themselves (example: gif).

Link level names are freed by if_free_sadl(), which can be called
from e.g. ether_ifdetach().  Drivers never need call if_free_sadl()
themselves as if_detach() will do it if it is not already done.

While here, add the ability to pass an AF_LINK address to
SIOCSIFADDR in ether_ioctl() (this is what caused me to notice
the problem that the above fixes).
2001-01-17 00:30:49 +00:00
thorpej
2663816278 Fix register offset botch when setting the multicast filter on
the ADMtek AN985.
2001-01-16 17:33:24 +00:00
thorpej
45de366b2e Rename __GENERIC_SOFT_INTERRUPTS to __HAVE_GENERIC_SOFT_INTERRUPTS,
and place the definition in <machine/types.h>.  This can now be used
as a flag to indicate whether or not <machine/intr.h> can be included
to get the generic soft interrupt API.
2001-01-14 23:50:28 +00:00
tsutsui
4f8dfdb556 Don't copy Rx packet to mbuf if it has invalid length; just discard it.
Fixes kern/11877.
2001-01-11 14:38:58 +00:00
ad
6b133efd3e Make this work with the SA 431 and 42xx series controllers. 2001-01-10 16:48:04 +00:00
rh
cb2d30303b Add new AC97_HOST_SWAPPED_CHANNELS host flag that causes left and right
mixer channels to be swapped (required for hardware that has wiring
reversed).
2001-01-09 23:14:25 +00:00
mjacob
442e2e73a9 ISPASYNC_PDB_CHANGED -> ISPASYNC_LOGGED_INOUT. 2001-01-09 18:56:24 +00:00
mjacob
64c3b7f881 Add some 2X00 specific state flags for status response entries. Add the
defines necessary for the REGISTER FC4 TYPE SNS subcommand.
2001-01-09 18:56:06 +00:00
mjacob
5599d31360 ISPASYNC_PDB_CHANGED->ISPASYNC_LOGGED_INOUT. And also, ISPASYNC_CHANGE_NOTIFY
is for both local loop and fabric cases now.
2001-01-09 18:54:53 +00:00
mjacob
81df08ddef Use a SNS REGISTER FC4 TYPE subcommand to register with the name server.
This means we should be able to work with McData switches now. Change
ISPASYNC_PDB_CHANGED to ISPASYNC_LOGGED_INOUT (more descriptive). Allow
F-Port topologies to use target ids 0..125 to log into fabric devices.
Yet again fool around with defaul WWN stuff.
2001-01-09 18:54:06 +00:00
thorpej
7bebf9a408 On ADMtek chips, don't just idle the chip when programming the
multicast filter.  These chips don't like to go into "idle" state
very much, so we have to use the big hammer and reset the chip,
instead.
2001-01-08 22:12:57 +00:00
thorpej
e9bb880aaf The ADMtek AN985 "ghosts" the single built-in PHY at every MII address.
Work around this by having a custom media init routine that limits the
search to MII address 1.
2001-01-08 21:40:29 +00:00
thorpej
b79ddef845 Also ignore receiver errors if VLAN_MTU is enabled; the 21040 appears
to require this.
2001-01-07 23:29:12 +00:00
martin
6b82e7fe42 64bit police.
Rumors say there are archs without ISA busses, so avoid including
(uneccesarily) isa bus headers in MI files.
XXX this is the minimal solution, layer interface calls will have
XXX to be revisited later
2001-01-07 21:47:24 +00:00
sommerfeld
4522010c18 Make certain we see COM_MPLOCK, MULTIPROCESSOR, and LOCKDEBUG
to avoid any confusion about whether or not we have a lock in the softc.
2001-01-07 18:09:26 +00:00
nathanw
a30debae05 Add description of the pinout of a standard DB-25 parallel port,
relative to the bits described here.
2001-01-06 17:16:19 +00:00
takemura
1c518d67a0 Add WDC_CAPABILITY_SINGLE_DRIVE to ignore secound drive. Wdc on pcmcia will
be attached with this flag.
Some CF Card (for ex. IBM MicroDrive and SanDisk) doesn't seem to implement
drive select command. In this case, you can't eliminate ghost drive properly.
So you should use this flag to ignore the ghost by force.
2001-01-06 14:55:49 +00:00
martin
c3cb638bca Initial import of ISDN4BSD release 0.96 2001-01-05 12:49:52 +00:00
mjacob
6cb4620b76 (some of these changes were made in the previous revision- oops)
Say which mailbox command times out (polled or interrupting). Also,
give them a bit more time to timeout (5 seconds instead of 2).
2001-01-05 07:03:54 +00:00
mjacob
9d7f6e219f Ian McDonnell <apriori@world.std.com> made me see the error of my ways.
*Cough*. Ahem. I hadn't been setting error to XS_SENSE when there was
a check condition. Major blunder.
2001-01-05 07:02:00 +00:00
augustss
5f3c3e0d6f Add definitions for some bits in ID and STATUS regs. 2001-01-05 03:32:46 +00:00
augustss
cc9f003455 Add some codecs. 2001-01-05 03:32:11 +00:00
mjacob
462ff196a4 [ dummy checkin to add to previous CVS ]
It's probably not really a compiler bug- somebody pointed out
that it was the kernel making strings readonly. But I do think it's
a bug. The actual code was really more like:

	char *revname;

	...

	revname = "2X00";

	...
	revname[1] = '2'; <<<<<<<<< BOOOM


The variable revname is not a const. If I had said

	const char *revname = "2X00"
	...
	revname[1] = '2';

that would indeed be breaking const rules.
2000-12-30 19:47:20 +00:00
mjacob
8adadc9bda There's a compiler bug for sparc64 that makes the construct:
char *foo = "XXXX";
	...
	foo[1] = 'Y';

blow up (in the kernel) with the 2nd assignment. Work around it here-
it's probably just as well- I was spending more in cpu instructions doing
the assignment than I was saving in string space (it would have been
cheap on a pdp11 or a 68k- but the address loads and assignments on something
like sparc or alpha way outweigh the savings in space. Tsk.).
2000-12-30 19:30:09 +00:00
wiz
1796fa4bd8 Fix pasto in comment. 2000-12-30 16:55:24 +00:00
wiz
2ad3fd958d Merge 2.18 to trunk. 2000-12-30 16:52:36 +00:00
mjacob
d4c32f2a63 Apply nearly all of Bill Sommerfeld's -Wformat patches. The one
change I didn't take is the %llu format- I can't have a common
across multiple platform module assume a %ll argument capability-
which really pointed out that I shouldn't be trying to *print*
something which could long long.
2000-12-28 22:27:46 +00:00
mjacob
0dae1b3d9a Turn ISP_LOCK/ISP_UNLOCK into ISP_ILOCK/ISP_IUNLOCK macros for routines
that are driven from a timeout (oops, they're on the interrupt stack).
2000-12-28 21:37:04 +00:00
mjacob
d81d268d13 Use the ISP_CFG_NOINIT flag to decide whether to complete the full init
process steps (this is used in some platforms where you want to bring
the adapter to ready (to get a WWN, e.g.) , but not engage either target
or initiator mode until some later time). Set the correct defaults WWNs.
2000-12-28 08:26:12 +00:00
mjacob
a5498e1514 add an ISP_CFG_NOINIT flag 2000-12-28 08:24:17 +00:00
mjacob
b551237fb6 add two minor ATIO2 offsets 2000-12-28 08:23:48 +00:00
mjacob
829a533bfb Restore the change fvdl made. Sorry about not noticing it. The
header (about 'Maintainer') is supposed to help encourage folks
to coordinate with me.
2000-12-28 08:11:52 +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