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