diff options
author | Vincenzo Maffione <vmaffione@FreeBSD.org> | 2021-01-24 21:38:59 +0000 |
---|---|---|
committer | Vincenzo Maffione <vmaffione@FreeBSD.org> | 2021-01-31 08:51:56 +0000 |
commit | 31c2349742a9391899180e46336cb227828bf732 (patch) | |
tree | cda7145a28c78240d5d9adb62ad08d8990b9a9a7 | |
parent | 9c5418f00836b997561e3956fc18b7ecc7eccdc1 (diff) | |
download | src-31c2349742a9391899180e46336cb227828bf732.tar.gz src-31c2349742a9391899180e46336cb227828bf732.zip |
iflib: netmap: move per-packet operation out of fragments loop
MFC after: 1 week
(cherry picked from commit f80efe5016ba01b2948ca1f0eb8fe34adab5b864)
-rw-r--r-- | sys/net/iflib.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/sys/net/iflib.c b/sys/net/iflib.c index 80aeda5847cb..ae203d871a5c 100644 --- a/sys/net/iflib.c +++ b/sys/net/iflib.c @@ -1217,17 +1217,18 @@ iflib_netmap_rxsync(struct netmap_kring *kring, int flags) ring->slot[nm_i].flags = NS_MOREFRAG; } - if (have_rxcq) { - *cidxp = ri.iri_cidx; - while (*cidxp >= scctx->isc_nrxd[0]) - *cidxp -= scctx->isc_nrxd[0]; - } - bus_dmamap_sync(fl->ifl_buf_tag, fl->ifl_sds.ifsd_map[nic_i], BUS_DMASYNC_POSTREAD); nm_i = nm_next(nm_i, lim); fl->ifl_cidx = nic_i = nm_next(nic_i, lim); } + + if (have_rxcq) { + *cidxp = ri.iri_cidx; + while (*cidxp >= scctx->isc_nrxd[0]) + *cidxp -= scctx->isc_nrxd[0]; + } + } if (n) { /* update the state variables */ if (netmap_no_pendintr && !force_update) { |