Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Jun 2016 16:23:38 GMT
From:      vincenzo@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r305293 - soc2016/vincenzo/head/sys/dev/netmap
Message-ID:  <201606171623.u5HGNcMJ023836@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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);



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