From patchwork Thu Feb 19 09:40:34 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marek Lindner X-Patchwork-Id: 4343 Return-Path: Received-SPF: Softfail (domain owner discourages use of this host) identity=mailfrom; client-ip=5.148.176.57; helo=s1.neomailbox.net; envelope-from=mareklindner@neomailbox.ch; receiver=b.a.t.m.a.n@lists.open-mesh.org Received: from s1.neomailbox.net (s1.neomailbox.net [5.148.176.57]) by open-mesh.org (Postfix) with ESMTPS id 5CE74600B71 for ; Thu, 19 Feb 2015 10:40:42 +0100 (CET) From: Marek Lindner To: The list for a Better Approach To Mobile Ad-hoc Networking Date: Thu, 19 Feb 2015 17:40:34 +0800 Message-ID: <1485649.labZ4ZGvMV@voltaire> User-Agent: KMail/4.14.2 (Linux/3.16.0-4-amd64; KDE/4.14.2; x86_64; ; ) In-Reply-To: References: <1549090.s6anOn0kWk@voltaire> MIME-Version: 1.0 Subject: Re: [B.A.T.M.A.N.] Antwort: Re: Antwort: Antwort: Re: Antwort: Re: Question concerning batman-adv bug #173 "Mesh packets on bat0" X-BeenThere: b.a.t.m.a.n@lists.open-mesh.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: The list for a Better Approach To Mobile Ad-hoc Networking List-Id: The list for a Better Approach To Mobile Ad-hoc Networking List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Feb 2015 09:40:43 -0000 On Thursday, February 19, 2015 09:31:08 Andreas Pape wrote: > the problem seems to be a little bit more complex. Your latest patch does > not solve the problem. > > But I found out, that commenting out the following line in your patch > makes bat0 work: > > slave->master = master; > > But as this is the core of "enslaving" a device to a master device, this > breaks the complete concept behind this I guess (I'm not a skilled kernel > developer). From this I conclude that there might be a bug somewhere > deeper in the kernel version I use. I don't want to give up too early, > but it looks a little bit as if this "enslaving concept using rtnl" might > not be usable in these older kernels. What do you think? Please try the attached patch instead. This time we are replacing the function with our own function doing nothing at all. The net_dev->master variable seems to be reserved for interface bonding and shouldn't be touched at all on these ancient kernels. Cheers, Marek From b115b2a7025e00b8f0c345b7bcf1796282c9223d Mon Sep 17 00:00:00 2001 From: Marek Lindner Date: Thu, 19 Feb 2015 12:03:39 +0800 Subject: [PATCH] batman-adv: ignore netdev_set_master() calls on kernels older than 2.6.39 batman-adv calls netdev_master_upper_dev_link() which is replaced with with netdev_set_master() for kernels older than 3.9 via compat.h. Prior to 2.6.39 netdev_set_master() contained Linux bonding calls needed to setup bonding devices. Calling this function from batman-adv leads to unexpected behavior when current batman-adv versions are used on these older kernels. To fix the situation compat.h now ships its own implementation of netdev_set_master() which does not change the net_dev->master state on kernels older than 2.6.39. Reported-by: Andreas Pape Signed-off-by: Marek Lindner --- compat.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/compat.h b/compat.h index 27d8a21..916d447 100644 --- a/compat.h +++ b/compat.h @@ -191,6 +191,15 @@ static inline int batadv_param_set_copystring(const char *val, #define kstrtoul strict_strtoul #define kstrtol strict_strtol +/* On older kernels net_dev->master is reserved for iface bonding */ +static inline int batadv_netdev_set_master(struct net_device *slave, + struct net_device *master) +{ + return 0; +} + +#define netdev_set_master batadv_netdev_set_master + /* Hack for removing ndo_add/del_slave at the end of net_device_ops. * This is somewhat ugly because it requires that ndo_validate_addr * is at the end of this struct in soft-interface.c. -- 2.1.4