mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-25 20:05:39 +00:00
bpf: offload map memory usage
A new helper is introduced to calculate offload map memory usage. But currently the memory dynamically allocated in netdev dev_ops, like nsim_map_update_elem, is not counted. Let's just put it aside now. Signed-off-by: Yafang Shao <laoar.shao@gmail.com> Link: https://lore.kernel.org/r/20230305124615.12358-18-laoar.shao@gmail.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
b4fd0d672b
commit
9629363cd0
3 changed files with 13 additions and 0 deletions
|
@ -2624,6 +2624,7 @@ static inline bool bpf_map_is_offloaded(struct bpf_map *map)
|
|||
|
||||
struct bpf_map *bpf_map_offload_map_alloc(union bpf_attr *attr);
|
||||
void bpf_map_offload_map_free(struct bpf_map *map);
|
||||
u64 bpf_map_offload_map_mem_usage(const struct bpf_map *map);
|
||||
int bpf_prog_test_run_syscall(struct bpf_prog *prog,
|
||||
const union bpf_attr *kattr,
|
||||
union bpf_attr __user *uattr);
|
||||
|
@ -2695,6 +2696,11 @@ static inline void bpf_map_offload_map_free(struct bpf_map *map)
|
|||
{
|
||||
}
|
||||
|
||||
static inline u64 bpf_map_offload_map_mem_usage(const struct bpf_map *map)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int bpf_prog_test_run_syscall(struct bpf_prog *prog,
|
||||
const union bpf_attr *kattr,
|
||||
union bpf_attr __user *uattr)
|
||||
|
|
|
@ -563,6 +563,12 @@ void bpf_map_offload_map_free(struct bpf_map *map)
|
|||
bpf_map_area_free(offmap);
|
||||
}
|
||||
|
||||
u64 bpf_map_offload_map_mem_usage(const struct bpf_map *map)
|
||||
{
|
||||
/* The memory dynamically allocated in netdev dev_ops is not counted */
|
||||
return sizeof(struct bpf_offloaded_map);
|
||||
}
|
||||
|
||||
int bpf_map_offload_lookup_elem(struct bpf_map *map, void *key, void *value)
|
||||
{
|
||||
struct bpf_offloaded_map *offmap = map_to_offmap(map);
|
||||
|
|
|
@ -105,6 +105,7 @@ const struct bpf_map_ops bpf_map_offload_ops = {
|
|||
.map_alloc = bpf_map_offload_map_alloc,
|
||||
.map_free = bpf_map_offload_map_free,
|
||||
.map_check_btf = map_check_no_btf,
|
||||
.map_mem_usage = bpf_map_offload_map_mem_usage,
|
||||
};
|
||||
|
||||
static struct bpf_map *find_and_alloc_map(union bpf_attr *attr)
|
||||
|
|
Loading…
Reference in a new issue