netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/3] pull request for net-next: batman-adv 2020-05-26
@ 2020-05-26 10:00 Simon Wunderlich
  2020-05-26 10:00 ` [PATCH 1/3] batman-adv: Revert "Drop lockdep.h include for soft-interface.c" Simon Wunderlich
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Simon Wunderlich @ 2020-05-26 10:00 UTC (permalink / raw)
  To: davem; +Cc: netdev, b.a.t.m.a.n, Simon Wunderlich

Hi David,

here is a small cleanup pull request of batman-adv to go into net-next.

Please pull or let me know of any problem!

Thank you,
      Simon

The following changes since commit 1a33e10e4a95cb109ff1145098175df3113313ef:

  net: partially revert dynamic lockdep key changes (2020-05-04 12:05:56 -0700)

are available in the Git repository at:

  git://git.open-mesh.org/linux-merge.git tags/batadv-next-for-davem-20200526

for you to fetch changes up to 9ad346c90509ebd983f60da7d082f261ad329507:

  batman-adv: Revert "disable ethtool link speed detection when auto negotiation off" (2020-05-26 09:23:33 +0200)

----------------------------------------------------------------
This cleanup patchset includes the following patches:

 - Fix revert dynamic lockdep key changes for batman-adv,
   by Sven Eckelmann

 - use rcu_replace_pointer() where appropriate, by Antonio Quartulli

 - Revert "disable ethtool link speed detection when auto negotiation
   off", by Sven Eckelmann

----------------------------------------------------------------
Antonio Quartulli (1):
      batman-adv: use rcu_replace_pointer() where appropriate

Sven Eckelmann (2):
      batman-adv: Revert "Drop lockdep.h include for soft-interface.c"
      batman-adv: Revert "disable ethtool link speed detection when auto negotiation off"

 net/batman-adv/bat_v_elp.c      | 15 +--------------
 net/batman-adv/gateway_client.c |  4 ++--
 net/batman-adv/hard-interface.c |  4 ++--
 net/batman-adv/routing.c        |  4 ++--
 net/batman-adv/soft-interface.c |  1 +
 5 files changed, 8 insertions(+), 20 deletions(-)

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

* [PATCH 1/3] batman-adv: Revert "Drop lockdep.h include for soft-interface.c"
  2020-05-26 10:00 [PATCH 0/3] pull request for net-next: batman-adv 2020-05-26 Simon Wunderlich
@ 2020-05-26 10:00 ` Simon Wunderlich
  2020-05-26 10:00 ` [PATCH 2/3] batman-adv: use rcu_replace_pointer() where appropriate Simon Wunderlich
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Simon Wunderlich @ 2020-05-26 10:00 UTC (permalink / raw)
  To: davem; +Cc: netdev, b.a.t.m.a.n, Sven Eckelmann, Simon Wunderlich

From: Sven Eckelmann <sven@narfation.org>

The commit 1a33e10e4a95 ("net: partially revert dynamic lockdep key
changes") reverts the commit ab92d68fc22f ("net: core: add generic lockdep
keys"). But it forgot to also revert the commit 5759af0682b3 ("batman-adv:
Drop lockdep.h include for soft-interface.c") which depends on the latter.

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
---
 net/batman-adv/soft-interface.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/net/batman-adv/soft-interface.c b/net/batman-adv/soft-interface.c
index 822af540b854..0ddd80130ea3 100644
--- a/net/batman-adv/soft-interface.c
+++ b/net/batman-adv/soft-interface.c
@@ -22,6 +22,7 @@
 #include <linux/kernel.h>
 #include <linux/kref.h>
 #include <linux/list.h>
+#include <linux/lockdep.h>
 #include <linux/netdevice.h>
 #include <linux/netlink.h>
 #include <linux/percpu.h>
-- 
2.20.1


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

* [PATCH 2/3] batman-adv: use rcu_replace_pointer() where appropriate
  2020-05-26 10:00 [PATCH 0/3] pull request for net-next: batman-adv 2020-05-26 Simon Wunderlich
  2020-05-26 10:00 ` [PATCH 1/3] batman-adv: Revert "Drop lockdep.h include for soft-interface.c" Simon Wunderlich
