12874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 25bc1421eSNeil Horman /* 35bc1421eSNeil Horman * netprio_cgroup.h Control Group Priority set 45bc1421eSNeil Horman * 55bc1421eSNeil Horman * Authors: Neil Horman <nhorman@tuxdriver.com> 65bc1421eSNeil Horman */ 75bc1421eSNeil Horman 85bc1421eSNeil Horman #ifndef _NETPRIO_CGROUP_H 95bc1421eSNeil Horman #define _NETPRIO_CGROUP_H 1086f8515fSDaniel Borkmann 115bc1421eSNeil Horman #include <linux/cgroup.h> 125bc1421eSNeil Horman #include <linux/hardirq.h> 135bc1421eSNeil Horman #include <linux/rcupdate.h> 145bc1421eSNeil Horman 1586f8515fSDaniel Borkmann #if IS_ENABLED(CONFIG_CGROUP_NET_PRIO) 165bc1421eSNeil Horman struct netprio_map { 175bc1421eSNeil Horman struct rcu_head rcu; 185bc1421eSNeil Horman u32 priomap_len; 195bc1421eSNeil Horman u32 priomap[]; 205bc1421eSNeil Horman }; 215bc1421eSNeil Horman task_netprioidx(struct task_struct * p)222b73bc65SNeil Hormanstatic inline u32 task_netprioidx(struct task_struct *p) 235bc1421eSNeil Horman { 2488d642faSTejun Heo struct cgroup_subsys_state *css; 252b73bc65SNeil Horman u32 idx; 262b73bc65SNeil Horman 272b73bc65SNeil Horman rcu_read_lock(); 28073219e9STejun Heo css = task_css(p, net_prio_cgrp_id); 29*db53c73aSTejun Heo idx = css->id; 302b73bc65SNeil Horman rcu_read_unlock(); 312b73bc65SNeil Horman return idx; 322b73bc65SNeil Horman } 332a56a1feSTejun Heo sock_update_netprioidx(struct sock_cgroup_data * skcd)342a56a1feSTejun Heostatic inline void sock_update_netprioidx(struct sock_cgroup_data *skcd) 352a56a1feSTejun Heo { 362a56a1feSTejun Heo if (in_interrupt()) 372a56a1feSTejun Heo return; 382a56a1feSTejun Heo 392a56a1feSTejun Heo sock_cgroup_set_prioidx(skcd, task_netprioidx(current)); 402a56a1feSTejun Heo } 412a56a1feSTejun Heo 4286f8515fSDaniel Borkmann #else /* !CONFIG_CGROUP_NET_PRIO */ 432a56a1feSTejun Heo task_netprioidx(struct task_struct * p)442b73bc65SNeil Hormanstatic inline u32 task_netprioidx(struct task_struct *p) 452b73bc65SNeil Horman { 462b73bc65SNeil Horman return 0; 472b73bc65SNeil Horman } 482b73bc65SNeil Horman sock_update_netprioidx(struct sock_cgroup_data * skcd)492a56a1feSTejun Heostatic inline void sock_update_netprioidx(struct sock_cgroup_data *skcd) 502a56a1feSTejun Heo { 512a56a1feSTejun Heo } 5251e4e7faSDaniel Wagner 5386f8515fSDaniel Borkmann #endif /* CONFIG_CGROUP_NET_PRIO */ 545bc1421eSNeil Horman #endif /* _NET_CLS_CGROUP_H */ 55