More Patches v pre2#2 and showstopper list for 2.0

Alan Cox (alan@lxorguk.ukuu.org.uk)
Sun, 12 May 96 22:30 BST


*
* Miscellaneous small patches and cleanups.
*
* Networking Show Stoppers Left
*
* o Who has broken the unix close down (even without unix_gc).
* o Finish testing and debugging unix_gc - VITAL -
* o ip_evictor panic report
* o Broken path MTU discovery - this absolutely has to be
* resolved before 2.0 either to cure of find out what
* causes this - VITAL -
* o Stuck sockets - pre2.0#2 isnt going to work for web serving
* properly at the moment. - VITAL -
* o Checking if the new arp code has cured the rather lethal
* double lock on device queue.
* o Dummy device rwhod hang report. - VITAL -
* o Route add bug we've added in 1.3.98. - VITAL -
* o TIOCINQ in TCP (patch pending) [needed by Java].
* o Error 'sl0' busy and not MOD_IN_USE.
* o 8390 overrun bug reports.
* o Send queue out of order - again HAS to be fixed. - VITAL -
* o FASYNC bug report.
* o UDP crashes on the alpha when sprayed with tiny frames.
* o IP masquerade bits (patch pending).
*
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/Documentation/Configure.help linux/Documentation/Configure.help
--- linux.vanilla/Documentation/Configure.help Sun May 12 22:54:43 1996
+++ linux/Documentation/Configure.help Sun May 12 21:20:51 1996
@@ -39,12 +39,16 @@
testing is not yet high enough for general use. This is usually
known as the "alpha-test" phase amongst developers. If a feature is
currently in alpha-test, then the developers usually discourage
- widespread use of this feature by the general public to avoid
- "Why doesn't this work?" type mail messages. However, active testing
- and and detailed bug reports from people familiar with the kernel's
- internals are usually welcomed by the developers. Unless you intend
- to help test and develop a feature or driver that falls into this
- category, you should probably say N here, which will cause this
+ uninformed widespread use of this feature by the general public to
+ avoid "Why doesn't this work?" type mail messages. However, active
+ testing and use of these systems is welcomed. Just be aware that it
+ may not meet the normal level of reliability or it may fail to work
+ in some special cases. Detailed bug reports from people familiar with
+ the kernel internals are usually welcomed by the developers.
+
+ Unless you intend to help test and develop a feature or driver that
+ falls into this category, or you have a situation that requires using
+ these features you should probably say N here, which will cause this
configure script to present you with fewer choices. If you say Y here,
you will be offered the choice of using features or drivers that are
currently considered to be in the alpha-test phase.
@@ -403,7 +407,8 @@
net is inspected by the firewall first. If you want to configure
your Linux box as a firewall for a local network, say Y here. If
your local network is TCP/IP based, you will have to say Y to "IP:
- firewalling", below. Chances are that you don't want this, so say N.
+ firewalling", below. Chances are that you should use this on any
+ machine being run as a router and not on a host.

Sun floppy controller support
CONFIG_BLK_DEV_SUNFD
@@ -465,7 +470,7 @@
option to the kernel 3) passing the "mem=4M" option to the kernel
(thereby disabling all but the first 4M of RAM) 4) disabling the
cache from your BIOS settings 5) exchanging RAM chips 6) exchanging
- the motherboard 7) committing suicide.
+ the motherboard.

Using SRM as bootloader
CONFIG_ALPHA_SRM
@@ -772,9 +777,9 @@
IP: multicasting
CONFIG_IP_MULTICAST
This is code for addressing several networked computers at once,
- enlarging your kernel by about 2 kB. Some versions of gated, the
- program which constantly updates a networked computer's routing
- tables, require that this option be compiled in. You also need
+ enlarging your kernel by about 2 kB. If you are using gated, the
+ to update your computer's routing tables and are using RIP2 or OSPF
+ you will need to have this option compiled in. You also need
multicasting if you intend to participate in the MBONE, a high
bandwidth network on top of the internet which carries audio and
video broadcasts. More information about the MBONE is on the WWW at
@@ -789,28 +794,22 @@
Some Linux network drivers use a technique called copy and checksum
to optimize host performance. For a machine which is forwarding most
packets to another host this is however a loss. This parameter turns
- off copy and checksum from devices. It may also do other changes in
+ off copy and checksum from devices. It may make other changes in the
future.

IP: firewalling
CONFIG_IP_FIREWALL
- A firewall is a computer which protects a local network from the
- rest of the internet: all traffic to and from computers on the local
- net is inspected by the firewall first. If you want to configure
- your Linux box as a firewall for a local TCP/IP based network, say Y
- here. This will enlarge your kernel by about 2kB. You will need to
- read the FIREWALL-HOWTO, available via ftp (user: anonymous) in
- sunsite.unc.edu:/pub/Linux/docs/HOWTO. Also, you will have to use
- the ipfw tool from the net-tools package, available via ftp (user:
- anonymous) from
- ftp.linux.org.uk:/pub/linux/Networking/PROGRAMS/NetTools, or
- preferably ipfwadm from ftp.xos.nl:/pub/linux/ipfwadm/. These
- programs allow selective blocking of internet traffic based on type,
- origin and destination. You need to enable IP firewalling in order
- to be able to use IP masquerading (i.e. local computers can chat
- with an outside host, but that outside host is made to think that it
- is talking to the firewall box. Makes the local network completely
- invisible). Chances are that you don't want this, so say N.
+ If you want to configure your Linux box as a firewall for a local
+ TCP/IP based network, say Y here. This will enlarge your kernel by
+ about 2kB. You may need to read the FIREWALL-HOWTO, available via
+ ftp (user: anonymous) in sunsite.unc.edu:/pub/Linux/docs/HOWTO. Also,
+ you will need the ipfwadm tool to allow selective blocking of internet
+ traffic based on type, origin and destination. You need to enable IP
+ firewalling in order to be able to use IP masquerading (i.e. local
+ computers can chat with an outside host, but that outside host is
+ made to think that it is talking to the firewall box. Makes the local
+ network completely invisible) or to use the ip packet accounting to see
+ what is using all your network bandwidth.

