Commit Graph

30 Commits

Author SHA1 Message Date
drochner e87f74fd64 put the __packed__ attribute close to the struct definition
(to appease gcc-3.4), and use the compiler-independant __packed
form for consistency
2004-07-01 20:56:34 +00:00
bouyer 516871a573 Add support for the Ignore Wide Residue SCSI message. 2004-05-17 20:12:34 +00:00
bouyer 83478e12f3 when an unexpected disconnect occurs only compute the resid; do the
real save data pointers when we get the message (or rather, at disconnect
time following the message).
Factor out code to do this, and to deal with xs->resid, in siop_common.c.
2004-05-17 18:37:02 +00:00
bouyer eefc140c02 The 1010-66 always generate AIP values on the bus, regardless of the SCNTL4
settings. Disable AIP completely, as this confuse pre-Ultra160 drives.
From FreeBSD.
2004-03-10 22:02:53 +00:00
wiz ee1b406595 Spell address with two d's. Inspired by similar changes in OpenBSD,
originating from Jonathon Gray and forwarded by jmc@openbsd.
2003-11-10 08:51:51 +00:00
wiz c5670263e0 Fix some typos. From Tom Cosgrove via jmc@openbsd. 2003-11-02 11:07:44 +00:00
thorpej 24a4b8faa6 Use PAGE_SIZE rather than NBPG. 2003-04-09 00:28:28 +00:00
tsutsui 0ff49f9f99 hz -> Hz 2003-02-21 17:14:04 +00:00
christos f64a8c827d remove duplicate cpp defs. 2002-10-23 02:32:36 +00:00
bouyer 8e978787e8 Keep track of the current SCSI mode (SE/HVD/LVD) and don't start PPR
negotiation if it's not a LVD bus.
Remove write to SIOP_STEST0, it's bogus and I don't know why it's there at
the first place.
2002-05-04 18:43:22 +00:00
bouyer 3dc7dba078 It seems that the 1010-33 has a bug: it sometimes generate spurious SCSI gross
errors for narrow transfers after a reselect. FreeBSD sym driver has a comment
about this, but their workaround (disable SCSI gross error reports) doesn't
work for me. Instead dissallow disconnect if the target is not wide
(FreeBSD doens't allow disconnect until the target has been fully probed, which
is why they may not have noticed my problem).
2002-05-04 18:11:06 +00:00
bouyer cd3578d7ef More copyright fixes, pointed out by Thomas. Thanks ! 2002-04-23 20:41:13 +00:00
bouyer c7454ad973 - factor out parts of (e)siop_attach() to siop_common_attach()
- Add support for DT transfers (aka Ultra/160) in esiop

Note that DT transfers are not enabled for 53c1010-33 rev 0 yet; if I trust
FreeBSD it has a bug which prevent them to do DT properly.
From the same source there may be issues with some revs of 53c1010-66.
2002-04-23 17:33:27 +00:00
bouyer 6d37782a49 Bump the space for SCSI messages from 8 to 16 octets, as 8 may not be
enouth for IDENTIFY + TAG + PPR.
Get rid of constants in C code by use of a offsetof macro.
2002-04-23 12:55:26 +00:00
bouyer cf06149dac Enable software LED control based on LED0 feature, not #define.
For now, set the LED0 feature if SIOP_SYMLED is defined in siop_pci_common.c.
From Jason R Thorpe.
2002-04-23 10:38:37 +00:00
bouyer b6fee4019d Add some new features:
- SF_BUS_ULTRA3, for Ultra/3 (80Mhz) busses
- SF_CHIP_LEDC,  led on GPIO0 with hardware control
- SF_CHIP_DT, support DT clocking.
2002-04-23 10:06:44 +00:00
bouyer 0852b37f15 Note that if siop_common_xfer is changed, the scripts need to be changed too. 2002-04-20 15:25:53 +00:00
bouyer 97fe8b91c5 Move a few things around, so that ic/siop_common.c and pci/siop_pci_common.c
can be compiled without including siopvar.h.
2002-04-20 00:15:54 +00:00
bouyer 6721892796 Forgot to add __attribute__((__packed__)) to one hardware structure. 2001-10-22 16:45:28 +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
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
thorpej 275539f03c NBPG -> PAGE_SIZE 2000-11-14 18:21:00 +00:00
bouyer fc92601259 Fixes related to QUEUE FULL status:
- move status handling in siop_scsicmd_end(), it's better than in siop_intr()
- define 2 internal SIOP status, for "no status reported by device" and
  reset condition
- add a list of "urgent" command, to be executed before the list of command
  queued the normal way; this is used for command which got aborted
  by a QUEUE FULL and have to be requeued in order.
- Don't accept to send a Q_TAG message not immediatly folowing a IDENTIFY
2000-10-23 23:18:10 +00:00
bouyer 7777f61cbe Rearrange for script changes (scheduler core in main script, command part
of the scheduler in command table).
Add tagged command queuing support.
2000-10-23 14:56:16 +00:00
bouyer 9d3f5d7fbd Adapt for new lun switch script.
Implement SCBUSACCEL ioctl.
Snapshot of work in progress on tagged queuing: we can send/receive
queue tag messages. Infrastructure to manage multiple commands per
devices not here yet.
2000-10-18 17:06:52 +00:00
bouyer e353a6d9b2 Adapt for reselect handling from the script. While here, fix typo
(SIOP_SCXFER -> SIOP_SXFER).
2000-10-06 16:35:13 +00:00
bouyer 10afc4e0a8 create a funcion, siop_busreset(), to reset the scsibus.
Reset the scsi bus at attach time, to be sure all devices start in narrow/async
mode.
Defer sync/wide negotiation until after whe have a valid
xs->sc_link->device_softc, so that we can honnor the NOSYNC/NOWIDE quirks.
2000-07-24 15:15:00 +00:00
bouyer 221a99f782 Handle "scsi bus mode change" interrupts on 895 and higther.
Thanks to Hal Murray for reporting the problem and testing the fix.
2000-06-12 20:13:41 +00:00
bouyer 2904666f56 Allocate dynamically the command block descriptors. 2000-05-23 17:08:07 +00:00
bouyer 863014523a - split siop.c in script-dependant vs script-independant part, for
comming esiop
- add a reset callback for bus-dependant registers settings
2000-05-15 07:48:24 +00:00