dragonfly.git
16 years agoSplit off code in print_all_info() into print_batt_life(), print_batt_stat()
Jeroen Ruigrok/asmodai [Fri, 13 Aug 2004 18:58:55 +0000 (18:58 +0000)]
Split off code in print_all_info() into print_batt_life(), print_batt_stat()
and print_batt_time().
Add prototypes.

Vast majority submitted by: Liam J. Foy <liamfoy@sepulcrum.org>

16 years agoMake all the local functions static.
Jeroen Ruigrok/asmodai [Fri, 13 Aug 2004 18:48:29 +0000 (18:48 +0000)]
Make all the local functions static.

Partially submitted by: Liam J. Foy <liamfoy@sepulcrum.org>

16 years agoUse proper EXIT_FAILURE/EXIT_SUCCESS for exit() calls.
Jeroen Ruigrok/asmodai [Fri, 13 Aug 2004 18:44:11 +0000 (18:44 +0000)]
Use proper EXIT_FAILURE/EXIT_SUCCESS for exit() calls.

Submitted by: Liam J. Foy <liamfoy@sepulcrum.org>

16 years agoUse proper ANSI prototypes and make sure all arguments are supplied in the
Jeroen Ruigrok/asmodai [Fri, 13 Aug 2004 18:41:45 +0000 (18:41 +0000)]
Use proper ANSI prototypes and make sure all arguments are supplied in the
function definition.

Submitted partially by: Liam J. Foy <liamfoy@sepulcrum.org>

16 years agoVFS messaging/interfacing work stage 1/99. This stage replaces the old
Matthew Dillon [Fri, 13 Aug 2004 17:51:14 +0000 (17:51 +0000)]
VFS messaging/interfacing work stage 1/99.  This stage replaces the old
dynamic VFS descriptor and inlined wrapper mess with a fixed structure
and fixed procedural wrappers.  Most of the work is straightforward except
for vfs_init, which was basically rewritten (and greatly simplified).

It is my intention to make the vop_*() call wrappers eventually handle
range locking and cache coherency issues as well as implementing the
direct call -> messaging interface layer.  The call wrappers will also
API translation as we shift the APIs over to new, more powerful mechanisms
in order to allow the work to be incrementally committed.

This is the first stage of what is likely to be a huge number of stages
to modernize the VFS subsystem.

16 years agoRemove unused variable.
David Rhodus [Fri, 13 Aug 2004 14:27:29 +0000 (14:27 +0000)]
Remove unused variable.

16 years agoIOCTL mapping layer Part I/II
Joerg Sonnenberger [Fri, 13 Aug 2004 11:59:00 +0000 (11:59 +0000)]
IOCTL mapping layer Part I/II

This adds a generic framework for mapping IOCTL requests (cmds) and
attaching special processing functions. Instead of the former adhoc
code using large switch statements e.g. in emulation/linux/linux_ioctl.c,
the emulation layer registers a handler with the mappings for the request
ranges it wants to handle specially. Devices can afterwards add there
own mappings to support e.g. Linux specific IOCTLs.

The first part adds the infrastructure, the second part converts the Linux
emulation, dev/drm and dev/raid/aac.

Submitted-by: Simon 'corecode' Schubert <corecode@fs.ei.tum.de>
Some minor changes by myself.

16 years agoAdd proper prototypes for dump_packet() and pr_type().
Jeroen Ruigrok/asmodai [Fri, 13 Aug 2004 10:41:23 +0000 (10:41 +0000)]
Add proper prototypes for dump_packet() and pr_type().

16 years agoAdd the latest source versions of OpenBSD's traceroute program (which came
Jeroen Ruigrok/asmodai [Fri, 13 Aug 2004 10:39:22 +0000 (10:39 +0000)]
Add the latest source versions of OpenBSD's traceroute program (which came
from NetBSD, which came from Berkeley and was contributed by Van Jacobsen).

16 years agoAdd MODULE_VERSION(pci, 1), e.g. agp(4) can't be loaded as module otherwise.
Joerg Sonnenberger [Fri, 13 Aug 2004 08:27:02 +0000 (08:27 +0000)]
Add MODULE_VERSION(pci, 1), e.g. agp(4) can't be loaded as module otherwise.

Suggested-by: corecode
While at it, de-static pci_alloc_resource to match the prototyp. ACPI5
depends on it.

16 years agoHave make upgrade remove two stale 80211 header files that can mess
Matthew Dillon [Fri, 13 Aug 2004 05:30:02 +0000 (05:30 +0000)]
Have make upgrade remove two stale 80211 header files that can mess
up the /usr/src/usr.bin/truss build (primarily due to the way the ioctl
code just collects all the header files in existance).

16 years agoOops, undo portions of the last commit, some extra work got committed that
Matthew Dillon [Fri, 13 Aug 2004 02:59:29 +0000 (02:59 +0000)]
Oops, undo portions of the last commit, some extra work got committed that
isn't quite ready to go in yet.

16 years agoClose a kernel mem disclosure bug in linprocfs. The uio_offset was not
Matthew Dillon [Fri, 13 Aug 2004 02:50:58 +0000 (02:50 +0000)]
Close a kernel mem disclosure bug in linprocfs.  The uio_offset was not
being properly bounded.  Use uiomove_frombuf() instead of trying to
calculate it manually.

