On 3/12/2021 11:51 AM, Min Hu (Connor) wrote:
From: Chengwen Feng <fengcheng...@huawei.com>

Currently, the driver support multiple IO burst function and auto
selection of the most appropriate function based on offload
configuration.

Most applications such as l2fwd/l3fwd don't provide the means to
change offload configuration, so it will use the auto selection's io
burst function.

This patch support runtime config to select io burst function, which
add two config: rx_func_hint and tx_func_hint, both could assign
vec/sve/simple/common.

The driver will use the following rules to select io burst func:
a. if hint equal vec and meet the vec Rx/Tx usage condition then use
the neon function.
b. if hint equal sve and meet the sve Rx/Tx usage condition then use
the sve function.
c. if hint equal simple and meet the simple Rx/Tx usage condition then
use the simple function.
d. if hint equal common then use the common function.
e. if hint not set then:
e.1. if meet the vec Rx/Tx usage condition then use the neon function.
e.2. if meet the simple Rx/Tx usage condition then use the simple
function.
e.3. else use the common function.

Note: the sve Rx/Tx usage condition based on the vec Rx/Tx usage
condition and runtime environment (which must support SVE).

In the previous versions, driver will preferred use the sve function
when meet the sve Rx/Tx usage condition, but in this case driver could
get better performance if use the neon function.

Signed-off-by: Chengwen Feng <fengcheng...@huawei.com>
Signed-off-by: Min Hu (Connor) <humi...@huawei.com>
---
  doc/guides/nics/hns3.rst               | 20 +++++++++
  doc/guides/rel_notes/release_21_05.rst |  1 +
  drivers/net/hns3/hns3_ethdev.c         | 77 ++++++++++++++++++++++++++++++++++
  drivers/net/hns3/hns3_ethdev.h         | 15 +++++++
  drivers/net/hns3/hns3_ethdev_vf.c      |  4 ++
  drivers/net/hns3/hns3_rxtx.c           | 54 +++++++++++++++++-------
  6 files changed, 157 insertions(+), 14 deletions(-)

diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst
index 84bd7a3..40d2e3b 100644
--- a/doc/guides/nics/hns3.rst
+++ b/doc/guides/nics/hns3.rst
@@ -46,6 +46,26 @@ Prerequisites
  - Follow the DPDK :ref:`Getting Started Guide for Linux <linux_gsg>` to setup 
the basic DPDK environment.
+Runtime Config Options
+----------------------
+
+- ``rx_func_hint`` (default ``none``)
+
+  Used to select Rx burst function, supported value are "vec", "sve", "simple", 
"common".
+  When equal "vec" and meet the vector Rx usage condition then use the neon Rx 
function.
+  When equal "sve" and meet the sve Rx usage condition then use the sve Rx 
function.
+  When equal "simple" and meet the simple Rx usage condition then use the 
simple Rx function.
+  When equal "common" then use the common Rx function.
+
+- ``tx_func_hint`` (default ``none``)
+
+  Used to select Tx burst function, supported value are "vec", "sve", "simple", 
"common".
+  When equal "vec" and meet the vector Tx usage condition then use the neon Tx 
function.
+  When equal "sve" and meet the sve Tx usage condition then use the sve Tx 
function.
+  When equal "simple" and meet the simple Tx usage condition then use the 
simple Tx function.
+  When equal "common" then use the common Tx function.
+

I think 'vec' & 'sve' are more self explenatory, but can you please describe what is 'common' and 'simple', and the difference of these two?

btw, since both 'neon' and 'sve' are vector implementations, what do you think to have arguments as 'neon' & 'sve', instead of 'vec' & 'sve'?

Reply via email to