All of lore.kernel.org
 help / color / mirror / Atom feed
* [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches
@ 2016-10-18 13:57 Sven Eckelmann
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 1/8] batman-adv: Mark batadv_netlink_ops as const Sven Eckelmann
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: Sven Eckelmann @ 2016-10-18 13:57 UTC (permalink / raw)
  To: b.a.t.m.a.n

[-- Attachment #1: Type: text/plain, Size: 504 bytes --]

Hi,

here is the updated patchset to get complex compat patches support in batman-
adv. The initial three patches of the last patchset [1] are already part of 
batman-adv.git next. This part is mostly about getting coccinelle/spatch to 
work.

Changes in v3:

 - rebased to get it working on top of current master
 - use __genl_const for batadv_netlink_ops to keep it in ro memory for
   kernel >= 3.13

Kind regards,
	Sven

[1] https://lists.open-mesh.org/pipermail/b.a.t.m.a.n/2016-October/016375.html

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [B.A.T.M.A.N.] [PATCH v3 1/8] batman-adv: Mark batadv_netlink_ops as const
  2016-10-18 13:57 [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Sven Eckelmann
@ 2016-10-18 13:57 ` Sven Eckelmann
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 2/8] batman-adv: Add support for coccinelle in compat-patches Sven Eckelmann
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Sven Eckelmann @ 2016-10-18 13:57 UTC (permalink / raw)
  To: b.a.t.m.a.n

The genl_ops don't need to be written by anyone and thus can be moved in a
ro memory range.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
v3:
 - use __genl_const to keep it in ro memory for kernel >= 3.13
v2:
 - new patch
---
 compat-patches/replacements.sh | 1 +
 net/batman-adv/netlink.c       | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/compat-patches/replacements.sh b/compat-patches/replacements.sh
index 669b0ff..7dcb953 100755
--- a/compat-patches/replacements.sh
+++ b/compat-patches/replacements.sh
@@ -5,4 +5,5 @@ set -e
 # for kernel < 3.13 to make netlink compat code work
 sed -i \
 	-e 's/^static const struct genl_multicast_group batadv_netlink_mcgrps/static __genl_const struct genl_multicast_group batadv_netlink_mcgrps/' \
+	-e 's/^static const struct genl_ops batadv_netlink_ops/static __genl_const struct genl_ops batadv_netlink_ops/' \
 	build/net/batman-adv/netlink.c
diff --git a/net/batman-adv/netlink.c b/net/batman-adv/netlink.c
index 64cb6ac..aee20a3 100644
--- a/net/batman-adv/netlink.c
+++ b/net/batman-adv/netlink.c
@@ -534,7 +534,7 @@ batadv_netlink_dump_hardifs(struct sk_buff *msg, struct netlink_callback *cb)
 	return msg->len;
 }
 
-static struct genl_ops batadv_netlink_ops[] = {
+static const struct genl_ops batadv_netlink_ops[] = {
 	{
 		.cmd = BATADV_CMD_GET_MESH_INFO,
 		.flags = GENL_ADMIN_PERM,
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [B.A.T.M.A.N.] [PATCH v3 2/8] batman-adv: Add support for coccinelle in compat-patches
  2016-10-18 13:57 [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Sven Eckelmann
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 1/8] batman-adv: Mark batadv_netlink_ops as const Sven Eckelmann
@ 2016-10-18 13:57 ` Sven Eckelmann
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 3/8] batman-adv: compat: Port netlink port hack to coccinelle Sven Eckelmann
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Sven Eckelmann @ 2016-10-18 13:57 UTC (permalink / raw)
  To: b.a.t.m.a.n

The kernel and backports already uses spatch from coccinelle for
development and backporting purposes. Thus we can cleanup many current
hacks using semantic patches. These are also a lot less frail than
traditional unified diffs.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
v3:
 - no changes
v2:
 - new patch
---
 Makefile | 23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

diff --git a/Makefile b/Makefile
index 7ef2569..99e67da 100644
--- a/Makefile
+++ b/Makefile
@@ -40,11 +40,19 @@ ifeq ($(shell cd $(KERNELPATH) && pwd),)
 $(warning $(KERNELPATH) is missing, please set KERNELPATH)
 endif
 
+ifeq ($(origin SPATCH), undefined)
+  SPATCH = spatch
+  ifeq ($(shell which $(SPATCH) 2>/dev/null),)
+    $(error $(SPATCH) (coccinelle) not found)
+  endif
+endif
+
 export KERNELPATH
 RM ?= rm -f
 MKDIR := mkdir -p
 PATCH_FLAGS = --batch --fuzz=0 --forward --strip=1 --unified --version-control=never -g0 --remove-empty-files --no-backup-if-mismatch --reject-file=-
 PATCH := patch $(PATCH_FLAGS) -i
+SPATCH_FLAGS := --in-place --relax-include-path --use-coccigrep
 CP := cp -fpR
 
 SOURCE = $(wildcard net/batman-adv/*.[ch]) net/batman-adv/Makefile
@@ -104,12 +112,17 @@ $(SOURCE_STAMP): $(SOURCE) compat-patches/* compat-patches/replacements.sh
 	@$(RM) $(SOURCE_BUILD)
 	@$(CP) $(SOURCE) $(BUILD_DIR)/net/batman-adv/
 	@set -e; \
-	patches="$$(ls -1 compat-patches/|grep '.patch$$'|sort)"; \
+	patches="$$(ls -1 compat-patches/|grep -e '.patch$$' -e '.cocci$$'|sort)"; \
 	for i in $${patches}; do \
-		echo '  COMPAT_PATCH '$${i};\
-		cd $(BUILD_DIR); \
-		$(PATCH) ../compat-patches/$${i}; \
-		cd - > /dev/null; \
+		echo '  COMPAT_PATCH '$${i}; \
+		if echo $${i}|grep '.patch$$'; then \
+			cd $(BUILD_DIR); \
+			$(PATCH) ../compat-patches/$${i}; \
+			cd - > /dev/null; \
+		fi; \
+		if echo $${i}|grep '.cocci$$'; then echo $$(pwd); \
+			$(SPATCH) $(SPATCH_FLAGS) --dir $(BUILD_DIR) --sp-file compat-patches/$${i} > /dev/null; \
+		fi; \
 	done
 	compat-patches/replacements.sh
 	touch $(SOURCE_STAMP)
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [B.A.T.M.A.N.] [PATCH v3 3/8] batman-adv: compat: Port netlink port hack to coccinelle
  2016-10-18 13:57 [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Sven Eckelmann
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 1/8] batman-adv: Mark batadv_netlink_ops as const Sven Eckelmann
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 2/8] batman-adv: Add support for coccinelle in compat-patches Sven Eckelmann
@ 2016-10-18 13:57 ` Sven Eckelmann
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 4/8] batman-adv: compat: Move netlink const compat " Sven Eckelmann
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Sven Eckelmann @ 2016-10-18 13:57 UTC (permalink / raw)
  To: b.a.t.m.a.n

Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
v3:
 - no changes
v2:
 - new patch
---
 compat-include/linux/netlink.h           | 20 +++++++-------------
 compat-include/net/genetlink.h           | 11 +++++++++++
 compat-patches/0001-netlink-portid.cocci | 17 +++++++++++++++++
 compat.h                                 |  6 ------
 4 files changed, 35 insertions(+), 19 deletions(-)
 create mode 100644 compat-patches/0001-netlink-portid.cocci

diff --git a/compat-include/linux/netlink.h b/compat-include/linux/netlink.h
index 4f2185d..ca2bdf0 100644
--- a/compat-include/linux/netlink.h
+++ b/compat-include/linux/netlink.h
@@ -26,19 +26,13 @@
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0)
 
-#include <net/scm.h>
-
-struct batadv_netlink_skb_parms {
-	struct ucred		creds;		/* Skb credentials	*/
-	union {
-		__u32		portid;
-		__u32		pid;
-	};
-	__u32			dst_group;
-};
-
-#undef NETLINK_CB
-#define NETLINK_CB(skb) (*(struct batadv_netlink_skb_parms *)&((skb)->cb))
+#define netlink_notify_portid(__notify) (__notify->pid)
+#define NETLINK_CB_PORTID(__skb) NETLINK_CB(__skb).pid
+
+#else
+
+#define netlink_notify_portid(__notify) (__notify->portid)
+#define NETLINK_CB_PORTID(__skb) NETLINK_CB(__skb).portid
 
 #endif /* < KERNEL_VERSION(3, 7, 0) */
 
diff --git a/compat-include/net/genetlink.h b/compat-include/net/genetlink.h
index 72a8991..6a287e6 100644
--- a/compat-include/net/genetlink.h
+++ b/compat-include/net/genetlink.h
@@ -24,6 +24,17 @@
 #include <linux/version.h>
 #include_next <net/genetlink.h>
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0)
+
+#define genl_info_snd_portid(__genl_info) (__genl_info->snd_pid)
+
+#else
+
+#define genl_info_snd_portid(__genl_info) (__genl_info->snd_portid)
+
+#endif /* < KERNEL_VERSION(3, 7, 0) */
+
+
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0)
 
 #include <linux/export.h>
