Roadmap for ifnet(9) for FreeBSD 11
Anuranjan Shukla
anshukla at juniper.net
Mon Jun 2 22:50:36 UTC 2014
Hi John,
The first email in this thread from Marcel has the schedule:
On 5/28/14, 9:34 AM, "Marcel Moolenaar" <marcel at xcllnt.net> wrote:
<‹snip‹>
Schedule:
late May 2014 Juniper adds accessor methods. Access via
void *, that inside if.c is re-casted to
(struct ifnet *). This ³ugly² moment is
required to keep unconverted drivers
compilable and will go away shortly after.
1st week June 2014 Juniper commits few converted drivers.
June - July All drivers are being converted. Gleb
volunteers, but this should be done by as
many hands as possible.
August 2014 '#define if_t void *' is removed.
'typedef if_t struct ifnet *' is added.
actual struct ifnet is hidden.
2014/2015 Better APIs developed and improved, actual
ifnet representation becomes variable
sized. New networking stack improvements
are already unblocked at this moment.
On 6/2/14, 3:38 PM, "John-Mark Gurney" <jmg at funkthat.com> wrote:
>Gleb Smirnoff wrote this message on Thu, May 29, 2014 at 08:04 +0400:
>> On Wed, May 28, 2014 at 08:48:11PM -0700, Rui Paulo wrote:
>> R> On May 28, 2014, at 9:34, Marcel Moolenaar <marcel at xcllnt.net> wrote:
>> R>
>> R> > All,
>> R> >
>> R> > The ifnet structure represents a network interface. Right now it
>> R> > is known to all NIC drivers as well as to all protocols. This
>> R> > means that whenever we change the structure, we need at minimum
>> R> > recompile all drivers, but usually also change them. This severely
>> R> > slow downs the development in this area and also makes it hard, if
>> R> > not, impossible to merge things back to stable branches.
>> R> >
>> R> > There were at least 3 efforts on fixing this:
>> R> >
>> R> > 1) Juniper???s JUNOS is a FreeBSD based operating system that has
>> R> > its own (alternative) network stack, but that leverages the
>> R> > network drivers from FreeBSD. Juniper mechanically changed all
>> R> > ifnet dereferences to to accessor methods. This could have
>> R> > been incorporated as early as 2011, but lacked good follow
>> R> > through. Marcel Moolenaar was prime contact for this.
>> R> >
>> R> > 2) Andre Oppermann was sponsored in 2013 by the FreeBSD
>> R> > Foundation to make ifnet(9) opaque. This is not complete as of
>> R> > the time of this writing.
>> R> >
>> R> > 3) Gleb Smirnoff also planned to work on opaque ifnet(9), but
>> R> > that always has been delayed due to 1) and 2).
>> R>
>> R> This is indeed needed, but it would be nice to understand what would
>>happen if the community has comments about your patch. Will Juniper be
>>able to integrate back those comments? For example, I think the type
>>"if_t" should be "ifnet_t". Another comment I have is: why do you have
>>to cast if_t to (struct ifnet *) in all the accessor methods? It would
>>be better to create a private header typedef'ing if_t to struct ifnet,
>>avoiding the copy & paste casting.
>>
>> Because for now patch supports compiling unconverted drivers. This
>>requires
>> to pass 'void *' as argument. When all drivers are converted, this will
>>be
>> removed. In if_var.h we would have:
>>
>> struct ifnet;
>> typedef struct ifnet * if_t;
>>
>> All casts to (struct ifnet *) will go away.
>
>When? The schedule did not have a time frame on when this will happen..
>Will it be this year? Next year? Next decade?
>
>--
> John-Mark Gurney Voice: +1 415 225 5579
>
> "All that I will do, has been done, All that I have, has not."
More information about the freebsd-arch
mailing list