From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A98A745B90; Mon, 21 Oct 2024 10:14:59 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 574C2402EA; Mon, 21 Oct 2024 10:14:58 +0200 (CEST) Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by mails.dpdk.org (Postfix) with ESMTP id 18BC5402EA for ; Mon, 21 Oct 2024 10:14:56 +0200 (CEST) Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-71e52582cf8so2837965b3a.2 for ; Mon, 21 Oct 2024 01:14:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1729498494; x=1730103294; darn=dpdk.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=82bL8g5jsTQKRsA9qGeUeqWZBRuu8552az6ocCX6rdM=; b=HreW0CgkJ/1yZZ9lrFCM89k3A+UsOEHNatiFYSUZRYcNaB5Xi5XsI6vx48vdMjUmE3 fuCMO4zGZnr32hBKkediVfoQoBGeNMK7uevtxDfrEvG/8q8cv23/PHyY+3yFD/k0KPvm e8MJkAT1hNcX+ZdUYUEWA4Q8nBtB6noD+x+sQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729498494; x=1730103294; 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=82bL8g5jsTQKRsA9qGeUeqWZBRuu8552az6ocCX6rdM=; b=IAT31jU9VlUrZtQNkv3rkFM+moXd2mBfeTIBA7McYNKk/aQUgpGw+CYxkOux7w+YWt tXGwzVKYbmcpRZrIidQJ2/QaHVD79CqQ51GL+xPBKS59LtQfkOxk/+SEoQhVRRptcgeR A0Rufc9yfkWQEY6V8PeUgDaFmcHMOpOs4oL9GbHfIX5lpy1Jr77R/Q3WbjzizUdpZB+8 B3n4eWr59O601NNPy58vwwdW3vM36Sn5k25KDpN3giqykG4bb9sEXxTFjvm3toImGKGP a2g0ZP/aOP9AAjY7iIttQahrcB/W2PS0p6u3ow8BxnMv3b41fyCaD85Kpiu0CSQYrNQm VDQw== X-Gm-Message-State: AOJu0YyiCUF1mqFMq0lmzNcCujod7tBkQXxf47IEYD3Qc4ZaUTs1U6o+ zq+CdrPgsIC3Jh5PcRB1/Lr5LLo3MXySwbAq6zPZkZBsxdI3Na7Dy6Jz1MVrv7dRmtyfkp4rZ5Q e+RON8kLfFqS9QxVrs4MrvLt1vMaUc6rNjBTfIu+kEt+Z9FFROrwxy30D6LbPvaobPYxNE423Qk gmWm+00cgOu1gTwfsVminEuBAun67Y6Th2gCFpgnfzew== X-Google-Smtp-Source: AGHT+IFSAwfJDPVJBN2CFdO4mkRSdylWfyTdxGXv4XQzQ+USYFt6UN84yXrY7FakJzDkIjX2wQDAcw== X-Received: by 2002:a05:6a00:2da4:b0:71e:3b51:e850 with SMTP id d2e1a72fcca58-71ea31257femr14029816b3a.2.1729498494233; Mon, 21 Oct 2024 01:14:54 -0700 (PDT) Received: from dhcp-10-123-154-23.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71ec1313926sm2291631b3a.4.2024.10.21.01.14.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 21 Oct 2024 01:14:53 -0700 (PDT) From: Sriharsha Basavapatna To: dev@dpdk.org Cc: Shahaji Bhosle , Randy Schacher , Kishore Padmanabha , Sriharsha Basavapatna , Ajit Khaparde Subject: [PATCH v6 01/47] net/bnxt: tf_core: fix wc tcam multi slice delete issue Date: Mon, 21 Oct 2024 13:55:21 +0530 Message-Id: <20241021082607.232829-2-sriharsha.basavapatna@broadcom.com> X-Mailer: git-send-email 2.39.0.189.g4dbebc36b0 In-Reply-To: <20241021082607.232829-1-sriharsha.basavapatna@broadcom.com> References: <20241021082607.232829-1-sriharsha.basavapatna@broadcom.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Shahaji Bhosle FW tries to update the HWRM request data in the delete case to update the mode bit and also update invalid profile id. This update only happens when the data is send over DMA. HWRM requests are read only buffers and cannot be updated. So driver now will always send WC tcam set message over DMA channel. Update tunnel alloc apis to provide error message. Fixes: ca5e61bd562d ("net/bnxt: support EM and TCAM lookup with table scope") Reviewed-by: Randy Schacher Reviewed-by: Kishore Padmanabha Signed-off-by: Shahaji Bhosle Signed-off-by: Sriharsha Basavapatna Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/tf_core/tf_msg.c | 28 +++++++++++----------- drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c | 17 +++++++++++-- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/drivers/net/bnxt/tf_core/tf_msg.c b/drivers/net/bnxt/tf_core/tf_msg.c index 1c66c7e01a..4aa90f6b07 100644 --- a/drivers/net/bnxt/tf_core/tf_msg.c +++ b/drivers/net/bnxt/tf_core/tf_msg.c @@ -1612,20 +1612,20 @@ tf_msg_tcam_entry_set(struct tf *tfp, req.result_size = parms->result_size; data_size = 2 * req.key_size + req.result_size; - if (data_size <= TF_PCI_BUF_SIZE_MAX) { - /* use pci buffer */ - data = &req.dev_data[0]; - } else { - /* use dma buffer */ - req.flags |= HWRM_TF_TCAM_SET_INPUT_FLAGS_DMA; - rc = tf_msg_alloc_dma_buf(&buf, data_size); - if (rc) - goto cleanup; - data = buf.va_addr; - tfp_memcpy(&req.dev_data[0], - &buf.pa_addr, - sizeof(buf.pa_addr)); - } + /* + * Always use dma buffer, as the delete multi slice + * tcam entries not support with HWRM request buffer + * only DMA'ed buffer can update the mode bits for + * the delete to work + */ + req.flags |= HWRM_TF_TCAM_SET_INPUT_FLAGS_DMA; + rc = tf_msg_alloc_dma_buf(&buf, data_size); + if (rc) + goto cleanup; + data = buf.va_addr; + tfp_memcpy(&req.dev_data[0], + &buf.pa_addr, + sizeof(buf.pa_addr)); tfp_memcpy(&data[0], parms->key, parms->key_size); tfp_memcpy(&data[parms->key_size], parms->mask, parms->key_size); diff --git a/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c b/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c index 75a0b77ac2..5734013b6d 100644 --- a/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c +++ b/drivers/net/bnxt/tf_ulp/bnxt_tf_pmd_shim.c @@ -32,9 +32,17 @@ bnxt_tunnel_dst_port_alloc(struct bnxt *bp, uint16_t port, uint8_t type) { - return bnxt_hwrm_tunnel_dst_port_alloc(bp, + int rc = 0; + rc = bnxt_hwrm_tunnel_dst_port_alloc(bp, port, type); + if (rc) { + PMD_DRV_LOG_LINE(ERR, "Tunnel type:%d alloc failed for port:%d error:%s", + type, port, + (rc == HWRM_TUNNEL_DST_PORT_ALLOC_OUTPUT_ERROR_INFO_ERR_ALLOCATED) ? + "already allocated" : "no resource"); + } + return rc; } int @@ -589,7 +597,12 @@ bnxt_pmd_global_tunnel_set(uint16_t port_id, uint8_t type, } rc = bnxt_hwrm_tunnel_dst_port_alloc(bp, udp_port, hwtype); - if (!rc) { + if (rc) { + PMD_DRV_LOG_LINE(ERR, "Tunnel type:%d alloc failed for port:%d error:%s", + hwtype, udp_port, + (rc == HWRM_TUNNEL_DST_PORT_ALLOC_OUTPUT_ERROR_INFO_ERR_ALLOCATED) ? + "already allocated" : "no resource"); + } else { ulp_global_tunnel_db[type].ref_cnt++; ulp_global_tunnel_db[type].dport = udp_port; bnxt_pmd_global_reg_data_to_hndl(port_id, bp->ecpri_upar_in_use, -- 2.39.3