socsvn commit: r305293 - soc2016/vincenzo/head/sys/dev/netmap

vincenzo at FreeBSD.org vincenzo at FreeBSD.org
Fri Jun 17 16:23:38 UTC 2016


Author: vincenzo
Date: Fri Jun 17 16:23:37 2016
New Revision: 305293
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=305293

Log:
   freebsd: ptnet_rx_eof: add batch limiting (budget)

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	Fri Jun 17 16:23:28 2016	(r305292)
+++ soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c	Fri Jun 17 16:23:37 2016	(r305293)
@@ -1153,6 +1153,7 @@
 	unsigned int const lim = kring->nkr_num_slots - 1;
 	unsigned int head = ring->head;
 	struct ifnet *ifp = sc->ifp;
+	unsigned int budget = 512;
 
 	PTNET_Q_LOCK(pq);
 
@@ -1162,7 +1163,7 @@
 
 	kring->nr_kflags &= ~NKR_PENDINTR;
 
-	while (head != ring->tail) {
+	while (head != ring->tail && budget) {
 		struct netmap_slot *slot = ring->slot + head;
 		unsigned int nmbuf_len = slot->len;
 		uint8_t *nmbuf = NMB(na, slot);
@@ -1183,11 +1184,12 @@
 		memcpy(m->m_data, nmbuf, nmbuf_len);
 		m->m_len = nmbuf_len;
 
-		head = nm_next(head, lim);
-
 		PTNET_Q_UNLOCK(pq);
 		(*ifp->if_input)(ifp, m);
 		PTNET_Q_LOCK(pq);
+
+		head = nm_next(head, lim);
+		budget--;
 	}
 
 	PTNET_Q_UNLOCK(pq);


More information about the svn-soc-all mailing list