diff --git a/0345-doc-unify-sections-of-networking-drivers-guide.patch b/0345-doc-unify-sections-of-networking-drivers-guide.patch new file mode 100644 index 0000000..9c2509e --- /dev/null +++ b/0345-doc-unify-sections-of-networking-drivers-guide.patch @@ -0,0 +1,96 @@ +From 2bf5b0a8dfa64f336bd59aa807e5d576612627e6 Mon Sep 17 00:00:00 2001 +From: Ferruh Yigit +Date: Tue, 21 Mar 2023 23:59:09 +0000 +Subject: doc: unify sections of networking drivers guide + +[ upstream commit b583b9a1bb49e86aa0937d55415713282000c536 ] + +- Move supported device to the top +- Move supported features up +- Move limitations down +- Rename configuration sections +- Fix section indentation +- Remove empty sections +- Remove contact info as this is duplication of maintainers file + +This patch just fix hns3 PMD because others PMDs are very +conflicting. + +Signed-off-by: Ferruh Yigit +Acked-by: Hyong Youb Kim +Acked-by: Chengwen Feng +Acked-by: Dongdong Liu +Acked-by: Qi Zhang +Acked-by: Simei Su +Reviewed-by: Rosen Xu +Acked-by: Cristian Dumitrescu +Reviewed-by: Chenbo Xia +Reviewed-by: Igor Russkikh +Acked-by: Liron Himi +Acked-by: Jerin Jacob +Acked-by: Long Li +Acked-by: Sachin Saxena +--- + doc/guides/nics/hns3.rst | 30 +++++++++++++++--------------- + 1 file changed, 15 insertions(+), 15 deletions(-) + +diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst +index 791c9cc2ed..5373ec5a8f 100644 +--- a/doc/guides/nics/hns3.rst ++++ b/doc/guides/nics/hns3.rst +@@ -47,11 +47,21 @@ Prerequisites + - Follow the DPDK :ref:`Getting Started Guide for Linux ` to + setup the basic DPDK environment. + ++Link status event Pre-conditions ++~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +-Pre-Installation Configuration +------------------------------- ++Firmware 1.8.0.0 and later versions support reporting link changes to the PF. ++Therefore, to use the LSC for the PF driver, ensure that the firmware version ++also supports reporting link changes. ++If the VF driver needs to support LSC, special patch must be added: ++``_. ++Note: The patch has been uploaded to 5.13 of the Linux kernel mainline. ++ ++ ++Configuration ++------------- + +-Config File Options ++Compilation Options + ~~~~~~~~~~~~~~~~~~~ + + The following options can be modified in the ``config/rte_config.h`` file. +@@ -60,8 +70,8 @@ The following options can be modified in the ``config/rte_config.h`` file. + + Number of MAX queues reserved for PF. + +-Runtime Config Options +-~~~~~~~~~~~~~~~~~~~~~~ ++Runtime Configuration ++~~~~~~~~~~~~~~~~~~~~~ + + - ``rx_func_hint`` (default ``none``) + +@@ -130,16 +140,6 @@ Runtime Config Options + For example:: + -a 0000:7d:00.0,mbx_time_limit_ms=600 + +-Link status event Pre-conditions +-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +- +-Firmware 1.8.0.0 and later versions support reporting link changes to the PF. +-Therefore, to use the LSC for the PF driver, ensure that the firmware version +-also supports reporting link changes. +-If the VF driver needs to support LSC, special patch must be added: +-``_. +-Note: The patch has been uploaded to 5.13 of the Linux kernel mainline. +- + + Driver compilation and testing + ------------------------------ +-- +2.23.0 + diff --git a/0346-net-hns3-delete-duplicate-macro-definition.patch b/0346-net-hns3-delete-duplicate-macro-definition.patch new file mode 100644 index 0000000..6c2f2d5 --- /dev/null +++ b/0346-net-hns3-delete-duplicate-macro-definition.patch @@ -0,0 +1,39 @@ +From afbdff81bcfc8c16fffc7431c247684cf3451154 Mon Sep 17 00:00:00 2001 +From: Huisong Li +Date: Thu, 29 Jun 2023 21:21:26 +0800 +Subject: net/hns3: delete duplicate macro definition + +[ upstream commit d48709625a2bf0f64692d925e17e254ba0dc2351 ] + +This patch delete some duplicate macro definitions. + +Fixes: a4c7152d0581 ("net/hns3: extract common code to its own file") +Cc: stable@dpdk.org + +Signed-off-by: Huisong Li +Signed-off-by: Dongdong Liu +--- + drivers/net/hns3/hns3_ethdev.h | 7 ------- + 1 file changed, 7 deletions(-) + +diff --git a/drivers/net/hns3/hns3_ethdev.h b/drivers/net/hns3/hns3_ethdev.h +index c58094d87b..c85a6912ad 100644 +--- a/drivers/net/hns3/hns3_ethdev.h ++++ b/drivers/net/hns3/hns3_ethdev.h +@@ -873,13 +873,6 @@ struct hns3_adapter { + struct hns3_ptype_table ptype_tbl __rte_cache_aligned; + }; + +-#define HNS3_DEVARG_RX_FUNC_HINT "rx_func_hint" +-#define HNS3_DEVARG_TX_FUNC_HINT "tx_func_hint" +- +-#define HNS3_DEVARG_DEV_CAPS_MASK "dev_caps_mask" +- +-#define HNS3_DEVARG_MBX_TIME_LIMIT_MS "mbx_time_limit_ms" +- + enum hns3_dev_cap { + HNS3_DEV_SUPPORT_DCB_B, + HNS3_DEV_SUPPORT_COPPER_B, +-- +2.23.0 + diff --git a/0347-net-hns3-add-FDIR-VLAN-match-mode-runtime-config.patch b/0347-net-hns3-add-FDIR-VLAN-match-mode-runtime-config.patch new file mode 100644 index 0000000..3f6062c --- /dev/null +++ b/0347-net-hns3-add-FDIR-VLAN-match-mode-runtime-config.patch @@ -0,0 +1,201 @@ +From 01285f3f7ccbd4e3604c1cf00b6a9be2a9428502 Mon Sep 17 00:00:00 2001 +From: Huisong Li +Date: Thu, 29 Jun 2023 21:21:27 +0800 +Subject: net/hns3: add FDIR VLAN match mode runtime config + +[ upstream commit 5f107c4d7b7bfbc3fcaf98b4ca2963cc3e48fe93 ] + +The VLAN number in FDIR meta data is used to enable that hardware +bases on VLAN number to strictly match the input flow. And it is +enabled by default. + +For the following two rules: +rule0: + pattern: eth type is 0x0806 + actions: queue index 3 +rule1: + pattern: eth type is 0x0806 / vlan vid is 20 + actions: queue index 4 +If enable VLAN number, only the ARP packets with VLAN 20 are directed +to queue 4, and the ARP packets with other VLAN ID cannot be directed +to the specified queue. If app want to all ARP (VLAN or no VLAN) +packets to be directed to the specified queue, app has to set many +rules for VLAN packet. In this case, if driver doesn't enable VLAN +number, app just need to set one rule (rule0). + +So this patch adds a "fdir_vlan_match_mode" runtime config which only +can be 'strict' or 'nostrict'. And driver still uses 'strict' mode as +the default mode. Please select 'nostrict' mode if you request all same +ethertype packets with and without VLAN to a specified queue. + +Signed-off-by: Huisong Li +Signed-off-by: Dongdong Liu +--- + doc/guides/nics/hns3.rst | 27 ++++++++++++++++++++++++++ + drivers/net/hns3/hns3_common.c | 35 ++++++++++++++++++++++++++++++++++ + drivers/net/hns3/hns3_common.h | 2 ++ + drivers/net/hns3/hns3_fdir.c | 10 +++++++--- + drivers/net/hns3/hns3_fdir.h | 8 ++++++++ + 5 files changed, 79 insertions(+), 3 deletions(-) + +diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst +index 172fcdb29f..644d520b64 100644 +--- a/doc/guides/nics/hns3.rst ++++ b/doc/guides/nics/hns3.rst +@@ -144,6 +144,33 @@ Runtime Configuration + For example:: + -a 0000:7d:00.0,mbx_time_limit_ms=600 + ++- ``fdir_vlan_match_mode`` (default ``strict``) ++ ++ Used to select VLAN match mode. This runtime config can be ``strict`` ++ or ``nostrict`` and is only valid for PF devices. ++ If driver works on ``strict`` mode (default mode), hardware does strictly ++ match the input flow base on VLAN number. ++ ++ For the following scenarios with two rules: ++ ++ .. code-block:: console ++ ++ rule0: ++ pattern: eth type is 0x0806 ++ actions: queue index 3 ++ rule1: ++ pattern: eth type is 0x0806 / vlan vid is 20 ++ actions: queue index 4 ++ ++ If application select ``strict`` mode, only the ARP packets with VLAN ++ 20 are directed to queue 4, and the ARP packets with other VLAN ID ++ cannot be directed to the specified queue. If application want to all ++ ARP packets with or without VLAN to be directed to the specified queue, ++ application can select ``nostrict`` mode and just need to set rule0. ++ ++ For example:: ++ ++ -a 0000:7d:00.0,fdir_vlan_match_mode=nostrict + + Driver compilation and testing + ------------------------------ +diff --git a/drivers/net/hns3/hns3_common.c b/drivers/net/hns3/hns3_common.c +index 6697ecefe6..a7b576aa60 100644 +--- a/drivers/net/hns3/hns3_common.c ++++ b/drivers/net/hns3/hns3_common.c +@@ -236,6 +236,34 @@ hns3_parse_mbx_time_limit(const char *key, const char *value, void *extra_args) + return 0; + } + ++static int ++hns3_parse_vlan_match_mode(const char *key, const char *value, void *args) ++{ ++ uint8_t mode; ++ ++ RTE_SET_USED(key); ++ ++ if (value == NULL) { ++ PMD_INIT_LOG(WARNING, "no value for key:\"%s\"", key); ++ return -1; ++ } ++ ++ if (strcmp(value, "strict") == 0) { ++ mode = HNS3_FDIR_VLAN_STRICT_MATCH; ++ } else if (strcmp(value, "nostrict") == 0) { ++ mode = HNS3_FDIR_VLAN_NOSTRICT_MATCH; ++ } else { ++ PMD_INIT_LOG(WARNING, "invalid value:\"%s\" for key:\"%s\", " ++ "value must be 'strict' or 'nostrict'", ++ value, key); ++ return -1; ++ } ++ ++ *(uint8_t *)args = mode; ++ ++ return 0; ++} ++ + void + hns3_parse_devargs(struct rte_eth_dev *dev) + { +@@ -252,6 +280,8 @@ hns3_parse_devargs(struct rte_eth_dev *dev) + hns->tx_func_hint = HNS3_IO_FUNC_HINT_NONE; + hns->dev_caps_mask = 0; + hns->mbx_time_limit_ms = HNS3_MBX_DEF_TIME_LIMIT_MS; ++ if (!hns->is_vf) ++ hns->pf.fdir.vlan_match_mode = HNS3_FDIR_VLAN_STRICT_MATCH; + + if (dev->device->devargs == NULL) + return; +@@ -268,6 +298,11 @@ hns3_parse_devargs(struct rte_eth_dev *dev) + &hns3_parse_dev_caps_mask, &dev_caps_mask); + (void)rte_kvargs_process(kvlist, HNS3_DEVARG_MBX_TIME_LIMIT_MS, + &hns3_parse_mbx_time_limit, &mbx_time_limit_ms); ++ if (!hns->is_vf) ++ (void)rte_kvargs_process(kvlist, ++ HNS3_DEVARG_FDIR_VALN_MATCH_MODE, ++ &hns3_parse_vlan_match_mode, ++ &hns->pf.fdir.vlan_match_mode); + + rte_kvargs_free(kvlist); + +diff --git a/drivers/net/hns3/hns3_common.h b/drivers/net/hns3/hns3_common.h +index 8eaeda26e7..cf9593bd0c 100644 +--- a/drivers/net/hns3/hns3_common.h ++++ b/drivers/net/hns3/hns3_common.h +@@ -27,6 +27,8 @@ enum { + + #define HNS3_DEVARG_MBX_TIME_LIMIT_MS "mbx_time_limit_ms" + ++#define HNS3_DEVARG_FDIR_VALN_MATCH_MODE "fdir_vlan_match_mode" ++ + #define MSEC_PER_SEC 1000L + #define USEC_PER_MSEC 1000L + +diff --git a/drivers/net/hns3/hns3_fdir.c b/drivers/net/hns3/hns3_fdir.c +index 48a91fb517..c80fa59e63 100644 +--- a/drivers/net/hns3/hns3_fdir.c ++++ b/drivers/net/hns3/hns3_fdir.c +@@ -355,9 +355,13 @@ int hns3_init_fd_config(struct hns3_adapter *hns) + /* roce_type is used to filter roce frames + * dst_vport is used to specify the rule + */ +- key_cfg->meta_data_active = BIT(DST_VPORT) | BIT(TUNNEL_PACKET) | +- BIT(VLAN_NUMBER); +- hns3_dbg(hw, "fdir meta data: dst_vport tunnel_packet vlan_number"); ++ key_cfg->meta_data_active = BIT(DST_VPORT) | BIT(TUNNEL_PACKET); ++ if (pf->fdir.vlan_match_mode) ++ key_cfg->meta_data_active |= BIT(VLAN_NUMBER); ++ ++ hns3_dbg(hw, "fdir meta data: dst_vport tunnel_packet %s", ++ (pf->fdir.vlan_match_mode == HNS3_FDIR_VLAN_STRICT_MATCH) ? ++ "vlan_number" : ""); + + ret = hns3_get_fd_allocation(hw, + &pf->fdir.fd_cfg.rule_num[HNS3_FD_STAGE_1], +diff --git a/drivers/net/hns3/hns3_fdir.h b/drivers/net/hns3/hns3_fdir.h +index ce70a534dc..308cfbe56f 100644 +--- a/drivers/net/hns3/hns3_fdir.h ++++ b/drivers/net/hns3/hns3_fdir.h +@@ -170,6 +170,13 @@ struct hns3_fdir_rule_ele { + + TAILQ_HEAD(hns3_fdir_rule_list, hns3_fdir_rule_ele); + ++/* ++ * On 'strict' mode, hardware bases on VLAN number to exactly match the ++ * input flow. ++ */ ++#define HNS3_FDIR_VLAN_STRICT_MATCH 1 ++#define HNS3_FDIR_VLAN_NOSTRICT_MATCH 0 ++ + /* + * A structure used to define fields of a FDIR related info. + */ +@@ -178,6 +185,7 @@ struct hns3_fdir_info { + struct hns3_fdir_rule_ele **hash_map; + struct rte_hash *hash_handle; + struct hns3_fd_cfg fd_cfg; ++ uint8_t vlan_match_mode; + }; + + struct hns3_adapter; +-- +2.23.0 + diff --git a/0348-doc-fix-kernel-patch-link-in-hns3-guide.patch b/0348-doc-fix-kernel-patch-link-in-hns3-guide.patch new file mode 100644 index 0000000..fcfb1b9 --- /dev/null +++ b/0348-doc-fix-kernel-patch-link-in-hns3-guide.patch @@ -0,0 +1,38 @@ +From 3838f68b46b37050749a066dd5e956ca930b5658 Mon Sep 17 00:00:00 2001 +From: Dongdong Liu +Date: Fri, 30 Jun 2023 15:37:35 +0800 +Subject: doc: fix kernel patch link in hns3 guide + +[ upstream commit c6a4242b86a020b79d48f9dcc533be113a8df7c8 ] + +The LSC support of VF driver depends on a patch link in kernel PF +driver. +But current the link is invalid, so fixes it. + +Add a blank line after the link. + +Fixes: 80006b598730 ("doc: add link status event requirements in hns3 guide") +Cc: stable@dpdk.org + +Signed-off-by: Dongdong Liu +--- + doc/guides/nics/hns3.rst | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst +index 5373ec5a8f..82fa79dd73 100644 +--- a/doc/guides/nics/hns3.rst ++++ b/doc/guides/nics/hns3.rst +@@ -54,7 +54,8 @@ Firmware 1.8.0.0 and later versions support reporting link changes to the PF. + Therefore, to use the LSC for the PF driver, ensure that the firmware version + also supports reporting link changes. + If the VF driver needs to support LSC, special patch must be added: +-``_. ++``_. ++ + Note: The patch has been uploaded to 5.13 of the Linux kernel mainline. + + +-- +2.23.0 + diff --git a/0349-doc-fix-syntax-in-hns3-guide.patch b/0349-doc-fix-syntax-in-hns3-guide.patch new file mode 100644 index 0000000..e187abb --- /dev/null +++ b/0349-doc-fix-syntax-in-hns3-guide.patch @@ -0,0 +1,49 @@ +From 906df53424e1b95ff72af509a05bbf048072a933 Mon Sep 17 00:00:00 2001 +From: Dongdong Liu +Date: Fri, 30 Jun 2023 15:37:36 +0800 +Subject: doc: fix syntax in hns3 guide + +[ upstream commit 059268551587f6fd929951dd7f5706bbdc46abcd ] + +'::' doesn't provide pre-formatted text without an empty line after it, +so fixes it. + +Fixes: cdf6a5fbc540 ("doc: add runtime option examples to hns3 guide") +Cc: stable@dpdk.org + +Signed-off-by: Dongdong Liu +--- + doc/guides/nics/hns3.rst | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst +index 82fa79dd73..172fcdb29f 100644 +--- a/doc/guides/nics/hns3.rst ++++ b/doc/guides/nics/hns3.rst +@@ -92,6 +92,7 @@ Runtime Configuration + ``common``. + + For example:: ++ + -a 0000:7d:00.0,rx_func_hint=simple + + - ``tx_func_hint`` (default ``none``) +@@ -112,6 +113,7 @@ Runtime Configuration + ``common``. + + For example:: ++ + -a 0000:7d:00.0,tx_func_hint=common + + - ``dev_caps_mask`` (default ``0``) +@@ -124,6 +126,7 @@ Runtime Configuration + Its main purpose is to debug and avoid problems. + + For example:: ++ + -a 0000:7d:00.0,dev_caps_mask=0xF + + - ``mbx_time_limit_ms`` (default ``500``) +-- +2.23.0 + diff --git a/0350-doc-fix-number-of-leading-spaces-in-hns3-guide.patch b/0350-doc-fix-number-of-leading-spaces-in-hns3-guide.patch new file mode 100644 index 0000000..89e7ca9 --- /dev/null +++ b/0350-doc-fix-number-of-leading-spaces-in-hns3-guide.patch @@ -0,0 +1,83 @@ +From bb21b8e295cf30381e12629096dd3f0ab7a47b6e Mon Sep 17 00:00:00 2001 +From: Dongdong Liu +Date: Fri, 30 Jun 2023 15:37:37 +0800 +Subject: doc: fix number of leading spaces in hns3 guide + +[ upstream commit 620cd2d5ac5a6d7de750a4827e2840209a1b0cbb ] + +The current description of 'mbx_time_limit_ms' has three spaces +at the beginning. Use two spaces to keep the same style with other +places and add a blank line after '::'. + +Fixes: 2fc3e696a7f1 ("net/hns3: add runtime config for mailbox limit time") +Cc: stable@dpdk.org + +Signed-off-by: Dongdong Liu +--- + doc/guides/nics/hns3.rst | 34 ++++++++++++++++++---------------- + 1 file changed, 18 insertions(+), 16 deletions(-) + +diff --git a/doc/guides/nics/hns3.rst b/doc/guides/nics/hns3.rst +index 644d520b64..8705845d8e 100644 +--- a/doc/guides/nics/hns3.rst ++++ b/doc/guides/nics/hns3.rst +@@ -93,7 +93,7 @@ Runtime Configuration + + For example:: + +- -a 0000:7d:00.0,rx_func_hint=simple ++ -a 0000:7d:00.0,rx_func_hint=simple + + - ``tx_func_hint`` (default ``none``) + +@@ -114,7 +114,7 @@ Runtime Configuration + + For example:: + +- -a 0000:7d:00.0,tx_func_hint=common ++ -a 0000:7d:00.0,tx_func_hint=common + + - ``dev_caps_mask`` (default ``0``) + +@@ -127,22 +127,24 @@ Runtime Configuration + + For example:: + +- -a 0000:7d:00.0,dev_caps_mask=0xF ++ -a 0000:7d:00.0,dev_caps_mask=0xF + + - ``mbx_time_limit_ms`` (default ``500``) +- Used to define the mailbox time limit by user. +- Current, the max waiting time for MBX response is 500ms, but in +- some scenarios, it is not enough. Since it depends on the response +- of the kernel mode driver, and its response time is related to the +- scheduling of the system. In this special scenario, most of the +- cores are isolated, and only a few cores are used for system +- scheduling. When a large number of services are started, the +- scheduling of the system will be very busy, and the reply of the +- mbx message will time out, which will cause our PMD initialization +- to fail. So provide access to set mailbox time limit for user. +- +- For example:: +- -a 0000:7d:00.0,mbx_time_limit_ms=600 ++ ++ Used to define the mailbox time limit by user. ++ Current, the max waiting time for MBX response is 500ms, but in ++ some scenarios, it is not enough. Since it depends on the response ++ of the kernel mode driver, and its response time is related to the ++ scheduling of the system. In this special scenario, most of the ++ cores are isolated, and only a few cores are used for system ++ scheduling. When a large number of services are started, the ++ scheduling of the system will be very busy, and the reply of the ++ mbx message will time out, which will cause our PMD initialization ++ to fail. So provide access to set mailbox time limit for user. ++ ++ For example:: ++ ++ -a 0000:7d:00.0,mbx_time_limit_ms=600 + + - ``fdir_vlan_match_mode`` (default ``strict``) + +-- +2.23.0 + diff --git a/dpdk.spec b/dpdk.spec index 314b696..06f7c13 100644 --- a/dpdk.spec +++ b/dpdk.spec @@ -1,6 +1,6 @@ Name: dpdk Version: 21.11 -Release: 54 +Release: 55 Packager: packaging@6wind.com URL: http://dpdk.org %global source_version 21.11 @@ -371,6 +371,12 @@ Patch6341: 0341-pdump-fix-build-with-GCC-12.patch Patch6342: 0342-net-cxgbe-fix-dangling-pointer-by-mailbox-access-rew.patch Patch6343: 0343-kni-fix-build-with-Linux-6.3.patch Patch6344: 0344-kni-fix-build-with-Linux-6.5.patch +Patch6345: 0345-doc-unify-sections-of-networking-drivers-guide.patch +Patch6346: 0346-net-hns3-delete-duplicate-macro-definition.patch +Patch6347: 0347-net-hns3-add-FDIR-VLAN-match-mode-runtime-config.patch +Patch6348: 0348-doc-fix-kernel-patch-link-in-hns3-guide.patch +Patch6349: 0349-doc-fix-syntax-in-hns3-guide.patch +Patch6350: 0350-doc-fix-number-of-leading-spaces-in-hns3-guide.patch Summary: Data Plane Development Kit core Group: System Environment/Libraries @@ -516,6 +522,17 @@ strip -g $RPM_BUILD_ROOT/lib/modules/%{kern_devel_ver}/extra/dpdk/igb_uio.ko /usr/sbin/depmod %changelog +* Mon Jul 17 2023 chenjiji - 21.11-55 + Sync some patchs from upstreaming about add FDIR VLAN match + mode runtime config and fix doc format for hns3 pmd. Patchs + are as follow: + - doc: unify sections of networking drivers guide + - net/hns3: delete duplicate macro definition + - net/hns3: add FDIR VLAN match mode runtime config + - doc: fix kernel patch link in hns3 guide + - doc: fix syntax in hns3 guide + - doc: fix number of leading spaces in hns3 guide + * Sat Jul 15 2023 jiangheng - 21.11-54 - kni: fix build with Linux 6.3/6.5 - remove unused patch intruduced by "fix build with GCC 12"