From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757978Ab0HQRLZ (ORCPT ); Tue, 17 Aug 2010 13:11:25 -0400 Received: from mms1.broadcom.com ([216.31.210.17]:4067 "EHLO mms1.broadcom.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753088Ab0HQRLX (ORCPT ); Tue, 17 Aug 2010 13:11:23 -0400 X-Server-Uuid: 02CED230-5797-4B57-9875-D5D2FEE4708A Date: Tue, 17 Aug 2010 10:11:15 -0700 From: "Matt Carlson" To: "Thomas Habets" cc: "Eric Dumazet" , "linux-kernel@vger.kernel.org" , netdev , "Matthew Carlson" , "Michael Chan" Subject: Re: BUG: IPv6 stops working after a while, needs ip ne del command to reset Message-ID: <20100817171115.GA4134@mcarlson.broadcom.com> References: <1281953960.2524.23.camel@edumazet-laptop> <1282024802.2487.687.camel@edumazet-laptop> <1282050920.2448.47.camel@edumazet-laptop> <1282055659.2448.58.camel@edumazet-laptop> MIME-Version: 1.0 In-Reply-To: User-Agent: Mutt/1.5.20 (2009-06-14) X-WSS-ID: 60741D3937O64696312-01-01 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Aug 17, 2010 at 08:58:26AM -0700, Thomas Habets wrote: > On Tue, 17 Aug 2010, Eric Dumazet wrote: > > Try following patch to check tg3 receives correct multicast list (its OK > > for me, seen on dmesg output) > > > > [17162.120238] add mc_addr(ha->addr=33:33:00:00:00:01) > > [17162.120270] add mc_addr(ha->addr=01:00:5e:00:00:01) > > [17162.120298] add mc_addr(ha->addr=33:33:ff:87:96:ce) > > [17162.120326] add mc_addr(ha->addr=33:33:ff:5c:00:02) > > [17162.120355] filters=80000001 00000000 00400000 40000000 > > Right after boot: > > $ dmesg | egrep 'eth0|^add mc|^filters=' > tg3 0000:03:04.0: eth0: Tigon3 [partno(N/A) rev 9003] (PCIX:133MHz:64-bit) > MAC address 00:24:81:a3:44:24 > tg3 0000:03:04.0: eth0: attached PHY is 5714 (10/100/1000Base-T Ethernet) > (WireSpeed[1]) > tg3 0000:03:04.0: eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[1] TSOcap[1] > tg3 0000:03:04.0: eth0: dma_rwctrl[76148000] dma_mask[40-bit] > add mc_addr(ha->addr=33:33:00:00:00:01) > filters=80000000 00000000 00000000 00000000 > add mc_addr(ha->addr=33:33:00:00:00:01) > filters=80000000 00000000 00000000 00000000 > add mc_addr(ha->addr=33:33:00:00:00:01) > filters=80000000 00000000 00000000 00000000 > add mc_addr(ha->addr=33:33:00:00:00:01) > add mc_addr(ha->addr=01:00:5e:00:00:01) > filters=80000000 00000000 00000000 40000000 > ADDRCONF(NETDEV_UP): eth0: link is not ready > add mc_addr(ha->addr=33:33:00:00:00:01) > add mc_addr(ha->addr=01:00:5e:00:00:01) > filters=80000000 00000000 00000000 40000000 > add mc_addr(ha->addr=33:33:00:00:00:01) > add mc_addr(ha->addr=01:00:5e:00:00:01) > filters=80000000 00000000 00000000 40000000 > add mc_addr(ha->addr=33:33:00:00:00:01) > add mc_addr(ha->addr=01:00:5e:00:00:01) > add mc_addr(ha->addr=33:33:ff:5c:00:02) > filters=80000001 00000000 00000000 40000000 > tg3 0000:03:04.0: eth0: Link is up at 1000 Mbps, full duplex > tg3 0000:03:04.0: eth0: Flow control is off for TX and off for RX > ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready > add mc_addr(ha->addr=33:33:00:00:00:01) > add mc_addr(ha->addr=01:00:5e:00:00:01) > add mc_addr(ha->addr=33:33:ff:5c:00:02) > add mc_addr(ha->addr=33:33:ff:a3:44:24) > filters=80020001 00000000 00000000 40000000 > eth0: no IPv6 routers present > > [ ifconfig eth0 allmulti > (ip l and ifconfig say ALLMULTI is on) > ] > > add mc_addr(ha->addr=33:33:00:00:00:01) > add mc_addr(ha->addr=01:00:5e:00:00:01) > add mc_addr(ha->addr=33:33:ff:5c:00:02) > add mc_addr(ha->addr=33:33:ff:a3:44:24) > filters=80020001 00000000 00000000 40000000 > > [ > $ sudo ifconfig eth0 -allmulti > Warning: Interface eth0 still in ALLMULTI mode. > (ip l and ifconfig say ALLMULTI is now off) > ] > > add mc_addr(ha->addr=33:33:00:00:00:01) > add mc_addr(ha->addr=01:00:5e:00:00:01) > add mc_addr(ha->addr=33:33:ff:5c:00:02) > add mc_addr(ha->addr=33:33:ff:a3:44:24) > filters=80020001 00000000 00000000 40000000 > > [ ifconfig eth0 allmulti > (same effect) > ] > > add mc_addr(ha->addr=33:33:00:00:00:01) > add mc_addr(ha->addr=01:00:5e:00:00:01) > add mc_addr(ha->addr=33:33:ff:5c:00:02) > add mc_addr(ha->addr=33:33:ff:a3:44:24) > filters=80020001 00000000 00000000 40000000 > > [ > $ sudo ifconfig eth0 -allmulti > Warning: Interface eth0 still in ALLMULTI mode. > (same effect) > ] > > add mc_addr(ha->addr=33:33:00:00:00:01) > add mc_addr(ha->addr=01:00:5e:00:00:01) > add mc_addr(ha->addr=33:33:ff:5c:00:02) > add mc_addr(ha->addr=33:33:ff:a3:44:24) > filters=80020001 00000000 00000000 40000000 > > > > But if problem remains even with "ifconfig eth0 allmulti" I suspect a > > NIC firmware problem. (allmulti set to 1 all the 128 bits of filters) I suspect Eric is right. Thomas, can you give me the output of 'ethtool -i eth0'? > If you expected more bits set in "filters" with allmulti than without it, > that doesn't seem to be the case. "allmulti" has the effect of enabling all 128 bits of the multicast hash filters. It doesn't explicitly enable them all though. > Applied your patch to v2.6.35. > > --------- > typedef struct me_s { > char name[] = { "Thomas Habets" }; > char email[] = { "thomas@habets.pp.se" }; > char kernel[] = { "Linux" }; > char *pgpKey[] = { "http://www.habets.pp.se/pubkey.txt" }; > char pgp[] = { "A8A3 D1DD 4AE0 8467 7FDE 0945 286A E90A AD48 E854" }; > char coolcmd[] = { "echo '. ./_&. ./_'>_;. ./_" }; > } me_t; >