* [PATCH 2/3] examples/l3fwd: removed hash entry number
2022-11-14 21:25 [PATCH 1/3] examples/l3fwd: validate ptype only for type of traffic sent Kamalakshitha Aligeri
@ 2022-11-14 21:25 ` Kamalakshitha Aligeri
2023-03-03 6:37 ` Ruifeng Wang
2022-11-14 21:25 ` [PATCH 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding Kamalakshitha Aligeri
` (2 subsequent siblings)
3 siblings, 1 reply; 13+ messages in thread
From: Kamalakshitha Aligeri @ 2022-11-14 21:25 UTC (permalink / raw)
To: jerinj, thomas, david.marchand
Cc: dev, nd, Kamalakshitha Aligeri, Honnappa Nagarahalli
hash_entry_number in l3fwd is not being used by both lpm and em lookup
method. Removed the global variable hash_entry_number and the function
that parses the hash-entry-number flag.
Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
---
examples/l3fwd/l3fwd.h | 1 -
examples/l3fwd/main.c | 37 +------------------------------------
2 files changed, 1 insertion(+), 37 deletions(-)
diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h
index ca1426a687..b55855c932 100644
--- a/examples/l3fwd/l3fwd.h
+++ b/examples/l3fwd/l3fwd.h
@@ -55,7 +55,6 @@
/* 32-bit has less address-space for hugepage memory, limit to 1M entries */
#define L3FWD_HASH_ENTRIES (1024*1024*1)
#endif
-#define HASH_ENTRY_NUMBER_DEFAULT 16
struct parm_cfg {
const char *rule_ipv4_name;
diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c
index 71a3018036..a4f061537e 100644
--- a/examples/l3fwd/main.c
+++ b/examples/l3fwd/main.c
@@ -89,7 +89,6 @@ uint32_t enabled_port_mask;
/* Used only in exact match mode. */
int ipv6; /**< ipv6 is false by default. */
-uint32_t hash_entry_number = HASH_ENTRY_NUMBER_DEFAULT;
struct lcore_conf lcore_conf[RTE_MAX_LCORE];
@@ -395,7 +394,6 @@ print_usage(const char *prgname)
" [--eth-dest=X,MM:MM:MM:MM:MM:MM]"
" [--max-pkt-len PKTLEN]"
" [--no-numa]"
- " [--hash-entry-num]"
" [--ipv6]"
" [--parse-ptype]"
" [--per-port-pool]"
@@ -419,7 +417,6 @@ print_usage(const char *prgname)
" --eth-dest=X,MM:MM:MM:MM:MM:MM: Ethernet destination for port X\n"
" --max-pkt-len PKTLEN: maximum packet length in decimal (64-9600)\n"
" --no-numa: Disable numa awareness\n"
- " --hash-entry-num: Specify the hash entry number in hexadecimal to be setup\n"
" --ipv6: Set if running ipv6 packets\n"
" --parse-ptype: Set to use software to analyze packet type\n"
" --per-port-pool: Use separate buffer pool per port\n"
@@ -479,22 +476,6 @@ parse_portmask(const char *portmask)
return pm;
}
-static int
-parse_hash_entry_number(const char *hash_entry_num)
-{
- char *end = NULL;
- unsigned long hash_en;
- /* parse hexadecimal string */
- hash_en = strtoul(hash_entry_num, &end, 16);
- if ((hash_entry_num[0] == '\0') || (end == NULL) || (*end != '\0'))
- return -1;
-
- if (hash_en == 0)
- return -1;
-
- return hash_en;
-}
-
static int
parse_config(const char *q_arg)
{
@@ -852,14 +833,7 @@ parse_args(int argc, char **argv)
break;
case CMD_LINE_OPT_HASH_ENTRY_NUM_NUM:
- ret = parse_hash_entry_number(optarg);
- if ((ret > 0) && (ret <= L3FWD_HASH_ENTRIES)) {
- hash_entry_number = ret;
- } else {
- fprintf(stderr, "invalid hash entry number\n");
- print_usage(prgname);
- return -1;
- }
+ fprintf(stderr, "Hash entry number will be ignored\n");
break;
case CMD_LINE_OPT_PARSE_PTYPE_NUM:
@@ -963,15 +937,6 @@ parse_args(int argc, char **argv)
lookup_mode = L3FWD_LOOKUP_LPM;
}
- /*
- * hash flag is valid only for
- * exact match, reset it to default for
- * longest-prefix match.
- */
- if (lookup_mode == L3FWD_LOOKUP_LPM) {
- hash_entry_number = HASH_ENTRY_NUMBER_DEFAULT;
- }
-
/* For ACL, update port config rss hash filter */
if (lookup_mode == L3FWD_LOOKUP_ACL) {
port_conf.rx_adv_conf.rss_conf.rss_hf |=
--
2.17.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH 2/3] examples/l3fwd: removed hash entry number
2022-11-14 21:25 ` [PATCH 2/3] examples/l3fwd: removed hash entry number Kamalakshitha Aligeri
@ 2023-03-03 6:37 ` Ruifeng Wang
0 siblings, 0 replies; 13+ messages in thread
From: Ruifeng Wang @ 2023-03-03 6:37 UTC (permalink / raw)
To: Kamalakshitha Aligeri, jerinj, thomas, david.marchand,
sean.morrissey, Konstantin Ananyev
Cc: dev, nd, Kamalakshitha Aligeri, Honnappa Nagarahalli, nd
> -----Original Message-----
> From: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Sent: Tuesday, November 15, 2022 5:26 AM
> To: jerinj@marvell.com; thomas@monjalon.net; david.marchand@redhat.com
> Cc: dev@dpdk.org; nd <nd@arm.com>; Kamalakshitha Aligeri <Kamalakshitha.Aligeri@arm.com>;
> Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Subject: [PATCH 2/3] examples/l3fwd: removed hash entry number
>
> hash_entry_number in l3fwd is not being used by both lpm and em lookup method. Removed the
> global variable hash_entry_number and the function that parses the hash-entry-number flag.
>
Fixes: e7e6dd643092 ("examples/l3fwd: support config file for EM")
Cc: stable@dpdk.org
The code was used to populate many EM route entries. It became obsolete after file
based config was added.
> Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> ---
> examples/l3fwd/l3fwd.h | 1 -
> examples/l3fwd/main.c | 37 +------------------------------------
> 2 files changed, 1 insertion(+), 37 deletions(-)
>
> diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h index ca1426a687..b55855c932
> 100644
> --- a/examples/l3fwd/l3fwd.h
> +++ b/examples/l3fwd/l3fwd.h
> @@ -55,7 +55,6 @@
> /* 32-bit has less address-space for hugepage memory, limit to 1M entries */
> #define L3FWD_HASH_ENTRIES (1024*1024*1)
> #endif
> -#define HASH_ENTRY_NUMBER_DEFAULT 16
>
> struct parm_cfg {
> const char *rule_ipv4_name;
> diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index 71a3018036..a4f061537e
> 100644
> --- a/examples/l3fwd/main.c
> +++ b/examples/l3fwd/main.c
> @@ -89,7 +89,6 @@ uint32_t enabled_port_mask;
>
> /* Used only in exact match mode. */
> int ipv6; /**< ipv6 is false by default. */ -uint32_t hash_entry_number =
> HASH_ENTRY_NUMBER_DEFAULT;
>
> struct lcore_conf lcore_conf[RTE_MAX_LCORE];
>
> @@ -395,7 +394,6 @@ print_usage(const char *prgname)
> " [--eth-dest=X,MM:MM:MM:MM:MM:MM]"
> " [--max-pkt-len PKTLEN]"
> " [--no-numa]"
> - " [--hash-entry-num]"
> " [--ipv6]"
> " [--parse-ptype]"
> " [--per-port-pool]"
> @@ -419,7 +417,6 @@ print_usage(const char *prgname)
> " --eth-dest=X,MM:MM:MM:MM:MM:MM: Ethernet destination for port X\n"
> " --max-pkt-len PKTLEN: maximum packet length in decimal (64-9600)\n"
> " --no-numa: Disable numa awareness\n"
> - " --hash-entry-num: Specify the hash entry number in hexadecimal to be setup\n"
> " --ipv6: Set if running ipv6 packets\n"
> " --parse-ptype: Set to use software to analyze packet type\n"
> " --per-port-pool: Use separate buffer pool per port\n"
> @@ -479,22 +476,6 @@ parse_portmask(const char *portmask)
> return pm;
> }
>
> -static int
> -parse_hash_entry_number(const char *hash_entry_num) -{
> - char *end = NULL;
> - unsigned long hash_en;
> - /* parse hexadecimal string */
> - hash_en = strtoul(hash_entry_num, &end, 16);
> - if ((hash_entry_num[0] == '\0') || (end == NULL) || (*end != '\0'))
> - return -1;
> -
> - if (hash_en == 0)
> - return -1;
> -
> - return hash_en;
> -}
> -
> static int
> parse_config(const char *q_arg)
> {
> @@ -852,14 +833,7 @@ parse_args(int argc, char **argv)
> break;
>
> case CMD_LINE_OPT_HASH_ENTRY_NUM_NUM:
> - ret = parse_hash_entry_number(optarg);
> - if ((ret > 0) && (ret <= L3FWD_HASH_ENTRIES)) {
> - hash_entry_number = ret;
> - } else {
> - fprintf(stderr, "invalid hash entry number\n");
> - print_usage(prgname);
> - return -1;
> - }
> + fprintf(stderr, "Hash entry number will be ignored\n");
> break;
>
> case CMD_LINE_OPT_PARSE_PTYPE_NUM:
> @@ -963,15 +937,6 @@ parse_args(int argc, char **argv)
> lookup_mode = L3FWD_LOOKUP_LPM;
> }
>
> - /*
> - * hash flag is valid only for
> - * exact match, reset it to default for
> - * longest-prefix match.
> - */
> - if (lookup_mode == L3FWD_LOOKUP_LPM) {
> - hash_entry_number = HASH_ENTRY_NUMBER_DEFAULT;
> - }
> -
> /* For ACL, update port config rss hash filter */
> if (lookup_mode == L3FWD_LOOKUP_ACL) {
> port_conf.rx_adv_conf.rss_conf.rss_hf |=
> --
> 2.17.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding
2022-11-14 21:25 [PATCH 1/3] examples/l3fwd: validate ptype only for type of traffic sent Kamalakshitha Aligeri
2022-11-14 21:25 ` [PATCH 2/3] examples/l3fwd: removed hash entry number Kamalakshitha Aligeri
@ 2022-11-14 21:25 ` Kamalakshitha Aligeri
2023-03-02 10:11 ` Ruifeng Wang
2023-02-08 17:45 ` [PATCH 1/3] examples/l3fwd: validate ptype only for type of traffic sent Kamalakshitha Aligeri
2023-03-06 16:25 ` [PATCH v2 " Kamalakshitha Aligeri
3 siblings, 1 reply; 13+ messages in thread
From: Kamalakshitha Aligeri @ 2022-11-14 21:25 UTC (permalink / raw)
To: jerinj, thomas, david.marchand
Cc: dev, nd, Kamalakshitha Aligeri, stable, Honnappa Nagarahalli
LPM based lookup supports both IPv4 and IPv6 forwarding.
Fixes: 6a094e328598 ("examples/l3fwd: implement FIB lookup method")
Cc: stable@dpdk.org
Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
---
doc/guides/sample_app_ug/l3_forward.rst | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 94b22da01e..1cc2c1dd1d 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -56,9 +56,8 @@ for the IPv4/IPv6 5-tuple syntax specifically.
The 5-tuple syntax consists of a source IP address, a destination IP address,
a source port, a destination port and a protocol identifier.
-In the sample application, hash-based, FIB-based and ACL-based forwarding supports
+In the sample application, hash-based, LPM-based, FIB-based and ACL-based forwarding supports
both IPv4 and IPv6.
-LPM-based forwarding supports IPv4 only.
During the initialization phase route rules for IPv4 and IPv6 are read from rule files.
Compiling the Application
--
2.17.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding
2022-11-14 21:25 ` [PATCH 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding Kamalakshitha Aligeri
@ 2023-03-02 10:11 ` Ruifeng Wang
0 siblings, 0 replies; 13+ messages in thread
From: Ruifeng Wang @ 2023-03-02 10:11 UTC (permalink / raw)
To: Kamalakshitha Aligeri, jerinj, thomas, david.marchand
Cc: dev, nd, Kamalakshitha Aligeri, stable, Honnappa Nagarahalli, nd
> -----Original Message-----
> From: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Sent: Tuesday, November 15, 2022 5:26 AM
> To: jerinj@marvell.com; thomas@monjalon.net; david.marchand@redhat.com
> Cc: dev@dpdk.org; nd <nd@arm.com>; Kamalakshitha Aligeri <Kamalakshitha.Aligeri@arm.com>;
> stable@dpdk.org; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Subject: [PATCH 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding
>
> LPM based lookup supports both IPv4 and IPv6 forwarding.
>
> Fixes: 6a094e328598 ("examples/l3fwd: implement FIB lookup method")
> Cc: stable@dpdk.org
>
> Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> ---
> doc/guides/sample_app_ug/l3_forward.rst | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/doc/guides/sample_app_ug/l3_forward.rst
> b/doc/guides/sample_app_ug/l3_forward.rst
> index 94b22da01e..1cc2c1dd1d 100644
> --- a/doc/guides/sample_app_ug/l3_forward.rst
> +++ b/doc/guides/sample_app_ug/l3_forward.rst
> @@ -56,9 +56,8 @@ for the IPv4/IPv6 5-tuple syntax specifically.
> The 5-tuple syntax consists of a source IP address, a destination IP address, a source
> port, a destination port and a protocol identifier.
>
> -In the sample application, hash-based, FIB-based and ACL-based forwarding supports
> +In the sample application, hash-based, LPM-based, FIB-based and
> +ACL-based forwarding supports
> both IPv4 and IPv6.
> -LPM-based forwarding supports IPv4 only.
> During the initialization phase route rules for IPv4 and IPv6 are read from rule files.
>
> Compiling the Application
> --
> 2.17.1
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH 1/3] examples/l3fwd: validate ptype only for type of traffic sent
2022-11-14 21:25 [PATCH 1/3] examples/l3fwd: validate ptype only for type of traffic sent Kamalakshitha Aligeri
2022-11-14 21:25 ` [PATCH 2/3] examples/l3fwd: removed hash entry number Kamalakshitha Aligeri
2022-11-14 21:25 ` [PATCH 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding Kamalakshitha Aligeri
@ 2023-02-08 17:45 ` Kamalakshitha Aligeri
2023-03-06 16:25 ` [PATCH v2 " Kamalakshitha Aligeri
3 siblings, 0 replies; 13+ messages in thread
From: Kamalakshitha Aligeri @ 2023-02-08 17:45 UTC (permalink / raw)
To: Kamalakshitha Aligeri, jerinj, thomas, david.marchand
Cc: dev, nd, Nathan Brown, Ruifeng Wang, Feifei Wang, nd
Hi all,
Can you please check the patch and provide comments?
Thanks,
Kamalakshitha
> -----Original Message-----
> From: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Sent: Monday, November 14, 2022 1:26 PM
> To: jerinj@marvell.com; thomas@monjalon.net;
> david.marchand@redhat.com
> Cc: dev@dpdk.org; nd <nd@arm.com>; Kamalakshitha Aligeri
> <Kamalakshitha.Aligeri@arm.com>; Nathan Brown
> <Nathan.Brown@arm.com>; Ruifeng Wang <Ruifeng.Wang@arm.com>;
> Feifei Wang <Feifei.Wang2@arm.com>
> Subject: [PATCH 1/3] examples/l3fwd: validate ptype only for type of traffic
> sent
>
> The check_ptype function is not considering the ptype of the incoming
> traffic. --parse-ptype flag must be provided only when the NIC does not
> support parsing the ptype of the incoming traffic
>
> Suggested-by: Nathan Brown <nathan.brown@arm.com>
> Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
> Reviewed-by: Nathan Brown <nathan.brown@arm.com>
> Reviewed-by: Feifei Wang <feifei.wang2@arm.com>
> ---
> examples/l3fwd/l3fwd_em.c | 8 +++++--- examples/l3fwd/l3fwd_lpm.c |
> 13 +++++++------
> examples/l3fwd/main.c | 5 ++---
> 3 files changed, 14 insertions(+), 12 deletions(-)
>
> diff --git a/examples/l3fwd/l3fwd_em.c b/examples/l3fwd/l3fwd_em.c
> index a203dc9e46..682ad343d7 100644
> --- a/examples/l3fwd/l3fwd_em.c
> +++ b/examples/l3fwd/l3fwd_em.c
> @@ -507,12 +507,14 @@ em_check_ptype(int portid)
> }
> }
>
> - if (ptype_l3_ipv4_ext == 0)
> + if (!ipv6 && !ptype_l3_ipv4_ext) {
> printf("port %d cannot parse RTE_PTYPE_L3_IPV4_EXT\n",
> portid);
> - if (ptype_l3_ipv6_ext == 0)
> + return 0;
> + }
> + if (ipv6 && !ptype_l3_ipv6_ext) {
> printf("port %d cannot parse RTE_PTYPE_L3_IPV6_EXT\n",
> portid);
> - if (!ptype_l3_ipv4_ext || !ptype_l3_ipv6_ext)
> return 0;
> + }
>
> if (ptype_l4_tcp == 0)
> printf("port %d cannot parse RTE_PTYPE_L4_TCP\n", portid);
> diff --git a/examples/l3fwd/l3fwd_lpm.c b/examples/l3fwd/l3fwd_lpm.c
> index 22d7f61a42..1ac78281f9 100644
> --- a/examples/l3fwd/l3fwd_lpm.c
> +++ b/examples/l3fwd/l3fwd_lpm.c
> @@ -667,16 +667,17 @@ lpm_check_ptype(int portid)
> ptype_l3_ipv6 = 1;
> }
>
> - if (ptype_l3_ipv4 == 0)
> + if (!ipv6 && !ptype_l3_ipv4) {
> printf("port %d cannot parse RTE_PTYPE_L3_IPV4\n",
> portid);
> + return 0;
> + }
>
> - if (ptype_l3_ipv6 == 0)
> + if (ipv6 && !ptype_l3_ipv6) {
> printf("port %d cannot parse RTE_PTYPE_L3_IPV6\n",
> portid);
> + return 0;
> + }
>
> - if (ptype_l3_ipv4 && ptype_l3_ipv6)
> - return 1;
> -
> - return 0;
> + return 1;
>
> }
>
> diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index
> 5198ff30dd..71a3018036 100644
> --- a/examples/l3fwd/main.c
> +++ b/examples/l3fwd/main.c
> @@ -964,12 +964,11 @@ parse_args(int argc, char **argv)
> }
>
> /*
> - * ipv6 and hash flags are valid only for
> - * exact match, reset them to default for
> + * hash flag is valid only for
> + * exact match, reset it to default for
> * longest-prefix match.
> */
> if (lookup_mode == L3FWD_LOOKUP_LPM) {
> - ipv6 = 0;
> hash_entry_number = HASH_ENTRY_NUMBER_DEFAULT;
> }
>
> --
> 2.17.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 1/3] examples/l3fwd: validate ptype only for type of traffic sent
2022-11-14 21:25 [PATCH 1/3] examples/l3fwd: validate ptype only for type of traffic sent Kamalakshitha Aligeri
` (2 preceding siblings ...)
2023-02-08 17:45 ` [PATCH 1/3] examples/l3fwd: validate ptype only for type of traffic sent Kamalakshitha Aligeri
@ 2023-03-06 16:25 ` Kamalakshitha Aligeri
2023-03-06 16:25 ` [PATCH v2 2/3] examples/l3fwd: removed hash entry number Kamalakshitha Aligeri
` (2 more replies)
3 siblings, 3 replies; 13+ messages in thread
From: Kamalakshitha Aligeri @ 2023-03-06 16:25 UTC (permalink / raw)
To: jerinj, thomas, david.marchand, sean.morrissey,
konstantin.ananyev, Ruifeng.Wang, Honnappa.Nagarahalli
Cc: dev, nd
The check_ptype function is not considering the ptype of the incoming
traffic. --parse-ptype flag must be provided only when the NIC does not
support parsing the ptype of the incoming traffic
Suggested-by: Nathan Brown <nathan.brown@arm.com>
Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Reviewed-by: Nathan Brown <nathan.brown@arm.com>
Reviewed-by: Feifei Wang <feifei.wang2@arm.com>
---
examples/l3fwd/l3fwd_em.c | 8 +++++---
examples/l3fwd/l3fwd_lpm.c | 13 +++++++------
examples/l3fwd/main.c | 5 ++---
3 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/examples/l3fwd/l3fwd_em.c b/examples/l3fwd/l3fwd_em.c
index a203dc9e46..682ad343d7 100644
--- a/examples/l3fwd/l3fwd_em.c
+++ b/examples/l3fwd/l3fwd_em.c
@@ -507,12 +507,14 @@ em_check_ptype(int portid)
}
}
- if (ptype_l3_ipv4_ext == 0)
+ if (!ipv6 && !ptype_l3_ipv4_ext) {
printf("port %d cannot parse RTE_PTYPE_L3_IPV4_EXT\n", portid);
- if (ptype_l3_ipv6_ext == 0)
+ return 0;
+ }
+ if (ipv6 && !ptype_l3_ipv6_ext) {
printf("port %d cannot parse RTE_PTYPE_L3_IPV6_EXT\n", portid);
- if (!ptype_l3_ipv4_ext || !ptype_l3_ipv6_ext)
return 0;
+ }
if (ptype_l4_tcp == 0)
printf("port %d cannot parse RTE_PTYPE_L4_TCP\n", portid);
diff --git a/examples/l3fwd/l3fwd_lpm.c b/examples/l3fwd/l3fwd_lpm.c
index 22d7f61a42..1ac78281f9 100644
--- a/examples/l3fwd/l3fwd_lpm.c
+++ b/examples/l3fwd/l3fwd_lpm.c
@@ -667,16 +667,17 @@ lpm_check_ptype(int portid)
ptype_l3_ipv6 = 1;
}
- if (ptype_l3_ipv4 == 0)
+ if (!ipv6 && !ptype_l3_ipv4) {
printf("port %d cannot parse RTE_PTYPE_L3_IPV4\n", portid);
+ return 0;
+ }
- if (ptype_l3_ipv6 == 0)
+ if (ipv6 && !ptype_l3_ipv6) {
printf("port %d cannot parse RTE_PTYPE_L3_IPV6\n", portid);
+ return 0;
+ }
- if (ptype_l3_ipv4 && ptype_l3_ipv6)
- return 1;
-
- return 0;
+ return 1;
}
diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c
index 5198ff30dd..71a3018036 100644
--- a/examples/l3fwd/main.c
+++ b/examples/l3fwd/main.c
@@ -964,12 +964,11 @@ parse_args(int argc, char **argv)
}
/*
- * ipv6 and hash flags are valid only for
- * exact match, reset them to default for
+ * hash flag is valid only for
+ * exact match, reset it to default for
* longest-prefix match.
*/
if (lookup_mode == L3FWD_LOOKUP_LPM) {
- ipv6 = 0;
hash_entry_number = HASH_ENTRY_NUMBER_DEFAULT;
}
--
2.25.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 2/3] examples/l3fwd: removed hash entry number
2023-03-06 16:25 ` [PATCH v2 " Kamalakshitha Aligeri
@ 2023-03-06 16:25 ` Kamalakshitha Aligeri
2023-03-07 1:33 ` Ruifeng Wang
2023-03-07 9:41 ` Konstantin Ananyev
2023-03-06 16:25 ` [PATCH v2 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding Kamalakshitha Aligeri
2023-03-20 13:17 ` [PATCH v2 1/3] examples/l3fwd: validate ptype only for type of traffic sent Thomas Monjalon
2 siblings, 2 replies; 13+ messages in thread
From: Kamalakshitha Aligeri @ 2023-03-06 16:25 UTC (permalink / raw)
To: jerinj, thomas, david.marchand, sean.morrissey,
konstantin.ananyev, Ruifeng.Wang, Honnappa.Nagarahalli
Cc: dev, nd
hash_entry_number in l3fwd is not being used by both lpm and em lookup
method. Removed the global variable hash_entry_number and the function
that parses the hash-entry-number flag.
Fixes: e7e6dd643092 ("examples/l3fwd: support config file for EM")
Cc: stable@dpdk.org
Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
---
examples/l3fwd/l3fwd.h | 1 -
examples/l3fwd/main.c | 37 +------------------------------------
2 files changed, 1 insertion(+), 37 deletions(-)
diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h
index ca1426a687..b55855c932 100644
--- a/examples/l3fwd/l3fwd.h
+++ b/examples/l3fwd/l3fwd.h
@@ -55,7 +55,6 @@
/* 32-bit has less address-space for hugepage memory, limit to 1M entries */
#define L3FWD_HASH_ENTRIES (1024*1024*1)
#endif
-#define HASH_ENTRY_NUMBER_DEFAULT 16
struct parm_cfg {
const char *rule_ipv4_name;
diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c
index 71a3018036..a4f061537e 100644
--- a/examples/l3fwd/main.c
+++ b/examples/l3fwd/main.c
@@ -89,7 +89,6 @@ uint32_t enabled_port_mask;
/* Used only in exact match mode. */
int ipv6; /**< ipv6 is false by default. */
-uint32_t hash_entry_number = HASH_ENTRY_NUMBER_DEFAULT;
struct lcore_conf lcore_conf[RTE_MAX_LCORE];
@@ -395,7 +394,6 @@ print_usage(const char *prgname)
" [--eth-dest=X,MM:MM:MM:MM:MM:MM]"
" [--max-pkt-len PKTLEN]"
" [--no-numa]"
- " [--hash-entry-num]"
" [--ipv6]"
" [--parse-ptype]"
" [--per-port-pool]"
@@ -419,7 +417,6 @@ print_usage(const char *prgname)
" --eth-dest=X,MM:MM:MM:MM:MM:MM: Ethernet destination for port X\n"
" --max-pkt-len PKTLEN: maximum packet length in decimal (64-9600)\n"
" --no-numa: Disable numa awareness\n"
- " --hash-entry-num: Specify the hash entry number in hexadecimal to be setup\n"
" --ipv6: Set if running ipv6 packets\n"
" --parse-ptype: Set to use software to analyze packet type\n"
" --per-port-pool: Use separate buffer pool per port\n"
@@ -479,22 +476,6 @@ parse_portmask(const char *portmask)
return pm;
}
-static int
-parse_hash_entry_number(const char *hash_entry_num)
-{
- char *end = NULL;
- unsigned long hash_en;
- /* parse hexadecimal string */
- hash_en = strtoul(hash_entry_num, &end, 16);
- if ((hash_entry_num[0] == '\0') || (end == NULL) || (*end != '\0'))
- return -1;
-
- if (hash_en == 0)
- return -1;
-
- return hash_en;
-}
-
static int
parse_config(const char *q_arg)
{
@@ -852,14 +833,7 @@ parse_args(int argc, char **argv)
break;
case CMD_LINE_OPT_HASH_ENTRY_NUM_NUM:
- ret = parse_hash_entry_number(optarg);
- if ((ret > 0) && (ret <= L3FWD_HASH_ENTRIES)) {
- hash_entry_number = ret;
- } else {
- fprintf(stderr, "invalid hash entry number\n");
- print_usage(prgname);
- return -1;
- }
+ fprintf(stderr, "Hash entry number will be ignored\n");
break;
case CMD_LINE_OPT_PARSE_PTYPE_NUM:
@@ -963,15 +937,6 @@ parse_args(int argc, char **argv)
lookup_mode = L3FWD_LOOKUP_LPM;
}
- /*
- * hash flag is valid only for
- * exact match, reset it to default for
- * longest-prefix match.
- */
- if (lookup_mode == L3FWD_LOOKUP_LPM) {
- hash_entry_number = HASH_ENTRY_NUMBER_DEFAULT;
- }
-
/* For ACL, update port config rss hash filter */
if (lookup_mode == L3FWD_LOOKUP_ACL) {
port_conf.rx_adv_conf.rss_conf.rss_hf |=
--
2.25.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH v2 2/3] examples/l3fwd: removed hash entry number
2023-03-06 16:25 ` [PATCH v2 2/3] examples/l3fwd: removed hash entry number Kamalakshitha Aligeri
@ 2023-03-07 1:33 ` Ruifeng Wang
2023-03-07 9:41 ` Konstantin Ananyev
1 sibling, 0 replies; 13+ messages in thread
From: Ruifeng Wang @ 2023-03-07 1:33 UTC (permalink / raw)
To: Kamalakshitha Aligeri, jerinj, thomas, david.marchand,
sean.morrissey, konstantin.ananyev, Honnappa Nagarahalli
Cc: dev, nd, nd
> -----Original Message-----
> From: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Sent: Tuesday, March 7, 2023 12:25 AM
> To: jerinj@marvell.com; thomas@monjalon.net; david.marchand@redhat.com;
> sean.morrissey@intel.com; konstantin.ananyev@huawei.com; Ruifeng Wang
> <Ruifeng.Wang@arm.com>; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Cc: dev@dpdk.org; nd <nd@arm.com>
> Subject: [PATCH v2 2/3] examples/l3fwd: removed hash entry number
>
> hash_entry_number in l3fwd is not being used by both lpm and em lookup method. Removed the
> global variable hash_entry_number and the function that parses the hash-entry-number flag.
>
> Fixes: e7e6dd643092 ("examples/l3fwd: support config file for EM")
> Cc: stable@dpdk.org
>
> Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> ---
> examples/l3fwd/l3fwd.h | 1 -
> examples/l3fwd/main.c | 37 +------------------------------------
> 2 files changed, 1 insertion(+), 37 deletions(-)
>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH v2 2/3] examples/l3fwd: removed hash entry number
2023-03-06 16:25 ` [PATCH v2 2/3] examples/l3fwd: removed hash entry number Kamalakshitha Aligeri
2023-03-07 1:33 ` Ruifeng Wang
@ 2023-03-07 9:41 ` Konstantin Ananyev
1 sibling, 0 replies; 13+ messages in thread
From: Konstantin Ananyev @ 2023-03-07 9:41 UTC (permalink / raw)
To: Kamalakshitha Aligeri, jerinj, thomas, david.marchand,
sean.morrissey, Ruifeng.Wang, Honnappa.Nagarahalli
Cc: dev, nd
> Fixes: e7e6dd643092 ("examples/l3fwd: support config file for EM")
> Cc: stable@dpdk.org
>
> Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> ---
> examples/l3fwd/l3fwd.h | 1 -
> examples/l3fwd/main.c | 37 +------------------------------------
> 2 files changed, 1 insertion(+), 37 deletions(-)
>
> diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h
> index ca1426a687..b55855c932 100644
> --- a/examples/l3fwd/l3fwd.h
> +++ b/examples/l3fwd/l3fwd.h
> @@ -55,7 +55,6 @@
> /* 32-bit has less address-space for hugepage memory, limit to 1M entries */
> #define L3FWD_HASH_ENTRIES (1024*1024*1)
> #endif
> -#define HASH_ENTRY_NUMBER_DEFAULT 16
>
> struct parm_cfg {
> const char *rule_ipv4_name;
> diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c
> index 71a3018036..a4f061537e 100644
> --- a/examples/l3fwd/main.c
> +++ b/examples/l3fwd/main.c
> @@ -89,7 +89,6 @@ uint32_t enabled_port_mask;
>
> /* Used only in exact match mode. */
> int ipv6; /**< ipv6 is false by default. */
> -uint32_t hash_entry_number = HASH_ENTRY_NUMBER_DEFAULT;
>
> struct lcore_conf lcore_conf[RTE_MAX_LCORE];
>
> @@ -395,7 +394,6 @@ print_usage(const char *prgname)
> " [--eth-dest=X,MM:MM:MM:MM:MM:MM]"
> " [--max-pkt-len PKTLEN]"
> " [--no-numa]"
> - " [--hash-entry-num]"
> " [--ipv6]"
> " [--parse-ptype]"
> " [--per-port-pool]"
> @@ -419,7 +417,6 @@ print_usage(const char *prgname)
> " --eth-dest=X,MM:MM:MM:MM:MM:MM: Ethernet destination for port X\n"
> " --max-pkt-len PKTLEN: maximum packet length in decimal (64-9600)\n"
> " --no-numa: Disable numa awareness\n"
> - " --hash-entry-num: Specify the hash entry number in hexadecimal to be setup\n"
> " --ipv6: Set if running ipv6 packets\n"
> " --parse-ptype: Set to use software to analyze packet type\n"
> " --per-port-pool: Use separate buffer pool per port\n"
> @@ -479,22 +476,6 @@ parse_portmask(const char *portmask)
> return pm;
> }
>
> -static int
> -parse_hash_entry_number(const char *hash_entry_num)
> -{
> - char *end = NULL;
> - unsigned long hash_en;
> - /* parse hexadecimal string */
> - hash_en = strtoul(hash_entry_num, &end, 16);
> - if ((hash_entry_num[0] == '\0') || (end == NULL) || (*end != '\0'))
> - return -1;
> -
> - if (hash_en == 0)
> - return -1;
> -
> - return hash_en;
> -}
> -
> static int
> parse_config(const char *q_arg)
> {
> @@ -852,14 +833,7 @@ parse_args(int argc, char **argv)
> break;
>
> case CMD_LINE_OPT_HASH_ENTRY_NUM_NUM:
> - ret = parse_hash_entry_number(optarg);
> - if ((ret > 0) && (ret <= L3FWD_HASH_ENTRIES)) {
> - hash_entry_number = ret;
> - } else {
> - fprintf(stderr, "invalid hash entry number\n");
> - print_usage(prgname);
> - return -1;
> - }
> + fprintf(stderr, "Hash entry number will be ignored\n");
> break;
>
> case CMD_LINE_OPT_PARSE_PTYPE_NUM:
> @@ -963,15 +937,6 @@ parse_args(int argc, char **argv)
> lookup_mode = L3FWD_LOOKUP_LPM;
> }
>
> - /*
> - * hash flag is valid only for
> - * exact match, reset it to default for
> - * longest-prefix match.
> - */
> - if (lookup_mode == L3FWD_LOOKUP_LPM) {
> - hash_entry_number = HASH_ENTRY_NUMBER_DEFAULT;
> - }
> -
> /* For ACL, update port config rss hash filter */
> if (lookup_mode == L3FWD_LOOKUP_ACL) {
> port_conf.rx_adv_conf.rss_conf.rss_hf |=
> --
> 2.25.1
Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding
2023-03-06 16:25 ` [PATCH v2 " Kamalakshitha Aligeri
2023-03-06 16:25 ` [PATCH v2 2/3] examples/l3fwd: removed hash entry number Kamalakshitha Aligeri
@ 2023-03-06 16:25 ` Kamalakshitha Aligeri
2023-03-07 9:42 ` Konstantin Ananyev
2023-03-20 13:17 ` [PATCH v2 1/3] examples/l3fwd: validate ptype only for type of traffic sent Thomas Monjalon
2 siblings, 1 reply; 13+ messages in thread
From: Kamalakshitha Aligeri @ 2023-03-06 16:25 UTC (permalink / raw)
To: jerinj, thomas, david.marchand, sean.morrissey,
konstantin.ananyev, Ruifeng.Wang, Honnappa.Nagarahalli
Cc: dev, nd
LPM based lookup supports both IPv4 and IPv6 forwarding.
Fixes: 6a094e328598 ("examples/l3fwd: implement FIB lookup method")
Cc: stable@dpdk.org
Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
---
doc/guides/sample_app_ug/l3_forward.rst | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
index 94b22da01e..1cc2c1dd1d 100644
--- a/doc/guides/sample_app_ug/l3_forward.rst
+++ b/doc/guides/sample_app_ug/l3_forward.rst
@@ -56,9 +56,8 @@ for the IPv4/IPv6 5-tuple syntax specifically.
The 5-tuple syntax consists of a source IP address, a destination IP address,
a source port, a destination port and a protocol identifier.
-In the sample application, hash-based, FIB-based and ACL-based forwarding supports
+In the sample application, hash-based, LPM-based, FIB-based and ACL-based forwarding supports
both IPv4 and IPv6.
-LPM-based forwarding supports IPv4 only.
During the initialization phase route rules for IPv4 and IPv6 are read from rule files.
Compiling the Application
--
2.25.1
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [PATCH v2 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding
2023-03-06 16:25 ` [PATCH v2 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding Kamalakshitha Aligeri
@ 2023-03-07 9:42 ` Konstantin Ananyev
0 siblings, 0 replies; 13+ messages in thread
From: Konstantin Ananyev @ 2023-03-07 9:42 UTC (permalink / raw)
To: Kamalakshitha Aligeri, jerinj, thomas, david.marchand,
sean.morrissey, Ruifeng.Wang, Honnappa.Nagarahalli
Cc: dev, nd
> -----Original Message-----
> From: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Sent: Monday, March 6, 2023 4:25 PM
> To: jerinj@marvell.com; thomas@monjalon.net; david.marchand@redhat.com; sean.morrissey@intel.com; Konstantin Ananyev
> <konstantin.ananyev@huawei.com>; Ruifeng.Wang@arm.com; Honnappa.Nagarahalli@arm.com
> Cc: dev@dpdk.org; nd@arm.com
> Subject: [PATCH v2 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding
>
> LPM based lookup supports both IPv4 and IPv6 forwarding.
>
> Fixes: 6a094e328598 ("examples/l3fwd: implement FIB lookup method")
> Cc: stable@dpdk.org
>
> Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>
> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
> ---
> doc/guides/sample_app_ug/l3_forward.rst | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/doc/guides/sample_app_ug/l3_forward.rst b/doc/guides/sample_app_ug/l3_forward.rst
> index 94b22da01e..1cc2c1dd1d 100644
> --- a/doc/guides/sample_app_ug/l3_forward.rst
> +++ b/doc/guides/sample_app_ug/l3_forward.rst
> @@ -56,9 +56,8 @@ for the IPv4/IPv6 5-tuple syntax specifically.
> The 5-tuple syntax consists of a source IP address, a destination IP address,
> a source port, a destination port and a protocol identifier.
>
> -In the sample application, hash-based, FIB-based and ACL-based forwarding supports
> +In the sample application, hash-based, LPM-based, FIB-based and ACL-based forwarding supports
> both IPv4 and IPv6.
> -LPM-based forwarding supports IPv4 only.
> During the initialization phase route rules for IPv4 and IPv6 are read from rule files.
>
> Compiling the Application
> --
Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com>
> 2.25.1
>
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2 1/3] examples/l3fwd: validate ptype only for type of traffic sent
2023-03-06 16:25 ` [PATCH v2 " Kamalakshitha Aligeri
2023-03-06 16:25 ` [PATCH v2 2/3] examples/l3fwd: removed hash entry number Kamalakshitha Aligeri
2023-03-06 16:25 ` [PATCH v2 3/3] doc/l3fwd: lpm supports IPv4 and IPv6 forwarding Kamalakshitha Aligeri
@ 2023-03-20 13:17 ` Thomas Monjalon
2 siblings, 0 replies; 13+ messages in thread
From: Thomas Monjalon @ 2023-03-20 13:17 UTC (permalink / raw)
To: Kamalakshitha Aligeri
Cc: jerinj, david.marchand, sean.morrissey, konstantin.ananyev,
Ruifeng.Wang, Honnappa.Nagarahalli, dev, nd
06/03/2023 17:25, Kamalakshitha Aligeri:
> The check_ptype function is not considering the ptype of the incoming
> traffic. --parse-ptype flag must be provided only when the NIC does not
> support parsing the ptype of the incoming traffic
>
> Suggested-by: Nathan Brown <nathan.brown@arm.com>
> Signed-off-by: Kamalakshitha Aligeri <kamalakshitha.aligeri@arm.com>
> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
> Reviewed-by: Nathan Brown <nathan.brown@arm.com>
> Reviewed-by: Feifei Wang <feifei.wang2@arm.com>
Series applied, thanks.
^ permalink raw reply [flat|nested] 13+ messages in thread