diff --git a/compat-patches/0001-netlink-portid.cocci b/compat-patches/0001-netlink-portid.cocci
new file mode 100644
index 0000000..5fc504e
--- /dev/null
+++ b/compat-patches/0001-netlink-portid.cocci
@@ -0,0 +1,17 @@
+@@
+struct netlink_notify *notify;
+@@
+-notify->portid
++netlink_notify_portid(notify)
+
+@@
+struct genl_info *info;
+@@
+-info->snd_portid
++genl_info_snd_portid(info)
+
+@@
+expression skb;
+@@
+-NETLINK_CB(skb).portid
++NETLINK_CB_PORTID(skb)
diff --git a/compat.h b/compat.h
index d987577..78de7ea 100644
--- a/compat.h
+++ b/compat.h
@@ -67,12 +67,6 @@ static int __batadv_interface_kill_vid(struct net_device *dev, __be16 proto,\
 
 #endif /* < KERNEL_VERSION(3, 3, 0) */
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 7, 0)
-
-#define snd_portid snd_pid
-
-#endif /* < KERNEL_VERSION(3, 7, 0) */
-
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)
 
 #define batadv_interface_set_mac_addr(x, y) \
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [B.A.T.M.A.N.] [PATCH v3 4/8] batman-adv: compat: Move netlink const compat to coccinelle
  2016-10-18 13:57 [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Sven Eckelmann
                   ` (2 preceding siblings ...)
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 3/8] batman-adv: compat: Port netlink port hack to coccinelle Sven Eckelmann
@ 2016-10-18 13:57 ` Sven Eckelmann
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 5/8] batman-adv: Remove replacement compat script Sven Eckelmann
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Sven Eckelmann @ 2016-10-18 13:57 UTC (permalink / raw)
  To: b.a.t.m.a.n

Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
v3:
 - removed compat-include/linux/netlink.h changes which are already in master
