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 : 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, 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 833 : static inline void sock_update_netprioidx(struct sock_cgroup_data *skcd) 50 : { 51 833 : } 52 : 53 : #endif /* CONFIG_CGROUP_NET_PRIO */ 54 : #endif /* _NET_CLS_CGROUP_H */