]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - include/net/tc_act/tc_vlan.h
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[mirror_ubuntu-jammy-kernel.git] / include / net / tc_act / tc_vlan.h
CommitLineData
2874c5fd 1/* SPDX-License-Identifier: GPL-2.0-or-later */
c7e2b968
JP
2/*
3 * Copyright (c) 2014 Jiri Pirko <jiri@resnulli.us>
c7e2b968
JP
4 */
5
6#ifndef __NET_TC_VLAN_H
7#define __NET_TC_VLAN_H
8
9#include <net/act_api.h>
53e89941 10#include <linux/tc_act/tc_vlan.h>
c7e2b968 11
4c5b9d96
MK
12struct tcf_vlan_params {
13 int tcfv_action;
14 u16 tcfv_push_vid;
15 __be16 tcfv_push_proto;
16 u8 tcfv_push_prio;
17 struct rcu_head rcu;
18};
19
c7e2b968 20struct tcf_vlan {
ec0595cc 21 struct tc_action common;
4c5b9d96 22 struct tcf_vlan_params __rcu *vlan_p;
c7e2b968 23};
a85a970a 24#define to_vlan(a) ((struct tcf_vlan *)a)
c7e2b968 25
53e89941
OG
26static inline bool is_tcf_vlan(const struct tc_action *a)
27{
28#ifdef CONFIG_NET_CLS_ACT
eddd2cf1 29 if (a->ops && a->ops->id == TCA_ID_VLAN)
53e89941
OG
30 return true;
31#endif
32 return false;
33}
34
35static inline u32 tcf_vlan_action(const struct tc_action *a)
36{
4c5b9d96
MK
37 u32 tcfv_action;
38
39 rcu_read_lock();
40 tcfv_action = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_action;
41 rcu_read_unlock();
42
43 return tcfv_action;
53e89941
OG
44}
45
46static inline u16 tcf_vlan_push_vid(const struct tc_action *a)
47{
4c5b9d96
MK
48 u16 tcfv_push_vid;
49
50 rcu_read_lock();
51 tcfv_push_vid = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_vid;
52 rcu_read_unlock();
53
54 return tcfv_push_vid;
53e89941
OG
55}
56
57static inline __be16 tcf_vlan_push_proto(const struct tc_action *a)
58{
4c5b9d96
MK
59 __be16 tcfv_push_proto;
60
61 rcu_read_lock();
62 tcfv_push_proto = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_proto;
63 rcu_read_unlock();
64
65 return tcfv_push_proto;
53e89941
OG
66}
67
a150201a
PM
68static inline u8 tcf_vlan_push_prio(const struct tc_action *a)
69{
4c5b9d96 70 u8 tcfv_push_prio;
a150201a 71
4c5b9d96
MK
72 rcu_read_lock();
73 tcfv_push_prio = rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_prio;
74 rcu_read_unlock();
75
76 return tcfv_push_prio;
77}
c7e2b968 78#endif /* __NET_TC_VLAN_H */