IP: accounting
CONFIG_IP_ACCT
@@ -821,13 +820,7 @@
firewalling. The data is accessible with "cat /proc/net/ip_acct", so
you want to say Y to the /proc filesystem below, if you say Y
here. To specify what exactly should be recorded, you need the tool
- ipfw from the net-tools package, available via ftp (user:
- anonymous) from
- ftp.linux.org.uk:/pub/Linux/Networking/PROGRAMS/NetTools. Also, you
- might want to have a look at the net-acct package, available via ftp
- (user: anonymous) from
- sunsite.unc.edu:/pub/Linux/system/Network/management. Most people
- say N, however.
+ ipfwadm (available from ftp.xos.nl if you don't have a copy already).

IP: tunneling
CONFIG_NET_IPIP
@@ -840,8 +833,7 @@
mobile IP facilities (which effectively are doing that). Enabling this
option will produce two modules ( = code which can be inserted in
and removed from the running kernel whenever you want), one
- encapsulator and one decapsulator. This is still alpha code, which
- means that it need not be completely stable. You can read details in
+ encapsulator and one decapsulator. You can read details in
drivers/net/README.tunnel. Most people can say N.

IP: firewall packet logging
@@ -905,8 +897,9 @@
CONFIG_INET_PCTCP
If you have been having difficulties telneting to your Linux machine
from a DOS system that uses (broken) PC/TCP networking software (all
- versions up to OnNet 2.0), try enabling this option. Everyone else
- says N.
+ versions up to OnNet 2.0) over your local ethernet try enabling this
+ option. Everyone else says N. People having problems with NCSA telnet
+ should see the file linux/Documentation/networking/ncsa-telnet.

Reverse ARP
CONFIG_INET_RARP
@@ -939,7 +932,8 @@
we adjust to a smaller size. This is good, so most people say
N. However, some versions of DOS NCSA telnet (and other software)
are broken and can only connect to your Linux machine if you say Y
- here.
+ here. See also Documentation/networking/ncsa-telnet for the location
+ of fixed NCSA telnet clients.

Disable NAGLE algorithm (normally enabled)
CONFIG_TCP_NAGLE_OFF
@@ -957,26 +951,24 @@
decide how to forward the frame. However, there is a feature of the
IP protocol that allows to specify the full route for a given frame
already at its origin. A frame with such a fully specified route is
- called "source routed". The question now is whether we should honor
+ called "source routed". The question now is whether we should honour
these route requests when such frames arrive, or if we should
- drop all those frames instead. Honoring can introduce security
- problems (and is not required by the IP specification), and hence it
- is recommended to say Y here unless you really know what you're
- doing.
+ drop all those frames instead. Honouring them can introduce security
+ problems (and is rarely a useful feature), and hence it is recommended
+ that you say Y here unless you really know what you're doing.

IP: Allow large windows (not recommend if <16Mb of memory)
CONFIG_SKB_LARGE
- This option can speed up network performance. It works by increasing
- the size of socket buffers, thereby reducing overhead but increasing
- memory usage. Say N if you have less than 16Mb of RAM, otherwise Y.
- Note for machines with more that 64MB of RAM: in order for the kernel
- to be able to use the memory above 64MB, pass the command line option
- "mem=XXXM" (where XXX is the memory size in megabytes) to your
- kernel. See the documentation of your boot loader (lilo or loadlin)
- about how to pass options to the kernel. The lilo procedure is also
- explained in the SCSI-HOWTO, available via ftp (user: anonymous) in
- sunsite.unc.edu:/pub/Linux/docs/HOWTO. You also need at least 512kB
- of RAM cache if you have more than 64MB of RAM.
+ On high speed, long distance networks the performance limit on
+ networking becomes the amount of data a machine can buffer until the
+ other end confirms its reception. (At 45Mbit/second there are a lot
+ of bits between New York and London ..). This option allows larger
+ amounts of data to be "in flight" at a given time. It also means a user
+ process can require a lot more memory for network buffers and thus this
+ option is best only used on machines with 16Mb of memory or higher.
+ Unless you are using long links with end to end speeds of over 2Mbit
+ a second or satellite links this option will make no difference to
+ performance.

The IPX protocol
CONFIG_IPX
@@ -1018,9 +1010,10 @@

Appletalk DDP
CONFIG_ATALK
- Appletalk is the way Apple computers speak to each other on an
- Ethernet (Apple calls it EtherTalk) network. If your linux box is
- connected to such a network and you want to join the conversation,
+ Appletalk is the way Apple computers speak to each other on a
+ network. EtherTalk is the name used for appletalk over ethernet and
+ Localtalk is appletalk over the apple serial links. If your linux box
+ is connected to such a network and you want to join the conversation,
say Y. You will need to use the netatalk package so that your Linux
box can act as a print and file server for macs as well as access
appletalk printers. Check out
@@ -1034,6 +1027,10 @@
want). If you want to compile it as a module, say M here and read
Documentation/modules.txt. I hear that the GNU boycott of Apple is
over, so even politically correct people are allowed to say Y here.
+ At the time the kernel is released the localtalk drivers are not
+ yet ready to ship. The kernel however supports localtalk and when
+ such drivers become available all you will need to do is download
+ and install the localtalk driver.

