From patchwork Fri Jan 18 07:09:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasundhara Volam X-Patchwork-Id: 1027139 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=quarantine dis=none) header.from=broadcom.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=broadcom.com header.i=@broadcom.com header.b="iwORRTRi"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43gsYB0mqvz9sDX for ; Fri, 18 Jan 2019 18:10:54 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727412AbfARHKx (ORCPT ); Fri, 18 Jan 2019 02:10:53 -0500 Received: from smtp.broadcom.com ([192.19.211.62]:38766 "EHLO relay.smtp.broadcom.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1727336AbfARHKj (ORCPT ); Fri, 18 Jan 2019 02:10:39 -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 8836529059E; Thu, 17 Jan 2019 23:10:35 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.10.3 relay.smtp.broadcom.com 8836529059E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com; s=dkimrelay; t=1547795435; bh=HsW9yEspOjB3p6pK5O6IlHh5S7veLFxUbLzjaJr9D2E=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=iwORRTRiIcykzUb8RGtSNqjm6Grmczioj2NJR/Zhk8Q90zSaAUNGwqGlkcX5B/hKA WB7m3Q74Fv9na0Ufa0iB4SfNOCJ797rnr4x80eGyVprdkV+DGTyM3AVzEX2QwXwWLd QoOgcJHxib1lVAbkq4qCgbEy8q4j7F57OXa9lP3w= 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 4/8] devlink: Add support for driverinit get value for devlink_port Date: Fri, 18 Jan 2019 12:39:41 +0530 Message-Id: <1547795385-12354-5-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_get() function to help the driver get the value from devlink_port. Also, move the common code to __devlink_param_driverinit_value_get() to be used by both device and port params. Cc: Jiri Pirko Signed-off-by: Vasundhara Volam --- include/net/devlink.h | 8 ++++++ net/core/devlink.c | 67 ++++++++++++++++++++++++++++++++++++++------------- 2 files changed, 58 insertions(+), 17 deletions(-) diff --git a/include/net/devlink.h b/include/net/devlink.h index 98b8a66..09f3f43 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -838,6 +838,14 @@ static inline bool devlink_dpipe_table_counter_enabled(struct devlink *devlink, { } +static inline int +devlink_port_param_driverinit_value_get(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 be083a9..53755ff 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -4677,26 +4677,13 @@ void devlink_params_unregister(struct devlink *devlink, } EXPORT_SYMBOL_GPL(devlink_params_unregister); -/** - * devlink_param_driverinit_value_get - get configuration parameter - * value for driver initializing - * - * @devlink: devlink - * @param_id: parameter ID - * @init_val: value of parameter in driverinit configuration mode - * - * This function should be used by the driver to get driverinit - * configuration for initialization after reload command. - */ -int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id, - union devlink_param_value *init_val) +static int +__devlink_param_driverinit_value_get(struct list_head *param_list, u32 param_id, + union devlink_param_value *init_val) { struct devlink_param_item *param_item; - if (!devlink->ops || !devlink->ops->reload) - return -EOPNOTSUPP; - - 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; @@ -4712,6 +4699,27 @@ int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id, return 0; } + +/** + * devlink_param_driverinit_value_get - get configuration parameter + * value for driver initializing + * + * @devlink: devlink + * @param_id: parameter ID + * @init_val: value of parameter in driverinit configuration mode + * + * This function should be used by the driver to get driverinit + * configuration for initialization after reload command. + */ +int devlink_param_driverinit_value_get(struct devlink *devlink, u32 param_id, + union devlink_param_value *init_val) +{ + if (!devlink->ops || !devlink->ops->reload) + return -EOPNOTSUPP; + + return __devlink_param_driverinit_value_get(&devlink->param_list, + param_id, init_val); +} EXPORT_SYMBOL_GPL(devlink_param_driverinit_value_get); /** @@ -4829,6 +4837,31 @@ void devlink_port_params_unregister(struct devlink_port *devlink_port, EXPORT_SYMBOL_GPL(devlink_port_params_unregister); /** + * devlink_port_param_driverinit_value_get - get configuration parameter + * value for driver initializing + * + * @devlink_port: devlink_port + * @param_id: parameter ID + * @init_val: value of parameter in driverinit configuration mode + * + * This function should be used by the driver to get driverinit + * configuration for initialization after reload command. + */ +int devlink_port_param_driverinit_value_get(struct devlink_port *devlink_port, + u32 param_id, + union devlink_param_value *init_val) +{ + struct devlink *devlink = devlink_port->devlink; + + if (!devlink->ops || !devlink->ops->reload) + return -EOPNOTSUPP; + + return __devlink_param_driverinit_value_get(&devlink_port->param_list, + param_id, init_val); +} +EXPORT_SYMBOL_GPL(devlink_port_param_driverinit_value_get); + +/** * devlink_region_create - create a new address region * * @devlink: devlink