From patchwork Sun Jul 12 00:48:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 1327447 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=Z5+CTMtP; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B47TN25Yjz9sRR for ; Sun, 12 Jul 2020 10:49:28 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727932AbgGLAs7 (ORCPT ); Sat, 11 Jul 2020 20:48:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49086 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726948AbgGLAs6 (ORCPT ); Sat, 11 Jul 2020 20:48:58 -0400 Received: from mail-pj1-x1043.google.com (mail-pj1-x1043.google.com [IPv6:2607:f8b0:4864:20::1043]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 54BA5C08C5DD for ; Sat, 11 Jul 2020 17:48:58 -0700 (PDT) Received: by mail-pj1-x1043.google.com with SMTP id k5so4416033pjg.3 for ; Sat, 11 Jul 2020 17:48:58 -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=a7E5Y0QUDl9De63awScI6MSxW+qt8ojTBYIR7NZp7RQ=; b=Z5+CTMtPcY3ZPOmIS/A69kTAEVTLyTRM77M5nfWYJSpCGV+hV3Yc4ty0cMoYEpUGJk +Uq6C2hQgaD76M4SB7Pdlze/g2L9lQTFYWdun9XU4FcuwfqVVU738Llyg6UZer7z2Wpy hh+LVlVlbChCAXplw2rExwK4ufK1cZY2KpRZk= 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=a7E5Y0QUDl9De63awScI6MSxW+qt8ojTBYIR7NZp7RQ=; b=GIvHS1X/+8C8qQxAOfc5G3GkbHE4OsDUo8SQ9jBFUtfvShV8tGy8g+vMUFsPWzFoZC mvXllMZG+skvb1f95AMca3oqt/a0lGElAT2keFfA+Bc5t+m6ui8A7UWJMROl8YmMoApE hw7iVWWuyh5PY4ZRUeFh+0YUAsoO3Cpsh1kRHrW8g8xaoNNaCwrrORdk7c7lZM8ojTFc nNduz7bnU+Cm4JmKitggzuLNQVbr8bT/CSu74ahAwwE3gM43dDPYf4YFF25V+ouhkS/h ssqmPX+0wpOjRL7Oi8rCsv+lV85FHiSu1BRlRCOyHa74b12C/RSrTqvDnDaBtyZ5aVJz shxA== X-Gm-Message-State: AOAM533yHIbCpeZkebg1E93xNbVKJkzJcassJm7Y32KnPOv8t0jmp7XF I+pyZ0GLu8Ia/CluUuGPNE+GGBQiE8Y= X-Google-Smtp-Source: ABdhPJyuJyPX+nfBdPA2mi1eaLMV41nk92ctFUVYnnXM7AApwZu9CnETFi+cuuYoZgzZfTl50Z3Z1g== X-Received: by 2002:a17:90b:1a86:: with SMTP id ng6mr13013196pjb.88.1594514937778; Sat, 11 Jul 2020 17:48:57 -0700 (PDT) Received: from localhost.swdvt.lab.broadcom.com ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id q6sm10157589pfg.76.2020.07.11.17.48.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 11 Jul 2020 17:48:57 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, kuba@kernel.org Subject: [PATCH net 1/3] bnxt_en: Fix race when modifying pause settings. Date: Sat, 11 Jul 2020 20:48:23 -0400 Message-Id: <1594514905-688-2-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1594514905-688-1-git-send-email-michael.chan@broadcom.com> References: <1594514905-688-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 The driver was modified to not rely on rtnl lock to protect link settings about 2 years ago. The pause setting was missed when making that change. Fix it by acquiring link_lock mutex before calling bnxt_hwrm_set_pause(). Fixes: e2dc9b6e38fa ("bnxt_en: Don't use rtnl lock to protect link change logic in workqueue.") Signed-off-by: Vasundhara Volam Reviewed-by: Edwin Peer Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index 6b88143..b4aa56d 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -1765,8 +1765,11 @@ static int bnxt_set_pauseparam(struct net_device *dev, if (epause->tx_pause) link_info->req_flow_ctrl |= BNXT_LINK_PAUSE_TX; - if (netif_running(dev)) + if (netif_running(dev)) { + mutex_lock(&bp->link_lock); rc = bnxt_hwrm_set_pause(bp); + mutex_unlock(&bp->link_lock); + } return rc; } From patchwork Sun Jul 12 00:48:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 1327448 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=Bh/hNQEr; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B47TN5Rw6z9sRf for ; Sun, 12 Jul 2020 10:49:28 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728047AbgGLAtB (ORCPT ); Sat, 11 Jul 2020 20:49:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726948AbgGLAtB (ORCPT ); Sat, 11 Jul 2020 20:49:01 -0400 Received: from mail-pg1-x541.google.com (mail-pg1-x541.google.com [IPv6:2607:f8b0:4864:20::541]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2F625C08C5DD for ; Sat, 11 Jul 2020 17:49:01 -0700 (PDT) Received: by mail-pg1-x541.google.com with SMTP id d194so4357333pga.13 for ; Sat, 11 Jul 2020 17:49:01 -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=TaraxO712legrO0jCAXwQtlsZcSrDSJ3CJRqy7pd4tc=; b=Bh/hNQEr1tZukblkMn7P5/7ybZqj1HgvnkDbF2LKGrWscQxP+5vsBYJYKPn+jHhAbC 4fXOOSojsybSJEIdMLbXSciWA6zySQl9LtkANHa7R4mb6xczthG0jzQkg4XVsa8Yd/EU 64czOzVxMy8ESrfa5V3pTNVfCWLfhso+XnPL0= 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=TaraxO712legrO0jCAXwQtlsZcSrDSJ3CJRqy7pd4tc=; b=r5tnno0iDUka6tkeR7cR/Tswf1FQGkfQg89aQzWZwsyNBTyEZppNFbCJM7oOLzysHB HHYHbD9Y0ICjnVJFApwHkfaBZIj4yfCJ3ZxDiz51QGlNbDdQMSLN6yWS66p8TkkT7Pzi thlxNvE0o2UVdnciZYP07QScoh/fcGP0qisLsrEvcEkqZrJHXO+yN1dcdlH9URa8ufGW b+2umozQ5I4mlZjdmDN6yiVnS1Tcrbpxi5fQBrzsKaVxlGq+x/G6ghEFAJYZgQ0x3wX1 AbF4dkBejzb1dLeLe1TX2219Om9HK8BTlDi6o3jHG+6g2gobKK0bqRfmnbQRaePgI4Jr Ax4w== X-Gm-Message-State: AOAM5320n58cWwLvJB2TKj1FWCCkbdmVJrwFePs5EBrM/+GIUYh89of4 D2Fpkd6PygadsvDyg4LmbTq3mg== X-Google-Smtp-Source: ABdhPJxiqrQ/sSBWbBCzBrckkWTKCEM0dnclFQlT2FvsxtzQDJQyuOvO7IbMR6Gx6zsGc521LVU3pg== X-Received: by 2002:a05:6a00:2286:: with SMTP id f6mr66309646pfe.303.1594514940513; Sat, 11 Jul 2020 17:49:00 -0700 (PDT) Received: from localhost.swdvt.lab.broadcom.com ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id q6sm10157589pfg.76.2020.07.11.17.48.58 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 11 Jul 2020 17:49:00 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, kuba@kernel.org Subject: [PATCH net 2/3] bnxt_en: Init ethtool link settings after reading updated PHY configuration. Date: Sat, 11 Jul 2020 20:48:24 -0400 Message-Id: <1594514905-688-3-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1594514905-688-1-git-send-email-michael.chan@broadcom.com> References: <1594514905-688-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 In a shared port PHY configuration, async event is received when any of the port modifies the configuration. Ethtool link settings should be initialised after updated PHY configuration from firmware. Fixes: b1613e78e98d ("bnxt_en: Add async. event logic for PHY configuration changes.") Signed-off-by: Vasundhara Volam Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 6a884df..28147e4 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -10385,15 +10385,15 @@ static void bnxt_sp_task(struct work_struct *work) &bp->sp_event)) bnxt_hwrm_phy_qcaps(bp); - if (test_and_clear_bit(BNXT_LINK_CFG_CHANGE_SP_EVENT, - &bp->sp_event)) - bnxt_init_ethtool_link_settings(bp); - rc = bnxt_update_link(bp, true); - mutex_unlock(&bp->link_lock); if (rc) netdev_err(bp->dev, "SP task can't update link (rc: %x)\n", rc); + + if (test_and_clear_bit(BNXT_LINK_CFG_CHANGE_SP_EVENT, + &bp->sp_event)) + bnxt_init_ethtool_link_settings(bp); + mutex_unlock(&bp->link_lock); } if (test_and_clear_bit(BNXT_UPDATE_PHY_SP_EVENT, &bp->sp_event)) { int rc; From patchwork Sun Jul 12 00:48:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 1327449 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=GWJhfLvY; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B47TP0yx9z9sRK for ; Sun, 12 Jul 2020 10:49:29 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728090AbgGLAtE (ORCPT ); Sat, 11 Jul 2020 20:49:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49104 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726948AbgGLAtD (ORCPT ); Sat, 11 Jul 2020 20:49:03 -0400 Received: from mail-pg1-x542.google.com (mail-pg1-x542.google.com [IPv6:2607:f8b0:4864:20::542]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E48C0C08C5DD for ; Sat, 11 Jul 2020 17:49:03 -0700 (PDT) Received: by mail-pg1-x542.google.com with SMTP id d4so4383515pgk.4 for ; Sat, 11 Jul 2020 17:49:03 -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=BYAcNbqomnLFwA+FOyL5j2aMBZflPQaTZWKnNjVgt7A=; b=GWJhfLvYFgpWldS65Z2+YzC34867Goxs/9O9+iGl5e9RGdfHV0HCorJvnlzUsCZwGQ lMfoWHX4qsWj1ED8EA8M32gJlAziEHuqsQIUcWUlVrE5bgNXHVuFgD1uZh0WsKW9HlSa NMJQCoovvoZIlb/sWSi2vSPIgrH124QeE1JnE= 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=BYAcNbqomnLFwA+FOyL5j2aMBZflPQaTZWKnNjVgt7A=; b=g26gfWIGtLqkCxHD6F5tylpVGBUz/ba3mD5F7q27QscBM7gGEUaTrXj9okpq4ooBmg JVp1wp01+XXRJTfM6xS5Ea0RqjuesU7tNNChSGuGXbmxHACXHdDvNjehS0vjqRyopy3E kwX4w74MGbxgE04fNcw+Cl2XXzWMwXsvDAISS99SgRLjStHiSYDysweRcE11js5c+L4H M+5+at1+cZEF0gK54BBV2vp79NymExdBQh8nquhOvlN+fuN51YR2THyIF7PVrPM8sGkZ 6r7XZrtvCBqW7YCwj3yoG+XHmWZiceWgsXBl3VNa1kCCOYwhSCpFFKwQYNpwZxdliNFL 3rmg== X-Gm-Message-State: AOAM530EjzRk31oP0Pnaia+YcIAx3wM/ka69GHV6JlzXf87rvJyXtWUl EGKdhThnbhRFfGB2GBkUBGkIEQ== X-Google-Smtp-Source: ABdhPJy9LT9OEsQRn4emZYagizEEoEL2apKuBH1Z2+BxlpYPA5bgEYpHw5Wf5uJs6i6e9LKByjAHsA== X-Received: by 2002:a63:ea02:: with SMTP id c2mr63996156pgi.66.1594514943358; Sat, 11 Jul 2020 17:49:03 -0700 (PDT) Received: from localhost.swdvt.lab.broadcom.com ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id q6sm10157589pfg.76.2020.07.11.17.49.01 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 11 Jul 2020 17:49:02 -0700 (PDT) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, kuba@kernel.org Subject: [PATCH net 3/3] bnxt_en: Fix completion ring sizing with TPA enabled. Date: Sat, 11 Jul 2020 20:48:25 -0400 Message-Id: <1594514905-688-4-git-send-email-michael.chan@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1594514905-688-1-git-send-email-michael.chan@broadcom.com> References: <1594514905-688-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 current completion ring sizing formula is wrong with TPA enabled. The formula assumes that the number of TPA completions are bound by the RX ring size, but that's not true. TPA_START completions are immediately recycled so they are not bound by the RX ring size. We must add bp->max_tpa to the worst case maximum RX and TPA completions. The completion ring can overflow because of this mistake. This will cause hardware to disable the completion ring when this happens, leading to RX and TX traffic to stall on that ring. This issue is generally exposed only when the RX ring size is set very small. Fix the formula by adding bp->max_tpa to the number of RX completions if TPA is enabled. Fixes: c0c050c58d84 ("bnxt_en: New Broadcom ethernet driver."); Reviewed-by: Vasundhara Volam Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 28147e4..7463a18 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -3418,7 +3418,7 @@ void bnxt_set_tpa_flags(struct bnxt *bp) */ void bnxt_set_ring_params(struct bnxt *bp) { - u32 ring_size, rx_size, rx_space; + u32 ring_size, rx_size, rx_space, max_rx_cmpl; u32 agg_factor = 0, agg_ring_size = 0; /* 8 for CRC and VLAN */ @@ -3474,7 +3474,15 @@ void bnxt_set_ring_params(struct bnxt *bp) bp->tx_nr_pages = bnxt_calc_nr_ring_pages(ring_size, TX_DESC_CNT); bp->tx_ring_mask = (bp->tx_nr_pages * TX_DESC_CNT) - 1; - ring_size = bp->rx_ring_size * (2 + agg_factor) + bp->tx_ring_size; + max_rx_cmpl = bp->rx_ring_size; + /* MAX TPA needs to be added because TPA_START completions are + * immediately recycled, so the TPA completions are not bound by + * the RX ring size. + */ + if (bp->flags & BNXT_FLAG_TPA) + max_rx_cmpl += bp->max_tpa; + /* RX and TPA completions are 32-byte, all others are 16-byte */ + ring_size = max_rx_cmpl * 2 + agg_ring_size + bp->tx_ring_size; bp->cp_ring_size = ring_size; bp->cp_nr_pages = bnxt_calc_nr_ring_pages(ring_size, CP_DESC_CNT);