mode spec (half of what had been a 32 bit 'driver reserved' value is now
a 16 bit handle that is used to correllate CTIOs with a specific ATIO- we
have to make sure we pass it on thru. Propagate back proper at2_entry
format (instead of one derived from an at_entry). Handles are 16, not
32 bits.
stray newline in foormat string. Note the we don't support 2nd channel
on 12160/1280 cards in target mode yet. Clean up target mode so that it
more or less works again. Remove nearly all printfs and use device_printf
or isp_prt. Handles are 16- not 32 bits now. We can now cope with at least
the latest Qlogic 1040 Target Mode f/w (12160/1X80 not working yet).
Reset FPM/FBM for 2X00 cards in isp_reset. Implement HBA role support.
Some isp_prt argument cleanup. Change some fabric stuff to use targets
0..125 in F-port topologies, notice when fabric devices go away.
Register FC4 types with the name server (so we can work with McData
switches). Yet again fool around with some more WWN default stuff.
is gone and replaced by ISPASYNC_LOGGED_INOUT, and ISPASYNC_CHANGE_NOTIFY
covers both fabric and local loop stuff.
Declare isp_rpt to be a printf like function (for GNUC compilers only).
Hey- it helped catch some missing arg cases.
Add a test against isp->isp_osinfo.islocked prior to trying to see
whether --isp->isp_osinfo.islocked is zero to cause us to unlock
(non-SMPLOCK case). Add USEC_SLEEP macro support. Change the location at
which we define ISP_LOCK/ISP_UNLOCK macros. Roll minor revision again.
(specifically, how many entries we've looked at so far). Maintain
interrupt instrumentation. Use USEC_SLEEP instead of USEC_DELAY in
a number of places (this allows us to drop locks and sleep instead
of spin). Track changes to configuration options for topology preference.
Fix botched order of printout for Channel, Target, Lun.
when we're done reading it (makes checking things easier).
Before calling isp_notify_ack make sure we're at RUNSTATE-
elsewise we can be responding to LIPs or SCSI bus resets
before we've finished some of the wiring.
Oops! If we're deciding a command is now really dead, make *darned*
sure that it really is by issuing a ISPCTL_ABORT_CMD just on the
off chance the f/w will start it up again and, ha ha, start using
the DMA resources we gave it but are now taking away.
Clean up ISPCTL_ABORT_CMD function to not be too chatty if it succeeds,
or even if it fails with INVALID_PARM (which just means that the handle
doesn't refer to an active commane).
Add 8 bits of volatile mailbox busy mask- this will be the bitmask
of output mailbox values we want to get back out of the chip once
a mailbox command is done. Add storage for the maximum number of
output mailbox registers to the softc. Set ISP_MAX_LUNS to be off
of new isp_maxluns tag in softc. Change our 'fabdev' tag to
'loggedin'. Increase size (and add defines for) topology storage.
Roll minor version numbers.
based upon Qlogic chip type). Define maximum mailboxes. Add INT_PENDING_MASK
macro. Change mailbox offset macro name.
cleanup i_int_X vs. uint_X definitions
The storage for WWN from NVRAM is actually the PORT WWN, not the NODE WWN.
with the STRNCAT function.
Add an isp_handle_index function- this is prepatory to loading more into
the handle (i.e., generation number), so we will now need a function that
will take a handle and return a flat index [ 0 .. maxhandles-1 ] for
auxillary routines that need an index to get at buddy store values
(like dma maps or xflist pointers).
(we always support fabric now). Remove SCCLUN definition (we always
support SCCLUN now, if we load the f/w). Add typedef definition of an
external firmware fetch function.
Clean up private storage so that we can use the spriv_field0 to
store a bitmask of whether we've set a value into ccb->ccb_h.status,
whether we're in the watchdog routine for this command now, whether
we've set a grace period for this command and whether this command is
actually done.
See comments of rev 1.45 of isp.c for more complete information.
Add in isp_lock/isp_unlock inlines. Add in an islocked/intsok flag
to isp_osinfo substructure (all in prep for SMP). Define MBOX_WAIT_COMPLETE
and MBOX_NOTIFY_COMPLETE macros so that we can now (temp) use tsleep
to wait for mailbox completion. Requires us to guess whether we're
servicing an interrupt or not- will use intr_nesting_level.
Add local strncat function.