Commit Graph

2795 Commits

Author SHA1 Message Date
gibbs
1b4e85be4d Major overhaul of the aic7xxx driver:
- Report valid residual byte counts.  We actually pause the sequencer
	  when the residual is non-zero.  I thought about using DMA to do this,
	  bus sequencer program space is tight.

	- Fix embarassing off by one error in the computation of a 2's
	  compliment variable.  This was most likely the cause of the
	  many problems reported with the tagged queuing code.

	- Handle "MAX_SYNC" as a special case (ie we are the ones starting
	  the sync negotiation sequence).  This was done so that the target
	  scratch area can be initialed to 0 offset (asyncronous transfers)
	  safely.  The initialization to 0 (was 15) is necessary since in
	  some cases a Wide negotiation could run into problems if SCSIRATE
	  was set wrong and we went into data(in/out).

	- Trim the DMA routines a little by using some procedures.  Net
	  effect is more functionality with 3 less instructions after this
	  update.

	- Toggle the WIDEODD bit of the DFCNTRL whenever this is not the
	  last SG block.  It has no effect in the 8bit bus configuration,
	  but in the Wide configuration ensures that the overlap byte is
	  held in the SCSI block if the transfer is odd so it will end
	  up in the next SG (the correct behavior).
1995-03-31 14:06:02 +00:00
gibbs
ead8e4d3be Major overhaul of the aic7xxx driver:
- catch the interrupt type (EDGE/LEVEL) before chip reset instead
	  of guessing the right type.

	- Add pause variable to the ahc struct to better handle the different
	  interrupt types and pausing the sequencer.

	- CLRINTSTAT -> CLRSCSIINT: This is a documented bit in the CLRINT
	  register in newer Adaptec documentation, so use their name for it.

	- Report valid residual byte counts.

	- Don't mess with the target scratch areas > id 8 on single, narrow,
	  channel devices.  The BIOS does a checksum of this area and can
	  flip out if we zero it out.

	- Initialize the sequencer FLAGS scratch ram variable in the single
	  channel devices to 0.  This was the cause of the annoying warning
	  where we would get a cmdcmplt the first time we did any type of
	  transfer negotiation with no valid scb.  It also fixes the problem
	  that looked like the INTSTAT register wasn't clearing fast enough.
	  This only showed up on 294x cards, not motherboard aic7870s.

	- Add the AHC_AIC7870 type and use it as the superset of aic7870
	  based controllers.

	- clear the sync offset section of the targ scratch area so that
	  we default to asyncronous transfers.  This was only a problem
	  for wide controllers because there was a scenario where the
	  offset wouldn't get updated before a data(out/in) phase would
	  occur.  This required some change in the sequencer code since we
	  were depending on this field to hold the rate to negotiate.

	- allow sync and wide negotiated commands to be tagged (the sequencer
	  now handles this properly).
1995-03-31 13:54:41 +00:00
gibbs
d543732b8e Use EISA_MAX_SLOTS to be consistent with other EISA drivers.
Fix off by one error in slot probe.

Update some comments.
Submitted by: rgrimes@FreeBSD.org
1995-03-31 13:36:57 +00:00
ache
5298443c4f Fix overrun error define name 1995-03-31 11:04:22 +00:00
ache
9f77a75ba0 Fix typing error sneaked somehow in prev. commit 1995-03-31 11:01:29 +00:00
jkh
74af7d44ef Diskless boot support for 3C509.
I'm not exactly sure why all the inb/outw stuff got added to netboot.h
and I'd be happy if someone like Martin or Bruce could take a look at it!
Submitted by:	"Serge A. Babkin" <babkin@hq.icb.chel.su>
1995-03-31 06:51:37 +00:00
jkh
ab22dad2bd * Promiscuous mode added and interrupt logic slightly changed
*  to reduce the number of adapter failures. Transceiver select
 *  logic changed to use value from EEPROM. Autoconfiguration
 *  features added.
Submitted by:	"Serge A. Babkin" <babkin@hq.icb.chel.su>
1995-03-31 06:41:38 +00:00
jkh
71b8fc1b02 I and Seiji Murata <seiji@mt.cs.keio.ac.jp> contributed 3C589 PCMCIA
Etherlink III 'zp' on 2.0R, but it did not work with the -current.
Noriyuki Takahashi <hor@aecl.ntt.jp> san has fixed this bug.

Our alpha-testers are tested this driver with 3C589B-COMBO and
3C589B-TP.  And it works fine.

I also fixed a little about the use of ZP_DEBUG symbol and beautified
the awful Frankenstein-style indent :-) with "indent -c0 -nfc1 -i4".