v2:
 - new patch
---
 compat-patches/0002-genl-const.INFO  | 15 +++++++++++++++
 compat-patches/0002-genl-const.cocci | 10 ++++++++++
 compat-patches/replacements.sh       |  6 ------
 3 files changed, 25 insertions(+), 6 deletions(-)
 create mode 100644 compat-patches/0002-genl-const.INFO
 create mode 100644 compat-patches/0002-genl-const.cocci

diff --git a/compat-patches/0002-genl-const.INFO b/compat-patches/0002-genl-const.INFO
new file mode 100644
index 0000000..192c5c6
--- /dev/null
+++ b/compat-patches/0002-genl-const.INFO
@@ -0,0 +1,15 @@
+Newer kernels make generic netlink ops and multicast groups
+const, but older can't have that. We therefore introduce
+__genl_const, which can be defined depending on the kernel.
+
+What kernel versions require this?
+
+XXX: try to SmPLify
+
+The struct genl_ops gave the *option* to make it const via:
+mcgrof@ergon ~/linux (git::master)$ git describe --contains f84f771d9
+v3.13-rc1~33^2~32^2~2
+
+The struct genl_multicast_group was *forced* to be const via:
+mcgrof@ergon ~/linux (git::master)$ git describe --contains 2a94fe48f
+v3.13-rc1~33^2^2
diff --git a/compat-patches/0002-genl-const.cocci b/compat-patches/0002-genl-const.cocci
new file mode 100644
index 0000000..36c71d6
--- /dev/null
+++ b/compat-patches/0002-genl-const.cocci
@@ -0,0 +1,10 @@
+@@
+attribute __genl_const;
+@@
+(
+-const struct genl_multicast_group
++__genl_const struct genl_multicast_group
+|
+-const struct genl_ops
++__genl_const struct genl_ops
+)
diff --git a/compat-patches/replacements.sh b/compat-patches/replacements.sh
index 7dcb953..c7875c0 100755
--- a/compat-patches/replacements.sh
+++ b/compat-patches/replacements.sh
@@ -1,9 +1,3 @@
 #! /bin/sh
 
 set -e
