Richard Mortimer writes: > Diff below. Hope this is useful. > > Richard > > P.S. Sorry for slow turnaround. I had a few day job issues to sort out > :-( > > Jeff Garzik writes: > > Here is the patch I just checked in, which fixes some of the easier > > issues. If you could diff against this, that would be great.
Ok, We may be able to scrap the dmfe.c idea and keep with tulip. I did a bit of looking into why I was seeing pci errors with the tulip driver. After a bit of scratching around and a bit of a helpful suggestion from a colleague it seems that the dm9102a chip has a bit of a problem with Memory Read Multiple pci transactions (That is CSR0 bit 21). If the MRM bit is cleared the pci errors go away and the chip starts to act a bit more reasonably. That is I have changed csr0 as follows #elif defined(__sparc__) || defined(__hppa__) /* The UltraSparc PCI controllers will disconnect at every 64-byte * crossing anyways so it makes no sense to tell Tulip to burst * any more than that. */ static int csr0 = 0x01800000 | 0x9000; /* static int csr0 = 0x01A00000 | 0x9000; */ I know that this isn't a good way to do it (should probably have a check in tulip_init_one for the particular chip/rev maybe only on SPARC). Things don't really work (ideas as to what may be going wrong gratefully received). I can see data but things are getting very garbled i.e. From the remote (not Netra X1) side I can see 23:43:11.598499 B arp who-has patricia tell pingu 23:43:11.598499 > arp reply patricia (0:0:c0:a0:ce:14) is-at 0:0:c0:a0:ce:14 (8:0:20:1:2:3) 23:43:11.598499 < pingu > patricia: icmp: echo request (DF) 23:43:11.598499 > patricia > pingu: icmp: echo reply (DF) 23:43:11.598499 < pingu > patricia: icmp: echo request (DF) 23:43:11.598499 > patricia > pingu: icmp: echo reply (DF) 23:43:11.598499 < pingu > patricia: icmp: echo request (DF) 23:43:11.598499 > patricia > pingu: icmp: echo reply (DF) 23:43:12.598499 < pingu > patricia: icmp: echo request (DF) 23:43:12.598499 > patricia > pingu: icmp: echo reply (DF) 23:43:13.598499 < pingu > patricia: icmp: echo request (DF) 23:43:13.598499 > patricia > pingu: icmp: echo reply (DF) 23:43:14.598499 < pingu > patricia: icmp: echo request (DF) 23:43:14.598499 > patricia > pingu: icmp: echo reply (DF) 23:43:16.598499 > arp who-has pingu tell patricia (0:0:c0:a0:ce:14) 23:43:16.598499 < arp reply pingu is-at 8:0:20:1:2:3 (0:0:c0:a0:ce:14) Unfortunately something seems to go wrong on the Netra X1 side with reads because ping reports the following. linux:~ # ping patricia PING patricia (192.168.1.1): 56 data bytes 64 bytes from 192.168.1.1: icmp_seq=8 ttl=255 time=55.770 ms wrong data byte #8 should be 0x8 but was 0x0 39 77 80 16 0 1 0 0 0 0 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 64 bytes from 192.168.1.1: icmp_seq=7 ttl=255 time=1056.247 ms wrong data byte #8 should be 0x8 but was 0x0 39 77 80 15 0 1 0 0 0 0 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 64 bytes from 192.168.1.1: icmp_seq=6 ttl=255 time=2056.490 ms wrong data byte #8 should be 0x8 but was 0x0 39 77 80 14 0 1 0 0 0 0 a b c d e f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 Looking at these on the X1 with tcp dump seems to show that everything is ok linux:~ # less /tmp/eth0.dump User level filter, protocol ALL, datagram packet socket tcpdump: listening on eth0 23:47:30.938669 arp who-has patricia tell pingu (8:0:20:1:2:3) 23:47:30.939133 arp reply patricia is-at 0:0:c0:a0:ce:14 (8:0:20:1:2:3) 23:47:30.939173 pingu > patricia: icmp: echo request (DF) 23:47:30.939742 patricia > pingu: icmp: echo reply (DF) 23:47:31.930012 pingu > patricia: icmp: echo request (DF) 23:47:31.930603 patricia > pingu: icmp: echo reply (DF) 23:47:32.929982 pingu > patricia: icmp: echo request (DF) 23:47:32.930562 patricia > pingu: icmp: echo reply (DF) 23:47:33.929982 pingu > patricia: icmp: echo request (DF) 23:47:33.930562 patricia > pingu: icmp: echo reply (DF) 23:47:34.929989 pingu > patricia: icmp: echo request (DF) 23:47:34.930569 patricia > pingu: icmp: echo reply (DF) 23:47:35.927439 arp who-has pingu tell patricia 23:47:35.927481 arp reply pingu (8:0:20:1:2:3) is-at 8:0:20:1:2:3 (0:0:c0:a0:ce:14) Now with tcpdump -e -x (sorry different set of packets but same symptoms) cat /tmp/eth0.dump User level filter, protocol ALL, datagram packet socket tcpdump: listening on eth0 23:53:36.328546 0:0:0:0:0:0 8:0:20:1:2:3 ip 98: pingu > patricia: icmp: echo req uest (DF) 4500 0054 0000 4000 4001 b750 c0a8 0107 c0a8 0101 0800 4bb9 01a2 0000 3977 82f0 0005 0335 0809 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 3637 23:53:36.329192 0:0:c0:a0:ce:14 0:0:0:0:0:1 ip 98: patricia > pingu: icmp: echo reply (DF) 4500 0054 0000 4000 ff01 f84f c0a8 0101 c0a8 0107 0000 53b9 01a2 0000 3977 82f0 0005 0000 0000 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 3637 23:53:37.320027 0:0:0:0:0:0 8:0:20:1:2:3 ip 98: pingu > patricia: icmp: echo req uest (DF) 4500 0054 0000 4000 4001 b750 c0a8 0107 c0a8 0101 0800 6cef 01a2 0001 3977 82f1 0004 e1fd 0809 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 3637 23:53:37.320624 0:0:c0:a0:ce:14 0:0:0:0:0:1 ip 98: patricia > pingu: icmp: echo reply (DF) 4500 0054 0000 4000 ff01 f84f c0a8 0101 c0a8 0107 0000 74ef 01a2 0001 3977 82f1 0004 30b2 0809 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 3637 23:53:38.320000 0:0:0:0:0:0 8:0:20:1:2:3 ip 98: pingu > patricia: icmp: echo req uest (DF) 4500 0054 0000 4000 4001 b750 c0a8 0107 c0a8 0101 0800 6cfa 01a2 0002 3977 82f2 0004 e1f0 0809 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 3637 23:53:38.320566 0:0:c0:a0:ce:14 0:0:0:0:0:1 ip 98: patricia > pingu: icmp: echo reply (DF) 4500 0054 0000 4000 ff01 f84f c0a8 0101 c0a8 0107 0000 74fa 01a2 0002 3977 82f2 0004 0000 0000 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 3637 23:53:39.319981 0:0:0:0:0:0 8:0:20:1:2:3 ip 98: pingu > patricia: icmp: echo req uest (DF) 4500 0054 0000 4000 4001 b750 c0a8 0107 c0a8 0101 0800 6d0c 01a2 0003 3977 82f3 0004 e1dc 0809 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 3637 23:53:39.320565 0:0:c0:a0:ce:14 0:0:0:0:0:1 ip 98: patricia > pingu: icmp: echo reply (DF) 4500 0054 0000 4000 ff01 f84f c0a8 0101 c0a8 0107 0000 750c 01a2 0003 3977 82f3 0004 0000 0000 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 3637 23:53:40.319988 0:0:0:0:0:0 8:0:20:1:2:3 ip 98: pingu > patricia: icmp: echo req uest (DF) 4500 0054 0000 4000 4001 b750 c0a8 0107 c0a8 0101 0800 6d05 01a2 0004 3977 82f4 0004 e1e1 0809 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 3637 23:53:40.320572 0:0:c0:a0:ce:14 0:0:0:0:0:1 ip 98: patricia > pingu: icmp: echo reply (DF) 4500 0054 0000 4000 ff01 f84f c0a8 0101 c0a8 0107 0000 7505 01a2 0004 3977 82f4 0004 0000 0000 0a0b 0c0d 0e0f 1011 1213 1415 1617 1819 1a1b 1c1d 1e1f 2021 2223 2425 2627 2829 2a2b 2c2d 2e2f 3031 3233 3435 3637 23:53:41.324814 0:0:c0:a0:ce:14 0:0:0:0:0:1 arp 60: arp who-has pingu tell patri cia 0001 0800 0604 0001 0000 c0a0 ce14 c0a8 0101 0000 0000 0000 c0a8 0107 3977 82f4 0004 e1e1 0809 0a0b 0c0d 0e0f 1011 23:53:41.324863 0:0:0:0:0:0 8:0:20:1:2:3 arp 42: arp reply pingu (8:0:20:1:2:3) is-at 8:0:20:1:2:3 (0:0:c0:a0:ce:14) 0001 0800 0604 0002 0800 2001 0203 c0a8 0107 0000 c0a0 ce14 c0a8 0101 12 packets received by filter linux:~ #