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 --]
next prev parent 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