linux/include/net/netprio_cgroup.h
Tejun Heo db53c73a8b netprio: use css ID instead of cgroup ID
netprio uses cgroup ID to index the priority mapping table.  This is
currently okay as cgroup IDs are allocated using idr and packed.
However, cgroup IDs will be changed to use full 64bit range and won't
be packed making this impractical.  netprio doesn't care what type of
IDs it uses as long as they can identify the controller instances and
are packed.  Let's switch to css IDs instead of cgroup IDs.

Signed-off-by: Tejun Heo <tj@kernel.org>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Namhyung Kim <namhyung@kernel.org>
2019-11-12 08:18:03 -08:00

55 lines
1 KiB
C

/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
* netprio_cgroup.h Control Group Priority set
*
* Authors: Neil Horman <nhorman@tuxdriver.com>
*/
#ifndef _NETPRIO_CGROUP_H
#define _NETPRIO_CGROUP_H
#include <linux/cgroup.h>
#include <linux/hardirq.h>
#include <linux/rcupdate.h>
#if IS_ENABLED(CONFIG_CGROUP_NET_PRIO)
struct netprio_map {
struct rcu_head rcu;
u32 priomap_len;
u32 priomap[];
};
static inline u32 task_netprioidx(struct task_struct *p)
{
struct cgroup_subsys_state *css;
u32 idx;
rcu_read_lock();
css = task_css(p, net_prio_cgrp_id);
idx = css->id;
rcu_read_unlock();
return idx;
}
static inline void sock_update_netprioidx(struct sock_cgroup_data *skcd)
{
if (in_interrupt())
return;
sock_cgroup_set_prioidx(skcd, task_netprioidx(current));
}
#else /* !CONFIG_CGROUP_NET_PRIO */
static inline u32 task_netprioidx(struct task_struct *p)
{
return 0;
}
static inline void sock_update_netprioidx(struct sock_cgroup_data *skcd)
{
}
#endif /* CONFIG_CGROUP_NET_PRIO */
#endif /* _NET_CLS_CGROUP_H */