Commit afcf71d6 authored by Linus Torvalds's avatar Linus Torvalds

Import pre2.0.6

parent 37147b87
......@@ -434,6 +434,15 @@ N: Philip Gladstone
E: philipg@onsett.com
D: Kernel / timekeeping stuff
N: Michael A. Griffith
E: grif@cs.ucr.edu
W: http://www.cs.ucr.edu/~grif
D: Loopback speedup, qlogic scsi hacking, VT_LOCKSWITCH
S: Department of Computer Science
S: University of California, Riverside
S: Riverside, CA 92521-0304
S: USA
N: Dmitry S. Gorodchanin
E: begemot@bgm.rosprint.net
D: RISCom/8 driver, misc kernel fixes.
......@@ -1270,8 +1279,10 @@ S: USA
N: Stephen Tweedie
E: sct@dcs.ed.ac.uk
P: 1024/E7A417AD E2 FE A4 20 34 EC ED FC 7D 7E 67 8D E0 31 D1 69
D: Second extended file system developer
D: General filesystem hacker
D: kswap vm management code
S: Dept. of Computer Science
S: University of Edinburgh
S: JCMB, The King's Buildings
......@@ -1350,6 +1361,13 @@ S: Roger Maris Cancer Center
S: 820 4th St. N.
S: Fargo, ND 58122
N: Hans-Joachim Widmaier
E: jbhr@sofal.tynet.sub.org
D: AFFS rewrite
S: Eichenweg 16
S: 73650 Winterbach
S: Germany
N: Marco van Wieringen
E: mvw@mercury.mcs.nl.mugnet.org
D: Author of acct and quota
......
......@@ -324,8 +324,8 @@ throughout 1.3.x. A warning will be printed in 2.0.x when the old
numbers are used, and their use will be discontinued entirely in 2.1.x
In order to avoid trouble, you need to recompile any programs that
emit floppy ioctls. These include mtools and fdutils. You can get
mtools at:
emit floppy ioctls. These include mtools, fdutils and dosemu. You can
get mtools at:
ftp://ftp.imag.fr/pub/Linux/ZLIBC/mtools/mtools-3.0.src.tar.gz
ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/mtools-3.0.src.tar.gz
......@@ -337,6 +337,8 @@ ftp://ftp.imag.fr/pub/Linux/ZLIBC/fdutils/fdutils-4.3.src.tar.gz
ftp://sunsite.unc.edu/pub/Linux/system/Misc/fdutils-4.3.src.tar.gz
ftp://tsx-11.mit.edu/pub/linux/sources/sbin/fdutils-4.3.src.tar.gz
For dosemu, see above.
In the future, the ioctl used by fdformat might be discontinued
altogether. Please use superformat (included in fdutils) instead.
......
This diff is collapsed.
$Id: README.aztcd,v 2.30 1996/04/26 05:32:23 root Exp root $
$Id: README.aztcd,v 2.50 1996/05/16 18:31:22 root Exp root $
Readme-File /usr/src/Documentation/cdrom/aztcd
for
AZTECH CD-ROM CDA268-01A, ORCHID CD-3110,
OKANO/WEARNES CDD110, CONRAD TXC, CyCDROM CR520, CR540
CD-ROM Drives
Version 2.3 and newer
Version 2.5 and newer
(for other drives see 6.-8.)
NOTE: THIS DRIVER WILL WORK WITH THE CD-ROM DRIVES LISTED, WHICH HAVE
......
......@@ -77,7 +77,7 @@ let the juke box work on even if a disk has fallen upon the floor and
the drive door has closed without having a disk inside; without any
new software layer or any structures which are not already present in
\cdromh. This `other' group of \linux\ \cdrom\ driver writers
explicitely does {\em not\/} support the idea to define an additional
explicitly does {\em not\/} support the idea to define an additional
software layer between driver and user program.
The following text reflects the opinion of the first mentioned \linux\
......
IDE-CD driver documentation
10 May 1996
19 May 1996
scott snyder <snyder@fnald0.fnal.gov>
1. Introduction
......@@ -45,7 +45,7 @@ This driver provides the following features:
---------------
0. The ide-cd relies on the ide disk driver. See
drivers/block/README.ide for up-to-date information on the ide
Documentation/ide.txt for up-to-date information on the ide
driver.
1. Make sure that the ide and ide-cd drivers are compiled into the
......@@ -61,7 +61,7 @@ This driver provides the following features:
Depending on what type of IDE interface you have, you may need to
specify additional configuration options. See
drivers/block/README.ide.
Documentation/ide.txt.
2. You should also ensure that the iso9660 filesystem is either
compiled into the kernel or available as a loadable module. You
......@@ -81,7 +81,7 @@ This driver provides the following features:
on the primary IDE interface are called `hda' and `hdb',
respectively. The drives on the secondary interface are called
`hdc' and `hdd'. (Interfaces at other locations get other letters
in the third position; see drivers/block/README.ide.)
in the third position; see Documentation/ide.txt.)
If you want your cdrom drive to be found automatically by the
driver, you should make sure your IDE interface uses either the
......@@ -90,7 +90,7 @@ This driver provides the following features:
be jumpered as `master'. (If for some reason you cannot configure
your system in this manner, you can probably still use the driver.
You may have to pass extra configuration information to the kernel
when you boot, however. See drivers/block/README.ide for more
when you boot, however. See Documentation/ide.txt for more
information.)
4. Boot the system. If the drive is recognized, you should see a
......@@ -194,7 +194,7 @@ TEST
This section discusses some common problems encountered when trying to
use the driver, and some possible solutions. Note that if you are
experiencing problems, you should probably also review
drivers/block/README.ide for current information about the underlying
Documentation/ide.txt for current information about the underlying
IDE support code. Some of these items apply only to earlier versions
of the driver, but are mentioned here for completeness.
......@@ -204,7 +204,7 @@ from the driver.
a. Drive is not detected during booting.
- Review the configuration instructions above and in
drivers/block/README.ide, and check how your hardware is
Documentation/ide.txt, and check how your hardware is
configured.
- If your drive is the only device on an IDE interface, it should
......@@ -212,7 +212,7 @@ a. Drive is not detected during booting.
- If your IDE interface is not at the standard addresses of 0x170
or 0x1f0, you'll need to explicitly inform the driver using a
lilo option. See drivers/block/README.ide. (This feature was
lilo option. See Documentation/ide.txt. (This feature was
added around kernel version 1.3.30.)
- If the autoprobing is not finding your drive, you can tell the
......@@ -238,7 +238,7 @@ a. Drive is not detected during booting.
Support for some interfaces needing extra initialization is
provided in later 1.3.x kernels. You may need to turn on
additional kernel configuration options to get them to work;
see drivers/block/README.ide.
see Documentation/ide.txt.
Even if support is not available for your interface, you may be
able to get it to work with the following procedure. First boot
......@@ -283,7 +283,7 @@ c. System hangups.
be worked around by specifying the `serialize' option when
booting. Recent kernels should be able to detect the need for
this automatically in most cases, but the detection is not
foolproof. See drivers/block/README.ide for more information
foolproof. See Documentation/ide.txt for more information
about the `serialize' option and the CMD640B.
- Note that many MS-DOS cdrom drivers will work with such buggy
......@@ -319,7 +319,7 @@ d. Can't mount a cdrom.
Some early Slackware releases had these defined incorrectly. If
these are wrong, you can remake them by running the script
drivers/block/MAKEDEV.ide. (You may have to make it executable
scripts/MAKEDEV.ide. (You may have to make it executable
with chmod first.)
If you have a /dev/cdrom symbolic link, check that it is pointing
......
......@@ -6,14 +6,12 @@ currently knows 6 different filesystems:
DOS\0 The old or original filesystem, not really suited for
hard disks and normally not used on them, either.
Not supported.
DOS\1 The original Fast File System. Supported.
DOS\2 The old "international" filesystem. International means that
a bug has been fixed so that accented ("international") letters
in file names are case-insensitive, as they ought to be.
Not supported.
DOS\3 The "international" Fast File System. Supported.
......@@ -29,7 +27,10 @@ Supported block sizes are: 512, 1024, 2048 and 4096 bytes. Larger blocks
speed up almost everything with the expense of wasted disk space. The speed
gain above 4K seems not really worth the price, so you don't lose too
much here, either.
The muFS (multi user File System) equivalents of the above file systems
are supported, too.
Mount options for the AFFS
==========================
......@@ -68,6 +69,9 @@ bs=blksize Sets the blocksize to blksize. Valid block sizes are 512,
quiet The file system will not return an error for disallowed
mode changes.
verbose The volume name, file system type and block size will
be written to the syslog.
Handling of the Users/Groups and protection flags
=================================================
......@@ -104,22 +108,47 @@ The Linux rwxrwxrwx file mode is handled as follows:
Newly created files and directories will get the user and group id
of the current user and a mode according to the umask.
Linux can read, but not write, Amiga FFS partitions.
Mount options are
size has the size in 512 byte blocks of the mounted medium.
Case is significant in filename matching, different to real AFFS.
Command line example
====================
mount Archive/Amiga/Workbench3.1.adf /mnt -t affs -o loop,size=1760
mount /dev/sda3 /Amiga -t affs
/etc/fstab example
/dev/sdb5 /d/f affs ro
This file system will probably be writeable in future releases.
Bugs, Restrictions, Caveats
===========================
Quite a few things may not work as advertised. Not everything is
tested, though several hundred MB have been read and written using
this fs.
Filenames are truncated to 30 characters without warning.
Currently there are no checks against invalid characters (':')
in filenames.
Case is ignored by the affs in filename matching, but Linux shells
do care about the case. Example (with /mnt being an affs mounted fs):
rm /mnt/WRONGCASE
will remove /mnt/wrongcase, but
rm /mnt/WR*
will not since the names are matched by the shell.
The block allocation is designed for hard disk partitions. If more
than 1 process writes to a (small) diskette, the blocks are allocated
in an ugly way (but the real AFFS doesn't do much better). This
is also true when space gets tight.
The bitmap valid flag in the root block may not be accurate when the
system crashes while an affs partition is mounted. There's currently
no way to fix this without an Amiga (disk validator) or manually
(who would do this?). Maybe later.
A fsck.affs and mkfs.affs will probably be available in the future.
Until then, you should do
ln -s /bin/true /etc/fs/mkfs.affs
It's not possible to read floppy disks with a normal PC or workstation
due to an incompatibility to the Amiga floppy controller.
......
$Id: INTERFACE,v 1.2 1996/05/18 15:58:53 fritz Exp $
Description of the Interface between Linklevel and Hardwarelevel
of isdn4linux:
......@@ -12,9 +13,29 @@ Description of the Interface between Linklevel and Hardwarelevel
the fields. All further communication is done via callbacks using
the function-pointers defined in isdn_if.
ATTENTION, CHANGES since version 0.6 are marked with "***CHANGE0.6"!
ATTENTION, CHANGES since version 0.7 are marked with "***CHANGE0.7"!
ATTENTION, CHANGES since version 0.71 are marked with "***CHANGE0.7.1"!
Changes/Version numbering:
During development of the ISDN subsystem, several changes have been
made to the interface. Before it went into kernel, the package
had a unique version number. The last version, distributed separately
was 0.7.4. When the subsystem went into kernel, every functional unit
got a separate version number. These numbers are shown at initialization,
separated by slashes:
c.c/t.t/n.n/p.p/a.a
where
c.c is the revision of the common code.
t.t is the revision of the tty related code.
n.n is the revision of the network related code.
p.p is the revision of the ppp related code.
a.a is the revision of the audio related code.
Changes in this document are marked with '***CHANGEx' where x representing
the version number. If that number starts with 0, it refers to the old,
separately distributed package. If it starts with one of the letters
above, it refers to the revision of the corresponding module.
1. Description of the fields of isdn_if:
......@@ -53,6 +74,11 @@ Description of the Interface between Linklevel and Hardwarelevel
void (*rcvcallb)(int, int, u_char*, int);
***CHANGEc1.14: Declared obsolete. Do NOT use this field/function
anymore, since it will be removed when all current
LL drivers have been changed accordingly. Use
rcvcallb_skb instead.
This field will be set by LL. The HL-driver delivers received data-
packets by calling this function.
......@@ -114,6 +140,11 @@ Description of the Interface between Linklevel and Hardwarelevel
int (*writebuf)(int, int, u_char*, int, int);
***CHANGEc1.14: Declared obsolete. Do NOT use this field/function
anymore, since it will be removed when all current
LL drivers have been changed accordingly. Set this
field to NULL and use writebuf_skb instead.
This field has to be preset by the HL-driver. The given function will
be called by the LL for delivering data to be send via B-Channel.
......@@ -149,11 +180,7 @@ Description of the Interface between Linklevel and Hardwarelevel
Length of data accepted on success, else error-code (-EINVAL on
oversized packets etc.)
NOTE on writebuf and writebuf_skb:
The HL-driver may initialize one of the fields to NULL, in which case
the LL will call the non-NULL function only.
int (*writecmd)(u_char*, int, int);
int (*writecmd)(u_char*, int, int, int, int);
This field has to be preset by the HL-driver. The given function will be
called to perform write-requests on /dev/isdnctrl (i.e. sending commands
......@@ -169,11 +196,15 @@ NOTE on writebuf and writebuf_skb:
memcpy, may NOT use schedule())
1 = call from user-space. (HL-driver must use
memcpy_fromfs, use of schedule() allowed)
int driver-Id.
int channel-number locally to the HL-driver. (starts with 0)
***CHANGEc1.14: The driver-Id and channel-number are new since this revision.
Returnvalue:
Length of data accepted on success, else error-code (-EINVAL etc.)
int (*readstat)(u_char*, int, int);
int (*readstat)(u_char*, int, int, int, int);
This field has to be preset by the HL-driver. The given function will be
called to perform read-requests on /dev/isdnctrl (i.e. reading replies
......@@ -189,6 +220,10 @@ NOTE on writebuf and writebuf_skb:
memcpy, may NOT use schedule())
1 = call from user-space. (HL-driver must use
memcpy_fromfs, use of schedule() allowed)
int driver-Id.
int channel-number locally to the HL-driver. (starts with 0)
***CHANGEc1.14: The driver-Id and channel-number are new since this revision.
Returnvalue:
Length of data on success, else error-code (-EINVAL etc.)
......
......@@ -119,6 +119,8 @@ README for the ISDN-subsystem
AT&X0 BTX-mode off (default)
AT&X1 BTX-mode on. (S13.1=1, S14=0, S16=7, S18=7, S19=0)
For voice-mode commands refer to README.audio
1.3.2 Escape sequence:
During a connection, the emulation reacts just like
a normal modem to the escape sequence <DELAY>+++<DELAY>.
......@@ -168,18 +170,34 @@ README for the ISDN-subsystem
1 = Direct tty-send.
Bit 1: 0 = T.70 protocol (Only for BTX!) off
1 = T.70 protocol (Only for BTX!) on
14 0 Layer-2 protocol: (with the ICN-driver
currently always 0)
14 0 Layer-2 protocol:
0 = X75/LAPB with I-frames
1 = X75/LAPB with UI-frames
2 = X75/LAPB with BUI-frames
3 = HDLC
4 = Transparent (audio)
15 0 Layer-3 protocol: (at the moment always 0)
0 = transparent
16 250 Send-Packet-size/16
17 8 Window-size for Teles-driver (not yet implemented)
18 7 Service-Octet-1
18 4 Bit coded register, Service-Octet-1 to accept,
or to be used on dialout:
Bit 0: Service 1 (audio) when set.
Bit 1: Service 5 (BTX) when set.
Bit 2: Service 7 (data) when set.
Note: It is possible to set more than one
bit. In this case, on incoming calls
the selected services are accepted,
and if the service is "audio", the
Layer-2-protocol is automatically
changed to 4 regardless of the setting
of register 14. On outgoing calls,
the most significant 1-bit is choosen to
select the outgoing service octet.
19 0 Service-Octet-2
20 0 Bit coded register (readonly)
Service-Octet-1 of last call.
Bit mapping is the same like register 18
Last but not least a (at the moment fairly primitive) device to request
the line-status (/dev/isdninfo) is made available.
......@@ -272,9 +290,8 @@ README for the ISDN-subsystem
Due to limited hardware-capabilities, there is no way to check the
existence of a card. Therefore you need to be sure your card's setup
is correct. Also there are bugs in the printed manual of some newer
16.3 cards. The manual tells the port has to be 0x180. THIS IS WRONG!!
0xd80 is the correct value! Have a look to the kernel-syslog. With
most of the cards, you should see a line "HSCX version A:5 B:5" there.
16.3 cards. Have a look to the kernel-syslog. With most of the cards,
you should see a line "HSCX version A:5 B:5" there.
3.1.2 ICN driver.
......@@ -292,9 +309,10 @@ README for the ISDN-subsystem
When using the ICN double card, you MUST define TWO idstrings.
idstring must start with a character!
The ICN driver supports only one card at the moment. If you like to
use more than one card, build the modularized version, loading it
more than one time, each module driving a single card.
If you like to use more than one card, you can use the program
"icnctrl" from the utility-package to configure additional cards.
You need to configure shared memory only once, since the icn-driver
maps all cards into the same address-space.
Using the "icnctrl"-utility, portbase and shared memory can also be
changed during runtime.
......@@ -335,12 +353,8 @@ README for the ISDN-subsystem
When using the ICN double card, you MUST define TWO idstrings.
idstring must start with a character!
The ICN driver supports only one card at the moment. If you like to
use more than one card, build the modularized version, loading it
more than one time, each module driving a single card.
Using the "icnctrl"-utility, portbase and shared memory can also be
changed during runtime.
Using the "icnctrl"-utility, the same features apply to the modularized
version like to the kernel-builtin one.
The D-channel protocol is configured by loading different firmware
into the card's memory using the "icnctrl"-utility.
......@@ -365,13 +379,16 @@ README for the ISDN-subsystem
For Euro-ISDN:
icnctrl [-d IDstring] load download/loadpg.bin download/pc_eu_ca.bin
When using the ICN-2B, the protocol-software for the second half of
When using the ICN-4B, the protocol-software for the second half of
the card must be appended to the command line.
-> The two LEDs at the back cover of the card (ICN-2B: 4 LEDs) must be
-> The two LEDs at the back cover of the card (ICN-4B: 4 LEDs) must be
blinking intermittently now. If a connection is up, the corresponding
led is lit continuously.
For loading pcbit-firmware, refer to Documentation/isdn/README.pcbit
and the pcbit manpage, included in the utility-package.
b) If you only intend to use ttys, you are nearly ready now.
c) If you want to have really permanent "Modem"-settings on disk, you
......
$Id: README.icn,v 1.3 1996/05/19 00:10:37 fritz Exp $
You can get the ICN-ISDN-card from:
Thinking Objects Software GmbH
......@@ -16,7 +18,8 @@ The card communicates with the PC by two interfaces:
2. A memory window with 16KB-256KB size, which can be setup in 16k steps
over the whole range of 16MB. Isdn4linux only uses a 16k window.
The base address of the window can be configured when loading
the lowlevel-module (see README).
the lowlevel-module (see README). If using more than one card,
all cards are mapped to the same window and activated as needed.
Setting up the IO-address dipswitches for the ICN-ISDN-card:
......
......@@ -12,7 +12,7 @@ To compile isdn4linux with the sync PPP part, you have
to answer the appropriate question when doing a "make config"
Don't forget to load the slhc.o
module before the isdn.o module, if VJ-compression support
is not compiled into your kernel. (e.g if you have PPP or
is not compiled into your kernel. (e.g if you have no PPP or
CSLIP in the kernel)
Using isdn4linux with sync PPP:
......@@ -20,11 +20,13 @@ Using isdn4linux with sync PPP:
Sync PPP is just another encapsulation for isdn4linux. The
name to enable sync PPP encapsulation is 'syncppp' .. e.g:
isdn/isdnctrl encap ippp0 syncppp
/sbin/isdnctrl encap ippp0 syncppp
The name of the interface is here 'ippp0'. You need
one interface with the name 'ippp0' to saturate the
ipppd, which checks the ppp version via this interface.
Currently, all devices must have the name ipppX where
'X' is a decimal value.
To set up a PPP connection you need the ipppd .. You must start
the ipppd once after installing the modules. The ipppd
......@@ -46,7 +48,8 @@ for an example setup script.
To use the MPPP stuff, you must configure a slave device
with isdn4linux. Now call the ipppd with the '+mp' option.
To increase the number of links, you must use the
'addlink' option of the isdnctrl tool.
'addlink' option of the isdnctrl tool. (rc.isdn.syncppp.MPPP is
an example script)
enjoy it,
michael
......
simple isdn4linux PPP FAQ .. to be continued .. not 'debugged'
-------------------------------------------------------------------
Q: pppd,ipppd, syncPPP , asyncPPP .. what is that ?
what should I use?
A: The pppd is for asynchronous PPP .. asynchronous means
here, the framing is character based. (e.g when
using ttyI* or tty* devices)
The ipppd handles PPP packets coming in HDLC
frames (bit based protocol) ... The PPP driver
in isdn4linux pushes all IP packets direct
to the network layer and all PPP protocol
frames to the /dev/ippp* device.
So, the ipppd is a simple external network
protocol handler.
If you login into a remote machine using the
/dev/ttyI* devices and then enable PPP on the
remote terminal server -> use the 'old' pppd
If your remote side immediately starts to send
frames ... you probably connect to a
syncPPP machine .. use the network device part
of isdn4linux with the 'syncppp' encapsulation
and make sure, that the ipppd is running and
connected to at least one /dev/ippp*. Check the
isdn4linux manual on how to configure a network device.
Q: when I start the ipppd .. I only get the
Q01: what's pppd,ipppd, syncPPP , asyncPPP ??
Q02: error message "this systems lacks PPP support"
Q03: strange information using 'ifconfig'
Q04: MPPP?? What's that and how can I use it ...
Q05: I tried MPPP but it doesn't work
Q06: can I use asynchronous PPP encapuslation with network devices
Q07: A SunISDN machine can't connect to my i4l system
Q08: I wanna talk to several machines, which need different configs
Q09: Starting the ipppd, I get only error messages from i4l
Q10: I wanna use dynamic IP address assignment
Q11: I can't connect. How can I check where the problem is.
Q12: How can I reduce login delay?
-------------------------------------------------------------------
Q01: pppd,ipppd, syncPPP , asyncPPP .. what is that ?
what should I use?
A: The pppd is for asynchronous PPP .. asynchron means
here, the framing is character based. (e.g when
using ttyI* or tty* devices)
The ipppd handles PPP packets coming in HDLC
frames (bit based protocol) ... The PPP driver
in isdn4linux pushes all IP packets direct
to the network layer and all PPP protocol
frames to the /dev/ippp* device.
So, the ipppd is a simple externel network
protocol handler.
If you login into a remote machine using the
/dev/ttyI* devices and then enable PPP on the
remote terminal server -> use the 'old' pppd
If your remote side immediately starts to send
frames ... you probably connect to a
syncPPP machine .. use the network device part
of isdn4linux with the 'syncppp' encapsulation
and make sure, that the ipppd is running and
conneted to at least one /dev/ippp*. Check the
isdn4linux manual on how to configure a network device.
--
Q02: when I start the ipppd .. I only get the
error message "this systems lacks PPP support"
A: check that at least the device 'ippp0' exists.
(you can check this e.g with the program 'ifconfig')
......@@ -39,12 +57,168 @@ A: Maybe you have compiled the ipppd with another
kernel source tree than the kernel you currently
run ...
Q: when I list the netdevices with ifconfig I see, that
--
Q03: when I list the netdevices with ifconfig I see, that
my ISDN interface has a HWaddr and IRQ=0 and Base
address = 0
A: The device is a fake ethernet device .. ignore IRQ and baseaddr
A: The device is a fake ethernetdevice .. ignore IRQ and baseaddr
You need the HWaddr only for ethernet encapsulation.
--
Q04: MPPP?? What's that and how can I use it ...
A: MPPP or MP or MPP (Warning: MP is also an
acronym for 'Multi Processor') stands for
Multi Point to Point and means bundling
of several channels to one logical stream.
To enable MPPP negotiation you must call the
ipppd with the '+mp' option.
You must also configure a slave device for
every additional channel. (see the i4l manual
for more)
To use channel bundling you must first activate
the 'master' or inital call. Now you can add
the slave channels with the command:
isdnctrl addlink <device>
e.g:
isdnctrl addlink ippp0
This is different to other encapsualtions of
isdn4linux! With syncPPP, there is no automatic
activation of slave devices.
--
Q05: I tried MPPP but it doesn't work .. the ipppd
writes in the debug log something like:
.. rcvd [0][proto=0x3d] c0 00 00 00 80 fd 01 01 00 0a ...
.. sent [0][LCP ProtRej id=0x2 00 3d c0 00 00 00 80 fd 01 ...
A: you forgot to compile MPPP/RFC1717 support into the
ISDN Subsystem. Recompile with this option enabled.
--
Q06: can I use asynchronous PPP encapuslation
over the network interface of isdn4linux ..
A: No .. that's not possible .. Use the standard
PPP package over the /dev/ttyI* devices. You
must not use the ipppd for this.
--
Q07: A SunISDN machine tries to connect my i4l system,
which doesn't work.
Checking the debug log I just saw garbage like:
!![ ... fill in the line ... ]!!
A: The Sun tries to talk asynchronous PPP ... i4l
can't understand this ... try to use the ttyI*
devices with the standard PPP/pppd package
A: (from Alexanter Strauss: )
!![ ... fill in mail ]!!
--
Q08: A wanna talk to remote machines, which need
a different configuration. The only way
I found to do this is to kill the ipppd and
start a new one with another config to connect
to the second machine.
A: you must bind a network interface explicitly to
an ippp device, where you can connect a (for this
interface) individualy configured ipppd.
--
Q09: When I start the ipppd I only get error messages
from the i4l driver ..
A: When starting, the ipppd calls functions which may
trigger a network packet. (e.g gethostbyname()).
Without the ipppd (at this moment, it is not
fully started) we can't handle this network request.
Try to configure hostnames necessary for the ipppd
in your local /etc/hosts file or in a way, that
your system can resolve it without using an
isdn/ippp network-interface.
--
Q10: I wanna use dynamic IP address assignment ... How
must I configure the network device.
A: At least you must have a routing, which forwards
a packet to the ippp network-interface to trigger
the dial-on-demand.
A default routing to the ippp-interface will work.
Now you must choose a dummy IP address for your
interface.
If for some reason you can't set the default
routing to the ippp interface, you may take any
address of the subnet from which you expect your
dynamic IP number and set a 'network route' for
this subnet to the ippp interface.
To allow overriding of the dummy address you
must call the ipppd with the 'ipcp-accept-local' option.
A: You must know, how the ipppd gets the addresses it wanna
configure. If you don't give any option, the ipppd
tries to negotiate the local host address!
With the option 'noipdefault' it requests an address
from the remote machine. With 'useifip' it gets the
addresses from the net interface. Or you set the addresse
on the option line with the <a.b.c.d:e.f.g.h> option.
Note: the IP address of the remote machine must be configured
locally or the remote machine must send it in an IPCP request.
If your side doesn't know the IP address after negotiation, it
closes the connection!
You must allow overriding of address with the 'ipcp-accept-*'
options, if you have set your own or the remote address
explicitly.
A: Maybe you try these options .. e.g:
/sbin/ipppd :$REMOTE noipdefault /dev/ippp0
where REMOTE must be the address of the remote machine (the
machine, which gives you your address)
--
Q11: I can't connect. How can I check where the problem is.
A: A good help log is the debug output from the ipppd...
Check whether you can find there:
- only a few LCP-conf-req SENT messages (less then 10)
and then a Term-REQ:
-> check whether your ISDN card is well configured
it seems, that your machine doesn't dial
(IRQ,IO,Proto, etc problems)
Configure your ISDN card to print debug messages and
check the /dev/isdnctrl output next time. There
you can see, whether there is activity on the card/line.
- there are at least a few RECV messages in the log:
-> fine: your card is dialing and your remote machine
tries to talk with you. Maybe only a missing
authentification. Check your ipppd configuration again.
- the ipppd exits for some reason:
-> not good ... check /var/adm/syslog and /var/adm/daemon.
Could be a bug in the ipppd.
--
Q12: How can I reduce login delay?
A: Log a login session ('debug' log) and check which options
your remote side rejects. Next time configure your ipppd
to not negotiate these options. Another 'side effect' is, that
this increases redundancy. (e.g your remote side is buggy and
rejects options in a wrong way).
VERSION = 1
PATCHLEVEL = 99
SUBLEVEL = 5
SUBLEVEL = 6
ARCH = i386
......
......@@ -24,6 +24,7 @@ CONFIG_NATIVE=y
# CONFIG_ALPHA_EB66P is not set
# CONFIG_ALPHA_EB64P is not set
CONFIG_ALPHA_EB164=y
# CONFIG_ALPHA_PC164 is not set
# CONFIG_ALPHA_JENSEN is not set
# CONFIG_ALPHA_NONAME is not set
# CONFIG_ALPHA_P2K is not set
......@@ -47,11 +48,15 @@ CONFIG_BLK_DEV_FD=y
# Please see drivers/block/README.ide for help/info on IDE drives
#
# CONFIG_BLK_DEV_HD_ONLY is not set
#
# Additional Block Devices
#
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_MD is not set
CONFIG_BLK_DEV_RAM=y
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_BLK_DEV_MD is not set
#
# Networking options
......@@ -120,7 +125,7 @@ CONFIG_SCSI_NCR53C7xx_FAST=y
# CONFIG_SCSI_NCR53C7xx_DISCONNECT is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_PAS16 is not set
# CONFIG_SCSI_QLOGIC is not set
# CONFIG_SCSI_QLOGIC_FAS is not set
# CONFIG_SCSI_SEAGATE is not set
# CONFIG_SCSI_T128 is not set
# CONFIG_SCSI_ULTRASTOR is not set
......
......@@ -70,9 +70,9 @@ asmlinkage void do_entArith(unsigned long summary, unsigned long write_mask,
force_sig(SIGFPE, current);
}
asmlinkage void do_entIF(unsigned long type, unsigned long a1, unsigned long a2,
unsigned long a3, unsigned long a4, unsigned long a5,
struct pt_regs regs)
asmlinkage void do_entIF(unsigned long type, unsigned long a1,
unsigned long a2, unsigned long a3, unsigned long a4,
unsigned long a5, struct pt_regs regs)
{
extern int ptrace_cancel_bpt (struct task_struct *who);
......@@ -201,18 +201,18 @@ asmlinkage void do_entUna(void * va, unsigned long opcode, unsigned long reg,
if (reg >= 16 && reg <= 18)
reg += 19;
switch (opcode) {
case 0x28: /* ldl */
*(reg+regs.regs) = (int) ldl_u(va);
return;
case 0x29: /* ldq */
*(reg+regs.regs) = ldq_u(va);
return;
case 0x2c: /* stl */
stl_u(*(reg+regs.regs), va);
return;
case 0x2d: /* stq */
stq_u(*(reg+regs.regs), va);
return;
case 0x28: /* ldl */
*(reg+regs.regs) = get_unaligned((int *)va);
return;
case 0x29: /* ldq */
*(reg+regs.regs) = get_unaligned((long *)va);
return;
case 0x2c: /* stl */
put_unaligned(*(reg+regs.regs), (int *)va);
return;
case 0x2d: /* stq */
put_unaligned(*(reg+regs.regs), (long *)va);
return;
}
printk("Bad unaligned kernel access at %016lx: %p %lx %ld\n",
regs.pc, va, opcode, reg);
......@@ -321,45 +321,79 @@ asmlinkage void do_entUnaUser(void * va, unsigned long opcode, unsigned long reg
reg_addr = frame;
if (opcode >= 0x28) {
/* it's an integer load/store */
if (reg < 9) {
reg_addr += 7 + reg; /* v0-t7 in SAVE_ALL frame */
} else if (reg < 16) {
reg_addr += (reg - 9); /* s0-s6 in entUna frame */
} else if (reg < 19) {
reg_addr += 7 + 20 + 3 + (reg - 16); /* a0-a2 in PAL frame */
} else if (reg < 29) {
reg_addr += 7 + 9 + (reg - 19); /* a3-at in SAVE_ALL frame */
} else {
switch (reg) {
case 29: /* gp in PAL frame */
reg_addr += 7 + 20 + 2;
break;
case 30: /* usp in PAL regs */
usp = rdusp();
reg_addr = &usp;
break;
case 31: /* zero "register" */
reg_addr = &zero;
break;
}
switch (reg) {
case 0: case 1: case 2: case 3: case 4:
case 5: case 6: case 7: case 8:
/* v0-t7 in SAVE_ALL frame */
reg_addr += 7 + reg;
break;
case 9: case 10: case 11: case 12:
case 13: case 14: case 15:
/* s0-s6 in entUna frame */
reg_addr += (reg - 9);
break;
case 16: case 17: case 18:
/* a0-a2 in PAL frame */
reg_addr += 7 + 20 + 3 + (reg - 16);
break;
case 19: case 20: case 21: case 22: case 23:
case 24: case 25: case 26: case 27: case 28:
/* a3-at in SAVE_ALL frame */
reg_addr += 7 + 9 + (reg - 19);
break;
case 29:
/* gp in PAL frame */
reg_addr += 7 + 20 + 2;
break;
case 30:
/* usp in PAL regs */
usp = rdusp();
reg_addr = &usp;
break;
case 31:
/* zero "register" */
reg_addr = &zero;
break;
}
}
switch (opcode) {
case 0x22: /* lds */
alpha_write_fp_reg(reg, s_mem_to_reg(ldl_u(va)));
case 0x22: /* lds */
alpha_write_fp_reg(reg, s_mem_to_reg(
get_unaligned((unsigned int *)va)));
break;
case 0x26: /* lds */
alpha_write_fp_reg(reg, s_reg_to_mem(ldl_u(va)));
case 0x26: /* sts */
put_unaligned(s_reg_to_mem(alpha_read_fp_reg(reg)),
(unsigned int *)va);
break;
case 0x23: alpha_write_fp_reg(reg, ldq_u(va)); break; /* ldt */
case 0x27: stq_u(alpha_read_fp_reg(reg), va); break; /* stt */
case 0x23: /* ldt */
alpha_write_fp_reg(reg, get_unaligned((unsigned long *)va));
break;
case 0x27: /* stt */
put_unaligned(alpha_read_fp_reg(reg), (unsigned long *)va);
break;
case 0x28: /* ldl */
*reg_addr = get_unaligned((int *)va);
break;
case 0x2c: /* stl */
put_unaligned(*reg_addr, (int *)va);
break;
case 0x29: /* ldq */
*reg_addr = get_unaligned((long *)va);
break;
case 0x2d: /* stq */
put_unaligned(*reg_addr, (long *)va);
break;
case 0x28: *reg_addr = (int) ldl_u(va); break; /* ldl */
case 0x29: *reg_addr = ldq_u(va); break; /* ldq */
case 0x2c: stl_u(*reg_addr, va); break; /* stl */
case 0x2d: stq_u(*reg_addr, va); break; /* stq */
default:
*pc_addr -= 4; /* make pc point to faulting insn */
force_sig(SIGBUS, current);
......@@ -383,10 +417,11 @@ asmlinkage void do_entUnaUser(void * va, unsigned long opcode, unsigned long reg
* got terminally tainted by VMS at some point.
*/
asmlinkage long do_entSys(unsigned long a0, unsigned long a1, unsigned long a2,
unsigned long a3, unsigned long a4, unsigned long a5, struct pt_regs regs)
unsigned long a3, unsigned long a4, unsigned long a5,
struct pt_regs regs)
{
if (regs.r0 != 112)
printk("<sc %ld(%lx,%lx,%lx)>", regs.r0, a0, a1, a2);
printk("<sc %ld(%lx,%lx,%lx)>", regs.r0, a0, a1, a2);
return -1;
}
......
......@@ -880,7 +880,7 @@ vesa1: seg gs ! Get next mode in the list
cmp ax,#0x0080 ! Check validity of mode ID
jc vesa2
or ah,ah ! Valid ID's are 0x0000-0x007f and 0x0100-0x07ff
jz vesan ! [Certain BIOSes errorneously report 0x80-0xff]
jz vesan ! [Certain BIOSes erroneously report 0x80-0xff]
cmp ax,#0x0800
jnc vesae
vesa2: push cx
......
......@@ -44,13 +44,17 @@ CONFIG_BLK_DEV_IDECD=y
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDE_PCMCIA is not set
CONFIG_BLK_DEV_CMD640=y
CONFIG_BLK_DEV_RZ1000=y
# CONFIG_BLK_DEV_TRITON is not set
CONFIG_BLK_DEV_RZ1000=y
# CONFIG_IDE_CHIPSETS is not set
# CONFIG_BLK_DEV_RAM is not set
#
# Additional Block Devices
#
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_XD is not set
# CONFIG_BLK_DEV_MD is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_XD is not set
#
# Networking options
......
......@@ -375,7 +375,7 @@ ENTRY(_start)
movel %d1,%a2@+
/*
* %a2 points now to the page table entry for available pages at %a6,
* hence caching modes for new pages can easiely set unless increasing
* hence caching modes for new pages can easily set unless increasing
* of %a2 are forgotten.
*/
Lnot040:
......
......@@ -30,21 +30,16 @@
#include <asm/system.h>
#ifdef __alpha__
/*
* On the Alpha, we get unaligned access exceptions on
* p->nr_sects and p->start_sect, when the partition table
* is not on a 4-byte boundary, which is frequently the case.
* This code uses unaligned load instructions to prevent
* such exceptions.
* Many architectures don't like unaligned accesses, which is
* frequently the case with the nr_sects and start_sect partition
* table entries.
*/
#include <asm/unaligned.h>
#define NR_SECTS(p) ldl_u(&p->nr_sects)
#define START_SECT(p) ldl_u(&p->start_sect)
#else /* __alpha__ */
#define NR_SECTS(p) p->nr_sects
#define START_SECT(p) p->start_sect
#endif /* __alpha__ */
#define NR_SECTS(p) get_unaligned(&p->nr_sects)
#define START_SECT(p) get_unaligned(&p->start_sect)
struct gendisk *gendisk_head = NULL;
......
......@@ -97,6 +97,7 @@
* 3.12 May 7, 1996 -- Rudimentary changer support. Based on patches
* from Gerhard Zuber <zuber@berlin.snafu.de>.
* Let open succeed even if there's no loaded disc.
* 3.13 May 19, 1996 -- Fixes for changer code.
*
* NOTE: Direct audio reads will only work on some types of drive.
* So far, i've received reports of success for Sony and Toshiba drives.
......@@ -106,6 +107,7 @@
* uses a different protocol.
*
* ATAPI cd-rom driver. To be used with ide.c.
* See Documentation/cdrom/ide-cd for usage information.
*
* Copyright (C) 1994, 1995, 1996 scott snyder <snyder@fnald0.fnal.gov>
* May be copied or modified under the terms of the GNU General Public License
......@@ -130,9 +132,7 @@
#include <asm/io.h>
#include <asm/byteorder.h>
#include <asm/segment.h>
#ifdef __alpha__
# include <asm/unaligned.h>
#endif
#include <asm/unaligned.h>
#include "ide.h"
......@@ -1149,11 +1149,7 @@ static void cdrom_start_read_continuation (ide_drive_t *drive)
pc.c[0] = READ_10;
pc.c[7] = (nframes >> 8);
pc.c[8] = (nframes & 0xff);
#ifdef __alpha__
stl_u (htonl (frame), (unsigned int *) &pc.c[2]);
#else
*(int *)(&pc.c[2]) = htonl (frame);
#endif
put_unaligned(htonl (frame), (unsigned int *) &pc.c[2]);
/* Send the command to the drive and return. */
(void) cdrom_transfer_packet_command (drive, pc.c, sizeof (pc.c),
......@@ -1937,11 +1933,7 @@ cdrom_read_block (ide_drive_t *drive, int format, int lba,
pc.c[0] = READ_CD;
pc.c[1] = (format << 2);
#ifdef __alpha__
stl_u(htonl (lba), (unsigned int *) &pc.c[2]);
#else
*(int *)(&pc.c[2]) = htonl (lba);
#endif
put_unaligned(htonl(lba), (unsigned int *) &pc.c[2]);
pc.c[8] = 1; /* one block */
pc.c[9] = 0x10;
......@@ -1968,7 +1960,7 @@ cdrom_read_block (ide_drive_t *drive, int format, int lba,
/* If SLOT<0, unload the current slot. Otherwise, try to load SLOT. */
static int
cdrom_load_unload (ide_drive_t *drive, unsigned long slot,
cdrom_load_unload (ide_drive_t *drive, int slot,
struct atapi_request_sense *reqbuf)
{
struct packet_command pc;
......@@ -2403,16 +2395,14 @@ int ide_cdrom_ioctl (ide_drive_t *drive, struct inode *inode,
if (drive->usage > 1)
return -EBUSY;
stat = cdrom_load_unload (drive, -1, NULL);
if (stat) return stat;
(void) cdrom_load_unload (drive, -1, NULL);
cdrom_saw_media_change (drive);
if (arg == -1) {
(void) cdrom_lockdoor (drive, 0, NULL);
return 0;
}
stat = cdrom_load_unload (drive, arg, NULL);
if (stat) return stat;
(void) cdrom_load_unload (drive, (int)arg, NULL);
stat = cdrom_check_status (drive, &my_reqbuf);
if (stat && my_reqbuf.sense_key == NOT_READY) {
......@@ -2642,7 +2632,6 @@ void ide_cdrom_setup (ide_drive_t *drive)
* Establish interfaces for an IDE port driver, and break out the cdrom
* code into a loadable module.
* Support changers better.
* Write some real documentation.
*/
......
......@@ -286,9 +286,17 @@ static void make_request(int major,int rw, struct buffer_head * bh)
count = bh->b_size >> 9;
sector = bh->b_rsector;
/* Uhhuh.. Nasty dead-lock possible here.. */
if (buffer_locked(bh))
return;
/* Maybe the above fixes it, and maybe it doesn't boot. Life is interesting */
lock_buffer(bh);
if (blk_size[major])
if (blk_size[major][MINOR(bh->b_rdev)] < (sector + count)>>1) {
bh->b_state = 0;
bh->b_state &= (1 << BH_Lock) | (1 << BH_FreeOnIO);
/* This may well happen - the kernel calls bread()
without checking the size of the device, e.g.,
when mounting a device. */
......@@ -298,13 +306,9 @@ static void make_request(int major,int rw, struct buffer_head * bh)
kdevname(bh->b_rdev), rw,
(sector + count)>>1,
blk_size[major][MINOR(bh->b_rdev)]);
unlock_buffer(bh);
return;
}
/* Uhhuh.. Nasty dead-lock possible here.. */
if (buffer_locked(bh))
return;
/* Maybe the above fixes it, and maybe it doesn't boot. Life is interesting */
lock_buffer(bh);
rw_ahead = 0; /* normal case; gets changed below for READA/WRITEA */
switch (rw) {
......
#define AZT_VERSION "2.40"
/* $Id: aztcd.c,v 2.40 1996/05/01 11:09:35 root Exp root $
#define AZT_VERSION "2.50"
/* $Id: aztcd.c,v 2.50 1996/05/17 16:19:03 root Exp root $
linux/drivers/block/aztcd.c - Aztech CD268 CDROM driver
Copyright (C) 1994,95,96 Werner Zimmermann(zimmerma@rz.fht-esslingen.de)
......@@ -151,6 +151,9 @@
V2.40 Reorganized the placement of functions in the source code file
to reflect the layered approach; did not actually change code
Werner Zimmermann, May 1, 96
V2.50 Heiko Eissfeld suggested to remove some VERIFY_READs in
aztcd_ioctl; check_aztcd_media_change modified
Werner Zimmermann, May 16, 96
*/
#include <linux/module.h>
#include <linux/errno.h>
......@@ -1053,10 +1056,15 @@ void aztcd_setup(char *str, int *ints)
}
/*
* Checking if the media has been changed not yet implemented
* Checking if the media has been changed
*/
static int check_aztcd_media_change(kdev_t full_dev)
{ return 0;
{ if (aztDiskChanged) /* disk changed */
{ aztDiskChanged=0;
return 1;
}
else
return 0; /* no change */
}
/*
......@@ -1127,7 +1135,7 @@ static int aztcd_ioctl(struct inode *ip, struct file *fp, unsigned int cmd, unsi
#ifdef AZT_DEBUG
printk("aztcd ioctl MULTISESSION\n");
#endif
st = verify_area(VERIFY_READ, (void*) arg, sizeof(struct cdrom_multisession));
st = verify_area(VERIFY_WRITE, (void*) arg, sizeof(struct cdrom_multisession));
if (st) return st;
memcpy_fromfs(&ms, (void*) arg, sizeof(struct cdrom_multisession));
if (ms.addr_format == CDROM_MSF)
......@@ -1140,8 +1148,6 @@ static int aztcd_ioctl(struct inode *ip, struct file *fp, unsigned int cmd, unsi
else
return -EINVAL;
ms.xa_flag = DiskInfo.xa;
st = verify_area(VERIFY_WRITE, (void*) arg, sizeof(struct cdrom_multisession));
if (st) return st;
memcpy_tofs((void*) arg, &ms, sizeof(struct cdrom_multisession));
#ifdef AZT_DEBUG
if (ms.addr_format == CDROM_MSF)
......@@ -1225,8 +1231,6 @@ azt_Play.end.min, azt_Play.end.sec, azt_Play.end.frame);
memcpy_tofs((void *) arg, &tocHdr, sizeof tocHdr);
break;
case CDROMREADTOCENTRY: /* Read an entry in the table of contents */
st = verify_area(VERIFY_READ, (void *) arg, sizeof entry);
if (st) return st;
st = verify_area(VERIFY_WRITE, (void *) arg, sizeof entry);
if (st) return st;
memcpy_fromfs(&entry, (void *) arg, sizeof entry);
......@@ -1254,17 +1258,10 @@ azt_Play.end.min, azt_Play.end.sec, azt_Play.end.frame);
memcpy_tofs((void *) arg, &entry, sizeof entry);
break;
case CDROMSUBCHNL: /* Get subchannel info */
st = verify_area(VERIFY_READ, (void *) arg, sizeof(struct cdrom_subchnl));
if (st) {
#ifdef AZT_DEBUG
printk("aztcd: exiting aztcd_ioctl - Error 1 - Command:%x\n",cmd);
#endif
return st;
}
st = verify_area(VERIFY_WRITE, (void *) arg, sizeof(struct cdrom_subchnl));
if (st) {
#ifdef AZT_DEBUG
printk("aztcd: exiting aztcd_ioctl - Error 2 - Command:%x\n",cmd);
printk("aztcd: exiting aztcd_ioctl - Error 1 - Command:%x\n",cmd);
#endif
return st;
}
......@@ -1340,9 +1337,7 @@ azt_Play.end.min, azt_Play.end.sec, azt_Play.end.frame);
#if AZT_PRIVATE_IOCTLS
case CDROMREADCOOKED: /*read data in mode 1 (2048 Bytes)*/
case CDROMREADRAW: /*read data in mode 2 (2336 Bytes)*/
{ st = verify_area(VERIFY_READ, (void *) arg, sizeof msf);
if (st) return st;
st = verify_area(VERIFY_WRITE, (void *) arg, sizeof buf);
{ st = verify_area(VERIFY_WRITE, (void *) arg, sizeof buf);
if (st) return st;
memcpy_fromfs(&msf, (void *) arg, sizeof msf);
/* convert to bcd */
......
......@@ -27,7 +27,7 @@
* Daniel v. Mosnenck (he sent me the Technical and Programming Reference)
* Gerd Knorr (he lent me his PhotoCD)
* Nils Faerber and Roger E. Wolff (extensively tested the LU portion)
* Andreas Kies (testing the mysterious hang up's)
* Andreas Kies (testing the mysterious hangups)
* ... somebody forgotten?
*
* 2.1 1996/04/29 Marcin Dalecki <dalecki@namu03.gwdg.de>
......@@ -38,8 +38,8 @@
* 2.3 1996/05/15 Marcin Dalecki <dalecki@namu03.gwdg.de>
* Fixed stereo support.
* NOTE:
* There will be propably a 3.0 adhering to the new generic non ATAPI
* cdrom interface in the unforseen future.
* There will be probably a 3.0 adhering to the new generic non ATAPI
* cdrom interface in the unforeseen future.
*/
#define VERSION "2.3"
......@@ -261,8 +261,8 @@ static inline int irq(int *ip)
* Return drives status in case of success, -1 otherwise.
*
* First we try to get the status information quickly.
* Then we sleep repeatedly for about 10 usecs, befor we finally reach the
* timeout. For this reason this command must be called with the drive beeing
* Then we sleep repeatedly for about 10 usecs, before we finally reach the
* timeout. For this reason this command must be called with the drive being
* locked!
*/
static int get_status(struct s_drive_stuff *stuffp,
......@@ -462,7 +462,7 @@ int read_toc(struct s_drive_stuff *stuffp)
set_drive_mode(stuffp, DATA);
return -EIO;
}
/* now read actually the index tarcks */
/* now read actually the index tracks */
for (trk = 0;
trk < (stuffp->n_last - stuffp->n_first + 1);
trk++)
......@@ -563,8 +563,8 @@ static int mcdx_ioctl(struct inode *ip, struct file *fp,
/*
* Update disk information, when necessary.
* This part will only work, when the new disk is of the same type as
* the one which was previousley there, esp. also for audio diks.
* This doesn't hurt us, since otherwise the mouting/unmounting scheme
* the one which was previously there, esp. also for audio disks.
* This doesn't hurt us, since otherwise the mounting/unmounting scheme
* will ensure correct operation.
*/
if (stuffp->xxx) { /* disk changed */
......@@ -797,7 +797,7 @@ static int mcdx_ioctl(struct inode *ip, struct file *fp,
return ans;
memcpy_fromfs(&volctrl, (char *) arg, sizeof(volctrl));
/* Adjust for the wiredness of workman. */
/* Adjust for the weirdness of workman. */
volctrl.channel2 = volctrl.channel1;
volctrl.channel1 = volctrl.channel3 = 0x00;
return talk(stuffp, MCDX_CMD_SET_ATTENATOR,
......@@ -815,7 +815,7 @@ static int mcdx_ioctl(struct inode *ip, struct file *fp,
* This does actually the transfer from the drive.
* Return: -1 on timeout or other error
* else status byte (as in stuff->st)
* FIXME: the excessive jumping throught wait queues degrades the
* FIXME: the excessive jumping through wait queues degrades the
* performance significantly.
*/
static int transfer_data(struct s_drive_stuff *stuffp,
......@@ -1179,7 +1179,7 @@ static int mcdx_media_change(kdev_t full_dev)
MCDX_TRACE(("mcdx_media_change()\n"));
/*
* FIXME: propably this is unneded or should be simplified!
* FIXME: probably this is unneeded or should be simplified!
*/
issue_command(stuffp = mcdx_stuffp[MINOR(full_dev)],
MCDX_CMD_GET_STATUS, 5 * HZ);
......@@ -1197,7 +1197,7 @@ static void mcdx_intr(int irq, void *dev_id, struct pt_regs *regs)
u_char b;
if (!(stuffp = mcdx_irq_map[irq])) {
return; /* hugh? */
return; /* huh? */
}
/* NOTE: We only should get interrupts if data were requested.
......@@ -1225,7 +1225,7 @@ static void mcdx_intr(int irq, void *dev_id, struct pt_regs *regs)
/*
* FIXME!
* This seems to hang badly, when the driver is loaded with inappriopriate
* This seems to hang badly, when the driver is loaded with inappropriate
* port/irq settings!
*/
int mcdx_init(void)
......
......@@ -79,7 +79,7 @@ or leave this task to kerneld (if installed). Add the following line to
Configuring the driver
Everytime the driver is inserted into the kernel, it has to know which
Every time the driver is inserted into the kernel, it has to know which
modems it should access at which ports. This can be done with the setbaycom
utility. If you are only using one modem, you can also configure the
driver from the insmod command line (or by means of an option line in
......
......@@ -1868,6 +1868,9 @@ static int pcxe_ioctl(struct tty_struct *tty, struct file * file,
return 0;
case TIOCSSOFTCAR:
error = verify_area(VERIFY_READ, (void *) arg,sizeof(long));
if(error)
return error;
arg = get_fs_long((unsigned long *) arg);
tty->termios->c_cflag = ((tty->termios->c_cflag & ~CLOCAL) | (arg ? CLOCAL : 0));
return 0;
......@@ -1905,6 +1908,9 @@ static int pcxe_ioctl(struct tty_struct *tty, struct file * file,
case TIOCMBIC:
case TIOCMODS:
case TIOCMSET:
error = verify_area(VERIFY_READ, (void *) arg,sizeof(long));
if(error)
return error;
mstat = get_fs_long((unsigned long *) arg);
mflag = 0;
......
......@@ -8,6 +8,7 @@ if [ "$CONFIG_INET" != "n" ]; then
bool 'Support generic MP (RFC 1717)' CONFIG_ISDN_MPP
fi
fi
dep_tristate 'ICN B1 and B2 support' CONFIG_ISDN_DRV_ICN $CONFIG_ISDN
bool 'Support audio via ISDN' CONFIG_ISDN_AUDIO
dep_tristate 'ICN 2B and 4B support' CONFIG_ISDN_DRV_ICN $CONFIG_ISDN
dep_tristate 'PCBIT-D support' CONFIG_ISDN_DRV_PCBIT $CONFIG_ISDN
dep_tristate 'Teles/NICCY1016PC/Creatix support' CONFIG_ISDN_DRV_TELES $CONFIG_ISDN
......@@ -18,6 +18,9 @@ ifeq ($(CONFIG_ISDN),y)
ifdef CONFIG_ISDN_PPP
L_OBJS += isdn_ppp.o
endif
ifdef CONFIG_ISDN_AUDIO
L_OBJS += isdn_audio.o
endif
else
ifeq ($(CONFIG_ISDN),m)
M_OBJS += isdn.o
......@@ -27,6 +30,9 @@ else
ifdef CONFIG_ISDN_PPP
O_OBJS += isdn_ppp.o
endif
ifdef CONFIG_ISDN_AUDIO
O_OBJS += isdn_audio.o
endif
endif
endif
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -38,7 +38,6 @@
#undef ISDN_DEBUG_AT
#undef ISDN_DEBUG_NET_DUMP
#undef ISDN_DEBUG_NET_DIAL
#undef ISDN_DEBUG_NET_BUILDHDR
#undef ISDN_DEBUG_NET_ICALL
/* Prototypes */
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment