Commit Graph

116 Commits

Author SHA1 Message Date
tsutsui 830c0db95b NCRDMA_SETUP() should be called before NCR_SET_COUNT() and NCRCMD_DMA command
in ncr53c9x_select(). Tested with esp on SS1+ and sun3/80, and pcscp at pci.
2005-11-06 10:31:46 +00:00
christos f381db6045 - add missing const
- fix variable shadowing
- remove unneeded casts
2005-05-30 04:43:46 +00:00
perry f31bd063e9 nuke trailing whitespace 2005-02-27 00:26:58 +00:00
thorpej df9803ce96 Part 1 of a cleanup pass over the SCSI subsystem. The aim is to name
everything "scsi_*", since we really are talking about the SCSI command
set, ATAPI transport not withstanding.  Improve the names of many structures,
and prepend "SCSI_" onto all SCSI command opcodes.  Place items described
by the SCSI Primary Commands document into scsi_spc.h.
2005-02-21 00:29:06 +00:00
bouyer a480086121 pool_prime() the ncr53c9x_ecb pool with one element (this will cause one page
to be allocated anyway). scsipi can deal with resources shortage, but if this
pool goes down to 0 pages we can deadlock with the scsipi_xfer, vnode or
inode pools.
Also update a comment, despite resources accounting we can return
ATAPTER_RESOURCES_SHORTAGE here.
2004-09-10 23:44:29 +00:00
pk 4b19351352 On reset, clear state flags and the msgout queue and notify the upper layer. 2004-05-03 12:25:34 +00:00
wiz c5670263e0 Fix some typos. From Tom Cosgrove via jmc@openbsd. 2003-11-02 11:07:44 +00:00
jdolecek 467746e275 avoid strong words; use 'screw' instead 2003-11-01 17:00:49 +00:00
simonb 59fb31d7cc Remove unreachable break after return and goto statements. 2003-10-19 01:44:48 +00:00
pk 9957c167e0 Print more diagnostic info on the occassions `unexpected disconnect' and
`invalid state'.
2003-07-25 06:40:29 +00:00
petrov 7d83b6157f Comment out debug printf. 2003-04-16 18:53:50 +00:00
pk 557a5199d2 Make this driver MP-safe by using a single spin lock to guard all its entrances. 2003-02-04 20:05:11 +00:00
pk ac9d761168 The introduction of FAS366 support annihilated the `reselect-while-selecting'
workaround for the ESP100 variant.
2003-01-30 11:03:45 +00:00
petrov 94f3e9b824 Reset the driver on scsibus reset. 2002-10-06 21:35:33 +00:00
provos 0f09ed48a5 remove trailing \n in panic(). approved perry. 2002-09-27 15:35:29 +00:00
mycroft 5031fe3837 Update copyright. 2002-09-25 06:23:29 +00:00
mycroft 04f09a4b0c Additional fixes to make 16 targets work on FAS366. 2002-09-25 05:19:20 +00:00
mycroft 06c9e05c76 Oof, this driver needs a lot more work to support 16 targets. 2002-09-24 13:29:44 +00:00
mycroft b200651116 Tell the scsibus layer we have 16 targets on the FAS366. 2002-09-22 19:05:11 +00:00
petrov dc81a805ea Use driver reset in case 'internal state mismatch'. 2002-09-16 21:49:15 +00:00
petrov a413e88543 Accept WDTR from device(based on John Heasley patch for SCSI3 drive).
Do not define NCR53C9X_DEBUG.
2002-08-26 06:23:32 +00:00
petrov 3a67429963 Start SYNC/WIDE renegotiating in controller reset, rearrange debug output. 2002-08-26 05:17:48 +00:00
lukem 21ebff3b67 implement SCBUSIORESET by calling ncr53c9x_scsi_reset() 2002-06-21 13:27:49 +00:00
bouyer e5727031fb Implement mstohz() as discussed on tech-kern, and use it in SCSI drivers
to convert xs->timeout to callout() parameter.
2002-04-05 18:27:45 +00:00
petrov 71419e9eb9 Return from interrupt handler after chip init(reset). 2002-04-02 09:48:27 +00:00
jdolecek 9977ae0589 ncr53c9x_attach(): if sc_rev is NCR53C90_86C01, set it to ESP100 once
the variant name is printed.
This fixes a problem that the card would be treated as ESP100 in
ncr53c9x_reset(), but not on couple other places (pointed out by
Andy Doran in private e-mail).

g/c now redundant case entry in ncr53c9x_reset()
2002-03-24 17:16:19 +00:00
thorpej a180cee23b Pool deals fairly well with physical memory shortage, but it doesn't
deal with shortages of the VM maps where the backing pages are mapped
(usually kmem_map).  Try to deal with this:

* Group all information about the backend allocator for a pool in a
  separate structure.  The pool references this structure, rather than
  the individual fields.
* Change the pool_init() API accordingly, and adjust all callers.
* Link all pools using the same backend allocator on a list.
* The backend allocator is responsible for waiting for physical memory
  to become available, but will still fail if it cannot callocate KVA
  space for the pages.  If this happens, carefully drain all pools using
  the same backend allocator, so that some KVA space can be freed.
* Change pool_reclaim() to indicate if it actually succeeded in freeing
  some pages, and use that information to make draining easier and more
  efficient.
* Get rid of PR_URGENT.  There was only one use of it, and it could be
  dealt with by the caller.

From art@openbsd.org.
2002-03-08 20:48:27 +00:00
tsutsui 84926576f1 Call malloc(9) with M_ZERO flag instead of memset() after malloc(). 2002-01-12 16:03:11 +00:00
jdolecek 08733c9d51 add NCR_VARIANT_NCR53C90_86C01 "NCR53C90 (86C01)"
treat exactly like NCR_VARIANT_ESP100
2001-12-03 23:27:31 +00:00
lukem 2565646230 don't need <sys/types.h> when including <sys/param.h> 2001-11-15 09:47:59 +00:00
lukem a4bae8b066 add/cleanup RCSID 2001-11-13 13:14:31 +00:00
tsutsui 064be15283 Use common macro to check message length. 2001-11-04 12:03:41 +00:00
tsutsui 5309850228 Fix timeout overflow caused by "scsictl format" on machines HZ==100. 2001-07-26 15:51:04 +00:00
chs 864f123d5a add a missing newline in a printf. 2001-07-10 00:36:36 +00:00
thorpej 0884f20bf7 bzero -> memset 2001-07-07 16:13:44 +00:00
thorpej 7711ad565b bcopy -> memcpy 2001-07-07 15:53:13 +00:00
petrov 9d59ae231c adjust fas register fields names 2001-05-23 18:32:26 +00:00
bouyer 8aa2f73d43 Enable tagged queuing again; should work now with scsipi_base rev 1.42 2001-05-18 12:57:42 +00:00
bouyer 19b0c05827 Ops, don't forget to increment li->used for each tagged command. 2001-04-30 13:58:32 +00:00
bouyer 1346d56311 - don't wait when called from interrupt context (basically this means we
can't sleep in HBA drivers)
- pool_get can fail, so return XS_RESOURCE_SHORTAGE instead of panic()
- don't try to bzero() a NULL pointer
2001-04-28 15:09:42 +00:00
bouyer 856411129e Disable tagged queuing for now, it causes commands timeouts.
Note that it's not worse since thorpej_scsipi integration: tagged queuing
was not used before, because of a tag message rejected at probe time.
2001-04-26 17:09:39 +00:00
bouyer 937a7a3ed9 Pull up the thorpej_scsipi branch to main branch.
This is a completely rewritten scsipi_xfer execution engine, and the
associated changes to HBA drivers. Overview of changes & features:
- All xfers are queued in the mid-layer, rather than doing so in an
  ad-hoc fashion in individual adapter drivers.
- Adapter/channel resource management in the mid-layer, avoids even trying
  to start running an xfer if the adapter/channel doesn't have the resources.
- Better communication between the mid-layer and the adapters.
- Asynchronous event notification mechanism from adapter to mid-layer and
  peripherals.
- Better peripheral queue management: freeze/thaw, sorted requeueing during
  recovery, etc.
- Clean separation of peripherals, adapters, and adapter channels (no more
  scsipi_link).
- Kernel thread for each scsipi_channel makes error recovery much easier
  (no more dealing with interrupt context when recovering from an error).
- Mid-layer support for tagged queueing: commands can have the tag type
  set explicitly, tag IDs are allocated in the mid-layer (thus eliminating
  the need to use buggy tag ID allocation schemes in many adapter drivers).
- support for QUEUE FULL and CHECK CONDITION status in mid-layer; the command
  will be requeued, or a REQUEST SENSE will be sent as appropriate.

Just before the merge syssrc has been tagged with thorpej_scsipi_beforemerge
2001-04-25 17:53:04 +00:00
tsutsui f39a68828d Make sure to check SC_ACCEL_TAGS in ncr53c9x_ioctl()
even if sync transfer is disabled or not supported.
2001-04-21 07:28:22 +00:00
tsutsui 64eed5859d Clean up ncr53c9x_select():
- Define NCR_F_SELATN3 for sc_features and use it to check if the chip
  supports SELATN3 command
- Make conditions of sending messages a bit simpler.
2001-04-21 05:35:20 +00:00
tsutsui f2e3f6d5d4 Cosmetics. (tab/space etc.) 2001-04-20 17:32:33 +00:00
petrov b0605f71d5 fas support added 2001-03-29 02:58:38 +00:00
eeh 905ef1b7fa Use the SCSIACCEL ioctl() to turn on TAG QUEUEs. 2001-01-19 23:04:23 +00:00
briggs 9a73f8b22b Make _sure_ that we do not use selatn3 when it is not present. Fixes a
problem on pmax reported by Izumi Tsutsui.  Tested also on alpha and mac68k.
2000-12-20 15:49:03 +00:00
eeh d1ab475964 Make the driver negotiate sync again and remove some (hopefully) superfluous
DELAY()s.
2000-12-20 03:19:34 +00:00
pk c6bd81f8a6 Fix reversed logic when setting setting sync-negotiation ability flag 2000-12-19 14:08:17 +00:00