Gleb, Here is a patch based on my latest igb internal code, I had not yet committed this as I was not completely confident about the start/queueing changes, I would love to have a wider testing base, so anyone that wishes to test this... Its against HEAD.
It does a few things: change mq_start to ALWAYS queue, hence mq_start_locked no longer takes an mbuf pointer arg. Second, it gets rid of OACTIVE as far as the queues go, its still used only in a device wide up/down sense. Last, there is a flow control display added, this follows what our linux driver does, it gives you the current flow control state when a link up event happens. I was asked to do this by my validation group, and it seemed kinda handy... Let me know what you think, Jack On Tue, Nov 20, 2012 at 10:26 PM, Gleb Smirnoff <gleb...@freebsd.org> wrote: > Jack, > > On Tue, Nov 20, 2012 at 09:19:54AM -0800, Jack Vogel wrote: > J> > I'd suggest the following code: > J> > > J> > if (m) > J> > drbr_enqueue(ifp, txr->br, m); > J> > err = igb_mq_start_locked(ifp, txr, NULL); > J> > > J> > Which eventually leads us to all invocations of igb_mq_start_locked() > J> > called > J> > with third argument as NULL. This allows us to simplify this function. > J> > > J> > Patch for review attached. > J> > > J> > > J> Yes Gleb, I already have code in my internal tree which simply removes > an > J> mbuf > J> pointer form the start_locked call and ALWAYS does a dequeue, start > J> similarly > J> will always enqueue. I just have been busy with ixgbe for a bit and have > J> not gotten > J> it committed yet. > > Since ixgbe work is performance tuning and this patch closes a kernel > crash, > I'd ask to preempt the ixgbe job with this patch. :) > > Or you can approve my patch and I will check it in. > > -- > Totus tuus, Glebius. >
if_igb.patch
Description: Binary data
_______________________________________________ freebsd-net@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"