From patchwork Tue Feb 4 00:46:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13958464 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oi1-f170.google.com (mail-oi1-f170.google.com [209.85.167.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 11A553595F for ; Tue, 4 Feb 2025 00:46:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630016; cv=none; b=MC6UalCpnyP9LOfZZMjKPD0iI6NSpWbEd1cN99XOptU9mN05yym/13035D5RPu+qeKZSUn4ZFZuHuILd2uEnqmR+b8zof1bAFdxEYY5u1slw3/mm1T6TknIPBm+0CiwKPMOs4g8ooIUQuVBDHuh+dv+cCUwORujke01WQhcUP4o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630016; c=relaxed/simple; bh=2TzJv3NPlu6glGKQXYjge74s/OPrekfgxoNp7rPp0NI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=U4LXKopYDajz3DQEmflt3gbs6VtLI9HUpZdBOazpqv9LR25d4N1i4k2MIN+jh6u95jXnj0wWSewQjREkwUd+ZL87T0vGliq19hsQE76pvKI3M0xQb409zEX1cU9+IfD8pfvTqFkGwG++tYp72DiyYtY7nvTT/P3+RlyWwVshmww= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=aKZGXPKM; arc=none smtp.client-ip=209.85.167.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="aKZGXPKM" Received: by mail-oi1-f170.google.com with SMTP id 5614622812f47-3eba347aa6fso3176991b6e.3 for ; Mon, 03 Feb 2025 16:46:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1738630014; x=1739234814; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VmgR7XT9VFi5hUoCLKVmytsTHVEL8AAwrRwMK9vaEzo=; b=aKZGXPKMTIrr/XsUueydug46JFiDQ2XsaLXcywli98LJZZko85bnmAgym2trmkvBqp v/glRZTmgwGoJrfJeJTDbOltARjscrLYRArJHknvHzGEVDt5y1I3+T+Qrhalg/xp/uSe +n83X/YuKV2kuhyLss7dfcM9r0ZFLN9j3d+m0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738630014; x=1739234814; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VmgR7XT9VFi5hUoCLKVmytsTHVEL8AAwrRwMK9vaEzo=; b=qHQ2Y7V6eimvWABkcflhwKvYpKh4Tui5YAGuxQCq4fP4sl5vDuNf2BNld06JVfm00q 9d6Lmwdu73ox6Q0zh5cx+bUvO/LI4JKkLLnsTOwHGwIygUPAwEiZiW6dbyCbMpw+sQDG zAS27qfAFnk8f7zzJ8LuiUkZ99VNdw6Jd1kDOMlLjx04BkspLeSpdKg0oftPNH23fdMj NcldHVb2tgG8Dim9N828soqBg5mlB7rsvIJuMwtjOC1KgghVx7Lfm5wC7YoTR24A/g3m sKcfM5Z2VozWsk+coa2TkDRY7JMREVTPydTaCB1g1/A4UIZP+jQhWdSohIrr/10VzTU3 t16w== X-Gm-Message-State: AOJu0YwYZPo54hId7CyKUpven1Lry9k8X0G7FDV4uyOs5H6yjsB+iy+j 9kYvrXARttvP3IxjXZ2JE9rzg+IopsIF+JqgIkN1BPK/GnbqFyEHHO/GXiI67w== X-Gm-Gg: ASbGncsZmJr8nENnN/ejp2QR0SkPZQoLXVAH9U3SyoWFl1YmXVreVtK7Y4Y52mvIdsJ uj/3/yjhIPz4cJs0X/gj46uO92+axWxfSeE1xcy6OieTzoo5GojJ2nSbiNxBZ6EGajCs4+yX709 3NOc7To3nA4pmQeA6hYpS3jp1MfqhctmMCuCj/9wmqBNBTCjUMfzVdhUOHk1EiX1p68G58hgL4X eBptvBtJL7YF/CotOTGluuQBVyvR4GyX82QnAIB9inG5Vr3l1SDHg3ztvsPsqEJqcboZAifvCyr 3MKHMnWt3wQqyhFFDE3y62mk7HBIWrsPLHdXklUS2NaEW3+6VnQtN++d6gY77oizdkw= X-Google-Smtp-Source: AGHT+IHrUWmXnuLbqaJddmBEbgubCahdp4RBYjqUgYNey7oN/tvkPwNOiC135cPGi8krdAGh4u6zsg== X-Received: by 2002:a05:6871:809:b0:29e:65ed:5c70 with SMTP id 586e51a60fabf-2b32f3706c9mr15899158fac.30.1738630013968; Mon, 03 Feb 2025 16:46:53 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2b356658291sm3680495fac.46.2025.02.03.16.46.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 16:46:53 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, michal.swiatkowski@linux.intel.com, helgaas@kernel.org, horms@kernel.org, Somnath Kotur Subject: [PATCH net-next v3 01/10] bnxt_en: Set NAPR 1.2 support when registering with firmware Date: Mon, 3 Feb 2025 16:46:00 -0800 Message-ID: <20250204004609.1107078-2-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250204004609.1107078-1-michael.chan@broadcom.com> References: <20250204004609.1107078-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org NPAR 1.2 adds a transparent VLAN tag for all packets between the NIC and the switch. Because of that, RX VLAN acceleration cannot be supported for any additional host configured VLANs. The driver has to acknowledge that it can support no RX VLAN acceleration and set the NPAR 1.2 supported flag when registering with the FW. Otherwise, the FW call will fail and the driver will abort on these NPAR 1.2 NICs with this error: bnxt_en 0000:26:00.0 (unnamed net_device) (uninitialized): hwrm req_type 0x1d seq id 0xb error 0x2 Reviewed-by: Somnath Kotur Reviewed-by: Michal Swiatkowski Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 5 +++++ drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 + 2 files changed, 6 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 7b8b5b39c7bb..fc870c104c56 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -5565,6 +5565,8 @@ int bnxt_hwrm_func_drv_rgtr(struct bnxt *bp, unsigned long *bmap, int bmap_size, if (bp->fw_cap & BNXT_FW_CAP_ERROR_RECOVERY) flags |= FUNC_DRV_RGTR_REQ_FLAGS_ERROR_RECOVERY_SUPPORT | FUNC_DRV_RGTR_REQ_FLAGS_MASTER_SUPPORT; + if (bp->fw_cap & BNXT_FW_CAP_NPAR_1_2) + flags |= FUNC_DRV_RGTR_REQ_FLAGS_NPAR_1_2_SUPPORT; req->flags = cpu_to_le32(flags); req->ver_maj_8b = DRV_VER_MAJ; req->ver_min_8b = DRV_VER_MIN; @@ -8365,6 +8367,7 @@ static int bnxt_hwrm_func_qcfg(struct bnxt *bp) switch (resp->port_partition_type) { case FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_0: + case FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_2: case FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR1_5: case FUNC_QCFG_RESP_PORT_PARTITION_TYPE_NPAR2_0: bp->port_partition_type = resp->port_partition_type; @@ -9529,6 +9532,8 @@ static int __bnxt_hwrm_func_qcaps(struct bnxt *bp) bp->fw_cap |= BNXT_FW_CAP_HOT_RESET_IF; if (BNXT_PF(bp) && (flags_ext & FUNC_QCAPS_RESP_FLAGS_EXT_FW_LIVEPATCH_SUPPORTED)) bp->fw_cap |= BNXT_FW_CAP_LIVEPATCH; + if (flags_ext & FUNC_QCAPS_RESP_FLAGS_EXT_NPAR_1_2_SUPPORTED) + bp->fw_cap |= BNXT_FW_CAP_NPAR_1_2; if (BNXT_PF(bp) && (flags_ext & FUNC_QCAPS_RESP_FLAGS_EXT_DFLT_VLAN_TPID_PCP_SUPPORTED)) bp->fw_cap |= BNXT_FW_CAP_DFLT_VLAN_TPID_PCP; if (flags_ext & FUNC_QCAPS_RESP_FLAGS_EXT_BS_V2_SUPPORTED) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index 2373f423a523..db0be469a3db 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -2492,6 +2492,7 @@ struct bnxt { #define BNXT_FW_CAP_CFA_RFS_RING_TBL_IDX_V3 BIT_ULL(39) #define BNXT_FW_CAP_VNIC_RE_FLUSH BIT_ULL(40) #define BNXT_FW_CAP_SW_MAX_RESOURCE_LIMITS BIT_ULL(41) + #define BNXT_FW_CAP_NPAR_1_2 BIT_ULL(42) u32 fw_dbg_cap; From patchwork Tue Feb 4 00:46:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13958465 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oa1-f48.google.com (mail-oa1-f48.google.com [209.85.160.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DC4D756446 for ; Tue, 4 Feb 2025 00:46:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630019; cv=none; b=rA3rui90jV5FKmV85PwFtlIm4kOSfmEzilNsyYJ2QHKurJSnD9NeHGjvDGJcg05U6OfQoQc9JvrH1cCWopHVn7Xml9q4OvgwP5TXjVxHdGcpLftD14PeCgh9aSAkA/iHVqldkNBZQClmEADgwAx2CkAbQ+DkbUrkFRH/Lb44UYk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630019; c=relaxed/simple; bh=798C9bVl/2f9vmMwMenfvnnbRYCzOvXYML/rPtxBmWQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mG5qlibEKxwaANf1MaRYd/G1yLs3o5E9Pbg6WEYsW4n2yhYT0J336uKtsPXbW1WX5Q8QHfkxa8Lw4/0AmwDd3zie4y9pwLKU0t5qBRIGApU6wCncSh9jbzcuim75b2vC3p7Mj4h4x2reWW/t2XdHHBy73btO1nNxYZamumv7N0U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=YyK0RVvl; arc=none smtp.client-ip=209.85.160.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="YyK0RVvl" Received: by mail-oa1-f48.google.com with SMTP id 586e51a60fabf-2addd5053c0so2574490fac.1 for ; Mon, 03 Feb 2025 16:46:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1738630017; x=1739234817; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BGlMPNT2LmAYPrCmYwn48Iozoi1TKQ77bAj5ygSrkAE=; b=YyK0RVvlfz4LR0qLaw9WgcT+3PNcRlaFqHqLfQX0G/LoVsfwcxvM+/MgQywzyP6k+h 3Q+5N4RDHOGjE7dDv+hg9rE0BAXmJQ5MmEC9Vv5gezbMykWrcWhF0YsfCVOE4ps3ryG2 Gpl4dRYQXhmrrxVS0PBBvQJfHGExhqlGbH31I= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738630017; x=1739234817; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BGlMPNT2LmAYPrCmYwn48Iozoi1TKQ77bAj5ygSrkAE=; b=TBVYoOruw/rdzpL2RnjQN3NJ1I4iv84vi8yQZw6uPzVvay+yE6ieExdeDt/x7vzZmM 0C7r59PTWrZliv7ZxDaQDkNU7PWZKZF/2K1PGBqVSOi85IWHHretTOhixTWyFdPeSZwf gqZqXiJpjUk1yPaEV0qGtv8mtajPcLxSGgl7g8MmPhPFMsgjcnqnephmDuuHRlT7XqnQ IKwskpqjSBwVLIyYbKG9Xyk+x/pJO1ieMPtDhJ/beztko0yjmTxDtxP0TmSYMGWdWpVz w3CaSinXRLj+9oHud2f38L/A7Wy3070Tj5IumZ4c4RSBBTzXzYy9zjrBmoY3V1bv9oa1 tETg== X-Gm-Message-State: AOJu0YwGYpPtL+ioZrEo2JIbok1gd57Xb6Ed9tYnQGxI/19OpEtIZOz8 NkXIjaW6eCFRiP3kEi2MOsEJUkEaJh5iijNmaxObSSYmjBctEAlCyQ66/xAaRA== X-Gm-Gg: ASbGncvcOwQAyl8FUZ1Ue3njJ2fUbw1LL6x0Ze3n/KH7wGWDjsSNQyIMhlx37IWxJ/D havtr9iGLS5hYPhnK4xu2tyx7UVZjmqS273QJwAoXSXvO0R7TMsk9S/lau8eFRuf46Li+jyJwyd n31ZupvcfSJggC4buYxo2R/cNDZvs9JnbEPVVuf+lBWGgbLwgpg9TRBV1luIfXTrw76pqb7Qs1A ZCtoNO5mgePTMFXiUTEdDeHnzP5buhCwlJ9lOW7zDoH+/Nt8KyI/AkEm9d71M8IBo7BE2KQmJwG ccWwQfH3/S42EUvxfsIerlkTZyDlAjaJyXdicOgjg70sfTV/r0QpO6ywIRs3z1Kc6n8= X-Google-Smtp-Source: AGHT+IEMfGbTdQxVyqg4K9dONyta2A/sCDFTdOKxH1irvcUKL9dIga6sfDmMM4EzbvuQN7FYFB/jhw== X-Received: by 2002:a05:6870:2007:b0:296:5928:7a42 with SMTP id 586e51a60fabf-2b32f251707mr14087510fac.22.1738630016851; Mon, 03 Feb 2025 16:46:56 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2b356658291sm3680495fac.46.2025.02.03.16.46.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 16:46:55 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, michal.swiatkowski@linux.intel.com, helgaas@kernel.org, horms@kernel.org, Ajit Khaparde Subject: [PATCH net-next v3 02/10] bnxt_en Refactor completion ring allocation logic for P5_PLUS chips Date: Mon, 3 Feb 2025 16:46:01 -0800 Message-ID: <20250204004609.1107078-3-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250204004609.1107078-1-michael.chan@broadcom.com> References: <20250204004609.1107078-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org Add a new bnxt_hwrm_cp_ring_alloc_p5() function to handle allocating one completion ring on P5_PLUS chips. This simplifies the existing code and will be useful later in the series. Reviewed-by: Ajit Khaparde Reviewed-by: Michal Swiatkowski Signed-off-by: Michael Chan --- v2: Use const for a variable --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 44 +++++++++++------------ 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index fc870c104c56..0e16ea823fbd 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -7199,6 +7199,25 @@ static int bnxt_hwrm_rx_agg_ring_alloc(struct bnxt *bp, return 0; } +static int bnxt_hwrm_cp_ring_alloc_p5(struct bnxt *bp, + struct bnxt_cp_ring_info *cpr) +{ + const u32 type = HWRM_RING_ALLOC_CMPL; + struct bnxt_napi *bnapi = cpr->bnapi; + struct bnxt_ring_struct *ring; + u32 map_idx = bnapi->index; + int rc; + + ring = &cpr->cp_ring_struct; + ring->handle = BNXT_SET_NQ_HDL(cpr); + rc = hwrm_ring_alloc_send_msg(bp, ring, type, map_idx); + if (rc) + return rc; + bnxt_set_db(bp, &cpr->cp_db, type, map_idx, ring->fw_ring_id); + bnxt_db_cq(bp, &cpr->cp_db, cpr->cp_raw_cons); + return 0; +} + static int bnxt_hwrm_ring_alloc(struct bnxt *bp) { bool agg_rings = !!(bp->flags & BNXT_FLAG_AGG_RINGS); @@ -7242,19 +7261,9 @@ static int bnxt_hwrm_ring_alloc(struct bnxt *bp) u32 map_idx; if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) { - struct bnxt_cp_ring_info *cpr2 = txr->tx_cpr; - struct bnxt_napi *bnapi = txr->bnapi; - u32 type2 = HWRM_RING_ALLOC_CMPL; - - ring = &cpr2->cp_ring_struct; - ring->handle = BNXT_SET_NQ_HDL(cpr2); - map_idx = bnapi->index; - rc = hwrm_ring_alloc_send_msg(bp, ring, type2, map_idx); + rc = bnxt_hwrm_cp_ring_alloc_p5(bp, txr->tx_cpr); if (rc) goto err_out; - bnxt_set_db(bp, &cpr2->cp_db, type2, map_idx, - ring->fw_ring_id); - bnxt_db_cq(bp, &cpr2->cp_db, cpr2->cp_raw_cons); } ring = &txr->tx_ring_struct; map_idx = i; @@ -7274,20 +7283,9 @@ static int bnxt_hwrm_ring_alloc(struct bnxt *bp) if (!agg_rings) bnxt_db_write(bp, &rxr->rx_db, rxr->rx_prod); if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) { - struct bnxt_cp_ring_info *cpr2 = rxr->rx_cpr; - struct bnxt_napi *bnapi = rxr->bnapi; - u32 type2 = HWRM_RING_ALLOC_CMPL; - struct bnxt_ring_struct *ring; - u32 map_idx = bnapi->index; - - ring = &cpr2->cp_ring_struct; - ring->handle = BNXT_SET_NQ_HDL(cpr2); - rc = hwrm_ring_alloc_send_msg(bp, ring, type2, map_idx); + rc = bnxt_hwrm_cp_ring_alloc_p5(bp, rxr->rx_cpr); if (rc) goto err_out; - bnxt_set_db(bp, &cpr2->cp_db, type2, map_idx, - ring->fw_ring_id); - bnxt_db_cq(bp, &cpr2->cp_db, cpr2->cp_raw_cons); } } From patchwork Tue Feb 4 00:46:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13958466 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-ot1-f47.google.com (mail-ot1-f47.google.com [209.85.210.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 83C263595F for ; Tue, 4 Feb 2025 00:46:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630021; cv=none; b=kPRPeKyD4nUIZMJK4p4GVuFfASnVg4VFZAGZsc47WcZ/cBIis0L2Mhh/F9zzgCQzefvIEOqMJIwsSIsQmYdJy54ubtngCGd/0zlsVGw2FKiN5BI47IR9EOULn1uMDXp2EAGHATa+hnhOdC06xjdISidq2Y5DulKJH7orbHYd6oM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630021; c=relaxed/simple; bh=N4tPBq96MNEhuP9E/BsZZBcc9KAk6IUhpymzyYeQMxk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PJJfagmcnRTsVa2M1gz6t80V5p6WMUhg8VARYnhtTUDUP9pw4Ot4Q/blmFPJlEPC7fM6XrGxITZA6IAt88xIjmcpi2KuY7B5wZe0acJ0ajrMdJZa+vpfspo90Nrlw9LRk0xV0/VCJqcDMsKN8znIV8+UdTnCTMJX9ZAYKrMRmCk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=CrWwLPvc; arc=none smtp.client-ip=209.85.210.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="CrWwLPvc" Received: by mail-ot1-f47.google.com with SMTP id 46e09a7af769-71e1158fe3eso2796791a34.1 for ; Mon, 03 Feb 2025 16:46:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1738630018; x=1739234818; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cAnNmS1PpxNhoASBZ/NEPmOmzVWH3c4fcg+geDwoOGo=; b=CrWwLPvcE7+XDPJU4wQNdbI7E754J/qeTBr8UwOSJTfYKOOFq2PlQ4O2ZLiy8h6lJd 9CEBwxBR+XQagQV9LnIcsOVO0Gtdi967p6a2/4OQfGGWYAbbePtIUtfxt9gpwhet6eIL yim9KVPce35W917iuscW2UxeigwpBvj+tEf5A= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738630018; x=1739234818; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cAnNmS1PpxNhoASBZ/NEPmOmzVWH3c4fcg+geDwoOGo=; b=pfav8CQi6KTBxByEUDvQcck6x4P9FbLpLAUM1oAdN1rRHyQYyZE4fV0TzYYikt31oP zovQNQwTZzwLQ5Xveoq3nSwFFusYnct/GqccWhohO9F9h6DAw5oU6IR+mN86SThmmjQf ETn/C1b90BjUnZv1VlCsZjnu8R5KpabTid4ira+biEMS5IJHkgHoWzaagGeTlDQdbeTA oEz5i2UEwbZipFRgxSysZ0Xkj/sURXDl9KevAxt5GDQxXysD6BjIV8B2wXe2Je0Yn4kU ERUqesFXvr/sArAO80+D364YxRENDXtLmKFbVjwdx4ALAC1fwj3yx8ZlPRPV2ZVvTa6f TKYQ== X-Gm-Message-State: AOJu0YzOpHGupAhJSOpmojdUsECO+si8BC7vkB0g5ecwHyprzB1vG4nE Qa9kMYds+pzDHzzh6kc9Nj1bBVq9PiOx1dT7K4e3yZb9zSJbOJn/7HQjWa7vbw== X-Gm-Gg: ASbGncs4zHdjH9nxZJBmj3jF1moD/Y4Zq0GmX+/LFN9skE6oeno2it+dEQ65estgbUj f6RASa0W2oSWjD6jqrb5DnCuLGAmEib9bZ1IHAFP0lhFGdIQVgrkHebDdyRedhIx7CQqfcK2Zxn 0CWvopeFyBaA5JPHP0I1x68M/IPQZAtrFT/xnrRZzU3t4M39+8lwyzbG+/CUI2ZV2eXuMSFkBH/ foqBpbNrlrOVULZ+CFqd8t7x6+Oz+6XzonpUGv5aN7aS9jbYS/6HK93Lo4UC9o2HY928cSLAv1R pDQWrRHetnsfdMtvTU5iRHaUCI9lf3IE+JHHut4PHCBBhnRYL3MuGkYc02NOkEkD9yw= X-Google-Smtp-Source: AGHT+IHzbVoC66FITBEoH5rqpeQDqv9W1GLcH+LZzTue32V/O/JFE0t2EY07BqGZQfHTk+Su9VEniA== X-Received: by 2002:a05:6830:9c4:b0:71e:31a:7521 with SMTP id 46e09a7af769-726568ddd6dmr15518865a34.20.1738630018488; Mon, 03 Feb 2025 16:46:58 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2b356658291sm3680495fac.46.2025.02.03.16.46.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 16:46:57 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, michal.swiatkowski@linux.intel.com, helgaas@kernel.org, horms@kernel.org, Ajit Khaparde Subject: [PATCH net-next v3 03/10] bnxt_en: Refactor TX ring allocation logic Date: Mon, 3 Feb 2025 16:46:02 -0800 Message-ID: <20250204004609.1107078-4-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250204004609.1107078-1-michael.chan@broadcom.com> References: <20250204004609.1107078-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org Add a new bnxt_hwrm_tx_ring_alloc() function to handle allocating a transmit ring. This will be useful later in the series. Reviewed-by: Ajit Khaparde Reviewed-by: Michal Swiatkowski Signed-off-by: Michael Chan --- v2: Use const for a variable --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 0e16ea823fbd..8ab7345acb0a 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -7218,6 +7218,20 @@ static int bnxt_hwrm_cp_ring_alloc_p5(struct bnxt *bp, return 0; } +static int bnxt_hwrm_tx_ring_alloc(struct bnxt *bp, + struct bnxt_tx_ring_info *txr, u32 tx_idx) +{ + struct bnxt_ring_struct *ring = &txr->tx_ring_struct; + const u32 type = HWRM_RING_ALLOC_TX; + int rc; + + rc = hwrm_ring_alloc_send_msg(bp, ring, type, tx_idx); + if (rc) + return rc; + bnxt_set_db(bp, &txr->tx_db, type, tx_idx, ring->fw_ring_id); + return 0; +} + static int bnxt_hwrm_ring_alloc(struct bnxt *bp) { bool agg_rings = !!(bp->flags & BNXT_FLAG_AGG_RINGS); @@ -7254,23 +7268,17 @@ static int bnxt_hwrm_ring_alloc(struct bnxt *bp) } } - type = HWRM_RING_ALLOC_TX; for (i = 0; i < bp->tx_nr_rings; i++) { struct bnxt_tx_ring_info *txr = &bp->tx_ring[i]; - struct bnxt_ring_struct *ring; - u32 map_idx; if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) { rc = bnxt_hwrm_cp_ring_alloc_p5(bp, txr->tx_cpr); if (rc) goto err_out; } - ring = &txr->tx_ring_struct; - map_idx = i; - rc = hwrm_ring_alloc_send_msg(bp, ring, type, map_idx); + rc = bnxt_hwrm_tx_ring_alloc(bp, txr, i); if (rc) goto err_out; - bnxt_set_db(bp, &txr->tx_db, type, map_idx, ring->fw_ring_id); } for (i = 0; i < bp->rx_nr_rings; i++) { From patchwork Tue Feb 4 00:46:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13958467 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oa1-f50.google.com (mail-oa1-f50.google.com [209.85.160.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9405286325 for ; Tue, 4 Feb 2025 00:47:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630024; cv=none; b=FDATK26dgEHYEfvZlHkXKU2TGdFMRxEqu2OhebeVOJhV41EY1dg2Xy0NaOg1H3YaxGmj4XhZakGCQRlmVwxX5dC+WnHQWLf3MZe7M7UXRoHl8MBunJEHmXaxKCkxlSg+YxSkI7pkEux6pgke2xBp2f11pCAW68OfLaI9jU0iXgc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630024; c=relaxed/simple; bh=3Wv6fRui6JUppkVHVPDhuyoEourXEdFIz2Ar68Mhcgo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FltBt+qCIyZdOCv3mTvXe5GCRfrA2mq+wtv/d47iZbVWCatRXYFqnjqJPHWOOo2+HtsXGEDhu3eWSGto0hOtwG937tgS5Y+HSb03a2TrOxFO4zK/9Mn+LalReordlz02YpyEGWfy6nUPGCQzMupxcYqgtnGBp4ZXAsYfkzl8hyQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=LWFkKAKR; arc=none smtp.client-ip=209.85.160.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="LWFkKAKR" Received: by mail-oa1-f50.google.com with SMTP id 586e51a60fabf-2a3939a758dso1566459fac.1 for ; Mon, 03 Feb 2025 16:47:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1738630021; x=1739234821; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tYbE7VuTl9BMV8ls+ftV23iDp1ujBGiTUNoHs2AfpuI=; b=LWFkKAKRaQPvMlEltatdS09YvNO/BJDYrx6zEmAmAWc3bAuM1WBa2FrII5Gz7VIcGC CPm8mXWsQGAIRRysDX+IGLDtKiuKIT3a2zt29se+68+ocJFl0lSxPoCyZKIYDbnSE/6A CtJzTx2G/AGrPm3zQ0Y3ifOhsHgzD+xn5kXjQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738630021; x=1739234821; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=tYbE7VuTl9BMV8ls+ftV23iDp1ujBGiTUNoHs2AfpuI=; b=FuCNErdnttKF46PungZ2YcuqJ4oEFRxA7PBP3klsaPB8807HSSk76/j3v7J8K+KLIY iWMBQWIOzvosjkqGUkk0sIQ7ZNGeGZ5Z2iGdq1Ax+zMFl6IPBBHbwzdWeGXUzyCqZuOA CHcfadSgYvZEf4KEUgyFJnSIaymhaz9zFgJTNz8WN9GHxbuMJMaczKQ2ZXEIxGkLRM7F 2MEc3Nb5vGggn5axMWxepqM7StsVdLOgZCRmG+q27UpdkkOpt1jMRM0GaSFg5I6w8wJF 9+b03dhS7j/w+nuC2EBJkHGAZ5UguViY314UPJwRYz+L7FUxryJDXI6O014CE0AFVw2v 3f/Q== X-Gm-Message-State: AOJu0YxKIfJGkoV1YxWlNOTYicjAZUp2d87KcoEvTCk2h+0rFD6wXxIf f2Sv7Vv9K8Ks9xRTv9kJBaxo3wxU+D5CPxFkAqLlDokCRamOTyjcR1I3uvPAzQ== X-Gm-Gg: ASbGncv8H9P+sfYe86BP4ZVMBNfuHXHXd2VObWU7l66AFAKdLjtrlzSjtB6b/Vmf0yP B5RRG07cEaPXlGR31hmSP78ezUN1/hYlAexQaSiQjJYSEsScAoRuXy2oqcnhjglFTXAryveVtst B/zyYRhSLIoXwMeUxaU8PdOE51okFcufHHJrJyR34Fc2c5a01GuzY5S60YF9W3s6x3W+diXq4nX h2zCb5YjyxO2C5UrJZGNEaG2STfi1EygMISfeaJmI0iOk/0eF5aIfQNrzNmaCe4D/yKp22IE3ua JBhrTmOfeBNCqg2JW9ZrfjG9ldOJo7GDR4q6+HMNUmGPtf7r2ibn8bOKoM6wwhWT/Bo= X-Google-Smtp-Source: AGHT+IFs7Wnm4/yCIWBcp9XvtKd8KRmQT7M2ZZR0ZAzFRjOdhc2hjOEJziq0glsf+Xxh3gYJRQKezQ== X-Received: by 2002:a05:6870:899c:b0:29e:7dd8:92b1 with SMTP id 586e51a60fabf-2b32f2db995mr13856570fac.24.1738630021344; Mon, 03 Feb 2025 16:47:01 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2b356658291sm3680495fac.46.2025.02.03.16.46.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 16:47:00 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, michal.swiatkowski@linux.intel.com, helgaas@kernel.org, horms@kernel.org, Somnath Kotur , Kalesh AP Subject: [PATCH net-next v3 04/10] bnxt_en: Refactor completion ring free routine Date: Mon, 3 Feb 2025 16:46:03 -0800 Message-ID: <20250204004609.1107078-5-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250204004609.1107078-1-michael.chan@broadcom.com> References: <20250204004609.1107078-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org From: Somnath Kotur Add a wrapper routine to free L2 completion rings. This will be useful later in the series. Reviewed-by: Kalesh AP Reviewed-by: Michal Swiatkowski Signed-off-by: Somnath Kotur Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 26 ++++++++++++++--------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 8ab7345acb0a..52d4dc222759 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -7405,6 +7405,20 @@ static void bnxt_hwrm_rx_agg_ring_free(struct bnxt *bp, bp->grp_info[grp_idx].agg_fw_ring_id = INVALID_HW_RING_ID; } +static void bnxt_hwrm_cp_ring_free(struct bnxt *bp, + struct bnxt_cp_ring_info *cpr) +{ + struct bnxt_ring_struct *ring; + + ring = &cpr->cp_ring_struct; + if (ring->fw_ring_id == INVALID_HW_RING_ID) + return; + + hwrm_ring_free_send_msg(bp, ring, RING_FREE_REQ_RING_TYPE_L2_CMPL, + INVALID_HW_RING_ID); + ring->fw_ring_id = INVALID_HW_RING_ID; +} + static void bnxt_hwrm_ring_free(struct bnxt *bp, bool close_path) { u32 type; @@ -7450,17 +7464,9 @@ static void bnxt_hwrm_ring_free(struct bnxt *bp, bool close_path) struct bnxt_ring_struct *ring; int j; - for (j = 0; j < cpr->cp_ring_count && cpr->cp_ring_arr; j++) { - struct bnxt_cp_ring_info *cpr2 = &cpr->cp_ring_arr[j]; + for (j = 0; j < cpr->cp_ring_count && cpr->cp_ring_arr; j++) + bnxt_hwrm_cp_ring_free(bp, &cpr->cp_ring_arr[j]); - ring = &cpr2->cp_ring_struct; - if (ring->fw_ring_id == INVALID_HW_RING_ID) - continue; - hwrm_ring_free_send_msg(bp, ring, - RING_FREE_REQ_RING_TYPE_L2_CMPL, - INVALID_HW_RING_ID); - ring->fw_ring_id = INVALID_HW_RING_ID; - } ring = &cpr->cp_ring_struct; if (ring->fw_ring_id != INVALID_HW_RING_ID) { hwrm_ring_free_send_msg(bp, ring, type, From patchwork Tue Feb 4 00:46:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13958468 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oa1-f43.google.com (mail-oa1-f43.google.com [209.85.160.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5F14A35967 for ; Tue, 4 Feb 2025 00:47:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630027; cv=none; b=kMOXR+n61h9BNS3Qbc8h1sevzRnefVOZ7FlvS+CDSQcY5CbTLOTn4hvVpWkHJbgZtPxQDhpuKEVrDxUWpTt+LjUR6Kg2IRhWgHDPwuP/kn2q23CuI7Vg3JoBO3eDdYG2EAt6Q6CBnfvD9rqfbuAoKVhjBb/v4jAoYUTlC7cDzls= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630027; c=relaxed/simple; bh=WMm7lF8i3aT0wkgzKRQ9Rv0++wE/D/rYcS6YOf4Fbdc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ksW1yYkMtdxWT3BePJvZfK+n0X3nRsYDTuxDILzbevxRCpM0ToRgz47mByYrYLDBjlxFh1U50a+J9Op38enCWabPKrzfr9adFu52ivmMtyS3Rk6l7jzO2SvWlFmZmWzCTNuBSSosqAEfsZkcuhw9cTuAYQFevsrDCnqDW35jeio= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=CxGaUAP9; arc=none smtp.client-ip=209.85.160.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="CxGaUAP9" Received: by mail-oa1-f43.google.com with SMTP id 586e51a60fabf-2a3a40c69e3so2782808fac.0 for ; Mon, 03 Feb 2025 16:47:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1738630024; x=1739234824; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ycu8HxRfHwBK04zHzX+xCqlv0tMM5LUbOD+7kw9MqnQ=; b=CxGaUAP9Z0ogTWVgA1txokxQptWeAiHk2nU3uYjQHp1UQe3+cbAxd3uS3SDIumohI0 SEC4h2UOEUIyS5zgiww80f4b6Mtp5n470oLDRcfyphKZxceo7V5l8lDRBPqN7PzEG0ce 2IeLgOV6OqmyKUOnBuAPWSHaEfWl5KjO7Mf7s= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738630024; x=1739234824; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ycu8HxRfHwBK04zHzX+xCqlv0tMM5LUbOD+7kw9MqnQ=; b=no7sCHOg6snenjEsYqAfVuVXuyMT0VxctaE+KuoxU9f8t/kx0ZLLNedLd6/NWOMfMG ut1prk7XEmFbeXLBWhJXbl5fhAN8qm+yHVZnKGXv73yrv3LDjug8yR1oGCMgKk8Wf8BO Nem/F8naz9AqlGEg8bbEXk0UC/uuwNM5rm8zJQIZLr0WazmCPxVZEgAGwYW0HhhG1Waf EKRo0slHZIejnekwBQcCbQ2TdMjTBjKHTj3tvD4mjxG8exN8mx9gYHGgHNvA0Ab/yrOY m/55MEOEnPHYzx1Lte1cCdWnEMUKphUljTyvEWAR4ih6uX2RMu48ETZBldPhpfGn1q5U DbWQ== X-Gm-Message-State: AOJu0YwgUvyHfPO7gzhE3UpBbf9n7ae/VvkUtVSoUY1lp+g5rIcHJC90 8/b4MEKe1/NtWt9bQuXS1q0NFW01lTfIM592/rARvvYhkgKJ1cs563+k67jxaQ== X-Gm-Gg: ASbGncvnpmiVdUC6/7w37wKaUc+FTnzvQdQsG3enQ/7EqnpDmQKma7RybScN3qWLATf ws6Og+zPgHwA08Tt/7c4IxW5LHUExaucqQ7kPkJ8MtgCPfKd/1RBufSaUP7W8Sp7YVtfXREpye9 ilNu2gX6lagi5DZ/truqrYc0BIndJH/J7mzOw+h+fVHmmi1HX95CznUlJfoiTBde/hJLrSFMnT4 abPDPUdTOQI6gi4Na00XSbGBRb++T2cTZA/R73x/rw+22kUmmWeXZKSsBY1Y2jaD9fwoE47bqJ/ fP+tHhS3oHUrxU3SqXqZuYH3wdCYR4C/Xsmf6DcfWA30epdhDGAUVTGT0FofAjusz/w= X-Google-Smtp-Source: AGHT+IGKVa2DwIjU65GRYFuBnennYsOuxShGUNDhcfyBlmZQZM5FU48fo2DljNdQHo7ZzRhb6f2cuA== X-Received: by 2002:a05:6870:2f01:b0:29e:7a09:d92a with SMTP id 586e51a60fabf-2b32efd067fmr14907279fac.5.1738630024302; Mon, 03 Feb 2025 16:47:04 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2b356658291sm3680495fac.46.2025.02.03.16.47.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 16:47:03 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, michal.swiatkowski@linux.intel.com, helgaas@kernel.org, horms@kernel.org, Somnath Kotur Subject: [PATCH net-next v3 05/10] bnxt_en: Refactor bnxt_free_tx_rings() to free per TX ring Date: Mon, 3 Feb 2025 16:46:04 -0800 Message-ID: <20250204004609.1107078-6-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250204004609.1107078-1-michael.chan@broadcom.com> References: <20250204004609.1107078-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org From: Somnath Kotur Modify bnxt_free_tx_rings() to free the skbs per TX ring. This will be useful later in the series. Reviewed-by: Michal Swiatkowski Signed-off-by: Somnath Kotur Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 115 ++++++++++++---------- 1 file changed, 61 insertions(+), 54 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 52d4dc222759..453f52648145 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -3314,74 +3314,81 @@ static int bnxt_poll_p5(struct napi_struct *napi, int budget) return work_done; } -static void bnxt_free_tx_skbs(struct bnxt *bp) +static void bnxt_free_one_tx_ring_skbs(struct bnxt *bp, + struct bnxt_tx_ring_info *txr, int idx) { int i, max_idx; struct pci_dev *pdev = bp->pdev; - if (!bp->tx_ring) - return; - max_idx = bp->tx_nr_pages * TX_DESC_CNT; - for (i = 0; i < bp->tx_nr_rings; i++) { - struct bnxt_tx_ring_info *txr = &bp->tx_ring[i]; - int j; - if (!txr->tx_buf_ring) + for (i = 0; i < max_idx;) { + struct bnxt_sw_tx_bd *tx_buf = &txr->tx_buf_ring[i]; + struct sk_buff *skb; + int j, last; + + if (idx < bp->tx_nr_rings_xdp && + tx_buf->action == XDP_REDIRECT) { + dma_unmap_single(&pdev->dev, + dma_unmap_addr(tx_buf, mapping), + dma_unmap_len(tx_buf, len), + DMA_TO_DEVICE); + xdp_return_frame(tx_buf->xdpf); + tx_buf->action = 0; + tx_buf->xdpf = NULL; + i++; continue; + } - for (j = 0; j < max_idx;) { - struct bnxt_sw_tx_bd *tx_buf = &txr->tx_buf_ring[j]; - struct sk_buff *skb; - int k, last; - - if (i < bp->tx_nr_rings_xdp && - tx_buf->action == XDP_REDIRECT) { - dma_unmap_single(&pdev->dev, - dma_unmap_addr(tx_buf, mapping), - dma_unmap_len(tx_buf, len), - DMA_TO_DEVICE); - xdp_return_frame(tx_buf->xdpf); - tx_buf->action = 0; - tx_buf->xdpf = NULL; - j++; - continue; - } + skb = tx_buf->skb; + if (!skb) { + i++; + continue; + } - skb = tx_buf->skb; - if (!skb) { - j++; - continue; - } + tx_buf->skb = NULL; - tx_buf->skb = NULL; + if (tx_buf->is_push) { + dev_kfree_skb(skb); + i += 2; + continue; + } - if (tx_buf->is_push) { - dev_kfree_skb(skb); - j += 2; - continue; - } + dma_unmap_single(&pdev->dev, + dma_unmap_addr(tx_buf, mapping), + skb_headlen(skb), + DMA_TO_DEVICE); - dma_unmap_single(&pdev->dev, - dma_unmap_addr(tx_buf, mapping), - skb_headlen(skb), - DMA_TO_DEVICE); + last = tx_buf->nr_frags; + i += 2; + for (j = 0; j < last; j++, i++) { + int ring_idx = i & bp->tx_ring_mask; + skb_frag_t *frag = &skb_shinfo(skb)->frags[j]; - last = tx_buf->nr_frags; - j += 2; - for (k = 0; k < last; k++, j++) { - int ring_idx = j & bp->tx_ring_mask; - skb_frag_t *frag = &skb_shinfo(skb)->frags[k]; - - tx_buf = &txr->tx_buf_ring[ring_idx]; - dma_unmap_page( - &pdev->dev, - dma_unmap_addr(tx_buf, mapping), - skb_frag_size(frag), DMA_TO_DEVICE); - } - dev_kfree_skb(skb); + tx_buf = &txr->tx_buf_ring[ring_idx]; + dma_unmap_page(&pdev->dev, + dma_unmap_addr(tx_buf, mapping), + skb_frag_size(frag), DMA_TO_DEVICE); } - netdev_tx_reset_queue(netdev_get_tx_queue(bp->dev, i)); + dev_kfree_skb(skb); + } + netdev_tx_reset_queue(netdev_get_tx_queue(bp->dev, idx)); +} + +static void bnxt_free_tx_skbs(struct bnxt *bp) +{ + int i; + + if (!bp->tx_ring) + return; + + for (i = 0; i < bp->tx_nr_rings; i++) { + struct bnxt_tx_ring_info *txr = &bp->tx_ring[i]; + + if (!txr->tx_buf_ring) + continue; + + bnxt_free_one_tx_ring_skbs(bp, txr, i); } } From patchwork Tue Feb 4 00:46:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13958469 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oa1-f53.google.com (mail-oa1-f53.google.com [209.85.160.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 665F51386B4 for ; Tue, 4 Feb 2025 00:47:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630029; cv=none; b=X8/x+dsO68axnLuPfv2tx3NY25Qlo1hGk7FaYsNOP49JWRFwbq/tNoHQy/Sq4P6ioZ2BuexU95UyZdUPzICGWDiUMFuDEUBtvgbvnM2xyAghqdk7mHKnKk6B3srYQ1gcGUHIb+VbUChMv1Mu/aFs3lnjOLgcMakKuQ+xy8ukkCg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630029; c=relaxed/simple; bh=I9Fd3w7iBdsQw7RR7W5KoX06nwuqLqZBEZ0GhvatebA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rPdxq1X3pNs5nSsPFIUU+uy95kUAcRwgxs3eNsmdH3KcD9aOygx4Ejqdb3EptFrgfRIxiaaHTh0qXbTASUN2bG31+JW7wlDEKixKRiANLNV2/XEOVjoLad2MDkSihxKN6K3UJfQHVEE8/QSXfm0wLZGYOL701tpRdnne8R+VnDo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=Sq/1pK5g; arc=none smtp.client-ip=209.85.160.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="Sq/1pK5g" Received: by mail-oa1-f53.google.com with SMTP id 586e51a60fabf-2b38896c534so1579695fac.0 for ; Mon, 03 Feb 2025 16:47:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1738630026; x=1739234826; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=jPidmFB0PDNsFwHUYhUbpXpckFku0salq0TmYXgX8xo=; b=Sq/1pK5gWF1DE23YgPG4OcLyLSrRgZ5pfFn6l7I0TwVPOpOG42fb8z/kfvnE9auc0+ 1xTE+qqgfBFI5Mf4J4pTN4u5Qlr9KO88fl8vlEgAEg7JUqZXhOaAzI4GhyJbdMggbL62 goRGaNXpdTdp2klS2WDLOnHCr/Tz/JQsJ4vgI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738630026; x=1739234826; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jPidmFB0PDNsFwHUYhUbpXpckFku0salq0TmYXgX8xo=; b=qcF/nQtbFJIi+O9xwWRRZTY6zIqUDrlNZdJyeB/0d9Syk+M6hhy8CH3QgRG65jChYZ qkUJZQKpCjU+cDlM4SrilfXAezZDsDwcPI6RFqcuz4gatfFnX7l8TzeF29eqWPd7Z/ty jLMdiLTS4EkqwYxgtTaLoltYNc85G2f+WmxC6IIil8aqQPpVhZ3xGnbxAx/y9c+Y+NCS 1If5NYEpNHyi2DhwfoHtKiq76FJpWx4bq7jwrM2zGsAoLNI3AOSQAw5zxEpgjYtp1aX5 0ZIEzfg7A/xLYQKtpqnrKn2KdcO5BoCdYrSVbrltPg3KJJbLB13O52ACnbOoM1MrpC9R /I5g== X-Gm-Message-State: AOJu0Yw+W5pnvS8BApWMtev2Fuxp40OxPnSRzNXT/W+YcEUCff26/98L ZP4cBwiI1hw8/HCJ1bNKqRi+dSIp6yeHdO4hk6GPBBQOO/wg50X9EWoWigNCLA== X-Gm-Gg: ASbGnctz6PGGr7fLXFJWVlW71NzP9B57ZNJKBz1dTWvFDS2fTMrJ//bjYlKs2H83Jid 5rMWyqOmoLykwBCvjf6IK+JGxOB2F2tYB/0TIOxbZoLagQBOSBaYkjhfEytw7zsTvS2zSKE0jid wVraG9/jmMCnt6dFPJltQ5kLOKONh286pgbk1e04muqT18VpvGdpYQteTapiFaqNmG0CQdnlHFY ZAx129/Pht5cVxBxmjZMnqPES/38DeQzkwS6dUg2eayaD9ailIpZLk8WB5/QR7z7Beu5MSdTR5n ZhMCKwMSDGAHL/feC7AZJDysbZBcDKBXICxznvk+q7f+tvvm3lVoRVai8EmPWzJW0TU= X-Google-Smtp-Source: AGHT+IFs5JqbFOSpAwgDPUPcsnmYrY96bZ03qh6xDN1Drwhc6VdFOiqkHJUGWxQ30mdAqcLr1Csdpg== X-Received: by 2002:a05:6871:814:b0:29e:3345:74ff with SMTP id 586e51a60fabf-2b32f203e15mr14237998fac.23.1738630026371; Mon, 03 Feb 2025 16:47:06 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2b356658291sm3680495fac.46.2025.02.03.16.47.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 16:47:05 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, michal.swiatkowski@linux.intel.com, helgaas@kernel.org, horms@kernel.org, Hongguang Gao , Ajit Khaparde Subject: [PATCH net-next v3 06/10] bnxt_en: Refactor RX/RX AGG ring parameters setup for P5_PLUS Date: Mon, 3 Feb 2025 16:46:05 -0800 Message-ID: <20250204004609.1107078-7-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250204004609.1107078-1-michael.chan@broadcom.com> References: <20250204004609.1107078-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org There is some common code for setting up RX and RX AGG ring allocation parameters for P5_PLUS chips. Refactor the logic into a new function. Reviewed-by: Hongguang Gao Reviewed-by: Ajit Khaparde Reviewed-by: Michal Swiatkowski Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 58 +++++++++++------------ 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 453f52648145..ac63d3feaa1d 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -6944,6 +6944,28 @@ static void bnxt_hwrm_ring_grp_free(struct bnxt *bp) hwrm_req_drop(bp, req); } +static void bnxt_set_rx_ring_params_p5(struct bnxt *bp, u32 ring_type, + struct hwrm_ring_alloc_input *req, + struct bnxt_ring_struct *ring) +{ + struct bnxt_ring_grp_info *grp_info = &bp->grp_info[ring->grp_idx]; + u32 enables = RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID; + + if (ring_type == HWRM_RING_ALLOC_AGG) { + req->ring_type = RING_ALLOC_REQ_RING_TYPE_RX_AGG; + req->rx_ring_id = cpu_to_le16(grp_info->rx_fw_ring_id); + req->rx_buf_size = cpu_to_le16(BNXT_RX_PAGE_SIZE); + enables |= RING_ALLOC_REQ_ENABLES_RX_RING_ID_VALID; + } else { + req->rx_buf_size = cpu_to_le16(bp->rx_buf_use_size); + if (NET_IP_ALIGN == 2) + req->flags = + cpu_to_le16(RING_ALLOC_REQ_FLAGS_RX_SOP_PAD); + } + req->stat_ctx_id = cpu_to_le32(grp_info->fw_stats_ctx); + req->enables |= cpu_to_le32(enables); +} + static int hwrm_ring_alloc_send_msg(struct bnxt *bp, struct bnxt_ring_struct *ring, u32 ring_type, u32 map_index) @@ -6995,37 +7017,13 @@ static int hwrm_ring_alloc_send_msg(struct bnxt *bp, break; } case HWRM_RING_ALLOC_RX: - req->ring_type = RING_ALLOC_REQ_RING_TYPE_RX; - req->length = cpu_to_le32(bp->rx_ring_mask + 1); - if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) { - u16 flags = 0; - - /* Association of rx ring with stats context */ - grp_info = &bp->grp_info[ring->grp_idx]; - req->rx_buf_size = cpu_to_le16(bp->rx_buf_use_size); - req->stat_ctx_id = cpu_to_le32(grp_info->fw_stats_ctx); - req->enables |= cpu_to_le32( - RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID); - if (NET_IP_ALIGN == 2) - flags = RING_ALLOC_REQ_FLAGS_RX_SOP_PAD; - req->flags = cpu_to_le16(flags); - } - break; case HWRM_RING_ALLOC_AGG: - if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) { - req->ring_type = RING_ALLOC_REQ_RING_TYPE_RX_AGG; - /* Association of agg ring with rx ring */ - grp_info = &bp->grp_info[ring->grp_idx]; - req->rx_ring_id = cpu_to_le16(grp_info->rx_fw_ring_id); - req->rx_buf_size = cpu_to_le16(BNXT_RX_PAGE_SIZE); - req->stat_ctx_id = cpu_to_le32(grp_info->fw_stats_ctx); - req->enables |= cpu_to_le32( - RING_ALLOC_REQ_ENABLES_RX_RING_ID_VALID | - RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID); - } else { - req->ring_type = RING_ALLOC_REQ_RING_TYPE_RX; - } - req->length = cpu_to_le32(bp->rx_agg_ring_mask + 1); + req->ring_type = RING_ALLOC_REQ_RING_TYPE_RX; + req->length = (ring_type == HWRM_RING_ALLOC_RX) ? + cpu_to_le32(bp->rx_ring_mask + 1) : + cpu_to_le32(bp->rx_agg_ring_mask + 1); + if (bp->flags & BNXT_FLAG_CHIP_P5_PLUS) + bnxt_set_rx_ring_params_p5(bp, ring_type, req, ring); break; case HWRM_RING_ALLOC_CMPL: req->ring_type = RING_ALLOC_REQ_RING_TYPE_L2_CMPL; From patchwork Tue Feb 4 00:46:06 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13958470 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oa1-f50.google.com (mail-oa1-f50.google.com [209.85.160.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4611213BC0E for ; Tue, 4 Feb 2025 00:47:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630031; cv=none; b=AuxXKGe8RFo6Yc7byxSfExSC10SlFDFj17BqJ6+Pf1c2FA3eHJmfS5uVMoXazlIFVZGfVAdfN93DIn1KewnZNpNWE8UoS174g1fqD9jQkWfymZcOw2dfbXGuXXjbKmUwqM/WOEwx5jXOhnK9gxGKl41R2TWkvABPkTqPsdTYS4U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630031; c=relaxed/simple; bh=/Z40j/J42ZiQ048j2vF3aU41dOC1PM7eOBd+ElrAFQM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NrJ8wb57bByH8hvHHNtykYg1Cx1ROx3vZ1vo6Q34HWI5NQZpf81UXNOQvauj4rAqboheDhYpf1kcXw5FfM+9CV8VmWVAPeejLJW/G0tSsYdHYVYLQlU19JkNG7RVTyCxOnLhUPtRfrZrfvgvtv2pPjfNit/rK+mn5UTk/aWIeo4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=aWo1c8mB; arc=none smtp.client-ip=209.85.160.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="aWo1c8mB" Received: by mail-oa1-f50.google.com with SMTP id 586e51a60fabf-2b38896c534so1579709fac.0 for ; Mon, 03 Feb 2025 16:47:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1738630029; x=1739234829; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=I4ASapAG1egWbtPE1ui+0PISpvbEH/BCpm+FdWZFb9A=; b=aWo1c8mBQG0GHRt+bvUpSdCdTcc6vDyVlwvn63/1yL4HyF2ts2tSOZYrctp3fpaRA8 xWAZzkaNb4ZmsfcnHEviPUynt4hSBFJmp0MCBEr+zUcdfoYl7PhTo7xqjF/H1b0mkxKw VAe6WDQdzfTf/yvuOIe5/4Z76GT8/tpEtxT40= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738630029; x=1739234829; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=I4ASapAG1egWbtPE1ui+0PISpvbEH/BCpm+FdWZFb9A=; b=kqnz6ST/oqLowd5HMbWHb1DZzFC2EFVLDpquzh7hmJuCY9kjD/DkkKr2pOR8S4SmyY LtCzv4NN+PuestDIb5C0c0h26qG8dpCM6o8CoLbX6sG9wKVNX0aCP2+iOrAerbfmODx9 fIiHqgial7c16JWCtppqe07+WLsn4jkO3xIL3A8EegLqoxOlX8PDYXvVkttzOpP+tk9u VklRxDP8ApGXpjdp3S+eMSSAGyavqZrC4mZZxSLcC9sTSp9M10+UjTutaYNUNWtVYVzz CiYNgcpMPekhP107oCWRv8JNB2BxOZzasto6ibeibG3nQjQzkzuTix7BCeZPg7PcReF4 RHTg== X-Gm-Message-State: AOJu0YyBXcCG8YV+N1B2kRbYSGedU6M1apvoG1ZmKsMrSN2J6rx6pK6b dQUNUJu1BpdHgfYCIJCzdOTZDcctNReSAOGLOOLQDEqm6e6y3CHuqPMp+/N3iQ== X-Gm-Gg: ASbGnctEJzCyxkktu8P6BcxCWjjyX2XdX7qKUIW+vCOCXvBapc9Lz8r79gcGOzJpBv+ j1j6Hl2KvwlK2M2y9CWSlhZekfp2/OtVCRqfFE2bDSMuzxbbKZijjaDWcT9slbR7fKvcMmuoWn+ PjHI209nWAnm70V5mU0/WZweGSNU2qx33/KDhgZiLd9yF5pURUpVGM0Nt//JzuBT5LYYxVEH4RS VUnx/49NytKl9Ju/6BgBs67PMvsPFnC6NqpE0bfjUIP/gvpFmdt47YUs2nitXZ7oxkGKtYovpul z5In/q8T8u9455JO0pkOiF8exNfKhcPNcXNFVRGD3wohYmJVEnqzOqmTw5Y+pJjStBg= X-Google-Smtp-Source: AGHT+IFk3q/GgSkRy/mZS7Gvnx9Q3/oDzno7LYedYezPQ8NDa17Q6Y9K1skzu6mdmxytpwvkdJggHA== X-Received: by 2002:a05:6870:718d:b0:288:60d6:f183 with SMTP id 586e51a60fabf-2b32f405d98mr14046537fac.38.1738630029361; Mon, 03 Feb 2025 16:47:09 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2b356658291sm3680495fac.46.2025.02.03.16.47.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 16:47:08 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, michal.swiatkowski@linux.intel.com, helgaas@kernel.org, horms@kernel.org, Hongguang Gao , Ajit Khaparde Subject: [PATCH net-next v3 07/10] bnxt_en: Pass NQ ID to the FW when allocating RX/RX AGG rings Date: Mon, 3 Feb 2025 16:46:06 -0800 Message-ID: <20250204004609.1107078-8-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250204004609.1107078-1-michael.chan@broadcom.com> References: <20250204004609.1107078-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org Newer firmware can use the NQ ring ID associated with each RX/RX AGG ring to enable PCIe Steering Tags on P5_PLUS chips. When allocating RX/RX AGG rings, pass along NQ ring ID for the firmware to use. This information helps optimize DMA writes by directing them to the cache closer to the CPU consuming the data, potentially improving the processing speed. This change is backward-compatible with older firmware, which will simply disregard the information. Reviewed-by: Hongguang Gao Reviewed-by: Ajit Khaparde Reviewed-by: Michal Swiatkowski Signed-off-by: Andy Gospodarek Signed-off-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index ac63d3feaa1d..c6cf575af53f 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -6949,7 +6949,8 @@ static void bnxt_set_rx_ring_params_p5(struct bnxt *bp, u32 ring_type, struct bnxt_ring_struct *ring) { struct bnxt_ring_grp_info *grp_info = &bp->grp_info[ring->grp_idx]; - u32 enables = RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID; + u32 enables = RING_ALLOC_REQ_ENABLES_RX_BUF_SIZE_VALID | + RING_ALLOC_REQ_ENABLES_NQ_RING_ID_VALID; if (ring_type == HWRM_RING_ALLOC_AGG) { req->ring_type = RING_ALLOC_REQ_RING_TYPE_RX_AGG; @@ -6963,6 +6964,7 @@ static void bnxt_set_rx_ring_params_p5(struct bnxt *bp, u32 ring_type, cpu_to_le16(RING_ALLOC_REQ_FLAGS_RX_SOP_PAD); } req->stat_ctx_id = cpu_to_le32(grp_info->fw_stats_ctx); + req->nq_ring_id = cpu_to_le16(grp_info->cp_fw_ring_id); req->enables |= cpu_to_le32(enables); } From patchwork Tue Feb 4 00:46:07 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13958471 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oi1-f171.google.com (mail-oi1-f171.google.com [209.85.167.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 52BE2141987 for ; Tue, 4 Feb 2025 00:47:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630034; cv=none; b=fJ7F7TadOFsJ47pLfCNlrj3+mNzJJ3j6jaoxY5EFU4whU2KAHyx1ZZIer2LP4MHKeQApdtOaw+vMU9DLKJeJlVS0tgcT0+J+TZnm7nyQv9QUzTbOuX8Ci43B6sFKKz41+vHbqCQ1gavS58dBC6uHNLYgXjZ5/uPVAC7h9KKDDmI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630034; c=relaxed/simple; bh=EpuCctjzBSciDrFe52O3lPGBzWjnjoM4W/fdHOk0Aa0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VM7Ao220tL0e7ybAw0zIkD7JnxjhOX9SJNbdc/e7r0hPgpX5AvaD08cKB87D+YbkPLIPb90ZZLDrR4IQN29OwLsYZ53+4XJj8yjlaY4dm2A+aMgxlxiGOTxkLleQ+ITyQS6/Q4LdeiteUrhD6C/xaXLTd67adnkP0Xg5LuOt0gQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=N2lHj2VN; arc=none smtp.client-ip=209.85.167.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="N2lHj2VN" Received: by mail-oi1-f171.google.com with SMTP id 5614622812f47-3eb3c143727so2920632b6e.1 for ; Mon, 03 Feb 2025 16:47:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1738630031; x=1739234831; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MNPfZawrRXyiOt5qI69T4hmSv+IOSGPy8yQ4YGx4xag=; b=N2lHj2VNbhXdhBTj22X1ufvNDxCki8uvzPcDWhsyN2b/2SdRgVmMywafZrcpVllUhi DxILwbOkkG7FI3SvAkCYHUuNTMcTuPI9rSU0VsF9HERFlBgMB/mDuirceUBPLgiwhu0A 75a3BG9wgSMhVUJbt13gjR5R25TzMW+5LKKVU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738630031; x=1739234831; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=MNPfZawrRXyiOt5qI69T4hmSv+IOSGPy8yQ4YGx4xag=; b=LofvorjZRVGXR0t0qx12SbzAVGOwGelcz3n0S0WNwHWaVnrTVyw2v+MH1cj+qNzg/X QbjZ5xy7v4r9vZEoTWnPNehbtupR7E5ISTxFWnXfXA+XBWirwRePjlCoPWXdllyLNtBM aSh86W7B7ijQsBrbnKagnpr0QMkOvhoGQkRne/rq2kT0P6wg3M7kNy3So2wZxvqakmgb /BPif4KdhWb2QRqv6U+ELiRNYyllzh9KKh2USMBtSX56JA7ZM6ibOU0cOsBbt0aVjKrX bNboEIKoaJQxoCrPnrp9KQMhyJmH/z8KDZKYejT9UhU6dezM1DJvVI9WwLuPIi//pbe6 AqtQ== X-Gm-Message-State: AOJu0Yw/KxYli0jOISL/uO7u6r1Sr3aM8sj7Led1H6Q5pzLq4iaENF83 S29BDe8Kyr9CuJatvCY3TSd83s2vkP0k4YXtn3zF60Pzx6D0M8S979lQjGGvsg== X-Gm-Gg: ASbGnct6KC0bL9rPaGZcd7RmvSu2FfICU6VB6Q6n58BLfxdIpJDhL8lxEjwH4TK5dLs qOnfQKSvxoU/H6qGRk2OwC3ejs0XJzmb80l29b9x6tCRh8+arMf4gjUE7TCbYMub7B+Ama6HWAk dxs4yekAqsjhTz2Q/QiPQ4bdt8NIJiseRrapwGutX7jQicCHA1i6kNK6dXIMh5WNCZmPVcYwQWo zNve/89mA6MW8ByGPMrjo36bsSUcQO28qjRfAiVmrPEfEa1GmTOAyt55iX248FxeHhhLqgophkZ fl83VTKt2hu2cYLfXNfDH5D3k1c9nur9IidPKMkLSzc9WoXNOcLnOF8tkEGIEhbVrXY= X-Google-Smtp-Source: AGHT+IH/PJ35ggpc8xJsFNsDboGOMt+GauICQtJqkqkTa6OT+KrVKWAQj8E00S9ugOQXAX7tVxNIfw== X-Received: by 2002:a05:6870:6f13:b0:297:554:c660 with SMTP id 586e51a60fabf-2b3e7545fd6mr893692fac.9.1738630031410; Mon, 03 Feb 2025 16:47:11 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2b356658291sm3680495fac.46.2025.02.03.16.47.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 16:47:11 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, michal.swiatkowski@linux.intel.com, helgaas@kernel.org, horms@kernel.org, Somnath Kotur , David Wei Subject: [PATCH net-next v3 08/10] bnxt_en: Reallocate RX completion ring for TPH support Date: Mon, 3 Feb 2025 16:46:07 -0800 Message-ID: <20250204004609.1107078-9-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250204004609.1107078-1-michael.chan@broadcom.com> References: <20250204004609.1107078-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org From: Somnath Kotur In order to program the correct Steering Tag during an IRQ affinity change, we need to free/re-allocate the RX completion ring during queue_restart. If TPH is enabled, call FW to free the Rx completion ring and clear the ring entries in queue_stop(). Re-allocate it in queue_start() if TPH is enabled. Note that TPH mode is not enabled in this patch and will be enabled later in the patch series. While modifying bnxt_queue_start(), remove the unnecessary zeroing of rxr->rx_next_cons. It gets overwritten by the clone in bnxt_queue_start(). Reviewed-by: Michal Swiatkowski Signed-off-by: Somnath Kotur Signed-off-by: Michael Chan --- Cc: David Wei v3: Only free/allocate the RX cmpl ring when TPH is enabled. --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 31 +++++++++++++++++++++-- drivers/net/ethernet/broadcom/bnxt/bnxt.h | 2 ++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index c6cf575af53f..019a8433b0d6 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -7426,6 +7426,19 @@ static void bnxt_hwrm_cp_ring_free(struct bnxt *bp, ring->fw_ring_id = INVALID_HW_RING_ID; } +static void bnxt_clear_one_cp_ring(struct bnxt *bp, struct bnxt_cp_ring_info *cpr) +{ + struct bnxt_ring_struct *ring = &cpr->cp_ring_struct; + int i, size = ring->ring_mem.page_size; + + cpr->cp_raw_cons = 0; + cpr->toggle = 0; + + for (i = 0; i < bp->cp_nr_pages; i++) + if (cpr->cp_desc_ring[i]) + memset(cpr->cp_desc_ring[i], 0, size); +} + static void bnxt_hwrm_ring_free(struct bnxt *bp, bool close_path) { u32 type; @@ -15645,9 +15658,16 @@ static int bnxt_queue_start(struct net_device *dev, void *qmem, int idx) rc = bnxt_hwrm_rx_ring_alloc(bp, rxr); if (rc) return rc; + + if (bp->tph_mode) { + rc = bnxt_hwrm_cp_ring_alloc_p5(bp, rxr->rx_cpr); + if (rc) + goto err_free_hwrm_rx_ring; + } + rc = bnxt_hwrm_rx_agg_ring_alloc(bp, rxr); if (rc) - goto err_free_hwrm_rx_ring; + goto err_free_hwrm_cp_ring; bnxt_db_write(bp, &rxr->rx_db, rxr->rx_prod); if (bp->flags & BNXT_FLAG_AGG_RINGS) @@ -15672,6 +15692,9 @@ static int bnxt_queue_start(struct net_device *dev, void *qmem, int idx) return 0; +err_free_hwrm_cp_ring: + if (bp->tph_mode) + bnxt_hwrm_cp_ring_free(bp, rxr->rx_cpr); err_free_hwrm_rx_ring: bnxt_hwrm_rx_ring_free(bp, rxr, false); return rc; @@ -15696,11 +15719,15 @@ static int bnxt_queue_stop(struct net_device *dev, void *qmem, int idx) cancel_work_sync(&rxr->bnapi->cp_ring.dim.work); bnxt_hwrm_rx_ring_free(bp, rxr, false); bnxt_hwrm_rx_agg_ring_free(bp, rxr, false); - rxr->rx_next_cons = 0; page_pool_disable_direct_recycling(rxr->page_pool); if (bnxt_separate_head_pool()) page_pool_disable_direct_recycling(rxr->head_pool); + if (bp->tph_mode) { + bnxt_hwrm_cp_ring_free(bp, rxr->rx_cpr); + bnxt_clear_one_cp_ring(bp, rxr->rx_cpr); + } + memcpy(qmem, rxr, sizeof(*rxr)); bnxt_init_rx_ring_struct(bp, qmem); diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index db0be469a3db..4e20878e7714 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -2410,6 +2410,8 @@ struct bnxt { u8 max_q; u8 num_tc; + u8 tph_mode; + unsigned int current_interval; #define BNXT_TIMER_INTERVAL HZ From patchwork Tue Feb 4 00:46:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13958472 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oa1-f41.google.com (mail-oa1-f41.google.com [209.85.160.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 50CC9145A11 for ; Tue, 4 Feb 2025 00:47:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630037; cv=none; b=opDM1s/TPkJD9ka1UssMgXNYpLGy1KeSpdIYutZ1UiF794TQywqToDKALICvlH240rCg7di3zwc/faiQqNH7bUBd1Ii77lgkgad4DnuxkkZT9uMtK9cv97Q514uToVzaZ3iUNMDuOTmS++JyXiFEg5ANw/j6S3UK+HVa/C6f2II= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630037; c=relaxed/simple; bh=yr5NVaXF4WifkmHfycJ5OUi5ZYuO/tTL86mjoK412Y0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aLmaXxqs/D3ToAFvD1ugK+Htt8PjWj4QW9s6E/65WSW9T2V7KncO7jNarVqOoQJDZPAhxRFZDiaKujAbndt5m+w3T+aNwwYJKoOpvGpmY70r6Qki2Qg95oxCsZG13nHjnN3xNiEKRPsvOXqrkQsw7irk5hD0k3wZrGJewLdYqio= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=FwtC1WSX; arc=none smtp.client-ip=209.85.160.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="FwtC1WSX" Received: by mail-oa1-f41.google.com with SMTP id 586e51a60fabf-29f7b5fbc9aso1305592fac.3 for ; Mon, 03 Feb 2025 16:47:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1738630034; x=1739234834; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3RTIyK0KIR1ajEu0JkWqsIzhmuIaJw1KfFrmwDSSJ1w=; b=FwtC1WSX8N4ydE4FUqe+tXsaISMZCNUQSq4Di8SkCvJsSPxhCOSNSvK1yEZF//ZAZA CJvgM3sUMUv7CEL/0wQtcfzMMxe1MBd9WlfxIgl5xkhcwFdYhg4xXkyQIu7erEJLwWN9 Dpron5NJea/0ZFDz1qMmBq8DlFIXUv4+w/aEU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738630034; x=1739234834; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=3RTIyK0KIR1ajEu0JkWqsIzhmuIaJw1KfFrmwDSSJ1w=; b=Tep6GwblccRjlLBzpTaCpUb9PTm/PpqUQsoL54nybbGDWDG+j14hH6JjSllyrES6xk ChH5vseGgWBG1bCfNgncmyl7DLKIqIL40IZXfvrjc4Bsqw7/wN7WzltLSW4JM0b3EfuY MT8B8XnmdPSq+46FNXv7xPxiB+gAhg4xl/hu5CPnG4RPgwkiAfBdYJeF/HQZ1pUkBk5k ss/tWPo9Xw4cMmH+mzJ2nbXWmnX3TFXmFHCjR8aX4v1R4pyxJtETn6x/SNZ/zlZLLVwi q52MEUebHDnGOZV89LT40yK66IVlIqNS5wMJuUCMzKt1u32o48BquFJ20ui/j89T+9Ra 3P3A== X-Gm-Message-State: AOJu0YwBNSbq57GEsZfAq8IR/g1/DpGzkauiY04ZpqkZ6Iv/YR9X7dTi C5Alu99nrk9iWlFhbHuNlO20O0tXzVkwVfR/ldNfAHPyNvkT1WUhax4VQCsFjA== X-Gm-Gg: ASbGncvgG8umkgA5P8LuQvR7HNAazmsv0BC0DUhminNcX0Kueu2LCpfNQsSwRS9YppU EM5SHo7APvc0SdUgD+n8sIYNI+cZHlP9LgjCVZ4F3KPcZxfj39SlK9ihKaDCOUCxdWxJDjqyPWc YO1Ei2rBVd4y/afCxfvz/nJPQXYqZ6Ifh8FTZ3n5K4UJjmEfmCFt+Vu2SD63L1/veJ7YrcuhrGv 2nSdEhJ6sWnwb064moQd85shs5bF9ClSxNMhah4xJR0oiGVgl2ZiiQCUvSwxH78Qc0bBqfEe1lA UPFGPNKUh8jESMuXu6WATuK9J96+Z5B5UjFS7J0rnxIicOSbCedoiv5VELD0f6A9ptE= X-Google-Smtp-Source: AGHT+IEytnvdW1sngSIuGVrD4NFQZHENd2iweRtvuO4Ha2YZgRK4/fcBRkHGI/ulPtYyFHO9Cdl5Rg== X-Received: by 2002:a05:6871:2106:b0:29e:6096:c271 with SMTP id 586e51a60fabf-2b32eff0913mr14324616fac.9.1738630034316; Mon, 03 Feb 2025 16:47:14 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2b356658291sm3680495fac.46.2025.02.03.16.47.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 16:47:13 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, michal.swiatkowski@linux.intel.com, helgaas@kernel.org, horms@kernel.org, Somnath Kotur , Ajit Khaparde , David Wei Subject: [PATCH net-next v3 09/10] bnxt_en: Extend queue stop/start for TX rings Date: Mon, 3 Feb 2025 16:46:08 -0800 Message-ID: <20250204004609.1107078-10-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250204004609.1107078-1-michael.chan@broadcom.com> References: <20250204004609.1107078-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org From: Somnath Kotur In order to use queue_stop/queue_start to support the new Steering Tags, we need to free the TX ring and TX completion ring if it is a combined channel with TX/RX sharing the same NAPI. Otherwise TX completions will not have the updated Steering Tag. If TPH is not enabled, we just stop the TX ring without freeing the TX/TX cmpl rings. With that we can now add napi_disable() and napi_enable() during queue_stop()/ queue_start(). This will guarantee that NAPI will stop processing the completion entries in case there are additional pending entries in the completion rings after queue_stop(). There could be some NQEs sitting unprocessed while NAPI is disabled thereby leaving the NQ unarmed. Explicitly re-arm the NQ after napi_enable() in queue start so that NAPI will resume properly. Error handling in bnxt_queue_start() requires a reset. If a TX ring cannot be allocated or initialized properly, it will cause TX timeout. The reset will also free any partially allocated rings. Reviewed-by: Ajit Khaparde Reviewed-by: Michal Swiatkowski Signed-off-by: Somnath Kotur Signed-off-by: Michael Chan --- Cc: David Wei v3: Fix build bot warning. Only free TX/TX cmpl rings when TPH is enabled. v2: Add reset for error handling in queue_start(). Fix compile error. Discussion about adding napi_disable()/napi_enable(): https://lore.kernel.org/netdev/5336d624-8d8b-40a6-b732-b020e4a119a2@davidwei.uk/#t --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 132 ++++++++++++++++++++-- 1 file changed, 122 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 019a8433b0d6..fee9baff9e5a 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -7368,6 +7368,22 @@ static int hwrm_ring_free_send_msg(struct bnxt *bp, return 0; } +static void bnxt_hwrm_tx_ring_free(struct bnxt *bp, struct bnxt_tx_ring_info *txr, + bool close_path) +{ + struct bnxt_ring_struct *ring = &txr->tx_ring_struct; + u32 cmpl_ring_id; + + if (ring->fw_ring_id == INVALID_HW_RING_ID) + return; + + cmpl_ring_id = close_path ? bnxt_cp_ring_for_tx(bp, txr) : + INVALID_HW_RING_ID; + hwrm_ring_free_send_msg(bp, ring, RING_FREE_REQ_RING_TYPE_TX, + cmpl_ring_id); + ring->fw_ring_id = INVALID_HW_RING_ID; +} + static void bnxt_hwrm_rx_ring_free(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, bool close_path) @@ -11274,6 +11290,75 @@ int bnxt_reserve_rings(struct bnxt *bp, bool irq_re_init) return 0; } +static void bnxt_tx_queue_stop(struct bnxt *bp, int idx) +{ + struct bnxt_tx_ring_info *txr; + struct netdev_queue *txq; + struct bnxt_napi *bnapi; + int i; + + bnapi = bp->bnapi[idx]; + bnxt_for_each_napi_tx(i, bnapi, txr) { + WRITE_ONCE(txr->dev_state, BNXT_DEV_STATE_CLOSING); + synchronize_net(); + + if (!(bnapi->flags & BNXT_NAPI_FLAG_XDP)) { + txq = netdev_get_tx_queue(bp->dev, txr->txq_index); + if (txq) { + __netif_tx_lock_bh(txq); + netif_tx_stop_queue(txq); + __netif_tx_unlock_bh(txq); + } + } + + if (!bp->tph_mode) + continue; + + bnxt_hwrm_tx_ring_free(bp, txr, true); + bnxt_hwrm_cp_ring_free(bp, txr->tx_cpr); + bnxt_free_one_tx_ring_skbs(bp, txr, txr->txq_index); + bnxt_clear_one_cp_ring(bp, txr->tx_cpr); + } +} + +static int bnxt_tx_queue_start(struct bnxt *bp, int idx) +{ + struct bnxt_tx_ring_info *txr; + struct netdev_queue *txq; + struct bnxt_napi *bnapi; + int rc, i; + + bnapi = bp->bnapi[idx]; + bnxt_for_each_napi_tx(i, bnapi, txr) { + if (!bp->tph_mode) + goto start_tx; + + rc = bnxt_hwrm_cp_ring_alloc_p5(bp, txr->tx_cpr); + if (rc) + return rc; + + rc = bnxt_hwrm_tx_ring_alloc(bp, txr, false); + if (rc) + return rc; + + txr->tx_prod = 0; + txr->tx_cons = 0; + txr->tx_hw_cons = 0; +start_tx: + WRITE_ONCE(txr->dev_state, 0); + synchronize_net(); + + if (bnapi->flags & BNXT_NAPI_FLAG_XDP) + continue; + + txq = netdev_get_tx_queue(bp->dev, txr->txq_index); + if (txq) + netif_tx_start_queue(txq); + } + + return 0; +} + static void bnxt_free_irq(struct bnxt *bp) { struct bnxt_irq *irq; @@ -15638,6 +15723,7 @@ static int bnxt_queue_start(struct net_device *dev, void *qmem, int idx) struct bnxt_rx_ring_info *rxr, *clone; struct bnxt_cp_ring_info *cpr; struct bnxt_vnic_info *vnic; + struct bnxt_napi *bnapi; int i, rc; rxr = &bp->rx_ring[idx]; @@ -15655,27 +15741,42 @@ static int bnxt_queue_start(struct net_device *dev, void *qmem, int idx) bnxt_copy_rx_ring(bp, rxr, clone); + bnapi = rxr->bnapi; + cpr = &bnapi->cp_ring; rc = bnxt_hwrm_rx_ring_alloc(bp, rxr); if (rc) - return rc; + goto err_reset_rx; if (bp->tph_mode) { rc = bnxt_hwrm_cp_ring_alloc_p5(bp, rxr->rx_cpr); if (rc) - goto err_free_hwrm_rx_ring; + goto err_reset_rx; } rc = bnxt_hwrm_rx_agg_ring_alloc(bp, rxr); if (rc) - goto err_free_hwrm_cp_ring; + goto err_reset_rx; bnxt_db_write(bp, &rxr->rx_db, rxr->rx_prod); if (bp->flags & BNXT_FLAG_AGG_RINGS) bnxt_db_write(bp, &rxr->rx_agg_db, rxr->rx_agg_prod); - cpr = &rxr->bnapi->cp_ring; cpr->sw_stats->rx.rx_resets++; + if (bp->flags & BNXT_FLAG_SHARED_RINGS) { + cpr->sw_stats->tx.tx_resets++; + rc = bnxt_tx_queue_start(bp, idx); + if (rc) { + netdev_warn(bp->dev, + "tx queue restart failed: rc=%d\n", rc); + bnapi->tx_fault = 1; + goto err_reset; + } + } + + napi_enable(&bnapi->napi); + bnxt_db_nq_arm(bp, &cpr->cp_db, cpr->cp_raw_cons); + for (i = 0; i <= BNXT_VNIC_NTUPLE; i++) { vnic = &bp->vnic_info[i]; @@ -15692,11 +15793,12 @@ static int bnxt_queue_start(struct net_device *dev, void *qmem, int idx) return 0; -err_free_hwrm_cp_ring: - if (bp->tph_mode) - bnxt_hwrm_cp_ring_free(bp, rxr->rx_cpr); -err_free_hwrm_rx_ring: - bnxt_hwrm_rx_ring_free(bp, rxr, false); +err_reset_rx: + rxr->bnapi->in_reset = true; +err_reset: + napi_enable(&bnapi->napi); + bnxt_db_nq_arm(bp, &cpr->cp_db, cpr->cp_raw_cons); + bnxt_reset_task(bp, true); return rc; } @@ -15704,7 +15806,9 @@ static int bnxt_queue_stop(struct net_device *dev, void *qmem, int idx) { struct bnxt *bp = netdev_priv(dev); struct bnxt_rx_ring_info *rxr; + struct bnxt_cp_ring_info *cpr; struct bnxt_vnic_info *vnic; + struct bnxt_napi *bnapi; int i; for (i = 0; i <= BNXT_VNIC_NTUPLE; i++) { @@ -15716,17 +15820,25 @@ static int bnxt_queue_stop(struct net_device *dev, void *qmem, int idx) /* Make sure NAPI sees that the VNIC is disabled */ synchronize_net(); rxr = &bp->rx_ring[idx]; - cancel_work_sync(&rxr->bnapi->cp_ring.dim.work); + bnapi = rxr->bnapi; + cpr = &bnapi->cp_ring; + cancel_work_sync(&cpr->dim.work); bnxt_hwrm_rx_ring_free(bp, rxr, false); bnxt_hwrm_rx_agg_ring_free(bp, rxr, false); page_pool_disable_direct_recycling(rxr->page_pool); if (bnxt_separate_head_pool()) page_pool_disable_direct_recycling(rxr->head_pool); + if (bp->flags & BNXT_FLAG_SHARED_RINGS) + bnxt_tx_queue_stop(bp, idx); + + napi_disable(&bnapi->napi); + if (bp->tph_mode) { bnxt_hwrm_cp_ring_free(bp, rxr->rx_cpr); bnxt_clear_one_cp_ring(bp, rxr->rx_cpr); } + bnxt_db_nq(bp, &cpr->cp_db, cpr->cp_raw_cons); memcpy(qmem, rxr, sizeof(*rxr)); bnxt_init_rx_ring_struct(bp, qmem); From patchwork Tue Feb 4 00:46:09 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13958473 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oa1-f45.google.com (mail-oa1-f45.google.com [209.85.160.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 656F07081A for ; Tue, 4 Feb 2025 00:47:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.160.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630040; cv=none; b=b1OFG29SAKP5mI2FOSUSJWUL0ZIJPJL33jBVqMwslycY2m47COyq0ohxvUeMK/nAPn1Z8E/PM69yUxYpjHhFhWeaX4NLeOpYajwtfm7QKUoTR8Aibr5Nkye1rCELJNB5mPZqtUD59MzdYNm+6VOGBXWbFMUOhxx901vxPLDsG6o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738630040; c=relaxed/simple; bh=87pEfRTnKV96xeMpSy0KROxiluXAc98traQJu9s7dlw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rqeq0CbSSQBaJjaK78dVjjbqEaoiZ0PJwQwtIHTHYUHX3S1s6ePKeO99bxxeOOCM4IqZ/R43QPF/K2NrJ1YAew8jaqCrZIJDSP1UhFE0GlVdrC+odaEQb9sC4wdAg5nHQl/WzhjIBtZplCOt5acvNdIAf8N2px229y54qbL60zk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com; spf=fail smtp.mailfrom=broadcom.com; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b=dim4ixqC; arc=none smtp.client-ip=209.85.160.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=broadcom.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=broadcom.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=broadcom.com header.i=@broadcom.com header.b="dim4ixqC" Received: by mail-oa1-f45.google.com with SMTP id 586e51a60fabf-2a383315d96so2395481fac.3 for ; Mon, 03 Feb 2025 16:47:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1738630037; x=1739234837; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=k87Da2ACADeCGaxRCBYzKnh8Kp1OiWpm7bvX4/oJ6Ws=; b=dim4ixqCWU19wQOISFX1ptqmqMf1vj3WwC5+0tp0rUOF7pIEoz0CqSzNCU/Xvn7vIG FUEY5SGjlcmuJq+4sGjStqvLtn3E8nmxp7NuJW0/xMJv3Y6leHH/pa3ak+4la0w+nMHj sV/SS+yuNGnjFHKO9nFmiD0+7ERR9MlRbxjJE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1738630037; x=1739234837; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=k87Da2ACADeCGaxRCBYzKnh8Kp1OiWpm7bvX4/oJ6Ws=; b=lVT6SoZP/WyAl+QagSiLnpJGqpC8xezqD6y7kt1wbwAqwRcdnzjTh9hAIRVrIcTJFZ ljjGG1C695DbT270dUf3iz1Gq/SUYJp0/6ZZSVUD1/ZUttKdS6C4khmE+0nQTw3PsQMm 3wnpA65Mwxq67IEDWe9SRXo2Fez+BPWrjY6IXE009+LJ1tJow3W963cLYdW31Pd6zUeU DZuTgFrow+qWqvB9gDX9mjftvwWDYc6hBchcz/kinPTtYmnurX6dKvxsKM4sQPzaTIjP 3XwyOHSMjXJgLdvDXXeSyj/y21p8l7mVcQFSsGn8wuZOdge2y/9Ut1xLKqbAVZwchlHu tQhg== X-Gm-Message-State: AOJu0Yzi2jWzEkp7+vE/ApVJwsCJLNKDcktCu1NB+10Mls4uh27up9nZ smc7bQ0ovukzMP69XBqSK8RBzPPLzoMwVoNSSqXtXB7JaY4uQYcwg2F3CZy3QA== X-Gm-Gg: ASbGnctVt3cybLzLPn5g6wpwFGgjACKZoPuy13kIkZRE6dyTI6RBhZsR9XlRnG8D/R9 3+83iKtu8RuvCluj0jrQ1UbeZ97pweacyrbEoeasB7VWJXSlpuqCzGKwzkrHYPGgATswRLuZVli zq0WAXvrbLtUtw7ADoKTU3dZJLVntm/2sHBqT+v3VW8TqT2vrcPOE6pTL2yAGaaJRFGzlhIH7R2 RxcT9+TuXj0QUkA+3m/4pC5kTuKe15IzY4EJiVAez25AI0lm+b0G7w17NzQTjtVCfgW3FY2npg6 ovc86aeyL7y9nk6W61XqPXDUYBrRDIqTVuZ9/hA5j6iwPVQvz1Nk2y11ktrrjVbevVE= X-Google-Smtp-Source: AGHT+IG05ljVsBMtMiEBNd4RZyd6jEVVfQnza27egg8Amh+urtd9JBJp5GxIw+Oyr6/JdzLlwdtTvg== X-Received: by 2002:a05:6871:a516:b0:29e:460d:f74a with SMTP id 586e51a60fabf-2b32f100b04mr14248697fac.3.1738630037313; Mon, 03 Feb 2025 16:47:17 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2b356658291sm3680495fac.46.2025.02.03.16.47.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 03 Feb 2025 16:47:16 -0800 (PST) From: Michael Chan To: davem@davemloft.net Cc: netdev@vger.kernel.org, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, andrew+netdev@lunn.ch, pavan.chebbi@broadcom.com, andrew.gospodarek@broadcom.com, michal.swiatkowski@linux.intel.com, helgaas@kernel.org, horms@kernel.org, Manoj Panicker , Somnath Kotur , Wei Huang , Ajit Khaparde Subject: [PATCH net-next v3 10/10] bnxt_en: Add TPH support in BNXT driver Date: Mon, 3 Feb 2025 16:46:09 -0800 Message-ID: <20250204004609.1107078-11-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250204004609.1107078-1-michael.chan@broadcom.com> References: <20250204004609.1107078-1-michael.chan@broadcom.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Patchwork-Delegate: kuba@kernel.org From: Manoj Panicker Add TPH support to the Broadcom BNXT device driver. This allows the driver to utilize TPH functions for retrieving and configuring Steering Tags when changing interrupt affinity. With compatible NIC firmware, network traffic will be tagged correctly with Steering Tags, resulting in significant memory bandwidth savings and other advantages as demonstrated by real network benchmarks on TPH-capable platforms. Co-developed-by: Somnath Kotur Signed-off-by: Somnath Kotur Co-developed-by: Wei Huang Signed-off-by: Wei Huang Signed-off-by: Manoj Panicker Reviewed-by: Ajit Khaparde Reviewed-by: Andy Gospodarek Signed-off-by: Michael Chan --- Cc: Bjorn Helgaas v3: Add MODULE_IMPORT_NS("NETDEV_INTERNAL") Previous driver series fixing rtnl_lock and empty release function: https://lore.kernel.org/netdev/20241115200412.1340286-1-wei.huang2@amd.com/ v5 of the PCI series using netdev_rx_queue_restart(): https://lore.kernel.org/netdev/20240916205103.3882081-5-wei.huang2@amd.com/ v1 of the PCI series using open/close: https://lore.kernel.org/netdev/20240509162741.1937586-9-wei.huang2@amd.com/ --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 106 ++++++++++++++++++++++ drivers/net/ethernet/broadcom/bnxt/bnxt.h | 5 + 2 files changed, 111 insertions(+) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index fee9baff9e5a..2b7df91840fd 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -55,6 +55,8 @@ #include #include #include +#include +#include #include "bnxt_hsi.h" #include "bnxt.h" @@ -76,6 +78,7 @@ #define BNXT_DEF_MSG_ENABLE (NETIF_MSG_DRV | NETIF_MSG_HW | \ NETIF_MSG_TX_ERR) +MODULE_IMPORT_NS("NETDEV_INTERNAL"); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("Broadcom NetXtreme network driver"); @@ -11359,6 +11362,83 @@ static int bnxt_tx_queue_start(struct bnxt *bp, int idx) return 0; } +static void bnxt_irq_affinity_notify(struct irq_affinity_notify *notify, + const cpumask_t *mask) +{ + struct bnxt_irq *irq; + u16 tag; + int err; + + irq = container_of(notify, struct bnxt_irq, affinity_notify); + + if (!irq->bp->tph_mode) + return; + + cpumask_copy(irq->cpu_mask, mask); + + if (irq->ring_nr >= irq->bp->rx_nr_rings) + return; + + if (pcie_tph_get_cpu_st(irq->bp->pdev, TPH_MEM_TYPE_VM, + cpumask_first(irq->cpu_mask), &tag)) + return; + + if (pcie_tph_set_st_entry(irq->bp->pdev, irq->msix_nr, tag)) + return; + + rtnl_lock(); + if (netif_running(irq->bp->dev)) { + err = netdev_rx_queue_restart(irq->bp->dev, irq->ring_nr); + if (err) + netdev_err(irq->bp->dev, + "RX queue restart failed: err=%d\n", err); + } + rtnl_unlock(); +} + +static void bnxt_irq_affinity_release(struct kref *ref) +{ + struct irq_affinity_notify *notify = + container_of(ref, struct irq_affinity_notify, kref); + struct bnxt_irq *irq; + + irq = container_of(notify, struct bnxt_irq, affinity_notify); + + if (!irq->bp->tph_mode) + return; + + if (pcie_tph_set_st_entry(irq->bp->pdev, irq->msix_nr, 0)) { + netdev_err(irq->bp->dev, + "Setting ST=0 for MSIX entry %d failed\n", + irq->msix_nr); + return; + } +} + +static void bnxt_release_irq_notifier(struct bnxt_irq *irq) +{ + irq_set_affinity_notifier(irq->vector, NULL); +} + +static void bnxt_register_irq_notifier(struct bnxt *bp, struct bnxt_irq *irq) +{ + struct irq_affinity_notify *notify; + + irq->bp = bp; + + /* Nothing to do if TPH is not enabled */ + if (!bp->tph_mode) + return; + + /* Register IRQ affinity notifier */ + notify = &irq->affinity_notify; + notify->irq = irq->vector; + notify->notify = bnxt_irq_affinity_notify; + notify->release = bnxt_irq_affinity_release; + + irq_set_affinity_notifier(irq->vector, notify); +} + static void bnxt_free_irq(struct bnxt *bp) { struct bnxt_irq *irq; @@ -11381,11 +11461,18 @@ static void bnxt_free_irq(struct bnxt *bp) free_cpumask_var(irq->cpu_mask); irq->have_cpumask = 0; } + + bnxt_release_irq_notifier(irq); + free_irq(irq->vector, bp->bnapi[i]); } irq->requested = 0; } + + /* Disable TPH support */ + pcie_disable_tph(bp->pdev); + bp->tph_mode = 0; } static int bnxt_request_irq(struct bnxt *bp) @@ -11405,6 +11492,12 @@ static int bnxt_request_irq(struct bnxt *bp) #ifdef CONFIG_RFS_ACCEL rmap = bp->dev->rx_cpu_rmap; #endif + + /* Enable TPH support as part of IRQ request */ + rc = pcie_enable_tph(bp->pdev, PCI_TPH_ST_IV_MODE); + if (!rc) + bp->tph_mode = PCI_TPH_ST_IV_MODE; + for (i = 0, j = 0; i < bp->cp_nr_rings; i++) { int map_idx = bnxt_cp_num_to_irq_num(bp, i); struct bnxt_irq *irq = &bp->irq_tbl[map_idx]; @@ -11428,8 +11521,11 @@ static int bnxt_request_irq(struct bnxt *bp) if (zalloc_cpumask_var(&irq->cpu_mask, GFP_KERNEL)) { int numa_node = dev_to_node(&bp->pdev->dev); + u16 tag; irq->have_cpumask = 1; + irq->msix_nr = map_idx; + irq->ring_nr = i; cpumask_set_cpu(cpumask_local_spread(i, numa_node), irq->cpu_mask); rc = irq_update_affinity_hint(irq->vector, irq->cpu_mask); @@ -11439,6 +11535,16 @@ static int bnxt_request_irq(struct bnxt *bp) irq->vector); break; } + + bnxt_register_irq_notifier(bp, irq); + + /* Init ST table entry */ + if (pcie_tph_get_cpu_st(irq->bp->pdev, TPH_MEM_TYPE_VM, + cpumask_first(irq->cpu_mask), + &tag)) + continue; + + pcie_tph_set_st_entry(irq->bp->pdev, irq->msix_nr, tag); } } return rc; diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index 4e20878e7714..e85b5ce94f58 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -1234,6 +1234,11 @@ struct bnxt_irq { u8 have_cpumask:1; char name[IFNAMSIZ + BNXT_IRQ_NAME_EXTRA]; cpumask_var_t cpu_mask; + + struct bnxt *bp; + int msix_nr; + int ring_nr; + struct irq_affinity_notify affinity_notify; }; #define HWRM_RING_ALLOC_TX 0x1