Check for a full virtqueue in the multiqueue transmit path

With most hosts, we'll negotiate indirect descriptors, so all we
need is one available descriptor to transmit a frame.
This commit is contained in:
Bryan Venteicher 2014-01-25 19:58:53 +00:00
parent dd6f83a00f
commit 9ef6342f9e

View File

@ -2243,6 +2243,12 @@ vtnet_txq_mq_start_locked(struct vtnet_txq *txq, struct mbuf *m)
vtnet_txq_eof(txq);
while ((m = drbr_peek(ifp, br)) != NULL) {
if (virtqueue_full(vq)) {
drbr_putback(ifp, br, m);
error = ENOBUFS;
break;
}
error = vtnet_txq_encap(txq, &m);
if (error) {
if (m != NULL)