Amateur Radio AX.25 Level 2
CONFIG_AX25
@@ -1044,24 +1041,22 @@
use a low speed TNC (a Terminal Node Controller acts as a kind of
modem connecting your computer's serial port to your radio's
microphone input and speaker output) supporting the KISS protocol or
- the much faster Ottawa PI card (to enable support for this card,
- you'll have to answer Y to the question about ALPHA test drivers,
- below) or the Z8530 SCC cards; the latter two require an additional
- radio modem. In order to use AX.25, you need to get a set of
- supporting software tools via ftp (user: anonymous) from
- sunacm.swan.ac.uk:/pub/misc/Linux/Radio/. A comprehensive listing of
- all the software for Linux amateur radio users as well as
- information about how to configure an AX.25 port is contained in the
- HAM-HOWTO, available via ftp (user: anonymous) in
- sunsite.unc.edu:/pub/Linux/docs/HOWTO. You might also want to check
- out the file Documentation/networking/ax25.txt in the kernel
- source. More information about digital amateur radio in general is
- on the WWW at
+ the various SCC cards that are supported by the Ottowa PI, the
+ Gracilis Packetwin and the generic Z8530 driver.
+ At the moment there is no driver for the Baycom modem serial and parallel
+ port hacks although one is being written (see the HAM-HOWTO). The other
+ baycom cards (SCC) are supported by the Z8530 driver.
+ In order to use AX.25, you need to get a set of all the software for
+ Linux amateur radio users as well as information about how to
+ configure an AX.25 port is contained in the HAM-HOWTO, available via
+ ftp (user: anonymous) in sunsite.unc.edu:/pub/Linux/docs/HOWTO. You
+ might also want to check out the file Documentation/networking/ax25.txt
+ in the kernel source. More information about digital amateur radio
+ in general is on the WWW at
http://www.cis.ohio-state.edu/hypertext/faq/usenet/radio/ham-radio/digital-faq/faq.html
(To browse the WWW, you need to have access to a machine on the
Internet that has one of the programs lynx, netscape or
- Mosaic). AX.25 support is actively being developed, so it's best to
- get the very latest 1.3 kernel if you intend to use this.
+ Mosaic).

Amateur Radio NET/ROM
CONFIG_NETROM
@@ -1076,9 +1071,7 @@
http://www.cis.ohio-state.edu/hypertext/faq/usenet/radio/ham-radio/digital-faq/faq.html
(To browse the WWW, you need to have access to a machine on the
Internet that has one of the programs lynx, netscape or
- Mosaic). Amateur radio support is actively being developed, so you
- might want to get the very latest 1.3 kernel if you intend to use
- this.
+ Mosaic).

AX.25 over Ethernet
CONFIG_BPQETHER
@@ -1094,11 +1087,12 @@
ethernet bridge, which means that the different ethernet segments it
is connected to will appear as one ethernet to the
participants. Several such bridges can work together to create even
- larger networks of ethernets using a cool spanning tree
- algorithm. Note that if your box acts as a bridge, it probably
- contains several ethernet devices, but the kernel is not able to
- recognize more than one at boot time without help; for details read
- the Multiple-Ethernet-mini-HOWTO, available via ftp (user:
+ larger networks of ethernets using the IEEE802.1 spanning tree
+ algorithm. As this is a standard Linux bridges will interwork properly
+ with other third party bridge products. Note that if your box acts as
+ a bridge, it probably contains several ethernet devices, but the kernel
+ is not able to recognize more than one at boot time without help; for
+ details read the Multiple-Ethernet-mini-HOWTO, available via ftp (user:
anonymous) in sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini. The
Bridging code is still in test. If unsure, say N.
The bridge configuration tools are available via ftp from shadow.cabi.net.
@@ -1531,8 +1525,8 @@

Dummy net driver support
CONFIG_DUMMY
- This is essentially a loopback device (i.e. traffic you send to this
- device is immediately returned back to you) with a configurable IP
+ This is essentially a bit-bucket device (i.e. traffic you send to
+ this device is consigned into oblivion) with a configurable IP
address different from the usual 127.0.0.1. It is most commonly used
in order to make your currently inactive SLIP address seem like a
real address for local programs. If you use SLIP or PPP, you might
@@ -1592,6 +1586,14 @@
RELCOM line fill and keepalive monitoring. Ideal on poor quality
analogue lines.

+Six bit SLIP encapsulation
+CONFIG_SLIP_MODE_SLIP6
+ Just occasionally you may need to run IP over hostile serial networks that
+ don't pass all control characters or are only seven bit. This adds an
+ extra mode you can use with SLIP "slip6" which contains only the normal
+ ascii symbols. Its good enough, for example, to run IP over the async
+ ports of a Camtec JNT Pad.
+
Radio network interfaces
CONFIG_NET_RADIO
Radio based interfaces for Linux. Both amateur radio (AX.25) and other
@@ -1651,13 +1653,10 @@

WIC (Radio IP bridge)
CONFIG_WIC
- Don't know what this is; has something to do with the parallel
- port. Say N and that's that. But if you want to compile it as a
- module ( = code which can be inserted in and removed from the
- running kernel whenever you want), say M here and read
- Documentation/modules.txt. :-)
+ Support for the WIC parallel port radio bridge. You'll probably want
+ to say N.

-Z8530 SCC kiss emulation driver for AX.2
+Z8530 SCC kiss emulation driver for AX.25
CONFIG_SCC
These cards are used to connect your Linux box to an amateur radio
and communicate with other computers. If you want to use this, read
@@ -1765,6 +1764,10 @@
from the running kernel whenever you want). If you want to compile
it as a module, say M here and read Documentation/modules.txt.

+Ethernet (10 or 100Mbit)
+CONFIG_NET_ETHERNET
+ Say yes if you want to select support for ethernet cards.
+
Sun LANCE Ethernet support
CONFIG_SUN_LANCE
This is support for lance ethernet cards on Sun workstations such as
@@ -1816,6 +1819,9 @@
more than one network card under linux, read the
Multiple-Ethernet-mini-HOWTO, available from
sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
+ Important: There have been many reports that, with some motherboards
+ mixing an SMC Ultra and an Adaptec AHA1542 SCSI card causes corruption
+ problems with many operating systems.

