Commit Graph

37 Commits

Author SHA1 Message Date
thorpej
aafd882086 bcmp -> memcmp 2001-07-18 18:27:08 +00:00
thorpej
38bdc75312 bcopy -> memcpy 2001-07-18 18:25:41 +00:00
thorpej
03746a443a bzero -> memset 2001-07-18 18:21:04 +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
thorpej
b0c9cd5f7b ALTQ'ify. 2000-12-14 07:27:21 +00:00
thorpej
b84f740be0 Move bpfattach()/bpfdetach() calls into ether_ifattach()/ether_ifdetach(). 2000-11-15 01:02:11 +00:00
thorpej
7ca3fb9ef0 Move the check for "promisc + unicast + not for us" into ether_input(),
and change Ethernet drivers to always pass all received frames to
ether_input() (with a few exceptions, which are documented in the
code).
2000-10-01 23:32:39 +00:00
enami
5a4b9fcbbf Prevent a process being swapped out during I/O if the data buffer is
allocated on stack.  This potential problem is noticed by Noriyuki Soda
and the idea and sample code to fix is given by Jason R. Thorpe.
2000-06-09 08:54:19 +00:00
augustss
fc4d9ff403 Get rid of register declarations. 2000-03-30 00:00:55 +00:00
thorpej
fc96443d15 New callout mechanism with two major improvements over the old
timeout()/untimeout() API:
- Clients supply callout handle storage, thus eliminating problems of
  resource allocation.
- Insertion and removal of callouts is constant time, important as
  this facility is used quite a lot in the kernel.

The old timeout()/untimeout() API has been removed from the kernel.
2000-03-23 07:01:25 +00:00
soren
95054da1a1 Fix doubled 'the's in comments. 2000-03-13 23:52:25 +00:00
matthias
b45486b2a2 Make this work again by adding XS_CTL_ASYNC to the SCSI requests in
se_ifstart and se_recv.
1999-11-13 18:03:34 +00:00
thorpej
16a9d90e17 Cleanup the scsipi_xfer flags:
- `flags' is now gone, replaced with `xs_control' and `xs_status'.
- Massive cleanup of the control flags.  Now we explicitly say that
  a job is to complete asynchronously, rather than relying on side-effects,
  and use a new flag to now that device discovery is being performed.
- Do SCSI device discovery interrupt-driven.
1999-09-30 22:57:52 +00:00
thorpej
f98d358a1f Rework layer 2 protocol input routines. Instead of calling e.g. ether_input()
directly, call the function pointer (*if_input)(ifp, m).  The input routine
expects the packet header to be at the head of the packet, and will adjust
as necessary.  Privatize the layer 2 input and output routines, allowing
*_ifattach() to set them up as appropriate.
1999-05-18 23:52:51 +00:00
mycroft
95aa0d0b7d Simplify the copy loops a bit. 1998-12-12 16:58:10 +00:00
thorpej
624619a881 When closing, wait for pending xfers to drain before deleting the reference
to the adapter.
1998-12-08 00:19:27 +00:00
thorpej
6a60e078ee Add adapter reference counting for SCSI and ATAPI devices. 1998-11-20 00:35:39 +00:00
kim
cd7e3136ad Use ETHERTYPE_ATALK instead of ETHERTYPE_AT. The former seems more common.
Our other constants also use "ATALK".

Added many new ETHERTYPE constants to sys/net/ethertypes.h, including the
ones from libpcap and tcpdump "ethertype.h" files.
1998-10-13 02:34:31 +00:00
is
9d52889ce7 correct obvious typo 1998-09-25 21:50:38 +00:00
cgd
d58173741d kill the last remnants of __BROKEN_INDIRECT_CONFIG. (only the pica port
used it, and it's non-working and apparently slated for replacement.)
1998-08-31 22:28:04 +00:00
jonathan
011f2bda08 defopt NS, NSIP. 1998-07-05 06:49:00 +00:00
jonathan
fe484937cf defopt LLC 1998-07-05 03:14:41 +00:00
jonathan
8db0fcdbf7 defopt CCITT. 1998-07-05 02:12:22 +00:00
jonathan
3751946b97 defopt INET, NETATALK. 1998-07-05 00:51:04 +00:00
thorpej
93f26b5f40 Adjust for changes to config. 1998-01-12 09:49:10 +00:00
thorpej
75e554c27d Implement two macros, scsipi_command() and scsipi_command_direct(), and
use them to hide the structure of the function pointers we jump through
to issue a command.
1997-10-18 19:50:51 +00:00
matthias
6aca6ab9a4 Apply Ian Dall's patch from kern/4004. Ian's comment:
The following patch employs a smarter adaptive polling
	scheme. It also improves the comments, in particular giving
	due credit to Phil Budne for his efforts in nunderstanding
	the device. It also relaxes the pattern for auto config so
	more devices match.
1997-10-14 11:18:18 +00:00
enami
d7d845c3d2 Cosmetic changes to keep coding style consistency in this directory;
- Indent with tab of width 8.
- Use four column to indent continuation line.
- Fold long line if possible.
- Use return (xx) instead of return xx.
- Compare pointer against NULL instead of testing like boolean.
- Delete whitespace at the end of line.
- Delete whitespace in front of function call operator.
- Delete whitespace after cast.
- Dereference a pointer to function explicitly.
- Add an empty line after local variable declaration.
- Use NULL instead of (char *)0.
- Dont use block for single statement.
1997-10-01 01:18:38 +00:00
bouyer
6f3bab1f59 Merge scsipi branch in the mainline. This add support for ATAPI devices
(currently only CD-ROM drives on i386). The sys/dev/scsipi system provides 2
busses to which devices can attach (scsibus and atapibus). This needed to
change some include files and structure names in the low level scsi drivers.
1997-08-27 11:22:52 +00:00
mycroft
103c7d360d Oops; forgot to GC the last mbuf allocated when out of clusters. 1997-04-28 17:03:58 +00:00
mycroft
91a808523c Fix typo in previous. 1997-04-24 08:05:13 +00:00
mycroft
b65e62c6c4 If we fail to allocate a cluster to hold a large packet, simply
drop it rather than using a chain of tiny mbufs.
Do not force the initial part of a packet into a separate mbuf.
1997-04-24 02:36:46 +00:00
matthias
470e2a9983 * Do some KNFing.
* Make all local functions static.
* Add some untested netatalk support.
1997-04-04 19:02:43 +00:00
mycroft
aca1dae3c4 Push the buffer cleanup code into scsi_done(), and split it so that biodone()
is called *after* the driver `done' routine.  This fixes disk I/O statistics
on SCSI devices.

Also, calling the `done' routine with a `complete' argument of 0 and actually
having it do anything meaningful loses in at least 3 ways, so just nuke the
argument altogether and don't call it this way.  If the driver needs to do
some error handling, that's what `err_handler' is for.
1997-04-02 02:29:30 +00:00
thorpej
24840394af Fix a screwup (my fault, oops) that caused the stack to get corrupted.
From Ian Dall <Ian.Dall@dsto.defence.gov.au> on port-pc532.
1997-03-24 00:04:53 +00:00
cgd
5b1c90b820 add appropriate includes so that this deals properly with NS and CCITT+LLC.
(Includes stolen from dev/ic/am7990.c, because it's a (the?) canonical
networking hardware driver.)
1997-03-18 04:45:04 +00:00
thorpej
f94626f157 Driver for the Cabletron EA41x SCSI Ethernet Adaptor, written by
Ian Dall <ian.dall@dsto.defence.gov.au>.  Converted to "new arp"
and some other (very) minor changes by me.
1997-03-18 01:31:15 +00:00