netprio_cgroup.h (1047B)
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) 16struct netprio_map { 17 struct rcu_head rcu; 18 u32 priomap_len; 19 u32 priomap[]; 20}; 21 22static 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 34static 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 44static inline u32 task_netprioidx(struct task_struct *p) 45{ 46 return 0; 47} 48 49static 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 */