SMC 9194 Support
CONFIG_SMC9194
@@ -1858,15 +1864,14 @@
If you have a network (ethernet) card of this type, say Y and read
the Ethernet-HOWTO, available via ftp (user: anonymous) in
sunsite.unc.edu:/pub/Linux/docs/HOWTO. Also, consider buying a new
- card, since the 3c501 is buggy and obsolete and the driver is
- unsupported. This driver is also available as a module ( = code
- which can be inserted in and removed from the running kernel
- whenever you want). If you want to compile it as a module, say M
- here and read Documentation/modules.txt as well as
- Documentation/networking/net-modules.txt. If you plan to use more
- than one network card under linux, read the
- Multiple-Ethernet-mini-HOWTO, available from
- sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini.
+ card, since the 3c501 is slow and obsolete. This driver is also
+ available as a module ( = code which can be inserted in and removed
+ from the running kernel whenever you want). If you want to compile
+ it as a module, say M here and read Documentation/modules.txt as well
+ as Documentation/networking/net-modules.txt. If you plan to use more
+ than one network card under linux, read the
+ Multiple-Ethernet-mini-HOWTO, available from
+ sunsite.unc.edu:/pub/Linux/docs/HOWTO/mini - and don't use 3c501s.

3c503 support
CONFIG_EL2
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/Documentation/java.txt linux/Documentation/java.txt
--- linux.vanilla/Documentation/java.txt Sun May 12 22:54:43 1996
+++ linux/Documentation/java.txt Sun May 12 21:20:56 1996
@@ -1,5 +1,5 @@
- JAVA Binary Kernel Support for Linux v1.01
- ------------------------------------------
+ Java(tm) Binary Kernel Support for Linux v1.01
+ ----------------------------------------------

Linux beats them ALL! While all other OS's are TALKING about direct
support of Java Binaries in the OS, Linux is doing it!
@@ -14,9 +14,15 @@
ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/Java-HOWTO

If you install the JDK in a location other than the suggested
- directory of /usr/local/java, then you will need to edit the
- kernel's fs/binfmt_java.c file and make the needed change to the
- _PATH_JAVA definition at the top of that file.
+ directory of /usr/local/java, then you will need to tell the
+ kernel where you put the Java interpreter.
+ There are two ways to do this.
+ One, edit fs/binfmt_java.c file and make the needed change to
+ the _PATH_JAVA definition at the top of that file.
+ Two, as root, issue the command:
+ echo "/path/to/java/interpreter" > /proc/sys/kernel/java-interpreter
+ (Currently, this does not work if you're using a module for
+ Java support.)

2) You must chmod the '*.class' files you wish to execute with
the execute bit. This is not normally (till now) done with
@@ -30,7 +36,6 @@
as a loadable module. If a module, load it with insmod or
kerneld.

-
To test your new setup, enter in the following simple Java app, and name
it "HelloWorld.java":

@@ -75,9 +80,15 @@
with all known browsers.

2) If you install the JDK in a location other than the suggested
- directory of /usr/local/java, then you will need to edit the
- kernel's fs/binfmt_java.c file and make the needed change to the
- _PATH_APPLET definition at the top of that file.
+ directory of /usr/local/java, then you will need to tell the
+ kernel where you put the Java appletviewer.
+ There are two ways to do this.
+ One, edit fs/binfmt_java.c file and make the needed change to
+ the _PATH_APPLET definition at the top of that file.
+ Two, as root, issue the command:
+ echo "/path/to/java/appletviewer" > /proc/sys/kernel/java-appletviewer
+ (Currently, this does not work if you're using a module for
+ Java support.)

3) You must chmod the '*.html' files you wish to execute with
the execute bit. This is not normally (till now) done with
@@ -86,6 +97,7 @@
4) And then execute it.


-
Brian A. Lantz
brian@lantz.com
+(/proc/sys/kernel/java-* support by Mike Shaver (shaver@ingenia.com))
+
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/Documentation/watchdog.txt linux/Documentation/watchdog.txt
--- linux.vanilla/Documentation/watchdog.txt Fri Mar 22 23:15:18 1996
+++ linux/Documentation/watchdog.txt Sun May 12 17:58:30 1996
@@ -2,14 +2,14 @@

Alan Cox <alan@lxorguk.ukuu.org.uk>

- Custom Linux Driver And Program Development
+ Custom Linux Driver And Program Development


The following watchdog drivers are currently implemented:

- IMS WDT501-P
- INS WDT501-P (no fan tachometer)
- IMS WDT500-P
+ ICS WDT501-P
+ ICS WDT501-P (no fan tachometer)
+ ICS WDT500-P
Software Only

All four interfaces provide /dev/watchdog, which when open must be written
@@ -40,6 +40,7 @@
Overheat X o o

The external event interfaces on the WDT boards are not currently supported.
+Minor numbers are however allocated for it.


Example Watchdog Driver
@@ -65,11 +66,17 @@
}


-> People keep asking about the WDT watchdog timer hardware: The phone contacts
-> for Industrial Computer Source are:
->
-> US: 619 677 0898 (sales) 0895 (general)
-> UK: 01243 533900
-> France (1) 69.18.74.30
->
-> and please mention Linux when enquiring.
+Contact Information
+
+People keep asking about the WDT watchdog timer hardware: The phone contacts
+for Industrial Computer Source are:
+
+US: 619 677 0877 (sales) 0895 (fax)
+UK: 01243 533900
+France (1) 69.18.74.30
+
+Industrial Computer Source
+9950 Barnes Canyon Road
+San Diego, CA
+
+and please mention Linux when enquiring.
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/Makefile linux/Makefile
--- linux.vanilla/Makefile Sun May 12 22:54:54 1996
+++ linux/Makefile Sun May 12 21:21:07 1996
@@ -11,7 +11,7 @@
#
# NOTE! SMP is experimental. See the file Documentation/SMP.txt
#
-# SMP = 1
+SMP = 1
#
# SMP profiling options
# SMP_PROF = 1
@@ -37,7 +37,7 @@
AR =$(CROSS_COMPILE)ar
NM =$(CROSS_COMPILE)nm
STRIP =$(CROSS_COMPILE)strip
-MAKE =make
+MAKE =make -j3
AWK =gawk

