From patchwork Sun Jun 13 00:06:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ajit Khaparde X-Patchwork-Id: 94119 X-Patchwork-Delegate: ajit.khaparde@broadcom.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id BD73AA0C41; Sun, 13 Jun 2021 02:10:48 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id C0A69411CF; Sun, 13 Jun 2021 02:07:36 +0200 (CEST) Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) by mails.dpdk.org (Postfix) with ESMTP id 807B7411BB for ; Sun, 13 Jun 2021 02:07:31 +0200 (CEST) Received: by mail-pg1-f180.google.com with SMTP id l184so5615565pgd.8 for ; Sat, 12 Jun 2021 17:07:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=lUggEQC0r6SSUgt3kjFLnIUo6NqpSsxscqJNGALpmos=; b=FcYE1IIPoJW4Hy7yRLy5CP4/Uuc9twGyc/zylZQHxDgBUaIjwo8Ws4aDM+E39hTpUY meQu5OleMvHf+GsmZ7rkurKYCSN3HLZ4X6BxTStgnguBnjKIYFe547vWkVb3TMtgn2Kt Ux6qCZxQ0it2MrQGv0FB9q+2nMQ24efZbMKYw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version; bh=lUggEQC0r6SSUgt3kjFLnIUo6NqpSsxscqJNGALpmos=; b=hbhV1p7qUDIgngNzFMfHa63Nb1O74jbZZ9Wgcppn3Iqtu4CmPLC+Qdv9LjqiLamXbp JI1q+O3TIq4TwVczLQUVbpP7Ps0JFOqn5NmANf8mxSDfcobPGmevS3F0W2MvtCMAxzDS Qftcg6d9rb2P+S3tdf1RCE93922bxmfmmoeWUFciw4JuH0OpN3XQaUJsf/8KGH4gwUK8 aYdzGMzU1fnNU1UJhRVzmx6+zaaKDNnGyJgTFKFf+d7xbtanvLpFl3KyXIRRMHKeJ9nJ cMjG8T9qGdZsZJIxCsJp7Zo+p85EaAWp+XkqTJEfNwVXq4nHsVaog34i+1Jke9Pppafq n/Fg== X-Gm-Message-State: AOAM532VTPzWg+J/0xg60OUNkW7e3c1hBsiTak0Vc2qBxvwpw8fvHNjL i1d4g28yY/UxRbJ9TtvxwmVedUUGIRNlQh7jAzmrcUBRHgji6DfQgIF57PVnoxjlVKs1t7ela+h eKopZPxVKyS5TXLdHtbOsZECMtcl7IaJrcNK6rKvbQPZhDhNNyHWo6XXtkq+IJPc= X-Google-Smtp-Source: ABdhPJyZfAWThHWkoP5eK3Q2tEMYcIgo7zuloYu9/PAsXHosCh3G+NaNXMowOWFBqIa2fe26jDr8XA== X-Received: by 2002:a63:5064:: with SMTP id q36mr6202442pgl.196.1623542850333; Sat, 12 Jun 2021 17:07:30 -0700 (PDT) Received: from localhost.localdomain ([192.19.223.252]) by smtp.gmail.com with ESMTPSA id gg22sm12774609pjb.17.2021.06.12.17.07.29 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 12 Jun 2021 17:07:29 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: Jay Ding , Randy Schacher , Venkat Duvvuru , Mike Baucom , Farah Smith Date: Sat, 12 Jun 2021 17:06:18 -0700 Message-Id: <20210613000652.28191-25-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.21.1 (Apple Git-122.3) In-Reply-To: <20210613000652.28191-1-ajit.khaparde@broadcom.com> References: <20210530085929.29695-1-venkatkumar.duvvuru@broadcom.com> <20210613000652.28191-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [dpdk-dev] [PATCH v2 24/58] net/bnxt: add support for WC TCAM shared session 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 Sender: "dev" From: Jay Ding If the session shares WC TCAM entries with others, specify it in the session name by attach "-wc_tcam". Firmware will flush the shared WC TCAM entries if the last shared session using them is closed. Signed-off-by: Jay Ding Signed-off-by: Randy Schacher Signed-off-by: Venkat Duvvuru Reviewed-by: Mike Baucom Reviewed-by: Farah Smith Reviewed-by: Ajit Khaparde --- drivers/net/bnxt/tf_core/tf_msg.c | 46 +++++++++++++++++++++++---- drivers/net/bnxt/tf_core/tf_session.c | 5 +++ 2 files changed, 44 insertions(+), 7 deletions(-) diff --git a/drivers/net/bnxt/tf_core/tf_msg.c b/drivers/net/bnxt/tf_core/tf_msg.c index fbd4b1d910..6717710dbd 100644 --- a/drivers/net/bnxt/tf_core/tf_msg.c +++ b/drivers/net/bnxt/tf_core/tf_msg.c @@ -58,6 +58,16 @@ static_assert(sizeof(struct hwrm_tf_tbl_type_set_input) == */ #define TF_PCI_BUF_SIZE_MAX 88 +/** + * This is the length of shared session name "tf_share" + */ +#define TF_SHARED_SESSION_NAME_LEN 8 + +/** + * This is the length of tcam shared session name "tf_shared-wc_tcam" + */ +#define TF_TCAM_SHARED_SESSION_NAME_LEN 17 + /** * If data bigger than TF_PCI_BUF_SIZE_MAX then use DMA method */ @@ -126,13 +136,17 @@ tf_msg_session_open(struct bnxt *bp, struct hwrm_tf_session_open_output resp = { 0 }; struct tfp_send_msg_parms parms = { 0 }; int name_len; - char *name; + char *session_name; + char *tcam_session_name; /* Populate the request */ name_len = strnlen(ctrl_chan_name, TF_SESSION_NAME_MAX); - name = &ctrl_chan_name[name_len - strlen("tf_shared")]; - if (!strncmp(name, "tf_shared", strlen("tf_shared"))) - tfp_memcpy(&req.session_name, name, strlen("tf_share")); + session_name = &ctrl_chan_name[name_len - strlen("tf_shared")]; + tcam_session_name = &ctrl_chan_name[name_len - strlen("tf_shared-wc_tcam")]; + if (!strncmp(tcam_session_name, "tf_shared-wc_tcam", strlen("tf_shared-wc_tcam"))) + tfp_memcpy(&req.session_name, tcam_session_name, TF_TCAM_SHARED_SESSION_NAME_LEN); + else if (!strncmp(session_name, "tf_shared", strlen("tf_shared"))) + tfp_memcpy(&req.session_name, session_name, TF_SHARED_SESSION_NAME_LEN); else tfp_memcpy(&req.session_name, ctrl_chan_name, TF_SESSION_NAME_MAX); @@ -177,6 +191,9 @@ tf_msg_session_client_register(struct tf *tfp, struct tfp_send_msg_parms parms = { 0 }; uint8_t fw_session_id; struct tf_dev_info *dev; + int name_len; + char *session_name; + char *tcam_session_name; /* Retrieve the device information */ rc = tf_session_get_device(tfs, &dev); @@ -197,9 +214,24 @@ tf_msg_session_client_register(struct tf *tfp, /* Populate the request */ req.fw_session_id = tfp_cpu_to_le_32(fw_session_id); - tfp_memcpy(&req.session_client_name, - ctrl_channel_name, - TF_SESSION_NAME_MAX); + name_len = strnlen(ctrl_channel_name, TF_SESSION_NAME_MAX); + session_name = &ctrl_channel_name[name_len - strlen("tf_shared")]; + tcam_session_name = &ctrl_channel_name[name_len - + strlen("tf_shared-wc_tcam")]; + if (!strncmp(tcam_session_name, + "tf_shared-wc_tcam", + strlen("tf_shared-wc_tcam"))) + tfp_memcpy(&req.session_client_name, + tcam_session_name, + TF_TCAM_SHARED_SESSION_NAME_LEN); + else if (!strncmp(session_name, "tf_shared", strlen("tf_shared"))) + tfp_memcpy(&req.session_client_name, + session_name, + TF_SHARED_SESSION_NAME_LEN); + else + tfp_memcpy(&req.session_client_name, + ctrl_channel_name, + TF_SESSION_NAME_MAX); parms.tf_type = HWRM_TF_SESSION_REGISTER; parms.req_data = (uint32_t *)&req; diff --git a/drivers/net/bnxt/tf_core/tf_session.c b/drivers/net/bnxt/tf_core/tf_session.c index 71ccb2e3e7..90b65c59e6 100644 --- a/drivers/net/bnxt/tf_core/tf_session.c +++ b/drivers/net/bnxt/tf_core/tf_session.c @@ -188,6 +188,11 @@ tf_session_create(struct tf *tfp, if (!strncmp(name, "tf_shared", strlen("tf_shared"))) session->shared_session = true; + name = &parms->open_cfg->ctrl_chan_name[name_len - + strlen("tf_shared-wc_tcam")]; + if (!strncmp(name, "tf_shared-wc_tcam", strlen("tf_shared-wc_tcam"))) + session->shared_session = true; + if (session->shared_session && shared_session_creator) { session->shared_session_creator = true; parms->open_cfg->shared_session_creator = true;