b.a.t.m.a.n.lists.open-mesh.org archive mirror
 help / color / mirror / Atom feed
From: Sven Eckelmann <sven@narfation.org>
To: b.a.t.m.a.n@lists.open-mesh.org
Cc: Jiri Pirko <jiri@mellanox.com>,
	netdev@vger.kernel.org, Sven Eckelmann <sven@narfation.org>
Subject: [B.A.T.M.A.N.] [RFC v2 18/19] batman-adv: Add throughput_override hardif genl configuration
Date: Fri, 23 Nov 2018 17:13:58 +0100	[thread overview]
Message-ID: <20181123161359.13342-19-sven@narfation.org> (raw)
In-Reply-To: <20181123161359.13342-1-sven@narfation.org>

The B.A.T.M.A.N. V implementation tries to estimate the link throughput of
an interface to an originator using different automatic methods. It is
still possible to overwrite it the link throughput for all reachable
originators via this interface.

The BATADV_CMD_SET_HARDIF/BATADV_CMD_GET_HARDIF commands allow to set/get
the configuration of this feature using the u32
BATADV_ATTR_THROUGHPUT_OVERRIDE attribute. The used unit is in 100 Kbit/s.
If the value is set to 0 then batman-adv will try to estimate the
throughput by itself.

Cc: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: Sven Eckelmann <sven@narfation.org>
---
 include/uapi/linux/batman_adv.h |  8 ++++++++
 net/batman-adv/netlink.c        | 12 ++++++++++++
 2 files changed, 20 insertions(+)

diff --git a/include/uapi/linux/batman_adv.h b/include/uapi/linux/batman_adv.h
index a4ab6bda..49ab118e 100644
--- a/include/uapi/linux/batman_adv.h
+++ b/include/uapi/linux/batman_adv.h
@@ -481,6 +481,14 @@ enum batadv_nl_attrs {
 	 */
 	BATADV_ATTR_ELP_INTERVAL,
 
+	/**
+	 * @BATADV_ATTR_THROUGHPUT_OVERRIDE: defines the throughput value to be
+	 *  used by B.A.T.M.A.N. V when estimating the link throughput using
+	 *  this interface. If the value is set to 0 then batman-adv will try to
+	 *  estimate the throughput by itself.
+	 */
+	BATADV_ATTR_THROUGHPUT_OVERRIDE,
+
 	/* add attributes above here, update the policy in netlink.c */
 
 	/**
diff --git a/net/batman-adv/netlink.c b/net/batman-adv/netlink.c
index 70ab010e..970490a4 100644
--- a/net/batman-adv/netlink.c
+++ b/net/batman-adv/netlink.c
@@ -160,6 +160,7 @@ static const struct nla_policy batadv_netlink_policy[NUM_BATADV_ATTR] = {
 	[BATADV_ATTR_NETWORK_CODING]		= { .type = NLA_U8 },
 	[BATADV_ATTR_ORIG_INTERVAL]		= { .type = NLA_U32 },
 	[BATADV_ATTR_ELP_INTERVAL]		= { .type = NLA_U32 },
+	[BATADV_ATTR_THROUGHPUT_OVERRIDE]	= { .type = NLA_U32 },
 };
 
 /**
@@ -828,6 +829,10 @@ static int batadv_netlink_hardif_put(struct sk_buff *msg,
 	if (nla_put_u32(msg, BATADV_ATTR_ELP_INTERVAL,
 			atomic_read(&hard_iface->bat_v.elp_interval)))
 		goto nla_put_failure;
+
+	if (nla_put_u32(msg, BATADV_ATTR_THROUGHPUT_OVERRIDE,
+			atomic_read(&hard_iface->bat_v.throughput_override)))
+		goto nla_put_failure;
 #endif /* CONFIG_BATMAN_ADV_BATMAN_V */
 
 	genlmsg_end(msg, hdr);
@@ -923,6 +928,13 @@ static int batadv_netlink_set_hardif(struct sk_buff *skb,
 
 		atomic_set(&hard_iface->bat_v.elp_interval, nla_get_u32(attr));
 	}
+
+	if (info->attrs[BATADV_ATTR_THROUGHPUT_OVERRIDE]) {
+		attr = info->attrs[BATADV_ATTR_THROUGHPUT_OVERRIDE];
+
+		atomic_set(&hard_iface->bat_v.throughput_override,
+			   nla_get_u32(attr));
+	}
 #endif /* CONFIG_BATMAN_ADV_BATMAN_V */
 
 	batadv_netlink_notify_hardif(bat_priv, hard_iface);
-- 
2.19.1


  parent reply	other threads:[~2018-11-23 16:13 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-23 16:13 [B.A.T.M.A.N.] [RFC v2 00/19] batman-adv: netlink restructuring, part 2 Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 01/19] batman-adv: Move common genl doit code pre/post hooks Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 02/19] batman-adv: Prepare framework for mesh genl config Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 03/19] batman-adv: Prepare framework for hardif " Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 04/19] batman-adv: Prepare framework for vlan " Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 05/19] batman-adv: Add aggregated_ogms mesh genl configuration Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 06/19] batman-adv: Add ap_isolation mesh/vlan " Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 07/19] batman-adv: Add bonding mesh " Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 08/19] batman-adv: Add bridge_loop_avoidance " Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 09/19] batman-adv: Add distributed_arp_table " Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 10/19] batman-adv: Add fragmentation " Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 11/19] batman-adv: Add gateway " Sven Eckelmann
2018-11-24 20:52   ` Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 12/19] batman-adv: Add hop_penalty " Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 13/19] batman-adv: Add log_level " Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 14/19] batman-adv: Add multicast_mode " Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 15/19] batman-adv: Add network_coding " Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 16/19] batman-adv: Add orig_interval " Sven Eckelmann
2018-11-24 17:52   ` Sven Eckelmann
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 17/19] batman-adv: Add elp_interval hardif " Sven Eckelmann
2018-11-23 16:13 ` Sven Eckelmann [this message]
2018-11-23 16:13 ` [B.A.T.M.A.N.] [RFC v2 19/19] batman-adv: Trigger genl notification on sysfs config change Sven Eckelmann
2018-11-24  9:29 ` [B.A.T.M.A.N.] [RFC v2 00/19] batman-adv: netlink restructuring, part 2 Jiri Pirko
2018-11-24  9:44   ` Sven Eckelmann
2018-11-24 10:23     ` Jiri Pirko

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=20181123161359.13342-19-sven@narfation.org \
    --to=sven@narfation.org \
    --cc=b.a.t.m.a.n@lists.open-mesh.org \
    --cc=jiri@mellanox.com \
    --cc=netdev@vger.kernel.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;
as well as URLs for NNTP newsgroup(s).