kstats.tp_packets, kstats.tp_drops);
SCPerfCounterAddUI64(ptv->capture_kernel_packets, ptv->tv->sc_perf_pca, kstats.tp_packets);
SCPerfCounterAddUI64(ptv->capture_kernel_drops, ptv->tv->sc_perf_pca, kstats.tp_drops);
+ (void) SC_ATOMIC_ADD(ptv->livedev->drop, kstats.tp_drops);
}
#endif
}
if (likely((pcap_stats(ptv->pcap_handle, &pcap_s) >= 0))) {
SCPerfCounterSetUI64(ptv->capture_kernel_packets, ptv->tv->sc_perf_pca, pcap_s.ps_recv);
SCPerfCounterSetUI64(ptv->capture_kernel_drops, ptv->tv->sc_perf_pca, pcap_s.ps_drop);
+ (void) SC_ATOMIC_SET(ptv->livedev->drop, pcap_s.ps_drop);
SCPerfCounterSetUI64(ptv->capture_kernel_ifdrops, ptv->tv->sc_perf_pca, pcap_s.ps_ifdrop);
}
}
if (likely((pfring_stats(ptv->pd, &pfring_s) >= 0))) {
SCPerfCounterSetUI64(ptv->capture_kernel_packets, ptv->tv->sc_perf_pca, pfring_s.recv);
SCPerfCounterSetUI64(ptv->capture_kernel_drops, ptv->tv->sc_perf_pca, pfring_s.drop);
+ SC_ATOMIC_SET(ptv->livedev->drop, kstats.tp_drops);
}
}
pd->dev = SCStrdup(dev);
SC_ATOMIC_INIT(pd->pkts);
+ SC_ATOMIC_INIT(pd->drop);
SC_ATOMIC_INIT(pd->invalid_checksums);
pd->ignore_checksum = 0;
TAILQ_INSERT_TAIL(&live_devices, pd, next);
char *dev; /**< the device (e.g. "eth0") */
int ignore_checksum;
SC_ATOMIC_DECLARE(unsigned int, pkts);
+ SC_ATOMIC_DECLARE(unsigned int, drop);
SC_ATOMIC_DECLARE(unsigned int, invalid_checksums);
TAILQ_ENTRY(LiveDevice_) next;
} LiveDevice;