From patchwork Tue Dec 4 10:14:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shalom Toledo X-Patchwork-Id: 1007560 X-Patchwork-Delegate: dsahern@gmail.com 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=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="kwHUCfFH"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 438Hpx4Lhpz9s7W for ; Tue, 4 Dec 2018 21:17:13 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726101AbeLDKRM (ORCPT ); Tue, 4 Dec 2018 05:17:12 -0500 Received: from mail-eopbgr10086.outbound.protection.outlook.com ([40.107.1.86]:29965 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725767AbeLDKRM (ORCPT ); Tue, 4 Dec 2018 05:17:12 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mSdr2FPegqbIK7u+w2uMLEvfKwxWN0LUx/bTUt9Fd9w=; b=kwHUCfFHdEwhOlBljcGTRhqEh9ImzWg5Ccbt3rrou3SyN0x6fWQ0PqDfXcEyY5daK2OVaTDREENUEOKfAOO49BPMUq74SuBHyXgNPzp1nW0GSy4vMrakFutVg2wnnRfDubWtm/6BJYqtf4U2lYRZgPxMiHydoAYE4+ZlSvtQ85w= Received: from VI1PR05MB5552.eurprd05.prod.outlook.com (20.177.201.212) by VI1PR05MB5424.eurprd05.prod.outlook.com (20.177.200.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1382.22; Tue, 4 Dec 2018 10:14:08 +0000 Received: from VI1PR05MB5552.eurprd05.prod.outlook.com ([fe80::31d7:6f09:4c2b:9080]) by VI1PR05MB5552.eurprd05.prod.outlook.com ([fe80::31d7:6f09:4c2b:9080%2]) with mapi id 15.20.1382.023; Tue, 4 Dec 2018 10:14:08 +0000 From: Shalom Toledo To: "netdev@vger.kernel.org" CC: "dsahern@gmail.com" , "jakub.kicinski@netronome.com" , mlxsw Subject: [PATCH iproute2-next 1/2] devlink: Add string to uint{8,16,32} conversion for generic parameters Thread-Topic: [PATCH iproute2-next 1/2] devlink: Add string to uint{8, 16, 32} conversion for generic parameters Thread-Index: AQHUi7oXNStEDBHcl0y81p8dDp+AUQ== Date: Tue, 4 Dec 2018 10:14:07 +0000 Message-ID: <20181204101353.40459-2-shalomt@mellanox.com> References: <20181204101353.40459-1-shalomt@mellanox.com> In-Reply-To: <20181204101353.40459-1-shalomt@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0200.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::20) To VI1PR05MB5552.eurprd05.prod.outlook.com (2603:10a6:803:97::20) authentication-results: spf=none (sender IP is ) smtp.mailfrom=shalomt@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [37.142.13.130] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB5424; 6:sUC3x3p62JjxHY4HHY8Xbiqvk1VSCNsHMEE//FVSGRmTSk1xO+79dcJzC/RChJ8taz16tjZOTn9hTSv2+C3SEgo1rel+HDgmbgMM8ovmx/FJq2PiuBiJo2gvffeKQXnKjNxRB/Nf8tCmVeZLvRtdTgcsnnkjNrJ/FN5pUJNMghGhau5uSVNxMrONVVn2vQxI77+GDMFdWQWYZApb6P/yn/bJvitltiEEr53lgHUKDCHECeW8AWxlMVuBKcucrCSmgwkddvkZ38GqFMvgrtrhPFzU85b5uaxa9L1aoPEDYIp3jW8VTadNuF6XrrBkaiYKcKwJW/SjqR0fimJP+KeFXwIioLDIbI/mVyw2AcjHz0XVDkrMDZo2IPEm4tTWcCq6qO/iv/3218WwDUy8NpTLgR+w4Riu2RQtph8u1QWl/UEELkFbGbD32ph2MoEWQrQofSbwUOcN/ORej1oVPJ+qPA==; 5:GidEaixMXRNg3mY6fj1GDXOH4lySi67hR00Bww/TDL8qAPii8vT7rwKha+wWzCaL8ugPONrFZ1MGWONELSo3ohLcTtIqDLIxMpzaPUm1JmSUDzqE5RqoxwxHas5sqfIs3GOoXm3CaKRE2jzD2fZI7jo/HmVu3MHRN9H6gte6v6I=; 7:9TJxD5Vl/oL489ziyt32Y54v/veLzjJD5Z3MklZQfq6ymgDt9ClzsVP6hKPARG3EA7Nm5Y+2ltz0TNAmWgHi6UeR7sf2I/oJtAIRw7bAOIcmIzvCOZwGJ4kmdP0Bos8o1sCI7b128PrcxuZDbBIiPg== x-ms-office365-filtering-correlation-id: a772dbb5-6ea1-4856-31a4-08d659d13a0e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB5424; x-ms-traffictypediagnostic: VI1PR05MB5424: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231455)(999002)(944501493)(52105112)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB5424; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB5424; x-forefront-prvs: 0876988AF0 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(396003)(39860400002)(136003)(376002)(366004)(199004)(189003)(3846002)(478600001)(5640700003)(6506007)(81166006)(6116002)(386003)(81156014)(8676002)(6486002)(6512007)(316002)(6916009)(1730700003)(102836004)(25786009)(7736002)(53936002)(107886003)(8936002)(2906002)(99286004)(76176011)(52116002)(66066001)(54906003)(36756003)(2501003)(2616005)(305945005)(486006)(5660300001)(86362001)(575784001)(4326008)(1076002)(11346002)(71200400001)(71190400001)(476003)(106356001)(14454004)(39060400002)(68736007)(6436002)(105586002)(26005)(97736004)(256004)(446003)(186003)(14444005)(2351001)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5424; H:VI1PR05MB5552.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: FJ46STFYN0hmEWdtr2cG1SkspyqG6WcO/+BqbwrYKvQTTRCTtgk+wK01HzoLKwYUbT41gAqbKvtoT1KHdgYZfr+wcu5EoLIm2ZVc/jGZx3gWmrFiISADxo60Y1Vi+6spn1CvrPPjDwRKMnL082PCAo4uraR6k3l7vNtEeQp8puwiW7Wzff0ed+6adjhxwhmQP6kUh7fWuauzZKhPo5t2m7eUeClYYaq3zby3GE4cM27n2FVH4FYcODE0bnLRUMuH4iQI+Lid6E7MMK+1Yz+QWNasFQdEnDT6xYTg1l5hLaSmJtS5yl9i6pGPt/iJFtJ+UwYfL+lYBP9B1tbC1ZIusecZu/L3cbL6u4/3dYIJQkU= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: a772dbb5-6ea1-4856-31a4-08d659d13a0e X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Dec 2018 10:14:08.0282 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5424 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Allow setting u{8,16,32} generic parameters as a well defined strings in devlink user space tool. Signed-off-by: Shalom Toledo Reviewed-by: Jiri Pirko --- devlink/devlink.c | 145 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 135 insertions(+), 10 deletions(-) diff --git a/devlink/devlink.c b/devlink/devlink.c index 8bb254ea1b0b..1e3deb24d214 100644 --- a/devlink/devlink.c +++ b/devlink/devlink.c @@ -1920,10 +1920,69 @@ static int cmd_dev_eswitch(struct dl *dl) return -ENOENT; } -static void pr_out_param_value(struct dl *dl, int nla_type, struct nlattr *nl) +struct param_val_conv { + const char *name; + const char *vstr; + uint32_t vuint; +}; + +static bool param_val_conv_exists(const struct param_val_conv *param_val_conv, + uint32_t len, const char *name) +{ + uint32_t i; + + for (i = 0; i < len; i++) + if (!strcmp(param_val_conv[i].name, name)) + return true; + + return false; +} + +static int +param_val_conv_uint_get(const struct param_val_conv *param_val_conv, + uint32_t len, const char *name, const char *vstr, + uint32_t *vuint) +{ + uint32_t i; + + for (i = 0; i < len; i++) + if (!strcmp(param_val_conv[i].name, name) && + !strcmp(param_val_conv[i].vstr, vstr)) { + *vuint = param_val_conv[i].vuint; + return 0; + } + + return -ENOENT; +} + +static int +param_val_conv_str_get(const struct param_val_conv *param_val_conv, + uint32_t len, const char *name, uint32_t vuint, + const char **vstr) +{ + uint32_t i; + + for (i = 0; i < len; i++) + if (!strcmp(param_val_conv[i].name, name) && + param_val_conv[i].vuint == vuint) { + *vstr = param_val_conv[i].vstr; + return 0; + } + + return -ENOENT; +} + +static const struct param_val_conv param_val_conv[] = {}; + +#define PARAM_VAL_CONV_LEN ARRAY_SIZE(param_val_conv) + +static void pr_out_param_value(struct dl *dl, const char *nla_name, + int nla_type, struct nlattr *nl) { struct nlattr *nla_value[DEVLINK_ATTR_MAX + 1] = {}; struct nlattr *val_attr; + const char *vstr; + bool conv_exists; int err; err = mnl_attr_parse_nested(nl, attr_cb, nla_value); @@ -1939,15 +1998,51 @@ static void pr_out_param_value(struct dl *dl, int nla_type, struct nlattr *nl) param_cmode_name(mnl_attr_get_u8(nla_value[DEVLINK_ATTR_PARAM_VALUE_CMODE]))); val_attr = nla_value[DEVLINK_ATTR_PARAM_VALUE_DATA]; + conv_exists = param_val_conv_exists(param_val_conv, PARAM_VAL_CONV_LEN, + nla_name); + switch (nla_type) { case MNL_TYPE_U8: - pr_out_uint(dl, "value", mnl_attr_get_u8(val_attr)); + if (conv_exists) { + err = param_val_conv_str_get(param_val_conv, + PARAM_VAL_CONV_LEN, + nla_name, + mnl_attr_get_u8(val_attr), + &vstr); + if (err) + return; + pr_out_str(dl, "value", vstr); + } else { + pr_out_uint(dl, "value", mnl_attr_get_u8(val_attr)); + } break; case MNL_TYPE_U16: - pr_out_uint(dl, "value", mnl_attr_get_u16(val_attr)); + if (conv_exists) { + err = param_val_conv_str_get(param_val_conv, + PARAM_VAL_CONV_LEN, + nla_name, + mnl_attr_get_u16(val_attr), + &vstr); + if (err) + return; + pr_out_str(dl, "value", vstr); + } else { + pr_out_uint(dl, "value", mnl_attr_get_u16(val_attr)); + } break; case MNL_TYPE_U32: - pr_out_uint(dl, "value", mnl_attr_get_u32(val_attr)); + if (conv_exists) { + err = param_val_conv_str_get(param_val_conv, + PARAM_VAL_CONV_LEN, + nla_name, + mnl_attr_get_u32(val_attr), + &vstr); + if (err) + return; + pr_out_str(dl, "value", vstr); + } else { + pr_out_uint(dl, "value", mnl_attr_get_u32(val_attr)); + } break; case MNL_TYPE_STRING: pr_out_str(dl, "value", mnl_attr_get_str(val_attr)); @@ -1962,6 +2057,7 @@ static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array) { struct nlattr *nla_param[DEVLINK_ATTR_MAX + 1] = {}; struct nlattr *param_value_attr; + const char *nla_name; int nla_type; int err; @@ -1980,8 +2076,8 @@ static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array) nla_type = mnl_attr_get_u8(nla_param[DEVLINK_ATTR_PARAM_TYPE]); - pr_out_str(dl, "name", - mnl_attr_get_str(nla_param[DEVLINK_ATTR_PARAM_NAME])); + nla_name = mnl_attr_get_str(nla_param[DEVLINK_ATTR_PARAM_NAME]); + pr_out_str(dl, "name", nla_name); if (!nla_param[DEVLINK_ATTR_PARAM_GENERIC]) pr_out_str(dl, "type", "driver-specific"); @@ -1992,7 +2088,7 @@ static void pr_out_param(struct dl *dl, struct nlattr **tb, bool array) mnl_attr_for_each_nested(param_value_attr, nla_param[DEVLINK_ATTR_PARAM_VALUES_LIST]) { pr_out_entry_start(dl); - pr_out_param_value(dl, nla_type, param_value_attr); + pr_out_param_value(dl, nla_name, nla_type, param_value_attr); pr_out_entry_end(dl); } pr_out_array_end(dl); @@ -2097,6 +2193,7 @@ static int cmd_dev_param_set(struct dl *dl) { struct param_ctx ctx = {}; struct nlmsghdr *nlh; + bool conv_exists; uint32_t val_u32; uint16_t val_u16; uint8_t val_u8; @@ -2124,10 +2221,22 @@ static int cmd_dev_param_set(struct dl *dl) NLM_F_REQUEST | NLM_F_ACK); dl_opts_put(nlh, dl); + conv_exists = param_val_conv_exists(param_val_conv, PARAM_VAL_CONV_LEN, + dl->opts.param_name); + mnl_attr_put_u8(nlh, DEVLINK_ATTR_PARAM_TYPE, ctx.nla_type); switch (ctx.nla_type) { case MNL_TYPE_U8: - err = strtouint8_t(dl->opts.param_value, &val_u8); + if (conv_exists) { + err = param_val_conv_uint_get(param_val_conv, + PARAM_VAL_CONV_LEN, + dl->opts.param_name, + dl->opts.param_value, + &val_u32); + val_u8 = val_u32; + } else { + err = strtouint8_t(dl->opts.param_value, &val_u8); + } if (err) goto err_param_value_parse; if (val_u8 == ctx.value.vu8) @@ -2135,7 +2244,16 @@ static int cmd_dev_param_set(struct dl *dl) mnl_attr_put_u8(nlh, DEVLINK_ATTR_PARAM_VALUE_DATA, val_u8); break; case MNL_TYPE_U16: - err = strtouint16_t(dl->opts.param_value, &val_u16); + if (conv_exists) { + err = param_val_conv_uint_get(param_val_conv, + PARAM_VAL_CONV_LEN, + dl->opts.param_name, + dl->opts.param_value, + &val_u32); + val_u16 = val_u32; + } else { + err = strtouint16_t(dl->opts.param_value, &val_u16); + } if (err) goto err_param_value_parse; if (val_u16 == ctx.value.vu16) @@ -2143,7 +2261,14 @@ static int cmd_dev_param_set(struct dl *dl) mnl_attr_put_u16(nlh, DEVLINK_ATTR_PARAM_VALUE_DATA, val_u16); break; case MNL_TYPE_U32: - err = strtouint32_t(dl->opts.param_value, &val_u32); + if (conv_exists) + err = param_val_conv_uint_get(param_val_conv, + PARAM_VAL_CONV_LEN, + dl->opts.param_name, + dl->opts.param_value, + &val_u32); + else + err = strtouint32_t(dl->opts.param_value, &val_u32); if (err) goto err_param_value_parse; if (val_u32 == ctx.value.vu32) From patchwork Tue Dec 4 10:14:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shalom Toledo X-Patchwork-Id: 1007554 X-Patchwork-Delegate: dsahern@gmail.com 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=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.b="WnteVg0L"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 438Hm64jFGz9s7W for ; Tue, 4 Dec 2018 21:14:46 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725949AbeLDKOp (ORCPT ); Tue, 4 Dec 2018 05:14:45 -0500 Received: from mail-eopbgr10082.outbound.protection.outlook.com ([40.107.1.82]:4748 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725613AbeLDKOp (ORCPT ); Tue, 4 Dec 2018 05:14:45 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mWGqcAAMg6jGoQV3NISPU8D7g8s5YKiVeVpFlRPlB7U=; b=WnteVg0L6qIvxLxE0kHQa7vjJaNpzZIbvPjaUMcb457q30yOpeyvJni/3+MQtNxnbrMGDRA7Cy1NSJoCJGTRBVw3VqC++/M8Tpi2LZKQJYVElzvQRAwT5kOjIH7mN7YyIaRQBz7+5ABSV1mahOHjC5JmoJ8wKhQbYDTR0h8jf9s= Received: from VI1PR05MB5552.eurprd05.prod.outlook.com (20.177.201.212) by VI1PR05MB5424.eurprd05.prod.outlook.com (20.177.200.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1382.22; Tue, 4 Dec 2018 10:14:09 +0000 Received: from VI1PR05MB5552.eurprd05.prod.outlook.com ([fe80::31d7:6f09:4c2b:9080]) by VI1PR05MB5552.eurprd05.prod.outlook.com ([fe80::31d7:6f09:4c2b:9080%2]) with mapi id 15.20.1382.023; Tue, 4 Dec 2018 10:14:09 +0000 From: Shalom Toledo To: "netdev@vger.kernel.org" CC: "dsahern@gmail.com" , "jakub.kicinski@netronome.com" , mlxsw Subject: [PATCH iproute2-next 2/2] devlink: Add support for 'fw_load_policy' generic parameter Thread-Topic: [PATCH iproute2-next 2/2] devlink: Add support for 'fw_load_policy' generic parameter Thread-Index: AQHUi7oYcROwvxfGRESo3USMLiq/Mw== Date: Tue, 4 Dec 2018 10:14:08 +0000 Message-ID: <20181204101353.40459-3-shalomt@mellanox.com> References: <20181204101353.40459-1-shalomt@mellanox.com> In-Reply-To: <20181204101353.40459-1-shalomt@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0200.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:9e::20) To VI1PR05MB5552.eurprd05.prod.outlook.com (2603:10a6:803:97::20) authentication-results: spf=none (sender IP is ) smtp.mailfrom=shalomt@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [37.142.13.130] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB5424; 6:S+hmM/s3DI+7VjXZcMseBELK8ka5hzO6j7PGKsty9xUOq9qTKUzJqG6P7gKMwvBrkjJpCyKt+LZgn2n07lptMU8/rSpY023BgSxqNvrQVrdCLtJ7zZk+nl0Vi8tL0qDluZwyI8M2+tCZD+EKsSDGXvnRouQK1vqklZy90hx2B6okApAZ4DyBEjDmAqv63vmzQDLe61ysTa5lZbD/ceBNgNcNIfKQiDeaM+QMHaTq7qgDUZau1YRf9ItbKqxpatgdelA78ePGV9TK/UVMXcTP9Pp2hGcJlkiuRhkuF63DyFfIQAt6fnT5P1NFMN3bJIlyixpTK+2xKU9CsrFe77uGuZ6I4ucrFnxOwP04P7byXyYxlcnJChIlPaa2bp5qEEmOiYzxjUJnHHaqgVYWNsD6v/+hdw4vo1e3M6k1koYaOnCsNfSNBOvpL2CdHz0VnET5YdQJLkUJ+iPNPUs3EUEEOw==; 5:muSTyd7r7+ro8SRBP2h2x1gQ6cwJ20SlXNxvWtnjvBiPa4Aw34NOQHtc6zDP6lV9A/osBih/ziArj8Iu0DFPRwGbfhO7VKJXrddPk/W2buI0uGdObXCtVzugkySKXxgqrsdS1aOZvByTm14DlYvJpcv2JFU9rBMTlDhBzqtWkO4=; 7:qngf6MvOx24GFRY7mFYK2oqJuW3V8Thw/WPemdSS7pHhJxp6A2onwrKLe0NMQoyTuzjjTW4fd3WacdznH41SSkOGjMq7Xxq4qfEY6F5Z82/AQ06h+zzimJWaEC/nJYQmsWIrrtdc660fxrM75UqN2w== x-ms-office365-filtering-correlation-id: 0204b67f-8d9e-4469-ccb7-08d659d13aa7 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB5424; x-ms-traffictypediagnostic: VI1PR05MB5424: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(3231455)(999002)(944501493)(52105112)(93006095)(93001095)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123564045)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB5424; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB5424; x-forefront-prvs: 0876988AF0 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(396003)(39860400002)(136003)(376002)(366004)(199004)(189003)(3846002)(478600001)(5640700003)(6506007)(81166006)(6116002)(386003)(81156014)(8676002)(6486002)(6512007)(316002)(6916009)(1730700003)(102836004)(25786009)(7736002)(53936002)(107886003)(8936002)(2906002)(99286004)(76176011)(52116002)(66066001)(54906003)(36756003)(2501003)(2616005)(305945005)(486006)(5660300001)(86362001)(575784001)(4326008)(1076002)(11346002)(71200400001)(71190400001)(476003)(106356001)(14454004)(39060400002)(68736007)(6436002)(105586002)(26005)(97736004)(256004)(446003)(186003)(14444005)(2351001)(41533002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5424; H:VI1PR05MB5552.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: y7Zjw7fvA06S4t7Pyi9GhYw6+2fezuJF8DGqdfVY6fKDQrtffzOiTYV5cne1zbY5XXTpMgD/6AaTHKca50ucKpW92B/OEVhontP3AKSMCw2pUmeYlWT/ivdr2RY8gMC7NoSjbWFep0j6vU3RZ79zyLnB3KAbYTvv5oZ15Lnv8oXIo3PIAbrlQhmkDpDVXcepnhjOHFUGUh0FwNN2gak/holedxjjjvx3YIdLU0zKhuBcCgWPjBZQc1a7gEnwpgvsu+OcyBjZ/ZbS32Ey02QRYk/G9EN3LwARhQ72TMrBzRI7Ixpy11gJb1zlsaab1dslwm1yGe0+FlPbrG5LaUCVzr6IWx1A3tWzAM9UzQT4NVg= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0204b67f-8d9e-4469-ccb7-08d659d13aa7 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Dec 2018 10:14:08.9708 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5424 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add string to uint conversion for 'fw_load_policy' generic parameter. Signed-off-by: Shalom Toledo Reviewed-by: Jiri Pirko --- devlink/devlink.c | 13 ++++++++++++- include/uapi/linux/devlink.h | 5 +++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/devlink/devlink.c b/devlink/devlink.c index 1e3deb24d214..3651e90c1159 100644 --- a/devlink/devlink.c +++ b/devlink/devlink.c @@ -1972,7 +1972,18 @@ param_val_conv_str_get(const struct param_val_conv *param_val_conv, return -ENOENT; } -static const struct param_val_conv param_val_conv[] = {}; +static const struct param_val_conv param_val_conv[] = { + { + .name = "fw_load_policy", + .vstr = "driver", + .vuint = DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER, + }, + { + .name = "fw_load_policy", + .vstr = "flash", + .vuint = DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH, + }, +}; #define PARAM_VAL_CONV_LEN ARRAY_SIZE(param_val_conv) diff --git a/include/uapi/linux/devlink.h b/include/uapi/linux/devlink.h index 5ee0e7397591..d0a33d79dc22 100644 --- a/include/uapi/linux/devlink.h +++ b/include/uapi/linux/devlink.h @@ -163,6 +163,11 @@ enum devlink_param_cmode { DEVLINK_PARAM_CMODE_MAX = __DEVLINK_PARAM_CMODE_MAX - 1 }; +enum devlink_param_fw_load_policy_value { + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER, + DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH, +}; + enum devlink_attr { /* don't change the order or add anything between, this is ABI! */ DEVLINK_ATTR_UNSPEC,