From patchwork Sat Feb 8 20:29: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: 13966496 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-ot1-f41.google.com (mail-ot1-f41.google.com [209.85.210.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 B5F3419DF6A for ; Sat, 8 Feb 2025 20:29:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046599; cv=none; b=flXUvRMZoffp/r00hbee746dOOjuk7e4KFtGy+MyD8/GPJXWNZCVUa2CiWR4E/gPcFnaDwT2y7XXGgiCTml99skPwelNVqOoB5byneC+0CXvqAKvdLFOJ5rdvznqxyt9HDOaLfaAzFQ7Mdm9KE3aO/QhyXrEk0RSrVuWmEc+38s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046599; c=relaxed/simple; bh=IkC5DrSpwBzYVtxuuXtzRppK51yx82yjGQY9KwH7jcs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mWXVqj3YQfw+A4f1W5ZagLN2Le+MORfbP2t1empu4B8E2XwVSO1qPyTn2kdDVLd30Fi1t+x1iDhtcR+1MBKw/14NatxUkdXJkAwMxKSOUIiPm16vSvU0aNPfvQc7LLIxeaD1f2uSJRh0avVdh3648ktq6fiup23aa4cLFJXST1M= 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=CyCFTUw4; arc=none smtp.client-ip=209.85.210.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="CyCFTUw4" Received: by mail-ot1-f41.google.com with SMTP id 46e09a7af769-726d2529db4so95910a34.2 for ; Sat, 08 Feb 2025 12:29:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1739046597; x=1739651397; 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=Xs0HqGMlTz4yprx8RCINcEsYohiRoMzfTFTjyXVzrPs=; b=CyCFTUw4pWqsY/rrTt73mocd9CFoDkaKbkBcACUZG4OeaUvPwkBmzn8jQq/1jGwqEH XoCcVG9D9NFtU0ZZFfcbJ+ZgFH3aJG+wb6gChHl1pV0BiZRR7L7SK4aWqFTcODdK2Hod kt6IzTigsD3pkHuJinSc9tE+m9q5m5V1kMm6g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739046597; x=1739651397; 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=Xs0HqGMlTz4yprx8RCINcEsYohiRoMzfTFTjyXVzrPs=; b=fUJDBWUJJU6MvVbEJIz9PB5uKrF6ZYQlimD4gydqc/KBUapbnNuEwnv329Arq9Hwta C98OwEKm9ELnbJoY9EX10dyVCyjbfi5zvbdFdZrcZ1uwyZhPb2HJPspf6IuTbe3K28Zp HYAePRzqoMoypRnkxZH1kD1Nur1T5niApvnsSPx35I9mDrecgd16Fc0uigFNqwjSBsrv wXy8bn/aAym0kTWinwYUTNBtxI8HKuOn8EMoUzPPK8u+QQMhTGpAxtTwBgEkC0JXJem6 70zO8hDOncH8NfxORyxiuo4YFwSaQvgVs5SzCP8FzwXz1JyMD8l5nR8Ka2QmUnMhLFx4 mH1w== X-Gm-Message-State: AOJu0YzQW95olMnh6G9MnDFRrxO6CMN2iOnHONwXtIDSJUdnbAulo5ti J1AEJ6ofdEgehWl8wNS8vl8v8Z1TYcrqq6Ojgkqo/BZkI4nFkiUqD6NrnI4Gkw== X-Gm-Gg: ASbGncutVTwoes4LPr5QqdIepYr+6Ouwd3D15RiNCaFubb9MuJiIwK1y50AvsvZYD+4 /Z95dGVeKm9ASlX+8f8/z2g3FNVcCZHJo7ZKyMeq2fwdZ/EOWHZXsYdOlbruof9035+SDoSyiz1 M2VLmNQT++E26SjR+NslKusd2DppLl/pEUjJy5dFc3sgEK5p9GfPJ8dBGMatIoptCcdUmENgLi8 fH/E4UV9VbmnH+Aa5xssY00blrftNe3n9jHmWyILNLGhuMVhSiO8XdnsKkLUqLWttVfoi6rMPG5 z4ftbZkuqRH/vM7axLkTPD0mq9BVnEDJCUVfA+nf6cDRp4Lxu1mq1qKIE4Nx69ORzfk= X-Google-Smtp-Source: AGHT+IG2sNlgC4BsPKPUfKriHNFQU5OLYQQIWLQnxHPCEmYFj5QkkThr/4aldq4t1yOQPnYDYpSj6A== X-Received: by 2002:a05:6830:6990:b0:71e:1ca5:fc93 with SMTP id 46e09a7af769-726b87ffe2amr5350716a34.16.1739046596729; Sat, 08 Feb 2025 12:29:56 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-726af932f78sm1564130a34.18.2025.02.08.12.29.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2025 12:29: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, Somnath Kotur Subject: [PATCH net-next v4 01/10] bnxt_en: Set NPAR 1.2 support when registering with firmware Date: Sat, 8 Feb 2025 12:29:07 -0800 Message-ID: <20250208202916.1391614-2-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250208202916.1391614-1-michael.chan@broadcom.com> References: <20250208202916.1391614-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 (Network interface card partitioning)[1] 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 [1] https://techdocs.broadcom.com/us/en/storage-and-ethernet-connectivity/ethernet-nic-controllers/bcm957xxx/adapters/introduction/features/network-partitioning-npar.html Reviewed-by: Somnath Kotur Reviewed-by: Michal Swiatkowski Signed-off-by: Michael Chan --- v4: Fix typo in NPAR and improve the description of NPAR --- 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 Sat Feb 8 20:29: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: 13966497 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-ot1-f44.google.com (mail-ot1-f44.google.com [209.85.210.44]) (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 A0A881F3B91 for ; Sat, 8 Feb 2025 20:30:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046602; cv=none; b=ooh+7xuu6RAVKQdsFsyFAJvwn0PEN5abD4A3LKOfZ1QRJ8hwI8j+m68T7+38H0yku1FurF+Jh5NiwFm69ed8IuJ8ILOh2Lu3LoLY7LiYGsHwgb5zoFwzrLelpVXl6Acvwk15n7BCRLYAVKj1gbBMk+VbjHQMTZ0OJ28Uht1tYv0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046602; c=relaxed/simple; bh=798C9bVl/2f9vmMwMenfvnnbRYCzOvXYML/rPtxBmWQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=t6s7uS7b3m0kM4v6XrhKILaa8RQUSaR5zmz1Hpn/ptQhWmVHi/SxdGtBeim8GL5KmEQ5sBQ+HW1C+dCXvKBipuAe+sdSqYufzBbdKXF3LXQEZHiPBgbJfeaLpwv4IVxG9lCrgFoLwYKcYYcYRZ3LH1bcavZ62X3FFrBqVB8JPzU= 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=S1ti5P0o; arc=none smtp.client-ip=209.85.210.44 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="S1ti5P0o" Received: by mail-ot1-f44.google.com with SMTP id 46e09a7af769-71e3005916aso998795a34.2 for ; Sat, 08 Feb 2025 12:30:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1739046599; x=1739651399; 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=S1ti5P0oUIBnj0uu+ErJho5Ey+7Pm9QxZ01OoVQLCdhRlSsB4ob35WInPfAxh7Hczx sOJRrZsCjSBHs9tlkGkNB74pnl1LXU/x3ShCbO789ZuwGScHWGYjxBQ5sqnO3OuSgPoD TnKeWpJl2op2Xd3fcsHLPCZyYrYRY5nEPqumg= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739046599; x=1739651399; 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=u54fEIcg/CBe092jdvUDhesDBemVDxmXEW3BBrA/sMJqCynrqvB0bwdxChVK3vbuqL NbbA6I79T+WqTqMplMfARO91rAbx7CtLTiNDz5MBCYxGerVXIOMVfstuEnvdPAoKWcyW 2LqTC8W3r5umyCkImOchavb9pJgMEgvu2gVJelMobhhxBNpt3Z4aX7jCzdcaGP6d4mNo KsfX9HFjqgVaLHOfomYoP80JxpAzTQvW6LtQKoM3Yz9jVqJ4PafUiDZxvcMQNHRhrZcc UhVPe9BV0PFuk+PfyBoWiXFCoRcFNt5w+au4r+HIGkVy8j7I3IpIlYzqvdxRqMaPDsBf S5+A== X-Gm-Message-State: AOJu0YwmGJS57XUXFpXoEymacnHM7OvUESGUet63hpRI0XJYXXjYteEl sr8kyRzoo1WSL8E2K9QBZEX6NOV2PcTR12ZJwHRSDjI59gPjA3EHq08Ry8Plww== X-Gm-Gg: ASbGnctIXKkWXYZY2fSc8z6v4k6NohbTsYkOaIyBOE8GVi9DS0259T3MAdUSpoMk6zb epgsQ2NCfAveVadtVH12rPy2O9JiJPbLo+fGSPtdW51RHHC2S1oyYoMXjrYrCFOxZtDot2+KbCX lnacTvLigK+zAAmq5/kTurOGM3QqmE6VQaLlD2wjN1J1uFRuoTJEkI7rehUIZJGmmSQN9i5n7Xy BdsxhdUSuSxpi4URwDke1FZHuUAEETd0BGkCwtNcSCQq20Fl1K9r5W6dtBsUF0CVf9LZfOG5Y4k fBkzLlCGxSwTYF7ELU5fhYhzKYoxA9sjxkjH8xuR3wOv+fGQNhmjpUHZsWBKt3D2qXc= X-Google-Smtp-Source: AGHT+IE4NfZA6NAcqoYne0N/GcL1VPzwYZRaYjvta96lgXxQI6aIMEsHK4zYElH2emNlaXbx/uhDhg== X-Received: by 2002:a05:6830:374a:b0:71d:5f7d:148e with SMTP id 46e09a7af769-726b881a901mr6102354a34.8.1739046599652; Sat, 08 Feb 2025 12:29:59 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-726af932f78sm1564130a34.18.2025.02.08.12.29.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2025 12:29:58 -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 v4 02/10] bnxt_en: Refactor completion ring allocation logic for P5_PLUS chips Date: Sat, 8 Feb 2025 12:29:08 -0800 Message-ID: <20250208202916.1391614-3-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250208202916.1391614-1-michael.chan@broadcom.com> References: <20250208202916.1391614-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 Sat Feb 8 20:29: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: 13966498 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-ot1-f48.google.com (mail-ot1-f48.google.com [209.85.210.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 9260C1F3BAF for ; Sat, 8 Feb 2025 20:30:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046604; cv=none; b=TyenBwVz87V23cAEWPe7DvQr5uNLALd6REd8olJnaMy3NoRQgGB9nUzEnoJR5q18M3w6AUyV/6G6N8Bt/Fn66BLQCoT4aMizs3/MGh2D8/aVEcnd1CkogeY00aJTUckjCvjNf+9CiHMT8A41CFI9iULa8Tqx5Nv3X/OSrk5QCLA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046604; c=relaxed/simple; bh=N4tPBq96MNEhuP9E/BsZZBcc9KAk6IUhpymzyYeQMxk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gQNinoBlGhvsdzEZkMkspZkzyo8Rvk6kaEzI7OT+HupMLXAzwXpq53mVpbxEi+rNyERP1c1bVKDHTzZLzWS8IFU8vu7UzzjFqGTbEVbxbYKKDF5IG5WfDzRbq7p2npZVJNC2Lo3k9rxbWN5f7vs/Bv6+PSCGh12Kxux7Pt7QprI= 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=SmbL2bA8; arc=none smtp.client-ip=209.85.210.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="SmbL2bA8" Received: by mail-ot1-f48.google.com with SMTP id 46e09a7af769-71deb3745easo906350a34.3 for ; Sat, 08 Feb 2025 12:30:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1739046601; x=1739651401; 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=SmbL2bA87dBD6OUAYW5NXqc0koxaYH6PJA7ARJdbyGIz6uY6g8qv4+gd2DvkT1sffh rxhjRndgnshCVmPD5qPIrwCMUCuB92YSoHm00eBy2m4VM92p1WAoEWjgsMcfHE4ab1A7 GH6YgJC2cw3jRp5fAkXTRPGhBDysdlwg9Zdo0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739046601; x=1739651401; 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=JTQFPREq3va3tWhdGDJUm6QgeWb1oWOyTvNM3qsB9jA8nXM+j4pQyOz8gFXA4RXh6e Be/pKb3OUiC7AwSeVw29XkzUTDFz4wDwq3qO7iqNRiJjRMja8oziZgw/5g8pa0r9kyM9 RZ4DALTSVYN+hD8y8dBoC3jSgQM0bAZeQQ4HvE+TPuzuQeAsJnC9KA5bApvaIgatYkUO aZVo2Ys0Y4zS2A39Zn1y0IRBB1AYXC2/JZcFD40aRc3SERwogZrPQWwBf1Quh5QLpWzG qz8jLPRRCJFk+lCNDU5psTVWEuI/c05oJtYDCh/WoWXsps5tws60pKB0ro3KUXB1ri+z H0fA== X-Gm-Message-State: AOJu0YyKyJGHHsAXa3NxgGIuziuKb84SwbAfpf5cxE6g6y67JxxPGOXm jMPhT5cjsaEcvXn4zbINtIHqzppPQJp4gZKsXdPLfth85B0Hk+Ru4Jao+TEImA== X-Gm-Gg: ASbGnctCbd7r/tbvUTX+5dLoHQ5xdZifHbPGUKTNgnosiKih6TEBU9koQxr20cCW7Wl A4pO5loaIqDUnLsIXJVy4RCG5W+cW8BLimCSaDY2465D3dMOdxKANZ9Bv6qXS60xatQUl/zQc+Z TbUqumJ2OpQ3jM8lLSLiC9EA/QMgZCxjUpJK+77UR7ul4IROfA+xAPbP5ahDglLzV1OBslLiWrb /kMzTzvcbIOzMpQlB9X0SCTkUDXLdxyAvqm/klxVirhJMWZC/+Py92igED6XtPXh8esU6bJWf9I JEAJQLIj4C9LhjB+12YTA45tuQDIhiCip1pe11b6zBkIpk1KdUn7S1lczgHy7cNPotA= X-Google-Smtp-Source: AGHT+IFAr6BjcU2flKbUBUPzgkN39YLI6I4nRXX7BOOANpaZJhZbC5lWcOD6RaKh1UN6tgSKTmufGg== X-Received: by 2002:a05:6830:2aa2:b0:71e:155:9bf with SMTP id 46e09a7af769-726b88ad3ffmr5281965a34.25.1739046601641; Sat, 08 Feb 2025 12:30:01 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-726af932f78sm1564130a34.18.2025.02.08.12.29.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2025 12:30: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, Ajit Khaparde Subject: [PATCH net-next v4 03/10] bnxt_en: Refactor TX ring allocation logic Date: Sat, 8 Feb 2025 12:29:09 -0800 Message-ID: <20250208202916.1391614-4-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250208202916.1391614-1-michael.chan@broadcom.com> References: <20250208202916.1391614-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 Sat Feb 8 20:29:10 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13966499 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-ot1-f45.google.com (mail-ot1-f45.google.com [209.85.210.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 B3CCE22DFE3 for ; Sat, 8 Feb 2025 20:30:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046606; cv=none; b=Y4p2INUPyVpxZHx0GSJzzfbmLbKDcFylpGnrvjmViVy9khDP1Za8fhUPN+OmjADBNQvKREWibq5bZ5sru0ThqggdLRJZZBx4Iv9jEmFpLqed4bf2oKTLAfiWFAQzrQ53clzd8iVlWWgH2vjZaqqea1mlMw+P2BaBWT9mFixp8/s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046606; c=relaxed/simple; bh=3Wv6fRui6JUppkVHVPDhuyoEourXEdFIz2Ar68Mhcgo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZxumCYe8eet+vddgqjkV4PL6h556ml1DtPuxAB+pcOVfV9Ev8ZXwvv0Pxm7BaDqQNJRg1NVmIw9JRISDzLiHzxMCHYyl64O3smzsXj6FhbSkIAKuUA/XxVbIMeQP9db8eV9+ym0Ng9uqhhYpBV02EFcOrIPkTpsZAMXXGjGysIA= 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=Pv6ePcn1; arc=none smtp.client-ip=209.85.210.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="Pv6ePcn1" Received: by mail-ot1-f45.google.com with SMTP id 46e09a7af769-71e2aa8d5e3so1903046a34.2 for ; Sat, 08 Feb 2025 12:30:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1739046604; x=1739651404; 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=Pv6ePcn18QvHBQb4tc75AvJdQCpxXBBa8cdVCdvyyjo9vx7Hhp/F+u5DDYm3oMX4aw blJnIc7G4ltFgvnERAGT99kXlAubAf/yGVpRHOFjJHafFg7IOBrUjUmWGF6sSHWk/pdm GsOXa5/SGzIDNhiJVi/RFZTlqfz3CV80+/i/g= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739046604; x=1739651404; 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=HUW2QfrBe/9SFoZElt70kZj1NRInmEZuJ05GpaJIMycMyUyMB7TW4hi8fsT/sXEOOX 73YLIarNrXASHPprx/D6CPyo1lHhFnYevWJE7TWf/IdZMZRUa4IrX0Bk6YDqydOOH5Oj kIsl0NBUwLOhFT8I7oFsHKSM+qUp7lqYRSiB3plMtojPqV9JcVwLpNu8X7OFD8I+diBB ZRJW7UqnIsLBpUQaRskHXCAmrtMEDsNHiNKrnD0zuo1gZj1BvwE0+7P5IulwMipQYR1k Xcu7IWkLv3HqmkIgGsaqFVXV64eBdRZCrJjRX4Ly0aTHPPYF+kf/ugPnScjbW24bR/LE WD4g== X-Gm-Message-State: AOJu0YxFvn9NyWugS/sjXI+cV5psm5aHfsyVTBv+7lA+uwbTuL0xcELi XxBzSz4rN8NJhf6GWryCq9vWClxRK34wGxC6DH5plAn1ZSqVfVbrIChRpXozMQ== X-Gm-Gg: ASbGncvylZJogcOv3od8IR2QiHvXGr6VZ+j8kg2D7q/BqcVUbK7UqqZkarDYPK+1qjX LblP89DvM3J+8GkMTTpq44iZt2U32KQkKrDyXzyKiEbpOEtw7Dmnu91Qh4fW1wwcimL7kqqzEHK abnZoQkTfQ/gNVSd547Sg5/rYVO1JTI+LvODcXT+GeRNadpp5Bwik7lNe8Wofj54a8Rby+GoTea xjScbFf3z+4SlwsNth6YxmFOMazHMcqbUauDHMUvGfxAB2t9SxEaNWWdwGZKkvkdwfYB3dxiqLz WOFSdlOf/e5icEVeS1AXwTnfZrKyRlEV2qbjQAauJfo1j99fqYjSRmvF9QeiHxnoc34= X-Google-Smtp-Source: AGHT+IFuS7l4bzDp+1KhGR5m5TnOeXcvhMnfJRyDd3XNg3VQ4kAXenRRPKyiWxlqEHBj6Lxq5zknlg== X-Received: by 2002:a05:6830:6dcb:b0:71e:4fc:6ee1 with SMTP id 46e09a7af769-726b87db8bamr6394010a34.9.1739046603726; Sat, 08 Feb 2025 12:30:03 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-726af932f78sm1564130a34.18.2025.02.08.12.30.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2025 12:30:02 -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 v4 04/10] bnxt_en: Refactor completion ring free routine Date: Sat, 8 Feb 2025 12:29:10 -0800 Message-ID: <20250208202916.1391614-5-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250208202916.1391614-1-michael.chan@broadcom.com> References: <20250208202916.1391614-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 Sat Feb 8 20:29:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13966500 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oo1-f49.google.com (mail-oo1-f49.google.com [209.85.161.49]) (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 88FBD24113C for ; Sat, 8 Feb 2025 20:30:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046609; cv=none; b=EwJVDFZOHTsagOWe95tDTo6TKWv05R8eo5SSkIZXDRIju2oMbLRtxw4H6Y8++jNyuJUXlnozox1WvsqC6v8K+BXk240bvWQGHiXDYb0mI/LKT8fUnS4S7DnGZ42FmmQzA5urSwDYOfcSEHTpvuChlwhXuOFaQ4jSRW47gpZTLuo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046609; c=relaxed/simple; bh=WMm7lF8i3aT0wkgzKRQ9Rv0++wE/D/rYcS6YOf4Fbdc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mYE18thC1+U9FXtNbQO5lRSQM6GnWuLq32JZmbmH7vMu+4uBl5uidoY2BqpXJ2PUPr0uWn7o0hZ6dVnpaCM6wLBFonEmqv80b6/0+wwnJ92VFtHUpw1IgA4nJ1lmpBicFf1nO7nhd2UFQZQP1BIunJYqOBUlfs4U9s2NyIFuWtQ= 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=Cbvb20af; arc=none smtp.client-ip=209.85.161.49 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="Cbvb20af" Received: by mail-oo1-f49.google.com with SMTP id 006d021491bc7-5f321876499so1760091eaf.1 for ; Sat, 08 Feb 2025 12:30:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1739046606; x=1739651406; 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=Cbvb20afVpSSrsI6dL9NZ1epbvGckRbqJY5wH/0gf2cInAb8CUX6Jcf53eCnXQ31lJ 7LcTSbxALXGIK7r2WGJzIDvp3ZxSS9O48UtfAFwx41kkFcUSi0+fsu/ofjD0uN6Q/w6U iBx0QNUucPhhJX2/p5rOHDMQiTniTr0Dly6nY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739046606; x=1739651406; 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=voSIPQOqDe9wjXmNUPulAfFpB+5+rkdXgPfGGBtI4M+VTmuzpPO1eNEsZQCI8ZR9W1 wvROSK+d1RZtZ5pJ4ycu/Jtcag3nJyRUgJ+DeNTaVBrzXHxilcF4vcXfSfvJacdSXYSV fnpPMrM+qT+XjVfy7eIgLvmrHJ/Ipsvg6durKM8KJAj63xa5yCtei/p/jtltho9ZIVwa 0VS8Uwt6TYb63WARaWBRoavS4OQhPqxoSyHe7OKzTTqeeqCK1g5g52IrafvAsgNsqSJL xdola12yLzZ8a8meIYLUZLo5QvLJwGpDkInL8QylLp2YqHWQHbyEmxqM3aY4TZpW46J6 zQbw== X-Gm-Message-State: AOJu0Yys6MoVHuvXrxGOuivxSbuUWU8SuCI0IhQhC+y59Nm+EzWCZ0Ax rkJ4MelkLdwKAH8A4UORjf9LZC89cJs3wlzFJwZ3NTrNnL+R9iSbpGEV9s+WTzo7u3n3LhbKhec = X-Gm-Gg: ASbGncs6KcN7MS9HBa2dfEtKK10eZ0Ee2AAkCh+MvyQdMle4NFamvUnNnv8xLipfowx Kp+HEkk+TCY8wBloOWhCPDdVXSSaL4EnSP3OaMzQKIrezXsVjlMSxpiGX9QF1uLVJc2CKD2s7TE uhYaB/w85y5AASPeS0UF+zD9OUPIcWx9dldi/zG5q5hJQDy9vM1Glwe9qGiDBv7oMtivok1vh38 +HWtcppB3Vv9VpaaUku65en/BOP8bHQYCbXz4E4A2H5GYV+qCSJh9atUQEfDM7Cpnk5VTjYIS/z rwPE06H7L17lhDiGg9CwySfOOIFxFYQL/FihKmWV3YI+tMVxOxgSeg4hBZntV9cLrfc= X-Google-Smtp-Source: AGHT+IGXh7Trsq0+oV8mwHISOlPg1adundTv08EDQSkHLBxL5o/XZRQgrdqE1CeIzDR9HoqNk7WLvw== X-Received: by 2002:a4a:eb14:0:b0:5fa:69fa:a098 with SMTP id 006d021491bc7-5fc51f3b6d7mr8419447eaf.2.1739046606581; Sat, 08 Feb 2025 12:30:06 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-726af932f78sm1564130a34.18.2025.02.08.12.30.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2025 12:30: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, Somnath Kotur Subject: [PATCH net-next v4 05/10] bnxt_en: Refactor bnxt_free_tx_rings() to free per TX ring Date: Sat, 8 Feb 2025 12:29:11 -0800 Message-ID: <20250208202916.1391614-6-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250208202916.1391614-1-michael.chan@broadcom.com> References: <20250208202916.1391614-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 Sat Feb 8 20:29:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13966501 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-oo1-f52.google.com (mail-oo1-f52.google.com [209.85.161.52]) (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 798CD241C86 for ; Sat, 8 Feb 2025 20:30:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046612; cv=none; b=o3801F5uML6rvwRWlhwzC1w+LZKH/zdI+fl28HFdswEiOVsJruMVmuKKvPEl6YjmVBokoxcuIIxbKLT7o8RiYez9Xcf0Gn6WGpmZSB14oZulo3Aj44D24xfDyE8gsSyOIJERrucB42coWI5NxXXrFJ71vR2Wz6cHd/px2Ul9oIU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046612; c=relaxed/simple; bh=I9Fd3w7iBdsQw7RR7W5KoX06nwuqLqZBEZ0GhvatebA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Uhm6L4hjPXJmXrUTJ7HnUuS6DOJ1fOSOOPHZ+wOJDnSR9FdTzdX3z7Pf+S9lzsChqV8Hs9sog26CQc/07Ash67QdTlPsuY8qBF4VCzdcGCbwokpE6AzQzSryVOVo8PUI1xC90nAvwhaJQXtrTX1RQb5b8jm4HT8Nm/lJ3jXXlxY= 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=EiNkFhQW; arc=none smtp.client-ip=209.85.161.52 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="EiNkFhQW" Received: by mail-oo1-f52.google.com with SMTP id 006d021491bc7-5f2dee7d218so1561487eaf.2 for ; Sat, 08 Feb 2025 12:30:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1739046609; x=1739651409; 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=EiNkFhQWP3Ue7SJU3uYL9rf694NhtRoHqx1OJjAiZ9pIInR/nkYGwT1oLa0IM6HyZD ZnymGKa5eLcOotJ/bnKvFWccKijhYQV1tMglMY2woVWZmXs1zCIeJsVLZRSvdA0CqDHp TemPNynYQG324Ia9O1buRWZozytaTQagSNmoI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739046609; x=1739651409; 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=sE7AcLYl+LMGrlf94O8n+LucFXrN3oTZKH0C6lGpIUpBOSvAjNklqtg8/JFX0DdLc8 4vZH3xgJRVPGeUIrKSmqCujWpXeK3XKxEU7ViSH89VI/+9UaV9231arYERKYG0VuPH7m WWY9fZhKRM0z+kKyjyrsRcSFUBCUYMEZvUt5F66xXRGZfqImAmcj/9hiXXdtuy/8OwnX zMOgTtudsTbLbDZiLgCz1cYXQlIT2FiuM022PvxkdwSdpvAGut9SIlbab6nf019df3XV ncT83dWVBLxqDrUDZ85sWzSP04XWHFH0SoGM62hRo/xcnc3xYBsJTzRPH22sE5N4gnG3 jIqw== X-Gm-Message-State: AOJu0YzIN1p9Mxyk0a+uGlCw2z8gv/S8obOdwjr/u1TJn/L1z++P/l+Y o0HlpAJnuzhQ7QqiyFnIZkS6SnDBGoXaZKA/YZ1I+VkzEgsZui9JggXbhBROlg== X-Gm-Gg: ASbGncszCQMsuikiUoyNC552XvIvSi8Oya9FmvLMes1Rzw8bQeyXkm9b/+gIeQTiLKd lrkeYa4ObtyCbMrAyvvsSo8PfaVrt/3AP7jqJcfL3u6TvvYnwrDYZFoqaxmyth/pjNkZBsdFAyY SrlIV8UwgwKuJ3GMuG4/U1+CfF/xAkgl0Hthhkns8zxyGbIY9WI623de2WG3aPLV99bnxZkdE38 ZFKaD3sAathQMwNqN7eZtXchQCiQztjmUDc83pb51H82zmnj7hpcgf1eOXZEDc38kMzi9rU3KqI qrZiTimRpwIBep515CWM/Yk+5sFUpRXcwaht/qZepOfB0pgSpqBbOKPclvhpOCDT8/Y= X-Google-Smtp-Source: AGHT+IGfz9jUQ9Av4bb+41B5wBywHpi9jb1QRYtmbs1JI25YlxslzjoWTAnfkL7uoKMB0LeE6kbC2g== X-Received: by 2002:a05:6820:207:b0:5fa:2139:3f2 with SMTP id 006d021491bc7-5fc5e5ff7c5mr5498076eaf.1.1739046609499; Sat, 08 Feb 2025 12:30:09 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-726af932f78sm1564130a34.18.2025.02.08.12.30.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2025 12:30: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 v4 06/10] bnxt_en: Refactor RX/RX AGG ring parameters setup for P5_PLUS Date: Sat, 8 Feb 2025 12:29:12 -0800 Message-ID: <20250208202916.1391614-7-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250208202916.1391614-1-michael.chan@broadcom.com> References: <20250208202916.1391614-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 Sat Feb 8 20:29:13 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13966502 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-ot1-f50.google.com (mail-ot1-f50.google.com [209.85.210.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 D63091F3B8B for ; Sat, 8 Feb 2025 20:30:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046614; cv=none; b=ib8mRcIwwmt+9gAawdyn3iMP+9S3eX5KWOI4uFGWnqtIQLhJn84O9UpD3eieHfJ/fzCO5vzQpswNhe6bHXPqA1gwXYr2l2HDkHuETgy0ZujFacNk0Q0Ftm8bbEh2Z+A7aLD0QnvbSNMp1cq3ZsrhtX1H1t4FE5agXdiTZ8+diLk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046614; c=relaxed/simple; bh=/Z40j/J42ZiQ048j2vF3aU41dOC1PM7eOBd+ElrAFQM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S4RPDpoWcvPO7JnujuDaG/Wm+14o5XgD43E+0dOGewIX7BkeNe6jDlzUoLYfd/eaEICPO7wiwfY+Yi1exeqwELWM2qBbMrM1P9al0ufV+Ok9yqfgyolS7Xh2WmLm2ctg2IVd/xGHNsYrMYLeNMEvkEVKFHt/nOCW6kTcyl/ibQU= 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=aiIIXVlJ; arc=none smtp.client-ip=209.85.210.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="aiIIXVlJ" Received: by mail-ot1-f50.google.com with SMTP id 46e09a7af769-71e2aa8d5e3so1903093a34.2 for ; Sat, 08 Feb 2025 12:30:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1739046612; x=1739651412; 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=aiIIXVlJyf5QgWWjP9lftelrmBYW68x3dUY8Oevsn0nMkcZ4/7H+c/3OKHfRNSQWtj zXEo6JvAvXVq9ceqmzBEMu1y7TbvyrnIkPFG4w0eq8s4896AkGe67WTFMjpkLHm8QaoG 6N6Q/i7EzfQE3A5HNviyG6+6Wwtj5rQwKbUeM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739046612; x=1739651412; 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=euu3xPF6zv1+Mf+UB5YbKN4tYZEd+9ZTObWKhkEY8lH0Mm7oTXyHfwK/IftRUirdoU kjCS9KWCIrcOrsbKXMzMDqmh7K2QSUE+d90FbEXi2X+Tcadzfu/KuQGXHU9qVYGmx4Ok 3Nh7gAmiwb3WEYu7HsjXRiEuxLjTzYN3mOCwrivrcW+wfCMf8kbmT81j8AJ5ykMLPDB5 Up5uVG/nsl+X30j69m/hi2tCnL87TUr26LrZVPhYnWYOtfifRLTUqCzhXVZPBr2NvwNt LfDQkqcU3ZtEjRdvxYBwsDcf8OeonE/AOJ08IZfBWGkOa+umwPuqV6MqTd+ZBCIgiFnL VoDg== X-Gm-Message-State: AOJu0Yx8Zavggt5Yvcea9OacouK1FIhUuiDtQ8jLcHEnt2VeL6lqZft0 NghHKm1TNjgDR1Ep7tljWdESQr1otPSdJ/k+s3uSxGPATp+wXQJ1moJ0U3y+OIjNiR9tqry2rck = X-Gm-Gg: ASbGncshlZ0YwyJObkFsb+JlepZSA41S0nWScp9bXveI1smRpXtB2vscglzYOCnUH6V OWOwc3+n5X+TidmrMIjAPOPFhCB6a06yqnsflwcogNvx7LEUAMG1IuIv5FMOfF6WNtQxtMBFLG0 zaZFO1arQCfWv3KF7TG7dDI4e5KojKaTQePAqiL0NiPKwZWfbcQjjbgOgOmDOaNN+RCudsXgI36 YUJuvuWiO8yX+L5NMt1HS9RhYhmGndwRsBFDhJO9PbZ8MxX4zTN87AIm3skk9z6UQiOAPl67P77 2Svoh6RAFTqU6OxmgSd48akkgff9BfCuWpsqkYD8noQ3jn9I4zYISv7Xkq6FQusaVog= X-Google-Smtp-Source: AGHT+IGLKkXBTUax34oJ356eyMZjzss1dRy+MtVJSoqDRKUsYcxt85j559M7a+bkWoLx13IQWj/kMQ== X-Received: by 2002:a05:6830:3508:b0:71d:fe93:2579 with SMTP id 46e09a7af769-726b86a45d4mr6056595a34.0.1739046611857; Sat, 08 Feb 2025 12:30:11 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-726af932f78sm1564130a34.18.2025.02.08.12.30.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2025 12:30: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, Hongguang Gao , Ajit Khaparde Subject: [PATCH net-next v4 07/10] bnxt_en: Pass NQ ID to the FW when allocating RX/RX AGG rings Date: Sat, 8 Feb 2025 12:29:13 -0800 Message-ID: <20250208202916.1391614-8-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250208202916.1391614-1-michael.chan@broadcom.com> References: <20250208202916.1391614-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 Sat Feb 8 20:29:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13966503 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) (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 A58CD1F3BB4 for ; Sat, 8 Feb 2025 20:30:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046618; cv=none; b=MX4fJ5C2EQs1joG8Vqo7HW0hvQir1b3s0ZrGX66oUfu1Y0A7h2VBIn9D0Po1FQ6il4lg8V2keBI0r00IjzcZydyUtu8mId3zuHsp4skwcny0kNSgVx72u3gstucXhyTbGO6l1XnqRrqSefMakN/YnvDqt2EKipeFAKW0b0+Mfws= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046618; c=relaxed/simple; bh=EpuCctjzBSciDrFe52O3lPGBzWjnjoM4W/fdHOk0Aa0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=r9Cm3qyFRRljZpYI7uxDM+I41bGy/eEGdjQ0/ggci7iriba6QsF0zUImjM6gk69RCw2khmLE/RmN1OORpSh0bxaRF5NHYoD6wo+Ba8gRD1S3Rmd0PsQ94QNAkZ+p5iD4QcGnaKjw7WH24oSFIogaaU9rJsYjU3Imtk5wnF9hAvY= 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=SWyqSlc5; arc=none smtp.client-ip=209.85.210.42 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="SWyqSlc5" Received: by mail-ot1-f42.google.com with SMTP id 46e09a7af769-71e1e051e50so840385a34.0 for ; Sat, 08 Feb 2025 12:30:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1739046615; x=1739651415; 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=SWyqSlc5cVOmtxTQ9Z0hM4wQeaC19GFvBU7XlHCQNn6KpeqXCLXLt/DHilvayTeZ9h LS5E1FUpoVZuLhBl3b+YA2gEtttk1RiipgJ0I2RgnpT8pmnHj8Xcbm35fqbrFLp5+lWq oNMioXHtXZP8Gf/Q/BTNbKKPgKZeOPZOQoQDc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739046615; x=1739651415; 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=L4MW76d9DQdlgxde07AccvFzlq0r/qh4T9JvZWDGWZ/wz6t1mlvkxvMmAC09/V24do +RBQJquj+lhEz0JQZkFzOFs/NQrako8sad2ycFDT3uGvM9mO8jqn7FFb/9OtwwdJWtCs ohSfCLcoQ0FJGpz4/NRN4UZ5hSUvGuhS1WxF5bzVv7BFOXo7L9obIz1QcAsNN7y8+JAk K2MjnELrdhewGo0Si7z2SdxAUQMfkFXqTPOXL6DVEH4DKJ7AgtWlRdQy+lrEOB0vUwkZ G/8T67GXnPYWvCoMFfwmPNArKTROT9S0n1kH/zckKBWZ00vgseHILOEHJoRlp/icusfD R9/A== X-Gm-Message-State: AOJu0YyvfQOnmq58z7UY7UY9U+mBADHxy2IBl90J9Bq0kMQWbeyfeZI8 72HikEwChhQB7FRC4Glfe1qK3BtUYkDEcdu5z91dmPRqvrb5LCaaCOcxDKy7/Q== X-Gm-Gg: ASbGncu4Hs3ibrA1tacYAC1qWde94KdM/rHuSpNhZCg+ourUIkLXG0/exCwvJ5gpa/G l2tFESlH4y3xB2oYwKj8dki6EOsAcmyDNB7chglVdHObcZs+raCX8l0yuhX919pUbSaGh4H/2C+ OuxaEkT7zB0tbhxI5z0NElmeDbWAAH2tkgg5UIH9ZWpAtu9PJ/q8aZZ13fwgv2q56Y2WrwUPezP VU8OByoDn+XdZ695Iq5Sz1H6BlPq0MivO6OrPwkpTj8hQNfCLaKnxTv0g/38LSff+xHVE9ux4yQ PdIo8u98KHw1Ka8AJrZKrToStjFebPrDQgb4vqYj7PCqqNYJf4k2+RRV2edZIX3rjac= X-Google-Smtp-Source: AGHT+IFOakMSiQcDjuHWyRiPnV+qinyb2OWw3uxwo3kGZg0CRHCjD2YHRHyJ7UZTFs1ILS7RkGh7Sw== X-Received: by 2002:a05:6830:d82:b0:71d:eee3:fd1c with SMTP id 46e09a7af769-726b86802c7mr5571211a34.0.1739046614696; Sat, 08 Feb 2025 12:30:14 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-726af932f78sm1564130a34.18.2025.02.08.12.30.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2025 12:30: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 , David Wei Subject: [PATCH net-next v4 08/10] bnxt_en: Reallocate RX completion ring for TPH support Date: Sat, 8 Feb 2025 12:29:14 -0800 Message-ID: <20250208202916.1391614-9-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250208202916.1391614-1-michael.chan@broadcom.com> References: <20250208202916.1391614-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 Sat Feb 8 20:29:15 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13966504 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-ot1-f51.google.com (mail-ot1-f51.google.com [209.85.210.51]) (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 E792B1F3BB2 for ; Sat, 8 Feb 2025 20:30:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046619; cv=none; b=k7P0kzBbPj5/4XAAYorPFwC+bJP2zgszC+bCH2Bzj6WJwDbEx5IRY1X7ctDzv/ZU1cB+F23Z8WOTz5EuuSwuUn/6jHfyl5aVKYj58mPwbrgTIFGIJOC1KrCAOyeSCrhMUHbCjhWzSSdCuKrH2krZU+xbqfLc48JXJcfKJXZX6jc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046619; c=relaxed/simple; bh=yr5NVaXF4WifkmHfycJ5OUi5ZYuO/tTL86mjoK412Y0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Tj4zOt0Vzc09CwOkuZMk6Lgz8Ila2ZpFdX54lpkiCO/8WFxYi98R1Ki2YiJWRtO1ypkx+AhZxqb5Th/dEEfzfX3ohMKjcOWh1sUdas0PUHqiUmpY95hLKEo5UQG38dfDKu0wNAHFJF8RJqiT14QZWqduhI2JTQ95u72TSmbtU5g= 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=F95xWLqX; arc=none smtp.client-ip=209.85.210.51 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="F95xWLqX" Received: by mail-ot1-f51.google.com with SMTP id 46e09a7af769-71e15717a2dso1707805a34.3 for ; Sat, 08 Feb 2025 12:30:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1739046617; x=1739651417; 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=F95xWLqXLOz+J6EA+HbwzugZGteCZHRHp9Pkyut8mCyAfj8tgaM9BiIjv5/Nh9a4/8 tHdVfYB2qkk1trmXQ4sDdA3IDYeSI4pJffb/b/UhQorrMdPjcANJ+aWMlnH+O36Scid0 gBVdKOyWfEktP4c062M19F0J7xEV7gKh46sVM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739046617; x=1739651417; 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=S5wW4ErTfGtnB5uWpMO3Sgj/1dPY6GxYqwie+wcXEeBTQp/Fm5aQlgPm7o0Tq6OvS6 7Zd22t8cEOAvk6IfTkCOJec0bPkepcvsjAqrnhHbaBKouSiIcXiB1CYx2T5zOr/BpL5S r+uWh3XFUrw1pzeKXz2tvycubLWXH9zCE+D+z1OEKdfIXJRVgMYjXQXDuw3RgA+ljYfo GL4BjP2UVWhgsMYXKKw6oNjeMcOjJ6gaR1lHv11taCqHlETATvhotFmE1m/gUOg/incd Sz3qcBQF9b9rv/TyA/ueS0advBKfyznDul7LfPNPoAuEv5tHlU34/B039DOA2xSAuCw5 rb5A== X-Gm-Message-State: AOJu0YyhOZWew9Mc3Ux5X+MaYqNj+CSL+xedOnb5OpiwQZbyv/jbBcv0 6lgT4lLDRanPDx8DaACChZd4fO1z8A30I1TUTH5swI2N50Yy9tOEDbcg1DqOdg== X-Gm-Gg: ASbGnctwWhMdphH9VCu9Zni3tbAAybrw7B5/viQJ+5ccyDJ0u7NVocXR04n3rxjn9q6 XKvI33+8mNVHSSnbWBz1J+j4VHzhZRwuT8184X3Uce8bxib/pA6Ui6VkrAcurIz9JEploHAEiUD 0bCViAm2c6S9/6QxSWm+K5ZQMkEchQnwvjy23eUITwbqENNUekTwaxYU4rbfcVOrpZlbodoPmSA vRrj8I65ze6yBJem/pd5Tnr4K9MAs6Y4S9cxIwy1BXhuA0WXvsHeZbXgr1pYzOI7U43FnTtC9DG wnUEx57sNlBpqcASp6o+HdCg90JsBtnAfU0bIn7PRYG4B+uaybzRRBK27LeNjVH/m40= X-Google-Smtp-Source: AGHT+IF0uwnmJr6/J0k3Bed/Il0b7oXI5iKGt3T5fBE/iugbkvVhU0J2jHB1gZQLz7Tt3SHHxcLnFg== X-Received: by 2002:a05:6830:61ca:b0:71e:373:6257 with SMTP id 46e09a7af769-726b8887274mr6956041a34.21.1739046616866; Sat, 08 Feb 2025 12:30:16 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-726af932f78sm1564130a34.18.2025.02.08.12.30.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2025 12:30: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, Somnath Kotur , Ajit Khaparde , David Wei Subject: [PATCH net-next v4 09/10] bnxt_en: Extend queue stop/start for TX rings Date: Sat, 8 Feb 2025 12:29:15 -0800 Message-ID: <20250208202916.1391614-10-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250208202916.1391614-1-michael.chan@broadcom.com> References: <20250208202916.1391614-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 Sat Feb 8 20:29:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Chan X-Patchwork-Id: 13966505 X-Patchwork-Delegate: kuba@kernel.org Received: from mail-ot1-f42.google.com (mail-ot1-f42.google.com [209.85.210.42]) (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 0C8E3241C93 for ; Sat, 8 Feb 2025 20:30:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046622; cv=none; b=prk6Tcq6iYXp6LSJJgGeHDGc8Fl/zH3Axq/oP6fdU1M5zKCU/m58w4K9XFplceu6lp4v+S+E6I4MPcwktzJpd+pQOFTXR94TiUhu7uTUQiUjcIRUIUqnUnIA41RiZmcWQ4NVYtTCELOBlIgw/RXc1G5gl8ZaeFqaaxj6pGrfq50= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739046622; c=relaxed/simple; bh=87pEfRTnKV96xeMpSy0KROxiluXAc98traQJu9s7dlw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nssTqh/La1IGtKLjrLGF5aNmliuNNrQ4RZcgeedVpWpCz4VaGl/peORg1ZWX3q8M3ATjhR4qBUP6dXIk8i4iJkTwzGaF/ZUJPacCzSJ1GMiV2oFGTMFNzWm6L2A8khKV3CscE/JBKygr4lx72/C6ulutAyaYuFIa/Oho/bnJ+LY= 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=CUwh+GdB; arc=none smtp.client-ip=209.85.210.42 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="CUwh+GdB" Received: by mail-ot1-f42.google.com with SMTP id 46e09a7af769-71e22b2387cso2500473a34.3 for ; Sat, 08 Feb 2025 12:30:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1739046620; x=1739651420; 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=CUwh+GdBahGeMoZODZXWEGw6qZasIyL2ODykuWEqddpke7T9jlJAgrkfYi8TatIzhl PbyPUb4MnJtt4+BY5BBg/zYyj98oxiFRbQr2fqQLJobnva2kvqNpi39gV0O+zWP9Jet2 q2TNx/XjI8XZdJpUaqvovvITExvyas7M+p/ZI= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1739046620; x=1739651420; 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=c5bqpn8Wcup5ZV8wmRl5iuCBQL9yD5Dq/Aw2eGLL3qLBwJ6alBhcnBGSZjfqzBqznt 1R2Wxw0vF/NLCh3iJFXzz2JRxFMhgxz7UueSSGJo/YG0l80MJzxyNw1UED8mFsBVbvIi IEwKVnvdXbQkreGrlw0NY1O09USYxeBKZsmNGEMljMmlekWoL26ieDj/DtSq0KrwHCtK ya8FgwMkZeZTfWsCBjL8YJEErqK9L2ySRkWKX/FMnfQZaMjFnmknW6rTcCHJZM620lpv F4xo90v3SY3s238M5RyLu67omeie0UHYQXe19N5w4nEdoBRY5KtOMyfgWrM85DDK7XJj 7PCw== X-Gm-Message-State: AOJu0Yw9QLms0K1ikpiU75fh34AqW9kIn563JUrIjWIbgFJcPRU7IeC5 Ks/qAI1XGqDnjXZo7ttyhUYL0th9GNyon9eaJPUFJPHCeOVylNely1SfreSmiQ== X-Gm-Gg: ASbGnctc/ge4E0v9gFeOVKbhWPrDC9EJDaAAJy+58LWVefmot8vmzPbxwcg803L7xwB 2LYXcvSDzeIcun9atBEvfPyv4U/dtW1CqmAgKvGuu7fBivoUaKuhlMCtorJ5JypaErbMojzKqvz 8oleWOm/hOXIPjClgZoOmk/8bvim/wvWYM9pmtJq+FraGeYPjcmAymKkoOMC5uf6mHwzR0zO7VG Glg/oP+Ofk+KxlwOpGfO8D58h8wr89N/lOP+vhcL8ojwA61tWAWsejfGqTs0FWd/e2nHpt1fmBe SJwVcl0B1H1slisFqYOINxtQ+k+p/IhnoTHmbU/sTkbf8tsKKSveKoMwjkg6PyWneW4= X-Google-Smtp-Source: AGHT+IENpyIIr3h1KfmPH71lspQy9fQk3Z+P3mK0CJvNyXqQZGcyA4Ok/huOlnN3xbe3rsiG6fChnA== X-Received: by 2002:a05:6830:6010:b0:71e:904:6aed with SMTP id 46e09a7af769-726b87db5e6mr5931754a34.10.1739046620061; Sat, 08 Feb 2025 12:30:20 -0800 (PST) Received: from lvnvda3289.lvn.broadcom.net ([192.19.161.250]) by smtp.gmail.com with ESMTPSA id 46e09a7af769-726af932f78sm1564130a34.18.2025.02.08.12.30.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Feb 2025 12:30:18 -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 v4 10/10] bnxt_en: Add TPH support in BNXT driver Date: Sat, 8 Feb 2025 12:29:16 -0800 Message-ID: <20250208202916.1391614-11-michael.chan@broadcom.com> X-Mailer: git-send-email 2.43.4 In-Reply-To: <20250208202916.1391614-1-michael.chan@broadcom.com> References: <20250208202916.1391614-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