DPDK patches and discussions
 help / color / mirror / Atom feed
From: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
To: dev@dpdk.org
Cc: matan@mellanox.com, rasland@mellanox.com, orika@mellanox.com,
	shahafs@mellanox.com, thomas@mellanox.net,
	olivier.matz@6wind.com, ferruh.yigit@intel.com
Subject: [dpdk-dev] [PATCH v2 0/2] mlx5/net: hint PMD not to inline packet
Date: Wed, 29 Jan 2020 12:21:05 +0000	[thread overview]
Message-ID: <1580300467-7716-1-git-send-email-viacheslavo@mellanox.com> (raw)
In-Reply-To: <1578907777-194921-1-git-send-email-orika@mellanox.com>

Some PMDs inline the mbuf data buffer directly to device transmit descriptor.
This is in order to save the overhead of the PCI headers imposed when the
device DMA reads the data by buffer pointer. For some devices it is essential
in order to provide the full bandwidth.

However, there are cases where such inlining is in-efficient. For example, when
the data buffer resides on other device memory (like GPU or storage device).
Attempt to inline such buffer will result in high PCI overhead for reading
and copying the data from the remote device to the host memory.

To support a mixed traffic pattern (some buffers from local host memory, some
buffers from other devices) with high bandwidth, a hint flag is introduced in
the mbuf.

Application will hint the PMD whether or not it should try to inline the
given mbuf data buffer. PMD should do the best effort to act upon this request.

The hint flag RTE_NET_MLX5_DYNFLAG_NO_INLINE_NAME is supposed to be dynamic,
registered by application with rte_mbuf_dynflag_register(). This flag is
purely vendor specific and declared in PMD specific header rte_pmd_mlx5.h,
which is intended to be used by specific application.

To query the supported specific flags in runtime the private routine is
introduced:

int rte_pmd_mlx5_get_dyn_flag_names(
        uint16_t port,
	char *names[],
        uint16_t n)

It returns the array of currently (over present hardware and configuration)
supported specific flags.

The "not inline hint" feature operating flow is the following one:
- application start
- probe the devices, ports are created
- query the port capabilities
- if port supporting the feature is found
  - register dynamic flag RTE_NET_MLX5_DYNFLAG_NO_INLINE_NAME
- application starts the ports
- on dev_start() PMD checks whether the feature flag is registered and
  enables the feature support in datapath
- application might set this flag in ol_flags field of mbuf in the packets
  being sent and PMD will handle ones appropriately.

Signed-off-by: Shahaf Shuler <shahafs@mellanox.com>
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>

---
RFC: https://patches.dpdk.org/patch/61348/

This patchset combines the parts of the following:

v1/testpmd: http://patches.dpdk.org/cover/64541/
v1/mlx5: http://patches.dpdk.org/patch/64622/

---
Ori Kam (1):
  net/mlx5: add fine grain dynamic flag support

Viacheslav Ovsiienko (1):
  net/mlx5: update Tx datapath to support no inline hint

 drivers/net/mlx5/mlx5.c                   |  20 ++++++
 drivers/net/mlx5/mlx5_rxtx.c              | 106 +++++++++++++++++++++++++-----
 drivers/net/mlx5/mlx5_rxtx.h              |   3 +
 drivers/net/mlx5/mlx5_trigger.c           |   8 +++
 drivers/net/mlx5/rte_pmd_mlx5.h           |  35 ++++++++++
 drivers/net/mlx5/rte_pmd_mlx5_version.map |   7 ++
 6 files changed, 163 insertions(+), 16 deletions(-)
 create mode 100644 drivers/net/mlx5/rte_pmd_mlx5.h

-- 
1.8.3.1


  parent reply	other threads:[~2020-01-29 12:21 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-13  9:29 [dpdk-dev] [PATCH 0/2] net/mlx5: add PMD dynf Ori Kam
2020-01-13  9:29 ` [dpdk-dev] [PATCH 1/2] app/testpmd: add dynamic flag support Ori Kam
2020-01-15 13:31   ` Ferruh Yigit
2020-01-16  8:07     ` Ori Kam
2020-01-13  9:29 ` [dpdk-dev] [PATCH 2/2] net/mlx5: add fine grain " Ori Kam
2020-01-15 14:01   ` Ferruh Yigit
2020-01-16 12:05     ` Ori Kam
2020-01-16 12:24       ` Ferruh Yigit
2020-01-16 12:37         ` Ori Kam
2020-01-16 12:53 ` [dpdk-dev] [PATCH v2] app/testpmd: add " Ori Kam
2020-01-16 19:59   ` Ferruh Yigit
2020-01-29 12:21 ` Viacheslav Ovsiienko [this message]
2020-01-29 12:21   ` [dpdk-dev] [PATCH v2 1/2] net/mlx5: add fine grain " Viacheslav Ovsiienko
2020-01-29 12:21   ` [dpdk-dev] [PATCH v2 2/2] net/mlx5: update Tx datapath to support no inline hint Viacheslav Ovsiienko
2020-01-30 13:52   ` [dpdk-dev] [PATCH v2 0/2] mlx5/net: hint PMD not to inline packet Raslan Darawsheh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1580300467-7716-1-git-send-email-viacheslavo@mellanox.com \
    --to=viacheslavo@mellanox.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=matan@mellanox.com \
    --cc=olivier.matz@6wind.com \
    --cc=orika@mellanox.com \
    --cc=rasland@mellanox.com \
    --cc=shahafs@mellanox.com \
    --cc=thomas@mellanox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).