[dpdk-dev] [PATCH v1 0/4] get Rx/Tx packet burst mode information

Wang, Haiyue haiyue.wang at intel.com
Fri Sep 27 03:17:25 CEST 2019


> -----Original Message-----
> From: Stephen Hemminger [mailto:stephen at networkplumber.org]
> Sent: Friday, September 27, 2019 01:15
> To: Wang, Haiyue <haiyue.wang at intel.com>
> Cc: dev at dpdk.org; Yigit, Ferruh <ferruh.yigit at intel.com>; Ye, Xiaolong <xiaolong.ye at intel.com>;
> Kinsella, Ray <ray.kinsella at intel.com>; Iremonger, Bernard <bernard.iremonger at intel.com>; Sun, Chenmin
> <chenmin.sun at intel.com>
> Subject: Re: [dpdk-dev] [PATCH v1 0/4] get Rx/Tx packet burst mode information
> 
> On Thu, 26 Sep 2019 16:36:09 +0000
> "Wang, Haiyue" <haiyue.wang at intel.com> wrote:
> 
> > Hi Stephen,
> >
> > > -----Original Message-----
> > > From: Stephen Hemminger [mailto:stephen at networkplumber.org]
> > > Sent: Thursday, September 26, 2019 23:57
> > > To: Wang, Haiyue <haiyue.wang at intel.com>
> > > Cc: dev at dpdk.org; Yigit, Ferruh <ferruh.yigit at intel.com>; Ye, Xiaolong <xiaolong.ye at intel.com>;
> > > Kinsella, Ray <ray.kinsella at intel.com>; Iremonger, Bernard <bernard.iremonger at intel.com>; Sun,
> Chenmin
> > > <chenmin.sun at intel.com>
> > > Subject: Re: [dpdk-dev] [PATCH v1 0/4] get Rx/Tx packet burst mode information
> > >
> > > On Thu, 26 Sep 2019 19:48:14 +0800
> > > Haiyue Wang <haiyue.wang at intel.com> wrote:
> > >
> > > > RFCv3 -> v1:
> > > > 	https://patchwork.dpdk.org/patch/59103/
> > > > 	https://patchwork.dpdk.org/patch/59104/
> > > > 	https://patchwork.dpdk.org/patch/59105/
> > > > 	https://patchwork.dpdk.org/patch/59106/
> > > > 	1). Use the function 'rte_bsf64' to iterate the options for
> > > > 	    getting the name.
> > > >
> > > > Haiyue Wang (4):
> > > >   ethdev: add the API for getting burst mode information
> > > >   net/i40e: support to get the Rx/Tx burst mode
> > > >   net/ice: support to get the Rx/Tx burst mode
> > > >   app/testpmd: show the Rx/Tx burst mode description
> > > >
> > > >  app/test-pmd/config.c                    | 29 +++++++++
> > > >  doc/guides/rel_notes/release_19_11.rst   |  9 +++
> > > >  drivers/net/i40e/i40e_ethdev.c           |  2 +
> > > >  drivers/net/i40e/i40e_ethdev.h           |  4 ++
> > > >  drivers/net/i40e/i40e_rxtx.c             | 72 +++++++++++++++++++++
> > > >  drivers/net/ice/ice_ethdev.c             |  2 +
> > > >  drivers/net/ice/ice_rxtx.c               | 54 ++++++++++++++++
> > > >  drivers/net/ice/ice_rxtx.h               |  4 ++
> > > >  lib/librte_ethdev/rte_ethdev.c           | 75 ++++++++++++++++++++++
> > > >  lib/librte_ethdev/rte_ethdev.h           | 82 ++++++++++++++++++++++++
> > > >  lib/librte_ethdev/rte_ethdev_core.h      |  5 ++
> > > >  lib/librte_ethdev/rte_ethdev_version.map |  5 ++
> > > >  12 files changed, 343 insertions(+)
> > > >
> > >
> > > A couple of meta comments:
> > > 1) Could this be part of dev_info_get somehow?
> > >
> >
> > https://patchwork.dpdk.org/patch/57624/
> > 'Think of a better way that doesn't break ABI.'  ;-)
> 
> That comment was made relative to 19.08, but 19.11 is the time where
> API/ABI breakage is allowed.
> 

Since 'rte_eth_dev_info_get(uint16_t port_id, struct rte_eth_dev_info *dev_info)'
focuses on 'port' level, the new rx/tx_burst_mode API can support 'queue' level:
'rte_eth_tx_burst_mode_get(uint16_t port_id, uint16_t queue_id ...', in other
words, PMD can optimize their queues in Vector/Scalar/... modes for each queue,
not have to just one mode for all queues at the same time, this API can return
"Per Queue" information.

> > > 2) Why should application care? Is this just a test hook?
> >
> > https://patches.dpdk.org/cover/57623/
> > This is from FD.io VPP's bug, and finally, we come out
> > this API for application accessing the burst mode information.
> > It can be used as a simple trace or something like performance
> > analysis like why slow ? Not in vector, anyway, application can
> > get this burst mode information now, not just open PMD debug log
> > level.
> 
> From an architecture perspective, diagnostics are good but VPP is probably
> taking that too far.  It is possible to expose local symbols if they
> want to keep using dlsym() by adjusting linker flags. It is more that VPP
> is stripping everything.  Since VPP has chosen to go their own
> way is fixable inside VPP without changing DPDK. Also, long term VPP is
> going away from using DPDK drivers. Probably soon they will have their
> own drivers for i40e and ice anyway.
> 
> 
> The basis of my concern is that this is one of those kind of API's
> that creates long term technical debt around supporting it as other
> things change.

At first, we use 'string format' to make VPP happy, now, we use bit-fields
for general use.

People come, people go, even VPP left DPDK, now, testpmd is the first
user, and I think it is good for 'test' the PMD with friendly information:

testpmd> show rxq info 0 0

********************* Infos for port 0 , RX queue 0  *********************
Mempool: mbuf_pool_socket_0
RX prefetch threshold: 0
RX host threshold: 0
RX writeback threshold: 0
RX free threshold: 32
RX drop packets: off
RX deferred start: off
RX scattered packets: off
Number of RXDs: 1024
Burst mode: Vector AVX2       =============> direct information, not have to check the
                                             code and open debug to make sure every setting
							   is right.

testpmd> show txq info 0 0

********************* Infos for port 0 , TX queue 0  *********************
TX prefetch threshold: 32
TX host threshold: 0
TX writeback threshold: 0
TX RS threshold: 32
TX free threshold: 32
TX deferred start: off
Number of TXDs: 1024
Burst mode: Vector AVX2      =============>


More information about the dev mailing list