[dpdk-dev] [RFC v2] mlx5/net: hint PMD not to inline packet
Olivier Matz
olivier.matz at 6wind.com
Fri Dec 27 09:59:46 CET 2019
Hi Viacheslav,
On Wed, Dec 11, 2019 at 05:01:33PM +0000, Viacheslav Ovsiienko wrote:
> 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 at mellanox.com>
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo at mellanox.com>
>
> ---
> v1: https://patches.dpdk.org/patch/61348/
>
It looks the patch is missing.
I think a dynamic flag is the good solution for this problem: the pmd
can send a pmd-specific hint to the application, without impacting the
way it works today.
Olivier
More information about the dev
mailing list