aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-04-18 21:02:35 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-04-18 21:02:35 -0400
commit334d094504c2fe1c44211ecb49146ae6bca8c321 (patch)
treed3c0f68e4b9f8e3d2ccc39e7dfe5de0534a5fad9 /Documentation
parentd1a4be630fb068f251d64b62919f143c49ca8057 (diff)
parentd1643d24c61b725bef399cc1cf2944b4c9c23177 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.26
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.26: (1090 commits) [NET]: Fix and allocate less memory for ->priv'less netdevices [IPV6]: Fix dangling references on error in fib6_add(). [NETLABEL]: Fix NULL deref in netlbl_unlabel_staticlist_gen() if ifindex not found [PKT_SCHED]: Fix datalen check in tcf_simp_init(). [INET]: Uninline the __inet_inherit_port call. [INET]: Drop the inet_inherit_port() call. SCTP: Initialize partial_bytes_acked to 0, when all of the data is acked. [netdrvr] forcedeth: internal simplifications; changelog removal phylib: factor out get_phy_id from within get_phy_device PHY: add BCM5464 support to broadcom PHY driver cxgb3: Fix __must_check warning with dev_dbg. tc35815: Statistics cleanup natsemi: fix MMIO for PPC 44x platforms [TIPC]: Cleanup of TIPC reference table code [TIPC]: Optimized initialization of TIPC reference table [TIPC]: Remove inlining of reference table locking routines e1000: convert uint16_t style integers to u16 ixgb: convert uint16_t style integers to u16 sb1000.c: make const arrays static sb1000.c: stop inlining largish static functions ...
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/DocBook/Makefile3
-rw-r--r--Documentation/DocBook/mac80211.tmpl335
-rw-r--r--Documentation/feature-removal-schedule.txt37
-rw-r--r--Documentation/laptops/acer-wmi.txt2
-rw-r--r--Documentation/networking/00-INDEX2
-rw-r--r--Documentation/networking/bcm43xx.txt89
-rw-r--r--Documentation/networking/wan-router.txt621
7 files changed, 338 insertions, 751 deletions
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index e471bc466a7e..b2b6366bba51 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -11,7 +11,8 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
11 procfs-guide.xml writing_usb_driver.xml networking.xml \ 11 procfs-guide.xml writing_usb_driver.xml networking.xml \
12 kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \ 12 kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
13 gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \ 13 gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
14 genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml 14 genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
15 mac80211.xml
15 16
16### 17###
17# The build process is as follows (targets): 18# The build process is as follows (targets):
diff --git a/Documentation/DocBook/mac80211.tmpl b/Documentation/DocBook/mac80211.tmpl
new file mode 100644
index 000000000000..b651e0a4b1c0
--- /dev/null
+++ b/Documentation/DocBook/mac80211.tmpl
@@ -0,0 +1,335 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
4
5<book id="mac80211-developers-guide">
6 <bookinfo>
7 <title>The mac80211 subsystem for kernel developers</title>
8
9 <authorgroup>
10 <author>
11 <firstname>Johannes</firstname>
12 <surname>Berg</surname>
13 <affiliation>
14 <address><email>johannes@sipsolutions.net</email></address>
15 </affiliation>
16 </author>
17 </authorgroup>
18
19 <copyright>
20 <year>2007</year>
21 <year>2008</year>
22 <holder>Johannes Berg</holder>
23 </copyright>
24
25 <legalnotice>
26 <para>
27 This documentation is free software; you can redistribute
28 it and/or modify it under the terms of the GNU General Public
29 License version 2 as published by the Free Software Foundation.
30 </para>
31
32 <para>
33 This documentation is distributed in the hope that it will be
34 useful, but WITHOUT ANY WARRANTY; without even the implied
35 warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
36 See the GNU General Public License for more details.
37 </para>
38
39 <para>
40 You should have received a copy of the GNU General Public
41 License along with this documentation; if not, write to the Free
42 Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
43 MA 02111-1307 USA
44 </para>
45
46 <para>
47 For more details see the file COPYING in the source
48 distribution of Linux.
49 </para>
50 </legalnotice>
51
52 <abstract>
53!Pinclude/net/mac80211.h Introduction
54!Pinclude/net/mac80211.h Warning
55 </abstract>
56 </bookinfo>
57
58 <toc></toc>
59
60<!--
61Generally, this document shall be ordered by increasing complexity.
62It is important to note that readers should be able to read only
63the first few sections to get a working driver and only advanced
64usage should require reading the full document.
65-->
66
67 <part>
68 <title>The basic mac80211 driver interface</title>
69 <partintro>
70 <para>
71 You should read and understand the information contained
72 within this part of the book while implementing a driver.
73 In some chapters, advanced usage is noted, that may be
74 skipped at first.
75 </para>
76 <para>
77 This part of the book only covers station and monitor mode
78 functionality, additional information required to implement
79 the other modes is covered in the second part of the book.
80 </para>
81 </partintro>
82
83 <chapter id="basics">
84 <title>Basic hardware handling</title>
85 <para>TBD</para>
86 <para>
87 This chapter shall contain information on getting a hw
88 struct allocated and registered with mac80211.
89 </para>
90 <para>
91 Since it is required to allocate rates/modes before registering
92 a hw struct, this chapter shall also contain information on setting
93 up the rate/mode structs.
94 </para>
95 <para>
96 Additionally, some discussion about the callbacks and
97 the general programming model should be in here, including
98 the definition of ieee80211_ops which will be referred to
99 a lot.
100 </para>
101 <para>
102 Finally, a discussion of hardware capabilities should be done
103 with references to other parts of the book.
104 </para>
105<!-- intentionally multiple !F lines to get proper order -->
106!Finclude/net/mac80211.h ieee80211_hw
107!Finclude/net/mac80211.h ieee80211_hw_flags
108!Finclude/net/mac80211.h SET_IEEE80211_DEV
109!Finclude/net/mac80211.h SET_IEEE80211_PERM_ADDR
110!Finclude/net/mac80211.h ieee80211_ops
111!Finclude/net/mac80211.h ieee80211_alloc_hw
112!Finclude/net/mac80211.h ieee80211_register_hw
113!Finclude/net/mac80211.h ieee80211_get_tx_led_name
114!Finclude/net/mac80211.h ieee80211_get_rx_led_name
115!Finclude/net/mac80211.h ieee80211_get_assoc_led_name
116!Finclude/net/mac80211.h ieee80211_get_radio_led_name
117!Finclude/net/mac80211.h ieee80211_unregister_hw
118!Finclude/net/mac80211.h ieee80211_free_hw
119 </chapter>
120
121 <chapter id="phy-handling">
122 <title>PHY configuration</title>
123 <para>TBD</para>
124 <para>
125 This chapter should describe PHY handling including
126 start/stop callbacks and the various structures used.
127 </para>
128!Finclude/net/mac80211.h ieee80211_conf
129!Finclude/net/mac80211.h ieee80211_conf_flags
130 </chapter>
131
132 <chapter id="iface-handling">
133 <title>Virtual interfaces</title>
134 <para>TBD</para>
135 <para>
136 This chapter should describe virtual interface basics
137 that are relevant to the driver (VLANs, MGMT etc are not.)
138 It should explain the use of the add_iface/remove_iface
139 callbacks as well as the interface configuration callbacks.
140 </para>
141 <para>Things related to AP mode should be discussed there.</para>
142 <para>
143 Things related to supporting multiple interfaces should be
144 in the appropriate chapter, a BIG FAT note should be here about
145 this though and the recommendation to allow only a single
146 interface in STA mode at first!
147 </para>
148!Finclude/net/mac80211.h ieee80211_if_types
149!Finclude/net/mac80211.h ieee80211_if_init_conf
150!Finclude/net/mac80211.h ieee80211_if_conf
151 </chapter>
152
153 <chapter id="rx-tx">
154 <title>Receive and transmit processing</title>
155 <sect1>
156 <title>what should be here</title>
157 <para>TBD</para>
158 <para>
159 This should describe the receive and transmit
160 paths in mac80211/the drivers as well as
161 transmit status handling.
162 </para>
163 </sect1>
164 <sect1>
165 <title>Frame format</title>
166!Pinclude/net/mac80211.h Frame format
167 </sect1>
168 <sect1>
169 <title>Alignment issues</title>
170 <para>TBD</para>
171 </sect1>
172 <sect1>
173 <title>Calling into mac80211 from interrupts</title>
174!Pinclude/net/mac80211.h Calling mac80211 from interrupts
175 </sect1>
176 <sect1>
177 <title>functions/definitions</title>
178!Finclude/net/mac80211.h ieee80211_rx_status
179!Finclude/net/mac80211.h mac80211_rx_flags
180!Finclude/net/mac80211.h ieee80211_tx_control
181!Finclude/net/mac80211.h ieee80211_tx_status_flags
182!Finclude/net/mac80211.h ieee80211_rx
183!Finclude/net/mac80211.h ieee80211_rx_irqsafe
184!Finclude/net/mac80211.h ieee80211_tx_status
185!Finclude/net/mac80211.h ieee80211_tx_status_irqsafe
186!Finclude/net/mac80211.h ieee80211_rts_get
187!Finclude/net/mac80211.h ieee80211_rts_duration
188!Finclude/net/mac80211.h ieee80211_ctstoself_get
189!Finclude/net/mac80211.h ieee80211_ctstoself_duration
190!Finclude/net/mac80211.h ieee80211_generic_frame_duration
191!Finclude/net/mac80211.h ieee80211_get_hdrlen_from_skb
192!Finclude/net/mac80211.h ieee80211_get_hdrlen
193!Finclude/net/mac80211.h ieee80211_wake_queue
194!Finclude/net/mac80211.h ieee80211_stop_queue
195!Finclude/net/mac80211.h ieee80211_start_queues
196!Finclude/net/mac80211.h ieee80211_stop_queues
197!Finclude/net/mac80211.h ieee80211_wake_queues
198 </sect1>
199 </chapter>
200
201 <chapter id="filters">
202 <title>Frame filtering</title>
203!Pinclude/net/mac80211.h Frame filtering
204!Finclude/net/mac80211.h ieee80211_filter_flags
205 </chapter>
206 </part>
207
208 <part id="advanced">
209 <title>Advanced driver interface</title>
210 <partintro>
211 <para>
212 Information contained within this part of the book is
213 of interest only for advanced interaction of mac80211
214 with drivers to exploit more hardware capabilities and
215 improve performance.
216 </para>
217 </partintro>
218
219 <chapter id="hardware-crypto-offload">
220 <title>Hardware crypto acceleration</title>
221!Pinclude/net/mac80211.h Hardware crypto acceleration
222<!-- intentionally multiple !F lines to get proper order -->
223!Finclude/net/mac80211.h set_key_cmd
224!Finclude/net/mac80211.h ieee80211_key_conf
225!Finclude/net/mac80211.h ieee80211_key_alg
226!Finclude/net/mac80211.h ieee80211_key_flags
227 </chapter>
228
229 <chapter id="qos">
230 <title>Multiple queues and QoS support</title>
231 <para>TBD</para>
232!Finclude/net/mac80211.h ieee80211_tx_queue_params
233!Finclude/net/mac80211.h ieee80211_tx_queue_stats_data
234!Finclude/net/mac80211.h ieee80211_tx_queue
235 </chapter>
236
237 <chapter id="AP">
238 <title>Access point mode support</title>
239 <para>TBD</para>
240 <para>Some parts of the if_conf should be discussed here instead</para>
241 <para>
242 Insert notes about VLAN interfaces with hw crypto here or
243 in the hw crypto chapter.
244 </para>
245!Finclude/net/mac80211.h ieee80211_get_buffered_bc
246!Finclude/net/mac80211.h ieee80211_beacon_get
247 </chapter>
248
249 <chapter id="multi-iface">
250 <title>Supporting multiple virtual interfaces</title>
251 <para>TBD</para>
252 <para>
253 Note: WDS with identical MAC address should almost always be OK
254 </para>
255 <para>
256 Insert notes about having multiple virtual interfaces with
257 different MAC addresses here, note which configurations are
258 supported by mac80211, add notes about supporting hw crypto
259 with it.
260 </para>
261 </chapter>
262
263 <chapter id="hardware-scan-offload">
264 <title>Hardware scan offload</title>
265 <para>TBD</para>
266!Finclude/net/mac80211.h ieee80211_scan_completed
267 </chapter>
268 </part>
269
270 <part id="rate-control">
271 <title>Rate control interface</title>
272 <partintro>
273 <para>TBD</para>
274 <para>
275 This part of the book describes the rate control algorithm
276 interface and how it relates to mac80211 and drivers.
277 </para>
278 </partintro>
279 <chapter id="dummy">
280 <title>dummy chapter</title>
281 <para>TBD</para>
282 </chapter>
283 </part>
284
285 <part id="internal">
286 <title>Internals</title>
287 <partintro>
288 <para>TBD</para>
289 <para>
290 This part of the book describes mac80211 internals.
291 </para>
292 </partintro>
293
294 <chapter id="key-handling">
295 <title>Key handling</title>
296 <sect1>
297 <title>Key handling basics</title>
298!Pnet/mac80211/key.c Key handling basics
299 </sect1>
300 <sect1>
301 <title>MORE TBD</title>
302 <para>TBD</para>
303 </sect1>
304 </chapter>
305
306 <chapter id="rx-processing">
307 <title>Receive processing</title>
308 <para>TBD</para>
309 </chapter>
310
311 <chapter id="tx-processing">
312 <title>Transmit processing</title>
313 <para>TBD</para>
314 </chapter>
315
316 <chapter id="sta-info">
317 <title>Station info handling</title>
318 <sect1>
319 <title>Programming information</title>
320!Fnet/mac80211/sta_info.h sta_info
321!Fnet/mac80211/sta_info.h ieee80211_sta_info_flags
322 </sect1>
323 <sect1>
324 <title>STA information lifetime rules</title>
325!Pnet/mac80211/sta_info.c STA information lifetime rules
326 </sect1>
327 </chapter>
328
329 <chapter id="synchronisation">
330 <title>Synchronisation</title>
331 <para>TBD</para>
332 <para>Locking, lots of RCU</para>
333 </chapter>
334 </part>
335</book>
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 4b70622a8a91..af0e9393bf68 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -203,14 +203,6 @@ Who: linuxppc-dev@ozlabs.org
203 203
204--------------------------- 204---------------------------
205 205
206What: sk98lin network driver
207When: Feburary 2008
208Why: In kernel tree version of driver is unmaintained. Sk98lin driver
209 replaced by the skge driver.
210Who: Stephen Hemminger <shemminger@linux-foundation.org>
211
212---------------------------
213
214What: i386/x86_64 bzImage symlinks 206What: i386/x86_64 bzImage symlinks
215When: April 2010 207When: April 2010
216 208
@@ -221,8 +213,6 @@ Who: Thomas Gleixner <tglx@linutronix.de>
221 213
222--------------------------- 214---------------------------
223 215
224---------------------------
225
226What: i2c-i810, i2c-prosavage and i2c-savage4 216What: i2c-i810, i2c-prosavage and i2c-savage4
227When: May 2008 217When: May 2008
228Why: These drivers are superseded by i810fb, intelfb and savagefb. 218Why: These drivers are superseded by i810fb, intelfb and savagefb.
@@ -230,33 +220,6 @@ Who: Jean Delvare <khali@linux-fr.org>
230 220
231--------------------------- 221---------------------------
232 222
233What: bcm43xx wireless network driver
234When: 2.6.26
235Files: drivers/net/wireless/bcm43xx
236Why: This driver's functionality has been replaced by the
237 mac80211-based b43 and b43legacy drivers.
238Who: John W. Linville <linville@tuxdriver.com>
239
240---------------------------
241
242What: ieee80211 softmac wireless networking component
243When: 2.6.26 (or after removal of bcm43xx and port of zd1211rw to mac80211)
244Files: net/ieee80211/softmac
245Why: No in-kernel drivers will depend on it any longer.
246Who: John W. Linville <linville@tuxdriver.com>
247
248---------------------------
249
250What: rc80211-simple rate control algorithm for mac80211
251When: 2.6.26
252Files: net/mac80211/rc80211-simple.c
253Why: This algorithm was provided for reference but always exhibited bad
254 responsiveness and performance and has some serious flaws. It has been
255 replaced by rc80211-pid.
256Who: Stefano Brivio <stefano.brivio@polimi.it>
257
258---------------------------
259
260What (Why): 223What (Why):
261 - include/linux/netfilter_ipv4/ipt_TOS.h ipt_tos.h header files 224 - include/linux/netfilter_ipv4/ipt_TOS.h ipt_tos.h header files
262 (superseded by xt_TOS/xt_tos target & match) 225 (superseded by xt_TOS/xt_tos target & match)
diff --git a/Documentation/laptops/acer-wmi.txt b/Documentation/laptops/acer-wmi.txt
index 23df051dbf69..79b7dbd22141 100644
--- a/Documentation/laptops/acer-wmi.txt
+++ b/Documentation/laptops/acer-wmi.txt
@@ -80,7 +80,7 @@ once you enable the radio, will depend on your hardware and driver combination.
80e.g. With the BCM4318 on the Acer Aspire 5020 series: 80e.g. With the BCM4318 on the Acer Aspire 5020 series:
81 81
82ndiswrapper: Light blinks on when transmitting 82ndiswrapper: Light blinks on when transmitting
83bcm43xx/b43: Solid light, blinks off when transmitting 83b43: Solid light, blinks off when transmitting
84 84
85Wireless radio control is unconditionally enabled - all Acer laptops that support 85Wireless radio control is unconditionally enabled - all Acer laptops that support
86acer-wmi come with built-in wireless. However, should you feel so inclined to 86acer-wmi come with built-in wireless. However, should you feel so inclined to
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX
index c485ee028bd9..1634c6dcecae 100644
--- a/Documentation/networking/00-INDEX
+++ b/Documentation/networking/00-INDEX
@@ -100,8 +100,6 @@ tuntap.txt
100 - TUN/TAP device driver, allowing user space Rx/Tx of packets. 100 - TUN/TAP device driver, allowing user space Rx/Tx of packets.
101vortex.txt 101vortex.txt
102 - info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards. 102 - info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards.
103wan-router.txt
104 - WAN router documentation
105wavelan.txt 103wavelan.txt
106 - AT&T GIS (nee NCR) WaveLAN card: An Ethernet-like radio transceiver 104 - AT&T GIS (nee NCR) WaveLAN card: An Ethernet-like radio transceiver
107x25.txt 105x25.txt
diff --git a/Documentation/networking/bcm43xx.txt b/Documentation/networking/bcm43xx.txt
deleted file mode 100644
index d602c8d6ff3e..000000000000
--- a/Documentation/networking/bcm43xx.txt
+++ /dev/null
@@ -1,89 +0,0 @@
1
2 BCM43xx Linux Driver Project
3 ============================
4
5Introduction
6------------
7
8Many of the wireless devices found in modern notebook computers are
9based on the wireless chips produced by Broadcom. These devices have
10been a problem for Linux users as there is no open-source driver
11available. In addition, Broadcom has not released specifications
12for the device, and driver availability has been limited to the
13binary-only form used in the GPL versions of AP hardware such as the
14Linksys WRT54G, and the Windows and OS X drivers. Before this project
15began, the only way to use these devices were to use the Windows or
16OS X drivers with either the Linuxant or ndiswrapper modules. There
17is a strong penalty if this method is used as loading the binary-only
18module "taints" the kernel, and no kernel developer will help diagnose
19any kernel problems.
20
21Development
22-----------
23
24This driver has been developed using
25a clean-room technique that is described at
26http://bcm-specs.sipsolutions.net/ReverseEngineeringProcess. For legal
27reasons, none of the clean-room crew works on the on the Linux driver,
28and none of the Linux developers sees anything but the specifications,
29which are the ultimate product of the reverse-engineering group.
30
31Software
32--------
33
34Since the release of the 2.6.17 kernel, the bcm43xx driver has been
35distributed with the kernel source, and is prebuilt in most, if not
36all, distributions. There is, however, additional software that is
37required. The firmware used by the chip is the intellectual property
38of Broadcom and they have not given the bcm43xx team redistribution
39rights to this firmware. Since we cannot legally redistribute
40the firmware we cannot include it with the driver. Furthermore, it
41cannot be placed in the downloadable archives of any distributing
42organization; therefore, the user is responsible for obtaining the
43firmware and placing it in the appropriate location so that the driver
44can find it when initializing.
45
46To help with this process, the bcm43xx developers provide a separate
47program named bcm43xx-fwcutter to "cut" the firmware out of a
48Windows or OS X driver and write the extracted files to the proper
49location. This program is usually provided with the distribution;
50however, it may be downloaded from
51
52http://developer.berlios.de/project/showfiles.php?group_id=4547
53
54The firmware is available in two versions. V3 firmware is used with
55the in-kernel bcm43xx driver that uses a software MAC layer called
56SoftMAC, and will have a microcode revision of 0x127 or smaller. The
57V4 firmware is used by an out-of-kernel driver employing a variation of
58the Devicescape MAC layer known as d80211. Once bcm43xx-d80211 reaches
59a satisfactory level of development, it will replace bcm43xx-softmac
60in the kernel as it is much more flexible and powerful.
61
62A source for the latest V3 firmware is
63
64http://downloads.openwrt.org/sources/wl_apsta-3.130.20.0.o
65
66Once this file is downloaded, the command
67'bcm43xx-fwcutter -w <dir> <filename>'
68will extract the microcode and write it to directory
69<dir>. The correct directory will depend on your distribution;
70however, most use '/lib/firmware'. Once this step is completed,
71the bcm3xx driver should load when the system is booted. To see
72any messages relating to the driver, issue the command 'dmesg |
73grep bcm43xx' from a terminal window. If there are any problems,
74please send that output to Bcm43xx-dev@lists.berlios.de.
75
76Although the driver has been in-kernel since 2.6.17, the earliest
77version is quite limited in its capability. Patches that include
78all features of later versions are available for the stable kernel
79versions from 2.6.18. These will be needed if you use a BCM4318,
80or a PCI Express version (BCM4311 and BCM4312). In addition, if you
81have an early BCM4306 and more than 1 GB RAM, your kernel will need
82to be patched. These patches, which are being updated regularly,
83are available at ftp://lwfinger.dynalias.org/patches. Look for
84combined_2.6.YY.patch. Of course you will need kernel source downloaded
85from kernel.org, or the source from your distribution.
86
87If you build your own kernel, please enable CONFIG_BCM43XX_DEBUG
88and CONFIG_IEEE80211_SOFTMAC_DEBUG. The log information provided is
89essential for solving any problems.
diff --git a/Documentation/networking/wan-router.txt b/Documentation/networking/wan-router.txt
deleted file mode 100644
index bc2ab419a74a..000000000000
--- a/Documentation/networking/wan-router.txt
+++ /dev/null
@@ -1,621 +0,0 @@
1------------------------------------------------------------------------------
2Linux WAN Router Utilities Package
3------------------------------------------------------------------------------
4Version 2.2.1
5Mar 28, 2001
6Author: Nenad Corbic <ncorbic@sangoma.com>
7Copyright (c) 1995-2001 Sangoma Technologies Inc.
8------------------------------------------------------------------------------
9
10INTRODUCTION
11
12Wide Area Networks (WANs) are used to interconnect Local Area Networks (LANs)
13and/or stand-alone hosts over vast distances with data transfer rates
14significantly higher than those achievable with commonly used dial-up
15connections.
16
17Usually an external device called `WAN router' sitting on your local network
18or connected to your machine's serial port provides physical connection to
19WAN. Although router's job may be as simple as taking your local network
20traffic, converting it to WAN format and piping it through the WAN link, these
21devices are notoriously expensive, with prices as much as 2 - 5 times higher
22then the price of a typical PC box.
23
24Alternatively, considering robustness and multitasking capabilities of Linux,
25an internal router can be built (most routers use some sort of stripped down
26Unix-like operating system anyway). With a number of relatively inexpensive WAN
27interface cards available on the market, a perfectly usable router can be
28built for less than half a price of an external router. Yet a Linux box
29acting as a router can still be used for other purposes, such as fire-walling,
30running FTP, WWW or DNS server, etc.
31
32This kernel module introduces the notion of a WAN Link Driver (WLD) to Linux
33operating system and provides generic hardware-independent services for such
34drivers. Why can existing Linux network device interface not be used for
35this purpose? Well, it can. However, there are a few key differences between
36a typical network interface (e.g. Ethernet) and a WAN link.
37
38Many WAN protocols, such as X.25 and frame relay, allow for multiple logical
39connections (known as `virtual circuits' in X.25 terminology) over a single
40physical link. Each such virtual circuit may (and almost always does) lead
41to a different geographical location and, therefore, different network. As a
42result, it is the virtual circuit, not the physical link, that represents a
43route and, therefore, a network interface in Linux terms.
44
45To further complicate things, virtual circuits are usually volatile in nature
46(excluding so called `permanent' virtual circuits or PVCs). With almost no
47time required to set up and tear down a virtual circuit, it is highly desirable
48to implement on-demand connections in order to minimize network charges. So
49unlike a typical network driver, the WAN driver must be able to handle multiple
50network interfaces and cope as multiple virtual circuits come into existence
51and go away dynamically.
52
53Last, but not least, WAN configuration is much more complex than that of say
54Ethernet and may well amount to several dozens of parameters. Some of them
55are "link-wide" while others are virtual circuit-specific. The same holds
56true for WAN statistics which is by far more extensive and extremely useful
57when troubleshooting WAN connections. Extending the ifconfig utility to suit
58these needs may be possible, but does not seem quite reasonable. Therefore, a
59WAN configuration utility and corresponding application programmer's interface
60is needed for this purpose.
61
62Most of these problems are taken care of by this module. Its goal is to
63provide a user with more-or-less standard look and feel for all WAN devices and
64assist a WAN device driver writer by providing common services, such as:
65
66 o User-level interface via /proc file system
67 o Centralized configuration
68 o Device management (setup, shutdown, etc.)
69 o Network interface management (dynamic creation/destruction)
70 o Protocol encapsulation/decapsulation
71
72To ba able to use the Linux WAN Router you will also need a WAN Tools package
73available from
74
75 ftp.sangoma.com/pub/linux/current_wanpipe/wanpipe-X.Y.Z.tgz
76
77where vX.Y.Z represent the wanpipe version number.
78
79For technical questions and/or comments please e-mail to ncorbic@sangoma.com.
80For general inquiries please contact Sangoma Technologies Inc. by
81
82 Hotline: 1-800-388-2475 (USA and Canada, toll free)
83 Phone: (905) 474-1990 ext: 106
84 Fax: (905) 474-9223
85 E-mail: dm@sangoma.com (David Mandelstam)
86 WWW: http://www.sangoma.com
87
88
89INSTALLATION
90
91Please read the WanpipeForLinux.pdf manual on how to
92install the WANPIPE tools and drivers properly.
93
94
95After installing wanpipe package: /usr/local/wanrouter/doc.
96On the ftp.sangoma.com : /linux/current_wanpipe/doc
97
98
99COPYRIGHT AND LICENSING INFORMATION
100
101This program is free software; you can redistribute it and/or modify it under
102the terms of the GNU General Public License as published by the Free Software
103Foundation; either version 2, or (at your option) any later version.
104
105This program is distributed in the hope that it will be useful, but WITHOUT
106ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
107FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
108
109You should have received a copy of the GNU General Public License along with
110this program; if not, write to the Free Software Foundation, Inc., 675 Mass
111Ave, Cambridge, MA 02139, USA.
112
113
114
115ACKNOWLEDGEMENTS
116
117This product is based on the WANPIPE(tm) Multiprotocol WAN Router developed
118by Sangoma Technologies Inc. for Linux 2.0.x and 2.2.x. Success of the WANPIPE
119together with the next major release of Linux kernel in summer 1996 commanded
120adequate changes to the WANPIPE code to take full advantage of new Linux
121features.
122
123Instead of continuing developing proprietary interface tied to Sangoma WAN
124cards, we decided to separate all hardware-independent code into a separate
125module and defined two levels of interfaces - one for user-level applications
126and another for kernel-level WAN drivers. WANPIPE is now implemented as a
127WAN driver compliant with the WAN Link Driver interface. Also a general
128purpose WAN configuration utility and a set of shell scripts was developed to
129support WAN router at the user level.
130
131Many useful ideas concerning hardware-independent interface implementation
132were given by Mike McLagan <mike.mclagan@linux.org> and his implementation
133of the Frame Relay router and drivers for Sangoma cards (dlci/sdla).
134
135With the new implementation of the APIs being incorporated into the WANPIPE,
136a special thank goes to Alan Cox in providing insight into BSD sockets.
137
138Special thanks to all the WANPIPE users who performed field-testing, reported
139bugs and made valuable comments and suggestions that help us to improve this
140product.
141
142
143
144NEW IN THIS RELEASE
145
146 o Updated the WANCFG utility
147 Calls the pppconfig to configure the PPPD
148 for async connections.
149
150 o Added the PPPCONFIG utility
151 Used to configure the PPPD daemon for the
152 WANPIPE Async PPP and standard serial port.
153 The wancfg calls the pppconfig to configure
154 the pppd.
155
156 o Fixed the PCI autodetect feature.
157 The SLOT 0 was used as an autodetect option
158 however, some high end PC's slot numbers start
159 from 0.
160
161 o This release has been tested with the new backupd
162 daemon release.
163
164
165PRODUCT COMPONENTS AND RELATED FILES
166
167/etc: (or user defined)
168 wanpipe1.conf default router configuration file
169
170/lib/modules/X.Y.Z/misc:
171 wanrouter.o router kernel loadable module
172 af_wanpipe.o wanpipe api socket module
173
174/lib/modules/X.Y.Z/net:
175 sdladrv.o Sangoma SDLA support module
176 wanpipe.o Sangoma WANPIPE(tm) driver module
177
178/proc/net/wanrouter
179 Config reads current router configuration
180 Status reads current router status
181 {name} reads WAN driver statistics
182
183/usr/sbin:
184 wanrouter wanrouter start-up script
185 wanconfig wanrouter configuration utility
186 sdladump WANPIPE adapter memory dump utility
187 fpipemon Monitor for Frame Relay
188 cpipemon Monitor for Cisco HDLC
189 ppipemon Monitor for PPP
190 xpipemon Monitor for X25
191 wpkbdmon WANPIPE keyboard led monitor/debugger
192
193/usr/local/wanrouter:
194 README this file
195 COPYING GNU General Public License
196 Setup installation script
197 Filelist distribution definition file
198 wanrouter.rc meta-configuration file
199 (used by the Setup and wanrouter script)
200
201/usr/local/wanrouter/doc:
202 wanpipeForLinux.pdf WAN Router User's Manual
203
204/usr/local/wanrouter/patches:
205 wanrouter-v2213.gz patch for Linux kernels 2.2.11 up to 2.2.13.
206 wanrouter-v2214.gz patch for Linux kernel 2.2.14.
207 wanrouter-v2215.gz patch for Linux kernels 2.2.15 to 2.2.17.
208 wanrouter-v2218.gz patch for Linux kernels 2.2.18 and up.
209 wanrouter-v240.gz patch for Linux kernel 2.4.0.
210 wanrouter-v242.gz patch for Linux kernel 2.4.2 and up.
211 wanrouter-v2034.gz patch for Linux kernel 2.0.34
212 wanrouter-v2036.gz patch for Linux kernel 2.0.36 and up.
213
214/usr/local/wanrouter/patches/kdrivers:
215 Sources of the latest WANPIPE device drivers.
216 These are used to UPGRADE the linux kernel to the newest
217 version if the kernel source has already been patched with
218 WANPIPE drivers.
219
220/usr/local/wanrouter/samples:
221 interface sample interface configuration file
222 wanpipe1.cpri CHDLC primary port
223 wanpipe2.csec CHDLC secondary port
224 wanpipe1.fr Frame Relay protocol
225 wanpipe1.ppp PPP protocol )
226 wanpipe1.asy CHDLC ASYNC protocol
227 wanpipe1.x25 X25 protocol
228 wanpipe1.stty Sync TTY driver (Used by Kernel PPPD daemon)
229 wanpipe1.atty Async TTY driver (Used by Kernel PPPD daemon)
230 wanrouter.rc sample meta-configuration file
231
232/usr/local/wanrouter/util:
233 * wan-tools utilities source code
234
235/usr/local/wanrouter/api/x25:
236 * x25 api sample programs.
237/usr/local/wanrouter/api/chdlc:
238 * chdlc api sample programs.
239/usr/local/wanrouter/api/fr:
240 * fr api sample programs.
241/usr/local/wanrouter/config/wancfg:
242 wancfg WANPIPE GUI configuration program.
243 Creates wanpipe#.conf files.
244/usr/local/wanrouter/config/cfgft1:
245 cfgft1 GUI CSU/DSU configuration program.
246
247/usr/include/linux:
248 wanrouter.h router API definitions
249 wanpipe.h WANPIPE API definitions
250 sdladrv.h SDLA support module API definitions
251 sdlasfm.h SDLA firmware module definitions
252 if_wanpipe.h WANPIPE Socket definitions
253 sdlapci.h WANPIPE PCI definitions
254
255
256/usr/src/linux/net/wanrouter:
257 * wanrouter source code
258
259/var/log:
260 wanrouter wanrouter start-up log (created by the Setup script)
261
262/var/lock: (or /var/lock/subsys for RedHat)
263 wanrouter wanrouter lock file (created by the Setup script)
264
265/usr/local/wanrouter/firmware:
266 fr514.sfm Frame relay firmware for Sangoma S508/S514 card
267 cdual514.sfm Dual Port Cisco HDLC firmware for Sangoma S508/S514 card
268 ppp514.sfm PPP Firmware for Sangoma S508 and S514 cards
269 x25_508.sfm X25 Firmware for Sangoma S508 card.
270
271
272REVISION HISTORY
273
2741.0.0 December 31, 1996 Initial version
275
2761.0.1 January 30, 1997 Status and statistics can be read via /proc
277 filesystem entries.
278
2791.0.2 April 30, 1997 Added UDP management via monitors.
280
2811.0.3 June 3, 1997 UDP management for multiple boards using Frame
282 Relay and PPP
283 Enabled continuous transmission of Configure
284 Request Packet for PPP (for 508 only)
285 Connection Timeout for PPP changed from 900 to 0
286 Flow Control Problem fixed for Frame Relay
287
2881.0.4 July 10, 1997 S508/FT1 monitoring capability in fpipemon and
289 ppipemon utilities.
290 Configurable TTL for UDP packets.
291 Multicast and Broadcast IP source addresses are
292 silently discarded.
293
2941.0.5 July 28, 1997 Configurable T391,T392,N391,N392,N393 for Frame
295 Relay in router.conf.
296 Configurable Memory Address through router.conf
297 for Frame Relay, PPP and X.25. (commenting this
298 out enables auto-detection).
299 Fixed freeing up received buffers using kfree()
300 for Frame Relay and X.25.
301 Protect sdla_peek() by calling save_flags(),
302 cli() and restore_flags().
303 Changed number of Trace elements from 32 to 20
304 Added DLCI specific data monitoring in FPIPEMON.
3052.0.0 Nov 07, 1997 Implemented protection of RACE conditions by
306 critical flags for FRAME RELAY and PPP.
307 DLCI List interrupt mode implemented.
308 IPX support in FRAME RELAY and PPP.
309 IPX Server Support (MARS)
310 More driver specific stats included in FPIPEMON
311 and PIPEMON.
312
3132.0.1 Nov 28, 1997 Bug Fixes for version 2.0.0.
314 Protection of "enable_irq()" while
315 "disable_irq()" has been enabled from any other
316 routine (for Frame Relay, PPP and X25).
317 Added additional Stats for Fpipemon and Ppipemon
318 Improved Load Sharing for multiple boards
319
3202.0.2 Dec 09, 1997 Support for PAP and CHAP for ppp has been
321 implemented.
322
3232.0.3 Aug 15, 1998 New release supporting Cisco HDLC, CIR for Frame
324 relay, Dynamic IP assignment for PPP and Inverse
325 Arp support for Frame-relay. Man Pages are
326 included for better support and a new utility
327 for configuring FT1 cards.
328
3292.0.4 Dec 09, 1998 Dual Port support for Cisco HDLC.
330 Support for HDLC (LAPB) API.
331 Supports BiSync Streaming code for S502E
332 and S503 cards.
333 Support for Streaming HDLC API.
334 Provides a BSD socket interface for
335 creating applications using BiSync
336 streaming.
337
3382.0.5 Aug 04, 1999 CHDLC initialization bug fix.
339 PPP interrupt driven driver:
340 Fix to the PPP line hangup problem.
341 New PPP firmware
342 Added comments to the startup SYSTEM ERROR messages
343 Xpipemon debugging application for the X25 protocol
344 New USER_MANUAL.txt
345 Fixed the odd boundary 4byte writes to the board.
346 BiSync Streaming code has been taken out.
347 Available as a patch.
348 Streaming HDLC API has been taken out.
349 Available as a patch.
350
3512.0.6 Aug 17, 1999 Increased debugging in statup scripts
352 Fixed installation bugs from 2.0.5
353 Kernel patch works for both 2.2.10 and 2.2.11 kernels.
354 There is no functional difference between the two packages
355
3562.0.7 Aug 26, 1999 o Merged X25API code into WANPIPE.
357 o Fixed a memory leak for X25API
358 o Updated the X25API code for 2.2.X kernels.
359 o Improved NEM handling.
360
3612.1.0 Oct 25, 1999 o New code for S514 PCI Card
362 o New CHDLC and Frame Relay drivers
363 o PPP and X25 are not supported in this release
364
3652.1.1 Nov 30, 1999 o PPP support for S514 PCI Cards
366
3672.1.3 Apr 06, 2000 o Socket based x25api
368 o Socket based chdlc api
369 o Socket based fr api
370 o Dual Port Receive only CHDLC support.
371 o Asynchronous CHDLC support (Secondary Port)
372 o cfgft1 GUI csu/dsu configurator
373 o wancfg GUI configuration file
374 configurator.
375 o Architectural directory changes.
376
377beta-2.1.4 Jul 2000 o Dynamic interface configuration:
378 Network interfaces reflect the state
379 of protocol layer. If the protocol becomes
380 disconnected, driver will bring down
381 the interface. Once the protocol reconnects
382 the interface will be brought up.
383
384 Note: This option is turned off by default.
385
386 o Dynamic wanrouter setup using 'wanconfig':
387 wanconfig utility can be used to
388 shutdown,restart,start or reconfigure
389 a virtual circuit dynamically.
390
391 Frame Relay: Each DLCI can be:
392 created,stopped,restarted and reconfigured
393 dynamically using wanconfig.
394
395 ex: wanconfig card wanpipe1 dev wp1_fr16 up
396
397 o Wanrouter startup via command line arguments:
398 wanconfig also supports wanrouter startup via command line
399 arguments. Thus, there is no need to create a wanpipe#.conf
400 configuration file.
401
402 o Socket based x25api update/bug fixes.
403 Added support for LCN numbers greater than 255.
404 Option to pass up modem messages.
405 Provided a PCI IRQ check, so a single S514
406 card is guaranteed to have a non-sharing interrupt.
407
408 o Fixes to the wancfg utility.
409 o New FT1 debugging support via *pipemon utilities.
410 o Frame Relay ARP support Enabled.
411
412beta3-2.1.4 Jul 2000 o X25 M_BIT Problem fix.
413 o Added the Multi-Port PPP
414 Updated utilities for the Multi-Port PPP.
415
4162.1.4 Aut 2000
417 o In X25API:
418 Maximum packet an application can send
419 to the driver has been extended to 4096 bytes.
420
421 Fixed the x25 startup bug. Enable
422 communications only after all interfaces
423 come up. HIGH SVC/PVC is used to calculate
424 the number of channels.
425 Enable protocol only after all interfaces
426 are enabled.
427
428 o Added an extra state to the FT1 config, kernel module.
429 o Updated the pipemon debuggers.
430
431 o Blocked the Multi-Port PPP from running on kernels
432 2.2.16 or greater, due to syncppp kernel module
433 change.
434
435beta1-2.1.5 Nov 15 2000
436 o Fixed the MultiPort PPP Support for kernels 2.2.16 and above.
437 2.2.X kernels only
438
439 o Secured the driver UDP debugging calls
440 - All illegal network debugging calls are reported to
441 the log.
442 - Defined a set of allowed commands, all other denied.
443
444 o Cpipemon
445 - Added set FT1 commands to the cpipemon. Thus CSU/DSU
446 configuration can be performed using cpipemon.
447 All systems that cannot run cfgft1 GUI utility should
448 use cpipemon to configure the on board CSU/DSU.
449
450
451 o Keyboard Led Monitor/Debugger
452 - A new utility /usr/sbin/wpkbdmon uses keyboard leds
453 to convey operational statistic information of the
454 Sangoma WANPIPE cards.
455 NUM_LOCK = Line State (On=connected, Off=disconnected)
456 CAPS_LOCK = Tx data (On=transmitting, Off=no tx data)
457 SCROLL_LOCK = Rx data (On=receiving, Off=no rx data
458
459 o Hardware probe on module load and dynamic device allocation
460 - During WANPIPE module load, all Sangoma cards are probed
461 and found information is printed in the /var/log/messages.
462 - If no cards are found, the module load fails.
463 - Appropriate number of devices are dynamically loaded
464 based on the number of Sangoma cards found.
465
466 Note: The kernel configuration option
467 CONFIG_WANPIPE_CARDS has been taken out.
468
469 o Fixed the Frame Relay and Chdlc network interfaces so they are
470 compatible with libpcap libraries. Meaning, tcpdump, snort,
471 ethereal, and all other packet sniffers and debuggers work on
472 all WANPIPE network interfaces.
473 - Set the network interface encoding type to ARPHRD_PPP.
474 This tell the sniffers that data obtained from the
475 network interface is in pure IP format.
476 Fix for 2.2.X kernels only.
477
478 o True interface encoding option for Frame Relay and CHDLC
479 - The above fix sets the network interface encoding
480 type to ARPHRD_PPP, however some customers use
481 the encoding interface type to determine the
482 protocol running. Therefore, the TURE ENCODING
483 option will set the interface type back to the
484 original value.
485
486 NOTE: If this option is used with Frame Relay and CHDLC
487 libpcap library support will be broken.
488 i.e. tcpdump will not work.
489 Fix for 2.2.x Kernels only.
490
491 o Ethernet Bridgind over Frame Relay
492 - The Frame Relay bridging has been developed by
493 Kristian Hoffmann and Mark Wells.
494 - The Linux kernel bridge is used to send ethernet
495 data over the frame relay links.
496 For 2.2.X Kernels only.
497
498 o Added extensive 2.0.X support. Most new features of
499 2.1.5 for protocols Frame Relay, PPP and CHDLC are
500 supported under 2.0.X kernels.
501
502beta1-2.2.0 Dec 30 2000
503 o Updated drivers for 2.4.X kernels.
504 o Updated drivers for SMP support.
505 o X25API is now able to share PCI interrupts.
506 o Took out a general polling routine that was used
507 only by X25API.
508 o Added appropriate locks to the dynamic reconfiguration
509 code.
510 o Fixed a bug in the keyboard debug monitor.
511
512beta2-2.2.0 Jan 8 2001
513 o Patches for 2.4.0 kernel
514 o Patches for 2.2.18 kernel
515 o Minor updates to PPP and CHLDC drivers.
516 Note: No functional difference.
517
518beta3-2.2.9 Jan 10 2001
519 o I missed the 2.2.18 kernel patches in beta2-2.2.0
520 release. They are included in this release.
521
522Stable Release
5232.2.0 Feb 01 2001
524 o Bug fix in wancfg GUI configurator.
525 The edit function didn't work properly.
526
527
528bata1-2.2.1 Feb 09 2001
529 o WANPIPE TTY Driver emulation.
530 Two modes of operation Sync and Async.
531 Sync: Using the PPPD daemon, kernel SyncPPP layer
532 and the Wanpipe sync TTY driver: a PPP protocol
533 connection can be established via Sangoma adapter, over
534 a T1 leased line.
535
536 The 2.4.0 kernel PPP layer supports MULTILINK
537 protocol, that can be used to bundle any number of Sangoma
538 adapters (T1 lines) into one, under a single IP address.
539 Thus, efficiently obtaining multiple T1 throughput.
540
541 NOTE: The remote side must also implement MULTILINK PPP
542 protocol.
543
544 Async:Using the PPPD daemon, kernel AsyncPPP layer
545 and the WANPIPE async TTY driver: a PPP protocol
546 connection can be established via Sangoma adapter and
547 a modem, over a telephone line.
548
549 Thus, the WANPIPE async TTY driver simulates a serial
550 TTY driver that would normally be used to interface the
551 MODEM to the linux kernel.
552
553 o WANPIPE PPP Backup Utility
554 This utility will monitor the state of the PPP T1 line.
555 In case of failure, a dial up connection will be established
556 via pppd daemon, ether via a serial tty driver (serial port),
557 or a WANPIPE async TTY driver (in case serial port is unavailable).
558
559 Furthermore, while in dial up mode, the primary PPP T1 link
560 will be monitored for signs of life.
561
562 If the PPP T1 link comes back to life, the dial up connection
563 will be shutdown and T1 line re-established.
564
565
566 o New Setup installation script.
567 Option to UPGRADE device drivers if the kernel source has
568 already been patched with WANPIPE.
569
570 Option to COMPILE WANPIPE modules against the currently
571 running kernel, thus no need for manual kernel and module
572 re-compilation.
573
574 o Updates and Bug Fixes to wancfg utility.
575
576bata2-2.2.1 Feb 20 2001
577
578 o Bug fixes to the CHDLC device drivers.
579 The driver had compilation problems under kernels
580 2.2.14 or lower.
581
582 o Bug fixes to the Setup installation script.
583 The device drivers compilation options didn't work
584 properly.
585
586 o Update to the wpbackupd daemon.
587 Optimized the cross-over times, between the primary
588 link and the backup dialup.
589
590beta3-2.2.1 Mar 02 2001
591 o Patches for 2.4.2 kernel.
592
593 o Bug fixes to util/ make files.
594 o Bug fixes to the Setup installation script.
595
596 o Took out the backupd support and made it into
597 as separate package.
598
599beta4-2.2.1 Mar 12 2001
600
601 o Fix to the Frame Relay Device driver.
602 IPSAC sends a packet of zero length
603 header to the frame relay driver. The
604 driver tries to push its own 2 byte header
605 into the packet, which causes the driver to
606 crash.
607
608 o Fix the WANPIPE re-configuration code.
609 Bug was found by trying to run the cfgft1 while the
610 interface was already running.
611
612 o Updates to cfgft1.
613 Writes a wanpipe#.cfgft1 configuration file
614 once the CSU/DSU is configured. This file can
615 holds the current CSU/DSU configuration.
616
617
618
619>>>>>> END OF README <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
620
621