Submitted-by: =?ISO-8859-1?Q?Christer_=D6berg?= <christer.oberg@deprotect.com>
16 years agoThe base/count bounds checking was insufficient, leading to a kernel memory
Matthew Dillon [Fri, 13 Aug 2004 02:45:37 +0000 (02:45 +0000)]
The base/count bounds checking was insufficient, leading to a kernel memory
visibility hole.

Note: additional cast to unsigned to catch signed overflows added by Matt Dillon
Submitted-by: =?ISO-8859-1?Q?Christer_=D6berg?= <christer.oberg@deprotect.com>
16 years agoadd 'read1', a program that tests reading one byte at a time from a file.
Matthew Dillon [Fri, 13 Aug 2004 02:28:42 +0000 (02:28 +0000)]
add 'read1', a program that tests reading one byte at a time from a file.

16 years agoAdd message passed syscall's.
Eirik Nygaard [Thu, 12 Aug 2004 19:59:31 +0000 (19:59 +0000)]
Add message passed syscall's.

Split up sendsys2() into two parts, sendsys2() and waitsys2(). sendsys2() will
take care of the synchronous syscall's and initate asynchronous syscall's, and
waitsys2() will wait for a asynchronous syscall to finish.

Asynchronous syscall's can currently only be issued by the root user, but this
limitation will be removed when the code becomes more stable and better tested.

Add userland support for the synchronous and asynchronous sysmsg's to libcr.
Libcr defaults to the use of synchronous sysmsg's now, but this will be changes
as soon as we allow every user to do asynchronous sysmsg's.

Add a limitation to the number of sysmsg's one proc can have running at any
given time. This defaults to unlimited and can be changed with the
kern.max_sysmsg sysctl.

16 years agoAdd a description for LIST_FOREACH_MUTABLE and TAILQ_FOREACH_MUTABLE.
Joerg Sonnenberger [Thu, 12 Aug 2004 15:07:42 +0000 (15:07 +0000)]
Add a description for LIST_FOREACH_MUTABLE and TAILQ_FOREACH_MUTABLE.

16 years agoAdd LIST_FOREACH_MUTABLE which works like TAILQ_FOREACH_MUTABLE.
Joerg Sonnenberger [Thu, 12 Aug 2004 14:57:29 +0000 (14:57 +0000)]
Add LIST_FOREACH_MUTABLE which works like TAILQ_FOREACH_MUTABLE.

16 years agoGet rid of the NO_TCSH make.conf variable. We do not support removing
Matthew Dillon [Thu, 12 Aug 2004 08:08:08 +0000 (08:08 +0000)]
Get rid of the NO_TCSH make.conf variable.   We do not support removing
/bin/csh from the base system as part of a buildworld sequence.

16 years agoThe EISA attachment of vx does have a softc, export it's size correctly.
Joerg Sonnenberger [Thu, 12 Aug 2004 06:42:59 +0000 (06:42 +0000)]
The EISA attachment of vx does have a softc, export it's size correctly.

Obtained-from: FreeBSD

16 years agoTest CVS commit.
Gregory Neil Shapiro [Thu, 12 Aug 2004 05:04:48 +0000 (05:04 +0000)]
Test CVS commit.

16 years agoAdd a state to sanity check tcp_close() to make sure it is not called
Matthew Dillon [Wed, 11 Aug 2004 02:36:22 +0000 (02:36 +0000)]
Add a state to sanity check tcp_close() to make sure it is not called
twice.

Add a 'cpu' field to the inpcb so the cpu owning a pcb can be made
well-known, for use in later assertions as we move closer to removing
the BGL.

Fix a bug in the closing of listen sockets.  The inp wildcard hash table
removal was being done asynchronously with the freeing of the inp, which
could lead to problems.  Instead of sending messages in parallel to all tcp
protocol threads to remove the wildcard hash we instead chain a single
message through all tcp protocol threads to remove the hash, then detach the
inp at the end of the chain.

There is still an issue with the socket being ripped out from under other
protocol threads which might be trying to accept connections on behalf of
the listen socket which must be resolved before the BGL can be removed (amoung
other things).

16 years agoDiscard accepted and pending connections after we detach the listen socket
Matthew Dillon [Wed, 11 Aug 2004 02:24:16 +0000 (02:24 +0000)]
Discard accepted and pending connections after we detach the listen socket
rather then before in order to be sure to catch any connections that occur
while we are attempting to detach the listen socket.

16 years agoPPP stupidly hardwires some flag constants that it 'steals' from the mbuf
Matthew Dillon [Tue, 10 Aug 2004 22:05:30 +0000 (22:05 +0000)]
PPP stupidly hardwires some flag constants that it 'steals' from the mbuf
structure.  We are now using the flag bits it stole, which resulted in
packets being dropped and other issues.

Having ppp use M_PROTOx flags rather then hardwired constants fixes the
problem.

Reported-by: Sarunas Vancevicius <vsarunas@eircom.net>
16 years agoFix gcc 3.4 build.
Eirik Nygaard [Tue, 10 Aug 2004 16:03:12 +0000 (16:03 +0000)]
Fix gcc 3.4 build.

Reported by: Simon 'corecode' Schubert <corecode@fs.ei.tum.de>

