From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 18886A04B3; Mon, 11 Nov 2019 09:16:27 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id DEF922986; Mon, 11 Nov 2019 09:16:26 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 9FEC12904 for ; Mon, 11 Nov 2019 09:16:25 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id xAB8FM9g007820; Mon, 11 Nov 2019 00:16:24 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=pfpt0818; bh=Gc1B9EQQowddHeH2W326J9iVMbdnQVZC1CgoCmIHxWA=; b=RqbcVoWDbPiXAZKBlnjPXEbB3eYV7kBBfzjzIvcZbhrMf3Q0lEQu6cgk5g01F/TIfDPQ 2io+SG+d2Z1ZlCsKRRuluEE9dupsIyfjA8r4fb2zaXB97G1OFnez7NW5kFkrrn9q+EvA pkWEbdvnpMoJgnXtRvKCBrn1pUC7jdlk8bAK/7bwiJKLOww81CarztVcqqchgUKAYuCW L2/DJ8ngddgM37SIqB6vl2qqy046G+sMEFrDtBGTDXrfnO0TH8NABmT8ttBWJ4zvCHDl er66gMS+3t9p2R5JZef6wC7SxPKkrVoH02r5PoWAUq/kd1ovHHFe0MEL7RZzTtYZIOf/ Jw== Received: from sc-exch02.marvell.com ([199.233.58.182]) by mx0a-0016f401.pphosted.com with ESMTP id 2w5upuwyqa-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 11 Nov 2019 00:16:24 -0800 Received: from SC-EXCH03.marvell.com (10.93.176.83) by SC-EXCH02.marvell.com (10.93.176.82) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Mon, 11 Nov 2019 00:16:23 -0800 Received: from maili.marvell.com (10.93.176.43) by SC-EXCH03.marvell.com (10.93.176.83) with Microsoft SMTP Server id 15.0.1367.3 via Frontend Transport; Mon, 11 Nov 2019 00:16:23 -0800 Received: from localhost.localdomain (unknown [10.28.34.200]) by maili.marvell.com (Postfix) with ESMTP id B0C173F703F; Mon, 11 Nov 2019 00:16:21 -0800 (PST) From: Sunil Kumar Kori To: Jerin Jacob , Nithin Dabilpuram , Kiran Kumar K , "John McNamara" , Marko Kovacevic CC: , Sunil Kumar Kori Date: Mon, 11 Nov 2019 13:46:15 +0530 Message-ID: <20191111081615.21113-1-skori@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20191106112649.24484-1-skori@marvell.com> References: <20191106112649.24484-1-skori@marvell.com> MIME-Version: 1.0 Content-Type: text/plain X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,18.0.572 definitions=2019-11-11_02:2019-11-08,2019-11-11 signatures=0 Subject: [dpdk-dev] [PATCH v4 1/1] net/octeontx2: add Rx/Tx burst mode get callbacks X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Retrieve burst mode information according to the selected Rx/Tx mode and offloads. Signed-off-by: Sunil Kumar Kori --- v4: - Review comments incorporated. v3: - Rebased the patch over patches.dpdk.org/patch/62368/ v2: - Rebased the patch on latest commit. - Update feature matrix for the support. doc/guides/nics/features/octeontx2.ini | 1 + drivers/net/octeontx2/otx2_ethdev.c | 2 + drivers/net/octeontx2/otx2_ethdev.h | 4 + drivers/net/octeontx2/otx2_ethdev_ops.c | 195 ++++++++++++++++++++++++ 4 files changed, 202 insertions(+) diff --git a/doc/guides/nics/features/octeontx2.ini b/doc/guides/nics/features/octeontx2.ini index 7c59b4383..c2a3f47b0 100644 --- a/doc/guides/nics/features/octeontx2.ini +++ b/doc/guides/nics/features/octeontx2.ini @@ -13,6 +13,7 @@ Link status = Y Link status event = Y Runtime Rx queue setup = Y Runtime Tx queue setup = Y +Burst mode info = Y Fast mbuf free = Y Free Tx mbuf on demand = Y Queue start/stop = Y diff --git a/drivers/net/octeontx2/otx2_ethdev.c b/drivers/net/octeontx2/otx2_ethdev.c index 62291c698..37b674bcb 100644 --- a/drivers/net/octeontx2/otx2_ethdev.c +++ b/drivers/net/octeontx2/otx2_ethdev.c @@ -1978,6 +1978,8 @@ static const struct eth_dev_ops otx2_eth_dev_ops = { .xstats_get_names_by_id = otx2_nix_xstats_get_names_by_id, .rxq_info_get = otx2_nix_rxq_info_get, .txq_info_get = otx2_nix_txq_info_get, + .rx_burst_mode_get = otx2_rx_burst_mode_get, + .tx_burst_mode_get = otx2_tx_burst_mode_get, .rx_queue_count = otx2_nix_rx_queue_count, .rx_descriptor_done = otx2_nix_rx_descriptor_done, .rx_descriptor_status = otx2_nix_rx_descriptor_status, diff --git a/drivers/net/octeontx2/otx2_ethdev.h b/drivers/net/octeontx2/otx2_ethdev.h index 4d9ed4870..fd43789fe 100644 --- a/drivers/net/octeontx2/otx2_ethdev.h +++ b/drivers/net/octeontx2/otx2_ethdev.h @@ -388,6 +388,10 @@ void otx2_nix_rxq_info_get(struct rte_eth_dev *eth_dev, uint16_t queue_id, struct rte_eth_rxq_info *qinfo); void otx2_nix_txq_info_get(struct rte_eth_dev *eth_dev, uint16_t queue_id, struct rte_eth_txq_info *qinfo); +int otx2_rx_burst_mode_get(struct rte_eth_dev *dev, uint16_t queue_id, + struct rte_eth_burst_mode *mode); +int otx2_tx_burst_mode_get(struct rte_eth_dev *dev, uint16_t queue_id, + struct rte_eth_burst_mode *mode); uint32_t otx2_nix_rx_queue_count(struct rte_eth_dev *eth_dev, uint16_t qidx); int otx2_nix_tx_done_cleanup(void *txq, uint32_t free_cnt); int otx2_nix_rx_descriptor_done(void *rxq, uint16_t offset); diff --git a/drivers/net/octeontx2/otx2_ethdev_ops.c b/drivers/net/octeontx2/otx2_ethdev_ops.c index fc0fbd9f2..5db7a21b1 100644 --- a/drivers/net/octeontx2/otx2_ethdev_ops.c +++ b/drivers/net/octeontx2/otx2_ethdev_ops.c @@ -2,6 +2,7 @@ * Copyright(C) 2019 Marvell International Ltd. */ +#include #include #include "otx2_ethdev.h" @@ -221,6 +222,200 @@ otx2_nix_txq_info_get(struct rte_eth_dev *eth_dev, uint16_t queue_id, qinfo->conf.tx_deferred_start = 0; } +int +otx2_rx_burst_mode_get(struct rte_eth_dev *eth_dev, + __rte_unused uint16_t queue_id, + struct rte_eth_burst_mode *mode) +{ + ssize_t bytes = 0, str_size = RTE_ETH_BURST_MODE_INFO_SIZE, rc; + struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev); + + if (dev->scalar_ena) { + rc = rte_strscpy(mode->info, "Scalar", str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } else { + rc = rte_strscpy(mode->info, "Vector Neon", str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + rc = rte_strscpy(mode->info + bytes, ", Rx Offloads:", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + + if (dev->rx_offload_flags & NIX_RX_OFFLOAD_RSS_F) { + rc = rte_strscpy(mode->info + bytes, " RSS,", str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->rx_offload_flags & NIX_RX_OFFLOAD_PTYPE_F) { + rc = rte_strscpy(mode->info + bytes, " Ptype,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->rx_offload_flags & NIX_RX_OFFLOAD_CHECKSUM_F) { + rc = rte_strscpy(mode->info + bytes, " Checksum,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->rx_offload_flags & NIX_RX_OFFLOAD_VLAN_STRIP_F) { + rc = rte_strscpy(mode->info + bytes, " VLAN Strip,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->rx_offload_flags & NIX_RX_OFFLOAD_MARK_UPDATE_F) { + rc = rte_strscpy(mode->info + bytes, " Mark Update,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->rx_offload_flags & NIX_RX_OFFLOAD_TSTAMP_F) { + rc = rte_strscpy(mode->info + bytes, " Timestamp,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->rx_offload_flags & NIX_RX_MULTI_SEG_F) { + rc = rte_strscpy(mode->info + bytes, " Scattered,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + return 0; + +error: + return rc; +} + +int +otx2_tx_burst_mode_get(struct rte_eth_dev *eth_dev, + __rte_unused uint16_t queue_id, + struct rte_eth_burst_mode *mode) +{ + ssize_t bytes = 0, str_size = RTE_ETH_BURST_MODE_INFO_SIZE, rc; + struct otx2_eth_dev *dev = otx2_eth_pmd_priv(eth_dev); + + if (dev->scalar_ena) { + rc = rte_strscpy(mode->info, "Scalar", str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } else { + rc = rte_strscpy(mode->info, "Vector Neon", str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + rc = rte_strscpy(mode->info + bytes, ", Tx Offloads:", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + + if (dev->tx_offload_flags & NIX_TX_OFFLOAD_L3_L4_CSUM_F) { + rc = rte_strscpy(mode->info + bytes, " Inner L3/L4 csum,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->tx_offload_flags & NIX_TX_OFFLOAD_OL3_OL4_CSUM_F) { + rc = rte_strscpy(mode->info + bytes, " Outer L3/L4 csum,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->tx_offload_flags & NIX_TX_OFFLOAD_VLAN_QINQ_F) { + rc = rte_strscpy(mode->info + bytes, " VLAN Insertion,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->tx_offload_flags & NIX_TX_OFFLOAD_MBUF_NOFF_F) { + rc = rte_strscpy(mode->info + bytes, " MBUF free disable,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->tx_offload_flags & NIX_TX_OFFLOAD_TSTAMP_F) { + rc = rte_strscpy(mode->info + bytes, " Timestamp,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->tx_offload_flags & NIX_TX_OFFLOAD_TSO_F) { + rc = rte_strscpy(mode->info + bytes, " TSO,", str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + if (dev->tx_offload_flags & NIX_RX_MULTI_SEG_F) { + rc = rte_strscpy(mode->info + bytes, " Scattered,", + str_size - bytes); + if (rc < 0) + goto error; + + bytes += rc; + } + + return 0; + +error: + return rc; +} + static void nix_rx_head_tail_get(struct otx2_eth_dev *dev, uint32_t *head, uint32_t *tail, uint16_t queue_idx) -- 2.17.1