socsvn commit: r305706 - soc2016/vincenzo/head/sys/dev/netmap
vincenzo at FreeBSD.org
vincenzo at FreeBSD.org
Mon Jul 4 07:42:32 UTC 2016
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;
More information about the svn-soc-all
mailing list