[Also merge with Bruce's last changes]

Submitted by: "HOSOKAWA Tatsumi" <hosokawa@mt.cs.keio.ac.jp>
1995-03-31 06:10:22 +00:00
se
916ed5a996 Include <stddef.h> for standard definition of offsetof() instead of
defining it explicitly in the driver.
1995-03-31 00:05:08 +00:00
dg
87d561b053 Backed out changes in rev 1.5 that prevent sending FIN if in CLOSING
state. This causes an infinite loop in some rare cases (probably caused
by some other, much more difficult to find bug).
1995-03-30 23:35:55 +00:00
ache
7948beb4ea This sl enhancement helps to keep serial line (modem) connection alive.
It is common case when modem hangs with carier on but don't
receive anything from another side.
This thing commonly healed with hangup and redialing.
Enhancements below allows to determine when such action
is needed and inform attach program with SIGURG signal.
There two ioctls set: outfill and keepalive, used from both
sides of connection. Outfill repeatedly sends FRAME_END with
specified timeout (i.e. 40 seconds). It is needed to get input on
other side even if no user activity on slip line currently.
Keepalive checks FRAME_ENDs from other side, and if no one
got in specified timeout (i.e. 60 seconds, max modem retrain time),
send SIGURG to attach program.
I plan to add code to slattach to handle this thing too.

Reviewed by: wollman
1995-03-30 20:43:32 +00:00
se
3f6a946186 Do not try to negotiate synchronous SCSI transfers in the Boot Kernel. 1995-03-30 15:41:33 +00:00
sos
43fc828696 Update to new screen update method. 1995-03-30 15:10:20 +00:00
sos
274733f38b Fix probe message printing 1995-03-30 14:33:03 +00:00
sos
a867f0c357 Emulate hw cursor closely, and get start&end scanlines from BIOS. 1995-03-30 14:32:31 +00:00
dg
3c6276368d Made pmap_testbit a static function. 1995-03-30 08:55:39 +00:00
ache
e6fff4d33f Move DSIMICROCODE ioctl to 85,
old value (88) is equal SLIOGUNIT ioctl
1995-03-30 05:17:50 +00:00
rgrimes
dbfd5a0f57 Submitted by: Mahesh Neelakanta <mahesh@gcomm.com>
Change I/O address of Intel EtherExpress driver (ix0) from 0x280 to
0x300.
1995-03-30 00:20:08 +00:00
ache
5c4a48ab30 Fixes for new TTY_BI & TTY_OE 1995-03-29 21:26:37 +00:00
sos
f1c731a93f Optimized the way physical screen updates are done. Now only
update what has actually been touched. This should speed up
screen access on slow hardware.
Introduced setting of "destructive" cursor size, much like
the old hardware cursor.
1995-03-29 20:55:03 +00:00
ache
c3ff5d1bdc pppinput:
Fix serial errors handling
Add no carrier check
1995-03-29 20:34:17 +00:00
ache
e7aa4fbd2c Fix serial error recording using new TTY_BI & TTY_OE 1995-03-29 20:20:01 +00:00
ache
c2410908fe c_iflag handling in setting compat modes now more close to V7 1995-03-29 19:50:58 +00:00
ache
49e59cf368 Oops, fix typing error in prev. commit 1995-03-29 19:24:46 +00:00
ache
fd3f3cb675 Handle TTY_BI now instead of TTY_FE && c == 0 1995-03-29 19:22:37 +00:00
ache
816ffdd3b8 Remove TTY_OE & TTY_BI definitions to allow translation,
more work required and will follow
1995-03-29 19:05:13 +00:00
ache
f7ee54f035 Add TTY_OE for overrun error and TTY_BI for break condition 1995-03-29 19:03:02 +00:00
ache
7acb53a850 Move parmark 0377 double code after control chars processing 1995-03-29 18:55:20 +00:00
ache
7182aee0af Fix timestamps when using Wall CMOS clock,
optimize dos2unixtime()
Submitted by: pritc003@maroon.tc.umn.edu
1995-03-29 18:48:06 +00:00
dg
8b14c6a8ea Added a set of braces to make the compiler happy. 1995-03-29 11:54:02 +00:00
dg
3fbe5d82ea Added NQNFS option and a comment warning about it's overhead. 1995-03-29 05:14:22 +00:00
dg
8b99167eec When NFS is compiled into the kernel, make NQNFS lease checking conditional
on a "NQNFS" kernel config option. NQNFS is a 4.4 wart and the performance
penalty of the lease checks on the client/server for _local_ I/O is too high
to have this occur all the time - especially when most people will never
use it.
1995-03-29 05:09:44 +00:00
dg
14d50aee6d Fixed DDB's "ps" output formatting. 1995-03-28 23:29:52 +00:00
sos
6b6e05e3ff Change fkey 63 from ^[[K to ^[[~.
Submitted by:		ache
1995-03-28 21:30:13 +00:00
phk
533316ed98 Don't install /usr/mdec/boot
Install the biosboot as /usr/mdec/boot[12]
Make the traditional links from [swf]dboot and boot[swf]d to boot[12] files.
Install dosboot as /usr/mdec/boot/fbsdboot.exe
1995-03-28 19:22:43 +00:00
ache
d5876fb8d3 Move discard check up and do it only for error status
(per Bruce suggestion). It speedup things for a little.
Remove l_start optimization, call l_start always (per Bruce suggestion)
1995-03-28 19:22:11 +00:00
sos
8be68caab2 Added ata device....
Not that it is ready yet, but I'm getting there eventually...
1995-03-28 18:18:31 +00:00
ache
8974e853cd ttyinput() fixes:
1) Preserve old buffer contents when input buffer overflows.

Old code clear buffer and rewrite it again, if !MAXBEL
(for MAXBEL it does right thing :-).
F.e. if you type too long string, last chars passed,
not first ones as expected.
Moreover, it flush output queue too in this case without any needs.

2) Don't do IXOFF, if IGNCR and c==\r, ignore completely.

3) If PARMRK is active and !ISTRIP and char == 0377
put yet one 0377 to distinguish it from parity mark sequence.
POSIX standard (thanx Bruce).

Reviewed by:
Submitted by:
Obtained from:
CVS:
1995-03-28 15:25:13 +00:00
bde
d8eb7d0833 CVS:
The previous patch was botched.
1995-03-28 12:29:11 +00:00
ache
ffb698bc12 Don't use
if (tp->t_line != 0)
test when CS_ODONE, it fails for NTTYDISC, use
		       if (linesw[tp->t_line].l_start != ttstart)
instead.

Reviewed by:
Submitted by:
Obtained from:
CVS:
1995-03-28 12:26:40 +00:00
ache
b9aeb29c71 Forget to add LSR_FE to discard (see prev commit)
Reviewed by:
Submitted by:
Obtained from:
CVS:
1995-03-28 11:13:44 +00:00
ache
1b66dee63f Bug fixed:
parity/framing/break not completely ignored when IGN* is set
but cause output restarted.
CVS:
1995-03-28 11:09:35 +00:00
ache
a5e5631085 Several fixes to help "raw" tty mode work correctly with
BREAK/parity/framing errors.
Term "correctly" assumes POSIX spec. and 4.4 ttyinput() behaviour.
1) Discard BREAK/parity at interrupt level when apropriate IGN*
is set in iflag. It helps "raw" mode works even IGN* is set.
2) Zero parity (if INPCK) and framing directly in buffer
before passing it to b_to_q() in "raw" mode.
Efficency:
interrupt level: if no error occurse, only two "test" commands added
"raw" mode: buf scan incc times for parity/framing added

