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

From b810a3fa1168abe9f8d21f0d9c2b19f5ecf81e0e Mon Sep 17 00:00:00 2001
From: Marek Lindner <[email protected]>
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

From df56faedb87a4beddbe8b478210bf71ebdfd7de5 Mon Sep 17 00:00:00 2001
From: Marek Lindner <[email protected]>
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

From 05f48d1e40e55097ac960dc2a8a50d594cf967a8 Mon Sep 17 00:00:00 2001
From: Marek Lindner <[email protected]>
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: signature.asc
Description: This is a digitally signed message part.

Reply via email to