All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Dumazet <eric.dumazet@gmail.com>
To: Thomas Habets <thomas@habets.pp.se>
Cc: linux-kernel@vger.kernel.org, netdev <netdev@vger.kernel.org>,
	Matt Carlson <mcarlson@broadcom.com>,
	Michael Chan <mchan@broadcom.com>
Subject: Re: BUG: IPv6 stops working after a while, needs ip ne del command to reset
Date: Tue, 17 Aug 2010 16:34:19 +0200	[thread overview]
Message-ID: <1282055659.2448.58.camel@edumazet-laptop> (raw)
In-Reply-To: <alpine.DEB.1.10.1008171547090.21857@red.crap.retrofitta.se>

Le mardi 17 août 2010 à 16:09 +0200, Thomas Habets a écrit :
> On Tue, 17 Aug 2010, Eric Dumazet wrote:
> > Can you try : "ifconfig eth0 allmulti"
> 
> That didn't help. "ifconfig eth0" and "ip l" shows that allmulti is now 
> set, but no other difference. Can't ping router, and router gets no answer 
> when pinging ff02::1. No message in dmesg saying allmulti isn't supported 
> or anything like that either.
> 
> > If you let a "tcpdump" running with -p option, do you receive the packet
> > sent to ethernet dest 33:33:ff:5c:00:02 ?
> 
> No. Commented tcpdump output below.
> 
> > If you can see it with tcpdump, then NIC gave the frame to us.
> 
> Seems to be invisible unless I or tcpdump set promisc mode. But when 
> promisc mode is set I can immediately see the 33:33:ff:5c:00:02 packet 
> (ND solicitation) and I see that Linux is answering it.
> 
> Here's a tcpdump from the Linux host. It's slightliy trimmed to fit in
> an email, but the full dump is at http://www.habets.pp.se/tmp/ipv6.pcap
> 
> $ sudo tcpdump -pnli eth0 -s0 -w ipv6.pcap ip6
> [...]
> 
> $ tcpdump -nlr ipv6.pcap
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request
> 2a00:800:752:1::5c:1 > 2a00:800:752:1::5c:2: ICMP6, echo reply
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request
> 2a00:800:752:1::5c:1 > 2a00:800:752:1::5c:2: ICMP6, echo reply
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request
> 2a00:800:752:1::5c:1 > 2a00:800:752:1::5c:2: ICMP6, echo reply
> 
> [ here I run "clear ipv6 neighbors" on the Cisco router ]
> 
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request
> [ ... more repeated echo requests, no reply ... ]
> 
> [ here i run "ip l set promisc on eth0" ]
> 
> 2a00:800:752:1::5c:1 > ff02::1:ff5c:2: ICMP6, neighbor solicitation, who 
> has 2a00:800:752:1::5c:2
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6,neighbor advertisement,
> tgt is 2a00:800:752:1::5c:2
> 2a00:800:752:1::5c:1 > 2a00:800:752:1::5c:2: ICMP6, echo reply
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request
> 2a00:800:752:1::5c:1 > 2a00:800:752:1::5c:2: ICMP6, echo reply
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request
> 2a00:800:752:1::5c:1 > 2a00:800:752:1::5c:2: ICMP6, echo reply
> 
> [ here I run "clear ipv6 neigbors" again ]
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request
> 2a00:800:752:1::5c:2 > 2a00:800:752:1::5c:1: ICMP6, echo request

I suspect its time to ask broadcom guys some help :)

I have same adapter here (Hewlett-Packard Company NC326m PCIe Dual Port
Adapter) and could not reproduce the problem.

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


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)

diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c
index bc3af78..34510f5 100644
--- a/drivers/net/tg3.c
+++ b/drivers/net/tg3.c
@@ -9317,12 +9317,14 @@ static void __tg3_set_rx_mode(struct net_device *dev)
 		u32 crc;
 
 		netdev_for_each_mc_addr(ha, dev) {
+			pr_err("add mc_addr(ha->addr=%pM)\n", ha->addr);
 			crc = calc_crc(ha->addr, ETH_ALEN);
 			bit = ~crc & 0x7f;
 			regidx = (bit & 0x60) >> 5;
 			bit &= 0x1f;
 			mc_filter[regidx] |= (1 << bit);
 		}
+		pr_err("filters=%08X %08x %08x %08x\n", mc_filter[0], mc_filter[1], mc_filter[2], mc_filter[3]);
 
 		tw32(MAC_HASH_REG_0, mc_filter[0]);
 		tw32(MAC_HASH_REG_1, mc_filter[1]);



  reply	other threads:[~2010-08-17 14:34 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-13 17:55 BUG: IPv6 stops working after a while, needs ip ne del command to reset Thomas Habets
2010-08-13 21:34 ` David Miller
2010-08-16 10:19 ` Eric Dumazet
2010-08-16 10:59   ` Thomas Habets
2010-08-17  5:35     ` Thomas Habets
2010-08-17  6:00       ` Eric Dumazet
2010-08-17 11:08         ` Thomas Habets
2010-08-17 13:15           ` Eric Dumazet
2010-08-17 14:09             ` Thomas Habets
2010-08-17 14:34               ` Eric Dumazet [this message]
2010-08-17 15:58                 ` Thomas Habets
2010-08-17 17:11                   ` Matt Carlson
2010-08-17 17:29                     ` Thomas Habets
2010-08-17 18:31                       ` Matt Carlson
2010-08-17 18:52                         ` Thomas Habets
2010-08-18  1:23                           ` Matt Carlson
2010-08-18  7:02                             ` Thomas Habets
2010-09-01  9:21                               ` Thomas Habets
2010-09-01 13:19                                 ` Eric Dumazet
2010-09-01 14:40                                 ` Brian Haley
2010-09-14 19:56                                   ` Thomas Habets
2010-09-15 17:37                                     ` Brian Haley
2010-08-17 17:13                   ` Eric Dumazet
2010-08-17 16:14               ` Thomas Habets
  -- strict thread matches above, loose matches on Subject: below --
2010-08-06  8:25 Thomas Habets

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1282055659.2448.58.camel@edumazet-laptop \
    --to=eric.dumazet@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mcarlson@broadcom.com \
    --cc=mchan@broadcom.com \
    --cc=netdev@vger.kernel.org \
    --cc=thomas@habets.pp.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.