Commit Graph
552 Commits
Author SHA1 Message Date
Justin T. Gibbs 2a01c79e30 Detect and report dataphase overruns. Put the adapter into 'Bit Bucket'
mode when this occurs and allow the target to complete the transaction.
Force a retry on overruns since they are usually caused by termination or
cable problems.
1996-06-09 17:33:18 +00:00
Justin T. Gibbs 4559a6b02f Sync with HEAD. 1996-06-08 07:10:57 +00:00
Justin T. Gibbs 0bdfca6fa5 Merge with HEAD:
Fix a race condition in p_mesgout* and inb* code that could allow a
phasemiss to sneak by without detection.  This should fix the
Wide/Narrow boot problems that have been reported since this bug
caused the driver ignore a narrow target rejecting wide negotiation.
1996-05-27 23:18:28 +00:00
Justin T. Gibbs d33c9001a1 Merge with HEAD:
Use the right patch file this time.
1996-05-23 15:14:40 +00:00
Justin T. Gibbs b2fa969f88 Merge with HEAD. Dynamically Enable/Disable Ultra mode on a per target
basis.
1996-05-21 18:43:51 +00:00
Satoshi Asami 13691f5029 Merge from HEAD:
Add #ifndef/#endif around the "#define CCD_OFFSET 16", so you can override
it in your kernel config file.

Requested (in essence) by:      phk
1996-05-13 09:18:26 +00:00
Satoshi Asami a35d83dc32 Merge from HEAD:
Leave 16 lines in front of each component partition.  It's now safe to
use sd87a or sd237e even if they start at the beginning of the slice.

You can also use sd85c if you prefer, although you need to change the
type field in the disklabel to "4.2BSD".
1996-05-13 08:39:02 +00:00
Justin T. Gibbs a246afa542 Merge with HEAD. Add bit definitions for determining if we should reset
the scsi bus on probe, probe the B channel first, etc.
1996-05-10 16:39:43 +00:00
Justin T. Gibbs 3714b6c2cb Merge with HEAD.
Implement SCB PAGING. Fix some bugs in find_scb.
1996-04-28 19:33:05 +00:00
Satoshi Asami f2c9b7539a Backport this to 2.1-stable. 1996-04-27 06:57:54 +00:00
cvs2svn 9b7ce22cbf This commit was manufactured by cvs2svn to create branch 'RELENG_2_1_0'. 1996-04-26 21:35:12 +00:00
Justin T. Gibbs 0d20cbe8b0 Merge with HEAD. Fix comments, change handling of parity errors, and support
the aic7850.
1996-04-01 00:11:16 +00:00
Poul-Henning Kamp b8a69800bd Always dsgone slices when we leave. 1996-03-17 20:33:50 +00:00
Justin T. Gibbs 0ba45696f3 Merge with HEAD:
Take a different approach to the SPIORDY race condition.  Simply clear
SPIORDY just before we ack on the bus so that there is no chance to
see SPIORDY for the same byte twice.

Make some small modifications so that the Linux aic7xxx driver can use
our sequencer and register definition files verbatum.
1996-01-11 06:20:57 +00:00
Justin T. Gibbs a23c7a796b Merge with HEAD. Change inb_first to not poll SPIORDY. 1996-01-09 16:19:04 +00:00
Justin T. Gibbs 61be425234 Merge with HEAD.
aic7xxx.seq:
Add additional checking to the message out phase.

aic7xxx_reg.h:
Add definition of the DSCommand register.
1996-01-08 02:52:24 +00:00
Justin T. Gibbs 328503dec0 Merge with HEAD. Revert to safer inb* routines. 1996-01-05 16:19:07 +00:00
Justin T. Gibbs 87e6b43c79 Merge with HEAD. Null terminate execl's arg list. For some reason this
didn't cause a problem on my -current system. :(

