public inbox for b.a.t.m.a.n@lists.open-mesh.org
 help / color / mirror / Atom feed
From: Marek Lindner <mareklindner@neomailbox.ch>
To: The list for a Better Approach To Mobile Ad-hoc Networking
	<b.a.t.m.a.n@lists.open-mesh.org>
Subject: Re: [B.A.T.M.A.N.] Antwort: Re: Question concerning batman-adv bug #173 "Mesh	packets on bat0"
Date: Wed, 18 Feb 2015 21:55:49 +0800	[thread overview]
Message-ID: <6979890.dWcEGHjvn6@voltaire> (raw)
In-Reply-To: <OF6FAED1E7.E0D6E49C-ONC1257DF0.0042D59F-C1257DF0.00448642@phoenixcontact.com>


[-- Attachment #1.1: Type: text/plain, Size: 7330 bytes --]

=2D-nextPart45976363.ZZJ1fLcevV
Content-Transfer-Encoding: 7Bit
Content-Type: text/plain; charset="us-ascii"

On Wednesday, February 18, 2015 13:28:27 Andreas Pape wrote:
> I adapted your patch to batman-adv-2014.4.0 without success. I got the 
> additional issue that with the patched version of batman-adv I was not 
> able to destroy the virtual wireless interface anymore used fot the adhoc 
> connection over which I try to use batman-adv (error message was: 
> unregister_netdevice: waiting for ath0 to become free).

It is very possible that the supplied patches have side effects. Right now, I 
am trying to figure out which part of the code introduced with 2013.2.0 causes 
the malfunction. I prepared some more patches which deactivate more code, most 
notably rtnl code added with 2013.2.0. Please give it a try and let me know 
how it goes.


> 
> With the unpatched 2014.4.0 I did the following test on two of my devices:
> 
> 1. created a virtual wireless interface ath0 in adhoc mode
> 2. iwconfig ath0 essid TEST
> 3. iwconfig ath0 channel 40
> 4. ifconfig ath0 up
> 5. batctl if add ath0
> 
> After this the two devices connected and I could see the repective 
> neighbor via the batctl o command on both devices. So far so good. 

At this point the mesh is working to your expectation ? Can you transport 
payload across the mesh ? If so, this is a deviation from #173 - wouldn't you 
agree ?


> But I can see via batctl td bat0 OGM packets sent with the MAC address of 
> the wlan interface of the device itself and also from the neigbour this 
> device is connected to via wlan. Is this OK?

Yes, batman-adv continues to use the mac addresses of the interfaces you 
configure.


Cheers,
Marek


=2D-nextPart45976363.ZZJ1fLcevV
Content-Disposition: attachment; filename="0001-do-not-call-master-netdev_ops-ndo_init.patch"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="UTF-8"; name="0001-do-not-call-master-netdev_ops-ndo_init.patch"

From=20b810a3fa1168abe9f8d21f0d9c2b19f5ecf81e0e Mon Sep 17 00:00:00 2001
From: Marek Lindner <mareklindner@neomailbox.ch>
Date: Wed, 18 Feb 2015 19:24:06 +0800
Subject: [PATCH 1/3] do not call master->netdev_ops->ndo_init

=2D--
 hard-interface.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/hard-interface.c b/hard-interface.c
index fbda6b5..010a403 100644
=2D-- a/hard-interface.c
+++ b/hard-interface.c
@@ -349,7 +349,7 @@ batadv_hardif_deactivate_interface(struct batadv_hard_iface *hard_iface)
  * is free'd and master can correctly change its internal state.
  * Return 0 on success, a negative value representing the error otherwise
  */
=2Dstatic int batadv_master_del_slave(struct batadv_hard_iface *slave,
+/*tatic int batadv_master_del_slave(struct batadv_hard_iface *slave,
 				   struct net_device *master)
 {
 	int ret;
@@ -362,7 +362,7 @@ static int batadv_master_del_slave(struct batadv_hard_iface *slave,
 		ret = master->netdev_ops->ndo_del_slave(master, slave->net_dev);
 
 	return ret;
=2D}
+}*/
 
 int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
 				   const char *iface_name)
@@ -403,10 +403,10 @@ int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
 	/* check if the interface is enslaved in another virtual one and
 	 * in that case unlink it first
 	 */
=2D	master = netdev_master_upper_dev_get(hard_iface->net_dev);
+	/* master = netdev_master_upper_dev_get(hard_iface->net_dev);
 	ret = batadv_master_del_slave(hard_iface, master);
 	if (ret)
=2D		goto err_dev;
+		goto err_dev; */
 
 	hard_iface->soft_iface = soft_iface;
 	bat_priv = netdev_priv(hard_iface->soft_iface);
=2D- 
2.1.4


=2D-nextPart45976363.ZZJ1fLcevV
Content-Disposition: attachment; filename="0002-remove-netdev_-calls.patch"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="UTF-8"; name="0002-remove-netdev_-calls.patch"

From=20df56faedb87a4beddbe8b478210bf71ebdfd7de5 Mon Sep 17 00:00:00 2001
From: Marek Lindner <mareklindner@neomailbox.ch>
Date: Wed, 18 Feb 2015 21:18:05 +0800
Subject: [PATCH 2/3] remove netdev_* calls

=2D--
 hard-interface.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/hard-interface.c b/hard-interface.c
index 010a403..64ef086 100644
=2D-- a/hard-interface.c
+++ b/hard-interface.c
@@ -411,9 +411,9 @@ int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
 	hard_iface->soft_iface = soft_iface;
 	bat_priv = netdev_priv(hard_iface->soft_iface);
 
=2D	ret = netdev_master_upper_dev_link(hard_iface->net_dev, soft_iface);
+	/*ret = netdev_master_upper_dev_link(hard_iface->net_dev, soft_iface);
 	if (ret)
=2D		goto err_dev;
+		goto err_dev;*/
 
 	ret = bat_priv->bat_algo_ops->bat_iface_enable(hard_iface);
 	if (ret < 0)
@@ -466,7 +466,7 @@ out:
 	return 0;
 
 err_upper:
=2D	netdev_upper_dev_unlink(hard_iface->net_dev, soft_iface);
+	/*netdev_upper_dev_unlink(hard_iface->net_dev, soft_iface);*/
 err_dev:
 	hard_iface->soft_iface = NULL;
 	dev_put(soft_iface);
@@ -521,7 +521,7 @@ void batadv_hardif_disable_interface(struct batadv_hard_iface *hard_iface,
 			batadv_softif_destroy_sysfs(hard_iface->soft_iface);
 	}
 
=2D	netdev_upper_dev_unlink(hard_iface->net_dev, hard_iface->soft_iface);
+	/*netdev_upper_dev_unlink(hard_iface->net_dev, hard_iface->soft_iface);*/
 	hard_iface->soft_iface = NULL;
 	batadv_hardif_free_ref(hard_iface);
 
=2D- 
2.1.4


=2D-nextPart45976363.ZZJ1fLcevV
Content-Disposition: attachment; filename="0003-remove-ndo-workarounds.patch"
Content-Transfer-Encoding: 7Bit
Content-Type: text/x-patch; charset="UTF-8"; name="0003-remove-ndo-workarounds.patch"

From=2005f48d1e40e55097ac960dc2a8a50d594cf967a8 Mon Sep 17 00:00:00 2001
From: Marek Lindner <mareklindner@neomailbox.ch>
Date: Wed, 18 Feb 2015 21:44:02 +0800
Subject: [PATCH 3/3] remove ndo workarounds

=2D--
 compat.h         | 14 --------------
 soft-interface.c |  2 --
 2 files changed, 16 deletions(-)

diff --git a/compat.h b/compat.h
index 27d8a21..c3796a8 100644
=2D-- a/compat.h
+++ b/compat.h
@@ -191,20 +191,6 @@ static inline int batadv_param_set_copystring(const char *val,
 #define kstrtoul strict_strtoul
 #define kstrtol  strict_strtol
 
=2D/* Hack for removing ndo_add/del_slave at the end of net_device_ops.
=2D * This is somewhat ugly because it requires that ndo_validate_addr
=2D * is at the end of this struct in soft-interface.c.
=2D */
=2D#define ndo_validate_addr \
=2D	ndo_validate_addr = eth_validate_addr, \
=2D}; \
=2Dstatic const struct { \
=2D	void *ndo_validate_addr; \
=2D	void *ndo_add_slave; \
=2D	void *ndo_del_slave; \
=2D} __attribute__((unused)) __useless_ops1 = { \
=2D	.ndo_validate_addr
=2D
 #define ndo_del_slave          ndo_init
 #define ndo_init(x, y)         ndo_init - master->netdev_ops->ndo_init - EBUSY
 
diff --git a/soft-interface.c b/soft-interface.c
index 8748987..a73ebd0 100644
=2D-- a/soft-interface.c
+++ b/soft-interface.c
@@ -874,8 +874,6 @@ static const struct net_device_ops batadv_netdev_ops = {
 	.ndo_set_rx_mode = batadv_interface_set_rx_mode,
 	.ndo_start_xmit = batadv_interface_tx,
 	.ndo_validate_addr = eth_validate_addr,
=2D	.ndo_add_slave = batadv_softif_slave_add,
=2D	.ndo_del_slave = batadv_softif_slave_del,
 };
 
 /**
=2D- 
2.1.4


=2D-nextPart45976363.ZZJ1fLcevV--
This is a multi-part message in MIME format.

[-- Attachment #1.2: Type: text/plain, Size: 1605 bytes --]

On Wednesday, February 18, 2015 13:28:27 Andreas Pape wrote:
> I adapted your patch to batman-adv-2014.4.0 without success. I got the 
> additional issue that with the patched version of batman-adv I was not 
> able to destroy the virtual wireless interface anymore used fot the adhoc 
> connection over which I try to use batman-adv (error message was: 
> unregister_netdevice: waiting for ath0 to become free).

It is very possible that the supplied patches have side effects. Right now, I 
am trying to figure out which part of the code introduced with 2013.2.0 causes 
the malfunction. I prepared some more patches which deactivate more code, most 
notably rtnl code added with 2013.2.0. Please give it a try and let me know 
how it goes.


> 
> With the unpatched 2014.4.0 I did the following test on two of my devices:
> 
> 1. created a virtual wireless interface ath0 in adhoc mode
> 2. iwconfig ath0 essid TEST
> 3. iwconfig ath0 channel 40
> 4. ifconfig ath0 up
> 5. batctl if add ath0
> 
> After this the two devices connected and I could see the repective 
> neighbor via the batctl o command on both devices. So far so good. 

At this point the mesh is working to your expectation ? Can you transport 
payload across the mesh ? If so, this is a deviation from #173 - wouldn't you 
agree ?


> But I can see via batctl td bat0 OGM packets sent with the MAC address of 
> the wlan interface of the device itself and also from the neigbour this 
> device is connected to via wlan. Is this OK?

Yes, batman-adv continues to use the mac addresses of the interfaces you 
configure.


Cheers,
Marek


[-- Attachment #1.3: 0001-do-not-call-master-netdev_ops-ndo_init.patch --]
[-- Type: text/x-patch, Size: 1676 bytes --]

From b810a3fa1168abe9f8d21f0d9c2b19f5ecf81e0e Mon Sep 17 00:00:00 2001
From: Marek Lindner <mareklindner@neomailbox.ch>
Date: Wed, 18 Feb 2015 19:24:06 +0800
Subject: [PATCH 1/3] do not call master->netdev_ops->ndo_init

---
 hard-interface.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/hard-interface.c b/hard-interface.c
index fbda6b5..010a403 100644
--- a/hard-interface.c
+++ b/hard-interface.c
@@ -349,7 +349,7 @@ batadv_hardif_deactivate_interface(struct batadv_hard_iface *hard_iface)
  * is free'd and master can correctly change its internal state.
  * Return 0 on success, a negative value representing the error otherwise
  */
-static int batadv_master_del_slave(struct batadv_hard_iface *slave,
+/*tatic int batadv_master_del_slave(struct batadv_hard_iface *slave,
 				   struct net_device *master)
 {
 	int ret;
@@ -362,7 +362,7 @@ static int batadv_master_del_slave(struct batadv_hard_iface *slave,
 		ret = master->netdev_ops->ndo_del_slave(master, slave->net_dev);
 
 	return ret;
-}
+}*/
 
 int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
 				   const char *iface_name)
@@ -403,10 +403,10 @@ int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
 	/* check if the interface is enslaved in another virtual one and
 	 * in that case unlink it first
 	 */
-	master = netdev_master_upper_dev_get(hard_iface->net_dev);
+	/* master = netdev_master_upper_dev_get(hard_iface->net_dev);
 	ret = batadv_master_del_slave(hard_iface, master);
 	if (ret)
-		goto err_dev;
+		goto err_dev; */
 
 	hard_iface->soft_iface = soft_iface;
 	bat_priv = netdev_priv(hard_iface->soft_iface);
-- 
2.1.4


[-- Attachment #1.4: 0002-remove-netdev_-calls.patch --]
[-- Type: text/x-patch, Size: 1497 bytes --]

From df56faedb87a4beddbe8b478210bf71ebdfd7de5 Mon Sep 17 00:00:00 2001
From: Marek Lindner <mareklindner@neomailbox.ch>
Date: Wed, 18 Feb 2015 21:18:05 +0800
Subject: [PATCH 2/3] remove netdev_* calls

---
 hard-interface.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/hard-interface.c b/hard-interface.c
index 010a403..64ef086 100644
--- a/hard-interface.c
+++ b/hard-interface.c
@@ -411,9 +411,9 @@ int batadv_hardif_enable_interface(struct batadv_hard_iface *hard_iface,
 	hard_iface->soft_iface = soft_iface;
 	bat_priv = netdev_priv(hard_iface->soft_iface);
 
-	ret = netdev_master_upper_dev_link(hard_iface->net_dev, soft_iface);
+	/*ret = netdev_master_upper_dev_link(hard_iface->net_dev, soft_iface);
 	if (ret)
-		goto err_dev;
+		goto err_dev;*/
 
 	ret = bat_priv->bat_algo_ops->bat_iface_enable(hard_iface);
 	if (ret < 0)
@@ -466,7 +466,7 @@ out:
 	return 0;
 
 err_upper:
-	netdev_upper_dev_unlink(hard_iface->net_dev, soft_iface);
+	/*netdev_upper_dev_unlink(hard_iface->net_dev, soft_iface);*/
 err_dev:
 	hard_iface->soft_iface = NULL;
 	dev_put(soft_iface);
@@ -521,7 +521,7 @@ void batadv_hardif_disable_interface(struct batadv_hard_iface *hard_iface,
 			batadv_softif_destroy_sysfs(hard_iface->soft_iface);
 	}
 
-	netdev_upper_dev_unlink(hard_iface->net_dev, hard_iface->soft_iface);
+	/*netdev_upper_dev_unlink(hard_iface->net_dev, hard_iface->soft_iface);*/
 	hard_iface->soft_iface = NULL;
 	batadv_hardif_free_ref(hard_iface);
 
-- 
2.1.4


[-- Attachment #1.5: 0003-remove-ndo-workarounds.patch --]
[-- Type: text/x-patch, Size: 1570 bytes --]

From 05f48d1e40e55097ac960dc2a8a50d594cf967a8 Mon Sep 17 00:00:00 2001
From: Marek Lindner <mareklindner@neomailbox.ch>
Date: Wed, 18 Feb 2015 21:44:02 +0800
Subject: [PATCH 3/3] remove ndo workarounds

---
 compat.h         | 14 --------------
 soft-interface.c |  2 --
 2 files changed, 16 deletions(-)

diff --git a/compat.h b/compat.h
index 27d8a21..c3796a8 100644
--- a/compat.h
+++ b/compat.h
@@ -191,20 +191,6 @@ static inline int batadv_param_set_copystring(const char *val,
 #define kstrtoul strict_strtoul
 #define kstrtol  strict_strtol
 
-/* 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.
- */
-#define ndo_validate_addr \
-	ndo_validate_addr = eth_validate_addr, \
-}; \
-static const struct { \
-	void *ndo_validate_addr; \
-	void *ndo_add_slave; \
-	void *ndo_del_slave; \
-} __attribute__((unused)) __useless_ops1 = { \
-	.ndo_validate_addr
-
 #define ndo_del_slave          ndo_init
 #define ndo_init(x, y)         ndo_init - master->netdev_ops->ndo_init - EBUSY
 
diff --git a/soft-interface.c b/soft-interface.c
index 8748987..a73ebd0 100644
--- a/soft-interface.c
+++ b/soft-interface.c
@@ -874,8 +874,6 @@ static const struct net_device_ops batadv_netdev_ops = {
 	.ndo_set_rx_mode = batadv_interface_set_rx_mode,
 	.ndo_start_xmit = batadv_interface_tx,
 	.ndo_validate_addr = eth_validate_addr,
-	.ndo_add_slave = batadv_softif_slave_add,
-	.ndo_del_slave = batadv_softif_slave_del,
 };
 
 /**
-- 
2.1.4


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

  reply	other threads:[~2015-02-18 13:55 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-18  7:35 [B.A.T.M.A.N.] Question concerning batman-adv bug #173 "Mesh packets on bat0" Andreas Pape
2015-02-18 11:26 ` Marek Lindner
2015-02-18 12:28   ` [B.A.T.M.A.N.] Antwort: " Andreas Pape
2015-02-18 13:55     ` Marek Lindner [this message]
2015-02-18 14:56       ` [B.A.T.M.A.N.] Antwort: " Andreas Pape
2015-02-18 15:22         ` [B.A.T.M.A.N.] Antwort: " Andreas Pape
2015-02-18 15:45           ` Marek Lindner
2015-02-18 16:10             ` [B.A.T.M.A.N.] Antwort: " Andreas Pape
2015-02-19  4:15               ` Marek Lindner
2015-02-19  8:31                 ` Andreas Pape
2015-02-19  9:40                   ` Marek Lindner
2015-02-19 10:28                     ` [B.A.T.M.A.N.] Antwort: " Andreas Pape
2015-02-19 10:36                       ` Marek Lindner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6979890.dWcEGHjvn6@voltaire \
    --to=mareklindner@neomailbox.ch \
    --cc=b.a.t.m.a.n@lists.open-mesh.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox