On 03/01/2017 08:19 PM, Olivier Matz wrote:
This patchset introduces a new ethdev API:
- rte_eth_rx_descriptor_status()
- rte_eth_tx_descriptor_status()

May be corresponding features should be added to the NICs documentation?

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(+)


Reply via email to