-
-# for kernel < 3.13 to make netlink compat code work
-sed -i \
-	-e 's/^static const struct genl_multicast_group batadv_netlink_mcgrps/static __genl_const struct genl_multicast_group batadv_netlink_mcgrps/' \
-	-e 's/^static const struct genl_ops batadv_netlink_ops/static __genl_const struct genl_ops batadv_netlink_ops/' \
-	build/net/batman-adv/netlink.c
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [B.A.T.M.A.N.] [PATCH v3 5/8] batman-adv: Remove replacement compat script
  2016-10-18 13:57 [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Sven Eckelmann
                   ` (3 preceding siblings ...)
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 4/8] batman-adv: compat: Move netlink const compat " Sven Eckelmann
@ 2016-10-18 13:57 ` Sven Eckelmann
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 6/8] batman-adv: compat: Replace IFF_NO_QUEUE with coccinelle Sven Eckelmann
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Sven Eckelmann @ 2016-10-18 13:57 UTC (permalink / raw)
  To: b.a.t.m.a.n

Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
v3:
 - no changes
v2:
 - new patch
---
 Makefile                       | 3 +--
 compat-patches/replacements.sh | 3 ---
 2 files changed, 1 insertion(+), 5 deletions(-)
 delete mode 100755 compat-patches/replacements.sh

diff --git a/Makefile b/Makefile
index 99e67da..7eea0ab 100644
--- a/Makefile
+++ b/Makefile
@@ -107,7 +107,7 @@ install: config $(SOURCE_STAMP)
 config:
 	$(PWD)/gen-compat-autoconf.sh $(PWD)/compat-autoconf.h
 
