[uClinux-dev] ip masquarade support

David E. Gelhar David.Gelhar at Dartmouth.EDU
Wed Mar 12 13:42:52 EST 2003


On Tuesday, March 11, 2003, at 03:32 AM, Roope Anttinen wrote:

> Started all over with as stripped image as possible which does 
> basically
> nothing more than boots...


One thing I noticed in your output  is that cs89x0_probe is "finding" 
lots of bogus ethernet interfaces. The ioaddr of "0xFFE0" is supposed 
to mean "don't probe". The same thing was happening to me with a 
uCsimm; although it wasn't resulting in crashes. I don't know if this 
is the cause of your problem, but it probably can't be good to have 
these bogus ethernet devices running.

This appears to be caused by some added ARM code in drivers/net/Space.c 
that always calls cs89x0_probe for eth1..eth7 (if CONFIG_CS89x0) in the 
arch-specific probes section, while the generic isa_probes section will 
not probe for interfaces with a base addr of 0xFFE0.

The obvious patch to that is to not call the arm-specific probes on a 
non-ARM architecture:


diff -c -r1.4 -r1.5
*** Space.c     12 Mar 2003 18:19:22 -0000      1.4
--- Space.c     12 Mar 2003 18:25:45 -0000      1.5
***************
*** 397,402 ****
--- 397,405 ----
         {NULL, 0},
   };

+ /* probing for cs89x0 unconditionally (not checking for "noprobe" 
addr of 0xffe0)
+    causes trouble on uCsimm; don't do ARM probes on non-ARM arch */
+ #ifdef        CONFIG_ARM
   static struct devprobe arm_probes[] __initdata = {
   #ifdef  CONFIG_ETH_S3C4530
           {s3c_probe, 0},                         /* S3C4530      */
***************
*** 408,416 ****
           {cs89x0_probe, 0},
   #endif

-
           {NULL, 0},
   };

   /*
    * Unified ethernet device probe, segmented per architecture and
--- 411,419 ----
           {cs89x0_probe, 0},
   #endif

           {NULL, 0},
   };
+ #endif

   /*
    * Unified ethernet device probe, segmented per architecture and
***************
*** 436,443 ****
--- 439,448 ----
                 return 0;
         if (probe_list(dev, mips_probes) == 0)
                 return 0;
+ #ifdef  CONFIG_ARM
         if (probe_list(dev, arm_probes) == 0)
                 return 0;
+ #endif
         if (probe_list(dev, sgi_probes) == 0)
                 return 0;
         if (probe_list(dev, eisa_probes) == 0)


On Tuesday, March 11, 2003, at 03:32 AM, Roope Anttinen wrote:
>
> cs89x0:cs89x0_probe(0x0)
> cs89x0: Setting up uCcs8900 Chip Select & IRQ ioaddr = 0x10000300
> cs89x0.c: v2.4.3-pre1 Russell Nelson <nelson at crynwr.com>, Andrew Morton
> <andrew>
> eth0: cs8900 rev J found at 0x10000300
> cs89x0 media RJ-45, IRQ 20, programmed I/O, MAC 00:06:3b:00:00:62
> cs89x0_probe1() successful
> cs89x0:cs89x0_probe(0xffe0)
> cs89x0: Setting up uCcs8900 Chip Select & IRQ ioaddr = 0xFFE0
> eth1: cs8920 rev ` found at 0xffe0
> cs89x0 media RJ-45, IRQ 20, programmed I/O, MAC 00:06:3b:00:00:62
> cs89x0_probe1() successful
> cs89x0:cs89x0_probe(0xffe0)
> cs89x0: Setting up uCcs8900 Chip Select & IRQ ioaddr = 0xFFE0
> eth2: cs8900 rev A found at 0xffe0
> cs89x0 media RJ-45, IRQ 20, programmed I/O, MAC 00:06:3b:00:00:62
> cs89x0_probe1() successful
> cs89x0:cs89x0_probe(0xffe0)
> cs89x0: Setting up uCcs8900 Chip Select & IRQ ioaddr = 0xFFE0
> eth3: cs8920 rev A found at 0xffe0
> cs89x0 media RJ-45, IRQ 20, programmed I/O, MAC 00:06:3b:00:00:62
> cs89x0_probe1() successful
> cs89x0:cs89x0_probe(0xffe0)
> cs89x0: Setting up uCcs8900 Chip Select & IRQ ioaddr = 0xFFE0
> eth4: cs8900 rev A found at 0xffe0
> cs89x0 media RJ-45, IRQ 20, programmed I/O, MAC 00:06:3b:00:00:62
> cs89x0_probe1() successful
> cs89x0:cs89x0_probe(0xffe0)
> cs89x0: Setting up uCcs8900 Chip Select & IRQ ioaddr = 0xFFE0
> eth5: cs8920 rev A found at 0xffe0
> cs89x0 media RJ-45, IRQ 20, programmed I/O, MAC 00:06:3b:00:00:62
> cs89x0_probe1() successful
> cs89x0:cs89x0_probe(0xffe0)
> cs89x0: Setting up uCcs8900 Chip Select & IRQ ioaddr = 0xFFE0
> eth6: cs8900 rev A found at 0xffe0
> cs89x0 media RJ-45, IRQ 20, programmed I/O, MAC 00:06:3b:00:00:62
> cs89x0_probe1() successful
> cs89x0:cs89x0_probe(0xffe0)
> cs89x0: Setting up uCcs8900 Chip Select & IRQ ioaddr = 0xFFE0
> eth7: cs8920 rev A found at 0xffe0
> cs89x0 media RJ-45, IRQ 20, programmed I/O, MAC 00:06:3b:00:00:62
> cs89x0_probe1() successful




More information about the uClinux-dev mailing list