Hi Stephen, On Wed, 1 Mar 2017 10:07:06 -0800, Stephen Hemminger <step...@networkplumber.org> wrote: > On Wed, 1 Mar 2017 18:19:06 +0100 > Olivier Matz <olivier.m...@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?