mlx5 pmd supports various rx_burst functions. Each function is enabled differently and supports different features. Add more comprehensive information about each function. Signed-off-by: Asaf Penso <asafp@nvidia.com> --- doc/guides/nics/mlx5.rst | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index 205e5ba..8c1ce15 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -1645,3 +1645,58 @@ all flows with assistance of external tools. .. code-block:: console mlx_steering_dump.py -f <output_file> + +RX burst functions +------------------ + +This section describes the different rx_burst functions and provides an +elaborated information. + +#. Function name - rx_burst + How to enable - rx_vec_en=0 + Scatter support - Yes + RX error recovery support - Yes + CQE compression support - Yes + Large MTU support - The maximal packet size should be set to be the + same as the MTU size. The mbuf size can be + according to the application needs since the + pmd can perform the scatter. + +#. Function name - rx_burst_vec + How to enable - rx_vec_en=1 (default value) + Scatter support - No + RX error recovery support - Supported only in case CQE compression is off + CQE compression support - Yes + Large MTU support - No. Scatter is not supported, so it means + that the mbuf must be with the same size of + the MTU. In this case, maximal packet size == + mbuf size == MTU size + Fallback - In scatter or LRO fallback to rx_burst + Notes - Improves CPU utilization for single-core and + improves performance + +#. Function name - rx_burst_mprq + How to enable - mprq_en=1 + Scatter support - No + RX error recovery support - Yes + CQE compression support - Yes + Large MTU support - Yes. Needs to be turned on by specifying the + stride size + Notes - Saving PCI bandwidth and getting higher + performance, especially for small packets. + Used mainly for multi-core use cases. + Uses externally attached buffers only. + +#. Function name - rx_burst_mprq_vec + How to enable - rx_vec_en=1 (default mode) and mprq_en=1 + Scatter support - No + RX error recovery support - Supported only in case CQE compression is off + CQE compression support - Yes + Large MTU support - Yes. Needs to be turned on by specifying the + stride size + Fallback - In scatter or LRO fallback to rx_burst_mprq + Notes - Improves CPU utilization of regular + rx_burst_mprq for multi-core and improves + performance. + Used mainly for multi-core use cases. + Uses externally attached buffers only. \ No newline at end of file -- 1.8.3.1
Hi, Asaf
There is one more devargs to manage MPRQ enable: "rxqs_min_mprq".
This parameters defines the number of Rx queues limit to enable MPRQ.
If there is not enough Rx queues (below the limit) then MPRQ is disabled.
By default, "rxqs_min_mprq" is 12. I suppose we should mention this in
the list being added.
With best regards, Slava
> -----Original Message-----
> From: Asaf Penso <asafp@nvidia.com>
> Sent: Sunday, November 22, 2020 14:36
> To: dev@dpdk.org
> Cc: NBU-Contact-Thomas Monjalon <thomas@monjalon.net>; Slava Ovsiienko
> <viacheslavo@nvidia.com>; Matan Azrad <matan@nvidia.com>; Raslan
> Darawsheh <rasland@nvidia.com>
> Subject: [PATCH] doc: add information for Rx burst functions in mlx5
>
> mlx5 pmd supports various rx_burst functions.
> Each function is enabled differently and supports different features.
>
> Add more comprehensive information about each function.
>
> Signed-off-by: Asaf Penso <asafp@nvidia.com>
> ---
> doc/guides/nics/mlx5.rst | 55
> ++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 55 insertions(+)
>
> diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index
> 205e5ba..8c1ce15 100644
> --- a/doc/guides/nics/mlx5.rst
> +++ b/doc/guides/nics/mlx5.rst
> @@ -1645,3 +1645,58 @@ all flows with assistance of external tools.
> .. code-block:: console
>
> mlx_steering_dump.py -f <output_file>
> +
> +RX burst functions
> +------------------
> +
> +This section describes the different rx_burst functions and provides an
> +elaborated information.
> +
> +#. Function name - rx_burst
> + How to enable - rx_vec_en=0
> + Scatter support - Yes
> + RX error recovery support - Yes
> + CQE compression support - Yes
> + Large MTU support - The maximal packet size should be set to be the
> + same as the MTU size. The mbuf size can be
> + according to the application needs since the
> + pmd can perform the scatter.
> +
> +#. Function name - rx_burst_vec
> + How to enable - rx_vec_en=1 (default value)
> + Scatter support - No
> + RX error recovery support - Supported only in case CQE compression is off
> + CQE compression support - Yes
> + Large MTU support - No. Scatter is not supported, so it means
> + that the mbuf must be with the same size of
> + the MTU. In this case, maximal packet size ==
> + mbuf size == MTU size
> + Fallback - In scatter or LRO fallback to rx_burst
> + Notes - Improves CPU utilization for single-core and
> + improves performance
> +
> +#. Function name - rx_burst_mprq
> + How to enable - mprq_en=1
> + Scatter support - No
> + RX error recovery support - Yes
> + CQE compression support - Yes
> + Large MTU support - Yes. Needs to be turned on by specifying the
> + stride size
> + Notes - Saving PCI bandwidth and getting higher
> + performance, especially for small packets.
> + Used mainly for multi-core use cases.
> + Uses externally attached buffers only.
> +
> +#. Function name - rx_burst_mprq_vec
> + How to enable - rx_vec_en=1 (default mode) and mprq_en=1
> + Scatter support - No
> + RX error recovery support - Supported only in case CQE compression is off
> + CQE compression support - Yes
> + Large MTU support - Yes. Needs to be turned on by specifying the
> + stride size
> + Fallback - In scatter or LRO fallback to rx_burst_mprq
> + Notes - Improves CPU utilization of regular
> + rx_burst_mprq for multi-core and improves
> + performance.
> + Used mainly for multi-core use cases.
> + Uses externally attached buffers only.
> \ No newline at end of file
> --
> 1.8.3.1
mlx5 pmd supports various rx_burst functions. Each function is enabled differently and supports different features. Add more comprehensive information about each function. Signed-off-by: Asaf Penso <asafp@nvidia.com> --- v2: for mprq added note for rxqs_min_mprq --- doc/guides/nics/mlx5.rst | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index 205e5ba..46cfc3f 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -1645,3 +1645,60 @@ all flows with assistance of external tools. .. code-block:: console mlx_steering_dump.py -f <output_file> + +RX burst functions +------------------ + +This section describes the different rx_burst functions and provides an +elaborated information. + +#. Function name - rx_burst + How to enable - rx_vec_en=0 + Scatter support - Yes + RX error recovery support - Yes + CQE compression support - Yes + Large MTU support - The maximal packet size should be set to be the + same as the MTU size. The mbuf size can be + according to the application needs since the + pmd can perform the scatter. + +#. Function name - rx_burst_vec + How to enable - rx_vec_en=1 (default value) + Scatter support - No + RX error recovery support - Supported only in case CQE compression is off + CQE compression support - Yes + Large MTU support - No. Scatter is not supported, so it means + that the mbuf must be with the same size of + the MTU. In this case, maximal packet size == + mbuf size == MTU size + Fallback - In scatter or LRO fallback to rx_burst + Notes - Improves CPU utilization for single-core and + improves performance + +#. Function name - rx_burst_mprq + How to enable - mprq_en=1 + - RX queues number should be >= rxqs_min_mprq + Scatter support - No + RX error recovery support - Yes + CQE compression support - Yes + Large MTU support - Yes. Needs to be turned on by specifying the + stride size + Notes - Saving PCI bandwidth and getting higher + performance, especially for small packets. + Used mainly for multi-core use cases. + Uses externally attached buffers only. + +#. Function name - rx_burst_mprq_vec + How to enable - rx_vec_en=1 (default mode) and mprq_en=1 + - RX queues number should be >= rxqs_min_mprq + Scatter support - No + RX error recovery support - Supported only in case CQE compression is off + CQE compression support - Yes + Large MTU support - Yes. Needs to be turned on by specifying the + stride size + Fallback - In scatter or LRO fallback to rx_burst_mprq + Notes - Improves CPU utilization of regular + rx_burst_mprq for multi-core and improves + performance. + Used mainly for multi-core use cases. + Uses externally attached buffers only. -- 1.8.3.1
mlx5 pmd supports various rx_burst functions. Each function is enabled differently and supports different features. Add more comprehensive information about each function. Signed-off-by: Asaf Penso <asafp@nvidia.com> --- v3: checkpatch cleanup v2: for mprq added note for rxqs_min_mprq --- doc/guides/nics/mlx5.rst | 57 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index 205e5ba..758351a 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -1645,3 +1645,60 @@ all flows with assistance of external tools. .. code-block:: console mlx_steering_dump.py -f <output_file> + +RX burst functions +------------------ + +This section describes the different rx_burst functions and provides an +elaborated information. + +#. Function name - rx_burst + How to enable - rx_vec_en=0 + Scatter support - Yes + RX error recovery support - Yes + CQE compression support - Yes + Large MTU support - The maximal packet size should be set to be the + same as the MTU size. The mbuf size can be + according to the application needs since the + pmd can perform the scatter. + +#. Function name - rx_burst_vec + How to enable - rx_vec_en=1 (default value) + Scatter support - No + RX error recovery support - Supported only in case CQE compression is off + CQE compression support - Yes + Large MTU support - No. Scatter is not supported, so it means + that the mbuf must be with the same size of + the MTU. In this case, maximal packet size == + mbuf size == MTU size + Fallback - In scatter or LRO fallback to rx_burst + Notes - Improves CPU utilization for single-core and + improves performance + +#. Function name - rx_burst_mprq + How to enable - mprq_en=1 + - RX queues number should be >= rxqs_min_mprq + Scatter support - No + RX error recovery support - Yes + CQE compression support - Yes + Large MTU support - Yes. Needs to be turned on by specifying the + stride size + Notes - Saving PCI bandwidth and getting higher + performance, especially for small packets. + Used mainly for multi-core use cases. + Uses externally attached buffers only. + +#. Function name - rx_burst_mprq_vec + How to enable - rx_vec_en=1 (default mode) and mprq_en=1 + - RX queues number should be >= rxqs_min_mprq + Scatter support - No + RX error recovery support - Supported only in case CQE compression is off + CQE compression support - Yes + Large MTU support - Yes. Needs to be turned on by specifying the + stride size + Fallback - In scatter or LRO fallback to rx_burst_mprq + Notes - Improves CPU utilization of regular + rx_burst_mprq for multi-core and improves + performance. + Used mainly for multi-core use cases. + Uses externally attached buffers only. -- 1.8.3.1
> -----Original Message-----
> From: Asaf Penso <asafp@nvidia.com>
> Sent: Monday, November 23, 2020 10:05
> To: dev@dpdk.org
> Cc: NBU-Contact-Thomas Monjalon <thomas@monjalon.net>; Slava Ovsiienko
> <viacheslavo@nvidia.com>; Matan Azrad <matan@nvidia.com>; Raslan
> Darawsheh <rasland@nvidia.com>
> Subject: [PATCH v3] doc: add information for Rx burst functions in mlx5
>
> mlx5 pmd supports various rx_burst functions.
> Each function is enabled differently and supports different features.
>
> Add more comprehensive information about each function.
>
> Signed-off-by: Asaf Penso <asafp@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
mlx5 pmd supports various rx_burst functions. Each function is enabled differently and supports different features. Add more comprehensive information about each function. Signed-off-by: Asaf Penso <asafp@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> --- v4: update the fallback for mprq burst functions v3: checkpatch cleanup v2: for mprq added note for rxqs_min_mprq --- doc/guides/nics/mlx5.rst | 59 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index 205e5ba..c5a0fee 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -1645,3 +1645,62 @@ all flows with assistance of external tools. .. code-block:: console mlx_steering_dump.py -f <output_file> + +RX burst functions +------------------ + +This section describes the different rx_burst functions and provides an +elaborated information. + +#. Function name - rx_burst + How to enable - rx_vec_en=0 + Scatter support - Yes + RX error recovery support - Yes + CQE compression support - Yes + Large MTU support - The maximal packet size should be set to be the + same as the MTU size. The mbuf size can be + according to the application needs since the + pmd can perform the scatter. + +#. Function name - rx_burst_vec + How to enable - rx_vec_en=1 (default value) + Scatter support - No + RX error recovery support - Supported only in case CQE compression is off + CQE compression support - Yes + Large MTU support - No. Scatter is not supported, so it means + that the mbuf must be with the same size of + the MTU. In this case, maximal packet size == + mbuf size == MTU size + Fallback - In scatter or LRO fallback to rx_burst + Notes - Improves CPU utilization for single-core and + improves performance + +#. Function name - rx_burst_mprq + How to enable - mprq_en=1 + - RX queues number should be >= rxqs_min_mprq + Scatter support - No + RX error recovery support - Yes + CQE compression support - Yes + Large MTU support - Yes. Needs to be turned on by specifying the + stride size + Fallback - In scatter fallback to rx_burst + Notes - Saving PCI bandwidth and getting higher + performance, especially for small packets. + Used mainly for multi-core use cases. + Uses externally attached buffers only. + +#. Function name - rx_burst_mprq_vec + How to enable - rx_vec_en=1 (default mode) and mprq_en=1 + - RX queues number should be >= rxqs_min_mprq + Scatter support - No + RX error recovery support - Supported only in case CQE compression is off + CQE compression support - Yes + Large MTU support - Yes. Needs to be turned on by specifying the + stride size + Fallback - In scatter fallback to rx_burst. + In LRO fallback to rx_burst_mprq. + Notes - Improves CPU utilization of regular + rx_burst_mprq for multi-core and improves + performance. + Used mainly for multi-core use cases. + Uses externally attached buffers only. -- 1.8.3.1
From: Asaf Penso <asafp@nvidia.com> The mlx5 PMD supports various Rx burst functions. Each function is enabled differently and supports different features. Signed-off-by: Asaf Penso <asafp@nvidia.com> Signed-off-by: Thomas Monjalon <thomas@monjalon.net> --- v5: fix formatting by using a table --- doc/guides/nics/mlx5.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/doc/guides/nics/mlx5.rst b/doc/guides/nics/mlx5.rst index e96aca21eb..6858e81f72 100644 --- a/doc/guides/nics/mlx5.rst +++ b/doc/guides/nics/mlx5.rst @@ -1345,6 +1345,29 @@ Performance tuning - Configure per-lcore cache when creating Mempools for packet buffer. - Refrain from dynamically allocating/freeing memory in run-time. +Rx burst functions +------------------ + +There are multiple Rx burst functions with different advantages and limitations. + +.. table:: Rx burst functions + + +-------------------+------------------------+---------+-----------------+------+-------+ + || Function Name || Enabler || Scatter|| Error Recovery || CQE || Large| + | | | | || comp|| MTU | + +===================+========================+=========+=================+======+=======+ + | rx_burst | rx_vec_en=0 | Yes | Yes | Yes | Yes | + +-------------------+------------------------+---------+-----------------+------+-------+ + | rx_burst_vec | rx_vec_en=1 (default) | No | if CQE comp off | Yes | No | + +-------------------+------------------------+---------+-----------------+------+-------+ + | rx_burst_mprq || mprq_en=1 | No | Yes | Yes | Yes | + | || RxQs >= rxqs_min_mprq | | | | | + +-------------------+------------------------+---------+-----------------+------+-------+ + | rx_burst_mprq_vec || rx_vec_en=1 (default) | No | if CQE comp off | Yes | Yes | + | || mprq_en=1 | | | | | + | || RxQs >= rxqs_min_mprq | | | | | + +-------------------+------------------------+---------+-----------------+------+-------+ + .. _mlx5_offloads_support: Supported hardware offloads -- 2.28.0
27/11/2020 00:55, Thomas Monjalon:
> From: Asaf Penso <asafp@nvidia.com>
>
> The mlx5 PMD supports various Rx burst functions.
> Each function is enabled differently and supports different features.
>
> Signed-off-by: Asaf Penso <asafp@nvidia.com>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
> v5: fix formatting by using a table
Applied