summaryrefslogtreecommitdiff
path: root/sys/dev/mpt
Commit message (Collapse)AuthorAgeFilesLines
* MFC: 1.51Doug Ambrisko2007-09-211-1/+1
| | | | | | | | | | | | Fix an incorrect PCI device id. The current value conflicts with the mfi(4) LSI MegaSAS RAID card. Looking at the Linux driver for the mpt(4) it should be 0x0062 and not 0x0060. Tested with an mfi card of this device id. Reviewed by: scottl Notes: svn path=/stable/6/; revision=172287
* MFC: MPI 1.5.16, SAS topology scan, SATA WC enable tunableScott Long2007-06-0512-489/+1108
| | | | Notes: svn path=/stable/6/; revision=170348
* MFC: Hide bus reset announcements within bootverbose.Matt Jacob2007-04-131-2/+7
| | | | Notes: svn path=/stable/6/; revision=168679
* feedback from RELENG_5 portMatt Jacob2007-03-112-0/+8
| | | | Notes: svn path=/stable/6/; revision=167426
* Synchronize with -current as of this date. There is a lot of sourceMatt Jacob2007-03-087-519/+875
| | | | | | | | churn, but it's there to make diffs in the future easier. There isn't much substantive change that springs to mind. Notes: svn path=/stable/6/; revision=167320
* MFC: All of those added MODULE_DEPEND clauses to make CAM and theMatt Jacob2006-12-142-0/+2
| | | | | | | | | actual hardware busses get pulled in if they're modules PRs: 106536, 106543 Notes: svn path=/stable/6/; revision=165194
* MFC 1.34: Connect QFULL events up with decreasing openings.Matt Jacob2006-09-271-2/+32
| | | | | | | Approved by: re (mux) Notes: svn path=/stable/6/; revision=162702
* MFC -current code, to wit to:Matt Jacob2006-09-167-119/+488
| | | | | | | | | | | | | | | | | | a) Support PCI-Express Fibre Channel Card b) Fix Target mode support to havea 'role' again (which will rewrite NVRAM if NVRAM doesn't match roles), will not wedge the SAN if we have target mode but don't enable any luns, add sysctl OIDs that will say what WWPN/WWNN and roles there are, and add a 'Ready' handler that will add target mode resource *after* all card instances are enabled. c) Fix panics where we time out on synchronous MPT commands and then later do a double free of that command. Approved by: re Notes: svn path=/stable/6/; revision=162342
* MFC: Fixes related for VMWare.Matt Jacob2006-06-274-28/+51
| | | | Notes: svn path=/stable/6/; revision=159989
* MFC 1.34: support for FC919XMatt Jacob2006-06-171-0/+8
| | | | Notes: svn path=/stable/6/; revision=159685
* MFC 1.24- add ability to reset individual targets and negotiate specific rates.Matt Jacob2006-06-131-50/+48
| | | | Notes: svn path=/stable/6/; revision=159577
* MFC -current mpt driver to support FC target mode and SAS HBAs plusMatt Jacob2006-06-0819-1673/+7514
| | | | | | | probably correct U320 negotiations. Notes: svn path=/stable/6/; revision=159406
* This commit was manufactured by cvs2svn to create branch 'RELENG_6'.cvs2svn2006-02-281-0/+288
| | | | Notes: svn path=/stable/6/; revision=156111
* This commit was manufactured by cvs2svn to create branch 'RELENG_6'.cvs2svn2006-01-264-0/+928
| | | | Notes: svn path=/stable/6/; revision=154861
* MFC: Sync with HEAD. This fixes an out-of-bounds access that was caught byScott Long2005-10-277-25/+23
| | | | | | | | | INVARIANTS, and it synchronizes the license. Approved by: re Notes: svn path=/stable/6/; revision=151751
* MFC: Restore the 929X support that got nuked in mergeMatt Jacob2005-09-121-0/+7
| | | | | | | Approved by: re Notes: svn path=/stable/6/; revision=150016
* Massive overhaul of MPT Fusion driver:Scott Long2005-07-1021-2955/+7119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o Add timeout error recovery (from a thread context to avoid the deferral of other critical interrupts). o Properly recover commands across controller reset events. o Update the driver to handle events and status codes that have been added to the MPI spec since the driver was originally written. o Make the driver more modular to improve maintainability and support dynamic "personality" registration (e.g. SCSI Initiator, RAID, SAS, FC, etc). o Shorten and simplify the common I/O path to improve driver performance. o Add RAID volume and RAID member state/settings reporting. o Add periodic volume resynchronization status reporting. o Add support for sysctl tunable resync rate, member write cache enable, and volume transaction queue depth. Sponsored by ---------------- Avid Technologies Inc: SCSI error recovery, driver re-organization, update of MPI library headers, portions of dynamic personality registration, and misc bug fixes. Wheel Open Technologies: RAID event notification, RAID member pass-thru support, firmware upload/download support, enhanced RAID resync speed, portions of dynamic personality registration, and misc bug fixes. Detailed Changes ================ mpt.c mpt_cam.c mpt_raid.c mpt_pci.c: o Add support for personality modules. Each module exports load, and unload module scope methods as well as probe, attach, event, reset, shutdown, and detach per-device instance methods mpt.c mpt.h mpt_pci.c: o The driver now associates a callback function (via an index) with every transaction submitted to the controller. This allows the main interrupt handler to absolve itself of any knowledge of individual transaction/response types by simply calling the callback function "registered" for the transaction. We use a callback index instead of a callback function pointer in each requests so we can properly handle responses (e.g. event notifications) that are not associated with a transaction. Personality modules dynamically register their callbacks with the driver core to receive the callback index to use for their handlers. o Move the interrupt handler into mpt.c. The ISR algorithm is bus transport and OS independent and thus had no reason to be in mpt_pci.c. o Simplify configuration message reply handling by copying reply frame data for the requester and storing completion status in the original request structure. o Add the mpt_complete_request_chain() helper method and use it to implement reset handlers that must abort transactions. o Keep track of all pending requests on the new requests_pending_list in the softc. o Add default handlers to mpt.c to handle generic event notifications and controller reset activities. The event handler code is largely the same as in the original driver. The reset handler is new and terminates any pending transactions with a status code indicating the controller needs to be re-initialized. o Add some endian support to the driver. A complete audit is still required for this driver to have any hope of operating in a big-endian environment. o Use inttypes.h and __inline. Come closer to being style(9) compliant. o Remove extraneous use of typedefs. o Convert request state from a strict enumeration to a series of flags. This allows us to, for example, tag transactions that have timed-out while retaining the state that the transaction is still in-flight on the controller. o Add mpt_wait_req() which allows a caller to poll or sleep for the completion of a request. Use this to simplify and factor code out from many initialization routines. We also use this to sleep for task management request completions in our CAM timeout handler. mpt.c: o Correct a bug in the event handler where request structures were freed even if the request reply was marked as a continuation reply. Continuation replies indicate that the controller still owns the request and freeing these replies prematurely corrupted controller state. o Implement firmware upload and download. On controllers that do not have dedicated NVRAM (as in the Sun v20/v40z), the firmware image is downloaded to the controller by the system BIOS. This image occupies precious controller RAM space until the host driver fetches the image, reducing the number of concurrent I/Os the controller can processes. The uploaded image is used to re-program the controller during hard reset events since the controller cannot fetch the firmware on its own. Implementing this feature allows much higher queue depths when RAID volumes are configured. o Changed configuration page accessors to allow threads to sleep rather than busy wait for completion. o Removed hard coded data transfer sizes from configuration page routines so that RAID configuration page processing is possible. mpt_reg.h: o Move controller register definitions into a separate file. mpt.h: o Re-arrange includes to allow inlined functions to be defined in mpt.h. o Add reply, event, and reset handler definitions. o Add softc fields for handling timeout and controller reset recovery. mpt_cam.c: o Move mpt_freebsd.c to mpt_cam.c. Move all core functionality, such as event handling, into mpt.c leaving only CAM SCSI support here. o Revamp completion handler to provide correct CAM status for all currently defined SCSI MPI message result codes. o Register event and reset handlers with the MPT core. Modify the event handler to notify CAM of bus reset events. The controller reset handler will abort any transactions that have timed out. All other pending CAM transactions are correctly aborted by the core driver's reset handler. o Allocate a single request up front to perform task management operations. This guarantees that we can always perform a TMF operation even when the controller is saturated with other operations. The single request also serves as a perfect mechanism of guaranteeing that only a single TMF is in flight at a time - something that is required according to the MPT Fusion documentation. o Add a helper function for issuing task management requests to the controller. This is used to abort individual requests or perform a bus reset. o Modify the CAM XPT_BUS_RESET ccb handler to wait for and properly handle the status of the bus reset task management frame used to reset the bus. The previous code assumed that the reset request would always succeed. o Add timeout recovery support. When a timeout occurs, the timed-out request is added to a queue to be processed by our recovery thread and the thread is woken up. The recovery thread processes timed-out command serially, attempting first to abort them and then falling back to a bus reset if an abort fails. o Add calls to mpt_reset() to reset the controller if any handshake command, bus reset attempt or abort attempt fails due to a timeout. o Export a secondary "bus" to CAM that exposes all volume drive members as pass-thru devices, allowing CAM to perform proper speed negotiation to hidden devices. o Add a CAM async event handler tracking the AC_FOUND_DEVICE event. Use this to trigger calls to set the per-volume queue depth once the volume is fully registered with CAM. This is required to avoid hitting firmware limits on volume queue depth. Exceeding the limit causes the firmware to hang. mpt_cam.h: o Add several helper functions for interfacing to CAM and performing timeout recovery. mpt_pci.c: o Disable interrupts on the controller before registering and enabling interrupt delivery to the OS. Otherwise we risk receiving interrupts before the driver is ready to receive them. o Make use of compatibility macros that allow the driver to be compiled under 4.x and 5.x. mpt_raid.c: o Add a per-controller instance RAID thread to perform settings changes and query status (minimizes CPU busy wait loops). o Use a shutdown handler to disable "Member Write Cache Enable" (MWCE) setting for RAID arrays set to enable MWCE During Rebuild. o Change reply handler function signature to allow handlers to defer the deletion of reply frames. Use this to allow the event reply handler to queue up events that need to be acked if no resources are available to immediately ack an event. Queued events are processed in mpt_free_request() where resources are freed. This avoids a panic on resource shortage. o Parse and print out RAID controller capabilities during driver probe. o Define, allocate, and maintain RAID data structures for volumes, hidden member physical disks and spare disks. o Add dynamic sysctls for per-instance setting of the log level, array resync rate, array member cache enable, and volume queue depth. mpt_debug.c: o Add mpt_lprt and mpt_lprtc for printing diagnostics conditioned on a particular log level to aid in tracking down driver issues. o Add mpt_decode_value() which parses the bits in an integer value based on a parsing table (mask, value, name string, tuples). mpilib/*: o Update mpi library header files to latest distribution from LSI. Submitted by: gibbs Approved by: re Notes: svn path=/head/; revision=147883
* Remove bus_{mem,p}io.h and related code for a micro-optimization on i386Yoshihiro Takahashi2005-05-292-4/+0
| | | | | | | | | and amd64. The optimization is a trivial on recent machines. Reviewed by: -arch (imp, marcel, dfr) Notes: svn path=/head/; revision=146734
* Use BUS_PROBE_DEFAULT for pci probe return valueWarner Losh2005-03-051-1/+1
| | | | Notes: svn path=/head/; revision=143158
* netchild's mega-patch to isolate compiler dependencies into a centralJoerg Wunsch2005-03-021-1/+5
| | | | | | | | | | | | | | | | | | | place. This moves the dependency on GCC's and other compiler's features into the central sys/cdefs.h file, while the individual source files can then refer to #ifdef __COMPILER_FEATURE_FOO where they by now used to refer to #if __GNUC__ > 3.1415 && __BARC__ <= 42. By now, GCC and ICC (the Intel compiler) have been actively tested on IA32 platforms by netchild. Extension to other compilers is supposed to be possible, of course. Submitted by: netchild Reviewed by: various developers on arch@, some time ago Notes: svn path=/head/; revision=143063
* Start each of the license/copyright comments with /*-, minor shuffle of linesWarner Losh2005-01-0615-15/+15
| | | | Notes: svn path=/head/; revision=139749
* Add support for FC929X, which apparently is just a PCI-X version of FC929.Maxim Sobolev2004-12-181-0/+7
| | | | | | | MFC after: 3 days Notes: svn path=/head/; revision=139019
* Correct style nit in rev 1.17.David E. O'Brien2004-08-251-2/+2
| | | | Notes: svn path=/head/; revision=134299
* Pick up changes in rev 1.8 of src/sys/dev/ic/mpt_netbsd.c from NetBSD.Doug White2004-08-241-1/+3
| | | | | | | | | | | | | | Set the DMA SGL length correctly if the DMA request must be chained because it is too large to fit in one SGL. This should fix this driver for some Dell Precision systems. RELENG_5 candidate. PR: kern/66479 Submitted by: HITOSHI Osada <qfh02545@nifty.com> Notes: svn path=/head/; revision=134235
* Fix where my automated script blew the SCM ID format conversion.David E. O'Brien2004-08-213-9/+9
| | | | Notes: svn path=/head/; revision=134123
* Remove erroneous semicolons.Stefan Farfeleder2004-07-131-2/+2
| | | | Notes: svn path=/head/; revision=132107
* Convert callers to the new bus_alloc_resource_any(9) API.Nate Lawson2004-03-171-2/+2
| | | | | | | | Submitted by: Mark Santcroos <marks@ripe.net> Reviewed by: imp, dfr, bde Notes: svn path=/head/; revision=127135
* These are changes to allow to use the Intel C/C++ compiler (lang/icc)Tom Rhodes2004-03-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | to build the kernel. It doesn't affect the operation if gcc. Most of the changes are just adding __INTEL_COMPILER to #ifdef's, as icc v8 may define __GNUC__ some parts may look strange but are necessary. Additional changes: - in_cksum.[ch]: * use a generic C version instead of the assembly version in the !gcc case (ASM code breaks with the optimizations icc does) -> no bad checksums with an icc compiled kernel Help from: andre, grehan, das Stolen from: alpha version via ppc version The entire checksum code should IMHO be replaced with the DragonFly version (because it isn't guaranteed future revisions of gcc will include similar optimizations) as in: ---snip--- Revision Changes Path 1.12 +1 -0 src/sys/conf/files.i386 1.4 +142 -558 src/sys/i386/i386/in_cksum.c 1.5 +33 -69 src/sys/i386/include/in_cksum.h 1.5 +2 -0 src/sys/netinet/igmp.c 1.6 +0 -1 src/sys/netinet/in.h 1.6 +2 -0 src/sys/netinet/ip_icmp.c 1.4 +3 -4 src/contrib/ipfilter/ip_compat.h 1.3 +1 -2 src/sbin/natd/icmp.c 1.4 +0 -1 src/sbin/natd/natd.c 1.48 +1 -0 src/sys/conf/files 1.2 +0 -1 src/sys/conf/files.amd64 1.13 +0 -1 src/sys/conf/files.i386 1.5 +0 -1 src/sys/conf/files.pc98 1.7 +1 -1 src/sys/contrib/ipfilter/netinet/fil.c 1.10 +2 -3 src/sys/contrib/ipfilter/netinet/ip_compat.h 1.10 +1 -1 src/sys/contrib/ipfilter/netinet/ip_fil.c 1.7 +1 -1 src/sys/dev/netif/txp/if_txp.c 1.7 +1 -1 src/sys/net/ip_mroute/ip_mroute.c 1.7 +1 -2 src/sys/net/ipfw/ip_fw2.c 1.6 +1 -2 src/sys/netinet/igmp.c 1.4 +158 -116 src/sys/netinet/in_cksum.c 1.6 +1 -1 src/sys/netinet/ip_gre.c 1.7 +1 -2 src/sys/netinet/ip_icmp.c 1.10 +1 -1 src/sys/netinet/ip_input.c 1.10 +1 -2 src/sys/netinet/ip_output.c 1.13 +1 -2 src/sys/netinet/tcp_input.c 1.9 +1 -2 src/sys/netinet/tcp_output.c 1.10 +1 -1 src/sys/netinet/tcp_subr.c 1.10 +1 -1 src/sys/netinet/tcp_syncache.c 1.9 +1 -2 src/sys/netinet/udp_usrreq.c 1.5 +1 -2 src/sys/netinet6/ipsec.c 1.5 +1 -2 src/sys/netproto/ipsec/ipsec.c 1.5 +1 -1 src/sys/netproto/ipsec/ipsec_input.c 1.4 +1 -2 src/sys/netproto/ipsec/ipsec_output.c and finally remove sys/i386/i386 in_cksum.c sys/i386/include in_cksum.h ---snip--- - endian.h: * DTRT in C++ mode - quad.h: * we don't use gcc v1 anymore, remove support for it Suggested by: bde (long ago) - assym.h: * avoid zero-length arrays (remove dependency on a gcc specific feature) This change changes the contents of the object file, but as it's only used to generate some values for a header, and the generator knows how to handle this, there's no impact in the gcc case. Explained by: bde Submitted by: Marius Strobl <marius@alchemy.franken.de> - aicasm.c: * minor change to teach it about the way icc spells "-nostdinc" Not approved by: gibbs (no reply to my mail) - bump __FreeBSD_version (lang/icc needs to know about the changes) Incarnations of this patch survive gcc compiles since a loooong time, I use it on my desktop. An icc compiled kernel works since Nov. 2003 (exceptions: snd_* if used as modules), it survives a build of the entire ports collection with icc. Parts of this commit contains suggestions or submissions from Marius Strobl <marius@alchemy.franken.de>. Reviewed by: -arch Submitted by: netchild Notes: svn path=/head/; revision=126891
* Catch a few places where NULL (pointer) was used where 0 (integer) wasPeter Wemm2003-12-231-1/+1
| | | | | | | expected. Notes: svn path=/head/; revision=123740
* Use PCIR_BAR(x) instead of PCIR_MAPS.John Baldwin2003-09-021-15/+15
| | | | | | | | Glanced over by: imp, gibbs Tested by: i386 LINT Notes: svn path=/head/; revision=119690
* Use __FBSDID().David E. O'Brien2003-08-244-9/+17
| | | | | | | Also some minor style cleanups. Notes: svn path=/head/; revision=119418
* Prefer new location of pci include files (which have only been in theWarner Losh2003-08-221-2/+2
| | | | | | | | tree for two or more years now), except in a few places where there's code to be compatible with older versions of FreeBSD. Notes: svn path=/head/; revision=119285
* Mega busdma API commit.Scott Long2003-07-011-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add two new arguments to bus_dma_tag_create(): lockfunc and lockfuncarg. Lockfunc allows a driver to provide a function for managing its locking semantics while using busdma. At the moment, this is used for the asynchronous busdma_swi and callback mechanism. Two lockfunc implementations are provided: busdma_lock_mutex() performs standard mutex operations on the mutex that is specified from lockfuncarg. dftl_lock() is a panic implementation and is defaulted to when NULL, NULL are passed to bus_dma_tag_create(). The only time that NULL, NULL should ever be used is when the driver ensures that bus_dmamap_load() will not be deferred. Drivers that do not provide their own locking can pass busdma_lock_mutex,&Giant args in order to preserve the former behaviour. sparc64 and powerpc do not provide real busdma_swi functions, so this is largely a noop on those platforms. The busdma_swi on is64 is not properly locked yet, so warnings will be emitted on this platform when busdma callback deferrals happen. If anyone gets panics or warnings from dflt_lock() being called, please let me know right away. Reviewed by: tmm, gibbs Notes: svn path=/head/; revision=117126
* Merge common XPT_CALC_GEOMETRY functions into a single convenience function.Nate Lawson2003-06-141-13/+1
| | | | | | | | | | | | | | | | Devices below may experience a change in geometry. * Due to a bug, aic(4) never used extended geometry. Changes all drives >1G to now use extended translation. * sbp(4) drives exactly 1 GB in size now no longer use extended geometry. * umass(4) drives exactly 1 GB in size now no longer use extended geometry. For all other controllers in this commit, this should be a no-op. Looked over by: scottl Notes: svn path=/head/; revision=116351
* Add change that allows PAE to work.Matt Jacob2003-06-121-1/+2
| | | | | | | Submitted by: Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp> Notes: svn path=/head/; revision=116266
* Update MPILIB from code received from LSI. Make changes in the rest ofMatt Jacob2003-06-039-158/+518
| | | | | | | the driver based upon some somewhat gratuitous name changes. Notes: svn path=/head/; revision=115778
* Fix compile: the type is spelled bus_dmasync_op_t rather thanJohn Baldwin2003-05-271-3/+3
| | | | | | | | | bus_dmamap_sync_t. With hat: re Notes: svn path=/head/; revision=115350
* Bring back bus_dmasync_op_t. It is now a typedef to an int, though theScott Long2003-05-271-3/+3
| | | | | | | | | | | BUS_DMASYNC_ definitions remain as before. The does not change the ABI, and reverts the API to be a bit more compatible and flexible. This has survived a full 'make universe'. Approved by: re (bmah) Notes: svn path=/head/; revision=115343
* I deserve a big pointy hat for having missed all those referencesMaxime Henrion2003-04-101-3/+3
| | | | | | | to bus_dmasync_op_t in my last commit. Notes: svn path=/head/; revision=113350
* PAGE_SIZE is unsigned on all our platforms, and is a long on some.David E. O'Brien2003-02-231-2/+2
| | | | | | | | | So cast to u_long before printing out and use a matching specifier. Tested on: sparc64 Notes: svn path=/head/; revision=111346
* Back out M_* changes, per decision of the TRB.Warner Losh2003-02-191-2/+2
| | | | | | | Approved by: trb Notes: svn path=/head/; revision=111119
* Remove M_TRYWAIT/M_WAITOK/M_WAIT. Callers should use 0.Alfred Perlstein2003-01-211-2/+2
| | | | | | | Merge M_NOWAIT/M_DONTWAIT into a single flag M_NOWAIT. Notes: svn path=/head/; revision=109623
* Be consistent about functions being static.Poul-Henning Kamp2002-10-161-1/+1
| | | | | | | Spotted by: FlexeLint. Notes: svn path=/head/; revision=105215
* Code cleanup: use mpt_prt instead of device_printf.Matt Jacob2002-09-245-222/+171
| | | | Notes: svn path=/head/; revision=103914
* Parameterize MPT_MAX_REQUESTS based upon device type (FC has Global CreditsMatt Jacob2002-09-234-82/+99
| | | | | | | | | | | of 1024- Ultra4 256). Rename 'requests' tag to 'request_pool' for clarity. Make sure we do correct xpt_freeze_simq/CAM_RELEASE_SIMQ if we run out of chip resources. MFC after: 6 days Notes: svn path=/head/; revision=103871
* Wads more cleanup...Matt Jacob2002-09-231-176/+233
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In mpttimeout, call mpt_intr just on the offchance that we missed an interrupt. We can check to see whether or not the command that is timing out got completed. When we *do* decide to timeout a command, set the command state to REQ_TIMEOUT and then invoke another timeout (hz/10)- mpttimeout2. This allows us to catch a couple cases we've seen where the command we timed out on in fact is ready to be completed by the firmware. In any case, it's only after mpttimeout2 is called that we actually take down the private state and free the request itself. CAM has been notified in mpttimeout anyway. This whole area should be redone, but that will take 105% of my available game time for this month. Fix a couple of missing (and not useful, at presnet) CAMLOCK_2_MPTLOCK and MPTLOCK_2_CAMLOCK locations. Split mpt_notify into mpt_ctlop, which handles all reply completions that have 0x800000000 or'd into the ContextID. This function can, in fact, call mpt_event_notify_reply, which handles the traditional async event notifications. While we're at it, put in the extremely important (but currently untested) code that send back an Ack to an Event Notification (if the Event Notification is marked with AckRequired). Note that an Ack also generates another ctlop completion, tra la. Fix up mpt_done substantially to try and get how we plug into CAM correctly done. Remove bogus CAM_RELEASE_SIMQ settings. Do some cleanups in mpt_action that are related to speed negotiation for Ultra4 cards. This is an area that is still quite fragile and worrisome as config data being read back often doesn't make sense or jibe with the documentation. At any rate, after these changes were done, I was finally able to get Lars Eggert's dual 320M disk system to stay up under load all weekend- hopefully we're in good enough for now shape. MFC after: 1 week Notes: svn path=/head/; revision=103831
* Recognize the single channel 2Gb card (FC919)- thanks to LSI Logic forMatt Jacob2002-09-231-2/+14
| | | | | | | | | | | | pointing this out. In mpt_intr, don't try and pop a reply queue element out *unless* the interrupt status says you might have one. MFC after: 1 week Notes: svn path=/head/; revision=103829
* We do not need to expose mpt_notify outside of mpt_freebsd.c.Matt Jacob2002-09-231-1/+0
| | | | | | | MFC after: 1 week Notes: svn path=/head/; revision=103828
* When freeing a request, zero out the sequence number.Matt Jacob2002-09-231-2/+3
| | | | | | | | | | | | | | | Define the CFG_DAGA_OFF offset as 128 bytes instead of 40- gives us a more reasonable headroom. When reading a config page, zero out the entire request area- not just the length of the request. This is because we cleverly (cheezily) return configuration data back into the allocated request area, so it's nice to make sure we start with a clean area to write on. MFC after: 1 week Notes: svn path=/head/; revision=103827
* Don't do transition locking (i.e., CAM->MPT->CAM)- Peter claimed that ia64Matt Jacob2002-09-031-0/+10
| | | | | | | | | chokes the chicken with this. Submitted by: wemm@freebsd.org Notes: svn path=/head/; revision=102882