16 years agoYet another hack for x11/xorg-clients.
Joerg Sonnenberger [Tue, 10 Aug 2004 10:58:37 +0000 (10:58 +0000)]
Yet another hack for x11/xorg-clients.

16 years agoRemoved freebsd.mc line, added ports/arabic line as found in the FreeBSD
Justin C. Sherrill [Mon, 9 Aug 2004 20:55:19 +0000 (20:55 +0000)]
Removed freebsd.mc line, added ports/arabic line as found in the FreeBSD
version of refuse.  Synced refuse.README with FreeBSD version 1.1.2.11 too.

Suggested by: Adrian Nida <nida@musc.edu>

16 years agoBring in FreeBSD mount.c/1.58, original commit message:
Matthew Dillon [Mon, 9 Aug 2004 20:15:23 +0000 (20:15 +0000)]
Bring in FreeBSD mount.c/1.58, original commit message:
 date: 2004/01/07 05:37:56;  author: anholt;  state: Exp;  lines: +1 -1
 Allow trailing slashes for MNT_UPDATE case (mount -u), too.

 PR:             bin/59144
 Submitted by:   Stefan Farfeleder <stefan@fafoe.narf.at>

Suggested-by: Barry Bouwsma
16 years agoSynchronize syslogd with FreeBSD. Primarily syslogd.c/1.129. This primarily
Matthew Dillon [Mon, 9 Aug 2004 20:11:19 +0000 (20:11 +0000)]
Synchronize syslogd with FreeBSD.  Primarily syslogd.c/1.129.  This primarily
adds code to avoid fsync()ing the log file line-by-line when further input
from the pipe is pending.

The FreeBSD commit message for 1.129:
 date: 2004/07/04 19:13:58;  author: cperciva;  state: Exp;  lines: +25 -3
 Where syslogd would have fsync()ed a file in the past, instead set a flag
 FFLAG_NEEDSYNC and fsync the file when select() next returns zero.  This
 dramatically speeds up the process of logging large amounts of data, while
 leaving the essential semantics (that data can be expected to be on disk
 if we crash) unchanged.

 In my tests, this speeds up the rc phase of booting by 18-20%. [1]

Suggested-by: Barry Bouwsma
Source: FreeBSD

16 years agoMerge FreeBSD ip.c/1.101, commit message:
Matthew Dillon [Mon, 9 Aug 2004 19:54:36 +0000 (19:54 +0000)]
Merge FreeBSD ip.c/1.101, commit message:

Make getprotobynumber() calls in FilterCheck conditional on the log
levels by which they are used.  On a typical production setting (no
debug or filter logging) this will save an open/read/close system
call sequence per packet, approximately halving the system overhead
and reducing the overall overhead by 38%.

Suggested-by: Barry Bouwsma
16 years agoThe SF64-PCR card has no sound support but stupidly uses the same PCI id
Matthew Dillon [Mon, 9 Aug 2004 19:49:28 +0000 (19:49 +0000)]
The SF64-PCR card has no sound support but stupidly uses the same PCI id
as other cards.  The hack that was supposed to detect the lack of sound
support does not work, causing a number of other cards to improperly probe
as not having sound support.  so disable it for the moment.  People who
actually have this card will have to set I_HAVE_SF64_PCR in their
/etc/make.conf.

Source: Barry Bouwsma

16 years agoffs_dirpref() calculates dirsize = (fs->fs_avgfilesize * fs->fs_avgfpdir).
Matthew Dillon [Mon, 9 Aug 2004 19:41:04 +0000 (19:41 +0000)]
ffs_dirpref() calculates dirsize = (fs->fs_avgfilesize * fs->fs_avgfpdir).
However, these two paramters can be set by the sysop such that they easily
overflow a 32 bit integer.  Use 64 bit arithmatic to prevent the overflow
and special-case values > 0x7fffffff to simply set maxcontigdirs to 1 rather
then waste time doing further 64 bit arithmatic.

Note that NetBSD also changed 'cgsize' to a 64 bit integer, but fails to
properly cast at least one of the arguments in both the dirsize and cgsize
multiplication which means that the overflow bug in NetBSD has not actually
been fixed.

This patch does not change the cgsize calculation yet, it requires more
review.

Source: NetBSD ffs_alloc.c/1.74 from Barry Bouwsma of Tiengen.

16 years agoSince we are DragonFly we want to use the DragonFly version instead of the
Eirik Nygaard [Mon, 9 Aug 2004 15:06:44 +0000 (15:06 +0000)]
Since we are DragonFly we want to use the DragonFly version instead of the
FreeBSD one.

16 years agoSince we are DragonFly we want to use the DragonFly version instead of the
Eirik Nygaard [Mon, 9 Aug 2004 14:53:38 +0000 (14:53 +0000)]
Since we are DragonFly we want to use the DragonFly version instead of the
FreeBSD one.

16 years agoFix gcc 3.4 build.
Eirik Nygaard [Mon, 9 Aug 2004 14:47:54 +0000 (14:47 +0000)]
Fix gcc 3.4 build.
__FreeBSD_version is now not defined if __FreeBSD__ is not defined.

Reported by: Simon 'corecode' Schubert <corecode@fs.ei.tum.de> and
             "Martin P. Hellwig" <mhellwig@xs4all.nl>

