diff --git a/0221-net-hns3-declare-support-rule-keep-capability.patch b/0221-net-hns3-declare-support-rule-keep-capability.patch new file mode 100644 index 0000000000000000000000000000000000000000..eae994eea045a8e8649b1c7013872dc4d9104521 --- /dev/null +++ b/0221-net-hns3-declare-support-rule-keep-capability.patch @@ -0,0 +1,45 @@ +From d23e2a0ba1e120161dcbcb0f84cfc97e0b50befb Mon Sep 17 00:00:00 2001 +From: Chengwen Feng +Date: Thu, 15 Dec 2022 01:41:41 +0000 +Subject: net/hns3: declare support rule keep capability + +[ upstream commit a612a88c89b63522442f0c51f192cea8331ef517 ] + +The driver supports create flow rules when device is stopped, and +re-setup flow rules when restarting, so declare support +RTE_ETH_DEV_CAPA_FLOW_RULE_KEEP. + +The driver also supports to create indirect actions when device is +stopped, and keeps the indirect actions when restarting, so declare +support RTE_ETH_DEV_CAPA_FLOW_SHARED_OBJECT_KEEP. + +Cc: stable@dpdk.org + +Signed-off-by: Chengwen Feng +Acked-by: Dongdong Liu +--- + drivers/net/hns3/hns3_common.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/drivers/net/hns3/hns3_common.c b/drivers/net/hns3/hns3_common.c +index 2ebcf5695b..9008384736 100644 +--- a/drivers/net/hns3/hns3_common.c ++++ b/drivers/net/hns3/hns3_common.c +@@ -90,10 +90,11 @@ hns3_dev_infos_get(struct rte_eth_dev *eth_dev, struct rte_eth_dev_info *info) + if (hns3_dev_get_support(hw, OUTER_UDP_CKSUM)) + info->tx_offload_capa |= RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM; + ++ info->dev_capa = RTE_ETH_DEV_CAPA_FLOW_RULE_KEEP | ++ RTE_ETH_DEV_CAPA_FLOW_SHARED_OBJECT_KEEP; + if (hns3_dev_get_support(hw, INDEP_TXRX)) +- info->dev_capa = RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP | +- RTE_ETH_DEV_CAPA_RUNTIME_TX_QUEUE_SETUP; +- info->dev_capa &= ~RTE_ETH_DEV_CAPA_FLOW_RULE_KEEP; ++ info->dev_capa |= RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP | ++ RTE_ETH_DEV_CAPA_RUNTIME_TX_QUEUE_SETUP; + + if (hns3_dev_get_support(hw, PTP)) + info->rx_offload_capa |= RTE_ETH_RX_OFFLOAD_TIMESTAMP; +-- +2.23.0 + diff --git a/0222-app-testpmd-add-disable-flow-flush-parameter.patch b/0222-app-testpmd-add-disable-flow-flush-parameter.patch new file mode 100644 index 0000000000000000000000000000000000000000..975575cfe4d1891024bb96585a12115fbf65d3cd --- /dev/null +++ b/0222-app-testpmd-add-disable-flow-flush-parameter.patch @@ -0,0 +1,106 @@ +From 1a66a56adf00c9b340ffff0bad15af2ca6f871ef Mon Sep 17 00:00:00 2001 +From: Chengwen Feng +Date: Thu, 15 Dec 2022 01:41:42 +0000 +Subject: app/testpmd: add disable-flow-flush parameter + +[ upstream commit 8865a5a6e68b54c298987f07d2604c62eda8bffd ] + +This patch adds "--disable-flow-flush" parameter, which could used to +disable port flow flush when stop port. It allows testing keep flow +rules or shared flow objects across restart. + +Signed-off-by: Chengwen Feng +Acked-by: Ori Kam +Acked-by: Aman Singh +--- + app/test-pmd/parameters.c | 4 ++++ + app/test-pmd/testpmd.c | 7 ++++++- + app/test-pmd/testpmd.h | 1 + + doc/guides/testpmd_app_ug/run_app.rst | 5 +++++ + 4 files changed, 16 insertions(+), 1 deletion(-) + +diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c +index 435687fa6d..e147be28b3 100644 +--- a/app/test-pmd/parameters.c ++++ b/app/test-pmd/parameters.c +@@ -184,6 +184,7 @@ usage(char* progname) + "disable print of designated event or all of them.\n"); + printf(" --flow-isolate-all: " + "requests flow API isolated mode on all ports at initialization time.\n"); ++ printf(" --disable-flow-flush: disable port flow flush when stop port.\n"); + printf(" --tx-offloads=0xXXXXXXXX: hexadecimal bitmask of TX queue offloads\n"); + printf(" --rx-offloads=0xXXXXXXXX: hexadecimal bitmask of RX queue offloads\n"); + printf(" --hot-plug: enable hot plug for device.\n"); +@@ -674,6 +675,7 @@ launch_args_parse(int argc, char** argv) + { "rxfreet", 1, 0, 0 }, + { "no-flush-rx", 0, 0, 0 }, + { "flow-isolate-all", 0, 0, 0 }, ++ { "disable-flow-flush", 0, 0, 0 }, + { "rxoffs", 1, 0, 0 }, + { "rxpkts", 1, 0, 0 }, + { "txpkts", 1, 0, 0 }, +@@ -1381,6 +1383,8 @@ launch_args_parse(int argc, char** argv) + rmv_interrupt = 0; + if (!strcmp(lgopts[opt_idx].name, "flow-isolate-all")) + flow_isolate_all = 1; ++ if (!strcmp(lgopts[opt_idx].name, "disable-flow-flush")) ++ no_flow_flush = 1; + if (!strcmp(lgopts[opt_idx].name, "tx-offloads")) { + char *end = NULL; + n = strtoull(optarg, &end, 16); +diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c +index 32098d4701..20134c5234 100644 +--- a/app/test-pmd/testpmd.c ++++ b/app/test-pmd/testpmd.c +@@ -371,6 +371,11 @@ uint8_t no_flush_rx = 0; /* flush by default */ + */ + uint8_t flow_isolate_all; + ++/* ++ * Disable port flow flush when stop port. ++ */ ++uint8_t no_flow_flush = 0; /* do flow flush by default */ ++ + /* + * Avoids to check link status when starting/stopping a port. + */ +@@ -3173,7 +3178,7 @@ stop_port(portid_t pid) + } + } + +- if (port->flow_list) ++ if (port->flow_list && !no_flow_flush) + port_flow_flush(pi); + + if (eth_dev_stop_mp(pi) != 0) +diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h +index 480dc3fa34..be7454ab44 100644 +--- a/app/test-pmd/testpmd.h ++++ b/app/test-pmd/testpmd.h +@@ -398,6 +398,7 @@ extern uint8_t numa_support; /**< set by "--numa" parameter */ + extern uint16_t port_topology; /**< set by "--port-topology" parameter */ + extern uint8_t no_flush_rx; /** - 21.11-32 + Sync some patches for hns3 PMD and testpmd. And patchs + are as follow: + - net/hns3: declare support rule keep capability + - app/testpmd: add disable-flow-flush parameter + * Mon Feb 06 2023 jiangheng - 21.11-31 - linux/igb_uio: fix build with kernel 5.18+