wpaul [Mon, 10 Jan 2000 23:12:54 +0000 (23:12 +0000)]
Attempt to fix a problem with receiving packets on USB ethernet interfaces.
Packets are received inside USB bulk transfer callbacks, which run at
splusb() (actually splbio()). The packet input queues are meant to be
manipulated at splimp(). However the locking apparently breaks down under
certain circumstances and the input queues can get trampled.
There's a similar problem with if_ppp, which is driven by hardware/tty
interrupts from the serial driver, but which must also manipulate the
packet input queues at splimp(). The fix there is to use a netisr, and
that's the fix I used here. (I can hear you groaning back there. Hush up.)
The usb_ethersubr module maintains a single queue of its own. When a
packet is received in the USB callback routine, it's placed on this
queue with usb_ether_input(). This routine also schedules a soft net
interrupt with schednetisr(). The ISR routine then runs later, at
splnet, outside of the USB callback/interrupt context, and passes the
packet to ether_input(), hopefully in a safe manner.
The reason this is implemented as a separate module is that there are
a limited number of NETISRs that we can use, and snarfing one up for
each driver that needs it is wasteful (there will be three once I get
the CATC driver done). It also reduces code duplication to a certain
small extent. Unfortunately, it also needs to be linked in with the
usb.ko module in order for the USB ethernet drivers to share it.
Also removed some uneeded includes from if_aue.c and if_kue.c
Fix suggested by: peter
Not rejected as a hairbrained idea by: n_hibma
dbaker [Mon, 10 Jan 2000 20:02:28 +0000 (20:02 +0000)]
Include a note below the example qmail entry that mentions that inetd is
no longer the correct way to have qmail handle incoming qmail smtp
connections. Also provide a url to the correct method.
peter [Mon, 10 Jan 2000 15:31:40 +0000 (15:31 +0000)]
Sigh. RFC2038 and bind 8.2.2 have a slight variation of interpretation
of the SOA 'minimum' field. Now it's necessary to define $TTL seperately
to shut it up. Bind does reasonable things by default but it's annoying
still.
PR: 15834
Submitted by: Daniel Lewart <d-lewart@uiuc.edu>
alfred [Mon, 10 Jan 2000 10:24:47 +0000 (10:24 +0000)]
revision 1.40 backed out the removal of PCATCH in a tsleep allowing
an infinite loop if a signal is delivered here.
remove it again, this still ought to be revisited as the error should
probably be returned.
yokota [Mon, 10 Jan 2000 08:49:49 +0000 (08:49 +0000)]
Rework the algorithm to detect MDA/CGA/EGA/VGA cards, so that
the vga driver won't be fooled to believe it has a CGA card when
in fact it is a VGA card.
peter [Mon, 10 Jan 2000 08:21:22 +0000 (08:21 +0000)]
- Style/bde changes.
- Don't use realpath as stat does the right thing.
- Only check ufs filesystems in getmntpt.
- Dont' bother checking that the ufs-mounted-on
device is a special file. It *must* be a special
file, or ufs wouldn't have mounted it.
imp [Mon, 10 Jan 2000 08:05:53 +0000 (08:05 +0000)]
Move xe driver from dev/pccard to dev/xe. Convert driver to newbus.
Driver is not functional yet, but does compile. Tests with xe cards
indicates that it doesn't panic the machine when they are present, but
fail to probe. Interface help in the pcic/pccard layers are needed to
complete this driver.
imp [Mon, 10 Jan 2000 06:58:17 +0000 (06:58 +0000)]
Eliminate pccard_chip_* tonight.
o ifdef out pccardchip.h (almost all of it, there are dangling bits
o Add rid/res members to pccard_function
o remove pct/pch from pccard_softc
o map memory properly in scan_cis (almost, see XXX for more work)
o manage ccr.
o remove bogus comment I added about touching the ccr being a layering
violation for pccard. It is properly done at that level.
o More function prototyping
cg [Mon, 10 Jan 2000 06:19:20 +0000 (06:19 +0000)]
don't complain about bad intrs unless we get 1000 of them consecutively
whilst we are playing or recording. since we should irq ~20 times/sec when
active, this should never trigger. in theory. if it never does trigger,
the check will be removed.
imp [Mon, 10 Jan 2000 06:17:27 +0000 (06:17 +0000)]
Add some comments about things that have become bad as I've been
working on this code, or things that I think are layering violations.
Plus a minor whitespace cleanup in one place while I'm at it.
peter [Mon, 10 Jan 2000 06:15:43 +0000 (06:15 +0000)]
- Revert --strip-all of /kernel on a new installed system (it would work
with kld etc just fine, but tracebacks would have less information and
nm /kernel wouldn't be so good).
- Just strip the kernel on the boot disk. This does not affect kld or
module loading, there are two symbol tables in a kernel. There is the
dynamic linking one (.dynsym+.strtab) with just global symbols and a user
symbol table (.symtab+.strtab) with all symbols. BTW; objdump lies and
hides the second one. There's a good half a meg or so that can be saved
from an average kernel by stripping it.
deischen [Mon, 10 Jan 2000 04:14:08 +0000 (04:14 +0000)]
Make sched_param parameter a const to comply with POSIX and SUSv2 specs.
This doesn't need to be applied to stable, because somehow -stable seems
to have gotten it right.
sef [Mon, 10 Jan 2000 04:09:05 +0000 (04:09 +0000)]
Handle the case where we truss an SUGID program -- in particular, we need
to wake up any processes waiting via PIOCWAIT on process exit, and truss
needs to be more aware that a process may actually disappear while it's
waiting.
imp [Mon, 10 Jan 2000 01:25:53 +0000 (01:25 +0000)]
Fix mysterious sendmail coredump on systems where malloc.conf pointed to
a string containign 'J'.
o Properly terminate argv list with a NULL entry.
o Use warn() to report the exec failure because free could change errno and
err would report the wrong reason.
o Don't terminate string to err with ':' since this results in two colons.
mckusick [Mon, 10 Jan 2000 00:24:24 +0000 (00:24 +0000)]
Several performance improvements for soft updates have been added:
1) Fastpath deletions. When a file is being deleted, check to see if it
was so recently created that its inode has not yet been written to
disk. If so, the delete can proceed to immediately free the inode.
2) Background writes: No file or block allocations can be done while the
bitmap is being written to disk. To avoid these stalls, the bitmap is
copied to another buffer which is written thus leaving the original
available for futher allocations.
3) Link count tracking. Constantly track the difference in i_effnlink and
i_nlink so that inodes that have had no change other than i_effnlink
need not be written.
4) Identify buffers with rollback dependencies so that the buffer flushing
daemon can choose to skip over them.
mckusick [Mon, 10 Jan 2000 00:07:24 +0000 (00:07 +0000)]
Remove the P_BUFEXHAUST flag from the syncer process (leaving
it only on the buf_daemon process). The problem is that when the
syncer process starts running the worklist, it wants to delete
lots of files. It does this by VFS_VGET'ing the vnodes, clearing
the blocks in them and bdwrite'ing the buffer. It can process close
to a thousand files per second which generates a large number of
dirty buffers. So, giving it special priviledge at the buffer trough
leads to trouble as the buf_daemon does occationally need a free
buffer to proceed and if the syncer has used every last one up,
we are toast.
mckusick [Sun, 9 Jan 2000 23:35:38 +0000 (23:35 +0000)]
Keep tighter control of removal dependencies by limiting the number
of dirrem structure rather than the collaterally created freeblks
and freefile structures. Limit the rate of buffer dirtying by the
syncer process during periods of intense file removal.
obrien [Sun, 9 Jan 2000 23:33:38 +0000 (23:33 +0000)]
* Add `sym' SCSI driver options.
* bring in NIC comments from GENERIC
* slightly reorder a few things in an feable attempt at making the
organization of LINT more logical.
mckusick [Sun, 9 Jan 2000 23:14:57 +0000 (23:14 +0000)]
Reorganize softdep_fsync so that it only does the inode-is-flushed
check before the inode is unlocked while grabbing its parent directory.
Once it is unlocked, other operations may slip in that could make
the inode-is-flushed check fail. Allowing other writes to the inode
before returning from fsync does not break the semantics of fsync
since we have flushed everything that was dirty at the time of the
fsync call.
jdp [Sun, 9 Jan 2000 21:13:48 +0000 (21:13 +0000)]
Revamp the mechanism for enumerating and calling shared objects'
init and fini functions. Now the code is very careful to hold no
locks when calling these functions. Thus the dynamic linker cannot
be re-entered with a lock already held.
Remove the tolerance for recursive locking that I added in revision
1.2 of dllockinit.c. Recursive locking shouldn't happen any more.
Mozilla and JDK users: I'd appreciate confirmation that things still
work right (or at least the same) with these changes.
wpaul [Sun, 9 Jan 2000 21:12:59 +0000 (21:12 +0000)]
Close PR# 15986: issue an RX reset command when initializing the interface,
but only for those cards that don't use miibus (i.e. all the 10mbps only
cards, and the 100baseFX card).
marcel [Sun, 9 Jan 2000 18:17:48 +0000 (18:17 +0000)]
Add the buildkernel and installkernel targets.
While here fix some minor style bugs (whitespacing) and move the
make target from Makefile.upgrade to this file.
Simplify the make target to make it readable.