@ 2020-05-26 10:00 ` Simon Wunderlich
  2020-05-26 10:00 ` [PATCH 3/3] batman-adv: Revert "disable ethtool link speed detection when auto negotiation off" Simon Wunderlich
  2020-05-26 22:19 ` [PATCH 0/3] pull request for net-next: batman-adv 2020-05-26 David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: Simon Wunderlich @ 2020-05-26 10:00 UTC (permalink / raw)
  To: davem
  Cc: netdev, b.a.t.m.a.n, Antonio Quartulli, Sven Eckelmann,
	Simon Wunderlich

From: Antonio Quartulli <a@unstable.cc>

In commit a63fc6b75cca ("rcu: Upgrade rcu_swap_protected() to
rcu_replace_pointer()") a new helper macro named rcu_replace_pointer() was
introduced to simplify code requiring to switch an rcu pointer to a new
value while extracting the old one.

Use rcu_replace_pointer() where appropriate to make code slimer.

Signed-off-by: Antonio Quartulli <a@unstable.cc>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
---
 net/batman-adv/gateway_client.c | 4 ++--
 net/batman-adv/hard-interface.c | 4 ++--
 net/batman-adv/routing.c        | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/net/batman-adv/gateway_client.c b/net/batman-adv/gateway_client.c
index e22e49289677..a18dcc686dc3 100644
--- a/net/batman-adv/gateway_client.c
+++ b/net/batman-adv/gateway_client.c
@@ -146,8 +146,8 @@ static void batadv_gw_select(struct batadv_priv *bat_priv,
 	if (new_gw_node)
 		kref_get(&new_gw_node->refcount);
 
-	curr_gw_node = rcu_dereference_protected(bat_priv->gw.curr_gw, 1);
-	rcu_assign_pointer(bat_priv->gw.curr_gw, new_gw_node);
+	curr_gw_node = rcu_replace_pointer(bat_priv->gw.curr_gw, new_gw_node,
+					   true);
 
 	if (curr_gw_node)
 		batadv_gw_node_put(curr_gw_node);
diff --git a/net/batman-adv/hard-interface.c b/net/batman-adv/hard-interface.c
index c7e98a40dd33..3a256af92784 100644
--- a/net/batman-adv/hard-interface.c
+++ b/net/batman-adv/hard-interface.c
@@ -473,8 +473,8 @@ static void batadv_primary_if_select(struct batadv_priv *bat_priv,
 	if (new_hard_iface)
 		kref_get(&new_hard_iface->refcount);
 
-	curr_hard_iface = rcu_dereference_protected(bat_priv->primary_if, 1);
-	rcu_assign_pointer(bat_priv->primary_if, new_hard_iface);
+	curr_hard_iface = rcu_replace_pointer(bat_priv->primary_if,
+					      new_hard_iface, 1);
 
 	if (!new_hard_iface)
 		goto out;
diff --git a/net/batman-adv/routing.c b/net/batman-adv/routing.c
index 3632bd976c56..d343382e9664 100644
--- a/net/batman-adv/routing.c
+++ b/net/batman-adv/routing.c
@@ -71,13 +71,13 @@ static void _batadv_update_route(struct batadv_priv *bat_priv,
 	 * the code needs to ensure the curr_router variable contains a pointer
 	 * to the replaced best neighbor.
 	 */
-	curr_router = rcu_dereference_protected(orig_ifinfo->router, true);
 
 	/* increase refcount of new best neighbor */
 	if (neigh_node)
 		kref_get(&neigh_node->refcount);
 
-	rcu_assign_pointer(orig_ifinfo->router, neigh_node);
+	curr_router = rcu_replace_pointer(orig_ifinfo->router, neigh_node,
+					  true);
 	spin_unlock_bh(&orig_node->neigh_list_lock);
 	batadv_orig_ifinfo_put(orig_ifinfo);
 
-- 
2.20.1


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

* [PATCH 3/3] batman-adv: Revert "disable ethtool link speed detection when auto negotiation off"
  2020-05-26 10:00 [PATCH 0/3] pull request for net-next: batman-adv 2020-05-26 Simon Wunderlich
  2020-05-26 10:00 ` [PATCH 1/3] batman-adv: Revert "Drop lockdep.h include for soft-interface.c" Simon Wunderlich
  2020-05-26 10:00 ` [PATCH 2/3] batman-adv: use rcu_replace_pointer() where appropriate Simon Wunderlich
@ 2020-05-26 10:00 ` Simon Wunderlich
  2020-05-26 22:19 ` [PATCH 0/3] pull request for net-next: batman-adv 2020-05-26 David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: Simon Wunderlich @ 2020-05-26 10:00 UTC (permalink / raw)
  To: davem
  Cc: netdev, b.a.t.m.a.n, Sven Eckelmann, Matthias Schiffer,
	Simon Wunderlich

From: Sven Eckelmann <sven@narfation.org>

The commit 8c46fcd78308 ("batman-adv: disable ethtool link speed detection
when auto negotiation off") disabled the usage of ethtool's link_ksetting
when auto negotation was enabled due to invalid values when used with
tun/tap virtual net_devices. According to the patch, automatic measurements
should be used for these kind of interfaces.

But there are major flaws with this argumentation:

* automatic measurements are not implemented
* auto negotiation has nothing to do with the validity of the retrieved
  values

The first point has to be fixed by a longer patch series. The "validity"
part of the second point must be addressed in the same patch series by
dropping the usage of ethtool's link_ksetting (thus always doing automatic
measurements over ethernet).

Drop the patch again to have more default values for various net_device
types/configurations. The user can still overwrite them using the
batadv_hardif's BATADV_ATTR_THROUGHPUT_OVERRIDE.

Reported-by: Matthias Schiffer <mschiffer@universe-factory.net>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <sw@simonwunderlich.de>
---
 net/batman-adv/bat_v_elp.c | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

diff --git a/net/batman-adv/bat_v_elp.c b/net/batman-adv/bat_v_elp.c
index 353e49c40e7f..0bdefa35da98 100644
--- a/net/batman-adv/bat_v_elp.c
+++ b/net/batman-adv/bat_v_elp.c
@@ -127,20 +127,7 @@ static u32 batadv_v_elp_get_throughput(struct batadv_hardif_neigh_node *neigh)
 	rtnl_lock();
 	ret = __ethtool_get_link_ksettings(hard_iface->net_dev, &link_settings);
 	rtnl_unlock();
-
-	/* Virtual interface drivers such as tun / tap interfaces, VLAN, etc
-	 * tend to initialize the interface throughput with some value for the
-	 * sake of having a throughput number to export via ethtool. This
-	 * exported throughput leaves batman-adv to conclude the interface
-	 * throughput is genuine (reflecting reality), thus no measurements
-	 * are necessary.
-	 *
-	 * Based on the observation that those interface types also tend to set
-	 * the link auto-negotiation to 'off', batman-adv shall check this
-	 * setting to differentiate between genuine link throughput information
-	 * and placeholders installed by virtual interfaces.
-	 */
-	if (ret == 0 && link_settings.base.autoneg == AUTONEG_ENABLE) {
+	if (ret == 0) {
 		/* link characteristics might change over time */
 		if (link_settings.base.duplex == DUPLEX_FULL)
 			hard_iface->bat_v.flags |= BATADV_FULL_DUPLEX;
-- 
2.20.1


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

* Re: [PATCH 0/3] pull request for net-next: batman-adv 2020-05-26
  2020-05-26 10:00 [PATCH 0/3] pull request for net-next: batman-adv 2020-05-26 Simon Wunderlich
                   ` (2 preceding siblings ...)
  2020-05-26 10:00 ` [PATCH 3/3] batman-adv: Revert "disable ethtool link speed detection when auto negotiation off" Simon Wunderlich
@ 2020-05-26 22:19 ` David Miller
  3 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2020-05-26 22:19 UTC (permalink / raw)
  To: sw; +Cc: netdev, b.a.t.m.a.n

From: Simon Wunderlich <sw@simonwunderlich.de>
Date: Tue, 26 May 2020 12:00:04 +0200

> here is a small cleanup pull request of batman-adv to go into net-next.
> 
> Please pull or let me know of any problem!

Pulled, thanks Simon.

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

end of thread, other threads:[~2020-05-26 22:19 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-05-26 10:00 [PATCH 0/3] pull request for net-next: batman-adv 2020-05-26 Simon Wunderlich
2020-05-26 10:00 ` [PATCH 1/3] batman-adv: Revert "Drop lockdep.h include for soft-interface.c" Simon Wunderlich
2020-05-26 10:00 ` [PATCH 2/3] batman-adv: use rcu_replace_pointer() where appropriate Simon Wunderlich
2020-05-26 10:00 ` [PATCH 3/3] batman-adv: Revert "disable ethtool link speed detection when auto negotiation off" Simon Wunderlich
2020-05-26 22:19 ` [PATCH 0/3] pull request for net-next: batman-adv 2020-05-26 David Miller

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).