This is version 0.32 CONTENTS: 1. Introduction. 2. License. 3. Files in this release. 4. Installation. 5. Problems and tuning. 6. Acknowledgments. 1. INTRODUCTION. This is an Ethernet driver for the D-Link DE-600 Ethernet pocket adapter for the parallel port, used with Linux on a laptop. Some improvements over the 0.2X releases include: o driver code trying to send packets end to end, o a more solid interrupt handler, o a fix that modifies the tcp protocol so that the DE-600 won't choke as easily on receives. This is a beta release, i.e. it ought to work! (:-) I have used this driver for NFS, ftp, telnet and X-clients on remote machines. Transmissions with ftp seems to work as good as can be expected (i.e. > 80k bytes/sec) from a parallel port...:-) The speed limit is now in the upper protocols, at least for a 386SX-25 :-) All comments/fixes to Bjorn Ekwall (bj0rn@blox.se). (No, I have _not_ included any support for the DE-620 yet since I have _no_ official documentation on how to program that beast. There are some code modifications in place already in case I get some _real_ info..., c'mon D-Link!) 2. LICENSE. 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. 3. FILES IN THIS RELEASE. README.DLINK This file. d_link.c The Source (,may it be with You :-). 4. INSTALLATION. o Get the latest net binaries (those referring to /conf/net). o Read the NET-2 and Ethernet HOWTO's and modify your setup. o To include networking and the DE600 in your kernel, do: # cd /linux # make config (answer yes on net and DE600) # make clean # make depend # make zImage (or whatever magic you usually do) o I use lilo to boot multiple kernels, so that I at least can have one working kernel :-). If you do too, append these lines to /etc/lilo/config: image = /usr/src/linux/zImage label = newlinux root = /dev/hda2 (or whatever YOU have...) # /etc/lilo/install o Do "sync" and reboot the new kernel with a D-Link pocket adapter connected. Now, watch for any fireworks (try to ignore (or live with) the smoke... :-) or: do read NET-FAQ and all info in /conf/net if fix in code needed... vi /linux/net/inet/d_link.c cd /linux make zImage /etc/lilo/install sync reboot endif try it... until satisfied 5. "PROBLEMS" AND TUNING, o Some machines have trouble handling the parallel port and the adapter at high speed. If you experience problems: - The adapter is not recognized at boot, i.e. an Ethernet adress of 00:80:c8:... is not shown, try to add another "; SLOW_DOWN_IO" at D_LINK_SLOW_DOWN near line 43. As a last resort, uncomment: "#define REALLY_SLOW_IO" near line 48 (see <asm/io.h> for hints). - You experience "timeout" messages: first try to add another "; SLOW_DOWN_IO" at D_LINK_SLOW_DOWN near line 22, _then_ try to increase the value (original value: 5) at "if (tickssofar < 5)" near line 424. - The adapter _is_ recognized at boot but you get messages about "Network Unreachable": The problem is probably _not_ with the d_link driver. Check your net configuration instead (ifconfig and route) in "rc.inet1". o There might be some temporary "slowdowns" when communicating with other systems when receiving through the TCP layer. A "fix" for this is made lastly in the source, in the function "d_link_rspace()" that is used to modify TCP if there is a DE-600 in use (see comments around lines 320 and 730). The aim of this fix is to reduce the possibility of more than two packets arriving adressed to the adapter within the timespan it takes to copy one packet from the adapter. Transfers with ftp with a packetsize of >= 1k will be taken care of with this "fix", but telnet with many small packets might run into problems sometimes. The "slowdown" will usually take care of itself, especially if there are some larger packets arriving now and then... There is some room for "tuning" by changing (decreasing) the values for "D_LINK_MAX_WINDOW" and "D_LINK_MIN_WINDOW" defined near the end of the file (around line 726). UDP (i.e. NFS) does not suffer from the same problem. o The code inside d_link_interrupt() is somewhat of a (educated) guesswork since my only source of information is the asm-source (:-), though I have tried to improve on it. o There is some rudimentary support for debugging, see the source. Use "-DD_LINK_DEBUG=3" when compiling. 6. ACKNOWLEDGMENTS. This driver wouldn't have been done without the base (and support) from Ross Biro (bir7@leland.stanford.edu). The driver also relies upon GPL-ed source from D-Link Inc. and from Russel Nelson at Crynwr Software (nelson@crynwr.com). Additional input also from Donald Becker (becker@super.org). Alpha release primary victim^H^H^H^H^H^Htester: Erik Proper (erikp@cs.kun.nl). Good input also from several users, most notably Mark Burton <markb@ordern.demon.co.uk>. Lastly, Fred van Kempen deserves all thanks for keeping up the good work which will give us all a _great_ net package! Happy hacking! Bjorn Ekwall == bj0rn@blox.se