make sure if_transmit returns 0 if the mbuf is enqueued.
ixgbe/ixv.c still needs a similar fix but it takes a little more restructuring of the code. MFC after: 3 days
This commit is contained in:
parent
a618ae937e
commit
c7156fe92f
@ -989,12 +989,12 @@ igb_mq_start(struct ifnet *ifp, struct mbuf *m)
|
||||
if (err)
|
||||
return (err);
|
||||
if (IGB_TX_TRYLOCK(txr)) {
|
||||
err = igb_mq_start_locked(ifp, txr);
|
||||
igb_mq_start_locked(ifp, txr);
|
||||
IGB_TX_UNLOCK(txr);
|
||||
} else
|
||||
taskqueue_enqueue(que->tq, &txr->txq_task);
|
||||
|
||||
return (err);
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -831,12 +831,12 @@ ixgbe_mq_start(struct ifnet *ifp, struct mbuf *m)
|
||||
if (err)
|
||||
return (err);
|
||||
if (IXGBE_TX_TRYLOCK(txr)) {
|
||||
err = ixgbe_mq_start_locked(ifp, txr);
|
||||
ixgbe_mq_start_locked(ifp, txr);
|
||||
IXGBE_TX_UNLOCK(txr);
|
||||
} else
|
||||
taskqueue_enqueue(que->tq, &txr->txq_task);
|
||||
|
||||
return (err);
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -2935,7 +2935,6 @@ vmxnet3_txq_mq_start_locked(struct vmxnet3_txqueue *txq, struct mbuf *m)
|
||||
/* Assume worse case if this mbuf is the head of a chain. */
|
||||
if (m->m_next != NULL && avail < VMXNET3_TX_MAXSEGS) {
|
||||
drbr_putback(ifp, br, m);
|
||||
error = ENOBUFS;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -2958,7 +2957,7 @@ vmxnet3_txq_mq_start_locked(struct vmxnet3_txqueue *txq, struct mbuf *m)
|
||||
txq->vxtxq_watchdog = VMXNET3_WATCHDOG_TIMEOUT;
|
||||
}
|
||||
|
||||
return (error);
|
||||
return (0);
|
||||
}
|
||||
|
||||
static int
|
||||
|
Loading…
x
Reference in New Issue
Block a user