Organization: Johannes Kepler University Linz - Computing Center
Date: Thursday, 12 Nov 1992 05:36:30 CET
From: <K111114@ALIJKU11.BITNET>
Newsgroups: comp.os.linux
Subject: tcp/ip & wd8003 card: Solution

finally I've got linux to work with my funny configuration, that is,
a serial line (com2) AND the wd-card sharing the same irq (3).
a) I have disabled the serial lines. instead of
 tty0s 0x2e8 irq 3   (or whatsoever)
   now a :
 serial: rs_init disabled.
 appears at boot-time.
 I've changed this in kernel/chr_drv/serial.c
 also, it's usefull to set #define NR_PORTS to 1 if u don't want the com2,
 but still the com1 ... am I wrong ? for the machine here, I've set NR_PORTS 0
I dunno if the serials can be enabled, but i will surely try it out.

b) now to the confusing thing which really got it running.
  I've been debugging the kernel for days, and couldn't find any error :-)
  I've been hacking on device structures until finally ... i found that
  wd8003_init is NEVER called. This flag is not set from by the kernel, but
  by the interface configuration program !!! ARGH! I've been looking in the
  wrong file. WHENEVER you specify the -d flag in /usr/etc/inet/config.c,
  ipc.up is set to 0. And, (methinks in net/tcp/ip.c ?) never calls
  dev->open(dev), when ipc.up = 0. So I just altered config.c, where the
  case 'd' set's ipc.up. That got it working. It still is slow, and takes a
  lot of time till the connection is established (so there still is something
  fishy), but once you are in, it is quite fast ! Well, I don't know if
  wd8003_open should be called somewhere else than from ifconfig ? Anyway, it
  is not called ... i've monitored it (using printk).

c) I'm not sure of this are bugs, or if this is right ...
   when monitoring we.c, i found that even after you have killed inetd,
   still IRQ3s are generated. Should there be a wd8003_close somewhere ?
   also, I get a lot's of "packet meant for someone else", but I'm sure that
   the destination adresses shown are not within our sub-subnet's range ...
   sample:
   saddr = 29044e8c, daddr = 1e034e8c looks _perfectly_ right, since
           140.78.4.41  (PC)  140.78.3.30 is the SunSparc I'm on.
   but:
   saddr = 62754e8c, daddr = ff754e8c doesn't look like it should be sent to
                                      sent to our subnet. (which is 140.78.4.0)
   Someone (?) is doing a broadcast, and the broadcastmsg reaches our subnet???
   Gonna write some code to look at the _data_ contained in there :-)
   more fun is:
   saddr = 2684e8c, daddr = ffff4e9c ... someone is broadcasting to all the
   whole uni-net ?! Wonder what's _that_ is ...

   Either our uni-net is totally misconfigured (which I would believe
   immediately), or we.c is fishy (which might be), or I'm just an ignorant
   not knowing what these broadcasts mean (which is very possible, too :-)
The ip-header for these packets looks like:
   ihl=5, version=4, tos=0, tot_len=88,
   id=ac6e, ttl=255, prot=17, check=e948.

   What is prot=17 please ? (I think I understand the rest...)
   i.e., doing a "ping 140.78.4.41" shows the following ip-header:
   ihl=5, version=4, ....
   ................  prot=1  (for ping)
  (gonna look it up in "internetworking with tcp/ip" anyway :)

   Next thing, I get 5 IRQ3 in a row, whithout an ip-header being built ?
   what does that mean ?

   please let me add another word about the long login-time ...

   On the Sun I type                 On the Pc appears:
   telnet 140.78.4.41                ip-build-header, type=6
                                     ip-header, prot=17

   Connected to 140.78.4.41
   Escape character is '^]'

  now, the whole thing hangs ... I don't get a login prompt ! But the
  connection actually IS up, because every time I

    hit any key                      ip-build-header, type=6
                                     ip-header, prot=17         are displayed.

   also, some unprocessed irq3s are generated.
   Then, after a while, the "login:" appears, as many times as I have hit
   the enter-key before when "Connected" has been displayed.

   Last not least, please anyone give me a pointer where I can get an ftpd :-)

   and: anyone knows if the ne2000 card is register-compatible to the wd80xx ?

 When you read this line now, I wanna thank you for your patience :-)
 Herp ( happy like a child about tcp/ip )
Newsgroups: comp.os.linux