Author: bryanv
Date: Sat Jan 25 19:58:53 2014
New Revision: 261168
URL: http://svnweb.freebsd.org/changeset/base/261168

Log:
  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.

Modified:
  head/sys/dev/virtio/network/if_vtnet.c

Modified: head/sys/dev/virtio/network/if_vtnet.c
==============================================================================
--- head/sys/dev/virtio/network/if_vtnet.c      Sat Jan 25 19:57:30 2014        
(r261167)
+++ head/sys/dev/virtio/network/if_vtnet.c      Sat Jan 25 19:58:53 2014        
(r261168)
@@ -2243,6 +2243,12 @@ vtnet_txq_mq_start_locked(struct vtnet_t
        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)
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to