ebpf: use atomic for counter in hw offload case

pull/3952/head
Eric Leblond 6 years ago committed by Victor Julien
parent 0c3e1e8579
commit 8b4c365352

@ -44,7 +44,6 @@
#define USE_PERCPU_HASH 1
#define GOT_TX_PEER 1
#define WRITE_MAP 1
struct vlan_hdr {
__u16 h_vlan_TCI;
@ -261,9 +260,12 @@ static int __always_inline filter_ipv4(void *data, __u64 nh_off, void *data_end,
char fmt[] = "Data: t:%lu p:%lu n:%lu\n";
bpf_trace_printk(fmt, sizeof(fmt), value->time, value->packets, value->bytes);
#endif
#if WRITE_MAP
#if USE_PERCPU_HASH
value->packets++;
value->bytes += data_end - data;
#else
__sync_fetch_and_add(&value->packets, 1);
__sync_fetch_and_add(&value->bytes, data_end - data);
#endif
#if GOT_TX_PEER
@ -347,9 +349,12 @@ static int __always_inline filter_ipv6(void *data, __u64 nh_off, void *data_end,
char fmt6[] = "Found IPv6 flow: %d -> %d\n";
bpf_trace_printk(fmt6, sizeof(fmt6), sport, dport);
#endif
#if WRITE_MAP
#if USE_PERCPU_HASH
value->packets++;
value->bytes += data_end - data;
#else
__sync_fetch_and_add(&value->packets, 1);
__sync_fetch_and_add(&value->bytes, data_end - data);
#endif
#if GOT_TX_PEER

Loading…
Cancel
Save