16 years agoFix gcc 3.4 build.
Eirik Nygaard [Mon, 9 Aug 2004 14:40:08 +0000 (14:40 +0000)]
Fix gcc 3.4 build.
__FreeBSD_version is now not defined if __FreeBSD__ is not defined.

Reported by: Simon 'corecode' Schubert <corecode@fs.ei.tum.de> and
             "Martin P. Hellwig" <mhellwig@xs4all.nl>

16 years agoFix gcc 3.4 build.
Eirik Nygaard [Mon, 9 Aug 2004 13:55:35 +0000 (13:55 +0000)]
Fix gcc 3.4 build.
__FreeBSD_version is now not defined if __FreeBSD__ is not defined.

Reported by: Simon 'corecode' Schubert <corecode@fs.ei.tum.de> and
             "Martin P. Hellwig" <mhellwig@xs4all.nl>

16 years agoDocument that there seems to be a problem with the syncer not running
David Rhodus [Mon, 9 Aug 2004 02:59:31 +0000 (02:59 +0000)]
Document that there seems to be a problem with the syncer not running
here and that we are using a work around. If a buffer won't flush after
6 attempts we allow the syncer to run to process any soft update
dependency lists.

16 years agoGet cosmetic changes out of the way before committing SACK.
Jeffrey Hsu [Sun, 8 Aug 2004 06:33:24 +0000 (06:33 +0000)]
Get cosmetic changes out of the way before committing SACK.

