Commit 581efda0 authored by Linus Torvalds's avatar Linus Torvalds

Linux 2.1.92 - Feature Freeze

Ok, there's a fairly large patch out there, but as of 2.1.92 I think we
have a real feature-freeze, and we'll try to get a real code-freeze going
soon. There are known problems with the sound drivers etc, which is why a
code-freeze isn't the best suggestion right now, and there are probably
still bugs with some of the new code, but I'll freeze new features for the
upcoming 2.2 kernel.

Yes, some people will scream bloody murder, but others will be relieved
that it finally happened. Thanks especially to David Miller who has been
doing a great job of getting the TCP stack from its problems just a few
weeks ago to really shining new heights. That was my main worry about 2.2
not all that long ago, and was the main reason for having such a slushy
period for a while.

2.1.92 does:
 - ISDN updates
 - alpha update (yes, SMP finally works, although not really stable yet)
 - networking fixes
 - "getcwd()" system call (not very long, the dcache makes this so
   trivial it is scary)
 - the mm responsiveness updates (they were in 2.1.92-pre2, people seemed
   to have found them very effective)
 - some other (mainly driver updates)

Please do test it all out. Feature-freeze doesn't mean that it is supposed
to be bug-free yet, but it does mean that we should be moving into
bugfixing mode in quick order.
And no, this is not an April 1 thing. But this way I can use April 1 as an
excuse if something doesn't actually compile.

                Linus
