uint8_t xdp_mode;
- unsigned int nr_cpus;
+ struct ebpf_timeout_config ebpf_t_config;
} AFPThreadVars;
#ifdef HAVE_PACKET_EBPF
p->afp_v.v4_map_fd = ptv->v4_map_fd;
p->afp_v.v6_map_fd = ptv->v6_map_fd;
- p->afp_v.nr_cpus = ptv->nr_cpus;
+ p->afp_v.nr_cpus = ptv->ebpf_t_config.cpus_count;
#endif
}
if (ptv->flags & AFP_XDPBYPASS) {
#ifdef HAVE_PACKET_EBPF
p->afp_v.v4_map_fd = ptv->v4_map_fd;
p->afp_v.v6_map_fd = ptv->v6_map_fd;
- p->afp_v.nr_cpus = ptv->nr_cpus;
+ p->afp_v.nr_cpus = ptv->ebpf_t_config.cpus_count;
#endif
}
#ifdef HAVE_PACKET_EBPF
p->afp_v.v4_map_fd = ptv->v4_map_fd;
p->afp_v.v6_map_fd = ptv->v6_map_fd;
- p->afp_v.nr_cpus = ptv->nr_cpus;
+ p->afp_v.nr_cpus = ptv->ebpf_t_config.cpus_count;
#endif
}
if (ptv->flags & AFP_XDPBYPASS) {
#ifdef HAVE_PACKET_EBPF
p->afp_v.v4_map_fd = ptv->v4_map_fd;
p->afp_v.v6_map_fd = ptv->v6_map_fd;
- p->afp_v.nr_cpus = ptv->nr_cpus;
+ p->afp_v.nr_cpus = ptv->ebpf_t_config.cpus_count;
#endif
}
#ifdef HAVE_PACKET_EBPF
p->afp_v.v4_map_fd = ptv->v4_map_fd;
p->afp_v.v6_map_fd = ptv->v6_map_fd;
- p->afp_v.nr_cpus = ptv->nr_cpus;
+ p->afp_v.nr_cpus = ptv->ebpf_t_config.cpus_count;
#endif
} else if (ptv->flags & AFP_XDPBYPASS) {
p->BypassPacketsFlow = AFPXDPBypassCallback;
#ifdef HAVE_PACKET_EBPF
p->afp_v.v4_map_fd = ptv->v4_map_fd;
p->afp_v.v6_map_fd = ptv->v6_map_fd;
- p->afp_v.nr_cpus = ptv->nr_cpus;
+ p->afp_v.nr_cpus = ptv->ebpf_t_config.cpus_count;
#endif
}
ptv->ebpf_lb_fd = afpconfig->ebpf_lb_fd;
ptv->ebpf_filter_fd = afpconfig->ebpf_filter_fd;
ptv->xdp_mode = afpconfig->xdp_mode;
- ptv->nr_cpus = UtilCpuGetNumProcessorsConfigured();
+ ptv->ebpf_t_config.cpus_count = UtilCpuGetNumProcessorsConfigured();
#ifdef HAVE_PACKET_EBPF
if (ptv->flags & (AFP_BYPASS|AFP_XDPBYPASS)) {
SCLogError(SC_ERR_INVALID_VALUE, "Can't find eBPF map fd for '%s'", "flow_table_v6");
}
}
- ptv->nr_cpus = afpconfig->ebpf_t_config.cpus_count;
+ ptv->ebpf_t_config = afpconfig->ebpf_t_config;
#endif
#ifdef PACKET_STATISTICS
AFPSwitchState(ptv, AFP_STATE_DOWN);
#ifdef HAVE_PACKET_XDP
- EBPFSetupXDP(ptv->iface, -1, ptv->xdp_mode);
+ if ((ptv->ebpf_t_config.flags & EBPF_XDP_CODE) &&
+ (!(ptv->ebpf_t_config.flags & EBPF_PINNED_MAPS))) {
+ EBPFSetupXDP(ptv->iface, -1, ptv->xdp_mode);
+ }
#endif
if (ptv->data != NULL) {
SCFree(ptv->data);