Alter the mq_start routine to do a TRYLOCK and call to the locked routine
rather than just queueing. The former code was an attempt at getting UDP performance up, but there have been customer reports of problems with it, so the ixgbe approach seems the best solution for now.
This commit is contained in:
parent
c68534f1d5
commit
83cef45266
@ -972,7 +972,13 @@ igb_mq_start(struct ifnet *ifp, struct mbuf *m)
|
||||
que = &adapter->queues[i];
|
||||
|
||||
err = drbr_enqueue(ifp, txr->br, m);
|
||||
taskqueue_enqueue(que->tq, &txr->txq_task);
|
||||
if (err)
|
||||
return (err);
|
||||
if (IGB_TX_TRYLOCK(txr)) {
|
||||
err = igb_mq_start_locked(ifp, txr);
|
||||
IGB_TX_UNLOCK(txr);
|
||||
} else
|
||||
taskqueue_enqueue(que->tq, &txr->txq_task);
|
||||
|
||||
return (err);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user