Bug 32699

Summary: Tulip ether card EN2242 (if_dc.c) use wrong multicast table
Product: Base System Reporter: Jean-Luc.Richier <Jean-Luc.Richier>
Component: miscAssignee: Martin Blapp <mbr>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: Unspecified   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
file.diff none

Description Jean-Luc.Richier 2001-12-11 16:40:01 UTC
The ether multicast filter table is incorrectly initialized in the
driver if_dc.c for the ether card of a XE3 HP portable computer..
Therefore multicast are not received and IPv6 does not not work
correctly.
The card is recognized as:
dc0: <Accton EN2242 MiniPCI 10/100BaseTX> port 0x1c00-0x1cff
mem 0xe8000000-0xe80003ff irq 11 at device 16.0 on pci0

Fix: When looking in the driver source (if_dc.c), one can see that tulip like
cards have two different algorithms to initialize the muticast filter
table.Comparing FreeBSD code which fails and linux 2.4.9 driver
(tulip_core.c) which works, one can see that the function invoked for
the EN2242 card is the incorrect one. Changing the function corrects
the bug. See proposed patch.
The correction is also done for AN985, as the linux code says that the
two cards are similar (but the AN985 is not tested)

Proposed correction:
How-To-Repeat: Configure IPv6 on the computer and try to ping6 hosts not on the local
network. This does not work. ndp -a show that the IPv6 router is not
in the ndp table.
Put the interface in promisc mode using tcpdump and try ping6 again.
This time everything works well, until promisc mode is turned off and
the NDP cache expires.
Comment 1 Martin Blapp freebsd_committer freebsd_triage 2003-01-30 23:45:12 UTC
Responsible Changed
From-To: freebsd-bugs->mbr

I'll look at this.
Comment 2 Scott Mitchell 2003-03-29 17:52:58 UTC
I can confirm that the same problem exists with my AN985-based card on
-STABLE from March 1st 2003.  It's some kind of Linksys card, can't say
which one without pulling the machine apart:

dc0: <ADMtek AN985 10/100BaseTX> port 0xb400-0xb4ff mem 0xd9002000-0xd90023ff irq 10 at device 11.0 on pci0
dc0: Ethernet address: 00:20:78:0d:6b:6b

Jean-Luc's patch still seems to work just fine, although I had to apply it
by hand since the driver has changed quite a lot since it was posted.

	Scott
Comment 3 Martin Blapp freebsd_committer freebsd_triage 2003-05-01 10:31:46 UTC
State Changed
From-To: open->closed

Committed, thanks !