all: do-it-all
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/arch/i386/config.in linux/arch/i386/config.in
--- linux.vanilla/arch/i386/config.in Sun May 12 17:34:48 1996
+++ linux/arch/i386/config.in Sun May 12 18:03:35 1996
@@ -33,7 +33,9 @@
bool 'System V IPC' CONFIG_SYSVIPC
tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT
tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF
-tristate 'Kernel support for JAVA binaries' CONFIG_BINFMT_JAVA
+if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
+ tristate 'Kernel support for JAVA binaries' CONFIG_BINFMT_JAVA
+fi
bool 'Compile kernel as ELF - if your GCC is ELF-GCC' CONFIG_KERNEL_ELF

choice 'Processor type' \
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/arch/i386/kernel/smp.c linux/arch/i386/kernel/smp.c
--- linux.vanilla/arch/i386/kernel/smp.c Sun May 12 17:34:05 1996
+++ linux/arch/i386/kernel/smp.c Sun May 12 23:08:41 1996
@@ -534,8 +534,10 @@

void smp_callin(void)
{
+ extern void calibrate_delay(void);
int cpuid=GET_APIC_ID(apic_read(APIC_ID));
unsigned long l;
+
/*
* Activate our APIC
*/
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/drivers/char/Config.in linux/drivers/char/Config.in
--- linux.vanilla/drivers/char/Config.in Sun May 12 17:33:43 1996
+++ linux/drivers/char/Config.in Sun May 12 18:22:34 1996
@@ -52,13 +52,13 @@
if [ "$CONFIG_WATCHDOG" != "n" ]; then
bool ' Disable watchdog shutdown on close' CONFIG_WATCHDOG_NOWAYOUT
tristate ' WDT Watchdog timer' CONFIG_WDT
- if [ "$CONFIG_WDT" = "y" ]; then
+ if [ "$CONFIG_WDT" != "n" ]; then
bool ' WDT501 features' CONFIG_WDT_501
if [ "$CONFIG_WDT_501" = "y" ]; then
bool ' Fan Tachometer' CONFIG_WDT_501_FAN
fi
else
- bool ' Software Watchdog' CONFIG_SOFT_WATCHDOG
+ tristate ' Software Watchdog' CONFIG_SOFT_WATCHDOG
fi
fi
bool 'Enhanced Real Time Clock Support' CONFIG_RTC
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/drivers/char/Makefile linux/drivers/char/Makefile
--- linux.vanilla/drivers/char/Makefile Sun May 12 17:33:04 1996
+++ linux/drivers/char/Makefile Sun May 12 18:22:34 1996
@@ -127,10 +127,14 @@
M = y
endif

-ifdef CONFIG_SOFT_WATCHDOG
-L_OBJS += softdog.o
+ifeq ($(CONFIG_SOFT_WATCHDOG),y)
M = y
-# This is not modularized, so if configured then "misc.c" will be resident
+L_OBJS += softdog.o
+else
+ ifeq ($(CONFIG_SOFT_WATCHDOG),m)
+ M_OBJS += softdog.o
+ MM = m
+ endif
endif

ifdef CONFIG_SUN_MOUSE
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/drivers/char/keyboard.c linux/drivers/char/keyboard.c
--- linux.vanilla/drivers/char/keyboard.c Sun May 12 22:54:55 1996
+++ linux/drivers/char/keyboard.c Sun May 12 21:21:08 1996
@@ -412,7 +412,7 @@
#ifndef KBD_IS_FOCUS_9000
#ifdef KBD_REPORT_ERR
if (!raw_mode)
- printk("keyboard error\n");
+ printk(KERN_DEBUG "keyboard error\n");
#endif
#endif
prev_scancode = 0;
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/drivers/char/softdog.c linux/drivers/char/softdog.c
--- linux.vanilla/drivers/char/softdog.c Sun May 12 17:28:20 1996
+++ linux/drivers/char/softdog.c Sun May 12 18:22:34 1996
@@ -1,5 +1,5 @@
/*
- * SoftDog 0.02: A Software Watchdog Device
+ * SoftDog 0.04: A Software Watchdog Device
*
* (c) Copyright 1995 Alan Cox <alan@lxorguk.ukuu.org.uk>
*
@@ -16,8 +16,15 @@
*
* Software only watchdog driver. Unlike its big brother the WDT501P
* driver this won't always recover a failed machine.
+ *
+ * 03/96: Angelo Haritsis <ah@doc.ic.ac.uk> :
+ * Modularised.
+ * Added soft_margin; use upon insmod to change the timer delay.
+ * NB: uses same minor as wdt (WATCHDOG_MINOR); we could use separate
+ * minors.
*/

+#include <linux/module.h>
#include <linux/config.h>
#include <linux/types.h>
#include <linux/kernel.h>
@@ -26,7 +33,9 @@
#include <linux/miscdevice.h>

#define WATCHDOG_MINOR 130
-#define TIMER_MARGIN (60*HZ) /* Allow 1 minute */
+#define TIMER_MARGIN 60 /* (secs) Default is 1 minute */
+
+static int soft_margin = TIMER_MARGIN; /* in seconds */

/*
* Our timer
@@ -43,8 +52,13 @@
static void watchdog_fire(unsigned long data)
{
extern void hard_reset_now(void);
+#ifdef ONLY_TESTING
+ printk(KERN_CRIT "SOFTDOG: Would Reboot.\n");
+#else
+ printk(KERN_CRIT "SOFTDOG: Initiating system reboot.\n");
hard_reset_now();
printk("WATCHDOG: Reboot didn't ?????\n");
+#endif
}

/*
@@ -55,10 +69,11 @@
{
if(timer_alive)
return -EBUSY;
+ MOD_INC_USE_COUNT;
/*
* Activate timer
*/
- watchdog_ticktock.expires=jiffies+TIMER_MARGIN;
+ watchdog_ticktock.expires=jiffies + (soft_margin * HZ);
add_timer(&watchdog_ticktock);
timer_alive++;
return 0;
@@ -68,11 +83,13 @@
{
/*
* Shut off the timer.
+ * Lock it in if it's a module and we defined ...NOWAYOUT
*/
#ifndef CONFIG_WATCHDOG_NOWAYOUT
del_timer(&watchdog_ticktock);
-#endif
+ MOD_DEC_USE_COUNT;
timer_alive=0;
+#endif
}

static int softdog_write(struct inode *inode, struct file *file, const char *data, int len)
@@ -81,39 +98,50 @@
* Refresh the timer.
*/
del_timer(&watchdog_ticktock);
- watchdog_ticktock.expires=jiffies+TIMER_MARGIN;
+ watchdog_ticktock.expires=jiffies + (soft_margin * HZ);
add_timer(&watchdog_ticktock);
return 1;
}