-$(SOURCE_STAMP): $(SOURCE) compat-patches/* compat-patches/replacements.sh
+$(SOURCE_STAMP): $(SOURCE) compat-patches/*
 	$(MKDIR) $(BUILD_DIR)/net/batman-adv/
 	@$(RM) $(SOURCE_BUILD)
 	@$(CP) $(SOURCE) $(BUILD_DIR)/net/batman-adv/
@@ -124,7 +124,6 @@ $(SOURCE_STAMP): $(SOURCE) compat-patches/* compat-patches/replacements.sh
 			$(SPATCH) $(SPATCH_FLAGS) --dir $(BUILD_DIR) --sp-file compat-patches/$${i} > /dev/null; \
 		fi; \
 	done
-	compat-patches/replacements.sh
 	touch $(SOURCE_STAMP)
 
 .PHONY: all clean install config
diff --git a/compat-patches/replacements.sh b/compat-patches/replacements.sh
deleted file mode 100755
index c7875c0..0000000
--- a/compat-patches/replacements.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-#! /bin/sh
-
-set -e
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [B.A.T.M.A.N.] [PATCH v3 6/8] batman-adv: compat: Replace IFF_NO_QUEUE with coccinelle
  2016-10-18 13:57 [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Sven Eckelmann
                   ` (4 preceding siblings ...)
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 5/8] batman-adv: Remove replacement compat script Sven Eckelmann
@ 2016-10-18 13:57 ` Sven Eckelmann
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 7/8] batman-adv: compat: Move get_link_net patch to coccinelle Sven Eckelmann
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: Sven Eckelmann @ 2016-10-18 13:57 UTC (permalink / raw)
  To: b.a.t.m.a.n

Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
v3:
 - no changes
v2:
 - new patch
---
 compat-patches/0003-iff-no-queue.cocci | 9 +++++++++
 compat.h                               | 6 ------
 2 files changed, 9 insertions(+), 6 deletions(-)
 create mode 100644 compat-patches/0003-iff-no-queue.cocci

diff --git a/compat-patches/0003-iff-no-queue.cocci b/compat-patches/0003-iff-no-queue.cocci
new file mode 100644
index 0000000..9c95b85
--- /dev/null
+++ b/compat-patches/0003-iff-no-queue.cocci
@@ -0,0 +1,9 @@
+@@
+expression E;
+@@
+
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(4,3,0)
+ E->priv_flags |= IFF_NO_QUEUE;
++#else
++E->tx_queue_len = 0;
++#endif
diff --git a/compat.h b/compat.h
index 78de7ea..245621f 100644
--- a/compat.h
+++ b/compat.h
@@ -152,10 +152,4 @@ static int __batadv_interface_kill_vid(struct net_device *dev, __be16 proto,\
 
 #endif /* < KERNEL_VERSION(4, 0, 0) */
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 3, 0)
-
-#define IFF_NO_QUEUE	0; dev->tx_queue_len = 0
-
-#endif /* < KERNEL_VERSION(4, 3, 0) */
-
 #endif /* _NET_BATMAN_ADV_COMPAT_H_ */
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [B.A.T.M.A.N.] [PATCH v3 7/8] batman-adv: compat: Move get_link_net patch to coccinelle
  2016-10-18 13:57 [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Sven Eckelmann
                   ` (5 preceding siblings ...)
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 6/8] batman-adv: compat: Replace IFF_NO_QUEUE with coccinelle Sven Eckelmann
@ 2016-10-18 13:57 ` Sven Eckelmann
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 8/8] batman-adv: compat: Move vid api wrapper " Sven Eckelmann
  2016-10-24 11:06 ` [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Simon Wunderlich
  8 siblings, 0 replies; 10+ messages in thread
From: Sven Eckelmann @ 2016-10-18 13:57 UTC (permalink / raw)
  To: b.a.t.m.a.n

Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
v3:
 - no changes
v2:
 - new patch
---
 compat-patches/0004-get_link_net.cocci | 13 +++++++++++++
 compat.h                               |  7 -------
 2 files changed, 13 insertions(+), 7 deletions(-)
 create mode 100644 compat-patches/0004-get_link_net.cocci

diff --git a/compat-patches/0004-get_link_net.cocci b/compat-patches/0004-get_link_net.cocci
new file mode 100644
index 0000000..1ae3192
--- /dev/null
+++ b/compat-patches/0004-get_link_net.cocci
@@ -0,0 +1,13 @@
+@@
+identifier netdev, fallback_net;
+@@
+
+ static const struct net *batadv_getlink_net(const struct net_device *netdev,
+ 				             const struct net *fallback_net)
+ {
++#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)
++	return fallback_net;
++#else
+ ...
++#endif
+ }
diff --git a/compat.h b/compat.h
index 245621f..2865eeb 100644
--- a/compat.h
+++ b/compat.h
@@ -145,11 +145,4 @@ static int __batadv_interface_kill_vid(struct net_device *dev, __be16 proto,\
 
 #endif /* < KERNEL_VERSION(3, 15, 0) */
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 0, 0)
-
-/* WARNING for batadv_getlink_net */
-#define get_link_net get_xstats_size || 1 || netdev->rtnl_link_ops->get_xstats_size
-
-#endif /* < KERNEL_VERSION(4, 0, 0) */
-
 #endif /* _NET_BATMAN_ADV_COMPAT_H_ */
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [B.A.T.M.A.N.] [PATCH v3 8/8] batman-adv: compat: Move vid api wrapper to coccinelle
  2016-10-18 13:57 [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Sven Eckelmann
                   ` (6 preceding siblings ...)
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 7/8] batman-adv: compat: Move get_link_net patch to coccinelle Sven Eckelmann
@ 2016-10-18 13:57 ` Sven Eckelmann
  2016-10-24 11:06 ` [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Simon Wunderlich
  8 siblings, 0 replies; 10+ messages in thread
From: Sven Eckelmann @ 2016-10-18 13:57 UTC (permalink / raw)
  To: b.a.t.m.a.n

Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
v3:
 - no changes
v2:
 - new patch
---
 compat-include/linux/netdevice.h        |  6 +++
 compat-patches/0005-vid-callbacks.cocci | 74 +++++++++++++++++++++++++++++++++
 compat.h                                | 54 ------------------------
 3 files changed, 80 insertions(+), 54 deletions(-)
 create mode 100644 compat-patches/0005-vid-callbacks.cocci

diff --git a/compat-include/linux/netdevice.h b/compat-include/linux/netdevice.h
index fb5b519..0de9d78 100644
--- a/compat-include/linux/netdevice.h
+++ b/compat-include/linux/netdevice.h
@@ -28,6 +28,12 @@
 
 #include <linux/netdev_features.h>
 
+#define __vid_api_returntype void
+
+#else
+
+#define __vid_api_returntype int
+
 #endif /* < KERNEL_VERSION(3, 3, 0) */
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)
diff --git a/compat-patches/0005-vid-callbacks.cocci b/compat-patches/0005-vid-callbacks.cocci
new file mode 100644
index 0000000..2cebc0e
--- /dev/null
+++ b/compat-patches/0005-vid-callbacks.cocci
@@ -0,0 +1,74 @@
+@ add_assignment @
+identifier batadv_interface_add_vid, batadv_netdev_ops;
+@@
+
+ struct net_device_ops batadv_netdev_ops = {
+ 	.ndo_vlan_rx_add_vid = batadv_interface_add_vid,
+ };
+
+@ kill_assignment @
+identifier batadv_interface_kill_vid, batadv_netdev_ops;
+@@
+
+ struct net_device_ops batadv_netdev_ops = {
+ 	.ndo_vlan_rx_kill_vid = batadv_interface_kill_vid,
+ };
+
+@ add_vid @
+identifier add_assignment.batadv_interface_add_vid;
+type be16;
+identifier dev, proto, vid;
+@@
+
+-batadv_interface_add_vid
++batadv_interface_add_vid_orig
+			       (struct net_device *dev, be16 proto,
+				unsigned short vid)
+ { ... }
+
++static __vid_api_returntype batadv_interface_add_vid(struct net_device *dev,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
++			   			      be16 proto,
++#endif
++			   			      unsigned short vid)
++{
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
++    be16 proto = htons(ETH_P_8021Q);
++#endif
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)
++	batadv_interface_add_vid_orig(dev, proto, vid);
++#else
++	return batadv_interface_add_vid_orig(dev, proto, vid);
++#endif
++}
+
+
+@ kill_vid @
+identifier kill_assignment.batadv_interface_kill_vid;
+type be16;
+identifier dev, proto, vid;
+@@
+
+-batadv_interface_kill_vid
++batadv_interface_kill_vid_orig
+			       (struct net_device *dev, be16 proto,
+				unsigned short vid)
+ { ... }
+
++static __vid_api_returntype batadv_interface_kill_vid(struct net_device *dev,
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 10, 0)
++			   			       be16 proto,
++#endif
++			   			       unsigned short vid)
++{
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
++    be16 proto = htons(ETH_P_8021Q);
++#endif
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)
++	batadv_interface_kill_vid_orig(dev, proto, vid);
++#else
++	return batadv_interface_kill_vid_orig(dev, proto, vid);
++#endif
++}
diff --git a/compat.h b/compat.h
index 2865eeb..d59fb5f 100644
--- a/compat.h
+++ b/compat.h
@@ -42,31 +42,6 @@
 
 #endif /* < KERNEL_VERSION(3, 9, 0) */
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 3, 0)
-
-#define batadv_interface_add_vid(x, y, z) \
-__batadv_interface_add_vid(struct net_device *dev, __be16 proto,\
-                          unsigned short vid);\
-static void batadv_interface_add_vid(struct net_device *dev, unsigned short vid)\
-{\
-       __batadv_interface_add_vid(dev, htons(ETH_P_8021Q), vid);\
-}\
-static int __batadv_interface_add_vid(struct net_device *dev, __be16 proto,\
-                                     unsigned short vid)
-
-#define batadv_interface_kill_vid(x, y, z) \
-__batadv_interface_kill_vid(struct net_device *dev, __be16 proto,\
-                           unsigned short vid);\
-static void batadv_interface_kill_vid(struct net_device *dev,\
-                                     unsigned short vid)\
-{\
-       __batadv_interface_kill_vid(dev, htons(ETH_P_8021Q), vid);\
-}\
-static int __batadv_interface_kill_vid(struct net_device *dev, __be16 proto,\
-                                      unsigned short vid)
-
-#endif /* < KERNEL_VERSION(3, 3, 0) */
-
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)
 
 #define batadv_interface_set_mac_addr(x, y) \
