From patchwork Wed Aug 26 05:08:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 1351616 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=Tx0YAM6S; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bbv6M6HSyz9sSP for ; Wed, 26 Aug 2020 15:09:15 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726753AbgHZFJL (ORCPT ); Wed, 26 Aug 2020 01:09:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56558 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726704AbgHZFJG (ORCPT ); Wed, 26 Aug 2020 01:09:06 -0400 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 64974C061574 for ; Tue, 25 Aug 2020 22:09:06 -0700 (PDT) Received: by mail-wm1-x32c.google.com with SMTP id t14so444811wmi.3 for ; Tue, 25 Aug 2020 22:09:06 -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=wJzfwh+I7Qkxo/PgUrftLIVDHNWDdDaKowVOP9U2PTQ=; b=Tx0YAM6SaRYTUpwQFDa+1dSRozhhvFh87DWGNUTSuC79Urd3AIuwAgJsP2KnTgfGpg FqThNSMUm/U5IR2VzkUxUnTRiszj+hlKSwAa4zyzkahAfRsEPWXN3CQxmyOp6VlgK2EK JgKXDpEtUUM8WZmaiDz3Q+9gfNUsQxIJlyJik= 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=wJzfwh+I7Qkxo/PgUrftLIVDHNWDdDaKowVOP9U2PTQ=; b=o1OantJGRkexTYsKdP+6D6YWNQqArmvAC15Xue5z3Yy6xJm1ATMNGzPk1wEM5J8FTC e5tBQocAiHo9TEUSR6Yt9AJD+7FFgpz2L7/yWCw+bY6sX4ODx/vyiwq846SKFbbcXtFz HFzbAzfNVqM86AjbmWAe+gsSL+Q5eI/9nW8mNy2I4leU41eF/ydXXVbSqC2ONLVnxteI rSbke8GZwRWNNMKi2kVay7s8+1h2rUo732p0LaUdTOYuxpyWDeF5H5u4G3pyUDwcqygM Dhw3kEX5a6JlLQ78Oezv0ROKMCspTkCIjeU7HxrQpixZu7ttjRPVPAXg5nsl0PmKfks1 Dxfw== X-Gm-Message-State: AOAM533vjxgNAV0CnlNw3t0QOz5/p4NEY3HvdOUms0F+Yq3pT0D7jFWH ODHKBzpdT67Mhz2BWSvqVCZOJw== X-Google-Smtp-Source: ABdhPJykWbOTvLJBe0CHzVrzyPOfVVg8hINZO9kZqFrfKn4UF/mDzsZaVbtSJriOJwBKkaXLGbVy8A== X-Received: by 2002:a1c:a446:: with SMTP id n67mr4988654wme.174.1598418542435; Tue, 25 Aug 2020 22:09:02 -0700 (PDT) Received: from localhost.swdvt.lab.broadcom.com ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id q12sm2825832wrm.39.2020.08.25.22.09.00 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Aug 2020 22:09:01 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, kuba@kernel.org, Pavan Chebbi Subject: [PATCH net 1/8] bnxt_en: Don't query FW when netif_running() is false. Date: Wed, 26 Aug 2020 01:08:32 -0400 Message-Id: <1598418519-20168-2-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> References: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Pavan Chebbi In rare conditions like two stage OS installation, the ethtool's get_channels function may be called when the device is in D3 state, leading to uncorrectable PCI error. Check netif_running() first before making any query to FW which involves writing to BAR. Fixes: db4723b3cd2d ("bnxt_en: Check max_tx_scheduler_inputs value from firmware.") Signed-off-by: Pavan Chebbi Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index 64da654..3890c1a 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -806,7 +806,7 @@ static void bnxt_get_channels(struct net_device *dev, int max_tx_sch_inputs; /* Get the most up-to-date max_tx_sch_inputs. */ - if (BNXT_NEW_RM(bp)) + if (netif_running(dev) && BNXT_NEW_RM(bp)) bnxt_hwrm_func_resc_qcaps(bp, false); max_tx_sch_inputs = hw_resc->max_tx_sch_inputs; From patchwork Wed Aug 26 05:08:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 1351623 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=NhQyDYOb; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bbv6f4qktz9sSP for ; Wed, 26 Aug 2020 15:09:30 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726739AbgHZFJL (ORCPT ); Wed, 26 Aug 2020 01:09:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56556 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726190AbgHZFJG (ORCPT ); Wed, 26 Aug 2020 01:09:06 -0400 Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C9EF9C061756 for ; Tue, 25 Aug 2020 22:09:05 -0700 (PDT) Received: by mail-wm1-x341.google.com with SMTP id o21so454014wmc.0 for ; Tue, 25 Aug 2020 22:09:05 -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=rq5s7AmaiVsv85ejYXRh3zzJymvPxUYH4FKSzZrzbL8=; b=NhQyDYObK5+PDnWwN7tqxDbtlmdDFRFawEf29sXY7KMtmKXJKlfrdcWrrhJ3tx71i6 L75C0ISinNqitfFXdD//qEnvuw7+/46Y0yxj16gyKeCd0emnelsqijuA0m68lpb+VvUI AXkWahN5rcqlPvvEVRAm29U8wMW2htmlfI6GY= 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=rq5s7AmaiVsv85ejYXRh3zzJymvPxUYH4FKSzZrzbL8=; b=T4g+rUmwSWHFcmU1aqjTxVCJyqONl8y2MuOqZOB/dA+XbJsHBXEpa1VkwORVtELWr4 UVB2P5tD0qA9kMvC90Lu+d29pZkPd1Q3xdR0g6Yh9t77BbzS9uVakkb/Qdx1yNzS6rge RohiuoEKEwNUp6I/tnKcKUBl2AiVFSSnvkoely9HVh99nr5aydtKRU6/CK4Q7eKUfD76 7ZgItoz0KaFvZTKJbjizmUJMN3vw/H/2ZhFItgmdmMrtyqsHZksX5OqKUPQI6wppPSGM evnp8DQV+FvwetOwFxc/5QFtU/DtHJrmctI673RTgM6WQWHy4nFTySAlaudXWvvSA+4p 3e2g== X-Gm-Message-State: AOAM5303MiRBKboxHyCtuTAQYATu6gaR/Q9RhNizrBUKOO3lMEZF8GPn 8tLQWoEu0J+xyUFCJsRjVgF+0w== X-Google-Smtp-Source: ABdhPJy9ss8eLLKQJu69zriACbLVpdp3ppRFQKH05/xbaHSAy82VyvqBAqQ3IqPV1jTiNb9uaQ2Zyw== X-Received: by 2002:a05:600c:214e:: with SMTP id v14mr5199273wml.118.1598418544301; Tue, 25 Aug 2020 22:09:04 -0700 (PDT) Received: from localhost.swdvt.lab.broadcom.com ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id q12sm2825832wrm.39.2020.08.25.22.09.02 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Aug 2020 22:09:03 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, kuba@kernel.org, Vasundhara Volam Subject: [PATCH net 2/8] bnxt_en: Check for zero dir entries in NVRAM. Date: Wed, 26 Aug 2020 01:08:33 -0400 Message-Id: <1598418519-20168-3-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> References: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vasundhara Volam If firmware goes into unstable state, HWRM_NVM_GET_DIR_INFO firmware command may return zero dir entries. Return error in such case to avoid zero length dma buffer request. Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver.") Signed-off-by: Vasundhara Volam Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index 3890c1a..5d1a0cd 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -2323,6 +2323,9 @@ static int bnxt_get_nvram_directory(struct net_device *dev, u32 len, u8 *data) if (rc != 0) return rc; + if (!dir_entries || !entry_length) + return -EIO; + /* Insert 2 bytes of directory info (count and size of entries) */ if (len < 2) return -EINVAL; From patchwork Wed Aug 26 05:08:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 1351617 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=gKO3czjf; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bbv6N5wXpz9sSP for ; Wed, 26 Aug 2020 15:09:16 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726779AbgHZFJP (ORCPT ); Wed, 26 Aug 2020 01:09:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56564 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725764AbgHZFJI (ORCPT ); Wed, 26 Aug 2020 01:09:08 -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 A8630C061757 for ; Tue, 25 Aug 2020 22:09:07 -0700 (PDT) Received: by mail-wm1-x343.google.com with SMTP id u18so448247wmc.3 for ; Tue, 25 Aug 2020 22:09:07 -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=H/dopKxvhfi6bFovgPH6TA4CbFSDphMxDNj9s6UVnO4=; b=gKO3czjfXTiDVw8Q3urP4vBkpw8bnBWx+m97TNWiUdNRtbZyh1TPbNP74SFbGKjaaJ DpkxJayOlTXDmvmZy9xKZXlqT3ngUWjwusvdv11oHfNLt3j+a/eAPNiOSQbM4kAv48Ag hvS2czx8jlOSGKlEVYTts0lEmSAtRr/scXxG8= 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=H/dopKxvhfi6bFovgPH6TA4CbFSDphMxDNj9s6UVnO4=; b=m5x+PrWMY5kdzhT1wbZEMuxmv33vM9o8w1JaH5q49dMmjNUOSpdpHa9wKAgRl7IDFa knjt65gVryZgUUs+vU/ShlfNBHG4f9WRRc82Dy867BAzXH6uOYs+i4LYRSARlnbsVhJW fdzyO1+beP/UjQOx8Tz9MGETjo3G5roNAulZ1y1R+3ADLLL0i/hlCVESPEnqiEOeUgj0 8k/NNfuF9LmQfm+i6/6WAt/awpX6DXiZYbnKmMkcVY4GGmwKyHo4tbCWaZvinhd3slvN TWTS/f2ClTXw494eRSAcAiK9UzGIiRAFlabetEAnkDnsN+ijerHN/c4mVPdRlhwX0RlB tpeQ== X-Gm-Message-State: AOAM5325SNmxXx4fvIERgfXP2dyIgIRN5jMt6yZMd0jnOYMuK6ZqCLl/ HnkTKN9RWEbGtDwa4xy838a/JYikb+Nb1g== X-Google-Smtp-Source: ABdhPJyzvIexkdpAXqcdGRporOWEdchtkw2upZuR/ULu33U2AikchNMyeQtn9mp7xbcno/TXXu5Q5A== X-Received: by 2002:a7b:c941:: with SMTP id i1mr5048809wml.73.1598418546091; Tue, 25 Aug 2020 22:09:06 -0700 (PDT) Received: from localhost.swdvt.lab.broadcom.com ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id q12sm2825832wrm.39.2020.08.25.22.09.04 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Aug 2020 22:09:05 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, kuba@kernel.org Subject: [PATCH net 3/8] bnxt_en: Fix ethtool -S statitics with XDP or TCs enabled. Date: Wed, 26 Aug 2020 01:08:34 -0400 Message-Id: <1598418519-20168-4-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> References: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We are returning the wrong count for ETH_SS_STATS in get_sset_count() when XDP or TCs are enabled. In a recent commit, we got rid of irrelevant counters when the ring is RX only or TX only, but we did not make the proper adjustments for the count. As a result, when we have XDP or TCs enabled, we are returning an excess count because some of the rings are TX only. This causes ethtool -S to display extra counters with no counter names. Fix bnxt_get_num_ring_stats() by not assuming that all rings will always have RX and TX counters in combined mode. Fixes: 125592fbf467 ("bnxt_en: show only relevant ethtool stats for a TX or RX ring") Reviewed-by: Vasundhara Volam Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index 5d1a0cd..1bc5130 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -472,20 +472,13 @@ static int bnxt_get_num_tpa_ring_stats(struct bnxt *bp) static int bnxt_get_num_ring_stats(struct bnxt *bp) { int rx, tx, cmn; - bool sh = false; - - if (bp->flags & BNXT_FLAG_SHARED_RINGS) - sh = true; rx = NUM_RING_RX_HW_STATS + NUM_RING_RX_SW_STATS + bnxt_get_num_tpa_ring_stats(bp); tx = NUM_RING_TX_HW_STATS; cmn = NUM_RING_CMN_SW_STATS; - if (sh) - return (rx + tx + cmn) * bp->cp_nr_rings; - else - return rx * bp->rx_nr_rings + tx * bp->tx_nr_rings + - cmn * bp->cp_nr_rings; + return rx * bp->rx_nr_rings + tx * bp->tx_nr_rings + + cmn * bp->cp_nr_rings; } static int bnxt_get_num_stats(struct bnxt *bp) From patchwork Wed Aug 26 05:08:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 1351618 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=MdTpdcAp; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bbv6P1bYRz9sTN for ; Wed, 26 Aug 2020 15:09:17 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726793AbgHZFJQ (ORCPT ); Wed, 26 Aug 2020 01:09:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56572 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726716AbgHZFJK (ORCPT ); Wed, 26 Aug 2020 01:09:10 -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 7B770C0613ED for ; Tue, 25 Aug 2020 22:09:09 -0700 (PDT) Received: by mail-wr1-x441.google.com with SMTP id y3so429760wrl.4 for ; Tue, 25 Aug 2020 22:09:09 -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=zyskxP5YsesP+ANazA+/LzTkYPTZv7tA3Q9JqA2vbOM=; b=MdTpdcApyaNCO2ZM3C7OevE7YQDP8CFqJjpk58a5C4c7scScj3Nqfe0Yf81TkT49Bu CLCA4yGQOPqfmSfxjf8uQUs3LUqbB4ArCi61EBbuEywheBKMeI5lVqAveweoBQxVR8Rj nqYn+mkR1cnVTY1GFOMTx+WQq5XZYBeSBnC6w= 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=zyskxP5YsesP+ANazA+/LzTkYPTZv7tA3Q9JqA2vbOM=; b=GwOiF4kQHzw8mgbODz304EiFQBvqIGCkRSdVcu9e2ZHypqtzBIR7JR6F1lsf/GakuX /EFXhrxaHQ9jtP/LTvkvL7ZBtfPMUb3serWQOMNZC6Rii/VZyIpuIKMZJMYAAPS1WDMJ +5fI0d/lcNCHEEBR6kdZxek+Naj3wnlLfExk19vFNtILJnSkKcEGE5HJ2N49x2rkoq9q IrGHbQsJNWxQd2qmVrsI14xLHv7ngqXmLJQ+NQAfWPL02nETZioBCCwBH45OzP9geeRR FDCZGQX0pHdLE76mwSYyMmEtC5fdxzPADLAY2XioKYXMEpjWepVoH2nCKRMxkY/VyY5W iCEA== X-Gm-Message-State: AOAM532DeZ31LIhy9iyOvX+8KnSKUe8BuCA3f0ri7LvicXoP/UX85VO/ eLipMbIaUwSn0m/BLR8L2puMhw== X-Google-Smtp-Source: ABdhPJx207PXOWR6O09oxgSqber22pyNSVaJVpCN0C6jKabGlnpTWASIbyLGBYg4Ilb5G9L2Wpz93A== X-Received: by 2002:adf:fac7:: with SMTP id a7mr845546wrs.240.1598418548004; Tue, 25 Aug 2020 22:09:08 -0700 (PDT) Received: from localhost.swdvt.lab.broadcom.com ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id q12sm2825832wrm.39.2020.08.25.22.09.06 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Aug 2020 22:09:07 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, kuba@kernel.org, Vasundhara Volam Subject: [PATCH net 4/8] bnxt_en: Fix PCI AER error recovery flow Date: Wed, 26 Aug 2020 01:08:35 -0400 Message-Id: <1598418519-20168-5-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> References: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vasundhara Volam When a PCI error is detected the PCI state could be corrupt, save the PCI state after initialization and restore it after the slot reset. Fixes: 6316ea6db93d ("bnxt_en: Enable AER support.") Signed-off-by: Vasundhara Volam Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 31fb5a2..4389a74 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -12339,6 +12339,7 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) (long)pci_resource_start(pdev, 0), dev->dev_addr); pcie_print_link_status(pdev); + pci_save_state(pdev); return 0; init_err_cleanup: @@ -12536,6 +12537,8 @@ static pci_ers_result_t bnxt_io_slot_reset(struct pci_dev *pdev) "Cannot re-enable PCI device after reset.\n"); } else { pci_set_master(pdev); + pci_restore_state(pdev); + pci_save_state(pdev); err = bnxt_hwrm_func_reset(bp); if (!err) { From patchwork Wed Aug 26 05:08:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 1351621 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=YiPte4kl; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bbv6b11Pjz9sSP for ; Wed, 26 Aug 2020 15:09:27 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726826AbgHZFJY (ORCPT ); Wed, 26 Aug 2020 01:09:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56578 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726759AbgHZFJM (ORCPT ); Wed, 26 Aug 2020 01:09:12 -0400 Received: from mail-wr1-x443.google.com (mail-wr1-x443.google.com [IPv6:2a00:1450:4864:20::443]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5BC7BC061574 for ; Tue, 25 Aug 2020 22:09:11 -0700 (PDT) Received: by mail-wr1-x443.google.com with SMTP id w13so428901wrk.5 for ; Tue, 25 Aug 2020 22:09:11 -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=XHaGhsqTt5ZjagXMlpNlu3cCee8flkdStPbXbpx2+yI=; b=YiPte4klZ9UIaYO6nJEX2vN3HMIEjj73J1TuCvX+9R2vJE9/tbsi3WBrxPGIvu/X3B T576ZA4atgHIZV2BMBAoafOzPT8bCdAMpnf9KFiOHwv1hsX1DgfdmDi1EnteLCVo5Caf ixC9GjqjMsSFfHUHj/cUp6oZVmA53UANK0Mc0= 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=XHaGhsqTt5ZjagXMlpNlu3cCee8flkdStPbXbpx2+yI=; b=S7uAHI94d6SQ+Mz2w7nC3IjPB88rMX5qtqn5V/JvinxQM0PHylC7A7PM4C0OCfi67j m6FbDbC3SP7uswN8Y8LfLXPWZoWd/M4BbBhf+NWyFqK/6gnWh1cKCWXildQGSP64wdfM q4qo3xaAjgFaD2rr8KhMUrbAyKgwR6mvXKiPBwt9Utb3/XIDc/ZmJwMiTTdcPQTiD94m pkaPo1hjjjkw9+n0S/N6WUmnzWxENWWg5hCtIc8BRs4AlDxK/Ne72bMvBrQ2tzeMB8eG 9NiERUf8qt9yRqs6ZLaRswNmv2dhIHanYW+D0oK/stPcNm/sKTNQdqUtn6fjUUBH4yZU 8qTg== X-Gm-Message-State: AOAM533vQDq7zqoZk8RSNrU9uO1rFOz5UeL0gtCL8cMFBPbEj66xD/ug RZ43V2fmzW+xM+pl8HahauyRiQ== X-Google-Smtp-Source: ABdhPJxsYpS/nDg2xPEInyUUN+OPc7ONDzMVE8kVg2/08ratQD2iPMxbEZ4T1cFFq78qB+VIQ4Ppag== X-Received: by 2002:a5d:6a83:: with SMTP id s3mr13245899wru.125.1598418549835; Tue, 25 Aug 2020 22:09:09 -0700 (PDT) Received: from localhost.swdvt.lab.broadcom.com ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id q12sm2825832wrm.39.2020.08.25.22.09.08 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Aug 2020 22:09:09 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, kuba@kernel.org Subject: [PATCH net 5/8] bnxt_en: Fix possible crash in bnxt_fw_reset_task(). Date: Wed, 26 Aug 2020 01:08:36 -0400 Message-Id: <1598418519-20168-6-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> References: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org bnxt_fw_reset_task() is run from a delayed workqueue. The current code is not cancelling the workqueue in the driver's .remove() method and it can potentially crash if the device is removed with the workqueue still pending. The fix is to clear the BNXT_STATE_IN_FW_RESET flag and then cancel the delayed workqueue in bnxt_remove_one(). bnxt_queue_fw_reset_work() also needs to check that this flag is set before scheduling. This will guarantee that no rescheduling will be done after it is cancelled. Fixes: 230d1f0de754 ("bnxt_en: Handle firmware reset.") Reviewed-by: Vasundhara Volam Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 4389a74..d6f3592 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -1141,6 +1141,9 @@ static int bnxt_discard_rx(struct bnxt *bp, struct bnxt_cp_ring_info *cpr, static void bnxt_queue_fw_reset_work(struct bnxt *bp, unsigned long delay) { + if (!(test_bit(BNXT_STATE_IN_FW_RESET, &bp->state))) + return; + if (BNXT_PF(bp)) queue_delayed_work(bnxt_pf_wq, &bp->fw_reset_task, delay); else @@ -1157,10 +1160,12 @@ static void bnxt_queue_sp_work(struct bnxt *bp) static void bnxt_cancel_sp_work(struct bnxt *bp) { - if (BNXT_PF(bp)) + if (BNXT_PF(bp)) { flush_workqueue(bnxt_pf_wq); - else + } else { cancel_work_sync(&bp->sp_task); + cancel_delayed_work_sync(&bp->fw_reset_task); + } } static void bnxt_sched_reset(struct bnxt *bp, struct bnxt_rx_ring_info *rxr) @@ -11761,6 +11766,7 @@ static void bnxt_remove_one(struct pci_dev *pdev) unregister_netdev(dev); bnxt_dl_unregister(bp); bnxt_shutdown_tc(bp); + clear_bit(BNXT_STATE_IN_FW_RESET, &bp->state); bnxt_cancel_sp_work(bp); bp->sp_event = 0; From patchwork Wed Aug 26 05:08:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 1351622 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=dWDJ6CJj; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bbv6c1bY9z9sSP for ; Wed, 26 Aug 2020 15:09:28 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726818AbgHZFJY (ORCPT ); Wed, 26 Aug 2020 01:09:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726770AbgHZFJN (ORCPT ); Wed, 26 Aug 2020 01:09:13 -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 61B1CC061756 for ; Tue, 25 Aug 2020 22:09:13 -0700 (PDT) Received: by mail-wr1-x442.google.com with SMTP id b17so436938wru.2 for ; Tue, 25 Aug 2020 22:09:13 -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=9bDWg/FP1jtTcu1lDgXHupN7xhFpM/ajUxrTrUXtDf4=; b=dWDJ6CJjmu6ComBxdDmXheVh109X1o35Vbh11yIyVoWwgw9ehXiD0ZEzTB7FHRtZmJ VVXgKFXvHaeTMYrLyFZ8R7aERaE4V/dnSECiHZaINuEMxXFfGCgiO0WwX5TP4BjajzvK NynD1t+Djbk7PcDlJmRG16w2LzVfnY25UskQ8= 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=9bDWg/FP1jtTcu1lDgXHupN7xhFpM/ajUxrTrUXtDf4=; b=ZpUWrs6cDQQ4SjLH+T28miJaKDf+Rd/9qEgQgV+Q8Xb3O86ZDIw/7O8X4N2TjQUit5 nqNV67pZAlNhHHSt72gv9IWKvyvezBhivcYkJE0upZFmcWA+nvNw3AlRCufFvkbMH+o9 ysXExjfNmiVnSvJRGfcUP7RPcV479aeI0LXDrxccRPd2Kdr23L7S3sjfb7mjI4AzwKXc 5RnV3hpvvpDfiAFh+kRfcibguey7k5QW5UVizhG8GVR9iguEIYHOkopNfH2CynAULAFj NMGY96giBfRbOhkVuMmlovy0MZRiKahszeIe0DezdbsLK+wetPBiUJkMmxir1u913wZN r99g== X-Gm-Message-State: AOAM531AzjvzRR22TsVV96+vtGAREHvr06mLa6Lw1hOjO/XxEjqk1PAQ zObO4UZajYCpNW0bW/K7t+TbzDO/OS6yhg== X-Google-Smtp-Source: ABdhPJzDSfvCiW5ElnTbwW8Sxx7X30M7WoaB+L2Y9txkfwUDfLXtyckR5O2hC4ZtFqivHae9cDjhCQ== X-Received: by 2002:a5d:4907:: with SMTP id x7mr14620364wrq.166.1598418551879; Tue, 25 Aug 2020 22:09:11 -0700 (PDT) Received: from localhost.swdvt.lab.broadcom.com ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id q12sm2825832wrm.39.2020.08.25.22.09.10 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Aug 2020 22:09:11 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, kuba@kernel.org, Edwin Peer , Marc Smith Subject: [PATCH net 6/8] bnxt_en: fix HWRM error when querying VF temperature Date: Wed, 26 Aug 2020 01:08:37 -0400 Message-Id: <1598418519-20168-7-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> References: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Edwin Peer Firmware returns RESOURCE_ACCESS_DENIED for HWRM_TEMP_MONITORY_QUERY for VFs. This produces unpleasing error messages in the log when temp1_input is queried via the hwmon sysfs interface from a VF. The error is harmless and expected, so silence it and return unknown as the value. Since the device temperature is not particularly sensitive information, provide flexibility to change this policy in future by silencing the error rather than avoiding the HWRM call entirely for VFs. Fixes: cde49a42a9bb ("bnxt_en: Add hwmon sysfs support to read temperature") Cc: Marc Smith Reported-by: Marc Smith Signed-off-by: Edwin Peer Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index d6f3592..a23ccb0 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -9289,16 +9289,19 @@ static ssize_t bnxt_show_temp(struct device *dev, struct hwrm_temp_monitor_query_input req = {0}; struct hwrm_temp_monitor_query_output *resp; struct bnxt *bp = dev_get_drvdata(dev); - u32 temp = 0; + u32 len = 0; resp = bp->hwrm_cmd_resp_addr; bnxt_hwrm_cmd_hdr_init(bp, &req, HWRM_TEMP_MONITOR_QUERY, -1, -1); mutex_lock(&bp->hwrm_cmd_lock); - if (!_hwrm_send_message(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT)) - temp = resp->temp * 1000; /* display millidegree */ + if (!_hwrm_send_message_silent(bp, &req, sizeof(req), HWRM_CMD_TIMEOUT)) + len = sprintf(buf, "%u\n", resp->temp * 1000); /* display millidegree */ mutex_unlock(&bp->hwrm_cmd_lock); - return sprintf(buf, "%u\n", temp); + if (len) + return len; + + return sprintf(buf, "unknown\n"); } static SENSOR_DEVICE_ATTR(temp1_input, 0444, bnxt_show_temp, NULL, 0); From patchwork Wed Aug 26 05:08:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 1351619 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=cWAmYvwD; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bbv6S74P0z9sSP for ; Wed, 26 Aug 2020 15:09:20 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726804AbgHZFJT (ORCPT ); Wed, 26 Aug 2020 01:09:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56592 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726784AbgHZFJP (ORCPT ); Wed, 26 Aug 2020 01:09:15 -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 6E883C061757 for ; Tue, 25 Aug 2020 22:09:15 -0700 (PDT) Received: by mail-wm1-x343.google.com with SMTP id k20so440279wmi.5 for ; Tue, 25 Aug 2020 22:09:15 -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=lOpnUP/X5SAuRQuOVQxnAT/SG03qBwE9UaU5AK0x0Sw=; b=cWAmYvwD7wOgu4/ozQ7YIeSEKhAkIy8BcZY+xyfo88aarGWZdYB57RvQqZfnNejsdt jilGyfTjQGcax1fKvI/sDyro9AFMNVj78YBnPhlWyfldlNnfa3y8j36gas8Lmo1hFXt+ yDtLbpq/BaaMj2djVdvDek79A8SP7HqhRiyQI= 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=lOpnUP/X5SAuRQuOVQxnAT/SG03qBwE9UaU5AK0x0Sw=; b=mVy2e3DY7MGmYdtxegQ4XuLiDgYUIBV5QSBBQ1s0Bi4keKzPVMXfhP0hV0Jg3wDMqg XdFefCG1mf13FQsnz8j6NX6UQxh81uExH2HFb2qLtKhur6wV+/xJPJdvujp+KLIAvK/v keUOrXA43dB5kWRikL03bg+m0uK3qM2tTyrs7ydzLe513DyN/60OHf4x3tL+PZYfgz4i myNjEOWaZBLwS2PSjS58UJ5JqBqVn2judKfzPQxSK6pcqJ9XJlQBmBNBEdC2EpkDZ8BK z8qKZyVQZpmAbwTpJsj+AE/q6BSfRZv5XStlvR73ae1Wwkq1Pigl9/kfS6osOVJChdK9 tLkg== X-Gm-Message-State: AOAM531AsQWEmPp4oOweiFCFc6ZZFJO2mbS/U4pk1mLIwxeHX3wocB0q sCoOIA08Yu2dJuvDiFimvIwVvA== X-Google-Smtp-Source: ABdhPJyyBpM7sYs57pM8QEKNKykLLte7XdbJONc57G1ZbkyUvzytPMgzXbGnq6oo0iGbDsVsnXhcsA== X-Received: by 2002:a1c:2dcc:: with SMTP id t195mr4810956wmt.166.1598418553865; Tue, 25 Aug 2020 22:09:13 -0700 (PDT) Received: from localhost.swdvt.lab.broadcom.com ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id q12sm2825832wrm.39.2020.08.25.22.09.12 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Aug 2020 22:09:13 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, kuba@kernel.org, Edwin Peer Subject: [PATCH net 7/8] bnxt_en: init RSS table for Minimal-Static VF reservation Date: Wed, 26 Aug 2020 01:08:38 -0400 Message-Id: <1598418519-20168-8-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> References: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Edwin Peer There are no VF rings available during probe when the device is configured using the Minimal-Static reservation strategy. In this case, the RSS indirection table can only be initialized later, during bnxt_open_nic(). However, this was not happening because the rings will already have been reserved via bnxt_init_dflt_ring_mode(), causing bnxt_need_reserve_rings() to return false in bnxt_reserve_rings() and bypass the RSS table init. Solve this by pushing the call to bnxt_set_dflt_rss_indir_tbl() into __bnxt_reserve_rings(), which is common to both paths and is called whenever ring configuration is changed. After doing this, the RSS table init that must be called from bnxt_init_one() happens implicitly via bnxt_set_default_rings(), necessitating doing the allocation earlier in order to avoid a null pointer dereference. Fixes: bd3191b5d87d ("bnxt_en: Implement ethtool -X to set indirection table.") Signed-off-by: Edwin Peer Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index a23ccb0..27df572 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -6219,6 +6219,9 @@ static int __bnxt_reserve_rings(struct bnxt *bp) if (!tx || !rx || !cp || !grp || !vnic || !stat) return -ENOMEM; + if (!netif_is_rxfh_configured(bp->dev)) + bnxt_set_dflt_rss_indir_tbl(bp); + return rc; } @@ -8500,9 +8503,6 @@ int bnxt_reserve_rings(struct bnxt *bp, bool irq_re_init) rc = bnxt_init_int_mode(bp); bnxt_ulp_irq_restart(bp, rc); } - if (!netif_is_rxfh_configured(bp->dev)) - bnxt_set_dflt_rss_indir_tbl(bp); - if (rc) { netdev_err(bp->dev, "ring reservation/IRQ init failure rc: %d\n", rc); return rc; @@ -12209,6 +12209,10 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) if (BNXT_CHIP_P5(bp)) bp->flags |= BNXT_FLAG_CHIP_P5; + rc = bnxt_alloc_rss_indir_tbl(bp); + if (rc) + goto init_err_pci_clean; + rc = bnxt_fw_init_one_p2(bp); if (rc) goto init_err_pci_clean; @@ -12313,11 +12317,6 @@ static int bnxt_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) */ bp->tx_nr_rings_per_tc = bp->tx_nr_rings; - rc = bnxt_alloc_rss_indir_tbl(bp); - if (rc) - goto init_err_pci_clean; - bnxt_set_dflt_rss_indir_tbl(bp); - if (BNXT_PF(bp)) { if (!bnxt_pf_wq) { bnxt_pf_wq = From patchwork Wed Aug 26 05:08:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 1351620 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=Zui/ts+L; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4Bbv6Y6jqLz9sSP for ; Wed, 26 Aug 2020 15:09:25 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726836AbgHZFJZ (ORCPT ); Wed, 26 Aug 2020 01:09:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726798AbgHZFJS (ORCPT ); Wed, 26 Aug 2020 01:09:18 -0400 Received: from mail-wm1-x344.google.com (mail-wm1-x344.google.com [IPv6:2a00:1450:4864:20::344]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 458FBC061574 for ; Tue, 25 Aug 2020 22:09:17 -0700 (PDT) Received: by mail-wm1-x344.google.com with SMTP id w2so223241wmi.1 for ; Tue, 25 Aug 2020 22:09:17 -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=wzDaPWxtiI9zNrXoev1hqDUVDRIpByk1Sla/KGRwSQ4=; b=Zui/ts+LAL6/9iXs/LOTMMoDpHKI2lyIUqdJMNzh72Cr8xIE569R9y1+3KAxmXCvmY vgnYZ8yuQyjJr75JzRQwSkWqC1klYZYnA6eLwFA+hSy079IrtrpjxJZJyCK1AlT++w4z GFdwxIIijV2eyQVxS0QHJdU+CWxipB+KiVoSs= 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=wzDaPWxtiI9zNrXoev1hqDUVDRIpByk1Sla/KGRwSQ4=; b=sgX3TXFhhFWiOTNCVXA3jiF75QQIWLBPCXx1NCIaykoi2QY83Xv879G47V/xM83SmK 3E0ASyFw6i9zfwtTD/qud7SSJ19mXg+QTL5r+h5IIwfsyoj8bT/lZBByDGJypGtrPrwX lS9WFkkHQLE77ydS2nZvcOXPv17xz6M8ixL5TTn8z5fsXkBWLLcixVe4Oy8nCrJgEUyu jnlfOYk6UZvSOSXkmKAfEERrJ6wUk+5aIxUHvKMcCl1Db+B5/sc25VVHAHQxMTpAvlCA ayQ8AV+kjzU/NEpGw6q0ALmKybQzwI4x821ivmSOdjRwLRm7lnGurQtCW1A8dOrVLz6C w8bg== X-Gm-Message-State: AOAM533nx0o6yaNWGKAVr3WGR0fKxZmpULLJf2C0FJEV0S/NRo3qJSad T/+AcMhXhZjA8rVzeRxHvIIboa6cgRQglQ== X-Google-Smtp-Source: ABdhPJwRokpXycfh4kdy6Mf9N72DiMUpHmW7DQZaYZ6t8WXVyRUpPk7ZGu/XMokox1Yf/poo4tTJDg== X-Received: by 2002:a7b:c8d3:: with SMTP id f19mr4882738wml.163.1598418555729; Tue, 25 Aug 2020 22:09:15 -0700 (PDT) Received: from localhost.swdvt.lab.broadcom.com ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id q12sm2825832wrm.39.2020.08.25.22.09.14 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 25 Aug 2020 22:09:15 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, kuba@kernel.org Subject: [PATCH net 8/8] bnxt_en: Setup default RSS map in all scenarios. Date: Wed, 26 Aug 2020 01:08:39 -0400 Message-Id: <1598418519-20168-9-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> References: <1598418519-20168-1-git-send-email-michael.chan@broadcom.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The recent changes to support user-defined RSS map assume that RX rings are always reserved and the default RSS map is set after the RX rings are successfully reserved. If the firmware spec is older than 1.6.1, no ring reservations are required and the default RSS map is not setup at all. In another scenario where the fw Resource Manager is older, RX rings are not reserved and we also end up with no valid RSS map. Fix both issues in bnxt_need_reserve_rings(). In both scenarios described above, we don't need to reserve RX rings so we need to call this new function bnxt_check_rss_map_no_rmgr() to setup the default RSS map when needed. Without valid RSS map, the NIC won't receive packets properly. Fixes: 1667cbf6a4eb ("bnxt_en: Add logical RSS indirection table structure.") Reviewed-by: Vasundhara Volam Reviewed-by: Edwin Peer Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 39 ++++++++++++++++++++++++------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 27df572..3162271 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -6107,6 +6107,21 @@ static int bnxt_get_func_stat_ctxs(struct bnxt *bp) return cp + ulp_stat; } +/* Check if a default RSS map needs to be setup. This function is only + * used on older firmware that does not require reserving RX rings. + */ +static void bnxt_check_rss_tbl_no_rmgr(struct bnxt *bp) +{ + struct bnxt_hw_resc *hw_resc = &bp->hw_resc; + + /* The RSS map is valid for RX rings set to resv_rx_rings */ + if (hw_resc->resv_rx_rings != bp->rx_nr_rings) { + hw_resc->resv_rx_rings = bp->rx_nr_rings; + if (!netif_is_rxfh_configured(bp->dev)) + bnxt_set_dflt_rss_indir_tbl(bp); + } +} + static bool bnxt_need_reserve_rings(struct bnxt *bp) { struct bnxt_hw_resc *hw_resc = &bp->hw_resc; @@ -6115,22 +6130,28 @@ static bool bnxt_need_reserve_rings(struct bnxt *bp) int rx = bp->rx_nr_rings, stat; int vnic = 1, grp = rx; - if (bp->hwrm_spec_code < 0x10601) - return false; - - if (hw_resc->resv_tx_rings != bp->tx_nr_rings) + if (hw_resc->resv_tx_rings != bp->tx_nr_rings && + bp->hwrm_spec_code >= 0x10601) return true; + /* Old firmware does not need RX ring reservations but we still + * need to setup a default RSS map when needed. With new firmware + * we go through RX ring reservations first and then set up the + * RSS map for the successfully reserved RX rings when needed. + */ + if (!BNXT_NEW_RM(bp)) { + bnxt_check_rss_tbl_no_rmgr(bp); + return false; + } if ((bp->flags & BNXT_FLAG_RFS) && !(bp->flags & BNXT_FLAG_CHIP_P5)) vnic = rx + 1; if (bp->flags & BNXT_FLAG_AGG_RINGS) rx <<= 1; stat = bnxt_get_func_stat_ctxs(bp); - if (BNXT_NEW_RM(bp) && - (hw_resc->resv_rx_rings != rx || hw_resc->resv_cp_rings != cp || - hw_resc->resv_vnics != vnic || hw_resc->resv_stat_ctxs != stat || - (hw_resc->resv_hw_ring_grps != grp && - !(bp->flags & BNXT_FLAG_CHIP_P5)))) + if (hw_resc->resv_rx_rings != rx || hw_resc->resv_cp_rings != cp || + hw_resc->resv_vnics != vnic || hw_resc->resv_stat_ctxs != stat || + (hw_resc->resv_hw_ring_grps != grp && + !(bp->flags & BNXT_FLAG_CHIP_P5))) return true; if ((bp->flags & BNXT_FLAG_CHIP_P5) && BNXT_PF(bp) && hw_resc->resv_irqs != nq)