-/*
- * The mouse stuff ought to be renamed misc_register etc before 1.4...
- */
-
-void watchdog_init(void)
+static struct file_operations softdog_fops=
+{
+ NULL, /* Seek */
+ NULL, /* Read */
+ softdog_write, /* Write */
+ NULL, /* Readdir */
+ NULL, /* Select */
+ NULL, /* Ioctl */
+ NULL, /* MMap */
+ softdog_open,
+ softdog_release,
+ NULL,
+ NULL /* Fasync */
+};
+
+static struct miscdevice softdog_miscdev=
{
- static struct file_operations softdog_fops=
- {
- NULL, /* Seek */
- NULL, /* Read */
- softdog_write, /* Write */
- NULL, /* Readdir */
- NULL, /* Select */
- NULL, /* Ioctl */
- NULL, /* MMap */
- softdog_open,
- softdog_release,
- NULL,
- NULL /* Fasync */
- };
- static struct miscdevice softdog_mouse={
- WATCHDOG_MINOR,
- "softdog",
- &softdog_fops
- };
+ WATCHDOG_MINOR,
+ "softdog",
+ &softdog_fops
+};

- misc_register(&softdog_mouse);
+void watchdog_init(void)
+{
+ misc_register(&softdog_miscdev);
init_timer(&watchdog_ticktock);
watchdog_ticktock.function=watchdog_fire;
- printk("Software Watchdog Timer: 0.03\n");
+ printk("Software Watchdog Timer: 0.04, timer margin: %d sec\n", soft_margin);
}
+
+#ifdef MODULE
+int init_module(void)
+{
+ watchdog_init();
+ return 0;
+}
+
+void cleanup_module(void)
+{
+ misc_deregister(&softdog_miscdev);
+}
+#endif
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/drivers/char/vt.c linux/drivers/char/vt.c
--- linux.vanilla/drivers/char/vt.c Sun May 12 17:33:31 1996
+++ linux/drivers/char/vt.c Sun May 12 23:03:18 1996
@@ -236,6 +236,7 @@
* If the time is zero, turn off sound ourselves.
*/
ticks = HZ * ((arg >> 16) & 0xffff) / 1000;
+ if ((arg & 0xffff) == 0 ) arg |= 1; /* jp: huh? */
count = ticks ? (1193180 / (arg & 0xffff)) : 0;
kd_mksound(count, ticks);
return 0;
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/drivers/net/Config.in linux/drivers/net/Config.in
--- linux.vanilla/drivers/net/Config.in Sun May 12 17:33:43 1996
+++ linux/drivers/net/Config.in Sun May 12 18:12:04 1996
@@ -20,6 +20,7 @@
if [ "$CONFIG_SLIP" != "n" ]; then
bool ' CSLIP compressed headers' CONFIG_SLIP_COMPRESSED
bool ' Keepalive and linefill' CONFIG_SLIP_SMART
+ bool ' Six bit SLIP encapsulation' CONFIG_SLIP_MODE_SLIP6
fi
bool 'Radio network interfaces' CONFIG_NET_RADIO
if [ "$CONFIG_NET_RADIO" != "n" ]; then
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/drivers/net/slip.c linux/drivers/net/slip.c
--- linux.vanilla/drivers/net/slip.c Sun May 12 17:34:23 1996
+++ linux/drivers/net/slip.c Sun May 12 18:12:04 1996
@@ -56,9 +56,6 @@
#include <linux/config.h>
#include <linux/module.h>

-/* Undef this, if you don't need 6bit encapsulation code in the driver */
-#define CONFIG_SLIP_MODE_SLIP6
-
#include <asm/system.h>
#include <asm/segment.h>
#include <asm/bitops.h>
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/fs/binfmt_java.c linux/fs/binfmt_java.c
--- linux.vanilla/fs/binfmt_java.c Sun May 12 22:54:57 1996
+++ linux/fs/binfmt_java.c Sun May 12 22:19:19 1996
@@ -14,7 +14,10 @@

#define _PATH_JAVA "/usr/bin/java"
#define _PATH_APPLET "/usr/bin/appletviewer"
-#define _PATH_SH "/bin/sh"
+#define _PATH_SH "/bin/bash"
+
+char binfmt_java_interpreter[65] = _PATH_JAVA;
+char binfmt_java_appletviewer[65] = _PATH_APPLET;

