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 1396C45A7C; Fri, 4 Oct 2024 19:44:52 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id AB07D42EF8; Fri, 4 Oct 2024 19:44:47 +0200 (CEST) Received: from mail-pg1-f194.google.com (mail-pg1-f194.google.com [209.85.215.194]) by mails.dpdk.org (Postfix) with ESMTP id 4414B42EEC for ; Fri, 4 Oct 2024 19:44:46 +0200 (CEST) Received: by mail-pg1-f194.google.com with SMTP id 41be03b00d2f7-7e9f8d67df9so16736a12.1 for ; Fri, 04 Oct 2024 10:44:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1728063885; x=1728668685; 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=BEJD3wgx9y+j85Fye8yDRmEfu9zifcBf6CuJd/2pqKw6B8Xkr84/bEufbYFUd2ysN2 Wg9Bv+Dz5I911oPcW6//AkuVZUx9CLG9UCALq/YZzv6OfkWyDPQMnMPoFyIJrxiLrB2/ /bfHDTUSoiXb/F9ukPyzoulgAfiFn93yGaGkU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1728063885; x=1728668685; 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=wCVGQWXO8y2Yi9ZQkiVGC0hilmu+g9LwSbwTCX7cHfan2wuX6S1w4WoJOZUeAUQ6y5 qbEMujJanyufsIj0nZ2Q3poF6J7pWOsH3q33TbJOfmvplyhPs81IpYmQPglujwXeAOjG nq3hZzmZ8eSvoT5lAfSveDOCnHZufkz24AuC/1p3sxUOEb3fPN+xGwHIMAlr6QDk7Dxu aEUGQGC6gj8lSvx1WJblhTFKm1Bmj159KDX3wKBsLW8irW1ChTQ8xBKUcmXTXxnLurH9 6wYZMX8asErGOPc1kZfGOy2e+j33ZqXZ2wvcQ2ZMg4vsZfDzEtPdRNMHTJTU42OnLcCb okcw== X-Gm-Message-State: AOJu0YwdxafLwaQ+lUMpHZx1ay2UZIPHGhVjOF2a6GaKUqmVoyHIzHoj 1uaqQMLJRGZEBUKauSOzAXrsWJjXzebnJ8rEYdK2Hg1LHR7RUYxkOxsbEsIUihzKE4zZ58MfLiW KBJOaXjthUtsSZAcqKcv20WemMnYHFv96GSJ30+ud2PHV/uMw8GXWdJjivCoxe3qwMHXYr6q0YZ zX5/qiX8ta/OgjAE8xUvJQvj7TJv7CA1JTVp6192N92R2r X-Google-Smtp-Source: AGHT+IH0Pqe3KWse35lrG1uLMC9U+4jzRNkl+tZSKgMt8xrHl6SwP4qQjzgfAEqDx6q2ohb8bhzt8w== X-Received: by 2002:a05:6a20:c996:b0:1ce:e725:1723 with SMTP id adf61e73a8af0-1d6dfae3290mr4584088637.45.1728063884902; Fri, 04 Oct 2024 10:44:44 -0700 (PDT) Received: from dhcp-10-123-154-23.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-71df0cd0b5bsm128103b3a.53.2024.10.04.10.44.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Oct 2024 10:44:44 -0700 (PDT) From: Sriharsha Basavapatna To: dev@dpdk.org Cc: Shahaji Bhosle , Randy Schacher , Kishore Padmanabha , Sriharsha Basavapatna , Ajit Khaparde Subject: [PATCH v4 01/47] net/bnxt: tf_core: fix wc tcam multi slice delete issue Date: Fri, 4 Oct 2024 23:22:52 +0530 Message-Id: <20241004175338.3156160-2-sriharsha.basavapatna@broadcom.com> X-Mailer: git-send-email 2.39.0.189.g4dbebc36b0 In-Reply-To: <20241004175338.3156160-1-sriharsha.basavapatna@broadcom.com> References: <20241004175338.3156160-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