Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 Jul 2016 07:42:31 GMT
From:      vincenzo@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r305706 - soc2016/vincenzo/head/sys/dev/netmap
Message-ID:  <201607040742.u647gV3J048973@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: vincenzo
Date: Mon Jul  4 07:42:30 2016
New Revision: 305706
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=305706

Log:
   freebsd: ptnet_transmit: move doublecheck code in the for loop

Modified:
  soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c

Modified: soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c
==============================================================================
--- soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c	Mon Jul  4 07:42:20 2016	(r305705)
+++ soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c	Mon Jul  4 07:42:30 2016	(r305706)
@@ -1228,9 +1228,22 @@
 			ptnet_sync_tail(ptring, kring);
 
 			if (head == ring->tail) {
-				/* Still no slots available, let's stop and
-				 * wait for interrupts. */
-				break;
+				/* Still no slots available. Reactivate the
+				 * interrupts so that we can be notified
+				 * when some free slots are made available by
+				 * the host. */
+				ptring->guest_need_kick = 1;
+
+				/* Double-check. */
+				ptnet_sync_tail(ptring, kring);
+				if (likely(head == ring->tail)) {
+					break;
+				}
+
+				RD(1, "Found more slots by doublecheck");
+				/* More slots were freed before reactivating
+				 * the interrupts. */
+				ptring->guest_need_kick = 0;
 			}
 		}
 
@@ -1304,24 +1317,6 @@
 		ptnet_ring_update(pq, kring, head);
 	}
 
-	if (head == ring->tail) {
-		/* Reactivate the interrupts so that we can be notified
-		 * when some free slots are made available by the host. */
-		ptring->guest_need_kick = 1;
-
-                /* Double-check. */
-		ptnet_sync_tail(ptring, kring);
-		if (unlikely(head != ring->tail)) {
-			RD(1, "Found more slots by doublecheck");
-			/* More slots were freed before reactivating
-			 * the interrupts. */
-			ptring->guest_need_kick = 0;
-			if (!drbr_empty(ifp, pq->bufring)) {
-				taskqueue_enqueue(pq->taskq, &pq->task);
-			}
-		}
-	}
-
 	PTNET_Q_UNLOCK(pq);
 
 	return 0;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201607040742.u647gV3J048973>