1371e4fccSRoman Gushchin // SPDX-License-Identifier: GPL-2.0 2371e4fccSRoman Gushchin #ifndef __NETCNT_COMMON_H 3371e4fccSRoman Gushchin #define __NETCNT_COMMON_H 4371e4fccSRoman Gushchin 5371e4fccSRoman Gushchin #include <linux/types.h> 6371e4fccSRoman Gushchin 7371e4fccSRoman Gushchin #define MAX_PERCPU_PACKETS 32 8371e4fccSRoman Gushchin 9*33b57e0cSStanislav Fomichev /* sizeof(struct bpf_local_storage_elem): 10*33b57e0cSStanislav Fomichev * 11*33b57e0cSStanislav Fomichev * It really is about 128 bytes on x86_64, but allocate more to account for 12*33b57e0cSStanislav Fomichev * possible layout changes, different architectures, etc. 13*33b57e0cSStanislav Fomichev * The kernel will wrap up to PAGE_SIZE internally anyway. 14*33b57e0cSStanislav Fomichev */ 15*33b57e0cSStanislav Fomichev #define SIZEOF_BPF_LOCAL_STORAGE_ELEM 256 16*33b57e0cSStanislav Fomichev 17*33b57e0cSStanislav Fomichev /* Try to estimate kernel's BPF_LOCAL_STORAGE_MAX_VALUE_SIZE: */ 18*33b57e0cSStanislav Fomichev #define BPF_LOCAL_STORAGE_MAX_VALUE_SIZE (0xFFFF - \ 19*33b57e0cSStanislav Fomichev SIZEOF_BPF_LOCAL_STORAGE_ELEM) 20*33b57e0cSStanislav Fomichev 21*33b57e0cSStanislav Fomichev #define PCPU_MIN_UNIT_SIZE 32768 22*33b57e0cSStanislav Fomichev 23*33b57e0cSStanislav Fomichev union percpu_net_cnt { 24*33b57e0cSStanislav Fomichev struct { 25371e4fccSRoman Gushchin __u64 packets; 26371e4fccSRoman Gushchin __u64 bytes; 27371e4fccSRoman Gushchin 28371e4fccSRoman Gushchin __u64 prev_ts; 29371e4fccSRoman Gushchin 30371e4fccSRoman Gushchin __u64 prev_packets; 31371e4fccSRoman Gushchin __u64 prev_bytes; 32371e4fccSRoman Gushchin }; 33*33b57e0cSStanislav Fomichev __u8 data[PCPU_MIN_UNIT_SIZE]; 34*33b57e0cSStanislav Fomichev }; 35371e4fccSRoman Gushchin 36*33b57e0cSStanislav Fomichev union net_cnt { 37*33b57e0cSStanislav Fomichev struct { 38371e4fccSRoman Gushchin __u64 packets; 39371e4fccSRoman Gushchin __u64 bytes; 40371e4fccSRoman Gushchin }; 41*33b57e0cSStanislav Fomichev __u8 data[BPF_LOCAL_STORAGE_MAX_VALUE_SIZE]; 42*33b57e0cSStanislav Fomichev }; 43371e4fccSRoman Gushchin 44371e4fccSRoman Gushchin #endif 45