45 lines · c
1// SPDX-License-Identifier: GPL-2.02#ifndef __NETCNT_COMMON_H3#define __NETCNT_COMMON_H4 5#include <linux/types.h>6 7#define MAX_PERCPU_PACKETS 328 9/* sizeof(struct bpf_local_storage_elem):10 *11 * It is about 128 bytes on x86_64 and 512 bytes on s390x, but allocate more to12 * account for possible layout changes, different architectures, etc.13 * The kernel will wrap up to PAGE_SIZE internally anyway.14 */15#define SIZEOF_BPF_LOCAL_STORAGE_ELEM 76816 17/* Try to estimate kernel's BPF_LOCAL_STORAGE_MAX_VALUE_SIZE: */18#define BPF_LOCAL_STORAGE_MAX_VALUE_SIZE (0xFFFF - \19 SIZEOF_BPF_LOCAL_STORAGE_ELEM)20 21#define PCPU_MIN_UNIT_SIZE 3276822 23union percpu_net_cnt {24 struct {25 __u64 packets;26 __u64 bytes;27 28 __u64 prev_ts;29 30 __u64 prev_packets;31 __u64 prev_bytes;32 };33 __u8 data[PCPU_MIN_UNIT_SIZE];34};35 36union net_cnt {37 struct {38 __u64 packets;39 __u64 bytes;40 };41 __u8 data[BPF_LOCAL_STORAGE_MAX_VALUE_SIZE];42};43 44#endif45