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 CF2C2459FB; Fri, 27 Sep 2024 19:58:50 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BCA93402EC; Fri, 27 Sep 2024 19:58:46 +0200 (CEST) Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) by mails.dpdk.org (Postfix) with ESMTP id 5ED4F402D5 for ; Fri, 27 Sep 2024 19:58:45 +0200 (CEST) Received: by mail-pl1-f196.google.com with SMTP id d9443c01a7336-20b4a0940e3so6842035ad.0 for ; Fri, 27 Sep 2024 10:58:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; t=1727459924; x=1728064724; 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=HAsotaR+nfNne0pRs/ElwhgdMtSPO+oqU/rSJVbevvtDdnLw3YVcMFTcz7m8K7lRB6 vqRUwugw67nGrj2S3WSAS/s4HlsBp60Mx/lnk6siO54SQFvR8iIp/+qMB8dj3ZWUOsJD K5i9dleYL2aWWcXh0aI/92ZyG1GkIqJaEn6HU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727459924; x=1728064724; 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=vaO/c2/1yGDl8L4dv/CE8CwPS1vZidTAbRHtS14/GRW2Hq7c9MVDw2pzbvRg/x4idP 3aXY0lqW91nCVhEOSFhIaIns3wxTOD/VtIsnn3jJAGaaDu/oxTI+vafIExYOY9kYjcA2 evLWfxk2KLl838JtI5vWg8Ka/STKTfwrAfhGZzRxsEtMeOnT/BQkR2apaJWI0ov6qJ5a rMzGalHtDbyJMhdOHh8Dt4F4+9s1O+dC7ZlTYnAp34f1tBNMBr/0aDmDuOHvmlffQNRl l/rtwCOBs4QQC4wI9qBgLZdnzX/3J3eW/6OjFVs0Ms+FsBdpydyVMKFNa00QalPwON+S 1KMg== X-Gm-Message-State: AOJu0YyPJeWpKitZy9+S9JjywVA9iF4UqF5BigSn36EbUcDdAjA76zYU 8W+3TJ6MuCyV5T2fGdpxFZW1a0E0IrSoD1gKgQSV+AAGU0et7TLJsRcjDsIZd2f2e+QGga2lYUL 4lmeCIZ6kUSujC9/cVBDFeKeFkdib/O6ATPfQp1AaVv59mEb3GPq/59kDcL/AGNYW1WQ6LUKE4C kQLXdrXjF7j4k5NXHPJs6OO/x6jbl8CQqy65soivB2hK00 X-Google-Smtp-Source: AGHT+IHNmINtYL6TuxwJ+4TdC9yd18afJiNOpD2HIFFkS2rQd4BW1cjp4uhxvpnDwSS7tw6Y3bpIaA== X-Received: by 2002:a17:902:db09:b0:20b:44e1:b489 with SMTP id d9443c01a7336-20b44e1b693mr32302835ad.13.1727459924046; Fri, 27 Sep 2024 10:58:44 -0700 (PDT) Received: from dhcp-10-123-154-23.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-20b37e4e4desm16198945ad.251.2024.09.27.10.58.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 27 Sep 2024 10:58:43 -0700 (PDT) From: Sriharsha Basavapatna To: dev@dpdk.org Cc: Shahaji Bhosle , Randy Schacher , Kishore Padmanabha , Sriharsha Basavapatna , Ajit Khaparde Subject: [PATCH v2 01/47] net/bnxt: tf_core: fix wc tcam multi slice delete issue Date: Fri, 27 Sep 2024 23:37:43 +0530 Message-Id: <20240927180829.525350-2-sriharsha.basavapatna@broadcom.com> X-Mailer: git-send-email 2.39.0.189.g4dbebc36b0 In-Reply-To: <20240927180829.525350-1-sriharsha.basavapatna@broadcom.com> References: <20240927180829.525350-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