freebsd-dev/sys/dev/isp
Matt Jacob f48ce1882f Add a isp_target_putback_atio- we aren't using CCINCR at this time, so
we need a function that tells the Qlogic f/w that a target mode command
is done, so increase the resource count for that lun. Add in a timeout
function to kick the putback again if we fail to do it the first time (we
may not have the request queue space for ATIO push). Split the function
isp_handle_platform_ctio into two parts so that the timeout function for
the ATIO push or isp_handle_platform_ctio can inform CAM that the requested
CTIO(s) are now done.

Clean up (cough) residual handling. What we need for Fibre Channel
is to preserve the at_datalen field from the original incoming ATIO
so we can calculate a 'true' residual.  Unfortunately, we're not
guaranteed to get that back from CAM. We'll *try* to find it hiding
in the periph_priv field (layering violation)- but if an ATIO was
passed in from user land- forget it. This means that we'll probably
get residuals wrong for Fibre Channel commands we're completing
with an error. It's too late to 4.1 release to fix this- too bad.
Luckily the only device we'd really care about this occurring on
is a tape device and they're still so rare as FC attached devices
that this can be considered an untested combination anyway.

Remove all CCINCR usage (resource autoreplenish). When we've proved
to ourself that things are working properly, we can add it back
in.

Make sure we propage 'suggested' sense data from the incoming ATIO
into the created system ATIO- and set sense_len appropriately.
Correctly propagate tag values.

Fall back to the model of generating (well, the functions in isp_pci.c
do the work) multiple CTIOs based upon what we get from XPT. Instead
of being able to pair Qlogic generated ATIOs with CAM ATIOs, and then
to pair CAM CTIOs with Qlogic CTIOs, we have to take the CTIO passed
to us from XPT, and if it implies that we have to generate extra
Qlogic CTIOs, so be it. This means that we have to wait until the
last CTIO in a sequence we generated completes before calling xpt_done.

Executive summary- target mode actually now pretty much works well
enough to tell folks about.
2000-07-18 06:58:28 +00:00
..
isp_freebsd.c Add a isp_target_putback_atio- we aren't using CCINCR at this time, so 2000-07-18 06:58:28 +00:00
isp_freebsd.h Add in isp_lock/isp_unlock inlines. Add in an islocked/intsok flag 2000-07-04 01:04:35 +00:00
isp_inline.h Fix completely stupid and idiotiuc sprintfs in isp_inline.h with 2000-07-04 01:06:23 +00:00
isp_pci.c Keep interrupts blocked for all of isp_pci_attach. Redo DMA routines 2000-07-18 06:40:22 +00:00
isp_target.c Remove all ISP2100_SCCLUN define based code and replace it with runtime 2000-06-18 04:48:28 +00:00
isp_target.h add "disable autodisconnect" flags 2000-06-18 04:44:41 +00:00
isp_tpublic.h Some minor tweaklets. 2000-04-21 02:05:54 +00:00
isp.c Raise debug level for some messages. Fix botched inversion 2000-07-18 06:46:48 +00:00
ispmbox.h add MBOX_GET_RESOURCE_COUNT command 2000-06-18 04:41:14 +00:00
ispreg.h Add mailbox bitmask macros (numbers of available mailbox registers 2000-06-27 19:15:43 +00:00
ispvar.h Remove obsolete isp_dogactive tag. 2000-07-04 01:06:42 +00:00
MAINTAINER add MAINTAINER file for clarity 2000-01-13 18:45:14 +00:00