Date: Wed, 16 Dec 2015 09:43:06 -0800 From: Adrian Chadd <adrian.chadd@gmail.com> To: Steven Hartland <steven@multiplay.co.uk> Cc: Kristof Provost <kp@freebsd.org>, "src-committers@freebsd.org" <src-committers@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, "svn-src-head@freebsd.org" <svn-src-head@freebsd.org> Subject: Re: svn commit: r292275 - in head/sys: net netinet netinet6 Message-ID: <CAJ-VmokA9bQFyZejwh8qp3irpQVumPK34_uaobzLtiJkR67C_g@mail.gmail.com> In-Reply-To: <56715486.1000901@freebsd.org> References: <201512151602.tBFG2BTX089543@repo.freebsd.org> <8CEE530E-C08D-4BD1-B908-8EBBCEEAD1CD@FreeBSD.org> <1016D8B2-F850-44B9-B773-632BD9ABC95D@FreeBSD.org> <56715486.1000901@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
hi, yeah, switchports at the moment are pure L2 interfaces, they don't have addressing. This may eventually change if etherswitch grows slave switch port support. But I didn't think it was creating ifnet interfaces, only miibusses and mii's for link status. -a On 16 December 2015 at 04:09, Steven Hartland <steven@multiplay.co.uk> wrot= e: > On 15/12/2015 22:58, Kristof Provost wrote: >>> >>> On 15 Dec 2015, at 23:15, Kristof Provost <kp@FreeBSD.org> wrote: >>> Based on the arp_announce() in the backtrace this commit looks like a >>> possible cause. >> >> I see this in arp_announce(): >> KP: arp_announce() ifp->if_addr =3D 0 >> >> So that explains why we panic in 'lladdr =3D IF_LLADDR(ifp);=E2=80=99. >> >> I=E2=80=99ve done a very quick hack: >> diff --git a/sys/netinet/if_ether.c b/sys/netinet/if_ether.c >> index 2214542..9b25356 100644 >> --- a/sys/netinet/if_ether.c >> +++ b/sys/netinet/if_ether.c >> @@ -1246,9 +1246,15 @@ arp_announce(struct ifnet *ifp) >> } >> IF_ADDR_RUNLOCK(ifp); >> >> - lladdr =3D IF_LLADDR(ifp); >> - for (i =3D 0; i < cnt; i++) { >> - arp_announce_addr(ifp, head + i, lladdr); >> + printf("KP: %s() ifp =3D %p\n", __FUNCTION__, ifp); >> + printf("KP: %s() ifp->if_addr =3D %p\n", __FUNCTION__, >> ifp->if_addr); >> + >> + if (ifp->if_addr) { >> + printf("KP: %s() ifp->if_addr->ifa_addr =3D %p\n", >> __FUNCTION__, ifp->if_addr->ifa_addr); >> + lladdr =3D IF_LLADDR(ifp); >> + for (i =3D 0; i < cnt; i++) { >> + arp_announce_addr(ifp, head + i, lladdr); >> + } >> } >> free(head, M_TEMP); >> } >> >> With this patch the device boots. I haven=E2=80=99t been able to verify = if >> everything works because of a different issue ("Shared object >> "lib80211.so.1" not found, required by =E2=80=9Cifconfig=E2=80=9D=E2=80= =9D, no doubt just a small >> problem with the freebsd-wifi-build scripts). >> >> Regards, >> Kristof > > Thanks for all the info Kristof appreciated. > > It seems really odd that you're getting a link up event for an interface > that doesn't have a LLA, so I'm wondering if this is the result of an iss= ue > elsewhere which this change brings to light, its as though if_attach hasn= 't > been called. > > Looking at your trace the device seems to be an arswitch. If it never > allocates a LLA to each port then maybe the more correct fix would be to > ensure it IFF_NOARP in if_flags? > > I've attached a patch which should fix if you could test that would be > great, but I'd still like to understand if there is something wrong > elsewhere before I do. > > Regards > Steve > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmokA9bQFyZejwh8qp3irpQVumPK34_uaobzLtiJkR67C_g>