On Fri, 2007-05-25 at 20:13 +0100, Steve Hill wrote:
> On Fri, 25 May 2007, Johannes Berg wrote:
>
> > I'd like to have packet dumps of the master interface, a monitor
> > interface and the actual interface that has the problem simultaneously,
>
> http://www.nexusuk.org/~steve/iwl3945-ipv6/ap.pcap
> http://www.nexusuk.org/~steve/iwl3945-ipv6/wlan0.pcap
>
> The set up I have is:
>
> Internet=====Router=====AccessPoint-----Notebook
>
> (===== is 100Mbps ethernet, ----- is 802.11g)
>
> The router is doing IPv6 router advertisements, the notebook is supposed
> to be using them to configure the IPv6 address on it's wlan0 interface (an
> iwl3945). The access point is a LinkSys WRT54GL running OpenWRT
> WhiteRussian and is just bridging the wired network to the wireless
> network.
>
> So, ap.pcap is a dump from the 802.11 interface on the access point.
> wlan0.pcap is a dump from the 802.11 interface on the notebook.
>
> The sequence of events is basically:
> 1. Router sends advertisement
> 2. Notebook receives advertisement
> 3. Notebook picks an IP address and sends a neighbor solicitation to see
> if anyone else is already using that address.
>
> (these 3 steps happen twice in these network dumps).
>
> The dump taken on the access point clearly shows that the notebook sends
> just one neighbor solicitation for each router advertisement it receives.
> However, the dump taken on the notebook shows two neighbor solicitation
> messages for each router advertisement.
>
> Seems reasonably conclusive - it looks like the notebook is sending a
> neighbor solicitation and is then receiving it's own data again.
Seems like a reasonable conclusion. Does this 'fix' it?
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
index d8b3645..289375c 100644
--- a/net/ipv6/ndisc.c
+++ b/net/ipv6/ndisc.c
@@ -716,7 +716,7 @@ static void ndisc_recv_ns(struct sk_buff *skb)
if (ifp->flags & (IFA_F_TENTATIVE|IFA_F_OPTIMISTIC)) {
if (dad) {
- if (dev->type == ARPHRD_IEEE802_TR) {
+ if (1) {
const unsigned char *sadr;
sadr = skb_mac_header(skb);
if (((sadr[8] ^ dev->dev_addr[0]) &
0x7f) == 0 &&
--
dwmw2
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev