[dpdk-dev] [PATCH v4 2/7] ethdev: move inline device operations
Sachin Saxena (OSS)
sachin.saxena at oss.nxp.com
Thu Sep 10 03:56:41 CEST 2020
Acked-by: Sachin Saxena<sachin.saxena at oss.nxp.com>
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 <ferruh.yigit at intel.com>
> Reviewed-by: Andrew Rybchenko <arybchenko at solarflare.com>
> Acked-by: David Marchand <david.marchand at redhat.com>
> ---
> v2:
> * Updated features.rst
> * Tweak assignment order in sfc
>
> Cc: David Marchand <david.marchand at redhat.com>
> 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
More information about the dev
mailing list