From patchwork Sun May 31 07:03:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasundhara Volam X-Patchwork-Id: 1301339 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; 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.a=rsa-sha256 header.s=google header.b=Yf6/FCO3; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49ZTqp1hPxz9sSc for ; Sun, 31 May 2020 17:06:30 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729651AbgEaHG3 (ORCPT ); Sun, 31 May 2020 03:06:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51924 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726220AbgEaHG2 (ORCPT ); Sun, 31 May 2020 03:06:28 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 89F01C05BD43 for ; Sun, 31 May 2020 00:06:28 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id x13so8250004wrv.4 for ; Sun, 31 May 2020 00:06:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zumKQmkO5e51NlQ/XewW19Eiw2uayLN6M0XGpwmfyZc=; b=Yf6/FCO3FFczNBrDKZreRpHjMqUc/1BLP2W2n3uAhiowl7ipkDpQxwaJ7CF1XWYuYH w/mNzBaCa/VGXnoK0ODOUr6zakA26FGKcxlrZXi+Wj67AwHItUWnG1bq740H1aE92rEf kgdD+nMzhdI6MeXfQuYX9rg6sf7yy0OfSHDWE= 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=zumKQmkO5e51NlQ/XewW19Eiw2uayLN6M0XGpwmfyZc=; b=PaKxI8hCMjmfYZtP1jBR5uzcBX/0TGXbDUtMsHhPqS8Au3nXCxi5S3YqgXM1daNNF/ bVps17ftrocBOptEQbH+in4hXPQ3eGhefKCXlvmOVs7jpzwGTZkV9IVuZJnClmvukDO6 r8zNK6Q7F11Cmz1MsEGm5LPZbbDN86ujLt2XC2DUsjI4NDupRpL9sUJgWYeED/aZJVJD q+n+j2CAT9xWyOsj+JM8wVnX/mSNJ0Xq6xRUZGQjqkCXJmZj5F/tQWshYACL6ie3FHgY dvPN/TWQa0N6RdicBWmbkEir4ensSlWjEWsfEQY6IomnZAhwFFQWc0G0abB9MWElwywR HuNA== X-Gm-Message-State: AOAM532XNEs/U7szqkcFQRzsgzCMEqS6DmK9cAhma4VYuKcua7Q+44Xy hzeIHI7tSg7qeSNUPjOd/4R0xQ== X-Google-Smtp-Source: ABdhPJzHcke0YT7pAEnmk2CrTzUFGHiXMApfP/a6kyNecRFlvrEQmBt+kjIq1XJqcTYC9z5pU7iTwg== X-Received: by 2002:a5d:5261:: with SMTP id l1mr16759126wrc.246.1590908787118; Sun, 31 May 2020 00:06:27 -0700 (PDT) Received: from lxpurley1.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id 5sm4828731wrr.5.2020.05.31.00.06.24 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 31 May 2020 00:06:26 -0700 (PDT) From: Vasundhara Volam To: davem@davemloft.net Cc: netdev@vger.kernel.org, michael.chan@broadcom.com, Vasundhara Volam , Jiri Pirko , Jakub Kicinski Subject: [PATCH v3 net-next 1/6] devlink: Add 'enable_live_dev_reset' generic parameter. Date: Sun, 31 May 2020 12:33:40 +0530 Message-Id: <1590908625-10952-2-git-send-email-vasundhara-v.volam@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1590908625-10952-1-git-send-email-vasundhara-v.volam@broadcom.com> References: <1590908625-10952-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 This parameter controls the device's live reset capability. When enabled, a user can issue a separate command like 'ethtool --reset' or 'devlink dev reload' to reset the entire device in real time. This parameter can be useful, if the user wants to upgrade the firmware quickly with a momentary network outage. For example, if a user flashes a new firmware image and if this parameter is enabled, the user can immediately initiate reset of the device, to load the new firmware without reloading the driver manually or resetting the system. Cc: Jiri Pirko Cc: Jakub Kicinski Signed-off-by: Vasundhara Volam Signed-off-by: Michael Chan --- Documentation/networking/devlink/devlink-params.rst | 8 ++++++++ include/net/devlink.h | 4 ++++ net/core/devlink.c | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/Documentation/networking/devlink/devlink-params.rst b/Documentation/networking/devlink/devlink-params.rst index d075fd0..8e12c83 100644 --- a/Documentation/networking/devlink/devlink-params.rst +++ b/Documentation/networking/devlink/devlink-params.rst @@ -108,3 +108,11 @@ own name. * - ``region_snapshot_enable`` - Boolean - Enable capture of ``devlink-region`` snapshots. + * - ``enable_live_dev_reset`` + - Boolean + - Controls the device's live reset capability. When the parameter is true, + the user can use a separate command to reset the entire device in real + time, that resets the firmware and driver entities. + For example, after flashing a new firmware image, this feature allows the + user to initiate the reset immediately from a separate command, to load + the new firmware without reloading the driver or resetting the system. diff --git a/include/net/devlink.h b/include/net/devlink.h index 8ffc1b5c..eb28fa1 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -406,6 +406,7 @@ enum devlink_param_generic_id { DEVLINK_PARAM_GENERIC_ID_FW_LOAD_POLICY, DEVLINK_PARAM_GENERIC_ID_RESET_DEV_ON_DRV_PROBE, DEVLINK_PARAM_GENERIC_ID_ENABLE_ROCE, + DEVLINK_PARAM_GENERIC_ID_ENABLE_LIVE_DEV_RESET, /* add new param generic ids above here*/ __DEVLINK_PARAM_GENERIC_ID_MAX, @@ -443,6 +444,9 @@ enum devlink_param_generic_id { #define DEVLINK_PARAM_GENERIC_ENABLE_ROCE_NAME "enable_roce" #define DEVLINK_PARAM_GENERIC_ENABLE_ROCE_TYPE DEVLINK_PARAM_TYPE_BOOL +#define DEVLINK_PARAM_GENERIC_ENABLE_LIVE_DEV_RESET_NAME "enable_live_dev_reset" +#define DEVLINK_PARAM_GENERIC_ENABLE_LIVE_DEV_RESET_TYPE DEVLINK_PARAM_TYPE_BOOL + #define DEVLINK_PARAM_GENERIC(_id, _cmodes, _get, _set, _validate) \ { \ .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ diff --git a/net/core/devlink.c b/net/core/devlink.c index 7b76e5f..7b52b38 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -3011,6 +3011,11 @@ static int devlink_nl_cmd_flash_update(struct sk_buff *skb, .name = DEVLINK_PARAM_GENERIC_ENABLE_ROCE_NAME, .type = DEVLINK_PARAM_GENERIC_ENABLE_ROCE_TYPE, }, + { + .id = DEVLINK_PARAM_GENERIC_ID_ENABLE_LIVE_DEV_RESET, + .name = DEVLINK_PARAM_GENERIC_ENABLE_LIVE_DEV_RESET_NAME, + .type = DEVLINK_PARAM_GENERIC_ENABLE_LIVE_DEV_RESET_TYPE, + }, }; static int devlink_param_generic_verify(const struct devlink_param *param) From patchwork Sun May 31 07:03:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasundhara Volam X-Patchwork-Id: 1301340 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; 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.a=rsa-sha256 header.s=google header.b=gp+KTcu5; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49ZTr15fp2z9sSc for ; Sun, 31 May 2020 17:06:41 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729659AbgEaHGk (ORCPT ); Sun, 31 May 2020 03:06:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51958 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726220AbgEaHGk (ORCPT ); Sun, 31 May 2020 03:06:40 -0400 Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1F678C05BD43 for ; Sun, 31 May 2020 00:06:40 -0700 (PDT) Received: by mail-wr1-x444.google.com with SMTP id x14so8288792wrp.2 for ; Sun, 31 May 2020 00:06:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=qXOsLRWOxhLNoFMu89LdsxTD7a2Zk6hJGB1S7/GPv44=; b=gp+KTcu53hmYWMDsGV23Bhp+ktOsiT9nJEmyurR6CWeR+4RfasCM8XMLkOUrAmgAzm cxft9ag6eIQ8Wmnodlwkp2RuQ8N/k+g4FkTSNl5UlkI2joRTff1qpbaBcrRG+4hPO71W dYs6Gr1zYnISDIXrh15QlhT6/QP22ypta7Sck= 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=qXOsLRWOxhLNoFMu89LdsxTD7a2Zk6hJGB1S7/GPv44=; b=IEszP1FvYw7HzpaLGMcCM6+KtbPTbLwFT4ATSZWc8KtS8M8TkvfxRrNQQh7azGnvB6 GI9MhMN2gg5/kUq+o0iycF/RaCSWdjE1G4DWskrIzH0arlXVDSa5LbNFHK8Fuqn/FXTh a5Gmtr7GIoTz29VX4p7r7Qn1nULa4evKMca9znwPH5gVhmJbK7mzr0l5y5H+Ycv3UVCW Q/L832DOHdZlU41lEtSH7qr9pzhgiAyn6R310NnBJ/3+UW3E/a/1NK51e60XzzuQfpf+ fcrpbknOwMjlJ+cDTN2oNrm3iQGIXP5uuOrxlSrDK8OzBF8zHrLt7nsgjoxX6rqz1eEE 0a1A== X-Gm-Message-State: AOAM5336xnNpR5/MzeBWSa4pZataqzikhkmvgphNI9xtHw9UULusLLac 32moRtXUJmVUqRgLqnJyn7+3zA== X-Google-Smtp-Source: ABdhPJwEZl32/U9WKPfEMQNrp/4oEoEsb5SIIboP9cLn5ClR87noI19pwdViiIWqgnNi3+GfCx3eHQ== X-Received: by 2002:adf:f4d2:: with SMTP id h18mr16531498wrp.370.1590908798615; Sun, 31 May 2020 00:06:38 -0700 (PDT) Received: from lxpurley1.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id 5sm4828731wrr.5.2020.05.31.00.06.35 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 31 May 2020 00:06:38 -0700 (PDT) From: Vasundhara Volam To: davem@davemloft.net Cc: netdev@vger.kernel.org, michael.chan@broadcom.com, Vasundhara Volam , Jiri Pirko , Jakub Kicinski Subject: [PATCH v3 net-next 2/6] devlink: Add 'allow_live_dev_reset' generic parameter. Date: Sun, 31 May 2020 12:33:41 +0530 Message-Id: <1590908625-10952-3-git-send-email-vasundhara-v.volam@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1590908625-10952-1-git-send-email-vasundhara-v.volam@broadcom.com> References: <1590908625-10952-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 This parameter is supported only when 'enable_live_dev_reset' is true. The purpose of this parameter is to allow the user on a host to temporarily disable the live reset feature of the device. For example, if a host is running a mission critical application, a user from the host can set this parameter to false, to avoid a potential live reset from disrupting it. Cc: Jiri Pirko Cc: Jakub Kicinski Signed-off-by: Vasundhara Volam Signed-off-by: Michael Chan --- Documentation/networking/devlink/devlink-params.rst | 20 ++++++++++++++++++++ include/net/devlink.h | 4 ++++ net/core/devlink.c | 5 +++++ 3 files changed, 29 insertions(+) diff --git a/Documentation/networking/devlink/devlink-params.rst b/Documentation/networking/devlink/devlink-params.rst index 8e12c83..450fe18 100644 --- a/Documentation/networking/devlink/devlink-params.rst +++ b/Documentation/networking/devlink/devlink-params.rst @@ -116,3 +116,23 @@ own name. For example, after flashing a new firmware image, this feature allows the user to initiate the reset immediately from a separate command, to load the new firmware without reloading the driver or resetting the system. + + A user can set the 'allow_live_dev_reset' parameter to false to + momentarily disable the live reset capability. + * - ``allow_live_dev_reset`` + - Boolean + - This parameter is supported only when 'enable_live_dev_reset' is true. + The purpose of this parameter is to allow the user on a host to + temporarily disable the live reset feature of the device. When this + parameter is set to true from all the hosts in a multi-host environment + for example, a user from any host can initiate live device reset from any + of the host drivers. + + For the parameter to be true, all the loaded host drivers must support + the live reset and the parameter must be set to true for all the host + drivers. For example, if any of the host (in case of multi-host NIC) is + loaded with an old driver which is not aware of the feature, then the + value of the parameter will be false until the old driver is upgraded + or unloaded. Also if the user has set the parameter to false on one of + the host (say A), the parameter will be false for all the hosts until the + user sets the parameter to true in the host (A). diff --git a/include/net/devlink.h b/include/net/devlink.h index eb28fa1..d922033 100644 --- a/include/net/devlink.h +++ b/include/net/devlink.h @@ -407,6 +407,7 @@ enum devlink_param_generic_id { DEVLINK_PARAM_GENERIC_ID_RESET_DEV_ON_DRV_PROBE, DEVLINK_PARAM_GENERIC_ID_ENABLE_ROCE, DEVLINK_PARAM_GENERIC_ID_ENABLE_LIVE_DEV_RESET, + DEVLINK_PARAM_GENERIC_ID_ALLOW_LIVE_DEV_RESET, /* add new param generic ids above here*/ __DEVLINK_PARAM_GENERIC_ID_MAX, @@ -447,6 +448,9 @@ enum devlink_param_generic_id { #define DEVLINK_PARAM_GENERIC_ENABLE_LIVE_DEV_RESET_NAME "enable_live_dev_reset" #define DEVLINK_PARAM_GENERIC_ENABLE_LIVE_DEV_RESET_TYPE DEVLINK_PARAM_TYPE_BOOL +#define DEVLINK_PARAM_GENERIC_ALLOW_LIVE_DEV_RESET_NAME "allow_live_dev_reset" +#define DEVLINK_PARAM_GENERIC_ALLOW_LIVE_DEV_RESET_TYPE DEVLINK_PARAM_TYPE_BOOL + #define DEVLINK_PARAM_GENERIC(_id, _cmodes, _get, _set, _validate) \ { \ .id = DEVLINK_PARAM_GENERIC_ID_##_id, \ diff --git a/net/core/devlink.c b/net/core/devlink.c index 7b52b38..e36f6c4 100644 --- a/net/core/devlink.c +++ b/net/core/devlink.c @@ -3016,6 +3016,11 @@ static int devlink_nl_cmd_flash_update(struct sk_buff *skb, .name = DEVLINK_PARAM_GENERIC_ENABLE_LIVE_DEV_RESET_NAME, .type = DEVLINK_PARAM_GENERIC_ENABLE_LIVE_DEV_RESET_TYPE, }, + { + .id = DEVLINK_PARAM_GENERIC_ID_ALLOW_LIVE_DEV_RESET, + .name = DEVLINK_PARAM_GENERIC_ALLOW_LIVE_DEV_RESET_NAME, + .type = DEVLINK_PARAM_GENERIC_ALLOW_LIVE_DEV_RESET_TYPE, + }, }; static int devlink_param_generic_verify(const struct devlink_param *param) From patchwork Sun May 31 07:03:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasundhara Volam X-Patchwork-Id: 1301341 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; 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.a=rsa-sha256 header.s=google header.b=QqKi83xe; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49ZTr83pG7z9sSc for ; Sun, 31 May 2020 17:06:48 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387414AbgEaHGr (ORCPT ); Sun, 31 May 2020 03:06:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51978 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387407AbgEaHGr (ORCPT ); Sun, 31 May 2020 03:06:47 -0400 Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0637EC05BD43 for ; Sun, 31 May 2020 00:06:47 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id r7so8301130wro.1 for ; Sun, 31 May 2020 00:06:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=28iXEgTxZGiycTdVsy4Tz/mI6Y6DSr8IpzNq47taE6U=; b=QqKi83xeAVIB3Rk4gVswD+kmoCTWZRuU7Lu6+j07fwz2M28nBhd6Hc3QTTOOonKGCT 1VqlWuHexs8AwTWIwnKXeQQYTyhpQgalQD+5YXjuZy8LwlfJgZgTPVCf1LzAJNEVhhPI yvFaqJN0jt8yrhNhzfXzR0TJX1ULzmARbY1UA= 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=28iXEgTxZGiycTdVsy4Tz/mI6Y6DSr8IpzNq47taE6U=; b=St2cisqtfmjzEMz29p2RkuukRetzuGkQEQ6IA6YTs+m06JDdLF8YZSl1plbhrPENF/ SppCKkHm2C2JqI3lixhZYcO87wWI7Y6siV7YEsgmKAXsHm6aWoPiQ7YO5zC8kJdxr8JK ZgKCkQV93BNBQ0xbDQ3jSWQFAFIQuXILLAgAI3rjWWCre2NN2uROgQ9M4bUp0/Y0IXW3 BP4HH+Usfp1+Vq4pwzjuHiO7YdpmZcSWihKhHKuwKCvyGb2WNtTt7g1WLl7FR3HENIeE 1iq29ZxW9uKt3AW0Db6cRHjhAInru1CVksaxg+OIEBui8e1LNhBobBDGqs+mXm7Kxzzc y1hg== X-Gm-Message-State: AOAM5302l1gzgTl1554Za8lf8ItOX4Jqc07P9cxujcfxnI1iTjF6Nqt/ VPmSPmQgzPFnsKg976YvPcCEVNSqBoo= X-Google-Smtp-Source: ABdhPJwhlRVmuv0eGYBQFMy9+EyETPpK00ik/ueqcyTpRWYPuVBifVtW7eXqsTj+KG2D/6vXvwUFTQ== X-Received: by 2002:a05:6000:1c8:: with SMTP id t8mr16214736wrx.200.1590908805631; Sun, 31 May 2020 00:06:45 -0700 (PDT) Received: from lxpurley1.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id 5sm4828731wrr.5.2020.05.31.00.06.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 31 May 2020 00:06:45 -0700 (PDT) From: Vasundhara Volam To: davem@davemloft.net Cc: netdev@vger.kernel.org, michael.chan@broadcom.com, Vasundhara Volam Subject: [PATCH v3 net-next 3/6] bnxt_en: Use 'enable_live_dev_reset' devlink parameter. Date: Sun, 31 May 2020 12:33:42 +0530 Message-Id: <1590908625-10952-4-git-send-email-vasundhara-v.volam@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1590908625-10952-1-git-send-email-vasundhara-v.volam@broadcom.com> References: <1590908625-10952-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 When enabled, device will enable the live reset capability in NVRAM configuration. Signed-off-by: Vasundhara Volam Signed-off-by: Michael Chan --- Documentation/networking/devlink/bnxt.rst | 2 ++ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c | 6 ++++++ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h | 1 + 3 files changed, 9 insertions(+) diff --git a/Documentation/networking/devlink/bnxt.rst b/Documentation/networking/devlink/bnxt.rst index 3dfd84c..ae0a69d 100644 --- a/Documentation/networking/devlink/bnxt.rst +++ b/Documentation/networking/devlink/bnxt.rst @@ -22,6 +22,8 @@ Parameters - Permanent * - ``msix_vec_per_pf_min`` - Permanent + * - ``enable_live_dev_reset`` + - Permanent The ``bnxt`` driver also implements the following driver-specific parameters. diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c index a812beb..3e1a4ef 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c @@ -314,6 +314,8 @@ enum bnxt_dl_param_id { NVM_OFF_MSIX_VEC_PER_PF_MIN, BNXT_NVM_SHARED_CFG, 7, 4}, {BNXT_DEVLINK_PARAM_ID_GRE_VER_CHECK, NVM_OFF_DIS_GRE_VER_CHECK, BNXT_NVM_SHARED_CFG, 1, 1}, + {DEVLINK_PARAM_GENERIC_ID_ENABLE_LIVE_DEV_RESET, + NVM_OFF_FW_LIVE_RESET, BNXT_NVM_SHARED_CFG, 1, 1}, }; union bnxt_nvm_data { @@ -640,6 +642,10 @@ static int bnxt_dl_msix_validate(struct devlink *dl, u32 id, BIT(DEVLINK_PARAM_CMODE_PERMANENT), bnxt_dl_nvm_param_get, bnxt_dl_nvm_param_set, NULL), + DEVLINK_PARAM_GENERIC(ENABLE_LIVE_DEV_RESET, + BIT(DEVLINK_PARAM_CMODE_PERMANENT), + bnxt_dl_nvm_param_get, bnxt_dl_nvm_param_set, + NULL), }; static const struct devlink_param bnxt_dl_port_params[] = { diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h index d5c8bd4..0c786fb 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.h @@ -39,6 +39,7 @@ static inline void bnxt_link_bp_to_dl(struct bnxt *bp, struct devlink *dl) #define NVM_OFF_DIS_GRE_VER_CHECK 171 #define NVM_OFF_ENABLE_SRIOV 401 #define NVM_OFF_NVM_CFG_VER 602 +#define NVM_OFF_FW_LIVE_RESET 917 #define BNXT_NVM_CFG_VER_BITS 24 #define BNXT_NVM_CFG_VER_BYTES 4 From patchwork Sun May 31 07:03:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasundhara Volam X-Patchwork-Id: 1301342 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; 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.a=rsa-sha256 header.s=google header.b=JhhZpmLv; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49ZTrG5wlXz9sSc for ; Sun, 31 May 2020 17:06:54 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387424AbgEaHGx (ORCPT ); Sun, 31 May 2020 03:06:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51994 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387407AbgEaHGx (ORCPT ); Sun, 31 May 2020 03:06:53 -0400 Received: from mail-wr1-x442.google.com (mail-wr1-x442.google.com [IPv6:2a00:1450:4864:20::442]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 12740C05BD43 for ; Sun, 31 May 2020 00:06:53 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id y17so8189282wrn.11 for ; Sun, 31 May 2020 00:06:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=lPMutBkJju6wyauV5k7LNnHuIgh2OD++KVtMrRBIPHQ=; b=JhhZpmLvZBUWgR40VS/139ETOgxSQa6asVF8ZtsrvxIptVjcXW08sF39c0buh6MViu fYEzMioD9dwE4JRWth0w0VBntvADmWFcyEp3wnivMe1wd00lVhpnpiGo9I1K162prOQS VsabitljIDac9wGpvuCc1IOwXLslQbaaFxPNg= 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=lPMutBkJju6wyauV5k7LNnHuIgh2OD++KVtMrRBIPHQ=; b=Ec+MeB/nSyixVcu2TX4zbMip81R8fZ6T1up2XQBtPtH0xFL9JtJwjggsjBIID2Q2RT GxZHHk/JzgRI+NW3lvsJ4Xps25fw7pPMT/14gJnND1F8vK9O5t+W7RFPeZxnfcLZXPKG G+vt84EdZCFV9d8KIG2e/dij8mIyXZon3U+vkX/vjKYbfrEHaTb/AeDZL0nhsCX3g2wl QcW0qo/C8XBc+cIfRLyhdC3h0GjDZxbWkJTb8wRPE0oc/v36SVeWDnHtKSRRm943XgTd o07B2HG5kH73p49zY/cAlLCymqDOyR/MEwaLZhksX/l9Py6XXXaY8pRRQdmLMs2YM5fR tyVA== X-Gm-Message-State: AOAM533xApFmHD879o/y1p/15vJnm7rCYq8SCz+SZJ5cyS2Rv+FuKZY0 +km/UHzTEoLU9eBOu2lFPjnWFQ== X-Google-Smtp-Source: ABdhPJw/7U3twnCd7c1YsMkcq4aUp9/C1cmUQTxFjJNOXBbOfcA58aBAU3ZQ50mf3S4Txx0tm1vKPA== X-Received: by 2002:adf:de84:: with SMTP id w4mr16649665wrl.54.1590908811613; Sun, 31 May 2020 00:06:51 -0700 (PDT) Received: from lxpurley1.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id 5sm4828731wrr.5.2020.05.31.00.06.49 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 31 May 2020 00:06:51 -0700 (PDT) From: Vasundhara Volam To: davem@davemloft.net Cc: netdev@vger.kernel.org, michael.chan@broadcom.com, Vasundhara Volam Subject: [PATCH v3 net-next 4/6] bnxt_en: Update firmware spec. to 1.10.1.40. Date: Sun, 31 May 2020 12:33:43 +0530 Message-Id: <1590908625-10952-5-git-send-email-vasundhara-v.volam@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1590908625-10952-1-git-send-email-vasundhara-v.volam@broadcom.com> References: <1590908625-10952-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 Major changes are to add additional flags to configure hot firmware reset. Signed-off-by: Vasundhara Volam Signed-off-by: Michael Chan Reviewed-by: Edwin Peer --- drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h | 64 ++++++++++++++++----------- 1 file changed, 37 insertions(+), 27 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h b/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h index 7e9235c..0a6e60e 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_hsi.h @@ -367,6 +367,8 @@ struct cmd_nums { #define HWRM_TF_EXT_EM_OP 0x2ddUL #define HWRM_TF_EXT_EM_CFG 0x2deUL #define HWRM_TF_EXT_EM_QCFG 0x2dfUL + #define HWRM_TF_EM_INSERT 0x2e0UL + #define HWRM_TF_EM_DELETE 0x2e1UL #define HWRM_TF_TCAM_SET 0x2eeUL #define HWRM_TF_TCAM_GET 0x2efUL #define HWRM_TF_TCAM_MOVE 0x2f0UL @@ -391,6 +393,7 @@ struct cmd_nums { #define HWRM_DBG_QCAPS 0xff20UL #define HWRM_DBG_QCFG 0xff21UL #define HWRM_DBG_CRASHDUMP_MEDIUM_CFG 0xff22UL + #define HWRM_NVM_REQ_ARBITRATION 0xffedUL #define HWRM_NVM_FACTORY_DEFAULTS 0xffeeUL #define HWRM_NVM_VALIDATE_OPTION 0xffefUL #define HWRM_NVM_FLUSH 0xfff0UL @@ -464,8 +467,8 @@ struct hwrm_err_output { #define HWRM_VERSION_MAJOR 1 #define HWRM_VERSION_MINOR 10 #define HWRM_VERSION_UPDATE 1 -#define HWRM_VERSION_RSVD 33 -#define HWRM_VERSION_STR "1.10.1.33" +#define HWRM_VERSION_RSVD 40 +#define HWRM_VERSION_STR "1.10.1.40" /* hwrm_ver_get_input (size:192b/24B) */ struct hwrm_ver_get_input { @@ -1192,6 +1195,7 @@ struct hwrm_func_qcaps_output { #define FUNC_QCAPS_RESP_FLAGS_EXT_ECN_MARK_SUPPORTED 0x1UL #define FUNC_QCAPS_RESP_FLAGS_EXT_ECN_STATS_SUPPORTED 0x2UL #define FUNC_QCAPS_RESP_FLAGS_EXT_EXT_HW_STATS_SUPPORTED 0x4UL + #define FUNC_QCAPS_RESP_FLAGS_EXT_HOT_RESET_IF_SUPPORT 0x8UL u8 unused_1[3]; u8 valid; }; @@ -1226,6 +1230,7 @@ struct hwrm_func_qcfg_output { #define FUNC_QCFG_RESP_FLAGS_TRUSTED_VF 0x40UL #define FUNC_QCFG_RESP_FLAGS_SECURE_MODE_ENABLED 0x80UL #define FUNC_QCFG_RESP_FLAGS_PREBOOT_LEGACY_L2_RINGS 0x100UL + #define FUNC_QCFG_RESP_FLAGS_HOT_RESET_ALLOWED 0x200UL u8 mac_address[6]; __le16 pci_id; __le16 alloc_rsscos_ctx; @@ -1352,30 +1357,32 @@ struct hwrm_func_cfg_input { #define FUNC_CFG_REQ_FLAGS_NQ_ASSETS_TEST 0x800000UL #define FUNC_CFG_REQ_FLAGS_TRUSTED_VF_DISABLE 0x1000000UL #define FUNC_CFG_REQ_FLAGS_PREBOOT_LEGACY_L2_RINGS 0x2000000UL + #define FUNC_CFG_REQ_FLAGS_HOT_RESET_IF_EN_DIS 0x4000000UL __le32 enables; - #define FUNC_CFG_REQ_ENABLES_MTU 0x1UL - #define FUNC_CFG_REQ_ENABLES_MRU 0x2UL - #define FUNC_CFG_REQ_ENABLES_NUM_RSSCOS_CTXS 0x4UL - #define FUNC_CFG_REQ_ENABLES_NUM_CMPL_RINGS 0x8UL - #define FUNC_CFG_REQ_ENABLES_NUM_TX_RINGS 0x10UL - #define FUNC_CFG_REQ_ENABLES_NUM_RX_RINGS 0x20UL - #define FUNC_CFG_REQ_ENABLES_NUM_L2_CTXS 0x40UL - #define FUNC_CFG_REQ_ENABLES_NUM_VNICS 0x80UL - #define FUNC_CFG_REQ_ENABLES_NUM_STAT_CTXS 0x100UL - #define FUNC_CFG_REQ_ENABLES_DFLT_MAC_ADDR 0x200UL - #define FUNC_CFG_REQ_ENABLES_DFLT_VLAN 0x400UL - #define FUNC_CFG_REQ_ENABLES_DFLT_IP_ADDR 0x800UL - #define FUNC_CFG_REQ_ENABLES_MIN_BW 0x1000UL - #define FUNC_CFG_REQ_ENABLES_MAX_BW 0x2000UL - #define FUNC_CFG_REQ_ENABLES_ASYNC_EVENT_CR 0x4000UL - #define FUNC_CFG_REQ_ENABLES_VLAN_ANTISPOOF_MODE 0x8000UL - #define FUNC_CFG_REQ_ENABLES_ALLOWED_VLAN_PRIS 0x10000UL - #define FUNC_CFG_REQ_ENABLES_EVB_MODE 0x20000UL - #define FUNC_CFG_REQ_ENABLES_NUM_MCAST_FILTERS 0x40000UL - #define FUNC_CFG_REQ_ENABLES_NUM_HW_RING_GRPS 0x80000UL - #define FUNC_CFG_REQ_ENABLES_CACHE_LINESIZE 0x100000UL - #define FUNC_CFG_REQ_ENABLES_NUM_MSIX 0x200000UL - #define FUNC_CFG_REQ_ENABLES_ADMIN_LINK_STATE 0x400000UL + #define FUNC_CFG_REQ_ENABLES_MTU 0x1UL + #define FUNC_CFG_REQ_ENABLES_MRU 0x2UL + #define FUNC_CFG_REQ_ENABLES_NUM_RSSCOS_CTXS 0x4UL + #define FUNC_CFG_REQ_ENABLES_NUM_CMPL_RINGS 0x8UL + #define FUNC_CFG_REQ_ENABLES_NUM_TX_RINGS 0x10UL + #define FUNC_CFG_REQ_ENABLES_NUM_RX_RINGS 0x20UL + #define FUNC_CFG_REQ_ENABLES_NUM_L2_CTXS 0x40UL + #define FUNC_CFG_REQ_ENABLES_NUM_VNICS 0x80UL + #define FUNC_CFG_REQ_ENABLES_NUM_STAT_CTXS 0x100UL + #define FUNC_CFG_REQ_ENABLES_DFLT_MAC_ADDR 0x200UL + #define FUNC_CFG_REQ_ENABLES_DFLT_VLAN 0x400UL + #define FUNC_CFG_REQ_ENABLES_DFLT_IP_ADDR 0x800UL + #define FUNC_CFG_REQ_ENABLES_MIN_BW 0x1000UL + #define FUNC_CFG_REQ_ENABLES_MAX_BW 0x2000UL + #define FUNC_CFG_REQ_ENABLES_ASYNC_EVENT_CR 0x4000UL + #define FUNC_CFG_REQ_ENABLES_VLAN_ANTISPOOF_MODE 0x8000UL + #define FUNC_CFG_REQ_ENABLES_ALLOWED_VLAN_PRIS 0x10000UL + #define FUNC_CFG_REQ_ENABLES_EVB_MODE 0x20000UL + #define FUNC_CFG_REQ_ENABLES_NUM_MCAST_FILTERS 0x40000UL + #define FUNC_CFG_REQ_ENABLES_NUM_HW_RING_GRPS 0x80000UL + #define FUNC_CFG_REQ_ENABLES_CACHE_LINESIZE 0x100000UL + #define FUNC_CFG_REQ_ENABLES_NUM_MSIX 0x200000UL + #define FUNC_CFG_REQ_ENABLES_ADMIN_LINK_STATE 0x400000UL + #define FUNC_CFG_REQ_ENABLES_HOT_RESET_IF_SUPPORT 0x800000UL __le16 mtu; __le16 mru; __le16 num_rsscos_ctxs; @@ -7620,7 +7627,8 @@ struct hwrm_dbg_ring_info_get_input { #define DBG_RING_INFO_GET_REQ_RING_TYPE_L2_CMPL 0x0UL #define DBG_RING_INFO_GET_REQ_RING_TYPE_TX 0x1UL #define DBG_RING_INFO_GET_REQ_RING_TYPE_RX 0x2UL - #define DBG_RING_INFO_GET_REQ_RING_TYPE_LAST DBG_RING_INFO_GET_REQ_RING_TYPE_RX + #define DBG_RING_INFO_GET_REQ_RING_TYPE_NQ 0x3UL + #define DBG_RING_INFO_GET_REQ_RING_TYPE_LAST DBG_RING_INFO_GET_REQ_RING_TYPE_NQ u8 unused_0[3]; __le32 fw_ring_id; }; @@ -7633,7 +7641,8 @@ struct hwrm_dbg_ring_info_get_output { __le16 resp_len; __le32 producer_index; __le32 consumer_index; - u8 unused_0[7]; + __le32 cag_vector_ctrl; + u8 unused_0[3]; u8 valid; }; @@ -7922,6 +7931,7 @@ struct hwrm_nvm_install_update_input { #define NVM_INSTALL_UPDATE_REQ_FLAGS_ERASE_UNUSED_SPACE 0x1UL #define NVM_INSTALL_UPDATE_REQ_FLAGS_REMOVE_UNUSED_PKG 0x2UL #define NVM_INSTALL_UPDATE_REQ_FLAGS_ALLOWED_TO_DEFRAG 0x4UL + #define NVM_INSTALL_UPDATE_REQ_FLAGS_VERIFY_ONLY 0x8UL u8 unused_0[2]; }; From patchwork Sun May 31 07:03:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasundhara Volam X-Patchwork-Id: 1301343 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; 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.a=rsa-sha256 header.s=google header.b=iHtqaX4y; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49ZTrP2RMwz9sSc for ; Sun, 31 May 2020 17:07:01 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387433AbgEaHHA (ORCPT ); Sun, 31 May 2020 03:07:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52014 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387407AbgEaHG7 (ORCPT ); Sun, 31 May 2020 03:06:59 -0400 Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 97AA6C05BD43 for ; Sun, 31 May 2020 00:06:59 -0700 (PDT) Received: by mail-wm1-x343.google.com with SMTP id f185so8238309wmf.3 for ; Sun, 31 May 2020 00:06:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=T2V/Yn57ra8AwU/cESpZtKBEP4Kg27ZBno5kLaCrvLo=; b=iHtqaX4yKGR8EO0AJj10QWDdJ0L+YCSmoQGYdZ6NQz0SgGPmSa6tZhLC8YRCRH9lsL 7b4bkqEL3BDqjm6wcwvLwIeKQbvuz9eJ92y9X2SH1s5UAxy/UWK7iQviaTq8/FZR62gl 5Tfcs05dm+Bg6PvjIxxt3/PA+d6OBxSCAsR/I= 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=T2V/Yn57ra8AwU/cESpZtKBEP4Kg27ZBno5kLaCrvLo=; b=eEkdJ+1qQoLUlOEo/0hmsvB9uODiY92YaJS2/7gucH0n1l2aPcqsO2Kh0UcrTyYdqO GycviWIZDaQAObdG2/WOxrTsBeHCF64jAag3ozIIXCAdtvmVyga+Q3naxa8PCD9/ZQtm YXYmR6CMqhGk73Aje/NPiJz8VspfWajPvHSneB04ZdR8xQ2yU53PVPRXCIMwO2aYIEVC /EqVjQpzwKL7u9g7QXj183ADIuOk/wV+yMzpmRQdwok/8qXfzsjtaBCYj9fJKYVwoQgV T35lB3mmQX9LtGdfCPu1An1+xY9KKgDIj/GLfNqwZoPjfKhl0Lyl7WjvvsQkKj9/SSMc cxlg== X-Gm-Message-State: AOAM532nQ7XWq3af4ZcDkwaOH/exus3OvUMojlamgXwcO+ghnDEZoDZr Q2abNCRcHCaTansS8Qw/ywjvDA== X-Google-Smtp-Source: ABdhPJyWxmweHYW45M4KjcCi8VQ4Va8UXAwwLBAll3Cd3uOdEKl+hNBSkJWBDAS6cf/AJmZjE3Eudg== X-Received: by 2002:a7b:c212:: with SMTP id x18mr6980739wmi.119.1590908818127; Sun, 31 May 2020 00:06:58 -0700 (PDT) Received: from lxpurley1.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id 5sm4828731wrr.5.2020.05.31.00.06.56 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 31 May 2020 00:06:57 -0700 (PDT) From: Vasundhara Volam To: davem@davemloft.net Cc: netdev@vger.kernel.org, michael.chan@broadcom.com, Vasundhara Volam Subject: [PATCH v3 net-next 5/6] bnxt_en: Use 'allow_live_dev_reset' devlink parameter. Date: Sun, 31 May 2020 12:33:44 +0530 Message-Id: <1590908625-10952-6-git-send-email-vasundhara-v.volam@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1590908625-10952-1-git-send-email-vasundhara-v.volam@broadcom.com> References: <1590908625-10952-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 This parameter allows the user to prevent live reset of the device temporarily by setting it to false. For example, if the host is running a mission critical application, user can set this parameter to false until the application has completed, to avoid a potential device reset disrupting it. Signed-off-by: Vasundhara Volam Signed-off-by: Michael Chan --- v2->v3: Rename parameter name to "allow_live_dev_reset". - Moved permanent configuration mode code to a separate patch as the param is renamed to "enable_live_dev_reset". - Rename the get/set callbacks of the param accordingly. - Moved the documentation completely to devlink-params.rst file. --- Documentation/networking/devlink/bnxt.rst | 2 ++ drivers/net/ethernet/broadcom/bnxt/bnxt.c | 28 ++++++++++++++- drivers/net/ethernet/broadcom/bnxt/bnxt.h | 2 ++ drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c | 43 +++++++++++++++++++++++ 4 files changed, 74 insertions(+), 1 deletion(-) diff --git a/Documentation/networking/devlink/bnxt.rst b/Documentation/networking/devlink/bnxt.rst index ae0a69d..5573663 100644 --- a/Documentation/networking/devlink/bnxt.rst +++ b/Documentation/networking/devlink/bnxt.rst @@ -24,6 +24,8 @@ Parameters - Permanent * - ``enable_live_dev_reset`` - Permanent + * - ``allow_live_dev_reset`` + - Runtime The ``bnxt`` driver also implements the following driver-specific parameters. diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index f86b621..535fe8f 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -6955,7 +6955,7 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) struct hwrm_func_qcaps_input req = {0}; struct hwrm_func_qcaps_output *resp = bp->hwrm_cmd_resp_addr; struct bnxt_hw_resc *hw_resc = &bp->hw_resc; - u32 flags; + u32 flags, flags_ext; bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_FUNC_QCAPS, -1, -1); req.fid = cpu_to_le16(0xffff); @@ -6985,6 +6985,10 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) if (flags & FUNC_QCAPS_RESP_FLAGS_PUSH_MODE_SUPPORTED) bp->tx_push_thresh = BNXT_TX_PUSH_THRESH; + flags_ext = le32_to_cpu(resp->flags_ext); + if (flags_ext & FUNC_QCAPS_RESP_FLAGS_EXT_HOT_RESET_IF_SUPPORT) + bp->fw_cap |= BNXT_FW_CAP_HOT_RESET_IF_SUPPORT; + hw_resc->max_rsscos_ctxs = le16_to_cpu(resp->max_rsscos_ctx); hw_resc->max_cp_rings = le16_to_cpu(resp->max_cmpl_rings); hw_resc->max_tx_rings = le16_to_cpu(resp->max_tx_rings); @@ -8773,6 +8777,28 @@ static int bnxt_hwrm_shutdown_link(struct bnxt *bp) static int bnxt_fw_init_one(struct bnxt *bp); +int bnxt_hwrm_get_hot_reset(struct bnxt *bp, bool *hot_reset_allowed) +{ + struct hwrm_func_qcfg_output *resp = bp->hwrm_cmd_resp_addr; + struct hwrm_func_qcfg_input req = {0}; + int rc; + + if (!(bp->fw_cap & BNXT_FW_CAP_HOT_RESET_IF_SUPPORT)) { + *hot_reset_allowed = !!(bp->fw_cap & BNXT_FW_CAP_HOT_RESET); + return 0; + } + + bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_FUNC_QCFG, -1, -1); + req.fid = cpu_to_le16(0xffff); + mutex_lock(&bp->hwrm_cmd_lock); + rc = _hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); + if (!rc) + *hot_reset_allowed = !!(le16_to_cpu(resp->flags) & + FUNC_QCFG_RESP_FLAGS_HOT_RESET_ALLOWED); + mutex_unlock(&bp->hwrm_cmd_lock); + return rc; +} + static int bnxt_hwrm_if_change(struct bnxt *bp, bool up) { struct hwrm_func_drv_if_change_output *resp = bp->hwrm_cmd_resp_addr; diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index c04ac4a..fd6592e 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -1710,6 +1710,7 @@ struct bnxt { #define BNXT_FW_CAP_ERR_RECOVER_RELOAD 0x00100000 #define BNXT_FW_CAP_HOT_RESET 0x00200000 #define BNXT_FW_CAP_SHARED_PORT_CFG 0x00400000 + #define BNXT_FW_CAP_HOT_RESET_IF_SUPPORT 0x08000000 #define BNXT_NEW_RM(bp) ((bp)->fw_cap & BNXT_FW_CAP_NEW_RM) u32 hwrm_spec_code; @@ -2062,5 +2063,6 @@ int bnxt_get_port_parent_id(struct net_device *dev, struct netdev_phys_item_id *ppid); void bnxt_dim_work(struct work_struct *work); int bnxt_hwrm_set_ring_coal(struct bnxt *bp, struct bnxt_napi *bnapi); +int bnxt_hwrm_get_hot_reset(struct bnxt *bp, bool *hot_reset_allowed); #endif diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c index 3e1a4ef..da31351 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_devlink.c @@ -620,6 +620,45 @@ static int bnxt_dl_msix_validate(struct devlink *dl, u32 id, return 0; } +static int bnxt_live_dev_reset_get(struct devlink *dl, u32 id, + struct devlink_param_gset_ctx *ctx) +{ + struct bnxt *bp = bnxt_get_bp_from_dl(dl); + + return bnxt_hwrm_get_hot_reset(bp, &ctx->val.vbool); +} + +static int bnxt_live_dev_reset_set(struct devlink *dl, u32 id, + struct devlink_param_gset_ctx *ctx) +{ + struct bnxt *bp = bnxt_get_bp_from_dl(dl); + struct hwrm_func_cfg_input req = {0}; + bool hot_reset_allowed; + int rc; + + if (!(bp->fw_cap & BNXT_FW_CAP_HOT_RESET_IF_SUPPORT)) + return -EOPNOTSUPP; + + bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_FUNC_CFG, -1, -1); + req.fid = cpu_to_le16(0xffff); + req.enables = cpu_to_le32(FUNC_CFG_REQ_ENABLES_HOT_RESET_IF_SUPPORT); + if (ctx->val.vbool) + req.flags = cpu_to_le32(FUNC_CFG_REQ_FLAGS_HOT_RESET_IF_EN_DIS); + + rc = hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT); + if (rc) + return rc; + + rc = bnxt_hwrm_get_hot_reset(bp, &hot_reset_allowed); + if (rc) + return rc; + + if (ctx->val.vbool && !hot_reset_allowed) + netdev_info(bp->dev, "Live reset enabled, but is disallowed as it is disabled on other interface(s) of this device.\n"); + + return 0; +} + static const struct devlink_param bnxt_dl_params[] = { DEVLINK_PARAM_GENERIC(ENABLE_SRIOV, BIT(DEVLINK_PARAM_CMODE_PERMANENT), @@ -646,6 +685,10 @@ static int bnxt_dl_msix_validate(struct devlink *dl, u32 id, BIT(DEVLINK_PARAM_CMODE_PERMANENT), bnxt_dl_nvm_param_get, bnxt_dl_nvm_param_set, NULL), + DEVLINK_PARAM_GENERIC(ALLOW_LIVE_DEV_RESET, + BIT(DEVLINK_PARAM_CMODE_RUNTIME), + bnxt_live_dev_reset_get, bnxt_live_dev_reset_set, + NULL), }; static const struct devlink_param bnxt_dl_port_params[] = { From patchwork Sun May 31 07:03:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vasundhara Volam X-Patchwork-Id: 1301344 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=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; 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.a=rsa-sha256 header.s=google header.b=avP81T3L; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49ZTrV6pVDz9sSd for ; Sun, 31 May 2020 17:07:06 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387439AbgEaHHF (ORCPT ); Sun, 31 May 2020 03:07:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52030 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387402AbgEaHHF (ORCPT ); Sun, 31 May 2020 03:07:05 -0400 Received: from mail-wr1-x444.google.com (mail-wr1-x444.google.com [IPv6:2a00:1450:4864:20::444]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 010D7C05BD43 for ; Sun, 31 May 2020 00:07:05 -0700 (PDT) Received: by mail-wr1-x444.google.com with SMTP id e1so8265971wrt.5 for ; Sun, 31 May 2020 00:07:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=zuuk8Jvs9y7tcShD/HoX533qMHYTmDPbvbQa4HuJiek=; b=avP81T3Lbn0+xWjSrTlCnPZ3mLJAdIHWVMCjMTVlO3yzx9z2th1CUKNPMJgqHxuLr5 qgTr3qKQGnKZAzv20oTAD21/zNYA9B6dhQ2d+zgyVqebKB8/cjM2a6Y0orVlbObyAWn8 oKvlVNSQF6dV37W8tmcPM0Ds2TbILAW91hCQo= 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=zuuk8Jvs9y7tcShD/HoX533qMHYTmDPbvbQa4HuJiek=; b=dsVBQMMJdK0SSz7XY/dxDlIKXxmVdH/UrM57Pgfw49SKNlx7oqgm9fF271JjIi2NOI vOzj+46qWjkcqTEBH9o4Bczhu+7TfanYn1XwUXsJ4BdY1hGKt97kzZkV2pU5HFPrKe07 wIiVk7J69RXUs+CMwzV+pcUJMnl8W0XFUleeTnfAvP1jNEKVQ3oZ94iu1e4fgAOzPKE0 AalfuPIRBfuDwxwqhhNcYF+sRzrDNGlwhdYQwE365qkCEEEzkZkbI6shljfWytAyz8HL /cJqSaewYBHaWsMuJns/oC/5tlMiFGr1KKsgUPMwxkPXUNXuYiwhw6TpoHX4pNIHaCEO xwpg== X-Gm-Message-State: AOAM533UFmzuI7nVs159Sp091oxMK39YMrcWOD+hQBM+T5FqXgnDxNEv ptKQyW3tP4qo/jryiz9yIDZ4Nd+BHOs= X-Google-Smtp-Source: ABdhPJyJ2TnQbjwFXxzIaQ+E6rFN5J4Acoy2PalepdaRQrcYm0OjjZx9yn7WQ7Ymo7+Nph3+n6Oqhg== X-Received: by 2002:adf:c98a:: with SMTP id f10mr4855861wrh.329.1590908823634; Sun, 31 May 2020 00:07:03 -0700 (PDT) Received: from lxpurley1.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id 5sm4828731wrr.5.2020.05.31.00.07.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 31 May 2020 00:07:03 -0700 (PDT) From: Vasundhara Volam To: davem@davemloft.net Cc: netdev@vger.kernel.org, michael.chan@broadcom.com, Vasundhara Volam Subject: [PATCH v3 net-next 6/6] bnxt_en: Check if fw_live_reset is allowed before doing ETHTOOL_RESET Date: Sun, 31 May 2020 12:33:45 +0530 Message-Id: <1590908625-10952-7-git-send-email-vasundhara-v.volam@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1590908625-10952-1-git-send-email-vasundhara-v.volam@broadcom.com> References: <1590908625-10952-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 If device does not allow fw_live_reset, issue FW_RESET command without graceful flag, which requires a driver reload to reset the firmware. Signed-off-by: Vasundhara Volam Signed-off-by: Michael Chan Reviewed-by: Edwin Peer --- drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index dd0c3f2..e5eb8d2 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -1888,12 +1888,11 @@ static int bnxt_firmware_reset(struct net_device *dev, return bnxt_hwrm_firmware_reset(dev, proc_type, self_reset, flags); } -static int bnxt_firmware_reset_chip(struct net_device *dev) +static int bnxt_firmware_reset_chip(struct net_device *dev, bool hot_reset) { - struct bnxt *bp = netdev_priv(dev); u8 flags = 0; - if (bp->fw_cap & BNXT_FW_CAP_HOT_RESET) + if (hot_reset) flags = FW_RESET_REQ_FLAGS_RESET_GRACEFUL; return bnxt_hwrm_firmware_reset(dev, @@ -3082,7 +3081,7 @@ static void bnxt_self_test(struct net_device *dev, struct ethtool_test *etest, static int bnxt_reset(struct net_device *dev, u32 *flags) { struct bnxt *bp = netdev_priv(dev); - bool reload = false; + bool reload = false, hot_reset; u32 req = *flags; if (!req) @@ -3093,8 +3092,10 @@ static int bnxt_reset(struct net_device *dev, u32 *flags) return -EOPNOTSUPP; } - if (pci_vfs_assigned(bp->pdev) && - !(bp->fw_cap & BNXT_FW_CAP_HOT_RESET)) { + if (bnxt_hwrm_get_hot_reset(bp, &hot_reset)) + hot_reset = !!(bp->fw_cap & BNXT_FW_CAP_HOT_RESET); + + if (pci_vfs_assigned(bp->pdev) && !hot_reset) { netdev_err(dev, "Reset not allowed when VFs are assigned to VMs\n"); return -EBUSY; @@ -3103,9 +3104,9 @@ static int bnxt_reset(struct net_device *dev, u32 *flags) if ((req & BNXT_FW_RESET_CHIP) == BNXT_FW_RESET_CHIP) { /* This feature is not supported in older firmware versions */ if (bp->hwrm_spec_code >= 0x10803) { - if (!bnxt_firmware_reset_chip(dev)) { + if (!bnxt_firmware_reset_chip(dev, hot_reset)) { netdev_info(dev, "Firmware reset request successful.\n"); - if (!(bp->fw_cap & BNXT_FW_CAP_HOT_RESET)) + if (!hot_reset) reload = true; *flags &= ~BNXT_FW_RESET_CHIP; }