summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp/isp_target.c
Commit message (Collapse)AuthorAgeFilesLines
* Note for ATIOs returned because of BDRs or Bus Resets for which bus thismjacob2001-09-041-20/+34
| | | | | | | | | | applies to. Do more bus # foo things. Acknowledge Immediate Notifies right away prior to throwing events upstream (where they're currently being ignored, *groan*) Capture ASYNC_LIP_F8 as with ASYNC_LIP_OCCURRED. Don't percolate them upstream as if they were BUS RESETS- they're not.
* Because we now store SCCLUN capabilities in firmware attributes, getmjacob2001-09-031-16/+19
| | | | | | rid of the silly test of isp_maxluns > 16 and use the attibutes directly. MFC after: 4 weeks
* Spring MegaChange #1.mjacob2001-05-281-56/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ---- Make a device for each ISP- really usable only with devfs and add an ioctl entry point (this can be used to (re)set debug levels, reset the HBA, rescan the fabric, issue lips, etc). ---- Add in a kernel thread for Fibre Channel cards. The purpose of this thread is to be woken up to clean up after Fibre Channel events block things. Basically, any FC event that casts doubt on the location or identify of FC devices blocks the queues. When, and if, we get the PORT DATABASE CHANGED or NAME SERVER DATABASE CHANGED async event, we activate the kthread which will then, in full thread context, re-evaluate the local loop and/or the fabric. When it's satisfied that things are stable, it can then release the blocked queues and let commands flow again. The prior mechanism was a lazy evaluation. That is, the next command to come down the pipe after change events would pay the full price for re-evaluation. And if this was done off of a softcall, it really could hang up the system. These changes brings the FreeBSD port more in line with the Solaris, Linux and NetBSD ports. It also, more importantly, gets us being more proactive about topology changes which could then be reflected upwards to CAM so that the periph driver can be informed sooner rather than later when things arrive or depart. --- Add in the (correct) usage of locking macros- we now have lock transition macros which allow us to transition from holding the CAM lock (Giant) and grabbing the softc lock and vice versa. Switch over to having this HBA do real locking. Some folks claim this won't be a win. They're right. But you have to start somewhere, and this will begin to teach us how to DTRT for HBAs, etc. -- Start putting in prototype 2300 support. Add back in LIP and Loop Reset as async events that each platform will handle. Add in another int_bogus instrumentation point. Do some more substantial target mode cleanups. MFC after: 8 weeks
* Perform some more Ansification. Remove and then replace the isp_putback_atiomjacob2001-04-041-84/+49
| | | | | | | | | | function- we did it a bit cleaner. We only use this if a CTIO completes with !CT_OK state. We now have managed to get away without having to poke around and trying to find the original ATIO- the csio we're using has the tag_id and lun values with it which is mostly what we need when we do the putback. Make sure we correctly propagate AT_TQAE->CT_TQAE for tags. Make sure we call ISP_DMAFREE only if we had DATA to move.
* Clean up usage- ct_reserved is really ct_syshandle now.mjacob2001-03-141-13/+13
|
* Switch to using 16 bit handles instead of 32 bit handles.mjacob2001-03-021-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | This is a pretty invasive change, but there are three good reasons to do this: 1. We'll never have > 16 bits of handle. 2. We can (eventually) enable the RIO (Reduced Interrupt Operation) bits which return multiple completing 16 bit handles in mailbox registers. 3. The !)$*)$*~)@$*~)$* Qlogic target mode for parallel SCSI spec changed such that at_reserved (which was 32 bits) was split into two pieces- and one of which was a 16 bit handle id that functions like the at_rxid for Fibre Channel (a tag for the f/w to correlate CTIOs with a particular command). Since we had to muck with that and this changed the whole handler architecture, we might as well... Propagate new at_handle on through int ct_fwhandle. Follow implications of changing to 16 bit handles. These above changes at least get Qlogic 1040 cards working in target mode again. 1080/12160 cards don't work yet. In isp.c: Prepare for doing all loop management in outer layers.
* Fix typo: wierd -> weird.asmodai2001-02-061-1/+1
| | | | There is no such thing as wierd in the english language.
* some copyright cleanupsmjacob2000-09-211-5/+2
|
* various fixesmjacob2000-08-271-4/+2
|
* Remove isp_tdebug. Change all PRINTF macros to the now commonmjacob2000-08-011-125/+117
| | | | isp_prt logging function.
* If debugging set, zero out an incoming response entrymjacob2000-07-181-1/+5
| | | | | | | 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.
* Remove all ISP2100_SCCLUN define based code and replace it with runtimemjacob2000-06-181-27/+27
| | | | | | comparisons against the tag isp_maxluns- if > 16, we're SCCLUN based. On initial regular SCSI startup, disable auto-disconnect.
* Some minor tweaklets.mjacob2000-04-211-6/+12
|
* Correctly identify which bus of dual bus SCSI adapters some target modemjacob2000-02-151-2/+8
| | | | | | commands (enable/disable/modify lun && immediate notify) we're talking about. Approved: jkh
* Correct a minor typo in error message.mjacob2000-02-111-1/+1
| | | | Approved: jkh@freebsd.org
* cleanup- it was not MI code as it should have beenmjacob2000-01-151-16/+11
|
* set default target mode debug to 0mjacob2000-01-041-1/+1
|
* These are platform independent functions for target mode support.mjacob2000-01-041-0/+1227
This is just a first pass at this and is likely to change a bit over the next month.
OpenPOWER on IntegriCloud