18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * netprio_cgroup.h Control Group Priority set 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Authors: Neil Horman <nhorman@tuxdriver.com> 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef _NETPRIO_CGROUP_H 98c2ecf20Sopenharmony_ci#define _NETPRIO_CGROUP_H 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <linux/cgroup.h> 128c2ecf20Sopenharmony_ci#include <linux/hardirq.h> 138c2ecf20Sopenharmony_ci#include <linux/rcupdate.h> 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_CGROUP_NET_PRIO) 168c2ecf20Sopenharmony_cistruct netprio_map { 178c2ecf20Sopenharmony_ci struct rcu_head rcu; 188c2ecf20Sopenharmony_ci u32 priomap_len; 198c2ecf20Sopenharmony_ci u32 priomap[]; 208c2ecf20Sopenharmony_ci}; 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_cistatic inline u32 task_netprioidx(struct task_struct *p) 238c2ecf20Sopenharmony_ci{ 248c2ecf20Sopenharmony_ci struct cgroup_subsys_state *css; 258c2ecf20Sopenharmony_ci u32 idx; 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci rcu_read_lock(); 288c2ecf20Sopenharmony_ci css = task_css(p, net_prio_cgrp_id); 298c2ecf20Sopenharmony_ci idx = css->id; 308c2ecf20Sopenharmony_ci rcu_read_unlock(); 318c2ecf20Sopenharmony_ci return idx; 328c2ecf20Sopenharmony_ci} 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_cistatic inline void sock_update_netprioidx(struct sock_cgroup_data *skcd) 358c2ecf20Sopenharmony_ci{ 368c2ecf20Sopenharmony_ci if (in_interrupt()) 378c2ecf20Sopenharmony_ci return; 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_ci sock_cgroup_set_prioidx(skcd, task_netprioidx(current)); 408c2ecf20Sopenharmony_ci} 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ci#else /* !CONFIG_CGROUP_NET_PRIO */ 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_cistatic inline u32 task_netprioidx(struct task_struct *p) 458c2ecf20Sopenharmony_ci{ 468c2ecf20Sopenharmony_ci return 0; 478c2ecf20Sopenharmony_ci} 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_cistatic inline void sock_update_netprioidx(struct sock_cgroup_data *skcd) 508c2ecf20Sopenharmony_ci{ 518c2ecf20Sopenharmony_ci} 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci#endif /* CONFIG_CGROUP_NET_PRIO */ 548c2ecf20Sopenharmony_ci#endif /* _NET_CLS_CGROUP_H */ 55