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 D107CA04B5; Thu, 10 Sep 2020 03:56:52 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 71C191B9B7; Thu, 10 Sep 2020 03:56:52 +0200 (CEST) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40064.outbound.protection.outlook.com [40.107.4.64]) by dpdk.org (Postfix) with ESMTP id 432332BA8 for ; Thu, 10 Sep 2020 03:56:51 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=kLVygpr/xRXXj472o0RK0Y5BtzI5TdC/E7z5ll+uF5v+Spr9KWpX5x46fKmrXJ4Jj4SfmI7bBxQ6/AUYXpSLHs/wUvVlioUeVQLZ9Ll204qOhslmKg7L8wNlGd8YqUVwiicd1ihPOVhMJDDuZi2s/ezJ9PEtnzYKRjyiC2sem3+Szt/s0Qg4Hy4a4EmADhfVKBkqZfrEvGHcJYUu77oUftQXqXvU66TwzgPQfnzEFwsiQh9jyNdvV9ISWW05GR3GyWGBxFWcsq/5jaW1hvO/o/GP+soIclaQDh1Yn4Tg8zRFVtjcdrLqzau8TUWlZSOjNGFN/Tveh7nq576l4vA8Qg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BE6H4+Reb7FdmsHXcLCoDR0YfJ7ydtPm9hmHRGlmMTs=; b=kJurIx80B3k6fTiDTAGhLLub02H2UIyURd6QmkXWjmQUdAjU+HZB9iIB8Efs7pjwIpwjhdow5/dMuLXMpr/u5dbSCvaF9vkmJdGLhVS8v/ANh0c5S7ifQARwoL16RZ8BmaVz/HumqyK6u4Xl5R6rKAOQsH2aJ2fRmXkfQHzAXcnuv3/dGkXS4/YZRQR+8YMcQNTq6kVgY58+PnsIHUnXrk6eA59bUWaMIpFBUkHuJl3DX0NEFDAPsoJwhBG5oanaHy0HKZEgYduNf6Mr3Sims91StybpTZwMEXq8aDtwPfb2rKgLpU1chmynPCQXp6YG/uqRyeHMptSQ6whzUpVy7g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BE6H4+Reb7FdmsHXcLCoDR0YfJ7ydtPm9hmHRGlmMTs=; b=aJD/Q2nyCZnEDJ/XDEamaArZrcPLTAbA6dpuZAw+19Pc7IqwZ5J7FeqFAlR1CpEUBRNkzd1AugvYJqB8AQVI4APhTu46a1NON7iGvWXbvAAZpISNt2dA/8q9SDXplCi2E0TzDksqGDBn0ulhTqH1bEDYr/gusFDFxbU22mmRJA8= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=oss.nxp.com; Received: from VI1PR04MB5837.eurprd04.prod.outlook.com (2603:10a6:803:ec::28) by VI1PR04MB7101.eurprd04.prod.outlook.com (2603:10a6:800:12e::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3348.15; Thu, 10 Sep 2020 01:56:49 +0000 Received: from VI1PR04MB5837.eurprd04.prod.outlook.com ([fe80::cc01:9fe2:2544:8a4b]) by VI1PR04MB5837.eurprd04.prod.outlook.com ([fe80::cc01:9fe2:2544:8a4b%7]) with mapi id 15.20.3348.019; Thu, 10 Sep 2020 01:56:49 +0000 To: dev@dpdk.org, ferruh.yigit@intel.com References: <20200824094021.2323605-1-ferruh.yigit@intel.com> <20200909130148.1756518-1-ferruh.yigit@intel.com> <20200909130148.1756518-2-ferruh.yigit@intel.com> From: "Sachin Saxena (OSS)" Message-ID: <02d0f9c3-4d7c-ac78-9cda-8bdf5d637f56@oss.nxp.com> Date: Thu, 10 Sep 2020 07:26:41 +0530 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0 In-Reply-To: <20200909130148.1756518-2-ferruh.yigit@intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-ClientProxiedBy: SG2PR06CA0248.apcprd06.prod.outlook.com (2603:1096:4:ac::32) To VI1PR04MB5837.eurprd04.prod.outlook.com (2603:10a6:803:ec::28) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.1.3] (106.201.0.162) by SG2PR06CA0248.apcprd06.prod.outlook.com (2603:1096:4:ac::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3370.16 via Frontend Transport; Thu, 10 Sep 2020 01:56:47 +0000 X-Originating-IP: [106.201.0.162] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 1f457d28-a9d0-497b-d554-08d8552cc7ab X-MS-TrafficTypeDiagnostic: VI1PR04MB7101: X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7NSnVzVVjnt68uf00jSOfasm/FoEZ8Ah0Kb5U9JNZIwEzlnFsKSwQlaKOgZYcLLpi7fjX+SLiwNs9ixTVwhiWQlLmlVFNTqgAY6Sh87M7OyTpTiUQ1QkdOSFre/uiKmNeSWgXxzKeNHgeO813LxN219Kchqkf4ZybXHk7sFSDJ0KU02YIoB47/g+RE3yz52oUkErsDtCYpIvXgekXXiZYutnifuSy13XfYCcsoEaEjMyXzfNrhfu8Mr0eSRrd4Yy2Efd42b0udKCyM1/St/4hY72wnRjGu6vJrrnY17KFkarc/8ZKGHLLOpEGj5rLg9zJu+Z8JeELK2JczZuKCS0eab9lm4Y87wAuDN39qHyyoP3+u3mcWnguzIFRJ4IKCun X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5837.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(39860400002)(366004)(136003)(396003)(346002)(376002)(2906002)(316002)(2616005)(1006002)(6666004)(956004)(16576012)(16526019)(30864003)(66476007)(66946007)(31696002)(6486002)(26005)(186003)(53546011)(55236004)(83380400001)(86362001)(478600001)(31686004)(52116002)(8936002)(5660300002)(66556008)(8676002)(43740500002)(579004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: Pk2QhdMI/ak4mfoVkmcGeX8BiMjkGyTRQNIw6pJGXh5P6LZKyI3Rf9YLhJb3l2dS4iIyf1PyCYheM5qDrDpOfw4y4KTezB3WrNwxFloLNBticI6QG+JlK8cldQJjg1W+k3dKJOC33G1TN1ZXKo8sJFRl3fbcsXuwAkmaL3WAtse1gUl6l/a3I6VrQ9shBtq4OebZKGTnNs1a+rB9gDsf0j8GUSicwS27UU9KrOCk0yd/FSskpyJIOfulacr6NK77K8yrmgCEnUl1u0JJKB7+MSoMKJgqZkzErYl5AE3vw4p2/VuyUM3uVuCjKDYwWo4fYRKWBws/w5uvvPSdSkJe0g3w+weuvpedx5EXUm3L8k81cG/Clu+V63Yqfesa1tLHC9vG79qTSgpsLXGTuYm8KsqJY008VHxhRCMcyqcvnd1LsitDPL0FSwpytKNu0yD5R7FL0hS37H3cZwqWXaxCkCsR9mQLkXfvUQmM6S62pUjh9tF68+4I1r55jvYgeYw2XCv3KdJmg5IenkoTfhcYPNLFHFIJNZQrZKzjMEXlwPt9cjYjhm6Bz2vwonjpvU/cGfoJ52mlJF7s2Ssd0peTrUkERVzojHG6ISIvTp4Uy2OcYcW+ZsmipQKQVo9JTQtd9xOU9Q+AsVVwlX5fuhoh1A== X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1f457d28-a9d0-497b-d554-08d8552cc7ab X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5837.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Sep 2020 01:56:49.5611 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 1w6VfZdk9Q9PxxBxlOH0WojwPATgxUH7ijoKifJUpt60CKGomcrQ2Yhpf0HT8q4ouT4nZD5MMu8YRWzO14xt6A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB7101 Subject: Re: [dpdk-dev] [PATCH v4 2/7] ethdev: move inline device operations 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" Acked-by: Sachin Saxena On 09-Sep-20 6:31 PM, Ferruh Yigit wrote: > This patch is a preparation to hide the 'struct eth_dev_ops' from > applications by moving some device operations from 'struct eth_dev_ops' > to 'struct rte_eth_dev'. > > Mentioned ethdev APIs are in the data path and implemented as inline > because of performance reasons. > > Exposing 'struct eth_dev_ops' to applications is bad because it is a > contract between ethdev and PMDs, not really needs to be known by > applications, also changes in the struct causing ABI breakages which > shouldn't. > > To be able to both keep APIs inline and hide the 'struct eth_dev_ops', > moving device operations used in ethdev inline APIs to 'struct > rte_eth_dev' to the same level with Rx/Tx burst functions. > > The list of dev_ops moved: > eth_rx_queue_count_t rx_queue_count; > eth_rx_descriptor_done_t rx_descriptor_done; > eth_rx_descriptor_status_t rx_descriptor_status; > eth_tx_descriptor_status_t tx_descriptor_status; > > Signed-off-by: Ferruh Yigit > Reviewed-by: Andrew Rybchenko > Acked-by: David Marchand > --- > v2: > * Updated features.rst > * Tweak assignment order in sfc > > Cc: David Marchand > v3: > * ``rx_descriptor_done`` also moved > * release note updated > --- > doc/guides/nics/features.rst | 6 +++--- > doc/guides/rel_notes/release_20_11.rst | 9 +++++++++ > drivers/net/ark/ark_ethdev.c | 2 +- > drivers/net/atlantic/atl_ethdev.c | 9 +++++---- > drivers/net/axgbe/axgbe_ethdev.c | 5 +++-- > drivers/net/bnxt/bnxt_ethdev.c | 6 +++--- > drivers/net/dpaa/dpaa_ethdev.c | 2 +- > drivers/net/dpaa2/dpaa2_ethdev.c | 2 +- > drivers/net/e1000/em_ethdev.c | 8 ++++---- > drivers/net/e1000/igb_ethdev.c | 14 +++++++------- > drivers/net/enic/enic_ethdev.c | 3 +-- > drivers/net/fm10k/fm10k_ethdev.c | 8 ++++---- > drivers/net/i40e/i40e_ethdev.c | 8 ++++---- > drivers/net/i40e/i40e_ethdev_vf.c | 8 ++++---- > drivers/net/iavf/iavf_ethdev.c | 6 +++--- > drivers/net/ice/ice_ethdev.c | 6 +++--- > drivers/net/igc/igc_ethdev.c | 8 ++++---- > drivers/net/ixgbe/ixgbe_ethdev.c | 14 +++++++------- > drivers/net/mlx5/linux/mlx5_os.c | 12 +++++------- > drivers/net/mlx5/mlx5_flow.c | 4 ++++ > drivers/net/netvsc/hn_ethdev.c | 6 +++--- > drivers/net/nfp/nfp_net.c | 2 +- > drivers/net/octeontx2/otx2_ethdev.c | 8 ++++---- > drivers/net/qede/qede_ethdev.c | 3 +-- > drivers/net/sfc/sfc_ethdev.c | 16 ++++++++-------- > drivers/net/thunderx/nicvf_ethdev.c | 2 +- > drivers/net/vhost/rte_eth_vhost.c | 2 +- > drivers/net/virtio/virtio_ethdev.c | 2 +- > lib/librte_ethdev/rte_ethdev.h | 17 ++++++++--------- > lib/librte_ethdev/rte_ethdev_core.h | 13 ++++++------- > 30 files changed, 110 insertions(+), 101 deletions(-) > > diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst > index edd21c4d8e..dd8c9555b0 100644 > --- a/doc/guides/nics/features.rst > +++ b/doc/guides/nics/features.rst > @@ -646,9 +646,9 @@ used, status can be "Available", "Done" or "Unavailable". When > ``rx_descriptor_done`` is used, status can be "DD bit is set" or "DD bit is > not set". > > -* **[implements] eth_dev_ops**: ``rx_descriptor_status``. > +* **[implements] rte_eth_dev**: ``rx_descriptor_status``. > * **[related] API**: ``rte_eth_rx_descriptor_status()``. > -* **[implements] eth_dev_ops**: ``rx_descriptor_done``. > +* **[implements] rte_eth_dev**: ``rx_descriptor_done``. > * **[related] API**: ``rte_eth_rx_descriptor_done()``. > > > @@ -660,7 +660,7 @@ Tx descriptor status > Supports checking the status of a Tx descriptor. Status can be "Full", "Done" > or "Unavailable." > > -* **[implements] eth_dev_ops**: ``tx_descriptor_status``. > +* **[implements] rte_eth_dev**: ``tx_descriptor_status``. > * **[related] API**: ``rte_eth_tx_descriptor_status()``. > > > diff --git a/doc/guides/rel_notes/release_20_11.rst b/doc/guides/rel_notes/release_20_11.rst > index a7d57b001d..ff7242012b 100644 > --- a/doc/guides/rel_notes/release_20_11.rst > +++ b/doc/guides/rel_notes/release_20_11.rst > @@ -102,6 +102,15 @@ ABI Changes > Also, make sure to start the actual text at the margin. > ======================================================= > > +* ``ethdev`` changes > + > + * Following device operation function pointers moved from ``struct eth_dev_ops`` to ``struct rte_eth_dev``: > + > + * ``eth_rx_queue_count_t rx_queue_count;`` > + * ``eth_rx_descriptor_done_t rx_descriptor_done;`` > + * ``eth_rx_descriptor_status_t rx_descriptor_status;`` > + * ``eth_tx_descriptor_status_t tx_descriptor_status;`` > + > > Known Issues > ------------ > diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c > index b32ccd8677..ce7f6e4803 100644 > --- a/drivers/net/ark/ark_ethdev.c > +++ b/drivers/net/ark/ark_ethdev.c > @@ -132,7 +132,6 @@ static const struct eth_dev_ops ark_eth_dev_ops = { > .dev_infos_get = eth_ark_dev_info_get, > > .rx_queue_setup = eth_ark_dev_rx_queue_setup, > - .rx_queue_count = eth_ark_dev_rx_queue_count, > .tx_queue_setup = eth_ark_tx_queue_setup, > > .link_update = eth_ark_dev_link_update, > @@ -318,6 +317,7 @@ eth_ark_dev_init(struct rte_eth_dev *dev) > return -1; > > dev->dev_ops = &ark_eth_dev_ops; > + dev->rx_queue_count = eth_ark_dev_rx_queue_count; > > dev->data->mac_addrs = rte_zmalloc("ark", RTE_ETHER_ADDR_LEN, 0); > if (!dev->data->mac_addrs) { > diff --git a/drivers/net/atlantic/atl_ethdev.c b/drivers/net/atlantic/atl_ethdev.c > index d3b00ab295..540b106045 100644 > --- a/drivers/net/atlantic/atl_ethdev.c > +++ b/drivers/net/atlantic/atl_ethdev.c > @@ -313,10 +313,6 @@ static const struct eth_dev_ops atl_eth_dev_ops = { > .rx_queue_intr_enable = atl_dev_rx_queue_intr_enable, > .rx_queue_intr_disable = atl_dev_rx_queue_intr_disable, > > - .rx_queue_count = atl_rx_queue_count, > - .rx_descriptor_status = atl_dev_rx_descriptor_status, > - .tx_descriptor_status = atl_dev_tx_descriptor_status, > - > /* EEPROM */ > .get_eeprom_length = atl_dev_get_eeprom_length, > .get_eeprom = atl_dev_get_eeprom, > @@ -373,6 +369,11 @@ eth_atl_dev_init(struct rte_eth_dev *eth_dev) > PMD_INIT_FUNC_TRACE(); > > eth_dev->dev_ops = &atl_eth_dev_ops; > + > + eth_dev->rx_queue_count = atl_rx_queue_count; > + eth_dev->rx_descriptor_status = atl_dev_rx_descriptor_status; > + eth_dev->tx_descriptor_status = atl_dev_tx_descriptor_status; > + > eth_dev->rx_pkt_burst = &atl_recv_pkts; > eth_dev->tx_pkt_burst = &atl_xmit_pkts; > eth_dev->tx_pkt_prepare = &atl_prep_pkts; > diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c > index 0c25739f82..02ceb95754 100644 > --- a/drivers/net/axgbe/axgbe_ethdev.c > +++ b/drivers/net/axgbe/axgbe_ethdev.c > @@ -224,8 +224,6 @@ static const struct eth_dev_ops axgbe_eth_dev_ops = { > .rxq_info_get = axgbe_rxq_info_get, > .txq_info_get = axgbe_txq_info_get, > .dev_supported_ptypes_get = axgbe_dev_supported_ptypes_get, > - .rx_descriptor_status = axgbe_dev_rx_descriptor_status, > - .tx_descriptor_status = axgbe_dev_tx_descriptor_status, > .mtu_set = axgb_mtu_set, > }; > > @@ -1632,6 +1630,9 @@ eth_axgbe_dev_init(struct rte_eth_dev *eth_dev) > > eth_dev->dev_ops = &axgbe_eth_dev_ops; > > + eth_dev->rx_descriptor_status = axgbe_dev_rx_descriptor_status; > + eth_dev->tx_descriptor_status = axgbe_dev_tx_descriptor_status; > + > /* > * For secondary processes, we don't initialise any further as primary > * has already done this work. > diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c > index 75d055be00..4d224bfa04 100644 > --- a/drivers/net/bnxt/bnxt_ethdev.c > +++ b/drivers/net/bnxt/bnxt_ethdev.c > @@ -4246,9 +4246,6 @@ static const struct eth_dev_ops bnxt_dev_ops = { > .dev_led_off = bnxt_dev_led_off_op, > .xstats_get_by_id = bnxt_dev_xstats_get_by_id_op, > .xstats_get_names_by_id = bnxt_dev_xstats_get_names_by_id_op, > - .rx_queue_count = bnxt_rx_queue_count_op, > - .rx_descriptor_status = bnxt_rx_descriptor_status_op, > - .tx_descriptor_status = bnxt_tx_descriptor_status_op, > .rx_queue_start = bnxt_rx_queue_start, > .rx_queue_stop = bnxt_rx_queue_stop, > .tx_queue_start = bnxt_tx_queue_start, > @@ -5681,6 +5678,9 @@ bnxt_dev_init(struct rte_eth_dev *eth_dev, void *params __rte_unused) > PMD_DRV_LOG(INFO, "%s\n", bnxt_version); > > eth_dev->dev_ops = &bnxt_dev_ops; > + eth_dev->rx_queue_count = bnxt_rx_queue_count_op; > + eth_dev->rx_descriptor_status = bnxt_rx_descriptor_status_op; > + eth_dev->tx_descriptor_status = bnxt_tx_descriptor_status_op; > eth_dev->rx_pkt_burst = &bnxt_recv_pkts; > eth_dev->tx_pkt_burst = &bnxt_xmit_pkts; > > diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c > index b0f2023e60..e2c3fd0368 100644 > --- a/drivers/net/dpaa/dpaa_ethdev.c > +++ b/drivers/net/dpaa/dpaa_ethdev.c > @@ -1421,7 +1421,6 @@ static struct eth_dev_ops dpaa_devops = { > .tx_queue_setup = dpaa_eth_tx_queue_setup, > .rx_queue_release = dpaa_eth_rx_queue_release, > .tx_queue_release = dpaa_eth_tx_queue_release, > - .rx_queue_count = dpaa_dev_rx_queue_count, > .rx_burst_mode_get = dpaa_dev_rx_burst_mode_get, > .tx_burst_mode_get = dpaa_dev_tx_burst_mode_get, > .rxq_info_get = dpaa_rxq_info_get, > @@ -1917,6 +1916,7 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) > > /* Populate ethdev structure */ > eth_dev->dev_ops = &dpaa_devops; > + eth_dev->rx_queue_count = dpaa_dev_rx_queue_count; > eth_dev->rx_pkt_burst = dpaa_eth_queue_rx; > eth_dev->tx_pkt_burst = dpaa_eth_tx_drop_all; > > diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c > index 02c254846c..38cf0ab71c 100644 > --- a/drivers/net/dpaa2/dpaa2_ethdev.c > +++ b/drivers/net/dpaa2/dpaa2_ethdev.c > @@ -2331,7 +2331,6 @@ static struct eth_dev_ops dpaa2_ethdev_ops = { > .tx_queue_release = dpaa2_dev_tx_queue_release, > .rx_burst_mode_get = dpaa2_dev_rx_burst_mode_get, > .tx_burst_mode_get = dpaa2_dev_tx_burst_mode_get, > - .rx_queue_count = dpaa2_dev_rx_queue_count, > .flow_ctrl_get = dpaa2_flow_ctrl_get, > .flow_ctrl_set = dpaa2_flow_ctrl_set, > .mac_addr_add = dpaa2_dev_add_mac_addr, > @@ -2486,6 +2485,7 @@ dpaa2_dev_init(struct rte_eth_dev *eth_dev) > * plugged. > */ > eth_dev->dev_ops = &dpaa2_ethdev_ops; > + eth_dev->rx_queue_count = dpaa2_dev_rx_queue_count; > if (dpaa2_get_devargs(dev->devargs, DRIVER_LOOPBACK_MODE)) > eth_dev->rx_pkt_burst = dpaa2_dev_loopback_rx; > else if (dpaa2_get_devargs(dev->devargs, > diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c > index 902b1cdca0..82766da882 100644 > --- a/drivers/net/e1000/em_ethdev.c > +++ b/drivers/net/e1000/em_ethdev.c > @@ -176,10 +176,6 @@ static const struct eth_dev_ops eth_em_ops = { > .vlan_offload_set = eth_em_vlan_offload_set, > .rx_queue_setup = eth_em_rx_queue_setup, > .rx_queue_release = eth_em_rx_queue_release, > - .rx_queue_count = eth_em_rx_queue_count, > - .rx_descriptor_done = eth_em_rx_descriptor_done, > - .rx_descriptor_status = eth_em_rx_descriptor_status, > - .tx_descriptor_status = eth_em_tx_descriptor_status, > .tx_queue_setup = eth_em_tx_queue_setup, > .tx_queue_release = eth_em_tx_queue_release, > .rx_queue_intr_enable = eth_em_rx_queue_intr_enable, > @@ -250,6 +246,10 @@ eth_em_dev_init(struct rte_eth_dev *eth_dev) > E1000_DEV_PRIVATE_TO_VFTA(eth_dev->data->dev_private); > > eth_dev->dev_ops = ð_em_ops; > + eth_dev->rx_queue_count = eth_em_rx_queue_count; > + eth_dev->rx_descriptor_done = eth_em_rx_descriptor_done; > + eth_dev->rx_descriptor_status = eth_em_rx_descriptor_status; > + eth_dev->tx_descriptor_status = eth_em_tx_descriptor_status; > eth_dev->rx_pkt_burst = (eth_rx_burst_t)ð_em_recv_pkts; > eth_dev->tx_pkt_burst = (eth_tx_burst_t)ð_em_xmit_pkts; > eth_dev->tx_pkt_prepare = (eth_tx_prep_t)ð_em_prep_pkts; > diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c > index a5551e8175..fe0cea88c2 100644 > --- a/drivers/net/e1000/igb_ethdev.c > +++ b/drivers/net/e1000/igb_ethdev.c > @@ -380,10 +380,6 @@ static const struct eth_dev_ops eth_igb_ops = { > .rx_queue_intr_enable = eth_igb_rx_queue_intr_enable, > .rx_queue_intr_disable = eth_igb_rx_queue_intr_disable, > .rx_queue_release = eth_igb_rx_queue_release, > - .rx_queue_count = eth_igb_rx_queue_count, > - .rx_descriptor_done = eth_igb_rx_descriptor_done, > - .rx_descriptor_status = eth_igb_rx_descriptor_status, > - .tx_descriptor_status = eth_igb_tx_descriptor_status, > .tx_queue_setup = eth_igb_tx_queue_setup, > .tx_queue_release = eth_igb_tx_queue_release, > .tx_done_cleanup = eth_igb_tx_done_cleanup, > @@ -441,9 +437,6 @@ static const struct eth_dev_ops igbvf_eth_dev_ops = { > .dev_supported_ptypes_get = eth_igb_supported_ptypes_get, > .rx_queue_setup = eth_igb_rx_queue_setup, > .rx_queue_release = eth_igb_rx_queue_release, > - .rx_descriptor_done = eth_igb_rx_descriptor_done, > - .rx_descriptor_status = eth_igb_rx_descriptor_status, > - .tx_descriptor_status = eth_igb_tx_descriptor_status, > .tx_queue_setup = eth_igb_tx_queue_setup, > .tx_queue_release = eth_igb_tx_queue_release, > .tx_done_cleanup = eth_igb_tx_done_cleanup, > @@ -754,6 +747,10 @@ eth_igb_dev_init(struct rte_eth_dev *eth_dev) > uint32_t ctrl_ext; > > eth_dev->dev_ops = ð_igb_ops; > + eth_dev->rx_queue_count = eth_igb_rx_queue_count; > + eth_dev->rx_descriptor_done = eth_igb_rx_descriptor_done; > + eth_dev->rx_descriptor_status = eth_igb_rx_descriptor_status; > + eth_dev->tx_descriptor_status = eth_igb_tx_descriptor_status; > eth_dev->rx_pkt_burst = ð_igb_recv_pkts; > eth_dev->tx_pkt_burst = ð_igb_xmit_pkts; > eth_dev->tx_pkt_prepare = ð_igb_prep_pkts; > @@ -949,6 +946,9 @@ eth_igbvf_dev_init(struct rte_eth_dev *eth_dev) > PMD_INIT_FUNC_TRACE(); > > eth_dev->dev_ops = &igbvf_eth_dev_ops; > + eth_dev->rx_descriptor_done = eth_igb_rx_descriptor_done; > + eth_dev->rx_descriptor_status = eth_igb_rx_descriptor_status; > + eth_dev->tx_descriptor_status = eth_igb_tx_descriptor_status; > eth_dev->rx_pkt_burst = ð_igb_recv_pkts; > eth_dev->tx_pkt_burst = ð_igb_xmit_pkts; > eth_dev->tx_pkt_prepare = ð_igb_prep_pkts; > diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c > index ca75919ee2..2cffa3aa2d 100644 > --- a/drivers/net/enic/enic_ethdev.c > +++ b/drivers/net/enic/enic_ethdev.c > @@ -1141,8 +1141,6 @@ static const struct eth_dev_ops enicpmd_eth_dev_ops = { > .tx_queue_stop = enicpmd_dev_tx_queue_stop, > .rx_queue_setup = enicpmd_dev_rx_queue_setup, > .rx_queue_release = enicpmd_dev_rx_queue_release, > - .rx_queue_count = enicpmd_dev_rx_queue_count, > - .rx_descriptor_done = NULL, > .tx_queue_setup = enicpmd_dev_tx_queue_setup, > .tx_queue_release = enicpmd_dev_tx_queue_release, > .rx_queue_intr_enable = enicpmd_dev_rx_queue_intr_enable, > @@ -1279,6 +1277,7 @@ static int eth_enicpmd_dev_init(struct rte_eth_dev *eth_dev) > ENICPMD_FUNC_TRACE(); > > eth_dev->dev_ops = &enicpmd_eth_dev_ops; > + eth_dev->rx_queue_count = enicpmd_dev_rx_queue_count; > eth_dev->rx_pkt_burst = &enic_recv_pkts; > eth_dev->tx_pkt_burst = &enic_xmit_pkts; > eth_dev->tx_pkt_prepare = &enic_prep_pkts; > diff --git a/drivers/net/fm10k/fm10k_ethdev.c b/drivers/net/fm10k/fm10k_ethdev.c > index fd927923da..e6043e1455 100644 > --- a/drivers/net/fm10k/fm10k_ethdev.c > +++ b/drivers/net/fm10k/fm10k_ethdev.c > @@ -2855,10 +2855,6 @@ static const struct eth_dev_ops fm10k_eth_dev_ops = { > .rx_queue_release = fm10k_rx_queue_release, > .tx_queue_setup = fm10k_tx_queue_setup, > .tx_queue_release = fm10k_tx_queue_release, > - .rx_queue_count = fm10k_dev_rx_queue_count, > - .rx_descriptor_done = fm10k_dev_rx_descriptor_done, > - .rx_descriptor_status = fm10k_dev_rx_descriptor_status, > - .tx_descriptor_status = fm10k_dev_tx_descriptor_status, > .rx_queue_intr_enable = fm10k_dev_rx_queue_intr_enable, > .rx_queue_intr_disable = fm10k_dev_rx_queue_intr_disable, > .reta_update = fm10k_reta_update, > @@ -3055,6 +3051,10 @@ eth_fm10k_dev_init(struct rte_eth_dev *dev) > PMD_INIT_FUNC_TRACE(); > > dev->dev_ops = &fm10k_eth_dev_ops; > + dev->rx_queue_count = fm10k_dev_rx_queue_count; > + dev->rx_descriptor_done = fm10k_dev_rx_descriptor_done; > + dev->rx_descriptor_status = fm10k_dev_rx_descriptor_status; > + dev->tx_descriptor_status = fm10k_dev_tx_descriptor_status; > dev->rx_pkt_burst = &fm10k_recv_pkts; > dev->tx_pkt_burst = &fm10k_xmit_pkts; > dev->tx_pkt_prepare = &fm10k_prep_pkts; > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c > index 841447228a..80efd06cd9 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -474,10 +474,6 @@ static const struct eth_dev_ops i40e_eth_dev_ops = { > .rx_queue_intr_enable = i40e_dev_rx_queue_intr_enable, > .rx_queue_intr_disable = i40e_dev_rx_queue_intr_disable, > .rx_queue_release = i40e_dev_rx_queue_release, > - .rx_queue_count = i40e_dev_rx_queue_count, > - .rx_descriptor_done = i40e_dev_rx_descriptor_done, > - .rx_descriptor_status = i40e_dev_rx_descriptor_status, > - .tx_descriptor_status = i40e_dev_tx_descriptor_status, > .tx_queue_setup = i40e_dev_tx_queue_setup, > .tx_queue_release = i40e_dev_tx_queue_release, > .dev_led_on = i40e_dev_led_on, > @@ -1448,6 +1444,10 @@ eth_i40e_dev_init(struct rte_eth_dev *dev, void *init_params __rte_unused) > PMD_INIT_FUNC_TRACE(); > > dev->dev_ops = &i40e_eth_dev_ops; > + dev->rx_queue_count = i40e_dev_rx_queue_count; > + dev->rx_descriptor_done = i40e_dev_rx_descriptor_done; > + dev->rx_descriptor_status = i40e_dev_rx_descriptor_status; > + dev->tx_descriptor_status = i40e_dev_tx_descriptor_status; > dev->rx_pkt_burst = i40e_recv_pkts; > dev->tx_pkt_burst = i40e_xmit_pkts; > dev->tx_pkt_prepare = i40e_prep_pkts; > diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c > index b755350cd2..be4b28fa45 100644 > --- a/drivers/net/i40e/i40e_ethdev_vf.c > +++ b/drivers/net/i40e/i40e_ethdev_vf.c > @@ -199,12 +199,8 @@ static const struct eth_dev_ops i40evf_eth_dev_ops = { > .rx_queue_release = i40e_dev_rx_queue_release, > .rx_queue_intr_enable = i40evf_dev_rx_queue_intr_enable, > .rx_queue_intr_disable = i40evf_dev_rx_queue_intr_disable, > - .rx_descriptor_done = i40e_dev_rx_descriptor_done, > - .rx_descriptor_status = i40e_dev_rx_descriptor_status, > - .tx_descriptor_status = i40e_dev_tx_descriptor_status, > .tx_queue_setup = i40e_dev_tx_queue_setup, > .tx_queue_release = i40e_dev_tx_queue_release, > - .rx_queue_count = i40e_dev_rx_queue_count, > .rxq_info_get = i40e_rxq_info_get, > .txq_info_get = i40e_txq_info_get, > .mac_addr_add = i40evf_add_mac_addr, > @@ -1561,6 +1557,10 @@ i40evf_dev_init(struct rte_eth_dev *eth_dev) > > /* assign ops func pointer */ > eth_dev->dev_ops = &i40evf_eth_dev_ops; > + eth_dev->rx_queue_count = i40e_dev_rx_queue_count; > + eth_dev->rx_descriptor_done = i40e_dev_rx_descriptor_done; > + eth_dev->rx_descriptor_status = i40e_dev_rx_descriptor_status; > + eth_dev->tx_descriptor_status = i40e_dev_tx_descriptor_status; > eth_dev->rx_pkt_burst = &i40e_recv_pkts; > eth_dev->tx_pkt_burst = &i40e_xmit_pkts; > > diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c > index 8e1d8a8d3e..e1ff38e8be 100644 > --- a/drivers/net/iavf/iavf_ethdev.c > +++ b/drivers/net/iavf/iavf_ethdev.c > @@ -117,9 +117,6 @@ static const struct eth_dev_ops iavf_eth_dev_ops = { > .rss_hash_conf_get = iavf_dev_rss_hash_conf_get, > .rxq_info_get = iavf_dev_rxq_info_get, > .txq_info_get = iavf_dev_txq_info_get, > - .rx_queue_count = iavf_dev_rxq_count, > - .rx_descriptor_status = iavf_dev_rx_desc_status, > - .tx_descriptor_status = iavf_dev_tx_desc_status, > .mtu_set = iavf_dev_mtu_set, > .rx_queue_intr_enable = iavf_dev_rx_queue_intr_enable, > .rx_queue_intr_disable = iavf_dev_rx_queue_intr_disable, > @@ -1383,6 +1380,9 @@ iavf_dev_init(struct rte_eth_dev *eth_dev) > > /* assign ops func pointer */ > eth_dev->dev_ops = &iavf_eth_dev_ops; > + eth_dev->rx_queue_count = iavf_dev_rxq_count; > + eth_dev->rx_descriptor_status = iavf_dev_rx_desc_status; > + eth_dev->tx_descriptor_status = iavf_dev_tx_desc_status; > eth_dev->rx_pkt_burst = &iavf_recv_pkts; > eth_dev->tx_pkt_burst = &iavf_xmit_pkts; > eth_dev->tx_pkt_prepare = &iavf_prep_pkts; > diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c > index c5dac2e328..c8b16c7f87 100644 > --- a/drivers/net/ice/ice_ethdev.c > +++ b/drivers/net/ice/ice_ethdev.c > @@ -205,9 +205,6 @@ static const struct eth_dev_ops ice_eth_dev_ops = { > .tx_burst_mode_get = ice_tx_burst_mode_get, > .get_eeprom_length = ice_get_eeprom_length, > .get_eeprom = ice_get_eeprom, > - .rx_queue_count = ice_rx_queue_count, > - .rx_descriptor_status = ice_rx_descriptor_status, > - .tx_descriptor_status = ice_tx_descriptor_status, > .stats_get = ice_stats_get, > .stats_reset = ice_stats_reset, > .xstats_get = ice_xstats_get, > @@ -2163,6 +2160,9 @@ ice_dev_init(struct rte_eth_dev *dev) > int ret; > > dev->dev_ops = &ice_eth_dev_ops; > + dev->rx_queue_count = ice_rx_queue_count; > + dev->rx_descriptor_status = ice_rx_descriptor_status; > + dev->tx_descriptor_status = ice_tx_descriptor_status; > dev->rx_pkt_burst = ice_recv_pkts; > dev->tx_pkt_burst = ice_xmit_pkts; > dev->tx_pkt_prepare = ice_prep_pkts; > diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c > index 6ab3ee909d..aa37c11861 100644 > --- a/drivers/net/igc/igc_ethdev.c > +++ b/drivers/net/igc/igc_ethdev.c > @@ -272,10 +272,6 @@ static const struct eth_dev_ops eth_igc_ops = { > > .rx_queue_setup = eth_igc_rx_queue_setup, > .rx_queue_release = eth_igc_rx_queue_release, > - .rx_queue_count = eth_igc_rx_queue_count, > - .rx_descriptor_done = eth_igc_rx_descriptor_done, > - .rx_descriptor_status = eth_igc_rx_descriptor_status, > - .tx_descriptor_status = eth_igc_tx_descriptor_status, > .tx_queue_setup = eth_igc_tx_queue_setup, > .tx_queue_release = eth_igc_tx_queue_release, > .tx_done_cleanup = eth_igc_tx_done_cleanup, > @@ -1227,6 +1223,10 @@ eth_igc_dev_init(struct rte_eth_dev *dev) > > PMD_INIT_FUNC_TRACE(); > dev->dev_ops = ð_igc_ops; > + dev->rx_descriptor_done = eth_igc_rx_descriptor_done; > + dev->rx_queue_count = eth_igc_rx_queue_count; > + dev->rx_descriptor_status = eth_igc_rx_descriptor_status; > + dev->tx_descriptor_status = eth_igc_tx_descriptor_status; > > /* > * for secondary processes, we don't initialize any further as primary > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c > index d9582473a4..337ce90fbf 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -545,10 +545,6 @@ static const struct eth_dev_ops ixgbe_eth_dev_ops = { > .rx_queue_intr_enable = ixgbe_dev_rx_queue_intr_enable, > .rx_queue_intr_disable = ixgbe_dev_rx_queue_intr_disable, > .rx_queue_release = ixgbe_dev_rx_queue_release, > - .rx_queue_count = ixgbe_dev_rx_queue_count, > - .rx_descriptor_done = ixgbe_dev_rx_descriptor_done, > - .rx_descriptor_status = ixgbe_dev_rx_descriptor_status, > - .tx_descriptor_status = ixgbe_dev_tx_descriptor_status, > .tx_queue_setup = ixgbe_dev_tx_queue_setup, > .tx_queue_release = ixgbe_dev_tx_queue_release, > .dev_led_on = ixgbe_dev_led_on, > @@ -622,9 +618,6 @@ static const struct eth_dev_ops ixgbevf_eth_dev_ops = { > .vlan_offload_set = ixgbevf_vlan_offload_set, > .rx_queue_setup = ixgbe_dev_rx_queue_setup, > .rx_queue_release = ixgbe_dev_rx_queue_release, > - .rx_descriptor_done = ixgbe_dev_rx_descriptor_done, > - .rx_descriptor_status = ixgbe_dev_rx_descriptor_status, > - .tx_descriptor_status = ixgbe_dev_tx_descriptor_status, > .tx_queue_setup = ixgbe_dev_tx_queue_setup, > .tx_queue_release = ixgbe_dev_tx_queue_release, > .rx_queue_intr_enable = ixgbevf_dev_rx_queue_intr_enable, > @@ -1091,6 +1084,10 @@ eth_ixgbe_dev_init(struct rte_eth_dev *eth_dev, void *init_params __rte_unused) > ixgbe_dev_macsec_setting_reset(eth_dev); > > eth_dev->dev_ops = &ixgbe_eth_dev_ops; > + eth_dev->rx_queue_count = ixgbe_dev_rx_queue_count; > + eth_dev->rx_descriptor_done = ixgbe_dev_rx_descriptor_done; > + eth_dev->rx_descriptor_status = ixgbe_dev_rx_descriptor_status; > + eth_dev->tx_descriptor_status = ixgbe_dev_tx_descriptor_status; > eth_dev->rx_pkt_burst = &ixgbe_recv_pkts; > eth_dev->tx_pkt_burst = &ixgbe_xmit_pkts; > eth_dev->tx_pkt_prepare = &ixgbe_prep_pkts; > @@ -1570,6 +1567,9 @@ eth_ixgbevf_dev_init(struct rte_eth_dev *eth_dev) > PMD_INIT_FUNC_TRACE(); > > eth_dev->dev_ops = &ixgbevf_eth_dev_ops; > + eth_dev->rx_descriptor_done = ixgbe_dev_rx_descriptor_done; > + eth_dev->rx_descriptor_status = ixgbe_dev_rx_descriptor_status; > + eth_dev->tx_descriptor_status = ixgbe_dev_tx_descriptor_status; > eth_dev->rx_pkt_burst = &ixgbe_recv_pkts; > eth_dev->tx_pkt_burst = &ixgbe_xmit_pkts; > > diff --git a/drivers/net/mlx5/linux/mlx5_os.c b/drivers/net/mlx5/linux/mlx5_os.c > index bf1f82ba67..ec3cc4000e 100644 > --- a/drivers/net/mlx5/linux/mlx5_os.c > +++ b/drivers/net/mlx5/linux/mlx5_os.c > @@ -601,6 +601,8 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev, > } > eth_dev->device = dpdk_dev; > eth_dev->dev_ops = &mlx5_os_dev_sec_ops; > + eth_dev->rx_descriptor_status = mlx5_rx_descriptor_status; > + eth_dev->tx_descriptor_status = mlx5_tx_descriptor_status; > err = mlx5_proc_priv_init(eth_dev); > if (err) > return NULL; > @@ -1208,6 +1210,9 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev, > eth_dev->rx_pkt_burst = removed_rx_burst; > eth_dev->tx_pkt_burst = removed_tx_burst; > eth_dev->dev_ops = &mlx5_os_dev_ops; > + eth_dev->rx_descriptor_status = mlx5_rx_descriptor_status; > + eth_dev->tx_descriptor_status = mlx5_tx_descriptor_status; > + eth_dev->rx_queue_count = mlx5_rx_queue_count; > /* Register MAC address. */ > claim_zero(mlx5_mac_addr_add(eth_dev, &mac, 0, 0)); > if (config->vf && config->vf_nl_en) > @@ -2396,13 +2401,10 @@ const struct eth_dev_ops mlx5_os_dev_ops = { > .rss_hash_update = mlx5_rss_hash_update, > .rss_hash_conf_get = mlx5_rss_hash_conf_get, > .filter_ctrl = mlx5_dev_filter_ctrl, > - .rx_descriptor_status = mlx5_rx_descriptor_status, > - .tx_descriptor_status = mlx5_tx_descriptor_status, > .rxq_info_get = mlx5_rxq_info_get, > .txq_info_get = mlx5_txq_info_get, > .rx_burst_mode_get = mlx5_rx_burst_mode_get, > .tx_burst_mode_get = mlx5_tx_burst_mode_get, > - .rx_queue_count = mlx5_rx_queue_count, > .rx_queue_intr_enable = mlx5_rx_intr_enable, > .rx_queue_intr_disable = mlx5_rx_intr_disable, > .is_removed = mlx5_is_removed, > @@ -2427,8 +2429,6 @@ const struct eth_dev_ops mlx5_os_dev_sec_ops = { > .rx_queue_stop = mlx5_rx_queue_stop, > .tx_queue_start = mlx5_tx_queue_start, > .tx_queue_stop = mlx5_tx_queue_stop, > - .rx_descriptor_status = mlx5_rx_descriptor_status, > - .tx_descriptor_status = mlx5_tx_descriptor_status, > .rxq_info_get = mlx5_rxq_info_get, > .txq_info_get = mlx5_txq_info_get, > .rx_burst_mode_get = mlx5_rx_burst_mode_get, > @@ -2480,8 +2480,6 @@ const struct eth_dev_ops mlx5_os_dev_ops_isolate = { > .vlan_strip_queue_set = mlx5_vlan_strip_queue_set, > .vlan_offload_set = mlx5_vlan_offload_set, > .filter_ctrl = mlx5_dev_filter_ctrl, > - .rx_descriptor_status = mlx5_rx_descriptor_status, > - .tx_descriptor_status = mlx5_tx_descriptor_status, > .rxq_info_get = mlx5_rxq_info_get, > .txq_info_get = mlx5_txq_info_get, > .rx_burst_mode_get = mlx5_rx_burst_mode_get, > diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c > index 4c29898203..eb55bd7f99 100644 > --- a/drivers/net/mlx5/mlx5_flow.c > +++ b/drivers/net/mlx5/mlx5_flow.c > @@ -5138,6 +5138,10 @@ mlx5_flow_isolate(struct rte_eth_dev *dev, > dev->dev_ops = &mlx5_os_dev_ops_isolate; > else > dev->dev_ops = &mlx5_os_dev_ops; > + > + dev->rx_descriptor_status = mlx5_rx_descriptor_status; > + dev->tx_descriptor_status = mlx5_tx_descriptor_status; > + > return 0; > } > > diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c > index fd91c0e491..229c1b9149 100644 > --- a/drivers/net/netvsc/hn_ethdev.c > +++ b/drivers/net/netvsc/hn_ethdev.c > @@ -871,11 +871,8 @@ static const struct eth_dev_ops hn_eth_dev_ops = { > .tx_queue_setup = hn_dev_tx_queue_setup, > .tx_queue_release = hn_dev_tx_queue_release, > .tx_done_cleanup = hn_dev_tx_done_cleanup, > - .tx_descriptor_status = hn_dev_tx_descriptor_status, > .rx_queue_setup = hn_dev_rx_queue_setup, > .rx_queue_release = hn_dev_rx_queue_release, > - .rx_queue_count = hn_dev_rx_queue_count, > - .rx_descriptor_status = hn_dev_rx_queue_status, > .link_update = hn_dev_link_update, > .stats_get = hn_dev_stats_get, > .stats_reset = hn_dev_stats_reset, > @@ -936,6 +933,9 @@ eth_hn_dev_init(struct rte_eth_dev *eth_dev) > > vmbus = container_of(device, struct rte_vmbus_device, device); > eth_dev->dev_ops = &hn_eth_dev_ops; > + eth_dev->rx_queue_count = hn_dev_rx_queue_count; > + eth_dev->rx_descriptor_status = hn_dev_rx_queue_status; > + eth_dev->tx_descriptor_status = hn_dev_tx_descriptor_status; > eth_dev->tx_pkt_burst = &hn_xmit_pkts; > eth_dev->rx_pkt_burst = &hn_recv_pkts; > > diff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c > index 99946279db..c556dedab6 100644 > --- a/drivers/net/nfp/nfp_net.c > +++ b/drivers/net/nfp/nfp_net.c > @@ -2701,7 +2701,6 @@ static const struct eth_dev_ops nfp_net_eth_dev_ops = { > .rss_hash_conf_get = nfp_net_rss_hash_conf_get, > .rx_queue_setup = nfp_net_rx_queue_setup, > .rx_queue_release = nfp_net_rx_queue_release, > - .rx_queue_count = nfp_net_rx_queue_count, > .tx_queue_setup = nfp_net_tx_queue_setup, > .tx_queue_release = nfp_net_tx_queue_release, > .rx_queue_intr_enable = nfp_rx_queue_intr_enable, > @@ -2785,6 +2784,7 @@ nfp_net_init(struct rte_eth_dev *eth_dev) > } > > eth_dev->dev_ops = &nfp_net_eth_dev_ops; > + eth_dev->rx_queue_count = nfp_net_rx_queue_count; > eth_dev->rx_pkt_burst = &nfp_net_recv_pkts; > eth_dev->tx_pkt_burst = &nfp_net_xmit_pkts; > > diff --git a/drivers/net/octeontx2/otx2_ethdev.c b/drivers/net/octeontx2/otx2_ethdev.c > index 33b72bd4db..c06e32f26b 100644 > --- a/drivers/net/octeontx2/otx2_ethdev.c > +++ b/drivers/net/octeontx2/otx2_ethdev.c > @@ -2272,10 +2272,6 @@ static const struct eth_dev_ops otx2_eth_dev_ops = { > .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, > - .tx_descriptor_status = otx2_nix_tx_descriptor_status, > .tx_done_cleanup = otx2_nix_tx_done_cleanup, > .set_queue_rate_limit = otx2_nix_tm_set_queue_rate_limit, > .pool_ops_supported = otx2_nix_pool_ops_supported, > @@ -2382,6 +2378,10 @@ otx2_eth_dev_init(struct rte_eth_dev *eth_dev) > int rc, max_entries; > > eth_dev->dev_ops = &otx2_eth_dev_ops; > + eth_dev->rx_descriptor_done = otx2_nix_rx_descriptor_done; > + eth_dev->rx_queue_count = otx2_nix_rx_queue_count; > + eth_dev->rx_descriptor_status = otx2_nix_rx_descriptor_status; > + eth_dev->tx_descriptor_status = otx2_nix_tx_descriptor_status; > > /* For secondary processes, the primary has done all the work */ > if (rte_eal_process_type() != RTE_PROC_PRIMARY) { > diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c > index 70d48e48ef..59f1746ee9 100644 > --- a/drivers/net/qede/qede_ethdev.c > +++ b/drivers/net/qede/qede_ethdev.c > @@ -2386,7 +2386,6 @@ static const struct eth_dev_ops qede_eth_dev_ops = { > .dev_infos_get = qede_dev_info_get, > .rx_queue_setup = qede_rx_queue_setup, > .rx_queue_release = qede_rx_queue_release, > - .rx_descriptor_status = qede_rx_descriptor_status, > .tx_queue_setup = qede_tx_queue_setup, > .tx_queue_release = qede_tx_queue_release, > .dev_start = qede_dev_start, > @@ -2431,7 +2430,6 @@ static const struct eth_dev_ops qede_eth_vf_dev_ops = { > .dev_infos_get = qede_dev_info_get, > .rx_queue_setup = qede_rx_queue_setup, > .rx_queue_release = qede_rx_queue_release, > - .rx_descriptor_status = qede_rx_descriptor_status, > .tx_queue_setup = qede_tx_queue_setup, > .tx_queue_release = qede_tx_queue_release, > .dev_start = qede_dev_start, > @@ -2670,6 +2668,7 @@ static int qede_common_dev_init(struct rte_eth_dev *eth_dev, bool is_vf) > } > > eth_dev->dev_ops = (is_vf) ? &qede_eth_vf_dev_ops : &qede_eth_dev_ops; > + eth_dev->rx_descriptor_status = qede_rx_descriptor_status; > > adapter->num_tx_queues = 0; > adapter->num_rx_queues = 0; > diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c > index acee3e48e4..1a58e0df84 100644 > --- a/drivers/net/sfc/sfc_ethdev.c > +++ b/drivers/net/sfc/sfc_ethdev.c > @@ -1819,10 +1819,6 @@ static const struct eth_dev_ops sfc_eth_dev_ops = { > .tx_queue_stop = sfc_tx_queue_stop, > .rx_queue_setup = sfc_rx_queue_setup, > .rx_queue_release = sfc_rx_queue_release, > - .rx_queue_count = sfc_rx_queue_count, > - .rx_descriptor_done = sfc_rx_descriptor_done, > - .rx_descriptor_status = sfc_rx_descriptor_status, > - .tx_descriptor_status = sfc_tx_descriptor_status, > .rx_queue_intr_enable = sfc_rx_queue_intr_enable, > .rx_queue_intr_disable = sfc_rx_queue_intr_disable, > .tx_queue_setup = sfc_tx_queue_setup, > @@ -1977,6 +1973,10 @@ sfc_eth_dev_set_ops(struct rte_eth_dev *dev) > dev->tx_pkt_prepare = dp_tx->pkt_prepare; > dev->tx_pkt_burst = dp_tx->pkt_burst; > > + dev->rx_queue_count = sfc_rx_queue_count; > + dev->rx_descriptor_done = sfc_rx_descriptor_done; > + dev->rx_descriptor_status = sfc_rx_descriptor_status; > + dev->tx_descriptor_status = sfc_tx_descriptor_status; > dev->dev_ops = &sfc_eth_dev_ops; > > return 0; > @@ -2017,10 +2017,6 @@ sfc_eth_dev_clear_ops(struct rte_eth_dev *dev) > > static const struct eth_dev_ops sfc_eth_dev_secondary_ops = { > .dev_supported_ptypes_get = sfc_dev_supported_ptypes_get, > - .rx_queue_count = sfc_rx_queue_count, > - .rx_descriptor_done = sfc_rx_descriptor_done, > - .rx_descriptor_status = sfc_rx_descriptor_status, > - .tx_descriptor_status = sfc_tx_descriptor_status, > .reta_query = sfc_dev_rss_reta_query, > .rss_hash_conf_get = sfc_dev_rss_hash_conf_get, > .rxq_info_get = sfc_rx_queue_info_get, > @@ -2085,6 +2081,10 @@ sfc_eth_dev_secondary_init(struct rte_eth_dev *dev, uint32_t logtype_main) > dev->rx_pkt_burst = dp_rx->pkt_burst; > dev->tx_pkt_prepare = dp_tx->pkt_prepare; > dev->tx_pkt_burst = dp_tx->pkt_burst; > + dev->rx_queue_count = sfc_rx_queue_count; > + dev->rx_descriptor_done = sfc_rx_descriptor_done; > + dev->rx_descriptor_status = sfc_rx_descriptor_status; > + dev->tx_descriptor_status = sfc_tx_descriptor_status; > dev->dev_ops = &sfc_eth_dev_secondary_ops; > > return 0; > diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c > index d955a7ee23..959c8e4ddc 100644 > --- a/drivers/net/thunderx/nicvf_ethdev.c > +++ b/drivers/net/thunderx/nicvf_ethdev.c > @@ -2029,7 +2029,6 @@ static const struct eth_dev_ops nicvf_eth_dev_ops = { > .tx_queue_stop = nicvf_dev_tx_queue_stop, > .rx_queue_setup = nicvf_dev_rx_queue_setup, > .rx_queue_release = nicvf_dev_rx_queue_release, > - .rx_queue_count = nicvf_dev_rx_queue_count, > .tx_queue_setup = nicvf_dev_tx_queue_setup, > .tx_queue_release = nicvf_dev_tx_queue_release, > .dev_set_link_up = nicvf_dev_set_link_up, > @@ -2134,6 +2133,7 @@ nicvf_eth_dev_init(struct rte_eth_dev *eth_dev) > PMD_INIT_FUNC_TRACE(); > > eth_dev->dev_ops = &nicvf_eth_dev_ops; > + eth_dev->rx_queue_count = nicvf_dev_rx_queue_count; > > /* For secondary processes, the primary has done all the work */ > if (rte_eal_process_type() != RTE_PROC_PRIMARY) { > diff --git a/drivers/net/vhost/rte_eth_vhost.c b/drivers/net/vhost/rte_eth_vhost.c > index e55278af69..fa365605ef 100644 > --- a/drivers/net/vhost/rte_eth_vhost.c > +++ b/drivers/net/vhost/rte_eth_vhost.c > @@ -1385,7 +1385,6 @@ static const struct eth_dev_ops ops = { > .rx_queue_release = eth_queue_release, > .tx_queue_release = eth_queue_release, > .tx_done_cleanup = eth_tx_done_cleanup, > - .rx_queue_count = eth_rx_queue_count, > .link_update = eth_link_update, > .stats_get = eth_stats_get, > .stats_reset = eth_stats_reset, > @@ -1447,6 +1446,7 @@ eth_dev_vhost_create(struct rte_vdev_device *dev, char *iface_name, > data->all_multicast = 1; > > eth_dev->dev_ops = &ops; > + eth_dev->rx_queue_count = eth_rx_queue_count; > > /* finally assign rx and tx ops */ > eth_dev->rx_pkt_burst = eth_vhost_rx; > diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c > index dc0093bdf0..4f2fa0d943 100644 > --- a/drivers/net/virtio/virtio_ethdev.c > +++ b/drivers/net/virtio/virtio_ethdev.c > @@ -920,7 +920,6 @@ static const struct eth_dev_ops virtio_eth_dev_ops = { > .rx_queue_intr_enable = virtio_dev_rx_queue_intr_enable, > .rx_queue_intr_disable = virtio_dev_rx_queue_intr_disable, > .rx_queue_release = virtio_dev_queue_release, > - .rx_descriptor_done = virtio_dev_rx_queue_done, > .tx_queue_setup = virtio_dev_tx_queue_setup, > .tx_queue_release = virtio_dev_queue_release, > /* collect stats per queue */ > @@ -1903,6 +1902,7 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev) > } > > eth_dev->dev_ops = &virtio_eth_dev_ops; > + eth_dev->rx_descriptor_done = virtio_dev_rx_queue_done; > > if (rte_eal_process_type() == RTE_PROC_SECONDARY) { > if (!hw->virtio_user_dev) { > diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h > index eb6cd01f8d..b6f26a513b 100644 > --- a/lib/librte_ethdev/rte_ethdev.h > +++ b/lib/librte_ethdev/rte_ethdev.h > @@ -4545,11 +4545,11 @@ rte_eth_rx_queue_count(uint16_t port_id, uint16_t queue_id) > > RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -EINVAL); > dev = &rte_eth_devices[port_id]; > - RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rx_queue_count, -ENOTSUP); > + RTE_FUNC_PTR_OR_ERR_RET(*dev->rx_queue_count, -ENOTSUP); > if (queue_id >= dev->data->nb_rx_queues) > return -EINVAL; > > - return (int)(*dev->dev_ops->rx_queue_count)(dev, queue_id); > + return (int)(*dev->rx_queue_count)(dev, queue_id); > } > > /** > @@ -4573,9 +4573,8 @@ rte_eth_rx_descriptor_done(uint16_t port_id, uint16_t queue_id, uint16_t offset) > { > struct rte_eth_dev *dev = &rte_eth_devices[port_id]; > RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > - RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rx_descriptor_done, -ENOTSUP); > - return (*dev->dev_ops->rx_descriptor_done)( \ > - dev->data->rx_queues[queue_id], offset); > + RTE_FUNC_PTR_OR_ERR_RET(*dev->rx_descriptor_done, -ENOTSUP); > + return (*dev->rx_descriptor_done)(dev->data->rx_queues[queue_id], offset); > } > > #define RTE_ETH_RX_DESC_AVAIL 0 /**< Desc available for hw. */ > @@ -4630,10 +4629,10 @@ rte_eth_rx_descriptor_status(uint16_t port_id, uint16_t queue_id, > if (queue_id >= dev->data->nb_rx_queues) > return -ENODEV; > #endif > - RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rx_descriptor_status, -ENOTSUP); > + RTE_FUNC_PTR_OR_ERR_RET(*dev->rx_descriptor_status, -ENOTSUP); > rxq = dev->data->rx_queues[queue_id]; > > - return (*dev->dev_ops->rx_descriptor_status)(rxq, offset); > + return (*dev->rx_descriptor_status)(rxq, offset); > } > > #define RTE_ETH_TX_DESC_FULL 0 /**< Desc filled for hw, waiting xmit. */ > @@ -4687,10 +4686,10 @@ static inline int rte_eth_tx_descriptor_status(uint16_t port_id, > if (queue_id >= dev->data->nb_tx_queues) > return -ENODEV; > #endif > - RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->tx_descriptor_status, -ENOTSUP); > + RTE_FUNC_PTR_OR_ERR_RET(*dev->tx_descriptor_status, -ENOTSUP); > txq = dev->data->tx_queues[queue_id]; > > - return (*dev->dev_ops->tx_descriptor_status)(txq, offset); > + return (*dev->tx_descriptor_status)(txq, offset); > } > > /** > diff --git a/lib/librte_ethdev/rte_ethdev_core.h b/lib/librte_ethdev/rte_ethdev_core.h > index 32407dd418..8ed827475f 100644 > --- a/lib/librte_ethdev/rte_ethdev_core.h > +++ b/lib/librte_ethdev/rte_ethdev_core.h > @@ -660,13 +660,6 @@ struct eth_dev_ops { > eth_queue_stop_t tx_queue_stop; /**< Stop TX for a queue. */ > eth_rx_queue_setup_t rx_queue_setup;/**< Set up device RX queue. */ > eth_queue_release_t rx_queue_release; /**< Release RX queue. */ > - eth_rx_queue_count_t rx_queue_count; > - /**< Get the number of used RX descriptors. */ > - eth_rx_descriptor_done_t rx_descriptor_done; /**< Check rxd DD bit. */ > - eth_rx_descriptor_status_t rx_descriptor_status; > - /**< Check the status of a Rx descriptor. */ > - eth_tx_descriptor_status_t tx_descriptor_status; > - /**< Check the status of a Tx descriptor. */ > /* > * Static inline functions use functions ABOVE this comment. > * New dev_ops functions should be added BELOW to avoid breaking ABI. > @@ -782,6 +775,12 @@ struct rte_eth_dev { > eth_rx_burst_t rx_pkt_burst; /**< Pointer to PMD receive function. */ > eth_tx_burst_t tx_pkt_burst; /**< Pointer to PMD transmit function. */ > eth_tx_prep_t tx_pkt_prepare; /**< Pointer to PMD transmit prepare function. */ > + > + eth_rx_queue_count_t rx_queue_count; /**< Get the number of used RX descriptors. */ > + eth_rx_descriptor_done_t rx_descriptor_done; /**< Check rxd DD bit. */ > + eth_rx_descriptor_status_t rx_descriptor_status; /**< Check the status of a Rx descriptor. */ > + eth_tx_descriptor_status_t tx_descriptor_status; /**< Check the status of a Tx descriptor. */ > + > /** > * Next two fields are per-device data but *data is shared between > * primary and secondary processes and *process_private is per-process