Submitted by:	Ron Lenk <[email protected]>
1996-01-05 01:52:24 +00:00
cvs2svn ceb57be184 This commit was manufactured by cvs2svn to create branch 'RELENG_2_1_0'. 1996-01-04 16:10:43 +00:00
Justin T. Gibbs 6f69ddf5a7 Merge with HEAD. New and improved aic7xxx driver. 1996-01-04 08:50:01 +00:00
David Greenman 0e86c6f975 Brought in fixes from rev 1.24: fix data corruption with wide drives. 1995-11-07 07:01:50 +00:00
David Greenman 72e63aaa62 Brought in Justin's recent fixes: Work correctly with aha-2940U, fix
timeout time (was 1 tick rather than 2 seconds).
1995-10-29 09:46:11 +00:00
David Greenman c95597a8e9 Brought in all of Justin's changes/fixes from the main branch. 1995-08-23 03:52:27 +00:00
David Greenman 871a31fed1 Brought Adaptec driver and sequencer code up to date with main branch,
brought in misc SCSI fixes from main branch, and added support for wiring
a specific SCSI bus to a specific controller. REQUIRES A REBUILD OF CONFIG!
1995-07-22 04:25:10 +00:00
cvs2svn e506c6f0ea This commit was manufactured by cvs2svn to create branch 'RELENG_2_1_0'. 1995-06-13 18:05:17 +00:00
Rodney W. Grimes d3628763db Merge RELENG_2_0_5 into HEAD 1995-06-11 19:33:05 +00:00
Rodney W. Grimes 9b2e535452 Remove trailing whitespace. 1995-05-30 08:16:23 +00:00
Rodney W. Grimes 5ebc7e6281 Remove trailing whitespace. 1995-05-30 06:12:45 +00:00
David Greenman dd1da8a5af Increased delay after reset to 10ms. Suggested by several people, the last
of which was Scott Mace. This fixes a bug where the card would be missed
sometimes during the device probe.
1995-05-27 04:40:57 +00:00
David Greenman 0063696232 Fixed bugs in multicast address handling (flag was set in wrong register,
etc.). The tulip_start routine was rewritten to use less stack space (I've
been having problems with wcarchive overflowing the stack and this should
help a little). This version also has preliminary NetBSD support.

Rod Grimes helped in testing this version of the driver. Thanks Rod. It's
additionally been extensively tested here and on wcarchive.

Submitted by:	Matt Thomas
1995-05-26 02:02:44 +00:00
David Greenman 87c15d9649 There are two serious bugs in if_de.c. The first should not matter
to most users (the wrong length is passed to ether_input).  The
second is more serious.  The multicast hash algorithm uses the wrong
(low) bits instead of the right (high) bits.  This is only an issue
if you use >12 multicast addresses but if you are using IP multicast
then it might affect you...

Submitted by:	Matt Thomas
1995-05-22 13:32:24 +00:00
David Greenman f8141f6f97 Fixed bug in bpf/multicast support that caused multicast packets to get
thrown out if bpfilter support and no BPF listener. (submitted by Bill
Fenner)
Removed unused variable and changed another from a stack variable to a
static - the variable was a rather large array of structs that consumed
a lot of stack space. (me)
1995-05-22 05:51:41 +00:00
Søren Schmidt ad828abe4b Fixed problem with "char" cursor..
Submitted by:	ache
1995-05-21 18:30:05 +00:00
David Greenman 4039006ad7 Changed read_csr and write_csr to static so that they don't clash
with another driver.

Reviewed by:	Paul Richards
Submitted by:	Brian Litzinger
1995-05-17 13:15:35 +00:00
David Greenman 57cb71573d Fixes to the aic7xxx sequencer code and device driver from Justin Gibbs:
1) If a target initiated a sync negotiation with us and happened to chose a
value above 15, the old code inadvertantly truncated it with an "& 0x0f".
If the periferal picked something really bad like 0x32, you'd end up with
an offset of 2 which would hang the drive since it didn't expect to ever
get something so low.  We now do a MIN(maxoffset, given_offset).

2) In the case of Wide cards, we were turning on sync transfers after a
sucessfull wide negotiation.  Now we leave the offset alone in the per
target scratch space (which implies asyncronous transfers since we initialize
it that way) until a syncronous negotation occurs.

3) We were advertizing a max offset of 15 instead of 8 for wide devices.

4) If the upper level SCSI code sent down a "SCSI_RESET", it would hang the
system because we would end up sending a null command to the sequencer.  Now
we handle SCSI_RESET correctly by having the sequencer interrupt us when it
is about to fill the message buffer so that we can fill it in ourselves.
The sequencer will also "simulate" a command complete for these "message only"
SCBs so that the kernel driver can finish up properly.  The cdplay utility
will send a "SCSI_REST" to the cdplayer if you use the reset command.

5) The code that handles SCSIINTs was broken in that if more than one type
of error was true at once, we'd do outbs without the card being paused.
The else clause after the busfree case was also an accident waiting to
happen.  I've now turned this into an if, else if, else type of thing, since
in most cases when we handle one type of error, it should be okay to ignore
the rest (ie if we have a SELTO, who cares if there was a parity error on
the transaction?), but the section should really be rewritten after 2.0.5.
This fix was the least obtrusive way to patch the problem.

