[dpdk-dev] [PATCH 0/6] get status of Rx and Tx descriptors
Olivier Matz
olivier.matz at 6wind.com
Thu Mar 2 14:43:26 CET 2017
Hi Stephen,
On Wed, 1 Mar 2017 10:07:06 -0800, Stephen Hemminger <stephen at networkplumber.org> wrote:
> 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?
I can update examples/l3fwd-power, but it will break the
support for drivers that do not implement the new API. Maybe we could
do this in a second time, after all drivers are converted?
More information about the dev
mailing list