[ale] Compatibility problem: Linksys WRT54G & D-Link DFE-570TX NIC

Kenneth W Cochran kwc at TheWorld.com
Thu Jan 15 20:55:18 EST 2004


This is a copy of what I sent to Linksys, but I thought
maybe someone here in this list/group might be able to
shed some light as well.

Summary:  21143-based net-card won't communicate through
the switch in a Linksys WRT54G.

Hello:

I'm having trouble getting a Linksys WRT54G Rev. 1.1
to communicate with a D-Link DFE-570TX network card.
This network card has 4 interfaces, with DEC (now Intel)
21143 Ethernet controllers on each.

This is happening with both FreeBSD and with Linux
(specifically Slackware, :), 7.1 with kernel 2.2.16,
yaaa, very old, but I'd think still valid for testing;
the net-card uses the tulip driver).  For Linux, just
s/dc2/eth2/ and the scenarios/explanations are the same.

Ethernet card: D-Link DFE-570TX
Interfaces:
dc0 - "public" to outside Internet, address assigned by DHCP/dhclient,
      100baseTX full-duplex connection to a Motorola SB4101 cable modem
dc1 - 192.168.0.1/24, unused in this scenario
dc2 - 192.168.1.50/24, trying to communicate with Linksys WRT54G
dc3 - unused in this scenario

Other IP addresses:
192.168.1.1/24 - Linksys WRT54G router
192.168.1.51/24 - another machine running Windows 2000 &
    with an Intel Pro/100+ NIC

OS: FreeBSD 4.9-STABLE as of 15 January 2004
Firewall: ipfw2

Setup scenarios & successes/failures with them:

1.  Connect the router directly to a port on the Ethernet
    card - the router won't arp-reply (& thus no further
    communication), viz:

dc2 (3rd Ethernet interface) <--> router

$ ping -c3 192.168.1.1  ## ip address of the router on dc2
PING 192.168.1.1 (192.168.1.1): 56 data bytes

--- 192.168.1.1 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss

localhost# tcpdump -lni dc2  ## tcpdump while running the above ping
tcpdump: listening on dc2
10:17:18.123385 arp who-has 192.168.1.1 tell 192.168.1.50
10:17:19.124588 arp who-has 192.168.1.1 tell 192.168.1.50
10:17:20.134583 arp who-has 192.168.1.1 tell 192.168.1.50

2.  Connecting (dc2 in this example) from the card to a
    *hub* (Netgear DS-104, 100mb/s half-duplex) and then
    connecting  that hub to the router (via the uplink port)
    I get the following (success):

dc2 <--> hub <--> router

$ ping -c3 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=0.826 ms
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.751 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.828 ms

--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.751/0.802/0.828/0.036 ms

localhost# tcpdump -lni dc2
tcpdump: listening on dc2
18:09:55.023426 192.168.1.50 > 192.168.1.1: icmp: echo request
18:09:55.024193 192.168.1.1 > 192.168.1.50: icmp: echo reply
18:09:56.028951 192.168.1.50 > 192.168.1.1: icmp: echo request
18:09:56.029636 192.168.1.1 > 192.168.1.50: icmp: echo reply
18:09:57.038954 192.168.1.50 > 192.168.1.1: icmp: echo request
18:09:57.039715 192.168.1.1 > 192.168.1.50: icmp: echo reply
18:10:00.022492 arp who-has 192.168.1.50 tell 192.168.1.1
18:10:00.022520 arp reply 192.168.1.50 is-at 0:80:c8:b9:20:df

3.  Connection from dc2 to the router and from router to
    another machine running Windows 2000 and an Intel
    Pro/100 Ethernet NIC:

dc2 <--> router <--> win2k machine with Intel NIC

localhost# ifconfig dc2
dc2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::280:c8ff:feb9:20df%dc2 prefixlen 64 scopeid 0x3
        inet 192.168.1.50 netmask 0xffffff00 broadcast 192.168.1.255
        ether 00:80:c8:b9:20:df
        media: Ethernet 100baseTX <full-duplex>
        status: active
localhost#

localhost# ping -c3 192.168.1.51
PING 192.168.1.51 (192.168.1.51): 56 data bytes

--- 192.168.1.51 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss

localhost# tcpdump -lni dc2
tcpdump: listening on dc2
19:56:40.831349 arp who-has 192.168.1.51 tell 192.168.1.50
19:56:40.831507 arp reply 192.168.1.51 is-at 0:90:27:84:42:f
19:56:40.831521 192.168.1.50 > 192.168.1.51: icmp: echo request
19:56:41.835830 192.168.1.50 > 192.168.1.51: icmp: echo request
19:56:42.845862 192.168.1.50 > 192.168.1.51: icmp: echo request
^C
5 packets received by filter
0 packets dropped by kernel
localhost#

4.  Same connection as above, but through hub instead:

dc2 <--> hub <--> win2k machine with Intel NIC

localhost# ifconfig dc2
dc2: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::280:c8ff:feb9:20df%dc2 prefixlen 64 scopeid 0x3
        inet 192.168.1.50 netmask 0xffffff00 broadcast 192.168.1.255
        ether 00:80:c8:b9:20:df
        media: Ethernet 100baseTX
        status: active

localhost# localhost# ping -c3 192.168.1.51
PING 192.168.1.51 (192.168.1.51): 56 data bytes
64 bytes from 192.168.1.51: icmp_seq=0 ttl=128 time=0.391 ms
64 bytes from 192.168.1.51: icmp_seq=1 ttl=128 time=0.215 ms
64 bytes from 192.168.1.51: icmp_seq=2 ttl=128 time=0.178 ms

--- 192.168.1.51 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.178/0.261/0.391/0.093 ms

localhost# localhost# tcpdump -lni dc2
tcpdump: listening on dc2
20:01:59.078456 arp who-has 192.168.1.51 tell 192.168.1.50
20:01:59.078596 arp reply 192.168.1.51 is-at 0:90:27:84:42:f
20:01:59.078608 192.168.1.50 > 192.168.1.51: icmp: echo request
20:01:59.078778 192.168.1.51 > 192.168.1.50: icmp: echo reply
20:02:00.079644 192.168.1.50 > 192.168.1.51: icmp: echo request
20:02:00.079800 192.168.1.51 > 192.168.1.50: icmp: echo reply
20:02:01.089664 192.168.1.50 > 192.168.1.51: icmp: echo request
20:02:01.089781 192.168.1.51 > 192.168.1.50: icmp: echo reply
^C
8 packets received by filter
0 packets dropped by kernel
localhost#

Based on the above setups/scenarios, it appears that
FreeBSD, with a D-Link DFE-570TX NIC and the Linksys WRT54G
(or rather, its switch) don't communicate with each other
directly, but will if a hub is connected between them.

Other notes:

I get the same results using Linux.

The router works fine when connecting another machine
(running Windows 2000 and with an Intel Pro/100 NIC)
to it.  The FreeBSD machine however, does not "answer"
the Win2k machine through the router/switch; this works
fine through the hub.

Using ifconfig to force media and mediaoptions, along with
restarting/rebooting the router, has no effect.

Any ideas on getting this working?
Cabling checks out fine and this error "follows" interfaces
if I change them.

It appears that I've found a hardware incompatibility with
the "switch" part of this router.

Idea(s) on further troubleshooting/fixing this?

FAQs/documentation pointers are quite welcome. :)

Sorry this message became so lengthy.

Thanks,

-kc



More information about the Ale mailing list