[dpdk-dev] [PATCH 0/6] get status of Rx and Tx descriptors

Stephen Hemminger stephen at networkplumber.org
Wed Mar 1 19:07:06 CET 2017


On Wed,  1 Mar 2017 18:19:06 +0100
Olivier Matz <olivier.matz at 6wind.com> wrote:

> This patchset introduces a new ethdev API:
> - rte_eth_rx_descriptor_status()
> - rte_eth_tx_descriptor_status()
> 
> The Rx API is aims to replace rte_eth_rx_descriptor_done() which
> does almost the same, but does not differentiate the case of a
> descriptor used by the driver (not returned to the hw).
> 
> The usage of these functions can be:
> - on Rx, anticipate that the cpu is not fast enough to process
>   all incoming packets, and take dispositions to solve the
>   problem (add more cpus, drop specific packets, ...)
> - on Tx, detect that the link is overloaded, and take dispositions
>   to solve the problem (notify flow control, drop specific
>   packets)
> 
> The patchset updates ixgbe, i40e, e1000, mlx5.
> The other drivers that implement the descriptor_done() API are
> fm10k, sfc, virtio. They are not updated.
> If the new API is accepted, the descriptor_done() can be deprecated,
> and examples/l3fwd-power will be updated to.
> 
> 
> RFC->v1:
> - instead of optimizing an API that returns the number of used
>   descriptors like rx_queue_count(), use a more simple API that
>   returns the status of a descriptor, like rx_descriptor_done().
> - remove ethdev api rework (first 2 patches), they have been
>   sent separately
> 
> 
> Olivier Matz (6):
>   ethdev: add descriptor status API
>   net/ixgbe: implement descriptor status API
>   net/e1000: implement descriptor status API (igb)
>   net/e1000: implement descriptor status API (em)
>   net/mlx5: implement descriptor status API
>   net/i40e: implement descriptor status API
> 
>  drivers/net/e1000/e1000_ethdev.h  | 10 +++++
>  drivers/net/e1000/em_ethdev.c     |  2 +
>  drivers/net/e1000/em_rxtx.c       | 49 ++++++++++++++++++++++
>  drivers/net/e1000/igb_ethdev.c    |  2 +
>  drivers/net/e1000/igb_rxtx.c      | 46 +++++++++++++++++++++
>  drivers/net/i40e/i40e_ethdev.c    |  2 +
>  drivers/net/i40e/i40e_ethdev_vf.c |  2 +
>  drivers/net/i40e/i40e_rxtx.c      | 56 +++++++++++++++++++++++++
>  drivers/net/i40e/i40e_rxtx.h      |  4 ++
>  drivers/net/ixgbe/ixgbe_ethdev.c  |  4 ++
>  drivers/net/ixgbe/ixgbe_ethdev.h  |  5 +++
>  drivers/net/ixgbe/ixgbe_rxtx.c    | 55 +++++++++++++++++++++++++
>  drivers/net/mlx5/mlx5.c           |  2 +
>  drivers/net/mlx5/mlx5_rxtx.c      | 83 +++++++++++++++++++++++++++++++++++++
>  drivers/net/mlx5/mlx5_rxtx.h      |  2 +
>  lib/librte_ether/rte_ethdev.h     | 86 +++++++++++++++++++++++++++++++++++++++
>  16 files changed, 410 insertions(+)
> 

Could you update examples to use this?


More information about the dev mailing list