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 B7380A0508; Thu, 14 Apr 2022 15:02:13 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 538AD427F6; Thu, 14 Apr 2022 15:02:01 +0200 (CEST) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by mails.dpdk.org (Postfix) with ESMTP id 0197541156 for ; Thu, 14 Apr 2022 15:01:59 +0200 (CEST) Received: from kwepemi500012.china.huawei.com (unknown [172.30.72.57]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4KfKLZ6zygzgYdV for ; Thu, 14 Apr 2022 21:00:06 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by kwepemi500012.china.huawei.com (7.221.188.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 14 Apr 2022 21:01:56 +0800 From: "Min Hu (Connor)" To: CC: "Min Hu (Connor)" , Yisen Zhuang , Lijun Ou Subject: [PATCH 3/5] net/hns3: refactor queue info dump Date: Thu, 14 Apr 2022 21:00:54 +0800 Message-ID: <20220414130056.37428-4-humin29@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220414130056.37428-1-humin29@huawei.com> References: <20220414130056.37428-1-humin29@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.69.192.56] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To kwepemi500012.china.huawei.com (7.221.188.12) X-CFilter-Loop: Reflected 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 refactor queue info dump. Fixes: 6038c8a3f63c ("net/hns3: dump queue info") Signed-off-by: Min Hu (Connor) --- drivers/net/hns3/hns3_ethdev_dump.c | 133 +++++++++++++--------------- 1 file changed, 62 insertions(+), 71 deletions(-) diff --git a/drivers/net/hns3/hns3_ethdev_dump.c b/drivers/net/hns3/hns3_ethdev_dump.c index 059a4d8644..9934e4e1cc 100644 --- a/drivers/net/hns3/hns3_ethdev_dump.c +++ b/drivers/net/hns3/hns3_ethdev_dump.c @@ -224,99 +224,94 @@ get_device_basic_info(FILE *file, struct rte_eth_dev *dev) dev->data->dev_conf.intr_conf.rxq); } -/* - * Note: caller must make sure queue_id < nb_queues - * nb_queues = RTE_MAX(eth_dev->data->nb_rx_queues, - * eth_dev->data->nb_tx_queues) - */ static struct hns3_rx_queue * -get_rx_queue(struct rte_eth_dev *dev, unsigned int queue_id) +get_rx_queue(struct rte_eth_dev *dev) { - struct hns3_adapter *hns = dev->data->dev_private; - struct hns3_hw *hw = &hns->hw; - unsigned int offset; + struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct hns3_rx_queue *rxq; + uint32_t queue_id; void **rx_queues; - if (queue_id < dev->data->nb_rx_queues) { + for (queue_id = 0; queue_id < dev->data->nb_rx_queues; queue_id++) { rx_queues = dev->data->rx_queues; - offset = queue_id; - } else { - /* - * For kunpeng930, fake queue is not exist. But since the queues - * are usually accessd in pairs, this branch may still exist. - */ - if (hns3_dev_get_support(hw, INDEP_TXRX)) + if (rx_queues == NULL || rx_queues[queue_id] == NULL) { + hns3_err(hw, "detect rx_queues is NULL!\n"); return NULL; + } - rx_queues = hw->fkq_data.rx_queues; - offset = queue_id - dev->data->nb_rx_queues; - } + rxq = (struct hns3_rx_queue *)rx_queues[queue_id]; + if (rxq->rx_deferred_start) + continue; - if (rx_queues != NULL && rx_queues[offset] != NULL) - return rx_queues[offset]; + return rx_queues[queue_id]; + } - hns3_err(hw, "Detect rx_queues is NULL!\n"); return NULL; } -/* - * Note: caller must make sure queue_id < nb_queues - * nb_queues = RTE_MAX(eth_dev->data->nb_rx_queues, - * eth_dev->data->nb_tx_queues) - */ static struct hns3_tx_queue * -get_tx_queue(struct rte_eth_dev *dev, unsigned int queue_id) +get_tx_queue(struct rte_eth_dev *dev) { - struct hns3_adapter *hns = dev->data->dev_private; - struct hns3_hw *hw = &hns->hw; - unsigned int offset; + struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct hns3_tx_queue *txq; + uint32_t queue_id; void **tx_queues; - if (queue_id < dev->data->nb_tx_queues) { + for (queue_id = 0; queue_id < dev->data->nb_tx_queues; queue_id++) { tx_queues = dev->data->tx_queues; - offset = queue_id; - } else { - /* - * For kunpeng930, fake queue is not exist. But since the queues - * are usually accessd in pairs, this branch may still exist. - */ - if (hns3_dev_get_support(hw, INDEP_TXRX)) + if (tx_queues == NULL || tx_queues[queue_id] == NULL) { + hns3_err(hw, "detect tx_queues is NULL!\n"); return NULL; - tx_queues = hw->fkq_data.tx_queues; - offset = queue_id - dev->data->nb_tx_queues; - } + } - if (tx_queues != NULL && tx_queues[offset] != NULL) - return tx_queues[offset]; + txq = (struct hns3_tx_queue *)tx_queues[queue_id]; + if (txq->tx_deferred_start) + continue; + + return tx_queues[queue_id]; + } - hns3_err(hw, "Detect tx_queues is NULL!\n"); return NULL; } static void get_rxtx_fake_queue_info(FILE *file, struct rte_eth_dev *dev) { - struct hns3_adapter *hns = dev->data->dev_private; - struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(hns); + struct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct hns3_rx_queue *rxq; struct hns3_tx_queue *txq; - unsigned int queue_id; - - if (dev->data->nb_rx_queues != dev->data->nb_tx_queues && - !hns3_dev_get_support(hw, INDEP_TXRX)) { - queue_id = RTE_MIN(dev->data->nb_rx_queues, - dev->data->nb_tx_queues); - rxq = get_rx_queue(dev, queue_id); - if (rxq == NULL) + uint32_t queue_id = 0; + void **rx_queues; + void **tx_queues; + + if (hns3_dev_get_support(hw, INDEP_TXRX)) + return; + + if (dev->data->nb_rx_queues < dev->data->nb_tx_queues) { + rx_queues = hw->fkq_data.rx_queues; + if (rx_queues == NULL || rx_queues[queue_id] == NULL) { + hns3_err(hw, "detect rx_queues is NULL!\n"); return; - txq = get_tx_queue(dev, queue_id); - if (txq == NULL) + } + rxq = (struct hns3_rx_queue *)rx_queues[queue_id]; + + fprintf(file, + "\t -- first fake_queue info:\n" + "\t Rx: port=%u nb_desc=%u free_thresh=%u\n", + rxq->port_id, rxq->nb_rx_desc, rxq->rx_free_thresh); + } else if (dev->data->nb_rx_queues > dev->data->nb_tx_queues) { + tx_queues = hw->fkq_data.tx_queues; + queue_id = 0; + + if (tx_queues == NULL || tx_queues[queue_id] == NULL) { + hns3_err(hw, "detect tx_queues is NULL!\n"); return; + } + txq = (struct hns3_tx_queue *)tx_queues[queue_id]; + fprintf(file, - "\t -- first fake_queue rxtx info:\n" - "\t rx: port=%u nb_desc=%u free_thresh=%u\n" - "\t tx: port=%u nb_desc=%u\n", - rxq->port_id, rxq->nb_rx_desc, rxq->rx_free_thresh, + "\t -- first fake_queue info:\n" + "\t Tx: port=%u nb_desc=%u\n", txq->port_id, txq->nb_tx_desc); } } @@ -422,23 +417,19 @@ get_rxtx_queue_info(FILE *file, struct rte_eth_dev *dev) { struct hns3_rx_queue *rxq; struct hns3_tx_queue *txq; - unsigned int queue_id = 0; - rxq = get_rx_queue(dev, queue_id); + rxq = get_rx_queue(dev); if (rxq == NULL) return; - txq = get_tx_queue(dev, queue_id); + txq = get_tx_queue(dev); if (txq == NULL) return; fprintf(file, " - Rx/Tx Queue Info:\n"); fprintf(file, - "\t -- nb_rx_queues=%u nb_tx_queues=%u, " - "first queue rxtx info:\n" - "\t rx: port=%u nb_desc=%u free_thresh=%u\n" - "\t tx: port=%u nb_desc=%u\n" + "\t -- first queue rxtx info:\n" + "\t Rx: port=%u nb_desc=%u free_thresh=%u\n" + "\t Tx: port=%u nb_desc=%u\n" "\t -- tx push: %s\n", - dev->data->nb_rx_queues, - dev->data->nb_tx_queues, rxq->port_id, rxq->nb_rx_desc, rxq->rx_free_thresh, txq->port_id, txq->nb_tx_desc, txq->tx_push_enable ? "enabled" : "disabled"); -- 2.33.0