From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.2 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B4807C43387 for ; Fri, 18 Jan 2019 07:10:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8454020850 for ; Fri, 18 Jan 2019 07:10:43 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="N96ikOEo" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727396AbfARHKm (ORCPT ); Fri, 18 Jan 2019 02:10:42 -0500 Received: from smtp.broadcom.com ([192.19.211.62]:38804 "EHLO relay.smtp.broadcom.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1727342AbfARHKl (ORCPT ); Fri, 18 Jan 2019 02:10:41 -0500 Received: from dhcp-10-123-64-227.dhcp.broadcom.net (dhcp-10-123-64-227.dhcp.broadcom.net [10.123.64.227]) by relay.smtp.broadcom.com (Postfix) with ESMTP id 09FA8290597; Thu, 17 Jan 2019 23:10:35 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com 09FA8290597 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1547795436; bh=zgHFf8hRuPIoKSLWKHVoTWS+WYN92Fr46bw9530pr3I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=N96ikOEoy3Ms996A4Ly+wUiNjw0DlcCVn6JaLpWugY6cDXhDOC3j6+6Oe7X7wmkTo b6Qm0QFwRidx34Xt1FhScbz1+kQhA+lH/SwvmzkuY4Qe2wBjGHy7qauOlrucRQix32 RbT6WWCd0aSJncxIluWDdi+PrEtPinXBf+RfjTIc= From: Vasundhara Volam To: davem@davemloft.net Cc: michael.chan@broadcom.com, jiri@mellanox.com, jakub.kicinski@netronome.com, mkubecek@suse.cz, netdev@vger.kernel.org Subject: [PATCH net-next v7 5/8] devlink: Add support for driverinit set value for devlink_port Date: Fri, 18 Jan 2019 12:39:42 +0530 Message-Id: <1547795385-12354-6-git-send-email-vasundhara-v.volam@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1547795385-12354-1-git-send-email-vasundhara-v.volam@broadcom.com> References: <1547795385-12354-1-git-send-email-vasundhara-v.volam@broadcom.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add support for "driverinit" configuration mode value for devlink_port configuration parameters. Add devlink_port_param_driverinit_value_set() function to help the driver set the value to devlink_port. Also, move the common code to __devlink_param_driverinit_value_set() to be used by both device and port params. Cc: Jiri Pirko Signed-off-by: Vasundhara Volam --- include/net/devlink.h | 11 +++++++++ net/core/devlink.c | 64 +++++++++++++++++++++++++++++++++++++++------------ 2 files changed, 60 insertions(+), 15 deletions(-) diff --git a/include/net/devlink.h b/include/net/devlink.h index 09f3f43..f78cb8d 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -581,6 +581,9 @@ int devlink_port_params_register(struct devlink_port *devlink_port, void devlink_port_params_unregister(struct devlink_port *devlink_port, const struct devlink_param *params, size_t params_count); +int devlink_port_param_driverinit_value_set(struct devlink_port *devlink_port, + u32 param_id, + union devlink_param_value init_val); struct devlink_region *devlink_region_create(struct devlink *devlink, const char *region_name, u32 region_max_snapshots, @@ -846,6 +849,14 @@ static inline bool devlink_dpipe_table_counter_enabled(struct devlink *devlink, return -EOPNOTSUPP; } +static inline int +devlink_port_param_driverinit_value_set(struct devlink_port *devlink_port, + u32 param_id, + union devlink_param_value init_val) +{ + return -EOPNOTSUPP; +} + static inline struct devlink_region * devlink_region_create(struct devlink *devlink, const char *region_name, diff --git a/net/core/devlink.c b/net/core/devlink.c index 53755ff..8ea5a67 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -4722,24 +4722,15 @@ int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id, } EXPORT_SYMBOL_GPL(devlink_param_driverinit_value_get); -/** - * devlink_param_driverinit_value_set - set value of configuration - * parameter for driverinit - * configuration mode - * - * @devlink: devlink - * @param_id: parameter ID - * @init_val: value of parameter to set for driverinit configuration mode - * - * This function should be used by the driver to set driverinit - * configuration mode default value. - */ -int devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id, - union devlink_param_value init_val) +static int +__devlink_param_driverinit_value_set(struct devlink *devlink, + struct list_head *param_list, u32 param_id, + union devlink_param_value init_val, + enum devlink_command cmd) { struct devlink_param_item *param_item; - param_item = devlink_param_find_by_id(&devlink->param_list, param_id); + param_item = devlink_param_find_by_id(param_list, param_id); if (!param_item) return -EINVAL; @@ -4756,6 +4747,27 @@ int devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id, devlink_param_notify(devlink, param_item, DEVLINK_CMD_PARAM_NEW); return 0; } + +/** + * devlink_param_driverinit_value_set - set value of configuration + * parameter for driverinit + * configuration mode + * + * @devlink: devlink + * @param_id: parameter ID + * @init_val: value of parameter to set for driverinit configuration mode + * + * This function should be used by the driver to set driverinit + * configuration mode default value. + */ +int devlink_param_driverinit_value_set(struct devlink *devlink, u32 param_id, + union devlink_param_value init_val) +{ + return __devlink_param_driverinit_value_set(devlink, + &devlink->param_list, + param_id, init_val, + DEVLINK_CMD_PARAM_NEW); +} EXPORT_SYMBOL_GPL(devlink_param_driverinit_value_set); /** @@ -4862,6 +4874,28 @@ int devlink_port_param_driverinit_value_get(struct devlink_port *devlink_port, EXPORT_SYMBOL_GPL(devlink_port_param_driverinit_value_get); /** + * devlink_port_param_driverinit_value_set - set value of configuration + * parameter for driverinit + * configuration mode + * + * @devlink_port: devlink_port + * @param_id: parameter ID + * @init_val: value of parameter to set for driverinit configuration mode + * + * This function should be used by the driver to set driverinit + * configuration mode default value. + */ +int devlink_port_param_driverinit_value_set(struct devlink_port *devlink_port, + u32 param_id, + union devlink_param_value init_val) +{ + return __devlink_param_driverinit_value_set(devlink_port->devlink, + &devlink_port->param_list, + param_id, init_val, 0); +} +EXPORT_SYMBOL_GPL(devlink_port_param_driverinit_value_set); + +/** * devlink_region_create - create a new address region * * @devlink: devlink -- 1.8.3.1