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