Reviewed by:
Submitted by:
Obtained from:
CVS:
1995-03-28 10:51:59 +00:00
jkh
3fc004e929 Change ahc driver comment to note that it's not just the 274x controller
it supports.
1995-03-28 08:14:55 +00:00
jkh
4de5cfd9d3 "matcd interface " -> "matcd"; this makes userconfig work again and
makes it more consistant with the other drivers.
1995-03-28 08:04:07 +00:00
bde
4071f984e3 CVS:
Enable -Wimplicit again.
bash: /src/z1: No such file or directory
1995-03-28 08:02:37 +00:00
bde
4f64fe43e7 Add and move declarations to fix all of the warnings from `gcc -Wimplicit'
(except in netccitt, netiso and netns) that I didn't notice when I fixed
"all" such warnings before.
1995-03-28 07:58:53 +00:00
phk
6ad7636d4a Readdir on a CDrom would return bogus "d_type" values, potentially confusing
everybody (incl find(1) ?).  Initialize it to DT_UNKNOWN.  Maybe we can
do better, but I don't have the time.
1995-03-28 07:46:38 +00:00
ache
61b9c158a4 Raw ttyinput test was incomplete,
add !(IGNBRK | BRKINT | PARMRK) now.
1995-03-28 06:15:44 +00:00
dg
a2d4bff195 Fixed typo...using wrong variable in page_shortage calculation. 1995-03-28 05:58:35 +00:00