net/hns3: add runtime config to select IO burst function
authorChengwen Feng <fengchengwen@huawei.com>
Tue, 23 Mar 2021 11:21:00 +0000 (19:21 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 23 Mar 2021 12:04:32 +0000 (13:04 +0100)
commita124f9e9591bf2b22b20e2d117775b0ff0b9f684
treec9e68dac33ca9889b1f65fab7a37f07643f14763
parent23d5fee348d4c7c6c6df5c4557e1c416f1545e4b
net/hns3: add runtime config to select IO burst function

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 <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
doc/guides/nics/hns3.rst
doc/guides/rel_notes/release_21_05.rst
drivers/net/hns3/hns3_ethdev.c
drivers/net/hns3/hns3_ethdev.h
drivers/net/hns3/hns3_ethdev_vf.c
drivers/net/hns3/hns3_rxtx.c