16 years agoAdd bzip2 to the bootstrap tools list. The compat libs (if enabled in
Matthew Dillon [Sun, 8 Aug 2004 03:21:59 +0000 (03:21 +0000)]
Add bzip2 to the bootstrap tools list.  The compat libs (if enabled in
make.conf) need it.

16 years agoImprove compatibility with older FreeBSD-4.x systems when cross-building
Matthew Dillon [Sat, 7 Aug 2004 21:38:16 +0000 (21:38 +0000)]
Improve compatibility with older FreeBSD-4.x systems when cross-building
the DragonFly world by having the bootstrap and build tools use the
bootstrap/buildtools binaries.  In particular, we need the -i option to
patch to work to properly build csh.

16 years agoDo not hack a #define __FreeBSD_version if __FreeBSD__ does not exist,
Matthew Dillon [Sat, 7 Aug 2004 21:22:25 +0000 (21:22 +0000)]
Do not hack a #define __FreeBSD_version if __FreeBSD__ does not exist,
to keep our gcc-3.4 builds freebsd-free.

Suggested-by: Richard Nyberg <rnyberg@it.su.se>
16 years agoRemove the unconditional timer_restore in the bios call path, it is
Matthew Dillon [Sat, 7 Aug 2004 03:42:37 +0000 (03:42 +0000)]
Remove the unconditional timer_restore in the bios call path, it is
creating more problems then it is solving.

16 years agoAdd an event handler to adjust the cpu throttle state automatically when
Matthew Dillon [Sat, 7 Aug 2004 00:59:53 +0000 (00:59 +0000)]
Add an event handler to adjust the cpu throttle state automatically when
power is disconnected and when power is reconnected.  See 'sysctl hw.acpi'.
The new sysctls are hw.acpi.cpu.performance_speed and
hw.acpi.cpu.economy_speed.

16 years agoCorrect an inaccuracy in disklabel(8)'s manual page: the default
Chris Pressey [Fri, 6 Aug 2004 22:49:41 +0000 (22:49 +0000)]
Correct an inaccuracy in disklabel(8)'s manual page: the default
fragment size for partitions over 1GB in size is 2048, not 4096.

16 years agoeventhandler_register() M_NOWAIT->M_INTWAIT.
Matthew Dillon [Fri, 6 Aug 2004 22:32:07 +0000 (22:32 +0000)]
eventhandler_register() M_NOWAIT->M_INTWAIT.

16 years agoGCC3.4's (default) unit-at-a-time optimization is incompatible with -mrtd.
Matthew Dillon [Fri, 6 Aug 2004 20:50:35 +0000 (20:50 +0000)]
GCC3.4's (default) unit-at-a-time optimization is incompatible with -mrtd.
Bad code (missing stack pops) will be produced.  See the assembly generated
for 'xputc' with -mrtd and unit-at-a-time enabled for an example of this.

GCC3.4's unit-at-a-time seems to cause other problems as well, specifically
in boot2, as yet not tracked down, so disable unit-at-a-time optimizations
for the boot code if the compiler is not GCC2.

16 years agomake the __asm for the pushfl fakery __volatile.
Matthew Dillon [Fri, 6 Aug 2004 20:48:36 +0000 (20:48 +0000)]
make the __asm for the pushfl fakery __volatile.

16 years agoUpgrade our CVS build from 1.12.8 to 1.12.9 to fix a number of pserver
Matthew Dillon [Tue, 3 Aug 2004 18:11:56 +0000 (18:11 +0000)]
Upgrade our CVS build from 1.12.8 to 1.12.9 to fix a number of pserver
and remote cvs (ssh based) related security holes.

From-Security-Advisory: http://security.e-matters.de/advisories/092004.html
Recommended-by: Oliver Eikemeier <eikemeier@fillmore-labs.com>
16 years agoMerge from vendor branch CVS:
Matthew Dillon [Tue, 3 Aug 2004 18:08:51 +0000 (18:08 +0000)]
Merge from vendor branch CVS:
Bring cvs-1.12.9 into the CVS repository

16 years agoBring cvs-1.12.9 into the CVS repository
Matthew Dillon [Tue, 3 Aug 2004 18:08:51 +0000 (18:08 +0000)]
Bring cvs-1.12.9 into the CVS repository

16 years agoAdd re(4) to LINT as well.
Joerg Sonnenberger [Tue, 3 Aug 2004 07:26:57 +0000 (07:26 +0000)]
Add re(4) to LINT as well.

16 years agoAdd re(4) to GENERIC.
Joerg Sonnenberger [Tue, 3 Aug 2004 07:16:14 +0000 (07:16 +0000)]
Add re(4) to GENERIC.

16 years agoFix bug with tracking the previous element in a list.
Jeffrey Hsu [Tue, 3 Aug 2004 01:59:58 +0000 (01:59 +0000)]
Fix bug with tracking the previous element in a list.

Found by: edrt@citiz.net
Submitted by: pavlin@icir.org

16 years agoThe obj hierarchy must be built before the ssh-etc target can be run
Matthew Dillon [Tue, 3 Aug 2004 01:32:15 +0000 (01:32 +0000)]
The obj hierarchy must be built before the ssh-etc target can be run
(e.g. when building in nrelease), otherwise the ssh_config patch will
attempt to write out into /usr/src.  /usr/src is allowed to be read-only
(e.g. NFS mounts of /usr/src) so this doesn't work particularly well without
an obj hierarchy.

16 years agoThe TCP stack is notified every time userland reads from the TCP socket
Matthew Dillon [Tue, 3 Aug 2004 00:25:54 +0000 (00:25 +0000)]
The TCP stack is notified every time userland reads from the TCP socket
buffer, because a pure-window-update ACK might be required.  The previous
code would send a pure window update once the difference between the last
advertised window and the current window exceeded 2 segments and also when it
exceeded 1/2 the high water mark.

On GigE networks this can cause a pure window update to occur once every
8 packets (resulting in 5 acks instead of 4) prior to the TCP t_outputq
commit and once every 8 packets (resulting in 2 acks instead of 1) after
the TCP t_outputq commit.  So on a GigE network servicing a high performance
TCP stream, the result is double the number of acks that are actually
necessary.

Conditionalize the 2 segment test with a sysctl.  The sysctl is
net.inet.tcp.avoid_pure_win_update and is set to 1 by default, meaning
that the 2 segment ack does NOT occur (i.e. we should get higher
performance).  It may be turned off to revert to the prior two-ack
algorithm.

This code is considered experimental but since it involves only a pure
window update and we still have the catch-all case this commit is enabling
the new algorithm.  Further tuning might be required, possibly reducing the
1/2 hiwat test to 1/3 or 1/4 hiwat.

Ideally we want to avoid pure window update acks entirely in the normal
streaming case, which means we want to have a TCP buffer that is large
enough to pipeline the networked stream AND the process consuming the data.
On a GigE network this typically equates to the packet batching that occurs
per interrupt.  This batching is typically 8 1448 byte segments == ~11K,
plus turn around overhead and the 1/2 hiwat test so we want an incoming
socket buffer of at least ~11K * 2 + slop which should come to around ~32K
in order to avoid sending (unnecessary) pure window updates on a high
performance TCP stream.

16 years agotcp_input()'s DELAY_ACK() code checks to see if the delayed ack timer is
Matthew Dillon [Tue, 3 Aug 2004 00:04:13 +0000 (00:04 +0000)]
tcp_input()'s DELAY_ACK() code checks to see if the delayed ack timer is
running and if it is not it starts it and returns rather then issue an
ack.  If the timer is already running tcp_input() will generate an immediate
ack, resulting in one ack every other packet.  This every-other-packet ack
is usually required to ensure that the window does not close too much and
stall the sender, but it really only exists because the tcp stack does not
look ahead to see if there are other incoming packets that need to be
processed that might themselves require additional acks.  For optimal
operation we really want to process all the pending TCP packets for
the connection before sending any 'normal' acks.

Many ethernet interfaces, including and most especially GigE interfaces,
rate-limit their interrupts.  This results in several packets being moved
from the RX ring to the TCP/IP stack all at once, in a batch.

GIVE THE TCP stack its own netisr dispatcher loop rather then using the
generic netisr dispatcher loop.  The TCP dispatcher loop will call an
additional routine, tcp_willblock(), after all messages queued to the TCP
protocol stack have been exhausted.

When tcp_input() needs to send an ack in the normal header-prediction case
it now places the TCPCB on a queue rather then send an immediate ack.
tcp_willblock() processes this queue and calls tcp_output() to send the
actual ack.

The result is that on a GigE interface which typically queues 8+ packets
per interrupt, a TCP stream will only be acked once per ~8 packets rather
then 4 times (every other packet) per ~8 packets.  This *GREATLY* reduces TCP
protocol overhead and network ack traffic on both ends of the connection.

NOTE: a later commit will deal with pure window space updates which generate
an additional ACK per ~8 packets when the user program drains the buffer.

Reviewed-by: Jeffrey Hsu <hsu@crater.dragonflybsd.org>
16 years agoMake doubly sure that timer2 is not used for speaker operation.
Matthew Dillon [Mon, 2 Aug 2004 23:20:31 +0000 (23:20 +0000)]
Make doubly sure that timer2 is not used for speaker operation.

16 years agoRip out the badly designed softint-based taskqueue used by ACPI for callbacks.
Matthew Dillon [Mon, 2 Aug 2004 19:51:09 +0000 (19:51 +0000)]
Rip out the badly designed softint-based taskqueue used by ACPI for callbacks.
This was deadlocking tsleep() calls made from AcpiOsSleep() when early ACPI
interrupts occured, such as when a laptop is booted without AC connected.

Use a kernel thread and LWKT messaging to queue callbacks requests and add
code to use DELAY instead of tsleep() for calls made to AcpiOsSleep() in
early boot before the system timeout/ticks subsystem is initialized.

Fix two bugged AcpiOsSleep() calls that were sleeping for 10 seconds instead
of 10 milliseconds.

16 years agoAdd a global, clocks_running, which tells us when timeout/ticks based clocks
Matthew Dillon [Mon, 2 Aug 2004 19:36:27 +0000 (19:36 +0000)]
Add a global, clocks_running, which tells us when timeout/ticks based clocks
can be used.

16 years agotaskqueue_create() should use M_INTWAIT rather then M_NOWAIT.
Matthew Dillon [Mon, 2 Aug 2004 19:32:28 +0000 (19:32 +0000)]
taskqueue_create() should use M_INTWAIT rather then M_NOWAIT.

16 years agoFix buggaboos that prevented ACPI_DEBUG from working.
Matthew Dillon [Mon, 2 Aug 2004 18:41:50 +0000 (18:41 +0000)]
Fix buggaboos that prevented ACPI_DEBUG from working.

16 years agoRelease to correct ressource in re_detach, this is PCI_LOIO now.
Joerg Sonnenberger [Mon, 2 Aug 2004 15:10:08 +0000 (15:10 +0000)]
Release to correct ressource in re_detach, this is PCI_LOIO now.
Remove a RE_DESC_INC from re_rxeof, a left-over from the while loop.

16 years agoForced commit to annotate the (unrelated) changes from the last commit.
Joerg Sonnenberger [Mon, 2 Aug 2004 13:35:02 +0000 (13:35 +0000)]
Forced commit to annotate the (unrelated) changes from the last commit.

RealTek doesn't seem to support memory-mapped IO for re(4), the card
generates an interrupt storm under pretty low load. Therefore change
re(4) to the slower port-mapped IO.

16 years agoChange (almost) all references to tqh_first and tqe_next and tqe_prev
Joerg Sonnenberger [Mon, 2 Aug 2004 13:22:34 +0000 (13:22 +0000)]
Change (almost) all references to tqh_first and tqe_next and tqe_prev
to the correct TAILQ macros. Exceptions are contrib/ipfilter, which will
be handled separately, and dev/misc/labpc, which makes some very wiered
things and therefore needs much more care.

16 years agoSync with FreeBSD CURRENT (most white space cleanup and ordering).
Joerg Sonnenberger [Mon, 2 Aug 2004 11:21:57 +0000 (11:21 +0000)]
Sync with FreeBSD CURRENT (most white space cleanup and ordering).
Correct a typo in the bpcd entry.

16 years agoCorrect path location search when pulling packages from GoBSD.
David Rhodus [Sun, 1 Aug 2004 04:22:49 +0000 (04:22 +0000)]
Correct path location search when pulling packages from GoBSD.
We are currently not dealing with different package versioning to
system version numbering as there is currenly no need to.

Heads up from <kg245@bellsouth.net>

16 years agoMerge from vendor branch OPENSSH:
Scott Ullrich [Sat, 31 Jul 2004 20:05:00 +0000 (20:05 +0000)]
Merge from vendor branch OPENSSH:
Missing files from OpenSSH import

16 years agoMissing files from OpenSSH import
Scott Ullrich [Sat, 31 Jul 2004 20:05:00 +0000 (20:05 +0000)]
Missing files from OpenSSH import

16 years agoMissing files from OpenSSH import
Scott Ullrich [Sat, 31 Jul 2004 20:05:00 +0000 (20:05 +0000)]
Missing files from OpenSSH import

16 years agoMerge from vendor branch OPENSSH:
Scott Ullrich [Sat, 31 Jul 2004 19:49:08 +0000 (19:49 +0000)]
Merge from vendor branch OPENSSH:
Missing files during OpenSSH import.

16 years agoMissing files during OpenSSH import.
Scott Ullrich [Sat, 31 Jul 2004 19:49:08 +0000 (19:49 +0000)]
Missing files during OpenSSH import.

16 years agoUpdate mk files list with the current supplied one.
Jeroen Ruigrok/asmodai [Sat, 31 Jul 2004 19:29:24 +0000 (19:29 +0000)]
Update mk files list with the current supplied one.
NOTE: still missing descriptions.

16 years agoMissed file from OpenSSH import.
Scott Ullrich [Sat, 31 Jul 2004 19:21:59 +0000 (19:21 +0000)]
Missed file from OpenSSH import.

Noticed-by: Kim Culhan
16 years agoImport OpenSSH 3.8.1.p1 into base.
Scott Ullrich [Sat, 31 Jul 2004 19:03:00 +0000 (19:03 +0000)]
Import OpenSSH 3.8.1.p1 into base.

Patch-submitted-by: Simon 'corecode' Schubert
Reviewed-by: Chris Pressey
Parts-obtained-from: FreeBSD

16 years agoMerge from vendor branch OPENSSH:
Scott Ullrich [Sat, 31 Jul 2004 19:03:00 +0000 (19:03 +0000)]
Merge from vendor branch OPENSSH:
Import OpenSSH 3.8.1.p1 into base.

Patch-submitted-by: Simon 'corecode' Schubert
Reviewed-by: Chris Pressey
Parts-obtained-from: FreeBSD

16 years agoImport OpenSSH 3.8.1.p1 into base.
Scott Ullrich [Sat, 31 Jul 2004 19:03:02 +0000 (19:03 +0000)]
Import OpenSSH 3.8.1.p1 into base.

Patch-submitted-by: Simon 'corecode' Schubert
Reviewed-by: Chris Pressey
Parts-obtained-from: FreeBSD

16 years agoRemove local main() definition.
Eirik Nygaard [Sat, 31 Jul 2004 11:18:43 +0000 (11:18 +0000)]
Remove local main() definition.

16 years agoAdd WARNS?=6 and remove CFLAGS=.
Eirik Nygaard [Sat, 31 Jul 2004 10:23:11 +0000 (10:23 +0000)]
Add WARNS?=6 and remove CFLAGS=.
Add missing $DragonFly$ keyword.

16 years agoDon't depend on pollution in <limits.h> for the definition of <stdint.h> macros.
Eirik Nygaard [Sat, 31 Jul 2004 10:19:53 +0000 (10:19 +0000)]
Don't depend on pollution in <limits.h> for the definition of <stdint.h> macros.
Remove local prototype for main().

Submitted by: "Liam J. Foy" <liamfoy@sepulcrum.org>
Obtained from: FreeBSD

16 years agoSince mbufs are no longer limited by an mb_map the kern.ipc.nmbufs and
Matthew Dillon [Sat, 31 Jul 2004 07:58:23 +0000 (07:58 +0000)]
Since mbufs are no longer limited by an mb_map the kern.ipc.nmbufs and
kern.ipc.nmbclusters sysctls can be made writable.

16 years agoGet rid of mb_map. Retool the mbuf and mbuf cluster allocator to use
Matthew Dillon [Sat, 31 Jul 2004 07:52:58 +0000 (07:52 +0000)]
Get rid of mb_map.  Retool the mbuf and mbuf cluster allocator to use
malloc() (our slab allocator).  Get rid of the NULL callback function for
M_EXT buffers, assign real functions for standard M_EXT buffers and add
a new flag M_EXT_CLUSTER to tell the mbuf code when an M_EXT buffer is
under management by the mbuf cluster allocator.  Get rid of the address
calculations and the char array ref count that used to exist for mbuf
clusters.  Replace with a meta-data structure to keep track of ref
counts.  Note that the new cluster code uses the new M_EXT mechanism.

Increase the default mbuf+cluster pool from 10 to 20.  Add sysctl's to
set the mbuf and mbuf cluster free-pool maximums (kern.ipc.mcl_free_max and
kern.ipc.mbuf_free_max), beyond which mbuf and mbuf cluster memory is
returned to the system.

16 years agoChange sendfile() to use the new m_ext callback scheme for cleaning up after
Matthew Dillon [Fri, 30 Jul 2004 21:56:17 +0000 (21:56 +0000)]
Change sendfile() to use the new m_ext callback scheme for cleaning up after
SFBUF's.  Remove the sf_buf_tosf() function (a hack that existed only to
support sendfile()).

