mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-08 20:23:06 +00:00
sizeof(struct bpf_local_storage_elem) is 512 on s390x:
struct bpf_local_storage_elem {
struct hlist_node map_node; /* 0 16 */
struct hlist_node snode; /* 16 16 */
struct bpf_local_storage * local_storage; /* 32 8 */
struct callback_head rcu __attribute__((__aligned__(8))); /* 40 16 */
/* XXX 200 bytes hole, try to pack */
/* --- cacheline 1 boundary (256 bytes) --- */
struct bpf_local_storage_data sdata __attribute__((__aligned__(256))); /* 256 8 */
/* size: 512, cachelines: 2, members: 5 */
/* sum members: 64, holes: 1, sum holes: 200 */
/* padding: 248 */
/* forced alignments: 2, forced holes: 1, sum forced holes: 200 */
} __attribute__((__aligned__(256)));
As the existing comment suggests, use a larger number in order to be
future-proof.
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Link: https://lore.kernel.org/r/20230128000650.1516334-14-iii@linux.ibm.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
45 lines
926 B
C
45 lines
926 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef __NETCNT_COMMON_H
|
|
#define __NETCNT_COMMON_H
|
|
|
|
#include <linux/types.h>
|
|
|
|
#define MAX_PERCPU_PACKETS 32
|
|
|
|
/* sizeof(struct bpf_local_storage_elem):
|
|
*
|
|
* It is about 128 bytes on x86_64 and 512 bytes on s390x, but allocate more to
|
|
* account for possible layout changes, different architectures, etc.
|
|
* The kernel will wrap up to PAGE_SIZE internally anyway.
|
|
*/
|
|
#define SIZEOF_BPF_LOCAL_STORAGE_ELEM 768
|
|
|
|
/* Try to estimate kernel's BPF_LOCAL_STORAGE_MAX_VALUE_SIZE: */
|
|
#define BPF_LOCAL_STORAGE_MAX_VALUE_SIZE (0xFFFF - \
|
|
SIZEOF_BPF_LOCAL_STORAGE_ELEM)
|
|
|
|
#define PCPU_MIN_UNIT_SIZE 32768
|
|
|
|
union percpu_net_cnt {
|
|
struct {
|
|
__u64 packets;
|
|
__u64 bytes;
|
|
|
|
__u64 prev_ts;
|
|
|
|
__u64 prev_packets;
|
|
__u64 prev_bytes;
|
|
};
|
|
__u8 data[PCPU_MIN_UNIT_SIZE];
|
|
};
|
|
|
|
union net_cnt {
|
|
struct {
|
|
__u64 packets;
|
|
__u64 bytes;
|
|
};
|
|
__u8 data[BPF_LOCAL_STORAGE_MAX_VALUE_SIZE];
|
|
};
|
|
|
|
#endif
|