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 8B0DD45A76; Tue, 1 Oct 2024 07:49:20 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 35C7D402A3; Tue, 1 Oct 2024 07:49:16 +0200 (CEST) Received: from mail-pf1-f194.google.com (mail-pf1-f194.google.com [209.85.210.194]) by mails.dpdk.org (Postfix) with ESMTP id BB74F40299 for ; Tue, 1 Oct 2024 07:49:14 +0200 (CEST) Received: by mail-pf1-f194.google.com with SMTP id d2e1a72fcca58-71788bfe60eso3803650b3a.1 for ; Mon, 30 Sep 2024 22:49:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1727761754; x=1728366554; 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=wdYusBcRzKf1MBtK8lbqkbQr2khN7Y7rKXl9QcEbG7g=; b=KlD0zzmBPv320kW2/RjGKZqtxNvZdPk4VZ0Rsb6Ji6kcE+HjWSo31/xt7Ny1OX7jgI lKf5DGWdH3jw0bCuWjM8CYSOsL2gQEzQTH7Ifyeu+ET7VJ3VvyHcVwGSLrdudLci+N5G nmiDGWmVk+MhNuL8OAEdLh0RHfyjyQhezAjEk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727761754; x=1728366554; 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=wdYusBcRzKf1MBtK8lbqkbQr2khN7Y7rKXl9QcEbG7g=; b=swhuLCeqsxK2z96uVQ/2ZLZDmiQZFd25CqqzErD0GmCiJAq/ETy2sL7/Unl1GAm2Vk 6IUZZbQBY/+hPFWpdgfa+uq4Ka2eVQVlnxg0QIocdhcWw6wpLVm5xh6kBxlwXAVTLkr8 kcDqwhj4ebPaZu49MQRWo0diAToOkXL24FeIiO7kaZphTUEzY7NCOh3TWy57ipvQ5gO9 +X/9N8YWAHXmQKiTgXT2W7JsrLUEErlgKVkWZRlC0kNUEuWZoz0Cdjb+wnULa2cP3Ii9 +XgE3ib8aTEc3Jo5E5T3k8zANYT0uGey6qOznk7AqX95gzlhp00eYObiXaQPT9mrFAZl oK7Q== X-Gm-Message-State: AOJu0YwVrKN+DjM/bMVGLJsxUYVI8yoQV495OE65cc5Xdr6s7ehxta2g i47tnWM2McI0ScBk4qBaKWRYuP4HYbrkZD/Oq3Vfi43uh4iELNHFhqEiN/Np+c/7DnGRubVyBOA KPNS0yN7kx+0jQKEJU3moQk1E/Q8pX9B+CPNLAHviQvRpK/zZeeMn5iafYhUnbNGUVTz660Gi3Y LZ8g8/LCiiqfAD+u4nKLH8Qr5ehvrXDgAU2iIp+m8OiP1b X-Google-Smtp-Source: AGHT+IEWx8PIhpgIA0MiinzKWvb3vkF9RyRFT/+M7I6Qql1Tl44PGKxz8XVhhg1iVPWt5gWbfWPgFw== X-Received: by 2002:a05:6a00:4f88:b0:714:1d15:663 with SMTP id d2e1a72fcca58-71b2607e03cmr20974688b3a.24.1727761753280; Mon, 30 Sep 2024 22:49:13 -0700 (PDT) Received: from dhcp-10-123-154-23.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-7e6db2c8af2sm7513792a12.48.2024.09.30.22.49.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 30 Sep 2024 22:49:12 -0700 (PDT) From: Sriharsha Basavapatna To: dev@dpdk.org Cc: Shahaji Bhosle , Randy Schacher , Kishore Padmanabha , Sriharsha Basavapatna , Ajit Khaparde Subject: [PATCH v3 01/47] net/bnxt: tf_core: fix wc tcam multi slice delete issue Date: Tue, 1 Oct 2024 11:27:47 +0530 Message-Id: <20241001055833.757163-2-sriharsha.basavapatna@broadcom.com> X-Mailer: git-send-email 2.39.0.189.g4dbebc36b0 In-Reply-To: <20241001055833.757163-1-sriharsha.basavapatna@broadcom.com> References: <20241001055833.757163-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 | 18 ++++++++++++-- 2 files changed, 30 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 96d61c3ed2..7e4952c062 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(ERR, "Tunnel type:%d alloc failed for port:%d error:%s\n", + type, port, + (rc == HWRM_TUNNEL_DST_PORT_ALLOC_OUTPUT_ERROR_INFO_ERR_ALLOCATED) ? + "already allocated" : "no resource"); + } + return rc; } int @@ -589,7 +597,13 @@ 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(ERR, "Tunnel type:%d alloc failed for port:%d error:%s\n", + 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