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 5FE12A04A6; Fri, 7 Jan 2022 11:16:39 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D6BFD411B5; Fri, 7 Jan 2022 11:15:47 +0100 (CET) Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by mails.dpdk.org (Postfix) with ESMTP id 5221940140 for ; Fri, 7 Jan 2022 11:15:35 +0100 (CET) Received: from dggeme756-chm.china.huawei.com (unknown [172.30.72.57]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4JVfDS48Hwzbbdl; Fri, 7 Jan 2022 18:12:56 +0800 (CST) Received: from localhost.localdomain (10.69.192.56) by dggeme756-chm.china.huawei.com (10.3.19.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2308.20; Fri, 7 Jan 2022 18:15:33 +0800 From: "Min Hu (Connor)" To: CC: , Subject: [PATCH 11/15] net/hns3: extract a common interface to obtain revision ID Date: Fri, 7 Jan 2022 18:15:54 +0800 Message-ID: <20220107101558.39219-12-humin29@huawei.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220107101558.39219-1-humin29@huawei.com> References: <20220107101558.39219-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: dggems706-chm.china.huawei.com (10.3.19.183) To dggeme756-chm.china.huawei.com (10.3.19.102) 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 From: Huisong Li The code logic of obtaining the revision ID of PCI device is the same for PF and VF driver. This patch extracts a common interface to do it. Signed-off-by: Huisong Li --- drivers/net/hns3/hns3_common.c | 22 ++++++++++++++++++++++ drivers/net/hns3/hns3_common.h | 2 ++ drivers/net/hns3/hns3_ethdev.c | 16 ++++------------ drivers/net/hns3/hns3_ethdev_vf.c | 21 ++++----------------- 4 files changed, 32 insertions(+), 29 deletions(-) diff --git a/drivers/net/hns3/hns3_common.c b/drivers/net/hns3/hns3_common.c index cb581bb25a..1878bedf6c 100644 --- a/drivers/net/hns3/hns3_common.c +++ b/drivers/net/hns3/hns3_common.c @@ -815,3 +815,25 @@ hns3_restore_rx_interrupt(struct hns3_hw *hw) return 0; } + +int +hns3_get_pci_revision_id(struct hns3_hw *hw, uint8_t *revision_id) +{ + struct rte_pci_device *pci_dev; + struct rte_eth_dev *eth_dev; + uint8_t revision; + int ret; + + eth_dev = &rte_eth_devices[hw->data->port_id]; + pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); + ret = rte_pci_read_config(pci_dev, &revision, HNS3_PCI_REVISION_ID_LEN, + HNS3_PCI_REVISION_ID); + if (ret != HNS3_PCI_REVISION_ID_LEN) { + hns3_err(hw, "failed to read pci revision id, ret = %d", ret); + return -EIO; + } + + *revision_id = revision; + + return 0; +} diff --git a/drivers/net/hns3/hns3_common.h b/drivers/net/hns3/hns3_common.h index a9e8a9cccf..2994e4a269 100644 --- a/drivers/net/hns3/hns3_common.h +++ b/drivers/net/hns3/hns3_common.h @@ -59,4 +59,6 @@ int hns3_map_rx_interrupt(struct rte_eth_dev *dev); void hns3_unmap_rx_interrupt(struct rte_eth_dev *dev); int hns3_restore_rx_interrupt(struct hns3_hw *hw); +int hns3_get_pci_revision_id(struct hns3_hw *hw, uint8_t *revision_id); + #endif /* _HNS3_COMMON_H_ */ diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c index 1deba2a055..a4ed08b52b 100644 --- a/drivers/net/hns3/hns3_ethdev.c +++ b/drivers/net/hns3/hns3_ethdev.c @@ -5,7 +5,6 @@ #include #include #include -#include #include "hns3_ethdev.h" #include "hns3_common.h" @@ -2738,7 +2737,6 @@ hns3_get_capability(struct hns3_hw *hw) struct hns3_pf *pf = &hns->pf; struct rte_eth_dev *eth_dev; uint16_t device_id; - uint8_t revision; int ret; eth_dev = &rte_eth_devices[hw->data->port_id]; @@ -2751,17 +2749,11 @@ hns3_get_capability(struct hns3_hw *hw) device_id == HNS3_DEV_ID_200G_RDMA) hns3_set_bit(hw->capability, HNS3_DEV_SUPPORT_DCB_B, 1); - /* Get PCI revision id */ - ret = rte_pci_read_config(pci_dev, &revision, HNS3_PCI_REVISION_ID_LEN, - HNS3_PCI_REVISION_ID); - if (ret != HNS3_PCI_REVISION_ID_LEN) { - PMD_INIT_LOG(ERR, "failed to read pci revision id, ret = %d", - ret); - return -EIO; - } - hw->revision = revision; + ret = hns3_get_pci_revision_id(hw, &hw->revision); + if (ret) + return ret; - if (revision < PCI_REVISION_ID_HIP09_A) { + if (hw->revision < PCI_REVISION_ID_HIP09_A) { hns3_set_default_dev_specifications(hw); hw->intr.mapping_mode = HNS3_INTR_MAPPING_VEC_RSV_ONE; hw->intr.gl_unit = HNS3_INTR_COALESCE_GL_UINT_2US; diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c index 0921534205..18abf9b109 100644 --- a/drivers/net/hns3/hns3_ethdev_vf.c +++ b/drivers/net/hns3/hns3_ethdev_vf.c @@ -6,7 +6,6 @@ #include #include #include -#include #include #include "hns3_ethdev.h" @@ -810,25 +809,13 @@ hns3vf_get_push_lsc_cap(struct hns3_hw *hw) static int hns3vf_get_capability(struct hns3_hw *hw) { - struct rte_pci_device *pci_dev; - struct rte_eth_dev *eth_dev; - uint8_t revision; int ret; - eth_dev = &rte_eth_devices[hw->data->port_id]; - pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); - - /* Get PCI revision id */ - ret = rte_pci_read_config(pci_dev, &revision, HNS3_PCI_REVISION_ID_LEN, - HNS3_PCI_REVISION_ID); - if (ret != HNS3_PCI_REVISION_ID_LEN) { - PMD_INIT_LOG(ERR, "failed to read pci revision id, ret = %d", - ret); - return -EIO; - } - hw->revision = revision; + ret = hns3_get_pci_revision_id(hw, &hw->revision); + if (ret) + return ret; - if (revision < PCI_REVISION_ID_HIP09_A) { + if (hw->revision < PCI_REVISION_ID_HIP09_A) { hns3vf_set_default_dev_specifications(hw); hw->intr.mapping_mode = HNS3_INTR_MAPPING_VEC_RSV_ONE; hw->intr.gl_unit = HNS3_INTR_COALESCE_GL_UINT_2US; -- 2.33.0