937a7a3ed9
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 |
||
---|---|---|
.. | ||
Makefile | ||
Makefile.tcdevs | ||
asc.c | ||
asc_ioasic.c | ||
asc_tc.c | ||
asc_tcds.c | ||
ascvar.h | ||
bba.c | ||
cfb.c | ||
devlist2h.awk | ||
files.tc | ||
if_fta.c | ||
if_le_ibus.c | ||
if_le_ioasic.c | ||
if_le_tc.c | ||
if_levar.h | ||
ioasic_subr.c | ||
ioasicreg.h | ||
ioasicvar.h | ||
mfb.c | ||
nvrreg.h | ||
px.c | ||
pxg.c | ||
sfb.c | ||
sfbplus.c | ||
sfbreg.h | ||
stic.c | ||
sticreg.h | ||
sticvar.h | ||
tc.c | ||
tcdevs | ||
tcdevs.h | ||
tcdevs_data.h | ||
tcds.c | ||
tcdsreg.h | ||
tcdsvar.h | ||
tcreg.h | ||
tcvar.h | ||
tfb.c | ||
xcfb.c | ||
zs_ioasic.c | ||
zs_ioasicvar.h | ||
zskbd.c | ||
zsms.c |