Date: Tue, 23 Aug 2005 11:33:10 -0700 From: Maksim Yevmenkin <maksim.yevmenkin@gmail.com> To: Brooks Davis <brooks@one-eyed-alien.net> Cc: "Evgueni V. Gavrilov" <aquatique@rusunix.org>, freebsd-current@freebsd.org, glebius@freebsd.org, freebsd-net@freebsd.org Subject: Re: [Fwd: assigning an address to ng_fec(4) iface causes panic] Message-ID: <bb4a86c705082311337770151f@mail.gmail.com> In-Reply-To: <20050823173622.GB6926@odin.ac.hmc.edu> References: <430B57A7.1050402@savvis.net> <bb4a86c70508231009131c50f2@mail.gmail.com> <20050823173622.GB6926@odin.ac.hmc.edu>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --]
On 8/23/05, Brooks Davis <brooks@one-eyed-alien.net> wrote:
> On Tue, Aug 23, 2005 at 10:09:06AM -0700, Maksim Yevmenkin wrote:
> > Hello,
> >
> > please try the attached patch.
> >
> > > >Description:
> > > assigning an address to ng_fec(4) iface causes panic
> > > during dumping to dumpdev another panic occurs preventing to identify the source of the first panic and having the crash dump
> > >
> > > ng_iface creation sequence:
> > > mkpeer fec dummy fec
> > > msg fec0: add_iface "em0"
> > > msg fec0: add_iface "em1"
> > > msg fec0: set_mode_mac
> > >
>
> > --- ng_fec.c.orig Mon Aug 22 11:42:51 2005
> > +++ ng_fec.c Tue Aug 23 10:05:23 2005
> > @@ -544,8 +544,8 @@
> > struct ifnet *ifp, *bifp;
> > struct ng_fec_portlist *p;
> >
> > - ifp = arg;
> > - priv = ifp->if_softc;
> > + priv = arg;
> > + ifp = priv->ifp;
> > b = &priv->fec_bundle;
> >
> > if (b->fec_ifcnt == 1 || b->fec_ifcnt == 3) {
>
> This isn't quite sufficent. You also should change the ng_fec_init(ifp)
> call on line 718 to ng_fec_init(ifp->if_softc). If that work's I'll
> commit it.
oops... i missed this. thanks for catching this! i do not have
hardware to test it :) i have attached updated path. if anyone could
please test it and confirm that it works then feel free to commit it
(or let me know and i can commit it myself :)
> I've got to say this calling convention is really stupid. I'm
> really tempted to change ifp->if_init() to take a struct ifnet * even
> though it means an API change and a tree sweep.
sounds good to me.
thanks,
max
[-- Attachment #2 --]
--- ng_fec.c.orig Mon Aug 22 11:42:51 2005
+++ ng_fec.c Tue Aug 23 11:28:36 2005
@@ -544,8 +544,8 @@
struct ifnet *ifp, *bifp;
struct ng_fec_portlist *p;
- ifp = arg;
- priv = ifp->if_softc;
+ priv = arg;
+ ifp = priv->ifp;
b = &priv->fec_bundle;
if (b->fec_ifcnt == 1 || b->fec_ifcnt == 3) {
@@ -715,7 +715,7 @@
}
ifp->if_drv_flags &= ~(IFF_DRV_OACTIVE);
ifp->if_drv_flags |= IFF_DRV_RUNNING;
- ng_fec_init(ifp);
+ ng_fec_init(priv);
}
/*
* Bubble down changes in promisc mode to
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bb4a86c705082311337770151f>
