Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 01 Mar 2014 19:02:01 -0500
From:      Curtis Villamizar <curtis@ipv6.occnc.com>
To:        Adrian Chadd <adrian@freebsd.org>
Cc:        "freebsd-wireless@freebsd.org" <freebsd-wireless@freebsd.org>, curtis@ipv6.occnc.com
Subject:   Re: iwn rtsol on stable/10 with merge from head
Message-ID:  <201403020002.s22021xF031216@maildrop2.v6ds.occnc.com>
In-Reply-To: Your message of "Sat, 01 Mar 2014 09:37:57 -0800." <CAJ-VmokW4qXOP__JKOhC68AGvc1fxk6ihhUqGHFCj67NPsj80Q@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help

In message <CAJ-VmokW4qXOP__JKOhC68AGvc1fxk6ihhUqGHFCj67NPsj80Q@mail.gmail.com>
Adrian Chadd writes:
 
> Hi,
>  
> Please grab and try 'iwnstats' from head - tools/tools/iwn/iwnstats -
> it'll be interesting to see what stats are logged when you're in busy
> air.

Typical WG sessions have 50-200 people.  The technical plenary (Monday
evening) and the administrative plenary (Thursday evening) typically
have around 1,000.  That's mostly geeks with wifi in their phones plus
their laptops.  I'll try to get stats in WG sessions and both plenaries.

> I have no idea about rtsold, sorry. :(

I'm not sure the cause but the cure has something to do with this:

A little RTFC on rtsold/if.c reveals that ND6_IFF_ACCEPT_RTADV is not
set in nd.ndi.flags which comes from the lines:

  if (ioctl(s, SIOCGIFINFO_IN6, (caddr_t)&nd) < 0) {
  [...]
  }
  if (!(nd.ndi.flags & ND6_IFF_ACCEPT_RTADV)) {

A man ifconfig reveals:

     accept_rtadv
             Set a flag to enable accepting ICMPv6 Router
             Advertisement messages.  The sysctl(8) variable
             net.inet6.ip6.accept_rtadv controls whether this flag is
             set by default or not.

So the workaround is to add net.inet6.ip6.accept_rtadv=1 to
/etc/sysctl.conf.  A one time test using "ifconfig wlan0 inet6
accept_rtadv" and restarting rtsold also confirms this is the
problem.

The mystery is really why this doesn't affect em0 and run0 on the same
machine.  I'll have to check and make sure they don't all behave the
same with the same kernel.  None of these driveres have the string
rtadv.  In sys/dev "grep -il rtadv */*.[hc]" yields nothing.  The
string ND6_IFF_ACCEPT_RTADV only appears in sys files in the netinet6
directory.  Reading the code, iwn seems to do what is right with
net.inet6.ip6.accept_rtadv clear and the others (em0, run0, plus msk0
on another machine, em0 on other machines) have ND6_IFF_ACCEPT_RTADV
set even though net.inet6.ip6.accept_rtadv is not set.

The entire src/sys tree is from head but the rest of src is stable/10.

> -a

I'll try to get the stats next week but it looks like I'll need to
build the src distribution from head to get that done, pulling just
iwnstats from head.  Merging tools/tools/iwn/iwnstats into the
stable/10 tree didn't compile.  Not a big deal but pressed for time
between now and then.

Curtis


> On 1 March 2014 09:11, Curtis Villamizar <curtis@ipv6.occnc.com> wrote:
> >
> > rtsol is not working for my kernel build with iwn but everything else
> > works.
> >
> > I'm running a very recent stable/10 (kernel is 262621) upgraded to
> > pick up iwn stuff from head:
> >
> >   svn merge \
> >     https://svn0.us-east.freebsd.org/base/head/sys/dev/iwn \
> >     dev/iwn
> >   svn merge \
> >     https://svn0.us-east.freebsd.org/base/head/sys/modules/iwnfw \
> >     modules/iwnfw
> >   svn merge
> >     https://svn0.us-east.freebsd.org/base/head/sys/contrib/dev/iwn \
> >     contrib/dev/iwn
> >
> > That was to get the Centrino 2000 support from the head branch.
> >
> > That works.
> >
> >   iwn0: <Intel(R) Centrino(R) Wireless-N 2200 BGN>
> >      mem 0xf1c00000-0xf1c01fff irq 17 at device 0.0 on pci3
> >
> > Everything works as far as I can tell except rtsol.
> >
> >   # rtsold -f -d -D wlan0
> >   checking if wlan0 is ready...
> >   wlan0 does not accept Router Advertisement.
> >   set timer for wlan0 to 1s
> >   New timer is 1s
> >   timer expiration on wlan0, state = 3
> >   checking if wlan0 is ready...
> >   wlan0 does not accept Router Advertisement.
> >   set timer for wlan0 to 1s
> >   New timer is 1s
> >   timer expiration on wlan0, state = 3
> >   checking if wlan0 is ready...
> >   wlan0 does not accept Router Advertisement.
> >   set timer for wlan0 to 1s
> >   New timer is 1s
> >   [ ... etc ... ]
> >
> > If I use rtsold -a it sees wlan0 as not ready and doesn't try to use
> > it but then it receives occasional RA anyway but ignores them because
> > it sees wlan0 as not ready.
> >
> > If I ifconfig inet6 ... alias I get an IPv6 address configured and
> > manually add a default route, then everything is fine.  This
> > workaround is OK for home but is not practical for roaming about (like
> > going to IETF) if I want IPv6 to work.
> >
> > Does anyone know why rtsold isn't seeing wlan0 as ready?  Is there any
> > info I could provide?  How likely is it that will a kernel built from
> > head this would just go away and rtsold would just work.
> >
> > btw- headed for IETF so I'll have a chance to test iwn in a very busy
> > environment and would be willing to help if anyone wants to do that
> > sort of debugging.  [I have a usb wlan (run0) as a fallback]
> >
> > Curtis



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201403020002.s22021xF031216>