mbox series

[v2,00/14] remove mbuf timestamp

Message ID 20201101180626.2198868-1-thomas@monjalon.net (mailing list archive)
Headers
Series remove mbuf timestamp |

Message

Thomas Monjalon Nov. 1, 2020, 6:06 p.m. UTC
  The mbuf field timestamp was announced to be removed for three reasons:
  - a dynamic field already exist, used for Tx only
  - this field always used 8 bytes even if unneeded
  - this field is in the first half (cacheline) of mbuf

After this series, the dynamic field timestamp is used for both Rx and Tx
with separate dynamic flags to distinguish when the value is meaningful
without resetting the field during forwarding.

As a consequence, 8 bytes can be re-allocated to dynamic fields
in the first half of mbuf structure.
It is still open to change more the mbuf layout.

This mbuf layout change is important to allow adding more features
(consuming more dynamic fields) during the next year,
and can allow performance improvements with new usages in the first half.


Thomas Monjalon (14):
  eventdev: remove software Rx timestamp
  mbuf: add Rx timestamp dynamic flag
  ethdev: register mbuf field and flags for timestamp
  latency: switch timestamp to dynamic mbuf field
  net/ark: switch timestamp to dynamic mbuf field
  net/dpaa2: switch timestamp to dynamic mbuf field
  net/mlx5: fix dynamic mbuf offset lookup check
  net/mlx5: switch timestamp to dynamic mbuf field
  net/nfb: switch timestamp to dynamic mbuf field
  net/octeontx2: switch timestamp to dynamic mbuf field
  net/pcap: switch timestamp to dynamic mbuf field
  app/testpmd: switch timestamp to dynamic mbuf field
  examples/rxtx_callbacks: switch timestamp to dynamic field
  mbuf: remove deprecated timestamp field

 app/test-pmd/config.c                         | 38 -----------
 app/test-pmd/util.c                           | 39 ++++++++++-
 app/test/test_mbuf.c                          |  1 -
 doc/guides/nics/mlx5.rst                      |  5 +-
 .../prog_guide/event_ethernet_rx_adapter.rst  |  6 +-
 doc/guides/rel_notes/deprecation.rst          |  4 --
 doc/guides/rel_notes/release_20_11.rst        |  4 ++
 drivers/net/ark/ark_ethdev.c                  | 23 +++++++
 drivers/net/ark/ark_ethdev_rx.c               | 10 ++-
 drivers/net/dpaa2/dpaa2_ethdev.c              | 20 ++++++
 drivers/net/dpaa2/dpaa2_ethdev.h              |  2 +
 drivers/net/dpaa2/dpaa2_rxtx.c                | 25 +++++--
 drivers/net/mlx5/mlx5_rxq.c                   | 36 ++++++++++
 drivers/net/mlx5/mlx5_rxtx.c                  |  8 +--
 drivers/net/mlx5/mlx5_rxtx.h                  | 19 ++++++
 drivers/net/mlx5/mlx5_rxtx_vec_altivec.h      | 41 ++++++------
 drivers/net/mlx5/mlx5_rxtx_vec_neon.h         | 43 ++++++------
 drivers/net/mlx5/mlx5_rxtx_vec_sse.h          | 35 +++++-----
 drivers/net/mlx5/mlx5_trigger.c               |  2 +-
 drivers/net/mlx5/mlx5_txq.c                   |  2 +-
 drivers/net/nfb/nfb_rx.c                      | 23 ++++++-
 drivers/net/nfb/nfb_rx.h                      | 18 +++--
 drivers/net/octeontx2/otx2_ethdev.c           | 33 ++++++++++
 drivers/net/octeontx2/otx2_rx.h               | 19 +++++-
 drivers/net/octeontx2/version.map             |  7 ++
 drivers/net/pcap/rte_eth_pcap.c               | 29 ++++++++-
 examples/rxtx_callbacks/main.c                | 17 ++++-
 lib/librte_ethdev/rte_ethdev.c                | 65 +++++++++++++++++++
 lib/librte_ethdev/rte_ethdev.h                | 13 +++-
 .../rte_event_eth_rx_adapter.c                | 11 ----
 .../rte_event_eth_rx_adapter.h                |  6 +-
 lib/librte_latencystats/rte_latencystats.c    | 48 ++++++++++++--
 lib/librte_mbuf/rte_mbuf.c                    |  2 -
 lib/librte_mbuf/rte_mbuf.h                    |  2 +-
 lib/librte_mbuf/rte_mbuf_core.h               | 12 +---
 lib/librte_mbuf/rte_mbuf_dyn.c                |  1 +
 lib/librte_mbuf/rte_mbuf_dyn.h                | 11 ++--
 37 files changed, 501 insertions(+), 179 deletions(-)
  

Comments

Thomas Monjalon Nov. 1, 2020, 6:08 p.m. UTC | #1
01/11/2020 19:06, Thomas Monjalon:
> The mbuf field timestamp was announced to be removed for three reasons:
>   - a dynamic field already exist, used for Tx only
>   - this field always used 8 bytes even if unneeded
>   - this field is in the first half (cacheline) of mbuf
> 
> After this series, the dynamic field timestamp is used for both Rx and Tx
> with separate dynamic flags to distinguish when the value is meaningful
> without resetting the field during forwarding.
> 
> As a consequence, 8 bytes can be re-allocated to dynamic fields
> in the first half of mbuf structure.
> It is still open to change more the mbuf layout.
> 
> This mbuf layout change is important to allow adding more features
> (consuming more dynamic fields) during the next year,
> and can allow performance improvements with new usages in the first half.

The changelog was missing:

v2:
- remove optimization to register only once in ethdev
- fix error message in latencystats
- convert rxtx_callbacks macro to inline function
- increase dynamic fields space
- do not move pool field