hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/net/batman-adv/soft-interface.h
....@@ -1,19 +1,7 @@
11 /* SPDX-License-Identifier: GPL-2.0 */
2
-/* Copyright (C) 2007-2018 B.A.T.M.A.N. contributors:
2
+/* Copyright (C) 2007-2020 B.A.T.M.A.N. contributors:
33 *
44 * Marek Lindner
5
- *
6
- * This program is free software; you can redistribute it and/or
7
- * modify it under the terms of version 2 of the GNU General Public
8
- * License as published by the Free Software Foundation.
9
- *
10
- * This program is distributed in the hope that it will be useful, but
11
- * WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
- * General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License
16
- * along with this program; if not, see <http://www.gnu.org/licenses/>.
175 */
186
197 #ifndef _NET_BATMAN_ADV_SOFT_INTERFACE_H_
....@@ -21,12 +9,12 @@
219
2210 #include "main.h"
2311
12
+#include <linux/kref.h>
13
+#include <linux/netdevice.h>
14
+#include <linux/skbuff.h>
2415 #include <linux/types.h>
16
+#include <net/net_namespace.h>
2517 #include <net/rtnetlink.h>
26
-
27
-struct net_device;
28
-struct net;
29
-struct sk_buff;
3018
3119 int batadv_skb_head_push(struct sk_buff *skb, unsigned int len);
3220 void batadv_interface_rx(struct net_device *soft_iface,
....@@ -37,8 +25,21 @@
3725 bool batadv_softif_is_valid(const struct net_device *net_dev);
3826 extern struct rtnl_link_ops batadv_link_ops;
3927 int batadv_softif_create_vlan(struct batadv_priv *bat_priv, unsigned short vid);
40
-void batadv_softif_vlan_put(struct batadv_softif_vlan *softif_vlan);
28
+void batadv_softif_vlan_release(struct kref *ref);
4129 struct batadv_softif_vlan *batadv_softif_vlan_get(struct batadv_priv *bat_priv,
4230 unsigned short vid);
4331
32
+/**
33
+ * batadv_softif_vlan_put() - decrease the vlan object refcounter and
34
+ * possibly release it
35
+ * @vlan: the vlan object to release
36
+ */
37
+static inline void batadv_softif_vlan_put(struct batadv_softif_vlan *vlan)
38
+{
39
+ if (!vlan)
40
+ return;
41
+
42
+ kref_put(&vlan->refcount, batadv_softif_vlan_release);
43
+}
44
+
4445 #endif /* _NET_BATMAN_ADV_SOFT_INTERFACE_H_ */