opnsense-src/sys/dev/isp
Matt Jacob 94dff77179 More rototilling with target mode in an attemp to get multiple
CCB at a time outstanding reliable. It's not there yet, but this
is the direction to go in so might as well commit. So far,
multiple at a time CCBs work (see ISP_INTERNAL_TARGET test mode),
but it fails if there are more downstream than the SIM wants
to handle and SRR is sort of confused when this happens, plus
it is not entirely quite clear what one does if a CCB/CTIO fails
and you have more in flight (that don't fail, say) and more queued
up at the SIM level that haven't been started yet.

Some of this is driven because there apparently is no flow control
to requeue XPT_CONTINUE_IO requests like there are for XPT_SCSI_IO
requests. It is also more driven in that the few target mode
periph drivers there are are not really set up for handling pushback-
heck most of them don't even check for errors (and what would they
really do with them anyway? It's the initiator's problem, really....).

The data transfer arithmetic has been worked over again to handle
multiple outstanding commands, so you have a notion of what's been
moved already as well as what's currently in flight. It turns that
this led to uncovering a REPORT_LUNS bug in the ISP_INTERNAL_TARGET
code which was sending back 24 bytes of rpl data instead of the
specified 16. What happened furthermore here is that sending back
16 bytes and reporting an overrun of 8 bytes made the initiator
(running FC-Tape aware f/w) mad enough to request, and keep
requesting, another FCP response (I guess it didn't like the answer
so kept asking for it again).

Sponsored by: Spectralogic
MFC after:	1 month
2012-08-08 18:24:33 +00:00
..
DriverManual.txt - add a missing "be" and "in" 2011-11-11 22:27:09 +00:00
Hardware.txt
isp.c ----------- 2012-07-28 20:06:29 +00:00
isp_freebsd.c More rototilling with target mode in an attemp to get multiple 2012-08-08 18:24:33 +00:00
isp_freebsd.h More rototilling with target mode in an attemp to get multiple 2012-08-08 18:24:33 +00:00
isp_ioctl.h Add 8Gb support (isp_2500). Fix a fair number of configuration and 2009-08-01 01:04:26 +00:00
isp_library.c ----------- 2012-07-28 20:06:29 +00:00
isp_library.h ----------- 2012-07-28 20:06:29 +00:00
isp_pci.c Oops. We only do allocate room for extended commands 2012-08-03 14:25:35 +00:00
isp_sbus.c Add detach logic to SBus variant. 2012-08-04 00:00:30 +00:00
isp_stds.h ----------- 2012-07-28 20:06:29 +00:00
isp_target.c ----------- 2012-07-28 20:06:29 +00:00
isp_target.h ----------- 2012-07-28 20:06:29 +00:00
ispmbox.h ----------- 2012-07-28 20:06:29 +00:00
ispreg.h Prepare for FC-Tape support. This involved doing a lot of little cleanups 2012-06-17 21:39:40 +00:00
ispvar.h ----------- 2012-07-28 20:06:29 +00:00