Hi Stephen, I had been not added it to const struct eth_dev_ops for .rx/tx_queue_stop/stop :( Thanks for your check
Regrads Wenbo > -----Original Message----- > From: Stephen Hemminger <step...@networkplumber.org> > Sent: 2025年2月26日 0:09 > To: Wenbo Cao <caowe...@mucse.com> > Cc: tho...@monjalon.net; dev@dpdk.org; yao...@mucse.com > Subject: Re: [PATCH v15 09/29] net/rnp: add queue stop and start operations > > On Tue, 25 Feb 2025 16:41:06 +0800 > Wenbo Cao <caowe...@mucse.com> wrote: > > > diff --git a/doc/guides/nics/rnp.rst b/doc/guides/nics/rnp.rst index > > 99b96e9b8e..c3547c38b6 100644 > > --- a/doc/guides/nics/rnp.rst > > +++ b/doc/guides/nics/rnp.rst > > @@ -71,6 +71,10 @@ Listed below are the rte_eth functions supported: > > * ``rte_eth_dev_close`` > > * ``rte_eth_dev_stop`` > > * ``rte_eth_dev_infos_get`` > > +* ``rte_eth_dev_rx_queue_start`` > > +* ``rte_eth_dev_rx_queue_stop`` > > +* ``rte_eth_dev_tx_queue_start`` > > +* ``rte_eth_dev_tx_queue_stop`` > > * ``rte_eth_promiscuous_disable`` > > * ``rte_eth_promiscuous_enable`` > > * ``rte_eth_allmulticast_enable`` > > There is no callback in this driver for rx/tx queue start/stop. > Did you test this with test-pmd? > > If application calls rte_eth_dev_rx_queue_start() > > int > rte_eth_dev_rx_queue_start(uint16_t port_id, uint16_t rx_queue_id) { ... > if (*dev->dev_ops->rx_queue_start == NULL) > return -ENOTSUP; > > The eth_dev_ops in rnp_ethdev.c does not contain rx_queue_start! > > /* Features supported by this driver */ > static const struct eth_dev_ops rnp_eth_dev_ops = { > .dev_configure = rnp_dev_configure, > .dev_close = rnp_dev_close, > .dev_start = rnp_dev_start, > .dev_stop = rnp_dev_stop, > .dev_infos_get = rnp_dev_infos_get, > > /* PROMISC */ > .promiscuous_enable = rnp_promiscuous_enable, > .promiscuous_disable = rnp_promiscuous_disable, > .allmulticast_enable = rnp_allmulticast_enable, > .allmulticast_disable = rnp_allmulticast_disable, > .mtu_set = rnp_mtu_set, > .rx_queue_setup = rnp_rx_queue_setup, > .rx_queue_release = rnp_dev_rx_queue_release, > .tx_queue_setup = rnp_tx_queue_setup, > .tx_queue_release = rnp_dev_tx_queue_release, > .rxq_info_get = rnp_rx_queue_info_get, > .txq_info_get = rnp_tx_queue_info_get, > .rx_burst_mode_get = rnp_rx_burst_mode_get, > .tx_burst_mode_get = rnp_tx_burst_mode_get, > /* rss impl */ > .reta_update = rnp_dev_rss_reta_update, > .reta_query = rnp_dev_rss_reta_query, > .rss_hash_update = rnp_dev_rss_hash_update, > .rss_hash_conf_get = rnp_dev_rss_hash_conf_get, > /* stats */ > .stats_get = rnp_dev_stats_get, > .stats_reset = rnp_dev_stats_reset, > .xstats_get = rnp_dev_xstats_get, > .xstats_reset = rnp_dev_xstats_reset, > .xstats_get_names = rnp_dev_xstats_get_names, > /* link impl */ > .link_update = rnp_dev_link_update, > .dev_set_link_up = rnp_dev_set_link_up, > .dev_set_link_down = rnp_dev_set_link_down, > /* mac address filter */ > .mac_addr_set = rnp_dev_mac_addr_set, > .mac_addr_add = rnp_dev_mac_addr_add, > .mac_addr_remove = rnp_dev_mac_addr_remove, > .set_mc_addr_list = rnp_dev_set_mc_addr_list, > /* vlan offload */ > .vlan_offload_set = rnp_vlan_offload_set, > .vlan_strip_queue_set = rnp_vlan_strip_queue_set, > .vlan_filter_set = rnp_vlan_filter_set, > .dev_supported_ptypes_get = rnp_dev_supported_ptypes_get, > };