diff options
author | luigi <luigi@FreeBSD.org> | 2014-06-09 15:09:05 +0000 |
---|---|---|
committer | luigi <luigi@FreeBSD.org> | 2014-06-09 15:09:05 +0000 |
commit | 63bea6a96753d317493e55c47f357c8327ed75ed (patch) | |
tree | 38d0490d94328cb41d3ce793160bc5a02a939658 /sys/dev/virtio/network | |
parent | 5fc12f2e25f4654073d961305e90bb5ec2e4c84b (diff) | |
download | FreeBSD-src-63bea6a96753d317493e55c47f357c8327ed75ed.zip FreeBSD-src-63bea6a96753d317493e55c47f357c8327ed75ed.tar.gz |
MFC svn 267065 and 267187
make sure ifp->if_transmit returns 0 if a buffer is enqueued.
This should also be merged to stable/9.
After this fix, drivers still known to have this bug are igxbe/ixv
and i40e.
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.
Diffstat (limited to 'sys/dev/virtio/network')
-rw-r--r-- | sys/dev/virtio/network/if_vtnet.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/sys/dev/virtio/network/if_vtnet.c b/sys/dev/virtio/network/if_vtnet.c index 055a2e3..9e1ad26 100644 --- a/sys/dev/virtio/network/if_vtnet.c +++ b/sys/dev/virtio/network/if_vtnet.c @@ -2260,7 +2260,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; } @@ -2283,7 +2282,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 |