16 years agoBring in the latest pkg_install sources from FreeBSD-5.
Matthew Dillon [Fri, 30 Jul 2004 04:46:14 +0000 (04:46 +0000)]
Bring in the latest pkg_install sources from FreeBSD-5.

Note that the only substantive DragonFly changes, apart from adding our
CVS id and doing a few other cleanups, are in add/main.c:getpackagesite().

16 years agoAdd the ndiscvt utility from FreeBSD-5, which is used to compile windows
Matthew Dillon [Fri, 30 Jul 2004 00:24:24 +0000 (00:24 +0000)]
Add the ndiscvt utility from FreeBSD-5, which is used to compile windows
device drivers for NDIS.

16 years agoProvide some basic instructions on how to create an NDIS wireless driver
Matthew Dillon [Thu, 29 Jul 2004 21:51:55 +0000 (21:51 +0000)]
Provide some basic instructions on how to create an NDIS wireless driver
based on instructions I found on the net and my own playing around.

16 years agoFix more __stdcall issues. Move the __stdcall into the function typedefs
Matthew Dillon [Thu, 29 Jul 2004 21:35:57 +0000 (21:35 +0000)]
Fix more __stdcall issues.  Move the __stdcall into the function typedefs
themselves instead of specifying it later on when the function typedef is
declared.  This fixes a number of warnings plus it also fixes internal
compiler errors that occur with gcc-2.95.x.

