1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-02 12:20:51 +00:00

make sure ifp->if_transmit returns 0 if a buffer is enqueued.

A similar fix should be applied to vmxnet, ixgbe, igb, i40e.
(some of them previously reported by Michael Tuexen)

Drivers using if_transmit are correct, and so are most of the
other drivers that reassing if_transmit.

Among other things, this bug causes panics when using netmap emulation
on top of generic drivers.

Approved by:	bryanv
MFC after:	3 days
This commit is contained in:
Luigi Rizzo 2014-06-04 16:57:05 +00:00
parent 997a303f17
commit c26e5fc2ed
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=267065

View File

@ -2262,7 +2262,6 @@ vtnet_txq_mq_start_locked(struct vtnet_txq *txq, struct mbuf *m)
while ((m = drbr_peek(ifp, br)) != NULL) {
if (virtqueue_full(vq)) {
drbr_putback(ifp, br, m);
error = ENOBUFS;
break;
}
@ -2285,7 +2284,7 @@ vtnet_txq_mq_start_locked(struct vtnet_txq *txq, struct mbuf *m)
txq->vtntx_watchdog = VTNET_TX_TIMEOUT;
}
return (error);
return (0);
}
static int