diff --git a/src/source-netmap.c b/src/source-netmap.c index 79bd161b8c..73930118c1 100644 --- a/src/source-netmap.c +++ b/src/source-netmap.c @@ -628,8 +628,10 @@ static TmEcode ReceiveNetmapThreadInit(ThreadVars *tv, void *initdata, void **da ntv->capture_kernel_drops = StatsRegisterCounter("capture.kernel_drops", ntv->tv); + /* enable zero-copy mode for workers runmode */ char const *active_runmode = RunmodeGetActive(); - if (active_runmode && !strcmp("workers", active_runmode)) { + if ((aconf->copy_mode != NETMAP_COPY_MODE_NONE) && active_runmode + && !strcmp("workers", active_runmode)) { if (likely(ntv->ifsrc->mem == ntv->ifdst->mem)) { ntv->flags |= NETMAP_FLAG_ZERO_COPY; SCLogInfo("Enabling zero copy mode for %s->%s", @@ -638,7 +640,6 @@ static TmEcode ReceiveNetmapThreadInit(ThreadVars *tv, void *initdata, void **da SCLogInfo("Unable to set zero copy mode for %s->%s", aconf->iface_name, aconf->out_iface_name); } - } if (aconf->bpf_filter) {