static int do_load_script(struct linux_binprm *bprm,struct pt_regs *regs)
{
@@ -47,7 +50,7 @@
bprm->p = copy_strings(1, &i_name, bprm->page, bprm->p, 2);
bprm->argc++;

- strcpy (bprm->buf, _PATH_JAVA);
+ strcpy (bprm->buf, binfmt_java_interpreter);
cp = bprm->buf;
bprm->p = copy_strings(1, &cp, bprm->page, bprm->p, 2);
bprm->argc++;
@@ -102,12 +105,12 @@
bprm->p = copy_strings(1, &i_name, bprm->page, bprm->p, 2);
bprm->argc++;

- strcpy (bprm->buf, _PATH_APPLET);
+ strcpy (bprm->buf, binfmt_java_appletviewer);
cp = bprm->buf;
bprm->p = copy_strings(1, &cp, bprm->page, bprm->p, 2);
bprm->argc++;

- strcpy (bprm->buf, _PATH_BSHELL);
+ strcpy (bprm->buf, _PATH_SH);
interp = bprm->buf;
if ((i_name = strrchr (bprm->buf, '/')) != NULL)
i_name++;
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/include/linux/sysctl.h linux/include/linux/sysctl.h
--- linux.vanilla/include/linux/sysctl.h Sun May 12 17:30:14 1996
+++ linux/include/linux/sysctl.h Sun May 12 18:02:41 1996
@@ -59,6 +59,8 @@
#define KERN_REALROOTDEV 16 /* real root device to mount after initrd */
#define KERN_NFSRNAME 17 /* NFS root name */
#define KERN_NFSRADDRS 18 /* NFS root addresses */
+#define KERN_JAVA_INTERPRETER 19 /* path to Java(tm) interpreter */
+#define KERN_JAVA_APPLETVIEWER 20 /* path to Java(tm) appletviewer */

/* CTL_VM names: */
#define VM_SWAPCTL 1 /* struct: Set vm swapping control */
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/include/net/af_unix.h linux/include/net/af_unix.h
--- linux.vanilla/include/net/af_unix.h Sun May 12 17:27:55 1996
+++ linux/include/net/af_unix.h Sun May 12 23:06:20 1996
@@ -1,9 +1,14 @@
+#ifndef __LINUX_NET_AFUNIX_H
+#define __LINUX_NET_AFUNIX_H
extern void unix_proto_init(struct net_proto *pro);
extern struct proto_ops unix_proto_ops;
extern void unix_inflight(struct file *fp);
extern void unix_notinflight(struct file *fp);
typedef struct sock unix_socket;
+extern void unix_gc(void);

-unix_socket *unix_socket_list;
+extern unix_socket *unix_socket_list;

#define UNIX_MAX_FD 8
+
+#endif
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/kernel/ksyms.c linux/kernel/ksyms.c
--- linux.vanilla/kernel/ksyms.c Sun May 12 17:33:34 1996
+++ linux/kernel/ksyms.c Sun May 12 18:22:34 1996
@@ -74,6 +74,8 @@
extern int request_dma(unsigned int dmanr, char * deviceID);
extern void free_dma(unsigned int dmanr);

+extern void hard_reset_now(void);
+
struct symbol_table symbol_table = {
#include <linux/symtab_begin.h>
#ifdef MODVERSIONS
@@ -292,6 +294,7 @@
X(simple_strtoul),
X(system_utsname),
X(sys_call_table),
+ X(hard_reset_now),

/* Signal interfaces */
X(send_sig),
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/kernel/sysctl.c linux/kernel/sysctl.c
--- linux.vanilla/kernel/sysctl.c Sun May 12 17:30:18 1996
+++ linux/kernel/sysctl.c Sun May 12 18:02:44 1996
@@ -5,6 +5,7 @@
* Added /proc support, Dec 1995
* Added bdflush entry and intvec min/max checking, 2/23/96, Tom Dyas.
* Added hooks for /proc/sys/net (minor, minor patch), 96/4/1, Mike Shaver.
+ * Added kernel/java-{interpreter,appletviewer}, 96/5/10, Mike Shaver.
*/

#include <linux/config.h>
@@ -97,6 +98,8 @@
static int do_securelevel_strategy (ctl_table *, int *, int, void *, size_t *,
void *, size_t, void **);

+extern char binfmt_java_interpreter[], binfmt_java_appletviewer[];
+
/* The default sysctl tables: */

static ctl_table root_table[] = {
@@ -138,6 +141,12 @@
0644, NULL, &proc_dostring, &sysctl_string },
{KERN_NFSRNAME, "nfs-root-addrs", nfs_root_addrs, NFS_ROOT_ADDRS_LEN,
0644, NULL, &proc_dostring, &sysctl_string },
+#endif
+#ifdef CONFIG_BINFMT_JAVA
+ {KERN_JAVA_INTERPRETER, "java-interpreter", binfmt_java_interpreter,
+ 64, 0644, NULL, &proc_dostring, &sysctl_string },
+ {KERN_JAVA_APPLETVIEWER, "java-appletviewer", binfmt_java_appletviewer,
+ 64, 0644, NULL, &proc_dostring, &sysctl_string },
#endif
{0}
};
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/net/README linux/net/README
--- linux.vanilla/net/README Sun May 12 17:33:20 1996
+++ linux/net/README Sun May 12 18:09:30 1996
@@ -3,26 +3,26 @@

Code Section Bug Report Contact
-------------------+-------------------------------------------
-802 [other ] alan@cymru.net
+802 [other ] alan@lxorguk.ukuu.org.uk
[token ring ] needs a maintainer/debugger
-appletalk alan@cymru.net and netatalk@umich.edu
+appletalk alan@lxorguk.ukuu.org.uk and netatalk@umich.edu
ax25 jsn@cs.nott.ac.uk
-core alan@cymru.net
-ethernet alan@cymru.net
-ipv4 alan@cymru.net
-ipx alan@cymru.net,greg@caldera.com
+core alan@lxorguk.ukuu.org.uk
+ethernet alan@lxorguk.ukuu.org.uk
+ipv4 alan@lxorguk.ukuu.org.uk
+ipx alan@lxorguk.ukuu.org.uk,greg@caldera.com
netrom jsn@cs.nott.ac.uk
-unix alan@cymru.net
+unix alan@lxorguk.ukuu.org.uk


- If in doubt contact me <alan@cymru.net> first.
+ If in doubt contact me <alan@lxorguk.ukuu.org.uk> first.

---------------------------------------------------------------------------

For commercial UK custom Linux networking projects, drivers and development
(but not free support!) I can be contacted via

- I^2IT Ltd, The Innovation Centre, University Of Wales
+ CymruNET Ltd, The Innovation Centre, University Of Wales
Swansea SA2 8PP.
Fax: +44 1792 295811
Tel: +44 1792 295213
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/net/bridge/br.c linux/net/bridge/br.c
--- linux.vanilla/net/bridge/br.c Sun May 12 17:33:21 1996
+++ linux/net/bridge/br.c Sun May 12 23:07:51 1996
@@ -1260,7 +1260,6 @@
int br_forward(struct sk_buff *skb, int port) /* 3.7 */
{
struct fdb *f;
- unsigned long flags;

/*
* flood all ports with frames destined for a group
@@ -1344,7 +1343,6 @@
{
int i;
struct sk_buff *nskb;
- unsigned long flags;

for (i = One; i <= No_of_ports; i++)
{
@@ -1422,7 +1420,6 @@
{
int err;
struct br_cf bcf;
- int i;

switch(cmd)
{
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/net/bridge/br_tree.c linux/net/bridge/br_tree.c
--- linux.vanilla/net/bridge/br_tree.c Sun May 12 17:29:23 1996
+++ linux/net/bridge/br_tree.c Sun May 12 23:06:57 1996
@@ -24,7 +24,6 @@
static int fdb_inited = 0;

int addr_cmp(unsigned char *a1, unsigned char *a2);
-static void printk_avl (struct fdb * tree);

/*
* fdb_head is the AVL tree corresponding to fdb
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/net/ipv4/Config.in linux/net/ipv4/Config.in
--- linux.vanilla/net/ipv4/Config.in Sun May 12 17:34:39 1996
+++ linux/net/ipv4/Config.in Sun May 12 18:48:12 1996
@@ -30,6 +30,6 @@
bool 'IP: PC/TCP compatibility mode' CONFIG_INET_PCTCP
tristate 'IP: Reverse ARP' CONFIG_INET_RARP
bool 'IP: Disable Path MTU Discovery (normally enabled)' CONFIG_NO_PATH_MTU_DISCOVERY
-bool 'IP: Disable NAGLE algorithm (normally enabled)' CONFIG_TCP_NAGLE_OFF
+#bool 'IP: Disable NAGLE algorithm (normally enabled)' CONFIG_TCP_NAGLE_OFF
bool 'IP: Drop source routed frames' CONFIG_IP_NOSR
bool 'IP: Allow large windows (not recommended if <16Mb of memory)' CONFIG_SKB_LARGE
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/net/ipv4/ipip.c linux/net/ipv4/ipip.c
--- linux.vanilla/net/ipv4/ipip.c Sun May 12 17:34:40 1996
+++ linux/net/ipv4/ipip.c Sun May 12 23:09:47 1996
@@ -53,9 +53,6 @@
__u32 daddr, unsigned short len, __u32 saddr,
int redo, struct inet_protocol *protocol)
{
-#ifdef CONFIG_FIREWALL
- int err;
-#endif
/* Don't unlink in the middle of a turnaround */
MOD_INC_USE_COUNT;
#ifdef TUNNEL_DEBUG
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/net/unix/af_unix.c linux/net/unix/af_unix.c
--- linux.vanilla/net/unix/af_unix.c Sun May 12 17:34:42 1996
+++ linux/net/unix/af_unix.c Sun May 12 18:28:36 1996
@@ -188,7 +188,7 @@
}
else
{
- /* passed fds are erased where?? */
+ /* passed fds are erased in the kfree_skb hook */
kfree_skb(skb,FREE_WRITE);
}
}
@@ -354,7 +354,8 @@
skpair->protinfo.af_unix.locks--; /* It may now die */
sk->protinfo.af_unix.other=NULL; /* No pair */
unix_destroy_socket(sk); /* Try to flush out this socket. Throw out buffers at least */
-
+ unix_gc(); /* Garbage collect fds */
+
/*
* FIXME: BSD difference: In BSD all sockets connected to use get ECONNRESET and we die on the spot. In
* Linux we behave like files and pipes do and wait for the last dereference.
diff -u --recursive --new-file --exclude-from exclude linux.vanilla/net/unix/garbage.c linux/net/unix/garbage.c
--- linux.vanilla/net/unix/garbage.c Sun May 12 17:30:23 1996
+++ linux/net/unix/garbage.c Sun May 12 18:28:33 1996
@@ -1,13 +1,9 @@
/*
- * NET3: Garbage Collector For AF_UNIX sockets (STUBS)
+ * NET3: Garbage Collector For AF_UNIX sockets
*
* Garbage Collector:
* Copyright (C) Barak A. Pearlmutter.
* Released under the GPL version 2 or later.
- *
- * NOTE:
- * We don't actually call this yet. I'm finishing some tests before I
- * enable it. The bold can add it in themselves.
*
* Chopped about by Alan Cox 22/3/96 to make it fit the AF_UNIX socket problem.
* If it doesn't work blame me, it worked when Barak sent it.

Alan