16 years agoNDIS_INFO -> NDIS_LOCK_INFO
Matthew Dillon [Thu, 29 Jul 2004 21:07:32 +0000 (21:07 +0000)]
NDIS_INFO -> NDIS_LOCK_INFO

16 years agoGenerally speaking modules should unconditionally enable things like
Matthew Dillon [Thu, 29 Jul 2004 21:05:54 +0000 (21:05 +0000)]
Generally speaking modules should unconditionally enable things like
INET.  INET is not something developers usually set in /etc/make.conf.

Follow what other modules are doing and unconditionally #define INET and IPX.
This fixes an ARP problem with this module :-).

16 years agoBring in NDIS emulation support from FreeBSD-5. NDIS is a Windows device
Matthew Dillon [Thu, 29 Jul 2004 20:51:36 +0000 (20:51 +0000)]
Bring in NDIS emulation support from FreeBSD-5.  NDIS is a Windows device
driver API emulator.  The FreeBSD work was done by Bill Paul
<wpaul@windriver.com>, who has again proven himself to be a more insane
hacker then the rest of us.

Bring in IF_NDIS from FreeBSD-5.

Make a number of additional changes to the driver.  Windows API calls are not
compatible with standard gnu C.   The FreeBSD-5 NDIS code properly uses
__attribute__((__stdcall__)) to deal with the target-pops-argument-stack
issue but had terrible __asm hacks to deal with regargs.  Consolidate the
regargs support into a new header file, regcall.h, and use
__attribute__((__regparm__(3))) to formalize argument passing in registers.
Note that __regparm__(3) places three arguments in registers in the
following order: %eax, %edx, %ecx, but Windoz reg calls place registered
arguments in %ecx and %edx (and additional arguments go on the stack).
regcall.h provides macros to do the proper (I hope) translations.

