Commit Graph

78 Commits

Author SHA1 Message Date
bouyer
e5727031fb Implement mstohz() as discussed on tech-kern, and use it in SCSI drivers
to convert xs->timeout to callout() parameter.
2002-04-05 18:27:45 +00:00
lukem
2565646230 don't need <sys/types.h> when including <sys/param.h> 2001-11-15 09:47:59 +00:00
lukem
a4bae8b066 add/cleanup RCSID 2001-11-13 13:14:31 +00:00
tsutsui
064be15283 Use common macro to check message length. 2001-11-04 12:03:41 +00:00
thorpej
0884f20bf7 bzero -> memset 2001-07-07 16:13:44 +00:00
thorpej
7711ad565b bcopy -> memcpy 2001-07-07 15:53:13 +00:00
lukem
52a1d62934 delint 2001-04-30 03:45:35 +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
matt
2b44ae84ee LP64 printf fix. (I wish size_t was unsigned long on all platforms). 2000-05-05 17:52:38 +00:00
augustss
169ac5b3c1 Remove register declarations. 2000-03-30 12:41:09 +00:00
simonb
b75e08a514 Delete redundant decl of aicattach(), it's in aic6360var.h. 2000-03-30 02:02:53 +00:00
thorpej
fc96443d15 New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
  resource allocation.
- Insertion and removal of callouts is constant time, important as
  this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
2000-03-23 07:01:25 +00:00
enami
83446dedc1 - Test the generic device active flag instead of home grown one.
- Test also it in wdcintr.
2000-03-20 22:53:36 +00:00
enami
3f199cc5e4 Add and delete a reference to an adapter at aicattach(), to make sure
that the adapter is disabled even if it wasn't enabled/disabled during
configuring its children.  This fixes the bug that if an aic pcmcia card
is inserted in a slot during boot, further attaching of any card on the
slot fails once the card is removed.
1999-10-30 00:58:32 +00:00
enami
a2369d8e97 Cancel active transfers on aic/wdc detach.
Also makes LS-120 drive works for me again.
1999-10-20 15:22:24 +00:00
thorpej
63b8530b4e Update for SCSPI changes. 1999-09-30 23:04:39 +00:00
enami
2a328ebcb2 Allow to detach aic, but turned off by default. The patchable variable
aic_dodetach controlls this.
1999-09-26 08:14:57 +00:00
mjacob
74bc9f26d5 Update HBAs to incorporate the new max_lun property. 1998-12-05 19:43:33 +00:00
thorpej
5f0577babc Adapt to the new scsipi_adapter interface. 1998-11-19 21:43:00 +00:00
thorpej
29d472f53d Garbage-collect the open_target_lu and close_target_lu entry points from
struct scsipi_adapter; they were not used.

Add a scsipi_ioctl entry point to struct scsipi_adapter.  This will be
used to issue ioctl commands to the host adapters.

Inspired by PR #6090, from Matt Jacob.
1998-10-10 00:28:28 +00:00
jonathan
466e784ee1 defopt DDB. 1998-07-04 22:18:13 +00:00
matt
18319c0048 Changes so that these compile on NetBSD/alpha as well as NetBSD/i386. 1998-05-23 18:32:29 +00:00
enami
4b62270f85 Don't include <machine/pio.h> and <dev/isa/isavar.h>. Instead,
include <machine/bus.h> directly.
1998-01-13 03:31:42 +00:00
thorpej
095c4c092d Adjust for config changes. 1998-01-12 09:23:08 +00:00
christos
64ff55911c From Enami Tsugutomo: Busify and split the aic6360 driver. 1997-10-06 19:49:17 +00:00
bouyer
6f3bab1f59 Merge scsipi branch in the mainline. This add support for ATAPI devices
(currently only CD-ROM drives on i386). The sys/dev/scsipi system provides 2
busses to which devices can attach (scsibus and atapibus). This needed to
change some include files and structure names in the low level scsi drivers.
1997-08-27 11:22:52 +00:00
thorpej
d502e68402 Fill in sc_link.max_target 1996-12-10 21:27:16 +00:00
christos
86373f8cf9 backout kprintf changes 1996-10-13 01:37:04 +00:00
christos
58953408cb printf -> kprintf, sprintf -> ksprintf 1996-10-10 22:04:48 +00:00
cgd
71ad30d0e9 (1) set scsi_link channel to either the appropriate channel (if a
multi-channel driver), or to SCSI_CHANNEL_ONLY_ONE if a
    single-channel driver.
