1. fix possible hang in en_txlaunch(). when attempting to extend
the length of an mbuf to avoid a flush we should extend it
by cnt [which is ((need - len) % 4)] rather than 4 - cnt.
also, add an EN_DEBUG printf() when we pad/FLUSH a buffer
to help with debugging/understanding what the driver is up to.
2. use interface packet counters
3. when turning off a recv VCI we recompute the new mode. make sure
we don't include the "in service" bit in the new mode, otherwise
a VCI may appear "hung" if you turn it off while a service
interrupt is pending.
4. when shutting down a VCI that is still receiving data, don't bother
going into "drain mode" if only the hardware in service bit is
set (otherwise the VCI may get "hung" in drain mode).
as a result of this we may get "unexpected rx interrupt" messages
which are not really an error, so put this printf in EN_DEBUG.
5. be sure to zero txspeed[lcv] when enabling a VCI (start at full
speed). (hooks for setting txspeed[] are currently not in
the driver, but we are playing with it locally).
credits:
#1: Detected by: Zdenek Salvet <salvet@horn.ics.muni.cz>, fix by me.
#2: Contributed by: Zdenek Salvet <salvet@horn.ics.muni.cz>
#3,#4,#5: Detected by: Milind M. Buddhikot <milind@dworkin.wustl.edu>,
fixed by me.
If not compiled with -D_KERNEL, include different includes and
do so macro magic so that this will fit sanely into test harnesses.
When used in user-land, this should be compiled with -D_EXTENT_TESTING.
Bug fixes:
(extent_insert_and_optimize) You can't do things like:
LIST_REMOVE(elem->...le_next, ...);
free(elem->...le_next, ...);
They just don't work (and will corrupt your list and/or malloc free list).
(extent_alloc_region_descriptor) Unless you wait, malloc can fail.
Don't accidentally deref a potentially-NULL pointer.
-o (the reverse of this, also the default)
- use vis(3) in vputc() instead of handcrufted function (from OpenBSD).
- move gecos expansion into expandusername() (a la sendmail's buildfname).
A generic version of this last bit in libutil would be useful...
- cleanup the code, fix prototypes, etc.
2841, plus some fixes to make the patches work on the Alpha. Seems to
improve the NCR driver a lot. We probably should try to incorporate
any updates that have happened since, too.
Interrupts for irqs with handlers are counted as normal, even if none of
the handlers claim the interrupt.
Should all be redone with hierarchical event counters. that count
hardware events and invocations of each handler separately.
* Increment cnt.v_intr for normal interrupts (bugfix).
(closed [misc/574])
- send ftp to /var/log/xferlog
- prevent anything that goes to a restricted file (e.g., /var/cron/log)
ending up in /var/log/messages
- rotate /var/lgo/secure
- install the default logs with permissions consistant with those
set by newsyslog.conf (and commonsense)
to initialize conspa was invalid on non-040 machines, since we don't
know which MMU we're using on those, yet. On the other hand, by the time
we get to check_video() on the 040 machines, the MMU has been disabled.
Compromise: get the video PA in setmachdep() on the 040, and in
check_video() on the others. (This is not optimal. *sigh*)
ioctl and mmap routines take a void *, rather than a struct device *,
so that they can be set up to work more easily when using a 'struct device *'
isn't appropriate. Add a cookie (void *) to be passed to the mmap and
ioctl routines. Rename a few struct members, and shuffle them into
a more sensible order.
front-ends. Unfortunately, because of the way ISA and PCI are currently
probed, if you have a PCI VGA board in your machine and both drivers
in your kernel, the ISA VGA driver may accidentally match the PCI board.
For now, the only solution to this is to not put both drivers in
the GENERIC kernels.