DragonFly's kernel threads do not have proc structures.  Convert up all the
proc references to thread references.

Convert mutex ops into token ops.

Fix a number of prototypes, including one that was causing an internal
compiler error in gcc2.

Testing: Doesn't crash with Sony-TR3A Intel Centrino 2200 based wireless
chipset, is able to DHCP up the IP address, but cannot yet ping due
to an issue in the ARP code somewhere.
Taken from: FreeBSD-5 / Bill Paul

16 years agoSync the IFM_MAKEMODE() macro from FreeBSD-5.
Matthew Dillon [Thu, 29 Jul 2004 20:34:29 +0000 (20:34 +0000)]
Sync the IFM_MAKEMODE() macro from FreeBSD-5.

16 years agoWork to allow pure threads to issue VFS lookups: (untested/experimental)
Matthew Dillon [Thu, 29 Jul 2004 20:34:09 +0000 (20:34 +0000)]
Work to allow pure threads to issue VFS lookups:  (untested/experimental)
Use the rootvnode as the basis for searches initiated from pure threads
since no proc or fdp structure exists.

16 years agoWork to allow pure threads to issue VFS lookups: fp_open() uses proc0's
Matthew Dillon [Thu, 29 Jul 2004 20:32:59 +0000 (20:32 +0000)]
Work to allow pure threads to issue VFS lookups:  fp_open() uses proc0's
ucred if called from a pure thread.

16 years agoWork to allow pure threads to issue VFS lookups: Only check p->p_ucred
Matthew Dillon [Thu, 29 Jul 2004 20:32:24 +0000 (20:32 +0000)]
Work to allow pure threads to issue VFS lookups:  Only check p->p_ucred
if p is not NULL.

16 years agoAdd a test-and-set and release poll function. This is really just a hack
Matthew Dillon [Thu, 29 Jul 2004 20:31:13 +0000 (20:31 +0000)]
Add a test-and-set and release poll function.  This is really just a hack
to support NDIS emulation.

16 years agoRemove a recently added incorrect assertion. I was assuming that
Matthew Dillon [Thu, 29 Jul 2004 20:30:32 +0000 (20:30 +0000)]
Remove a recently added incorrect assertion.  I was assuming that
pmap_init_thread() was only being called for processes but it is called
for both processes and threads.

16 years agoadd the 'y' and 'Y' options to ps, and add the 'iac' keyword. The 'y'
Matthew Dillon [Thu, 29 Jul 2004 09:20:39 +0000 (09:20 +0000)]
add the 'y' and 'Y' options to ps, and add the 'iac' keyword.  The 'y'
option and 'iac' keyword displays the interactive heuristic calcualtion.
It is a value between -127 and 127 where lower numbers indicate more
interactive and higher numbers indicate more batch-like.

16 years agoMove kthread_create() from lwkt_thread.c to kern_kthread.c. Add a new
Matthew Dillon [Thu, 29 Jul 2004 09:02:33 +0000 (09:02 +0000)]
Move kthread_create() from lwkt_thread.c to kern_kthread.c.  Add a new
api function, kthread_create_stk(), which allows a custom stack size to be
specified.

16 years agoAdd LWKT convenience functions lwkt_getpri() and lwkt_getpri_self().
Matthew Dillon [Thu, 29 Jul 2004 08:55:48 +0000 (08:55 +0000)]
Add LWKT convenience functions lwkt_getpri() and lwkt_getpri_self().

16 years agoAdd a stack-size argument to the LWKT threading code so threads can be
Matthew Dillon [Thu, 29 Jul 2004 08:55:02 +0000 (08:55 +0000)]
Add a stack-size argument to the LWKT threading code so threads can be
created with different-sized stacks.  Adjust libcaps to match.

This is a pre-requisit to adding NDIS support.  NDIS threads need larger
stacks because microsoft drivers expect larger stacks.