Removing queue length check in ip_output (was Re: buf_ring in HEAD is racy)

Adrian Chadd adrian at freebsd.org
Thu Dec 19 23:54:35 UTC 2013


Its checking the ifsnd queue. That just doesn't do anything sane or
consistent with drivers that implement if transmit let alone multiqueue
drivers.

Adrian
On Dec 19, 2013 2:03 PM, "Navdeep Parhar" <np at freebsd.org> wrote:

> On 12/19/13 11:59, Adrian Chadd wrote:
> > How's this?
> >
> > Index: sys/netinet/ip_output.c
> > ===================================================================
> > --- sys/netinet/ip_output.c     (revision 259474)
> > +++ sys/netinet/ip_output.c     (working copy)
> > @@ -123,7 +123,9 @@
> >         struct mbuf *m0;
> >         int hlen = sizeof (struct ip);
> >         int mtu;
> > +#if 0
> >         int n;  /* scratchpad */
> > +#endif
> >         int error = 0;
> >         struct sockaddr_in *dst;
> >         const struct sockaddr_in *gw;
> > @@ -431,6 +433,25 @@
> >         }
> >
> >         /*
> > +        * Both in the SMP world, pre-emption world if_transmit() world,
> > +        * the following code doesn't really function as intended any
> further.
>
> Doesn't make sense in the tx multiqueue world either.  (which queue is
> this piece of code checking?)
>
> Navdeep
>


More information about the freebsd-net mailing list