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 6E98745B68; Fri, 18 Oct 2024 11:01:06 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8DE9F40616; Fri, 18 Oct 2024 11:00:59 +0200 (CEST) Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by mails.dpdk.org (Postfix) with ESMTP id 25BEE402BD for ; Fri, 18 Oct 2024 11:00:58 +0200 (CEST) Received: by mail-pg1-f193.google.com with SMTP id 41be03b00d2f7-7163489149eso1487045a12.1 for ; Fri, 18 Oct 2024 02:00:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1729242057; x=1729846857; 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=ENJFJM/5OeA218rl2xekeydxbNZIhYZN/arVBc4yg+AQ3dF/keyNAtS5pRjCaj6QkL asr6B27qd1pB8+XArOvt3w8UMSI//JfT5KT8p76zvP96HTEWy2VZqZ4C2/dc17bqVWCx DeS4wMuOjwjKBnXre6BAztktOIboG/pT8SLdk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729242057; x=1729846857; 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=WtVg9zUHCP+f1Q3JEiC9qyIN/2kNQZjuLxv+Cnj+uf2c0Vanovshrpr42HCeq7j1RO XjFocHQJzPWS5Fdsa/Qxvk7OUlu3qFTuSRERDEQp00t6nABR5/WDwkStS3PIAt/0hZ1l w7DI2TqIygIOu0fAc+56xRk6RCdQfB0Fa8d5bDGbtw6sOea+aX9+tFZXiw19TWoXe51q eNjiEd0GUjIgrW/7PVhj6mtg6+3AGCFqLqGAGErzVsQCGsFrhBgOdMcK1PvkaCbZmBcG aziXTmzRKn5YE3sQY1CYelpmJDJ8Z1IOLxZFfwgPMds+Ikc0x58VBvpQXvWZLS1RXCZH MrqA== X-Gm-Message-State: AOJu0YzSGj64vRUD51x47W1gFn/QXsqHfjxCuNOK4ZtXDPXxl83Ml40/ VBPkl5Ilcj92+yN1rQ9TpiJgJuvCkOr7z5KTke2fs8TS5CSVTFTkiJT2FcYdE2ObNXorJKvNU8w vJkG3YzJ9EIg/cnerFnqovIUUpjBVeAnrenk4gf4pKq4VCU3MURRHJfhh/z4as/X7OJBm+qgl7U AT/Oj8nGGZp0l1/2HKTcNM7WnesET9WXl6tnO4IMv0p/CJ X-Google-Smtp-Source: AGHT+IHjuIF1BSLvMCuyYz/v/BTuwvj6szRi3MrffPCyIVvSDu6tej2OHojYuzc6ceRMOASWS4d+BQ== X-Received: by 2002:a05:6a21:e91:b0:1d9:dc8:b806 with SMTP id adf61e73a8af0-1d92c5c141amr1731840637.50.1729242056558; Fri, 18 Oct 2024 02:00:56 -0700 (PDT) Received: from dhcp-10-123-154-23.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71ea3311f45sm1009891b3a.14.2024.10.18.02.00.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Oct 2024 02:00:56 -0700 (PDT) From: Sriharsha Basavapatna To: dev@dpdk.org Cc: Shahaji Bhosle , Randy Schacher , Kishore Padmanabha , Sriharsha Basavapatna , Ajit Khaparde Subject: [PATCH v5 01/47] net/bnxt: tf_core: fix wc tcam multi slice delete issue Date: Fri, 18 Oct 2024 14:40:38 +0530 Message-Id: <20241018091124.3373258-2-sriharsha.basavapatna@broadcom.com> X-Mailer: git-send-email 2.39.0.189.g4dbebc36b0 In-Reply-To: <20241018091124.3373258-1-sriharsha.basavapatna@broadcom.com> References: <20241018091124.3373258-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