parent 5e71242d
......@@ -438,8 +438,8 @@ E: bj0rn@blox.se
W: http://www.pi.se/blox/
D: Extended support for loadable modules
D: D-Link pocket adapter drivers
S: Myrstuguv. 83
S: S-143 32 VARBY
S: Grevgatan 11
S: S-114 53 Stockholm
S: Sweden
N: Paal-Kristian Engstad
......@@ -1625,11 +1625,13 @@ S: F-35042 Rennes Cedex
S: France
N: Jon Tombs
E: jon@gtex02.us.es
E: jon@gte.esi.us.es
W: http://www.esi.us.es/~jon
D: NFS mmap()
D: XF86_S3
D: Kernel modules
S: C/ Carlos de Cepeda 36 2-5
D: Parts of varios other programs (xfig, open, ...)
S: C/ Federico Garcia Lorca 1 10-A
S: Sevilla 41005
S: Spain
......
......@@ -7066,6 +7066,12 @@ CONFIG_ISDN_AUDIO
is the only voice-supporting driver. See
Documentation/isdn/README.audio for more information.
X.25 PLP on top of ISDN (EXPERIMENTAL)
CONFIG_ISDN_X25
This experimental feature provides X.25 over ISDN. See
Documentation/isdn/README.x25 for more information about how to
configure and what other options must be enabled for using X.25.
ICN 2B and 4B support
CONFIG_ISDN_DRV_ICN
This enables support for two kinds of ISDN-cards made by a German
......@@ -7079,6 +7085,14 @@ CONFIG_ISDN_DRV_ICN
want), say M here and read Documentation/modules.txt. The module
will be called icn.o.
isdnloop support
CONFIG_ISDN_DRV_LOOP
This driver provides a virtual ISDN card. It's primary purpose is
testing of linklevel features or configuration without getting
charged by your service-provider for lots of phone calls.
You need will need the loopctrl utility from the latest isdn4k-utils
package to set up this driver.
HiSax SiemensChipSet driver support
CONFIG_ISDN_DRV_HISAX
This is a driver supporting the Siemens chipset on various
......@@ -7104,36 +7118,95 @@ CONFIG_HISAX_16_3
the Teles/Creatix PnP and the Teles PCMCIA.
See Documentation/isdn/README.HiSax on how to configure it
using the different cards, a different D-channel protocol, or
non-standard IRQ/port/shmem settings.
non-standard irq/port settings.
HiSax Support for Teles 16.3c
CONFIG_HISAX_TELES3C
This enables HiSax support for the Teles ISDN-cards 16.3c.
See Documentation/isdn/README.HiSax on how to configure it
using the different cards, a different D-channel protocol, or
non-standard irq/port settings.
HiSax Support for AVM A1 (Fritz)
CONFIG_HISAX_AVM_A1
This enables HiSax support for the AVM A1 (aka "Fritz").
See Documentation/isdn/README.HiSax on how to configure it
using the different cards, a different D-channel protocol, or
non-standard IRQ/port/shmem settings.
non-standard irq/port settings.
HiSax Support for Elsa ISA cards
CONFIG_HISAX_ELSA_PCC
This enables HiSax support for the Elsa Mircolink ISA cards and
for the Elsa Quickstep series cards.
CONFIG_HISAX_ELSA
This enables HiSax support for the Elsa Mircolink ISA cards,
for the Elsa Quickstep series cards and Elsa PCMCIA.
See Documentation/isdn/README.HiSax on how to configure it
using the different cards, a different D-channel protocol, or
non-standard IRQ/port/shmem settings.
HiSax Support for Elsa PCMCIA card
CONFIG_HISAX_ELSA_PCMCIA
This enables HiSax support for the Elsa PCMCIA cards.
See Documentation/isdn/README.HiSax on how to configure it
using the different cards, a different D-channel protocol, or
non-standard IRQ/port/shmem settings.
non-standard irq/port settings.
HiSax Support for ITK ix1-micro Revision 2
CONFIG_HISAX_IX1MICROR2
This enables HiSax support for the ITK ix1-micro Revision 2 card.
See Documentation/isdn/README.HiSax on how to configure it
using the different cards, a different D-channel protocol, or
non-standard IRQ/port/shmem settings.
non-standard irq/port settings.
HiSax Support for Eicon.Diehl Diva cards
CONFIG_HISAX_DIEHLDIVA
This enables HiSax support for the Eicon.Diehl Diva none PRO versions
passive ISDN cards.
See Documentation/isdn/README.HiSax on how to configure it
using the different cards, a different D-channel protocol, or
non-standard irq/port settings.
HiSax Support for ASUSCOM cards
CONFIG_HISAX_ASUSCOM
This enables HiSax support for the AsusCom and their OEM versions
passive ISDN cards.
See Documentation/isdn/README.HiSax on how to configure it
using the different cards, a different D-channel protocol, or
non-standard irq/port settings.
HiSax Support for TELEINT cards
CONFIG_HISAX_TELEINT
This enables HiSax support for the TELEINT SA1 semiactiv ISDN card.
See Documentation/isdn/README.HiSax on how to configure it
using the different cards, a different D-channel protocol, or
non-standard irq/port settings.
HiSax Support for Sedlbauer speed card/win-star
CONFIG_HISAX_SEDLBAUER
This enables HiSax support for the Sedlbauer passive ISDN cards.
See Documentation/isdn/README.HiSax on how to configure it
using the different cards, a different D-channel protocol, or
non-standard irq/port settings.
HiSax Support for USR Sportster internal TA
CONFIG_HISAX_SPORTSTER
This enables HiSax support for the USR Sportster internal TA card.
See Documentation/isdn/README.HiSax on how to configure it
using a different D-channel protocol, or non-standard irq/port settings.
HiSax Support for MIC card
CONFIG_HISAX_MIC
This enables HiSax support for the ITH MIC card.
See Documentation/isdn/README.HiSax on how to configure it
using a different D-channel protocol, or non-standard irq/port settings.
HiSax Support for NETjet card
CONFIG_HISAX_NETJET
This enables HiSax support for the NetJet from Traverse Technologies.
See Documentation/isdn/README.HiSax on how to configure it
using a different D-channel protocol, or non-standard irq/port settings.
HiSax Support for Niccy PnP/PCI card
CONFIG_HISAX_NICCY
This enables HiSax support for the Dr. Neuhaus Niccy PnP or PCI.
See Documentation/isdn/README.HiSax on how to configure it
using a different D-channel protocol, or non-standard irq/port settings.
HiSax Support for Am7930 (EXPERIMENTAL)
CONFIG_HISAX_AMD7930
This enables HiSax support for the AMD7930 chips on some sparcs.
This code is not finished yet.
HiSax Support for EURO/DSS1
CONFIG_HISAX_EURO
......@@ -7142,7 +7215,18 @@ CONFIG_HISAX_EURO
NOTE: This is mutually exclusive with HiSax Support for
German 1TR6 if you have only one ISDN card installed.
HiSax Support for US/NI-1
Support for german tarifinfo
CONFIG_DE_AOC
If you want, that HiSax send messages to the linklevel on each
AOCD/AOCE, enable this. This works only in Germany.
Support for australian Microlink service (not for std. EURO)
CONFIG_HISAX_ML
If you are in Australia and connected on the Microlink telephone
network enable this, because here are little differences in protocol.
Please don't enable this in other countries.
HiSax Support for US/NI-1 (not released yet)
CONFIG_HISAX_NI1
You should choose the D-channel protocol your local
telephone service provider uses here by saying Y or N.
......@@ -7199,6 +7283,14 @@ CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON
disconnecting. This will increase the size of the kernel by 7K. If
unsure, say Y.
IBM Active 2000 support (EXPERIMENTAL)
CONFIG_ISDN_DRV_ACT2000
This enables support for IBM Active 2000 ISDN card. In order to use
this card, additional firmware is necessary, which has to be loaded
into the card using a utility which is part of the latest isdn4k-utils
package. Please read the file Documentation/isdn/README.act2000 for
more information.
Support for AP1000 multicomputer
CONFIG_AP1000
This enables support for a sparc based parallel multi-computer
......
......@@ -19,4 +19,12 @@ README.syncppp
syncPPP.FAQ
- frequently asked questions about running PPP over ISDN.
README.avmb1
- info on driver for AVM-B1 ISDN card
- info on driver for AVM-B1 ISDN card.
README.act2000
- info on driver for IBM ACT-2000 card.
README.concap
- info on "CONCAP" ecapsulation protocol interface used for X.25.
README.sc
- info on driver for Spellcaster cards.
README.x25
_ info for running X.25 over ISDN.
......@@ -8,6 +8,9 @@ Thomas Bogend
Alan Cox (alan@cymru.net)
For help getting into standard-kernel.
Henner Eisen (eis@baty.hanse.de)
For X.25 implementation.
Volker Götz (volker@oops.franken.de)
For contribution of man-pages, the imontty-tool and a perfect
maintaining of the mailing-list at hub-wue.
......@@ -37,18 +40,24 @@ Pedro Roque Marques (roque@di.fc.ul.pt)
Eberhard Moenkeberg (emoenke@gwdg.de)
For testing and help to get into kernel.
Thomas Neumann (tn@ruhr.de)
For help with Cisco-SLARP and keepalive
Jan den Ouden (denouden@groovin.xs4all.nl)
For contribution of the teles-driver
For contribution of the original teles-driver
Carsten Paeth (calle@calle.in-berlin.de)
For the AVM-B1-CAPI2.0 driver
Thomas Pfeiffer (pfeiffer@pds.de)
For V.110, extended T.70 and Hylafax extensions in isdn_tty.c
Max Riegel (riegel@max.franken.de)
For making the ICN hardware-documentation and test-equipment available.
Gerhard 'Fido' Schneider (fido@wuff.franken.de)
Gerhard 'Fido' Schneider (fido@wuff.mayn.de)
For heavy-duty-beta-testing with his BBS ;)
Thomas Uhl (uhl@think.de)
For distributing the cards.
For pushing me to work ;-)
Carsten Paeth (calle@calle.in-berlin.de)
For the AVM-B1-CAPI2.0 driver
$Id: INTERFACE,v 1.6 1997/02/10 22:40:57 fritz Exp $
$Id: INTERFACE,v 1.8 1998/02/20 17:38:20 fritz Exp $
Description of the Interface between Linklevel and Hardwarelevel
of isdn4linux:
......@@ -22,7 +22,7 @@ Description of the Interface between Linklevel and Hardwarelevel
got a separate version number. These numbers are shown at initialization,
separated by slashes:
c.c/t.t/n.n/p.p/a.a
c.c/t.t/n.n/p.p/a.a/v.v
where
......@@ -31,11 +31,13 @@ Description of the Interface between Linklevel and Hardwarelevel
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.
v.v is the revision of the V.110 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.
***CHANGEIx refers to the revision number of the isdnif.h
1. Description of the fields of isdn_if:
......@@ -65,32 +67,16 @@ Description of the Interface between Linklevel and Hardwarelevel
unsigned short hl_hdrlen;
***CHANGED.7.4: New field.
***CHANGE0.7.4: New field.
To be preset by the HL-driver, if it supports sk_buff's. The driver
should put here the amount of additional space needed in sk-buff's for
its internal purposes. Drivers not supporting sk_buff's should put
initialize this field to 0.
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.
Parameter:
int driver-Id
int Channel-number locally to the driver. (starting with 0)
u_char Pointer to received data. (in kernel-space)
int length of data-packet.
void (*rcvcallb_skb)(int, int, struct sk_buff *)
***CHANGED.7.4: New field.
***CHANGE0.7.4: New field.
This field will be set by LL. The HL-driver delivers received data-
packets by calling this function. Upon calling, the HL-driver must
......@@ -138,41 +124,22 @@ Description of the Interface between Linklevel and Hardwarelevel
Returnvalue:
>=0 on success, else error-code (-ENODEV etc.)
int (*writebuf)(int, int, u_char*, int, int);
int (*writebuf_skb)(int, int, int, struct sk_buff *)
***CHANGED1.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.
Parameter:
int driver-Id ***CHANGE.7.4: New parameter.
int channel-number locally to the HL-driver. (starts with 0)
u_char* pointer to data.
int length of data-packet.
int flag: 0 = call from within kernel-space. (HL-driver must use
memcpy, may NOT use schedule())
1 = call from user-space. (HL-driver must use
memcpy_fromfs, use of schedule() allowed)
Returnvalue:
Length of data accepted on success, else error-code (-EINVAL on
oversized packets etc.)
int (*writebuf_skb)(int, int, struct sk_buff *)
***CHANGED.7.4: New field.
***CHANGE0.7.4: New field.
***CHANGEI.1.21: New field.
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.
Parameter:
int driver-Id ***CHANGE.7.4: New parameter.
int driver-Id ***CHANGE0.7.4: New parameter.
int channel-number locally to the HL-driver. (starts with 0)
int ack ***ChangeI1.21: New parameter
If this is !0, the driver has to signal the delivery
by sending an ISDN_STAT_BSENT. If this is 0, the driver
MUST NOT send an ISDN_STAT_BSENT.
struct sk_buff * Pointer to sk_buff containing data to be send via
B-channel.
......@@ -199,7 +166,7 @@ Description of the Interface between Linklevel and Hardwarelevel
int driver-Id.
int channel-number locally to the HL-driver. (starts with 0)
***CHANGED1.14: The driver-Id and channel-number are new since this revision.
***CHANGEI1.14: The driver-Id and channel-number are new since this revision.
Returnvalue:
Length of data accepted on success, else error-code (-EINVAL etc.)
......@@ -223,7 +190,7 @@ Description of the Interface between Linklevel and Hardwarelevel
int driver-Id.
int channel-number locally to the HL-driver. (starts with 0)
***CHANGED1.14: The driver-Id and channel-number are new since this revision.
***CHANGEI1.14: The driver-Id and channel-number are new since this revision.
Returnvalue:
Length of data on success, else error-code (-EINVAL etc.)
......@@ -249,7 +216,7 @@ Description of the Interface between Linklevel and Hardwarelevel
Until now, the following commands are defined:
***CHANGED1.34: The parameter "num" has been replaced by a union "para" containing
***CHANGEI1.34: The parameter "num" has been replaced by a union "para" containing
the old "num" and a new setup_type struct used for ISDN_CMD_DIAL
and ISDN_STAT_ICALL callback.
......@@ -552,6 +519,9 @@ Description of the Interface between Linklevel and Hardwarelevel
a B-Channel-connection. (Response to ISDN_CMD_ACCEPTB or because the
remote-station has initiated establishment)
The HL driver should call this when the logical l2/l3 protocol
connection on top of the physical B-channel is esatblished .
Parameter:
driver = driver-Id
command = ISDN_STAT_BCONN
......@@ -577,6 +547,9 @@ Description of the Interface between Linklevel and Hardwarelevel
B-Channel-connection. This could be a response to a prior ISDN_CMD_HANGUP,
or caused by a remote-hangup.
The HL driver should call this as soon as the logical l2/l3 protocol
connection on top of the physical B-channel is released.
Parameter:
driver = driver-Id
command = ISDN_STAT_BHUP
......@@ -617,7 +590,9 @@ Description of the Interface between Linklevel and Hardwarelevel
driver = driver-Id
command = ISDN_STAT_BSENT
arg = channel-number, locally to the driver. (starting with 0)
para = unused.
para.length = ***CHANGEI.1.21: New field.
the driver has to set this to the original length
of the skb at the time of receiving it from the linklevel.
ISDN_STAT_NODCH:
......@@ -657,3 +632,16 @@ Description of the Interface between Linklevel and Hardwarelevel
arg = channel-number, locally to the driver. (starting with 0)
para.num = ASCII string containing CAUSE-message.
ISDN_STAT_L1ERR:
***CHANGEI1.21 new status message.
A signal can be sent to the linklevel if an Layer1-error results in
packet-loss on receive or send. The field errcode of the cmd.parm
union describes the error more precisely.
Parameter:
driver = driver-Id
command = ISDN_STAT_L1ERR
arg = channel-number, locally to the driver. (starting with 0)
para.errcode= ISDN_STAT_L1ERR_SEND: Packet lost while sending.
ISDN_STAT_L1ERR_RECV: Packet lost while receiving.
......@@ -120,12 +120,35 @@ README for the ISDN-subsystem
AT&D3 Same as AT&D2 but also resets all registers.
AT&Ex Set the EAZ/MSN for this channel to x.
AT&F Reset all registers and profile to "factory-defaults"
AT&Rx Select V.110 bitrate adaption.
This command enables V.110 protocol with 9600 baud
(x=9600), 19200 baud (x=19200) or 38400 baud
(x=38400). A value of x=0 disables V.110 switching
back to default X.75. This command sets the following
Registers:
Reg 14 (Layer-2 protocol):
x = 0: 0
x = 9600: 7
x = 19200: 8
x = 38400: 9
Reg 18.2 = 1
Reg 19 (Additional Service Indicator):
x = 0: 0
x = 9600: 197
x = 19200: 199
x = 38400: 198
Note on value in Reg 19:
There is _NO_ common convention for 38400 baud.
The value 198 is choosen arbitrarily. Users
_MUST_ negotiate this value before establishing
a connection.
AT&Sx Set window-size (x = 1..8) (not yet implemented)
AT&V Show all settings.
AT&W0 Write registers and EAZ/MSN to profile. See also
iprofd (5.c in this README).
AT&X0 BTX-mode off (default)
AT&X1 BTX-mode on. (S13.1=1, S14=0, S16=7, S18=7, S19=0)
AT&X0 BTX-mode and T.70-mode off (default)
AT&X1 BTX-mode on. (S13.1=1, S13.5=0 S14=0, S16=7, S18=7, S19=0)
AT&X2 T.70-mode on. (S13.1=1, S13.5=1, S14=0, S16=7, S18=7, S19=0)
For voice-mode commands refer to README.audio
......@@ -184,12 +207,23 @@ README for the ISDN-subsystem
1 = Extended response messages
Bit 4: 0 = CALLER NUMBER before every RING.
1 = CALLER NUMBER after first RING.
Bit 5: 0 = T.70 extended protocol off
1 = T.70 extended protocol on
Bit 6: 0 = Special RUNG Message off
1 = Special RUNG Message on
"RUNG" is delivered on a ttyI, if
an incoming call happened (RING) and
the remote party hung up before any
local ATA was given.
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)
7 = V.110, 9600 baud
8 = V.110, 19200 baud
9 = V.110, 38400 baud
15 0 Layer-3 protocol: (at the moment always 0)
0 = transparent
16 250 Send-Packet-size/16
......@@ -406,6 +440,9 @@ README for the ISDN-subsystem
are stripped off.
ip IP with type-field. Same as IP but the type-field of the MAC-header
is preserved.
x25iface x25 interface encapsulation (first byte semantics as defined in
../networking/x25-iface.txt). Use this for running the linux
x25 network protocol stack (AF_X25 sockets) on top of isdn.
cisco-h A special-mode for communicating with a Cisco, which is configured
to do "hdlc"
ethernet No stripping. Packets are sent with full MAC-header.
......@@ -415,6 +452,11 @@ README for the ISDN-subsystem
uihdlc HDLC with UI-frame-header (for use with DOS ISPA, option -h1)
NOTE: x25iface encapsulation is currently experimental. Please
read README.x25 for further details
Watching packets, using standard-tcpdump will fail for all encapsulations
except ethernet because tcpdump does not know how to handle packets
without MAC-header. A patch for tcpdump is included in the utility-package
......@@ -423,7 +465,8 @@ README for the ISDN-subsystem
"isdnctrl l2_prot <InterfaceName> <L2-ProtocolName>"
Selects a layer-2-protocol.
(With the ICN-driver and the HiSax-driver, "x75i" and "hdlc" is available.
With other drivers, "x75ui", "x75bui" may be possible too.)
With other drivers, "x75ui", "x75bui", "x25dte", "x25dce" may be
possible too. See README.x25 for x25 related l2 protocols.)
isdnctrl l3_prot <InterfaceName> <L3-ProtocolName>
The same for layer-3. (At the moment only "trans" is allowed)
......
This diff is collapsed.
$Id: README.act2000,v 1.1 1997/09/24 23:50:16 fritz Exp $
This document describes the ACT2000 driver for the
IBM Active 2000 ISDN card.
There are 3 Types of this card available. A ISA-, MCA-, and PCMCIA-Bus
Version. Currently, only the ISA-Bus version of the card is supported.
However MCA and PCMCIA will follow soon.
The ISA-Bus Version uses 8 IO-ports. The base port adress has to be set
manually using the DIP switches.
Setting up the DIP switches for the IBM Active 2000 ISDN card:
Note: S5 and S6 always set off!
S1 S2 S3 S4 Base-port
on on on on 0x0200 (Factory default)
off on on on 0x0240
on off on on 0x0280
off off on on 0x02c0
on on off on 0x0300
off on off on 0x0340
on off off on 0x0380
on on on off 0xcfe0
off on on off 0xcfa0
on off on off 0xcf60
off off on off 0xcf20
on on off off 0xcee0
off on off off 0xcea0
on off off off 0xce60
off off off off Card disabled
IRQ is configured by software. Possible values are:
3, 5, 7, 10, 11, 12, 15 and none (polled mode)
The ACT2000 driver either may be build into kernel or as a module.
Initialization depends on how the driver is built:
Driver built into the kernel:
The ACT2000 driver can be configured using the commandline-feature while
loading the kernel with LILO or LOADLIN. It accepts the following syntax:
act2000=b,p,i[,idstring]
where
b = Bus-Type (1=ISA, 2=MCA, 3=PCMCIA)
p = portbase (-1 means autoprobe)
i = Interrupt (-1 means use next free IRQ, 0 means polled mode)
The idstring is an arbitrary string used for referencing the card
by the actctrl tool later.
Defaults used, when no parameters given at all:
1,-1,-1,""
which means: Autoprobe for an ISA card, use next free IRQ, let the
ISDN linklevel fill the IdString (usually "line0" for the first card).
If you like to use more than one card, you can use the program
"actctrl" from the utility-package to configure additional cards.
Using the "actctrl"-utility, portbase and irq can also be changed
during runtime. The D-channel protocol is configured by the "dproto"
option of the "actctrl"-utility after loading the firmware into the
card's memory using the "actctrl"-utility.
Driver built as module:
The module act2000.o can be configured during modprobe (insmod) by
appending its parameters to the modprobe resp. insmod commandline.
The following syntax is accepted:
act_bus=b act_port=p act_irq=i act_id=idstring
where b, p, i and idstring have the same meanings like parameters
described for the builtin version above.
Using the "actctrl"-utility, the same features apply to the modularized
version like to the kernel-builtin one. (i.e. loading of firmware and
configuring the D-channel protocol)
Loading the firmware into the card:
The firmware is supplied together with the isdn4k-utils package. It
can be found in the subdirectory act2000/firmware/
Assumed you have installed the utility-package correctly, the firmware
will be downloaded into the card using the following command:
actctrl -d idstring load /etc/isdn/bip11.btl
where idstring is the Name of the card, given during insmod-time or
(for kernel-builtin driver) on the kernel commandline. If only one
ISDN card is used, the -d isdstrin may be omitted.
For further documentation (adding more IBM Active 2000 cards), refer to
the manpage actctrl.8 which is included in the isdn4k-utils package.
This diff is collapsed.
X25 support within isdn4linux
This is experimental code and should be used with linux version 2.1.72.
or later. Use it completely on your own risk.
As new versions appear, the stuff described here might suddenly change
or become invalid without notice.
Keep in mind:
You are using an experimental kernel (2.1.x series) with an experimental
x25 protocol implementation and experimental x25-on-top-of-isdn extensions.
Thus, be prepared to face problems related therefrom.
- If you connect to an x25 neighbour not operated by yourself, ASK the
other side first. Be prepared that bugs in the protocol implementation
might result in problems (even crashing the peer, however such ugly events
should only happen if your peer's protocol implementation has serious bugs).
- This implementation has never wiped out my whole hard disk yet. But as
this is experimental code, don't blame me if that happened to you. Take
appropriate actions (such as backing up important data) before
trying this code.
- Monitor your isdn connections while using this software. This should
prevent you from undesired phone bills in case of driver problems.
How to configure the kernel
The ITU-T (former CCITT) X.25 network protocol layer has been implemented
in the Linux source tree since version 2.1.16. The isdn subsystem might be
useful to run X.25 on top of ISDN. If you want to try it, select
"CCITT X.25 Packet Layer"
from the networking options as well as
"ISDN Support" and "X.25 PLP on Top of ISDN"
from the ISDN subsystem options when you configure your kernel for
compilation. You currently also need to enable
"Prompt for development and/or incomplete code/drivers" from the
"Code maturity level options" menu. For the x25trace utility to work
you also need to enable "Packet socket" (I recommend to choose "y",
not "m" for testing) from the networking options.
For testing you should also select the isdnloop driver from the
isdn subsystem's configuration menu.
What's it for? How to use it?
X25 on top of isdn might be useful with two different scenarios:
- You might want to access a public X.25 data network from your Linux box.
You can use i4l if you were physically connected to the X.25 switch
by an ISDN line (leased line as well as dial up connection should work,
but connecting to x.25 network switches is currently untested. Testing
needs to be done by somebody with access to such a switch.)
- Or you might want to operate certain ISDN teleservices on
your linux box. A lot of those teleservices run on top of the ISO-8208
network layer protocol. ISO-8208 is essentially the same as ITU-T X.25.
Popular candidates of such teleservices are EUROFILE transfer or any
teleservice applying ITU-T recommendation T.90 (i.e., AFAIK, G4 Fax).
To use the X.25 protocol on top of isdn, just create an isdn network
interface as usual, configure your own and/or peer's ISDN numbers,
and choose x25iface encapsulation by
isdnctrl encap <iface-name> x25iface.
Once encap is set like this, the device can be used by the x25 packet layer.
All the stuff needed for x25 is implemented inside the isdn link
level (mainly isdn_net.c and some new source files). Thus, it should
work with every existing HL driver. I was able to successfully open x25
connections on top of the isdnloop driver and the hisax driver.
"x25iface"-encapsulation bypasses demand dialing. Dialing will be
initiated when the upper (x25 packet) layer requests the lapb datalink to
be established. But hangup timeout is still active. The connection
will not automatically be re-established by the isdn_net module
itself when new data arrives after the hangup timeout. But
the x25 network code will re-establish the datalink connection
(resulting in re-dialing and an x25 protocol reset) when new data is
to be transmitted. (This currently does not work properly with the
isdnloop driver, see "known problems" below)
In order to set up a conforming protocol stack you also need to
specify the proper l2_prot parameter:
To operate in ISO-8208 X.25 DTE-DTE mode, use
isdnctrl l2_prot <iface-name> x75i
To access an X.25 network switch via isdn (your linux box is the DTE), use
isdnctrl l2_prot <iface-name> x25dte
To mimic an X.25 network switch (DCE side of the connection), use
isdnctrl l2_prot <iface-name> x25dce
However, x25dte or x25dce is currently not supported by any real HL
level driver. The main difference between x75 and x25dte/dce is that
x25d[tc]e uses fixed lap_b addresses. With x75i, the side which
initiates the isdn connection uses the DTE's lap_b address while the
called side used the DCE's lap_b address. Thus, l2_prot x75i will
probably work if you access a public x25 network as long as the
corresponding isdn connection is set up by you. However, I've never
tested this.
How to use the test installation?
To test x25 on top of isdn, you need to get
- a patched version of the "isdnctrl" program that supports setting the new
x25 specific parameters.
- the x25-utils-2.1.x package from ftp.pspt.fi/pub/ham/linux/ax25
or any mirror site (i.e. ftp://ftp.gwdg.de/pub/linux/misc/ax25/).
- a kernel patch that enhances isdn4linux to provide x25 network
interface support. (This file is part of that kernel patch).
- an application that uses linux AF_X25 sockets program.
Before compiling the user level utilities make sure that the compiler/
preprocessor will fetch the proper (patched) kernel header files. Either make
/usr/include/linux a symbolic link pointing to your developer kernel's
include/linux directory or set the appropriate compiler flags.
It is recommended that all isdn drivers and the x25 PLP protocol
are compiled as loadable modules. Like this, you can recover
from certain errors by simply unloading and reloading the modules.
When all drivers and interfaces are loaded and configured you need to
ifconfig the network interfaces up and add x25-routes to them. Use
the usual ifconfig tool.
ifconfig <iface-name> up
But a special x25route tool (distributed with the x25-util package)
is needed to set up x25 routes. I.e.
x25route add 01 <iface-name>
will cause all x.25 connections to the destination x.25-address
"01" beeing routed to your created isdn network interface.
There are currently no real x25 applications available. However, for
tests, the x25-utils package contains a modified version of telnet
and telnetd that uses x25 sockets instead of tcp/ip sockets. Use
this for your first tests. Furthermore, there is an x25.echod and a client
named "eftp" (which contains some experimental code to download files
from a remote eft server using the EUROfile transfer protocol).
It available at ftp://ftp.hamburg.pop.de/pub/LOCAL/linux/i4l-eft/eftp4linux-*
The x25-utility package also contains an x25trace tool that can be
used to monitor x25 packets received by the network interfaces.
The /proc/net/x25* files also contain useful information.
The eftp4linux test release also contains an "ix25test" script that can
be used for testing x25 on top of isdn4linux. Edit
this script according to your local needs and then call it as
ix25test start
This will set up a sample configuration using the isdnloop and hisax
driver and create some isdn network interfaces.
It is recommended that all other isdn drivers and the
x25 module is unloaded before calling this script.
Known problems and deficiencies:
The isdnloop HL driver apparently has problems to re-establish a
connection that has been hang up from the outgoing device. You have to
unload the isdnloop driver after the faked isdn-connection is closed
and insmod it again. With the Hisax driver, this problem is not present.
Sometimes the x25 module cannot be unloaded (decrementation of its use
count seems to get lost occasionally).
Using the x25 based telnet and telnetd programm to establish connection
from your own to your own computer repeatedly sometimes totally locked
up my system. However, this kernel patch also modifies
net/x25/af_x25.c to include a workaround. With this workaround
enabled, my system is stable. (If you want to disable the
workaround, just undefine ISDN_X25_FIXES in af_x25.c).
The latter problem could be reproduced by using hisax as well as the
isdnloop driver. It seems that it is not caused by the isdn code.
Somehow, the inode of a socket is freed while a process still refers
the socket's wait queue. This causes problems when the process tries to
remove itsself from the wait queue (refered by the dangling
sock->sleep pointer) before returning from a select() system call.
- Henner
......@@ -19,10 +19,10 @@ The format of this option is:
9600n8. The maximum baudrate is 115200.
You can specify multiple console= options on the kernel command line.
Output will appear on all of them. The first device will be used when
Output will appear on all of them. The last device will be used when
you open /dev/console. So, for example:
console=tty0 console=ttyS1,9600
console=ttyS1,9600 console=tty0
defines that opening /dev/console will get you the current foreground
virtual console, and kernel messages will appear on both the VGA
......@@ -91,4 +91,4 @@ Replace the sample values as needed.
for porting the patches from 2.1.4x to 2.1.6x for taking care of
the integration of these patches into m68k, ppc and alpha.
Miquel van Smoorenburg <miquels@cistron.nl>, 03-Dec-1997
Miquel van Smoorenburg <miquels@cistron.nl>, 21-Mar-1998
......@@ -543,6 +543,7 @@ ENTRY(sys_call_table)
.long SYMBOL_NAME(sys_pread) /* 180 */
.long SYMBOL_NAME(sys_pwrite)
.long SYMBOL_NAME(sys_chown)
.long SYMBOL_NAME(sys_getcwd)
.rept NR_syscalls-182
.long SYMBOL_NAME(sys_ni_syscall)
......
......@@ -76,8 +76,6 @@ asmlinkage int sys_ioperm(unsigned long from, unsigned long num, int turn_on)
return 0;
}
unsigned int *stack;
/*
* sys_iopl has to be used when you want to access the IO ports
* beyond the 0x3ff range: to get the full 65536 ports bitmapped
......
......@@ -1159,8 +1159,10 @@ __initfunc(void apm_bios_init(void))
static struct proc_dir_entry *ent;
#ifdef __SMP__
if (smp_num_cpus > 1) {
printk(KERN_NOTICE "APM disabled: APM is not SMP safe.\n");
return;
}
#endif
if (apm_bios_info.version == 0) {
printk(KERN_INFO "APM BIOS not found.\n");
......
......@@ -163,14 +163,22 @@ static inline int lp_char(char lpchar, int minor)
unsigned long count = 0;
struct lp_stats *stats;
do {
status = r_str (minor);
count++;
for (;;) {
lp_yield(minor);
} while (!LP_READY(minor, status) && count < LP_CHAR(minor));
if (count == LP_CHAR(minor))
status = r_str (minor);
if (++count == LP_CHAR(minor))
return 0;
if (LP_POLLING(minor))
{
if (LP_READY(minor, status))
break;
} else {
if (!LP_READY(minor, status))
return 0;
else
break;
}
}
w_dtr(minor, lpchar);
stats = &LP_STAT(minor);
......
......@@ -385,9 +385,6 @@ static loff_t memory_lseek(struct file * file, loff_t offset, int orig)
default:
return -EINVAL;
}
if (file->f_pos < 0)
return 0;
return file->f_pos;
}
#define mmap_kmem mmap_mem
......
......@@ -3212,7 +3212,7 @@ __initfunc(int rs_init(void))
* The interrupt of the serial console port
* can't be shared.
*/
if (sercons.flags & CON_FIRST) {
if (sercons.flags & CON_CONSDEV) {
for(i = 0; i < NR_PORTS; i++)
if (i != sercons.index &&
rs_table[i].irq == rs_table[sercons.index].irq)
......
......@@ -9,24 +9,44 @@ if [ "$CONFIG_INET" != "n" ]; then
fi
fi
bool 'Support audio via ISDN' CONFIG_ISDN_AUDIO
if [ "$CONFIG_X25" != "n" ]; then
bool 'X.25 PLP on top of ISDN (EXPERIMENTAL)' CONFIG_ISDN_X25
fi
dep_tristate 'ICN 2B and 4B support' CONFIG_ISDN_DRV_ICN $CONFIG_ISDN
dep_tristate 'isdnloop support' CONFIG_ISDN_DRV_LOOP $CONFIG_ISDN
dep_tristate 'PCBIT-D support' CONFIG_ISDN_DRV_PCBIT $CONFIG_ISDN
dep_tristate 'HiSax SiemensChipSet driver support' CONFIG_ISDN_DRV_HISAX $CONFIG_ISDN
if [ "$CONFIG_ISDN_DRV_HISAX" != "n" ]; then
bool 'HiSax Support for EURO/DSS1' CONFIG_HISAX_EURO
if [ "$CONFIG_HISAX_EURO" != "n" ]; then
bool 'Support for german tarifinfo' CONFIG_DE_AOC
bool 'Support for australian Microlink service (not for std. EURO)' CONFIG_HISAX_ML
fi
bool 'HiSax Support for german 1TR6' CONFIG_HISAX_1TR6
bool 'HiSax Support for Teles 16.0/8.0' CONFIG_HISAX_16_0
bool 'HiSax Support for Teles 16.3 or PNP or PCMCIA' CONFIG_HISAX_16_3
bool 'HiSax Support for Teles 16.3c' CONFIG_HISAX_TELES3C
bool 'HiSax Support for AVM A1 (Fritz)' CONFIG_HISAX_AVM_A1
bool 'HiSax Support for Elsa ISA cards' CONFIG_HISAX_ELSA_PCC
bool 'HiSax Support for Elsa PCMCIA card' CONFIG_HISAX_ELSA_PCMCIA
bool 'HiSax Support for Elsa cards' CONFIG_HISAX_ELSA
bool 'HiSax Support for ITK ix1-micro Revision 2' CONFIG_HISAX_IX1MICROR2
bool 'HiSax Support for EURO/DSS1' CONFIG_HISAX_EURO
bool 'HiSax Support for US/NI-1' CONFIG_HISAX_NI1
bool 'HiSax Support for german 1TR6' CONFIG_HISAX_1TR6
bool 'HiSax Support for Eicon.Diehl Diva cards' CONFIG_HISAX_DIEHLDIVA
bool 'HiSax Support for ASUSCOM cards' CONFIG_HISAX_ASUSCOM
bool 'HiSax Support for TELEINT cards' CONFIG_HISAX_TELEINT
bool 'HiSax Support for Sedlbauer speed card/win/star' CONFIG_HISAX_SEDLBAUER
bool 'HiSax Support for USR Sportster internal TA' CONFIG_HISAX_SPORTSTER
bool 'HiSax Support for MIC card' CONFIG_HISAX_MIC
bool 'HiSax Support for NETjet card' CONFIG_HISAX_NETJET
bool 'HiSax Support for Niccy PnP/PCI card' CONFIG_HISAX_NICCY
if [ "$CONFIG_EXPERIMENTAL" != "n" ]; then
bool 'HiSax Support for Am7930' CONFIG_HISAX_AMD7930
fi
fi
if [ "$CONFIG_EXPERIMENTAL" != "n" ]; then
dep_tristate 'Spellcaster support (EXPERIMENTAL)' CONFIG_ISDN_DRV_SC $CONFIG_ISDN
dep_tristate 'IBM Active 2000 support (EXPERIMENTAL)' CONFIG_ISDN_DRV_ACT2000 $CONFIG_ISDN
fi
dep_tristate 'AVM-B1 with CAPI2.0 support' CONFIG_ISDN_DRV_AVMB1 $CONFIG_ISDN
if [ "$CONFIG_ISDN_DRV_AVMB1" != "n" ]; then
bool 'Verbose reason code reporting (kernel size +=7K)' CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON
fi
SUB_DIRS :=
MOD_SUB_DIRS :=
ALL_SUB_DIRS := icn pcbit hisax avmb1
ALL_SUB_DIRS := icn pcbit hisax avmb1 act2000
L_OBJS :=
LX_OBJS :=
......@@ -13,11 +13,15 @@ O_TARGET :=
ifeq ($(CONFIG_ISDN),y)
L_TARGET := isdn.a
L_OBJS += isdn_common.o isdn_net.o isdn_tty.o isdn_cards.o
LX_OBJS += isdn_syms.o
L_OBJS += isdn_net.o isdn_tty.o isdn_cards.o isdn_v110.o
LX_OBJS += isdn_common.o
ifdef CONFIG_ISDN_PPP
L_OBJS += isdn_ppp.o
endif
ifdef CONFIG_ISDN_X25
L_OBJS += isdn_x25iface.o
L_OBJS += isdn_concap.o
endif
ifdef CONFIG_ISDN_AUDIO
L_OBJS += isdn_audio.o
endif
......@@ -25,11 +29,15 @@ else
ifeq ($(CONFIG_ISDN),m)
M_OBJS += isdn.o
O_TARGET += isdn.o
O_OBJS += isdn_common.o isdn_net.o isdn_tty.o
OX_OBJS += isdn_syms.o
O_OBJS += isdn_net.o isdn_tty.o isdn_v110.o
OX_OBJS += isdn_common.o
ifdef CONFIG_ISDN_PPP
O_OBJS += isdn_ppp.o
endif
ifdef CONFIG_ISDN_X25
O_OBJS += isdn_x25iface.o
O_OBJS += isdn_concap.o
endif
ifdef CONFIG_ISDN_AUDIO
O_OBJS += isdn_audio.o
endif
......@@ -96,5 +104,15 @@ else
endif
endif
ifeq ($(CONFIG_ISDN_DRV_ACT2000),y)
L_OBJS += act2000/act2000.o
SUB_DIRS += act2000
MOD_SUB_DIRS += act2000
else
ifeq ($(CONFIG_ISDN_DRV_ACT2000),m)
MOD_SUB_DIRS += act2000
endif
endif
include $(TOPDIR)/Rules.make
L_OBJS :=
M_OBJS :=
O_OBJS := module.o capi.o act2000_isa.o
O_TARGET :=
ifeq ($(CONFIG_ISDN_DRV_ACT2000),y)
O_TARGET += act2000.o
else
ifeq ($(CONFIG_ISDN_DRV_ACT2000),m)
O_TARGET += act2000.o
M_OBJS = act2000.o
endif
endif
include $(TOPDIR)/Rules.make
/* $Id: act2000.h,v 1.5 1997/10/09 22:22:59 fritz Exp $
*
* ISDN lowlevel-module for the IBM ISDN-S0 Active 2000.
*
* Copyright 1997 by Fritz Elfert (fritz@wuemaus.franken.de)
* Thanks to Friedemann Baitinger and IBM Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log: act2000.h,v $
* Revision 1.5 1997/10/09 22:22:59 fritz
* New HL<->LL interface:
* New BSENT callback with nr. of bytes included.
* Sending without ACK.
*
* Revision 1.4 1997/09/25 17:25:37 fritz
* Support for adding cards at runtime.
* Support for new Firmware.
*
* Revision 1.3 1997/09/24 23:11:43 fritz
* Optimized IRQ load and polling-mode.
*
* Revision 1.2 1997/09/24 19:44:12 fritz
* Added MSN mapping support, some cleanup.
*
* Revision 1.1 1997/09/23 18:00:05 fritz
* New driver for IBM Active 2000.
*
*/
#ifndef act2000_h
#define act2000_h
#ifdef __KERNEL__
/* Kernel includes */
#include <linux/module.h>
#include <linux/version.h>
#endif
#define ACT2000_IOCTL_SETPORT 1
#define ACT2000_IOCTL_GETPORT 2
#define ACT2000_IOCTL_SETIRQ 3
#define ACT2000_IOCTL_GETIRQ 4
#define ACT2000_IOCTL_SETBUS 5
#define ACT2000_IOCTL_GETBUS 6
#define ACT2000_IOCTL_SETPROTO 7
#define ACT2000_IOCTL_GETPROTO 8
#define ACT2000_IOCTL_SETMSN 9
#define ACT2000_IOCTL_GETMSN 10
#define ACT2000_IOCTL_LOADBOOT 11
#define ACT2000_IOCTL_ADDCARD 12
#define ACT2000_IOCTL_TEST 98
#define ACT2000_IOCTL_DEBUGVAR 99
#define ACT2000_BUS_ISA 1
#define ACT2000_BUS_MCA 2
#define ACT2000_BUS_PCMCIA 3
/* Struct for adding new cards */
typedef struct act2000_cdef {
int bus;
int port;
int irq;
char id[10];
} act2000_cdef;
/* Struct for downloading firmware */
typedef struct act2000_ddef {
int length; /* Length of code */
char *buffer; /* Ptr. to code */
} act2000_ddef;
typedef struct act2000_fwid {
char isdn[4];
char revlen[2];
char revision[504];
} act2000_fwid;
#if defined(__KERNEL__) || defined(__DEBUGVAR__)
#ifdef __KERNEL__
/* Kernel includes */
#include <linux/sched.h>
#include <linux/string.h>
#include <linux/tqueue.h>
#include <linux/interrupt.h>
#include <linux/skbuff.h>
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/major.h>
#include <asm/segment.h>
#include <asm/io.h>
#include <linux/kernel.h>
#include <linux/signal.h>
#include <linux/malloc.h>
#include <linux/mm.h>
#include <linux/mman.h>
#include <linux/ioport.h>
#include <linux/timer.h>
#include <linux/wait.h>
#include <linux/delay.h>
#include <linux/ctype.h>
#include <linux/isdnif.h>
#endif /* __KERNEL__ */
#define ACT2000_PORTLEN 8
#define ACT2000_FLAGS_RUNNING 1 /* Cards driver activated */
#define ACT2000_FLAGS_PVALID 2 /* Cards port is valid */
#define ACT2000_FLAGS_IVALID 4 /* Cards irq is valid */
#define ACT2000_FLAGS_LOADED 8 /* Firmware loaded */
#define ACT2000_BCH 2 /* # of channels per card */
/* D-Channel states */
#define ACT2000_STATE_NULL 0
#define ACT2000_STATE_ICALL 1
#define ACT2000_STATE_OCALL 2
#define ACT2000_STATE_IWAIT 3
#define ACT2000_STATE_OWAIT 4
#define ACT2000_STATE_IBWAIT 5
#define ACT2000_STATE_OBWAIT 6
#define ACT2000_STATE_BWAIT 7
#define ACT2000_STATE_BHWAIT 8
#define ACT2000_STATE_BHWAIT2 9
#define ACT2000_STATE_DHWAIT 10
#define ACT2000_STATE_DHWAIT2 11
#define ACT2000_STATE_BSETUP 12
#define ACT2000_STATE_ACTIVE 13
#define ACT2000_MAX_QUEUED 8000 /* 2 * maxbuff */
#define ACT2000_LOCK_TX 0
#define ACT2000_LOCK_RX 1
typedef struct act2000_chan {
unsigned short callref; /* Call Reference */
unsigned short fsm_state; /* Current D-Channel state */
unsigned short eazmask; /* EAZ-Mask for this Channel */
short queued; /* User-Data Bytes in TX queue */
unsigned short plci;
unsigned short ncci;
unsigned char l2prot; /* Layer 2 protocol */
unsigned char l3prot; /* Layer 3 protocol */
} act2000_chan;
typedef struct msn_entry {
char eaz;
char msn[16];
struct msn_entry * next;
} msn_entry;
typedef struct irq_data_isa {
__u8 *rcvptr;
__u16 rcvidx;
__u16 rcvlen;
struct sk_buff *rcvskb;
__u8 rcvignore;
__u8 rcvhdr[8];
} irq_data_isa;
typedef union irq_data {
irq_data_isa isa;
} irq_data;
/*
* Per card driver data
*/
typedef struct act2000_card {
unsigned short port; /* Base-port-address */
unsigned short irq; /* Interrupt */
u_char ptype; /* Protocol type (1TR6 or Euro) */
u_char bus; /* Cardtype (ISA, MCA, PCMCIA) */
struct act2000_card *next; /* Pointer to next device struct */
int myid; /* Driver-Nr. assigned by linklevel */
unsigned long flags; /* Statusflags */
unsigned long ilock; /* Semaphores for IRQ-Routines */
struct sk_buff_head rcvq; /* Receive-Message queue */
struct sk_buff_head sndq; /* Send-Message queue */
struct sk_buff_head ackq; /* Data-Ack-Message queue */
u_char *ack_msg; /* Ptr to User Data in User skb */
__u16 need_b3ack; /* Flag: Need ACK for current skb */
struct sk_buff *sbuf; /* skb which is currently sent */
struct timer_list ptimer; /* Poll timer */
struct tq_struct snd_tq; /* Task struct for xmit bh */
struct tq_struct rcv_tq; /* Task struct for rcv bh */
struct tq_struct poll_tq; /* Task struct for polled rcv bh */
msn_entry *msn_list;
unsigned short msgnum; /* Message number fur sending */
act2000_chan bch[ACT2000_BCH]; /* B-Channel status/control */
char status_buf[256]; /* Buffer for status messages */
char *status_buf_read;
char *status_buf_write;
char *status_buf_end;
irq_data idat; /* Data used for IRQ handler */
isdn_if interface; /* Interface to upper layer */
char regname[35]; /* Name used for request_region */
} act2000_card;
extern act2000_card *cards;
extern __inline__ void act2000_schedule_tx(act2000_card *card)
{
queue_task(&card->snd_tq, &tq_immediate);
mark_bh(IMMEDIATE_BH);
}
extern __inline__ void act2000_schedule_rx(act2000_card *card)
{
queue_task(&card->rcv_tq, &tq_immediate);
mark_bh(IMMEDIATE_BH);
}
extern __inline__ void act2000_schedule_poll(act2000_card *card)
{
queue_task(&card->poll_tq, &tq_immediate);
mark_bh(IMMEDIATE_BH);
}
extern char *act2000_find_eaz(act2000_card *, char);
#endif /* defined(__KERNEL__) || defined(__DEBUGVAR__) */
#endif /* act2000_h */
This diff is collapsed.
/* $Id: act2000_isa.h,v 1.1 1997/09/23 18:00:07 fritz Exp $
*
* ISDN lowlevel-module for the IBM ISDN-S0 Active 2000 (ISA-Version).
*
* Copyright 1997 by Fritz Elfert (fritz@wuemaus.franken.de)
* Thanks to Friedemann Baitinger and IBM Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Log: act2000_isa.h,v $
* Revision 1.1 1997/09/23 18:00:07 fritz
* New driver for IBM Active 2000.
*
*/
#ifndef act2000_isa_h
#define act2000_isa_h
#define ISA_POLL_LOOP 40 /* Try to read-write before give up */
typedef enum {
INT_NO_CHANGE = 0, /* Do not change the Mask */
INT_ON = 1, /* Set to Enable */
INT_OFF = 2, /* Set to Disable */
} ISA_INT_T;
/**************************************************************************/
/* Configuration Register COR (RW) */
/**************************************************************************/
/* 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 */
/* Soft Res| IRQM | IRQ Select | N/A | WAIT |Proc err */
/**************************************************************************/
#define ISA_COR 0 /* Offset for ISA config register */
#define ISA_COR_PERR 0x01 /* Processor Error Enabled */
#define ISA_COR_WS 0x02 /* Insert Wait State if 1 */
#define ISA_COR_IRQOFF 0x38 /* No Interrupt */
#define ISA_COR_IRQ07 0x30 /* IRQ 7 Enable */
#define ISA_COR_IRQ05 0x28 /* IRQ 5 Enable */
#define ISA_COR_IRQ03 0x20 /* IRQ 3 Enable */
#define ISA_COR_IRQ10 0x18 /* IRQ 10 Enable */
#define ISA_COR_IRQ11 0x10 /* IRQ 11 Enable */
#define ISA_COR_IRQ12 0x08 /* IRQ 12 Enable */
#define ISA_COR_IRQ15 0x00 /* IRQ 15 Enable */
#define ISA_COR_IRQPULSE 0x40 /* 0 = Level 1 = Pulse Interrupt */
#define ISA_COR_RESET 0x80 /* Soft Reset for Transputer */
/**************************************************************************/
/* Interrupt Source Register ISR (RO) */
/**************************************************************************/
/* 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 */
/* N/A | N/A | N/A |Err sig |Ser ID |IN Intr |Out Intr| Error */
/**************************************************************************/
#define ISA_ISR 1 /* Offset for Interrupt Register */
#define ISA_ISR_ERR 0x01 /* Error Interrupt */
#define ISA_ISR_OUT 0x02 /* Output Interrupt */
#define ISA_ISR_INP 0x04 /* Input Interrupt */
#define ISA_ISR_SERIAL 0x08 /* Read out Serial ID after Reset */
#define ISA_ISR_ERRSIG 0x10 /* Error Signal Input */
#define ISA_ISR_ERR_MASK 0xfe /* Mask Error Interrupt */
#define ISA_ISR_OUT_MASK 0xfd /* Mask Output Interrupt */
#define ISA_ISR_INP_MASK 0xfb /* Mask Input Interrupt */
/* Signature delivered after Reset at ISA_ISR_SERIAL (LSB first) */
#define ISA_SER_ID 0x0201 /* ID for ISA Card */
/**************************************************************************/
/* EEPROM Register EPR (RW) */
/**************************************************************************/
/* 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 */
/* N/A | N/A | N/A |ROM Hold| ROM CS |ROM CLK | ROM IN |ROM Out */
/**************************************************************************/
#define ISA_EPR 2 /* Offset for this Register */
#define ISA_EPR_OUT 0x01 /* Rome Register Out (RO) */
#define ISA_EPR_IN 0x02 /* Rom Register In (WR) */
#define ISA_EPR_CLK 0x04 /* Rom Clock (WR) */
#define ISA_EPR_CS 0x08 /* Rom Cip Select (WR) */
#define ISA_EPR_HOLD 0x10 /* Rom Hold Signal (WR) */
/**************************************************************************/
/* EEPROM enable Register EER (unused) */
/**************************************************************************/
#define ISA_EER 3 /* Offset for this Register */
/**************************************************************************/
/* SLC Data Input SDI (RO) */
/**************************************************************************/
#define ISA_SDI 4 /* Offset for this Register */
/**************************************************************************/
/* SLC Data Output SDO (WO) */
/**************************************************************************/
#define ISA_SDO 5 /* Offset for this Register */
/**************************************************************************/
/* IMS C011 Mode 2 Input Status Register for INMOS CPU SIS (RW) */
/**************************************************************************/
/* 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 */
/* N/A | N/A | N/A | N/A | N/A | N/A |Int Ena |Data Pre */
/**************************************************************************/
#define ISA_SIS 6 /* Offset for this Register */
#define ISA_SIS_READY 0x01 /* If 1 : data is available */
#define ISA_SIS_INT 0x02 /* Enable Interrupt for READ */
/**************************************************************************/
/* IMS C011 Mode 2 Output Status Register from INMOS CPU SOS (RW) */
/**************************************************************************/
/* 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 */
/* N/A | N/A | N/A | N/A | N/A | N/A |Int Ena |Out Rdy */
/**************************************************************************/
#define ISA_SOS 7 /* Offset for this Register */
#define ISA_SOS_READY 0x01 /* If 1 : we can write Data */
#define ISA_SOS_INT 0x02 /* Enable Interrupt for WRITE */
#define ISA_REGION 8 /* Number of Registers */
/* Macros for accessing ports */
#define ISA_PORT_COR (card->port+ISA_COR)
#define ISA_PORT_ISR (card->port+ISA_ISR)
#define ISA_PORT_EPR (card->port+ISA_EPR)
#define ISA_PORT_EER (card->port+ISA_EER)
#define ISA_PORT_SDI (card->port+ISA_SDI)
#define ISA_PORT_SDO (card->port+ISA_SDO)
#define ISA_PORT_SIS (card->port+ISA_SIS)
#define ISA_PORT_SOS (card->port+ISA_SOS)
/* Prototypes */
extern int isa_detect(unsigned short portbase);
extern int isa_config_irq(act2000_card * card, short irq);
extern int isa_config_port(act2000_card * card, unsigned short portbase);
extern int isa_download(act2000_card * card, act2000_ddef * cb);
extern void isa_release(act2000_card * card);
extern void isa_receive(act2000_card *card);
extern void isa_send(act2000_card *card);
#endif /* act2000_isa_h */
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*
* $Id: b1pci.c,v 1.2 1997/05/18 09:24:13 calle Exp $
* $Id: b1pci.c,v 1.5 1998/01/31 11:14:43 calle Exp $
*
* Module for AVM B1 PCI-card.
*
* (c) Copyright 1997 by Carsten Paeth (calle@calle.in-berlin.de)
*
* $Log: b1pci.c,v $
* Revision 1.5 1998/01/31 11:14:43 calle
* merged changes to 2.0 tree, prepare 2.1.82 to work.
*
* Revision 1.4 1997/12/10 20:00:50 calle
* get changes from 2.0 version
*
* Revision 1.3 1997/10/01 09:21:14 fritz
* Removed old compatibility stuff for 2.0.X kernels.
* From now on, this code is for 2.1.X ONLY!
* Old stuff is still in the separate branch.
*
* Revision 1.2 1997/05/18 09:24:13 calle
* added verbose disconnect reason reporting to avmb1.
* some fixes in capi20 interface.
......@@ -19,7 +30,6 @@
#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/bios32.h>
#include <linux/pci.h>
#include <linux/skbuff.h>
#include "compat.h"
......@@ -34,13 +44,11 @@
#define PCI_DEVICE_ID_AVM_B1 0x700
#endif
static char *revision = "$Revision: 1.2 $";
static char *revision = "$Revision: 1.5 $";
/* ------------------------------------------------------------- */
#ifdef HAS_NEW_SYMTAB
MODULE_AUTHOR("Carsten Paeth <calle@calle.in-berlin.de>");
#endif
/* ------------------------------------------------------------- */
......@@ -61,7 +69,7 @@ int b1pci_init(void)
char *p;
char rev[10];
int rc;
int pci_index;
struct pci_dev *dev = NULL;
if ((p = strchr(revision, ':'))) {
strcpy(rev, p + 1);
......@@ -72,39 +80,26 @@ int b1pci_init(void)
#ifdef CONFIG_PCI
if (!pcibios_present()) {
printk(KERN_ERR "b1pci: no PCI-BIOS present\n");
if (!pci_present()) {
printk(KERN_ERR "b1pci: no PCI bus present\n");
return -EIO;
}
printk(KERN_INFO "b1pci: revision %s\n", rev);
for (pci_index = 0; pci_index < 8; pci_index++) {
unsigned char pci_bus, pci_device_fn;
unsigned int ioaddr;
unsigned char irq;
if (pcibios_find_device (PCI_VENDOR_ID_AVM,
PCI_DEVICE_ID_AVM_B1, pci_index,
&pci_bus, &pci_device_fn) != 0) {
continue;
}
pcibios_read_config_byte(pci_bus, pci_device_fn,
PCI_INTERRUPT_LINE, &irq);
pcibios_read_config_dword(pci_bus, pci_device_fn,
PCI_BASE_ADDRESS_1, &ioaddr);
/* Strip the I/O address out of the returned value */
ioaddr &= PCI_BASE_ADDRESS_IO_MASK;
while (dev = pci_find_device(PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_B1, dev)) {
unsigned int ioaddr = dev->base_address[1] & PCI_BASE_ADDRESS_IO_MASK;
unsigned int irq = dev->irq;
printk(KERN_INFO
"b1pci: PCI BIOS reports AVM-B1 at i/o %#x, irq %d\n",
ioaddr, irq);
if ((rc = avmb1_probecard(ioaddr, irq)) != 0) {
if ((rc = avmb1_probecard(ioaddr, irq, AVM_CARDTYPE_B1)) != 0) {
printk(KERN_ERR
"b1pci: no AVM-B1 at i/o %#x, irq %d detected\n",
ioaddr, irq);
return rc;
}
if ((rc = avmb1_addcard(ioaddr, irq)) != 0)
if ((rc = avmb1_addcard(ioaddr, irq, AVM_CARDTYPE_B1)) < 0)
return rc;
}
return 0;
......
This diff is collapsed.
This diff is collapsed.
/*
* $Id: capiutil.c,v 1.3 1997/05/18 09:24:18 calle Exp $
* $Id: capiutil.c,v 1.6 1997/11/04 06:12:12 calle Exp $
*
* CAPI 2.0 convert capi message to capi message struct
*
......@@ -7,6 +7,20 @@
* Rewritten for Linux 1996 by Carsten Paeth (calle@calle.in-berlin.de)
*
* $Log: capiutil.c,v $
* Revision 1.6 1997/11/04 06:12:12 calle
* capi.c: new read/write in file_ops since 2.1.60
* capidrv.c: prepared isdnlog interface for d2-trace in newer firmware.
* capiutil.c: needs config.h (CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON)
* compat.h: added #define LinuxVersionCode
*
* Revision 1.5 1997/10/01 09:21:19 fritz
* Removed old compatibility stuff for 2.0.X kernels.
* From now on, this code is for 2.1.X ONLY!
* Old stuff is still in the separate branch.
*
* Revision 1.4 1997/08/10 07:43:55 calle
* forgot to export symbol capi_info2str for 2.1.x
*
* Revision 1.3 1997/05/18 09:24:18 calle
* added verbose disconnect reason reporting to avmb1.
* some fixes in capi20 interface.
......@@ -26,13 +40,13 @@
*
*/
#include <linux/module.h>
#include <linux/config.h>
#include <linux/string.h>
#include <linux/ctype.h>
#include <linux/stddef.h>
#include <linux/kernel.h>
#include <linux/mm.h>
#include <asm/segment.h>
#include <linux/config.h>
#include "compat.h"
#include "capiutil.h"
......@@ -936,35 +950,18 @@ char *capi_cmsg2str(_cmsg * cmsg)
}
#ifdef HAS_NEW_SYMTAB
EXPORT_SYMBOL(capi_cmsg2message);
EXPORT_SYMBOL(capi_message2cmsg);
EXPORT_SYMBOL(capi_cmsg_header);
EXPORT_SYMBOL(capi_cmd2str);
EXPORT_SYMBOL(capi_cmsg2str);
EXPORT_SYMBOL(capi_message2str);
#else
static struct symbol_table capifunc_syms =
{
#include <linux/symtab_begin.h>
X(capi_cmsg2message),
X(capi_message2cmsg),
X(capi_cmsg_header),
X(capi_cmd2str),
X(capi_cmsg2str),
X(capi_message2str),
X(capi_info2str),
#include <linux/symtab_end.h>
};
#endif
EXPORT_SYMBOL(capi_info2str);
#ifdef MODULE
int init_module(void)
{
#ifndef HAS_NEW_SYMTAB
register_symtab(&capifunc_syms);
#endif
return 0;
}
......
/*
* $Id: compat.h,v 1.1 1997/03/04 21:50:36 calle Exp $
* $Id: compat.h,v 1.3 1997/11/04 06:12:15 calle Exp $
*
* Headerfile for Compartibility between different kernel versions
*
* (c) Copyright 1996 by Carsten Paeth (calle@calle.in-berlin.de)
*
* $Log: compat.h,v $
* Revision 1.3 1997/11/04 06:12:15 calle
* capi.c: new read/write in file_ops since 2.1.60
* capidrv.c: prepared isdnlog interface for d2-trace in newer firmware.
* capiutil.c: needs config.h (CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON)
* compat.h: added #define LinuxVersionCode
*
* Revision 1.2 1997/10/01 09:21:22 fritz
* Removed old compatibility stuff for 2.0.X kernels.
* From now on, this code is for 2.1.X ONLY!
* Old stuff is still in the separate branch.
*
* Revision 1.1 1997/03/04 21:50:36 calle
* Frirst version in isdn4linux
*
......@@ -23,8 +34,8 @@
#include <linux/version.h>
#include <linux/isdnif.h>
#if LINUX_VERSION_CODE >= 0x020112 /* 2.1.18 */
#define HAS_NEW_SYMTAB
#ifndef LinuxVersionCode
#define LinuxVersionCode(v, p, s) (((v)<<16)+((p)<<8)+(s))
#endif
#endif /* __COMPAT_H__ */
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/* $Id: arcofi.h,v 1.1 1997/10/29 18:51:20 keil Exp $
* arcofi.h Ansteuerung ARCOFI 2165
*
* Author Karsten Keil (keil@temic-ech.spacenet.de)
*
*
*
* $Log: arcofi.h,v $
* Revision 1.1 1997/10/29 18:51:20 keil
* New files
*
*/
#define ARCOFI_USE 1
extern int send_arcofi(struct IsdnCardState *cs, const u_char *msg);
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.
/* $Id: isdn_concap.h,v 1.2 1998/01/31 22:49:21 keil Exp $
*/
extern struct concap_device_ops isdn_concap_reliable_dl_dops;
extern struct concap_device_ops isdn_concap_demand_dial_dops;
extern struct concap_proto * isdn_concap_new( int );
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.
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