@@ -95,35 +70,6 @@ static int __batadv_interface_tx(struct sk_buff *skb, \
 
 #endif /* < KERNEL_VERSION(3, 9, 0) */
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 10, 0)
-
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 3, 0)
-
-#define batadv_interface_add_vid(x, y, z) \
-__batadv_interface_add_vid(struct net_device *dev, __be16 proto,\
-			   unsigned short vid);\
-static int batadv_interface_add_vid(struct net_device *dev, unsigned short vid)\
-{\
-	return __batadv_interface_add_vid(dev, htons(ETH_P_8021Q), vid);\
-}\
-static int __batadv_interface_add_vid(struct net_device *dev, __be16 proto,\
-				      unsigned short vid)
-
-#define batadv_interface_kill_vid(x, y, z) \
-__batadv_interface_kill_vid(struct net_device *dev, __be16 proto,\
-			    unsigned short vid);\
-static int batadv_interface_kill_vid(struct net_device *dev,\
-				     unsigned short vid)\
-{\
-	return __batadv_interface_kill_vid(dev, htons(ETH_P_8021Q), vid);\
-}\
-static int __batadv_interface_kill_vid(struct net_device *dev, __be16 proto,\
-				       unsigned short vid)
-
-#endif /* >= KERNEL_VERSION(3, 3, 0) */
-
-#endif /* < KERNEL_VERSION(3, 10, 0) */
-
 #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 15, 0)
 
 /* the expected behaviour of this function is to return 0 on success, therefore
-- 
2.9.3


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches
  2016-10-18 13:57 [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Sven Eckelmann
                   ` (7 preceding siblings ...)
  2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 8/8] batman-adv: compat: Move vid api wrapper " Sven Eckelmann
@ 2016-10-24 11:06 ` Simon Wunderlich
  8 siblings, 0 replies; 10+ messages in thread
From: Simon Wunderlich @ 2016-10-24 11:06 UTC (permalink / raw)
  To: b.a.t.m.a.n

[-- Attachment #1: Type: text/plain, Size: 388 bytes --]

On Tuesday, October 18, 2016 3:57:03 PM CEST Sven Eckelmann wrote:
> Hi,
> 
> here is the updated patchset to get complex compat patches support in
> batman- adv. The initial three patches of the last patchset [1] are already
> part of batman-adv.git next. This part is mostly about getting
> coccinelle/spatch to work.
> 
> Changes in v3:

Applied in d4d360d..7f40f38

Thanks,
     Simon

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 801 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-10-24 11:06 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-18 13:57 [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Sven Eckelmann
2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 1/8] batman-adv: Mark batadv_netlink_ops as const Sven Eckelmann
2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 2/8] batman-adv: Add support for coccinelle in compat-patches Sven Eckelmann
2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 3/8] batman-adv: compat: Port netlink port hack to coccinelle Sven Eckelmann
2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 4/8] batman-adv: compat: Move netlink const compat " Sven Eckelmann
2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 5/8] batman-adv: Remove replacement compat script Sven Eckelmann
2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 6/8] batman-adv: compat: Replace IFF_NO_QUEUE with coccinelle Sven Eckelmann
2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 7/8] batman-adv: compat: Move get_link_net patch to coccinelle Sven Eckelmann
2016-10-18 13:57 ` [B.A.T.M.A.N.] [PATCH v3 8/8] batman-adv: compat: Move vid api wrapper " Sven Eckelmann
2016-10-24 11:06 ` [B.A.T.M.A.N.] [PATCH v3 0/8] batman-adv: Support for complex compat patches Simon Wunderlich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.