6) Only tag either SDTR or WDTR negotiation on an SCB.  The real problem is
that I don't account for the case when an SCB that is tagged to do a particular
type of negotiation completes or SELTOs (selection timeout) without the
negotiation taking place, so the accounting of sdtrpending and wdtrpending
gets screwed up.  In the wide case, if we tag it to do both wdtr and sdtr,
it only performs wdtr (since wdtr must occur first and we spread out the
negotiation over two commands) so we always have sdtrpending set for that
target and we never do a real SDTR.  I fill properly fix the accounting
after 2.0.5 goes out the door, but this works (as confirmed by Dan) on
wide targets.

Other stuff that is also included:

1) Don't do a bzero when recycling SCBs.  The only thing that must explicitly
be set to zero is the scb control byte which is done in ahc_get_scb.  We also
need to set the SG_list_pointer and SG_list_count to 0 for commands that do
not transfer data.

2) Mask the interrupt type printout for the aic7870 case.  The bit we were
using to determine interrupt type is only valid for the aic7770.


Submitted by:	Justin Gibbs
1995-05-17 07:06:02 +00:00
Søren Schmidt 290f5f54ee Changed relase number in snake_saver.c from 2.1 to 2.0.5 1995-05-16 19:10:11 +00:00
David Greenman 14c77d8a98 After carefully reading three reference documents, and analyzing
the 802.3 frames generated by the DC21040 (which does automatic padding
of less-than-minimum frames) and the frames generated by the 'ed'
driver, I've found that there is indeed a bug in the size of "ETHER_MIN_LEN"
as reported by several people, John Hay being the most recent. The driver
was actually setting the length to 6+6+2+50 (64 bytes), which when adding
in the CRC (which is automatically appended to the frame and not included
in the length), the minimum frame is 4 bytes larger than it is supposed to
be. All of this is confirmed by tcpdump showing 50 bytes of data for
minimum frames from the 'ed' cards and 46 bytes from 'de' cards. This
analysis has also revealed that there is garbage in the un-filled in
portion at the end of the minimum frames from the 'ed' driver; I don't
plan to fix this.
1995-05-14 11:01:20 +00:00
David Greenman 404abd2138 Only use card's soft-configured irq if no irq was specified in the kernel
config file. This should fix a number of complaints regarding the auto
detection behavior.
1995-05-12 22:39:40 +00:00
Andrey A. Chernov dc02f1c279 RISCom/8 driver 1995-05-12 15:09:29 +00:00
Rodney W. Grimes b2b795f07c Fix -Wformat warnings from LINT kernel. 1995-05-11 19:26:53 +00:00
Rodney W. Grimes 2d9d0204f7 Fix -Wformat warnings, still need to do something about %b and pointer
type args.
1995-05-09 12:26:00 +00:00
Rodney W. Grimes 14b77878bb Rewrite the MCD_TRACE macro to be a varargs macro so that the extraneous
arguments to printf could be fixed.

Correct all but 1 -Wformat warning.  Some would have caused garbage to
be printed due to missing args!
1995-05-09 11:39:40 +00:00
Andrey A. Chernov e73e1e3715 Add hook for pstat -t 1995-05-07 23:00:02 +00:00
Joerg Wunsch 85827d9c13 Restructured the floppy tape probe.
The ``flags 1'' in the fdc line is now only needed for owners of an
Insight tape (perhaps there aren't any?  Mine is disfunctional).  All
other probes are safe wrt. to the motor-control line of floppy disk
drives.  Document the flag in LINT finally.
1995-05-06 19:34:28 +00:00
David Greenman 9b3fdc5a9f Fixed mbuf leak and panic that occurred when packets got too memory
fragmented.
Added support for Cogent em100 boards.
Fixed bug that caused BPF to toggle the card to UTP.
Various other improvements.

Submitted by:	Matt Thomas and David Greenman
1995-05-05 20:09:51 +00:00
David Greenman 9714de6a38 Check for 0 before dividing by it. Patch from Paul Traina, modified
slightly by me.
1995-05-05 06:15:11 +00:00
David Greenman 07bb8fb7c9 Kill bogus duplicated code that resulted in an editing screwup of mine
that happend about 4 months ago.
1995-05-04 07:56:23 +00:00
David Greenman cbb15d7c97 bzero the malloced pci_devconf structure. This should fix the problem with
several of freefall's recent crashes.
1995-05-04 06:57:11 +00:00
Bruce Evans 41882e52fb Change dsioctl() interface to allow DIOCSYNCSLICEINFO to update the caller's
slice pointer and to print the device name in error messages.
1995-04-30 15:14:34 +00:00
Gary Palmer ee328c4bad (Sorry about prev. blank message - I realised I needed a change too late).
Removed unused var. and correct a printf formatting string.
1995-04-28 22:24:37 +00:00