From patchwork Wed Jul 6 07:52:09 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Aman Kumar X-Patchwork-Id: 113737 X-Patchwork-Delegate: thomas@monjalon.net 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 8832EA0540; Wed, 6 Jul 2022 09:58:13 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5E3FA42BB3; Wed, 6 Jul 2022 09:57:01 +0200 (CEST) Received: from mail-pf1-f180.google.com (mail-pf1-f180.google.com [209.85.210.180]) by mails.dpdk.org (Postfix) with ESMTP id 9330942BB1 for ; Wed, 6 Jul 2022 09:56:59 +0200 (CEST) Received: by mail-pf1-f180.google.com with SMTP id i17so4150268pfk.1 for ; Wed, 06 Jul 2022 00:56:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vvdntech-in.20210112.gappssmtp.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=8xIp+pknRSOnxll4swFAlxMNMNqrI0ni1/Xri2b+0Ec=; b=tvamaKKzx/FEa2vJO8DKNF/pgzybbm67x9uCPosdxXl9uUm61uxvW5QNk0y4VGW0tq bh85i4YQo/g80N6nJ6hoMwS7Zb0sdaEiReQ4TX247ps1H+D97p89NsDsBftNKLTwZHr8 UmWd9iHmftIhWA7f5PIuldWKwgGyqZk9G3W+tauwwOdRQdKQBMmavMEfqr4X2cj+Grmr EzMHWGjrZOYrUQWu/xZGi6UIAmREGHGu2MWLfD6OX5mHHzCFJDCYQ3Z9i5m2pOmNhL0B CKu4l7iYEFPifze8yhmMGkntEkFnKqdXxDEzmddQP+aN0HgObrwJPxwlW5P8zdRijDUu IhKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=8xIp+pknRSOnxll4swFAlxMNMNqrI0ni1/Xri2b+0Ec=; b=lJBM3eIsIG7pgdLqp09ASlPD43Ud+62JmpGGsMNM2ehzQH678A7IladsJlTWDcM/2j S9q3i9LkLczwYOKYAa2SYmopk23teUSvLPpRGCBev2lgUQ5t6Eu96S8rwP9a/oJ7mdda wjSXJefSR1UKMw8zHbuxTFYajdYxwmmlOWV5goBU5sODgN2AiinkpUUuiBVqjk1m/YYl 6LfYKWM3Ltssfj/wUw9kCxR+8qixM7PVim8IIf6YdjCArtpBdzCweuYsNULYdP3hh+E7 cvVDuaU04g8F2FFUKyWYiaH5Yj7G1CKi/b2UklzFmrVxwlGNVtlCKVqdiyrX3gaHW9AN sNrA== X-Gm-Message-State: AJIora/kg827Drs6xhoQEE4/7gwuTQqPYf3szG78Q7P+tNjxiqHDYgFq tIanhtB1Y/ymPJ8Fh+tOj+mOK+vLBhp+HOyj X-Google-Smtp-Source: AGRyM1u5mBdKKL5PrGjKNfKXOw9f81KkE9NexQx0usiUSQIKdwdMGWc6fyraIqko7jIAkY/k0Nl8EQ== X-Received: by 2002:a05:6a00:10c8:b0:528:48c3:79e8 with SMTP id d8-20020a056a0010c800b0052848c379e8mr23288878pfu.67.1657094218623; Wed, 06 Jul 2022 00:56:58 -0700 (PDT) Received: from 470--5GDC--BLR.blore.vvdntech.com ([106.51.39.131]) by smtp.gmail.com with ESMTPSA id r4-20020a17090a438400b001ef81574355sm7378805pjg.12.2022.07.06.00.56.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 06 Jul 2022 00:56:58 -0700 (PDT) From: Aman Kumar To: dev@dpdk.org Cc: maxime.coquelin@redhat.com, david.marchand@redhat.com, aman.kumar@vvdntech.in Subject: [RFC PATCH 19/29] net/qdma: add callback function for Tx desc status Date: Wed, 6 Jul 2022 13:22:09 +0530 Message-Id: <20220706075219.517046-20-aman.kumar@vvdntech.in> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220706075219.517046-1-aman.kumar@vvdntech.in> References: <20220706075219.517046-1-aman.kumar@vvdntech.in> MIME-Version: 1.0 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 This patch implements dev->tx_descriptor_status function for net_qdma PMD. Signed-off-by: Aman Kumar --- drivers/net/qdma/qdma_devops.c | 1 + drivers/net/qdma/qdma_rxtx.c | 47 ++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/drivers/net/qdma/qdma_devops.c b/drivers/net/qdma/qdma_devops.c index 12391790f0..dfa41a9aa7 100644 --- a/drivers/net/qdma/qdma_devops.c +++ b/drivers/net/qdma/qdma_devops.c @@ -1759,4 +1759,5 @@ void qdma_dev_ops_init(struct rte_eth_dev *dev) dev->tx_pkt_burst = &qdma_xmit_pkts; dev->rx_queue_count = &qdma_dev_rx_queue_count; dev->rx_descriptor_status = &qdma_dev_rx_descriptor_status; + dev->tx_descriptor_status = &qdma_dev_tx_descriptor_status; } diff --git a/drivers/net/qdma/qdma_rxtx.c b/drivers/net/qdma/qdma_rxtx.c index 6842203ada..3abc72717f 100644 --- a/drivers/net/qdma/qdma_rxtx.c +++ b/drivers/net/qdma/qdma_rxtx.c @@ -559,6 +559,53 @@ qdma_dev_tx_done_cleanup(void *tx_queue, uint32_t free_cnt) return reclaim_tx_mbuf(txq, txq->wb_status->cidx, free_cnt); } +/** + * DPDK callback to check the status of a Tx descriptor in the queue. + * + * @param tx_queue + * Pointer to Tx queue specific data structure. + * @param offset + * The offset of the descriptor starting from tail (0 is the place where + * the next packet will be send). + * + * @return + * - (RTE_ETH_TX_DESC_FULL) Descriptor is being processed by the hw, i.e. + * in the transmit queue. + * - (RTE_ETH_TX_DESC_DONE) Hardware is done with this descriptor, it can + * be reused by the driver. + * - (RTE_ETH_TX_DESC_UNAVAIL): Descriptor is unavailable, reserved by the + * driver or the hardware. + * - (-EINVAL) bad descriptor offset. + */ +int +qdma_dev_tx_descriptor_status(void *tx_queue, uint16_t offset) +{ + struct qdma_tx_queue *txq = tx_queue; + uint16_t id; + int avail, in_use; + uint16_t cidx = 0; + + if (unlikely(offset >= (txq->nb_tx_desc - 1))) + return -EINVAL; + + /* One descriptor is reserved so that pidx is not same as old pidx */ + if (offset == (txq->nb_tx_desc - 2)) + return RTE_ETH_TX_DESC_UNAVAIL; + + id = txq->q_pidx_info.pidx; + cidx = txq->wb_status->cidx; + + in_use = (int)id - cidx; + if (in_use < 0) + in_use += (txq->nb_tx_desc - 1); + avail = txq->nb_tx_desc - 2 - in_use; + + if (offset < avail) + return RTE_ETH_TX_DESC_DONE; + + return RTE_ETH_TX_DESC_FULL; +} + /* Transmit API for Streaming mode */ uint16_t qdma_xmit_pkts_st(struct qdma_tx_queue *txq, struct rte_mbuf **tx_pkts, uint16_t nb_pkts)