From patchwork Sat Jan 19 15:56:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sven Eckelmann X-Patchwork-Id: 1027965 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=narfation.org Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=narfation.org header.i=@narfation.org header.b="QER0Gi6M"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43hj9c2tZPz9sBQ for ; Sun, 20 Jan 2019 02:56:52 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728648AbfASP4v (ORCPT ); Sat, 19 Jan 2019 10:56:51 -0500 Received: from narfation.org ([79.140.41.39]:34058 "EHLO v3-1039.vlinux.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728531AbfASP4p (ORCPT ); Sat, 19 Jan 2019 10:56:45 -0500 Received: from sven-desktop.home.narfation.org (p200300C5973798FD0000000000004065.dip0.t-ipconnect.de [IPv6:2003:c5:9737:98fd::4065]) by v3-1039.vlinux.de (Postfix) with ESMTPSA id A167A11013B; Sat, 19 Jan 2019 16:56:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=narfation.org; s=20121; t=1547913402; bh=XmyX+pkds0VudIvHhrCsF5kjEeYc8BHZzPQ1tY7KblA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QER0Gi6MClpVCC7kIHDUqMjiTg1ufKQCNE9M9Nzqoy0F7AhOP2CahYBZ1kgG1CuiQ 3keoGf80HyzUOz3x8EPY8xLvr0dgtp4iNCCtuml9ZGJ8iX/hl9ty5ucncxV+SJInLs HccNHTthB7fP1nPOjU8Xu/P5Oyl6mv4e2Jc9S8xA= From: Sven Eckelmann To: b.a.t.m.a.n@lists.open-mesh.org Cc: Jiri Pirko , netdev@vger.kernel.org, Sven Eckelmann , Antonio Quartulli Subject: [RFC v4 18/19] batman-adv: Add throughput_override hardif genl configuration Date: Sat, 19 Jan 2019 16:56:25 +0100 Message-Id: <20190119155626.6414-19-sven@narfation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190119155626.6414-1-sven@narfation.org> References: <20190119155626.6414-1-sven@narfation.org> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.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. Signed-off-by: Sven Eckelmann --- Cc: Antonio Quartulli --- 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 a2abbf7d..9031e8a1 100644 --- a/include/uapi/linux/batman_adv.h +++ b/include/uapi/linux/batman_adv.h @@ -482,6 +482,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 48d33ae4..34ff51ac 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_ENABLED] = { .type = NLA_U8 }, [BATADV_ATTR_ORIG_INTERVAL] = { .type = NLA_U32 }, [BATADV_ATTR_ELP_INTERVAL] = { .type = NLA_U32 }, + [BATADV_ATTR_THROUGHPUT_OVERRIDE] = { .type = NLA_U32 }, }; /** @@ -830,6 +831,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); @@ -925,6 +930,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);