1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
---|---|
2 | /* |
3 | * netprio_cgroup.h Control Group Priority set |
4 | * |
5 | * Authors: Neil Horman <nhorman@tuxdriver.com> |
6 | */ |
7 | |
8 | #ifndef _NETPRIO_CGROUP_H |
9 | #define _NETPRIO_CGROUP_H |
10 | |
11 | #include <linux/cgroup.h> |
12 | #include <linux/hardirq.h> |
13 | #include <linux/rcupdate.h> |
14 | |
15 | #if IS_ENABLED(CONFIG_CGROUP_NET_PRIO) |
16 | struct netprio_map { |
17 | struct rcu_head rcu; |
18 | u32 priomap_len; |
19 | u32 priomap[]; |
20 | }; |
21 | |
22 | static inline u32 task_netprioidx(struct task_struct *p) |
23 | { |
24 | struct cgroup_subsys_state *css; |
25 | u32 idx; |
26 | |
27 | rcu_read_lock(); |
28 | css = task_css(task: p, subsys_id: net_prio_cgrp_id); |
29 | idx = css->id; |
30 | rcu_read_unlock(); |
31 | return idx; |
32 | } |
33 | |
34 | static inline void sock_update_netprioidx(struct sock_cgroup_data *skcd) |
35 | { |
36 | if (in_interrupt()) |
37 | return; |
38 | |
39 | sock_cgroup_set_prioidx(skcd, prioidx: task_netprioidx(current)); |
40 | } |
41 | |
42 | #else /* !CONFIG_CGROUP_NET_PRIO */ |
43 | |
44 | static inline u32 task_netprioidx(struct task_struct *p) |
45 | { |
46 | return 0; |
47 | } |
48 | |
49 | static inline void sock_update_netprioidx(struct sock_cgroup_data *skcd) |
50 | { |
51 | } |
52 | |
53 | #endif /* CONFIG_CGROUP_NET_PRIO */ |
54 | #endif /* _NET_CLS_CGROUP_H */ |
55 |