From patchwork Tue Nov 14 16:18:45 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 837919 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (2048-bit key; unprotected) header.d=resnulli-us.20150623.gappssmtp.com header.i=@resnulli-us.20150623.gappssmtp.com header.b="gQnhHK14"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3ybt4X6JhXz9sPr for ; Wed, 15 Nov 2017 03:19:24 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755415AbdKNQTV (ORCPT ); Tue, 14 Nov 2017 11:19:21 -0500 Received: from mail-wm0-f67.google.com ([74.125.82.67]:38370 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755044AbdKNQS5 (ORCPT ); Tue, 14 Nov 2017 11:18:57 -0500 Received: by mail-wm0-f67.google.com with SMTP id z3so12766287wme.3 for ; Tue, 14 Nov 2017 08:18:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=2bGpRWzUNSrRRpqi1LGcLjXuCTStjo7vJi62vHqAAeU=; b=gQnhHK141V3+YJbbUWC4nV94lF0u6vSG4tKg/FS4WgUhpCQbyya7p2NllNNhhLSRBW i1xEtbqQ5fUyM6FAMW+eaFf5f5YHL3rQk5DaWPY7E76AqHNAJ00fqGFl19jPmaJY8t5l +lNmoo7aQkvPzxy1NrEhUm39y/vebxpanpmwnsdaOXjaz7VnwWkPmElkUIjTfQiON7ga AMOc4Ygkt2x89oMZ0xMLlbEX6H0cNRbTTfnzM8GBSFxJsI4cT6eBMD4ZiIMm4JT/UlEH sswDR8kQIK2TrpFn8fEfcv2Ge1QBfHtJwUvIUbilONBqHAv6sAndDaEkeId+CVXn30eK Isrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=2bGpRWzUNSrRRpqi1LGcLjXuCTStjo7vJi62vHqAAeU=; b=VCCvsXU7t2/8i8jGJ2xSaIHAlDo8evQgArD8YIUPVB6AA5u8pO6QaeqEXhv/ySR+CA +G2YFJrvz6kSMCjAuP/b9ovlxxYivTRmf+h54qOgwUB0RRLk7cbeadyvFng4zu5rTOCs El7+CdUj23En4HVe56zrXqyqGv7ZsHfeEZhfWtmWCDvxm1eh6dANmkS/34Ko14DpYUYw Cn4ykxa8PLOBTtbKUWBr0fdktTq5/9UlFkufEHia2Om1AZCvv/bSCldM7j2APG8g2fzf Lz80k10L/QSGR4wdeeVYHLO08t/q0A1nXlGHhHKg6C85MeaCC+mct/ZZYOrKX9grUwwx kUfQ== X-Gm-Message-State: AJaThX47Dmfnhj+5H0nhGcoRCmoBgwNFEddzhM6OoE6WDQDkiMi3Fomz lOuT7Mi11uCy+CkTs2wC+PIVZWdA X-Google-Smtp-Source: AGs4zMYuLtuIXei4WmwkDcjMzqbl7sYOZ3uVxV+W74t01AFzdXD+0HucTTW25T/86Y9RI42upf6JKA== X-Received: by 10.28.17.66 with SMTP id 63mr8902014wmr.66.1510676336472; Tue, 14 Nov 2017 08:18:56 -0800 (PST) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id n43sm19932383wrb.93.2017.11.14.08.18.55 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 14 Nov 2017 08:18:56 -0800 (PST) From: Jiri Pirko To: netdev@vger.kernel.org Cc: davem@davemloft.net, mlxsw@mellanox.com, andrew@lunn.ch, vivien.didelot@savoirfairelinux.com, f.fainelli@gmail.com, michael.chan@broadcom.com, ganeshgr@chelsio.com, saeedm@mellanox.com, matanb@mellanox.com, leonro@mellanox.com, idosch@mellanox.com, jakub.kicinski@netronome.com, ast@kernel.org, daniel@iogearbox.net, simon.horman@netronome.com, pieter.jansenvanvuuren@netronome.com, john.hurley@netronome.com, alexander.h.duyck@intel.com, linville@tuxdriver.com, gospo@broadcom.com, steven.lin1@broadcom.com, yuvalm@mellanox.com, ogerlitz@mellanox.com, dsa@cumulusnetworks.com, roopa@cumulusnetworks.com Subject: [patch net-next RFC v2 04/11] devlink: Add relation between dpipe and resource Date: Tue, 14 Nov 2017 17:18:45 +0100 Message-Id: <20171114161852.6633-5-jiri@resnulli.us> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20171114161852.6633-1-jiri@resnulli.us> References: <20171114161852.6633-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Arkadi Sharshevsky The hardware processes which are modeled via dpipe commonly use some internal hardware resources. Such relation can improve the understanding of hardware limitations. Signed-off-by: Arkadi Sharshevsky Signed-off-by: Jiri Pirko --- include/net/devlink.h | 13 +++++++++++++ include/uapi/linux/devlink.h | 1 + net/core/devlink.c | 31 +++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/include/net/devlink.h b/include/net/devlink.h index a33bda4..6cb0621 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -183,6 +183,8 @@ struct devlink_dpipe_table_ops; * @counters_enabled: indicates if counters are active * @counter_control_extern: indicates if counter control is in dpipe or * external tool + * @resource_id: relative resource this table is related to + * @resource_valid: Indicate that the resource id is valid * @table_ops: table operations * @rcu: rcu */ @@ -192,6 +194,8 @@ struct devlink_dpipe_table { const char *name; bool counters_enabled; bool counter_control_extern; + u64 resource_id; + bool resource_valid; struct devlink_dpipe_table_ops *table_ops; struct rcu_head rcu; }; @@ -387,6 +391,8 @@ void devlink_resources_unregister(struct devlink *devlink, int devlink_resource_size_get(struct devlink *devlink, u64 resource_id, u64 *p_resource_size); +int devlink_dpipe_table_resource_set(struct devlink *devlink, + const char *table_name, u64 resource_id); #else @@ -550,6 +556,13 @@ devlink_resource_size_get(struct devlink *devlink, u64 resource_id, return -EINVAL; } +static inline int +devlink_dpipe_table_resource_set(struct devlink *devlink, + const char *table_name, u64 resource_id) +{ + return -EINVAL; +} + #endif #endif /* _NET_DEVLINK_H_ */ diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h index ea4fa25..80d5a1b 100644 --- a/include/uapi/linux/devlink.h +++ b/include/uapi/linux/devlink.h @@ -217,6 +217,7 @@ enum devlink_attr { DEVLINK_ATTR_RESOURCE_OCC, /* u64 */ DEVLINK_ATTR_RESOURCE_ID, /* u64 */ DEVLINK_ATTR_RESOURCE_RELOAD_REQUIRED, /* u8 */ + DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID, /* u64 */ /* add new attributes above here, update the policy in devlink.c */ diff --git a/net/core/devlink.c b/net/core/devlink.c index d93f176..a200e48 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -1686,6 +1686,9 @@ static int devlink_dpipe_table_put(struct sk_buff *skb, table->counters_enabled)) goto nla_put_failure; + if (table->resource_valid) + nla_put_u64_64bit(skb, DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID, + table->resource_id, DEVLINK_ATTR_PAD); if (devlink_dpipe_matches_put(table, skb)) goto nla_put_failure; @@ -3209,6 +3212,34 @@ int devlink_resource_size_get(struct devlink *devlink, } EXPORT_SYMBOL_GPL(devlink_resource_size_get); +/** + * devlink_dpipe_table_resource_set - set the resource id + * + * @devlink: devlink + * @table_name: table name + * @resource_id: resource id + */ +int devlink_dpipe_table_resource_set(struct devlink *devlink, + const char *table_name, u64 resource_id) +{ + struct devlink_dpipe_table *table; + int err = 0; + + mutex_lock(&devlink->lock); + table = devlink_dpipe_table_find(&devlink->dpipe_table_list, + table_name); + if (!table) { + err = -EINVAL; + goto out; + } + table->resource_id = resource_id; + table->resource_valid = true; +out: + mutex_unlock(&devlink->lock); + return err; +} +EXPORT_SYMBOL_GPL(devlink_dpipe_table_resource_set); + static int __init devlink_module_init(void) { return genl_register_family(&devlink_nl_family);