xref: /openbmc/linux/include/net/netprio_cgroup.h (revision c95baf12f5077419db01313ab61c2aac007d40cd)
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 Horman static 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 Heo static 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 Horman static 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 Heo static 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