Branch data Line data Source code
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(p, net_prio_cgrp_id); 29 : 3 : idx = css->cgroup->id; 30 : : rcu_read_unlock(); 31 : : return idx; 32 : : } 33 : : 34 : 3 : static inline void sock_update_netprioidx(struct sock_cgroup_data *skcd) 35 : : { 36 : 3 : if (in_interrupt()) 37 : 3 : return; 38 : : 39 : 3 : sock_cgroup_set_prioidx(skcd, 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 */