(2) use scsiprint() rather than a locally-defined autoconfig print
    function, and kill any locally-defined print function.
1996-08-28 18:59:15 +00:00
cgd
2a73ef60b7 change cfprint_t type definition to take a const char *, rather than
a char *, because that's what was really intended, and because
if the print function modifies the string, various things could become
unhappy (so the string should _not_ be modified).
1996-08-27 21:53:46 +00:00
mycroft
a8e5b5ba47 Remove some unneeded FIFO flushes and reorder some register changes per the
6360 manual.  Turn off synchronous negotiation.
1996-06-18 16:13:05 +00:00
mycroft
cec36bf8d5 Use intr.h. 1996-05-12 23:51:23 +00:00
christos
e8a8a6298c - prototype fixes 1996-04-29 20:02:32 +00:00
cgd
51e85d07b9 update for addition of a machine-dependent cookie as the first argument
to isa_intr_{,dis}establish().
1996-04-11 22:27:59 +00:00
mycroft
9c6e05d835 Minor optimization, and do a CLRCH after (re)selection just to be safe. 1996-04-03 15:58:13 +00:00
mycroft
b82447e3e1 * Change message priorities so that ABORT comes after IDENTIFY.
* Add an ACB_RESET flag, so that a BUS DEVICE RESET can be queued within the
driver.
* If ACB_ABORT or ACB_RESET is set during reselection, schedule a message and
assert ATN.
* Optimize aic_datain_pio(), aic_dataout_pio() and aicintr() somewhat.
* Schedule a timeout only when we select the target, so that commands can't
time out prematurely.
1996-04-03 10:33:45 +00:00
mycroft
d0742ed3c5 Several things:
1) If we get an unexpected disconnect, issue a REQUEST SENSE, as recommended
by the SCSI-2 spec.  If the target created a contingent allegiance condition,
this will clear it.  Also, if it happened while sending a SDTR or WDTR message,
disable negotiation for that target.
2) Since some lame devices still don't deal correctly, make sure we deassert
ATN if our last message out is interrupted.  If we get a MESSAGE PARITY ERROR,
we'll reassert ATN anyway.  This should ensure that we never have to send a
MESSAGE NO OPERATION.
3) Set AIC_ABORTING only when actually sending a BUS DEVICE RESET or ABORT,
so we get better error detection.
4) Other internal reorganization of no consequence.
1996-04-01 07:24:37 +00:00
mycroft
778f21db6a Use `{in.out}b(iobase + ...' rather than including the base address in
the register definitions.
1996-03-30 16:13:24 +00:00
thorpej
6d9ea4cf59 New device attachment scheme:
- split softc size and match/attach out from cfdriver into
	  a new struct cfattach.

	- new "attach" directive for files.*.  May specify the name of
	  the cfattach structure, so that devices may be easily attached
	  to parents with different autoconfiguration semantics.
1996-03-17 00:43:52 +00:00
mycroft
3da4b2a160 The IST_* and IPL_* constants are not bus-specific; don't treat them as such.
Change splimp -> splnet in Ethernet, ARCnet, and FDDI drivers.
1995-12-24 02:29:35 +00:00
jtc
0cd793449e merge in changes from 1.1 release branch 1995-11-30 00:56:23 +00:00
mycroft
393a69d6db Modularize the CCB/MSCP/ACB/ECB handling a little. No functional changes. 1995-10-03 20:58:56 +00:00
thorpej
26419c5a8b Don't declare Debugger(). It's handled in <sys/systm.h> 1995-09-26 19:31:15 +00:00
pk
0fbf2ca04a Make *print() a message if no scsibus was attached. Also, return something
valid.
1995-09-14 20:43:09 +00:00
mycroft
80d7b0695a minphys() functions really should return void. 1995-08-12 20:30:45 +00:00
cgd
830a91b2e9 update SCSI minphys routines' definitions to match standard minphys()
definition and usage.
1995-07-24 07:16:44 +00:00
cgd
8a640328ed clean up several ISA device interfaces: autoconfiguration, header
inclusion, and interrupt configuration.  more work still needs to be done,
but it's getting better...
1995-04-17 12:06:30 +00:00
mycroft
e9c2b98c11 Comment a potential bit of lossage. 1995-02-02 21:08:42 +00:00
mycroft
8abb91e18d Various:
* Make synchronous negotiation work.
* Use the bitbucket when the target requests too much data.
* Loop in aicintr() until we get to a state where we have to wait.
1995-02-01 21:49:37 +00:00