1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407
|
INTRODUCTION:
The software for the UNICORN ADSL PCI card consists of two loadable drivers,
the unicorn_atm.o and unicorn_pci.o. The unicorn driver is a standard Linux
ATM driver, that performs segmentation and reassembly (SAR) and flow control.
The unicorn_pci driver contains the ADSL modem software and hardware related
functions. It has been tested with the Linux 2.4.x kernels. Note that to use
PPPoE, PPPoA or RFC2684 protocols, the kernel may need to be patched.
COMPILATION:
To compile the drivers, unzip and untar the file. In the unicorn directory you
will find the two subdirectories unicorn_atm and unicorn_bus.
You may compile the drivers based on the include files in the kernel source
or standard kernel include files. Set the variable KERNELDIR in the Makefile's
to point to your kernel sources if the first option in chosen.
If you choose the latter, you may need to copy the contents of the kernel
source "include/net" directory into "/usr/include/net/".
Go into these subdirectories and do a "make" and a "make install".
If the compile option "USE_HW_TIMER" is set, the performance is increased,
but the CPU load increased.
Use the same compiler as you use when compiling the linux kernel. The driver has
been tested using gcc-2.96, gcc-2.95.2, gcc-2.91.66 and gcc 3.0.3.
INSTALLATION:
To start the ADSL software, do a "modprobe unicorn_pci". Check in the syslog that
the drivers are started OK. The ADSL line should come up automatically. The status
can also be checked using the "proc" interface (/proc/net/atm/UNICORN\:0".
SHOWTIME in the log or in the status means that ADSL connction is up and ATM cells
may be transmitted and received.
Depending on your network setup, you will need additional software as with any other
ADSL ATM card. For bridged ethernet (RFC2684), the br2684.o module and brctl is needed.
For PPPoE, any pppoe client over the bridged interface (nas0) should work
(Roaring Penguin pppoe client has been tested).
The scripts directory contains some example startup scripts.
Bridged (RFC2684) and PPP over Ethernet:
Depending on your kernel, you may need to patch the kernel and enable the option
"RFC1483/2684 Bridged protcols" under "Networking options". Also ATM support needs
to be enabled.
Also the user space daemon "brctl" is needed. Instructions on how to apply the
patch and the brctl and patch sources can be found at http://www.zoftware.org/adsl-pppoe.
PPP over ATM:
For PPP over ATM, the module pppoatm.o is needed, together with the pppd plugin
pppoatm.so and a version of pppd that supports plugins.
Currently version ppp-2.4.0b2 supports PPPoATM plugins. A patched version ready for
PPPoATM can be found at http://www.sourceforge.net/.
PPPoATM specific pppd options:
llc-encaps: use LLC encapsulation for PPPoATM
vc-encaps: use VC multiplexing for PPPoATM (default)
MODULE PARAMETERS:
Some ADSL paramters can be controlled by setting the moule paramters.
unicorn_pci.o:
--------------
ActTimeout: Timeout in ms on the duration of the activation state.
ActivationMode: This parameter sets in what mode the ADSL modem should be activated.
ANSI mode is 1, G.lite is 2, G.dmt is 4 and MULTI mode is 3.
If you know what mode your DSLAM operates in, use this mode. If not select either
ANSI or MULTI mode.
DownstreamRate: The maximum downstream rate in Kbit/sec.
AutoActivation: Set this to 1 if you your ADSL modem to start auotmatically (default 1).
DebugLevel: To debug the driver, set this to a value different from 0 and enable DEBUG
when compiling.
MswDebugLevel: 0 - High level, all traces enabled, 1 - Medium level, info and warnings
enabled, 2 - Low level, only warnings and errors are traced.
LCD_Trig: Persistency time (in msec) of Loss of Cell Deliniation defects before
disorderly shutdown (15000 default).
LCD_LOF_Trig: Persistency time (in msec) of Loss of Signal and Loss of Frame defects before
disorderly shutdown (5000 default).
TrainingDelay: Delay in msec used in training sequence. Default 80.
useRFCFixedRate: If 1, rate adaptive disabled. To use with ECI DSLAM in ITU mode.
_no_TS652: If set to 1, enable gain table for use without TS652.
unicorn_atm.o:
--------------
mac_address: If this is specified, the bridged ethernet (RFC2684) will use this
mac (ethernet) address instead of a randomly generated address. Specified as a
12 character ASCII string of hexadecimal numbers.
atmready_timeout: The time in seconds to wait for ADSL link up when opening the ATM
socket (default 20 seconds).
DebugLevel: Set this if you need to debug the driver.
DIV:
mswtest contains a simple program to start/stop and get statistics from the ADSL card.
Depending on your distribution, you may need to install atm support (atm-2.4.0) to
compile this program.
RELEASE NOTES:
Version 0.0.5:
- first working version.
Version 0.0.6:
- Corrected an error when performing shutdown of the machine.
- The modem sw compiled with CPU option 386.
- Cleanups in the Makefile's.
- Removed un-compiled code in the ATM driver.
Version 0.0.7:
- Internal version.
Version 0.0.8:
- Simplified the Makefile's.
Version 0.0.9:
- Locking the module (MOD_INC_USE_COUNT) in unicorn_atm_open to be sure that module is
not removed while in use.
- New version of modem software.
Version 0.1.0:
- New modem software (1.0.7D) with fixes for ECI DSLAMs.
- The ActivationMode parameter values has changed. Please update your scripts !
Version 0.1.1:
- Added the _assert_fail function in linrapi.c to support certain versions of
libm.a.
- Fixed a bug where timer structures were allocated but never released that may
cause failures after several hours of operation.
- Cleaned up and added debug code to memory allocation functions is linrapi.c.
Version 0.1.2:
- Initialize timer structure in xsm_create to avoid error when unloading driver.
- Conditionally call complete_and_exit depending on kernel version.
Version 0.1.3:
- New modem software (1.0.7E) with fixes for ECI DSLAMs.
- Test program (cmdtest) added.
Version 0.2.0:
- New modem software (1.0.7e-B-LINUX) that fixes the interoperability problems with ECI DSLAMs
and works in G.dmt mode.
- A kernel panic when halting the machine has been fixed.
- The OBC semaphore in the PCI_xxx functions is only released after PCI bus read.
- Added C++ support for gcc 3.0.
Version 0.2.1:
- Using xtime instead of get_fast_time(), since this function is not longer
exported in kernel 2.4.18.
Version 0.2.2:
- Using del_timer instead of del_timer_sync. This version works with SMP enabled.
- More tracing of MSW parameters.
- Removed some compiler warnings in unicorn_atm.
- New modem software (PCI_1.0.7f).
Version 0.2.3:
- Return an error in unicorn_atm_send if ADSL link is down. This avoids a kernel freeze with pppd.
- Add a prefix to KERN_INFO log messages.
- The "pilot tracking error" is a PRINT_WARNING instead of PRINT_ERROR.
Version 0.2.4:
- Set the PCI DMA access grant timeout to maximum to avoid a problem on ASUS motherboards.
- Use the writel/readl macros to access PCI registers.
- Modem software with UseVCXO to 0 as default in order to connect in ANSI mode.
- Fix a problem detecting linux version.
- Renamed the "cmdtest" folder to "unicorntest".
Version 0.2.6:
- The upstream cell rate calculation has been fixed. The actual link rate should now be quite close
to the theoretical max. This is very important for low speed links.
- New modem software (1.0.7i2).
Version 0.2.7:
- Ooops, forgot some debug code in unicorn_atmdrv.c.
Version 0.2.8:
- Undefined symbol fwrite when using a certain version of libm.a.
Version 0.2.9:
- Cleanups due to porting to PowerPC.
- In timer_callback, restart timer before put_msg to avoid race condition (and kernel panic).
- Make the driver ready for ST70136 AFE.
- OBC timer increased to 250ms.
Version 0.3.0:
- Removed a syslog when calling xtm_stopmsgtimer with invalid timer.
- Do not modify nice value, since the task_struct is dependent on the kernel version.
Version 0.3.1:
- Changed the values of the DMA max burst size.
- Modifications to Makefile.
Version 0.3.2:
- The modem software used by default is the 1.07f version, since this has proved to
be the most stable. This can be changed in the Makefile if needed.
- There was a divide by zero panic if the HZ was greater than 1000.
- Modifications to Makefile.
Version 0.3.3:
- Setting the PCI latency timer to 255 (correctly this time..).
Version 0.3.4:
- Remove #include <libiberty.h> from collect_tors.c
- DBG macro changed to KERN_DEBUG log level.
Version 0.3.5:
- New modem software (1.0.8) that works with Alcatel DSLAM v 4.2.13.
- Using mutex'es to protect access to OBC.
- Compile options moved to Makefile's.
Version 0.3.6:
- Implemented retry in the OBC access functions.
- Do not return error if not SHOWTIME in unicorn_atm_open (compile option).
- The compile option USE_HW_TIMER not defined by default.
Version 0.3.8:
- First working version of USB driver. It only works with the "uhci" host controller driver.
- Some small fixes in unicorn_atmdrv.c to correctly display the link speed.
- Included the libm.a with the modem SW library, since this library is not installed on some recent Linux distributions.
- Simplified the Makefile's and moved the binaries into the arc/i386 subfolder.
Version 0.3.9:
- First version that works with usb-uhci driver. In this case FrameNumber=12 must be passed as module parameter.
- Added a script to establish Routed IP over ATM connections. Note that this script has not been tested.
Version 0.4.0:
- Automatically detect the type of USB Host Controller driver and set FrameNumber accordingly.
- New version (1.0.9) of modem software with new pilot tone detection algorithm.
- Use INT instead of OBC ISOC usb pipes in SHOWTIME.
Version 0.4.1:
- The USB bandwidth needed reduced from 90% to about 30% (512Kbits downstream).
- The driver is now ready for cards and adapters with new Analog Front Ends (20174).
Version 0.4.2:
- Licence added.
Version 0.4.3:
- The unicorn_usbdrv.c now compiles with kernel 2.4.20.
Version 0.4.4:
- Wrong fix in unicorn_usbdrv.c with kernel 2.4.20.
- Removed a few warning printks that are not really errors.
Version 0.4.5:
- Another wrong fix in unicorn_usbdrv.c with kernel 2.4.20.
- Ignoring errors in USB Interrupt Read if length is OK.
Version 0.4.7:
- Added support for AAL0 (raw) cells.
- Added a few ioctl's for the status application (coming later).
- The modem software library has been patched to remove strings containing "gcc2_copmpiled".
The driver now loads correctly on RedHat 8.0.
- The floating point library libm.a is no longer in the package. Please install it if with
your distribution (Mandrake 9.0) it is not installed. It is normally in /usr/lib/.
- There are two transmit queues with different priorities. This is in order to add support
for CBR,VBR streams. This is very preliminary and if you have any comment, please contact me.
Version 0.4.8:
- New graphical application "bewan_adsl_status" that shows the adsl state.
- Automatic detection of of adsl parameters using TR-037 or trial and error ("adsl-autoconfig").
- New start/stop script ("unicorn-adsl") that is using adsl-autoconfig.
Version 0.5.0:
- The source for the graphical application "bewan_adsl_status" included.
- New top-level Makefiles. To build the complete package, go to unicorn and type:
make,make install, make -f Makefile.modules, make -f Makefile.modules install.
- New modem software library compiled with GCC3.
- Correctly handing module versioning.
Version 0.5.1:
- C++ stubs added that was needed if the modules are compiled with GCC 2.
- Changes in the Makefile's, it now checks the PCI register and if there is a unicorn PCI card,
it builds the PCI module else the USB module is built.
Version 0.5.2:
- French localization of bewan_adsl_status finished.
- The unlock_kernel is now called before running the kernel thread.
- Some changes in the Makefile's. If you have both PCI and USB adapters, you can force building
the USB adapter by: make -f Makefile.modules pci install_pci
Version 0.5.3:
- Patches against the latest kernels in "patches" directory.
- Small fix in adsl-autoconfig to not write the config file if VPI,VCI not found.
- README for adsl-autoconfig added.
Version 0.5.4:
- Small modification in unicorntest.
- Small modification in unicorn_atmdrv.c to make it compile on new kernels.
Version 0.5.5:
- Script unicorn-ipoatm, unciorn-adsl and adsl autoconfig modified to work with provider free.
Version 0.6.0:
- New driver with Ethernet (instead of ATM) interface added to project. This driver supports
RFC2684 routed (ipoatm), RFC2684 bridged (br2684,pppoe), and PPP over ATM with standard pppoe
dialers. Note that this driver is in developement and the bewan_adsl_status application
and unicorntest does not work with this driver yet.
Version 0.6.1:
- Small modification in linrapi.c to make it compile with gcc 3.3.
- Added /proc entry for the unicorn_eth driver.
Version 0.6.2:
- Do not wake up tosca thread when disabling tosca soft interrupts.
Version 0.6.3:
- Added lock in CopySoftIntrTable since there are problems on SMP machines.
- The status application is now redimensioanable.
Version 0.6.4:
- Status and unicorntest application works with unicorn_eth drivers.
- Verify encapsulation in unicorn_eth driver.
Version 0.7.0:
- The bus drivers are now statically linked with the net drivers to simplify things.
For example, the PCI ATM driver is now called "unicorn_pci_atm.o",and can be loaded by doing
"insmod unicorn_pci_atm.o".
- Reorganized the files so that source files are not shared between PCI and USB drivers, except
when identical
- The Makefile's has been simplified. To compile and install all drivers and applications,
it is enough to do "make install" as root.
- The scripts has been simplified and will use the ethernet driver for PPPoE, Bridged and
IP over ATM.
Version 0.7.1:
- Implemented OAM loopback in the drivers. This is necessary in order to work with Telecom Italia lines.
Version 0.7.2:
- Removed the 'autoconfig', since I don't think it is used and did not work with the
new OAM loopback in the drivers.
- Added a new 'tools' directory. This contains simple tools to get the status, get the status as a
cgi application and send OAM pings.
- Force the threads to run on CPU #0 only. Hopefully this hack will make it work on SMP.
- Some changes to the Makefile's.
Version 0.7.3:
- unicorntest compiled with DEBUG.
- Remove old versions of the files unicorn_atm.o,unicorn_pci.o and unicorn_usb.o in lib/modules/.
Version 0.7.4:
- Fixes in the Makefiles.
- Workaround for SMP disconnection.
- Lock around TOSCA interrupts (for SMP).
- Setting useAFE based on board id.
- Minor changes in adsl parameters.
Version 0.7.5:
- Fixes for compile problems on newer kernels (versions 2.4.23, 2.6.0).
Version 0.7.6:
- Minor fixes for compile problem with gcc 2.95.
Version 0.7.7:
- Include the sources for libm.a, since this library is not installed
with all distributions.
- Use a mutex to serialize all the rAPI threads. This may fix a
problem on SMP machines.
Version 0.7.8:
- New modem software with support for AFE 20174.
Version 0.8.0:
- New modem software with support for AFE 20174 (fixed).
Version 0.8.1:
- Missing symbol unicorntest.c fixed.
- Fixing compile problem on RH9, SUSE9 kernels.
- highCarrierOff set to 230 instead of 240 (interopearbility).
- Fixed an OOPS in oam_ping when pinging and not in SHOWTIME.
Version 0.8.6:
- The driver should build and work for kernel 2.6.
- Retry isoc atm reads in case of error.
Version 0.8.7:
- Fixed a crash on low-bandwidth lines (< 320Kbits) by increasing the
number of ISO packets in the urb's from 20 to 40.
- Italian localization thanks to Stefano Palmeri.
KERNEL 2.6 NOTES:
To build the modules you may need to build them in the module
directory (unicorn_usb/unicorn_pci) instead of using the top-level
Makefile. The error appears when doing MODPOST.
IMPORTANT USB NOTES:
For USB to work correctly, I recommend using kernel 2.4.22 or later, since a lot of bugs has
been fixed in the UHCI and OHCI drivers since early 2.4 kernel releases.
If you have a 2.4.21 kernel (Mandrake 9.1 or 2.4.21-xx) you need to patch the
usb-uhci and usb-ohci drivers to avoid a freeze when starting the unicorn_usb_xxx module.
Copy the patches to the linux source directory and do:
patch -p0 < usb-uhci.patch
patch -p0 < usb-ohci.patch
|