From patchwork Fri Nov 5 08:38:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavan Nikhilesh Bhagavatula X-Patchwork-Id: 103857 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D47A5A0C61; Fri, 5 Nov 2021 09:39:02 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 5F33D40DDA; Fri, 5 Nov 2021 09:39:02 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id 8A01B40689 for ; Fri, 5 Nov 2021 09:39:00 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 1A50RnF1024568; Fri, 5 Nov 2021 01:38:59 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=31PSDddJFBS03L7m+zYHYh+Jnth5LJmYNhrWQCK//Fs=; b=iAcnLUJqXDh4c0pXGCCS3SFrKVzMiva6Clr+1eFWMb4v06c0/bzNzdUm1+UXvhd3n/1q 8bJw6dnFqCSfSxdgJ5C8QQUmawQ76hE7lSuU42g372Rk7+kKhw/GrF4n0qPW3n2iDEBU BluXBmPoE+B0ewntC3KUeHRlyPegBbhNNFywhKme096KQQC867Za6oicLKmGsqtfbFJW lV1kZnXDdjfcz0DWTffS261Q8TVMEU/dnlIxQobiCZfexTjnJ5ZtBU96aRygUOZl1E8l 4q3p7hccEmMp6vsAm5LwEiTwWVkyOvfskDc0+0BpcyyQV/x1tAh40Ow0k3aojjW28MTo 2g== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3c4t3gspak-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Fri, 05 Nov 2021 01:38:59 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Fri, 5 Nov 2021 01:38:55 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Fri, 5 Nov 2021 01:38:55 -0700 Received: from BG-LT7430.marvell.com (BG-LT7430.marvell.com [10.28.177.176]) by maili.marvell.com (Postfix) with ESMTP id D5B073F7043; Fri, 5 Nov 2021 01:38:53 -0700 (PDT) From: To: , , CC: , Pavan Nikhilesh Date: Fri, 5 Nov 2021 14:08:49 +0530 Message-ID: <20211105083851.2812-1-pbhagavatula@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211003202448.10908-1-pbhagavatula@marvell.com> References: <20211003202448.10908-1-pbhagavatula@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 3O5u_1bKFHLkoLG4YoWK5NuB3WNP_EPS X-Proofpoint-GUID: 3O5u_1bKFHLkoLG4YoWK5NuB3WNP_EPS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.0.607.475 definitions=2021-11-05_01,2021-11-03_01,2020-04-07_01 Subject: [dpdk-dev] [PATCH v5 1/3] examples/l3fwd: increase number of routes X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Pavan Nikhilesh Increase the number of routes from 8 to 16 that are statically added for lpm and em mode as most of the SoCs support more than 8 interfaces. The number of routes added is equal to the number of ethernet devices ports enabled through port mask. Signed-off-by: Pavan Nikhilesh Reviewed-by: Conor Walsh --- v5 Changes: - Fix comments, missing IPv6 bdf prints (Conor). - Fix unintended change to em_parse_ptype (David). v4 Changes: - Use correct patch version and prefix. v3 Changes: (Finally!) - Add FIB to the list. - Update release notes. - Update EM route addition routine and use the correct IP addresses DTS need not be updated as EM test doesn't use IP addresses defined in l3fwd. v2 Changes: - Fixup for EM mode. doc/guides/rel_notes/release_21_11.rst | 6 ++++++ examples/l3fwd/l3fwd_route.h | 4 ++-- examples/l3fwd/main.c | 20 ++++++++++++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) -- 2.17.1 diff --git a/doc/guides/rel_notes/release_21_11.rst b/doc/guides/rel_notes/release_21_11.rst index d95bab5582..e8ee00d552 100644 --- a/doc/guides/rel_notes/release_21_11.rst +++ b/doc/guides/rel_notes/release_21_11.rst @@ -322,6 +322,12 @@ New Features overruns in C/C++ programs, and other similar errors, as well as printing out detailed debug information whenever an error is detected. +* **Increase number of routes configured in l3fwd lpm, em and fib lookups.** + + * Increase number of routes from 8 to 16 for all lookup modes of l3fwd, this + helps in validating SoC with more than 8 ethernet devices using l3fwd. + * Update EM mode to use RFC2544 reserved IP address space. + Removed Items ------------- diff --git a/examples/l3fwd/l3fwd_route.h b/examples/l3fwd/l3fwd_route.h index 89f8634443..c7eba06c4d 100644 --- a/examples/l3fwd/l3fwd_route.h +++ b/examples/l3fwd/l3fwd_route.h @@ -14,6 +14,6 @@ struct ipv6_l3fwd_route { uint8_t if_out; }; -extern const struct ipv4_l3fwd_route ipv4_l3fwd_route_array[8]; +extern const struct ipv4_l3fwd_route ipv4_l3fwd_route_array[16]; -extern const struct ipv6_l3fwd_route ipv6_l3fwd_route_array[8]; +extern const struct ipv6_l3fwd_route ipv6_l3fwd_route_array[16]; diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index d69373f881..eb68ffc5aa 100644 --- a/examples/l3fwd/main.c +++ b/examples/l3fwd/main.c @@ -180,7 +180,7 @@ static struct l3fwd_lkp_mode l3fwd_fib_lkp = { /* * 198.18.0.0/16 are set aside for RFC2544 benchmarking (RFC5735). - * 198.18.{0-7}.0/24 = Port {0-7} + * 198.18.{0-15}.0/24 = Port {0-15} */ const struct ipv4_l3fwd_route ipv4_l3fwd_route_array[] = { {RTE_IPV4(198, 18, 0, 0), 24, 0}, @@ -191,11 +191,19 @@ const struct ipv4_l3fwd_route ipv4_l3fwd_route_array[] = { {RTE_IPV4(198, 18, 5, 0), 24, 5}, {RTE_IPV4(198, 18, 6, 0), 24, 6}, {RTE_IPV4(198, 18, 7, 0), 24, 7}, + {RTE_IPV4(198, 18, 8, 0), 24, 8}, + {RTE_IPV4(198, 18, 9, 0), 24, 9}, + {RTE_IPV4(198, 18, 10, 0), 24, 10}, + {RTE_IPV4(198, 18, 11, 0), 24, 11}, + {RTE_IPV4(198, 18, 12, 0), 24, 12}, + {RTE_IPV4(198, 18, 13, 0), 24, 13}, + {RTE_IPV4(198, 18, 14, 0), 24, 14}, + {RTE_IPV4(198, 18, 15, 0), 24, 15}, }; /* * 2001:200::/48 is IANA reserved range for IPv6 benchmarking (RFC5180). - * 2001:200:0:{0-7}::/64 = Port {0-7} + * 2001:200:0:{0-f}::/64 = Port {0-15} */ const struct ipv6_l3fwd_route ipv6_l3fwd_route_array[] = { {{32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 0}, @@ -206,6 +214,14 @@ const struct ipv6_l3fwd_route ipv6_l3fwd_route_array[] = { {{32, 1, 2, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 5}, {{32, 1, 2, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 6}, {{32, 1, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 7}, + {{32, 1, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 8}, + {{32, 1, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 9}, + {{32, 1, 2, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 10}, + {{32, 1, 2, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 11}, + {{32, 1, 2, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 12}, + {{32, 1, 2, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 13}, + {{32, 1, 2, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 14}, + {{32, 1, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0}, 64, 15}, }; /* From patchwork Fri Nov 5 08:38:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavan Nikhilesh Bhagavatula X-Patchwork-Id: 103858 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B68E3A0C61; Fri, 5 Nov 2021 09:39:07 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3DD8D41143; Fri, 5 Nov 2021 09:39:03 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 5972D40689 for ; Fri, 5 Nov 2021 09:39:01 +0100 (CET) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 1A50PbGL014958; Fri, 5 Nov 2021 01:39:00 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=/5GcIhR2PjCpavloM5d4DfUSgn0Xdt63Igi2eJd2y7g=; b=aiMqnXCn8VEQHb09NAU4cF0iMFg6MBL2pq7weve0Y/NPqoaVpW1KV1hX6djyDSMl93Sg WkwO9OHjCd/EDtrv5CYs9qf629jtuMKMJ0He6VjpH/MrrJZDpPweUX3utckv1kp63svw xgAvabrvCcBoLrlLwS5q1VRWSlpyZ+knF8oAVU/OLAUFcxC94rU621z8Esk900K/0xbP SAQtzza3N0uW2kUuDMqjv+I/jnyx+HjxbeaPOyZqy2tPQPECMh1qy2IMPs/tmPVLh0EL aidktKcp7ksnKhhwJ+B6b9GZf2dt06OBTZBmS5y92uoLDUjRpleuqeLYW7zUkeD+EZUY Qw== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3c4t2fsq5a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Fri, 05 Nov 2021 01:39:00 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Fri, 5 Nov 2021 01:38:58 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Fri, 5 Nov 2021 01:38:58 -0700 Received: from BG-LT7430.marvell.com (BG-LT7430.marvell.com [10.28.177.176]) by maili.marvell.com (Postfix) with ESMTP id F13453F7043; Fri, 5 Nov 2021 01:38:56 -0700 (PDT) From: To: , , CC: , Pavan Nikhilesh Date: Fri, 5 Nov 2021 14:08:50 +0530 Message-ID: <20211105083851.2812-2-pbhagavatula@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211105083851.2812-1-pbhagavatula@marvell.com> References: <20211003202448.10908-1-pbhagavatula@marvell.com> <20211105083851.2812-1-pbhagavatula@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: xaSk3PHkHQrjby4aO9RYFeEa35_0L6no X-Proofpoint-GUID: xaSk3PHkHQrjby4aO9RYFeEa35_0L6no X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.0.607.475 definitions=2021-11-05_01,2021-11-03_01,2020-04-07_01 Subject: [dpdk-dev] [PATCH v5 2/3] examples/l3fwd: print port bdf when adding routes X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Pavan Nikhilesh Since the number of Ethernet ports have gone up, print the pci bdf along with the routes. This is also helpful for cases where allow listing order is not honored. Signed-off-by: Pavan Nikhilesh Reviewed-by: Conor Walsh --- examples/l3fwd/l3fwd_fib.c | 31 +++++++++++++++++++------------ examples/l3fwd/l3fwd_lpm.c | 19 ++++++++++++------- 2 files changed, 31 insertions(+), 19 deletions(-) diff --git a/examples/l3fwd/l3fwd_fib.c b/examples/l3fwd/l3fwd_fib.c index f5c685a4f3..2110459cc3 100644 --- a/examples/l3fwd/l3fwd_fib.c +++ b/examples/l3fwd/l3fwd_fib.c @@ -580,6 +580,7 @@ fib_event_main_loop_tx_q_burst_vector(__rte_unused void *dummy) void setup_fib(const int socketid) { + struct rte_eth_dev_info dev_info; struct rte_fib6_conf config; struct rte_fib_conf config_ipv4; unsigned int i; @@ -611,6 +612,8 @@ setup_fib(const int socketid) enabled_port_mask) == 0) continue; + rte_eth_dev_info_get(ipv4_l3fwd_route_array[i].if_out, + &dev_info); ret = rte_fib_add(ipv4_l3fwd_fib_lookup_struct[socketid], ipv4_l3fwd_route_array[i].ip, ipv4_l3fwd_route_array[i].depth, @@ -624,13 +627,14 @@ setup_fib(const int socketid) in.s_addr = htonl(ipv4_l3fwd_route_array[i].ip); if (inet_ntop(AF_INET, &in, abuf, sizeof(abuf)) != NULL) { - printf("FIB: Adding route %s / %d (%d)\n", - abuf, - ipv4_l3fwd_route_array[i].depth, - ipv4_l3fwd_route_array[i].if_out); + printf("FIB: Adding route %s / %d (%d) [%s]\n", abuf, + ipv4_l3fwd_route_array[i].depth, + ipv4_l3fwd_route_array[i].if_out, + dev_info.device->name); } else { - printf("FIB: IPv4 route added to port %d\n", - ipv4_l3fwd_route_array[i].if_out); + printf("FIB: IPv4 route added to port %d [%s]\n", + ipv4_l3fwd_route_array[i].if_out, + dev_info.device->name); } } /* >8 End of setup fib. */ @@ -659,6 +663,8 @@ setup_fib(const int socketid) enabled_port_mask) == 0) continue; + rte_eth_dev_info_get(ipv6_l3fwd_route_array[i].if_out, + &dev_info); ret = rte_fib6_add(ipv6_l3fwd_fib_lookup_struct[socketid], ipv6_l3fwd_route_array[i].ip, ipv6_l3fwd_route_array[i].depth, @@ -672,13 +678,14 @@ setup_fib(const int socketid) if (inet_ntop(AF_INET6, ipv6_l3fwd_route_array[i].ip, abuf, sizeof(abuf)) != NULL) { - printf("FIB: Adding route %s / %d (%d)\n", - abuf, - ipv6_l3fwd_route_array[i].depth, - ipv6_l3fwd_route_array[i].if_out); + printf("FIB: Adding route %s / %d (%d) [%s]\n", abuf, + ipv6_l3fwd_route_array[i].depth, + ipv6_l3fwd_route_array[i].if_out, + dev_info.device->name); } else { - printf("FIB: IPv6 route added to port %d\n", - ipv6_l3fwd_route_array[i].if_out); + printf("FIB: IPv6 route added to port %d [%s]\n", + ipv6_l3fwd_route_array[i].if_out, + dev_info.device->name); } } } diff --git a/examples/l3fwd/l3fwd_lpm.c b/examples/l3fwd/l3fwd_lpm.c index 9ae288780c..a5b476ced3 100644 --- a/examples/l3fwd/l3fwd_lpm.c +++ b/examples/l3fwd/l3fwd_lpm.c @@ -551,6 +551,7 @@ lpm_event_main_loop_tx_q_burst_vector(__rte_unused void *dummy) void setup_lpm(const int socketid) { + struct rte_eth_dev_info dev_info; struct rte_lpm6_config config; struct rte_lpm_config config_ipv4; unsigned i; @@ -579,6 +580,8 @@ setup_lpm(const int socketid) enabled_port_mask) == 0) continue; + rte_eth_dev_info_get(ipv4_l3fwd_route_array[i].if_out, + &dev_info); ret = rte_lpm_add(ipv4_l3fwd_lpm_lookup_struct[socketid], ipv4_l3fwd_route_array[i].ip, ipv4_l3fwd_route_array[i].depth, @@ -591,10 +594,10 @@ setup_lpm(const int socketid) } in.s_addr = htonl(ipv4_l3fwd_route_array[i].ip); - printf("LPM: Adding route %s / %d (%d)\n", + printf("LPM: Adding route %s / %d (%d) [%s]\n", inet_ntop(AF_INET, &in, abuf, sizeof(abuf)), - ipv4_l3fwd_route_array[i].depth, - ipv4_l3fwd_route_array[i].if_out); + ipv4_l3fwd_route_array[i].depth, + ipv4_l3fwd_route_array[i].if_out, dev_info.device->name); } /* create the LPM6 table */ @@ -618,6 +621,8 @@ setup_lpm(const int socketid) enabled_port_mask) == 0) continue; + rte_eth_dev_info_get(ipv4_l3fwd_route_array[i].if_out, + &dev_info); ret = rte_lpm6_add(ipv6_l3fwd_lpm_lookup_struct[socketid], ipv6_l3fwd_route_array[i].ip, ipv6_l3fwd_route_array[i].depth, @@ -629,11 +634,11 @@ setup_lpm(const int socketid) i, socketid); } - printf("LPM: Adding route %s / %d (%d)\n", - inet_ntop(AF_INET6, ipv6_l3fwd_route_array[i].ip, - abuf, sizeof(abuf)), + printf("LPM: Adding route %s / %d (%d) [%s]\n", + inet_ntop(AF_INET6, ipv6_l3fwd_route_array[i].ip, abuf, + sizeof(abuf)), ipv6_l3fwd_route_array[i].depth, - ipv6_l3fwd_route_array[i].if_out); + ipv6_l3fwd_route_array[i].if_out, dev_info.device->name); } } From patchwork Fri Nov 5 08:38:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavan Nikhilesh Bhagavatula X-Patchwork-Id: 103859 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D0A7BA0C61; Fri, 5 Nov 2021 09:39:12 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 49C9141140; Fri, 5 Nov 2021 09:39:06 +0100 (CET) Received: from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com [67.231.156.173]) by mails.dpdk.org (Postfix) with ESMTP id F2E8B40689 for ; Fri, 5 Nov 2021 09:39:04 +0100 (CET) Received: from pps.filterd (m0045851.ppops.net [127.0.0.1]) by mx0b-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 1A50S4GT024647; Fri, 5 Nov 2021 01:39:04 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=XQUMMrMUAy/kNzllk2LVNAAhw43VhbMMty5h/4WsHAo=; b=eR2+hHT/a1H0qQ6JgiQouKBWZNuXxmmm2vof5GOhPHEPc4huVaCQC4SLNtDwvdfAL6hu xZCnLUPpio/RD/jdUiZFN3/OCiQ9Dt9NFJyX/MdCMPEH5chkMyWi2/iZAHWDO/oyRLca MDru+lJaTqdyTOs6AWqenqFkDwYOUrLIWPaVetSQ2v6oPDDzVrwoSv8nm4KQxgN5syim idBaS7oBvmRvVlePOn9zPXb44RdGaLyKdQoxdBeUtGrDSe2h9/K7+Y0ekixp7EczVg0p laSnf6BCIjFwz13C3KKIFsCRiGp+dGZiGG2xsjbmPqZoXIU1UWkEElOcW71sctB6hqF6 jQ== Received: from dc5-exch02.marvell.com ([199.233.59.182]) by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3c4t3gspb0-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Fri, 05 Nov 2021 01:39:04 -0700 Received: from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Fri, 5 Nov 2021 01:39:01 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.18 via Frontend Transport; Fri, 5 Nov 2021 01:39:01 -0700 Received: from BG-LT7430.marvell.com (BG-LT7430.marvell.com [10.28.177.176]) by maili.marvell.com (Postfix) with ESMTP id 155033F7043; Fri, 5 Nov 2021 01:38:59 -0700 (PDT) From: To: , , CC: , Pavan Nikhilesh Date: Fri, 5 Nov 2021 14:08:51 +0530 Message-ID: <20211105083851.2812-3-pbhagavatula@marvell.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20211105083851.2812-1-pbhagavatula@marvell.com> References: <20211003202448.10908-1-pbhagavatula@marvell.com> <20211105083851.2812-1-pbhagavatula@marvell.com> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: xOYjRYDPkltsM0gnPeNGVUPiKwdoKido X-Proofpoint-GUID: xOYjRYDPkltsM0gnPeNGVUPiKwdoKido X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.0.607.475 definitions=2021-11-05_01,2021-11-03_01,2020-04-07_01 Subject: [dpdk-dev] [PATCH v5 3/3] examples/l3fwd: use reserved addresses for EM mode X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Pavan Nikhilesh The l3fwd example should use the reserved IPv4/v6 reserved address ranges defined in RFC5735, RFC5180 and RFC863 discard protocol for the port number in the exact match mode of L3 forwarding. Signed-off-by: Pavan Nikhilesh Reviewed-by: David Marchand --- examples/l3fwd/l3fwd.h | 2 +- examples/l3fwd/l3fwd_em.c | 138 ++++++++++++++++++-------------------- 2 files changed, 65 insertions(+), 75 deletions(-) diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h index 9607ee0fbb..38ca19133c 100644 --- a/examples/l3fwd/l3fwd.h +++ b/examples/l3fwd/l3fwd.h @@ -56,7 +56,7 @@ /* 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 4 +#define HASH_ENTRY_NUMBER_DEFAULT 16 struct mbuf_table { uint16_t len; diff --git a/examples/l3fwd/l3fwd_em.c b/examples/l3fwd/l3fwd_em.c index ff5e56766c..5cc4a4d979 100644 --- a/examples/l3fwd/l3fwd_em.c +++ b/examples/l3fwd/l3fwd_em.c @@ -99,33 +99,64 @@ struct ipv6_l3fwd_em_route { uint8_t if_out; }; -static struct ipv4_l3fwd_em_route ipv4_l3fwd_em_route_array[] = { - {{RTE_IPV4(101, 0, 0, 0), RTE_IPV4(100, 10, 0, 1), 101, 11, IPPROTO_TCP}, 0}, - {{RTE_IPV4(201, 0, 0, 0), RTE_IPV4(200, 20, 0, 1), 102, 12, IPPROTO_TCP}, 1}, - {{RTE_IPV4(111, 0, 0, 0), RTE_IPV4(100, 30, 0, 1), 101, 11, IPPROTO_TCP}, 2}, - {{RTE_IPV4(211, 0, 0, 0), RTE_IPV4(200, 40, 0, 1), 102, 12, IPPROTO_TCP}, 3}, +/* 198.18.0.0/16 are set aside for RFC2544 benchmarking (RFC5735). + * Use RFC863 Discard Protocol. + */ +static const struct ipv4_l3fwd_em_route ipv4_l3fwd_em_route_array[] = { + {{RTE_IPV4(198, 18, 0, 0), RTE_IPV4(198, 18, 0, 1), 9, 9, IPPROTO_UDP}, 0}, + {{RTE_IPV4(198, 18, 1, 0), RTE_IPV4(198, 18, 1, 1), 9, 9, IPPROTO_UDP}, 1}, + {{RTE_IPV4(198, 18, 2, 0), RTE_IPV4(198, 18, 2, 1), 9, 9, IPPROTO_UDP}, 2}, + {{RTE_IPV4(198, 18, 3, 0), RTE_IPV4(198, 18, 3, 1), 9, 9, IPPROTO_UDP}, 3}, + {{RTE_IPV4(198, 18, 4, 0), RTE_IPV4(198, 18, 4, 1), 9, 9, IPPROTO_UDP}, 4}, + {{RTE_IPV4(198, 18, 5, 0), RTE_IPV4(198, 18, 5, 1), 9, 9, IPPROTO_UDP}, 5}, + {{RTE_IPV4(198, 18, 6, 0), RTE_IPV4(198, 18, 6, 1), 9, 9, IPPROTO_UDP}, 6}, + {{RTE_IPV4(198, 18, 7, 0), RTE_IPV4(198, 18, 7, 1), 9, 9, IPPROTO_UDP}, 7}, + {{RTE_IPV4(198, 18, 8, 0), RTE_IPV4(198, 18, 8, 1), 9, 9, IPPROTO_UDP}, 8}, + {{RTE_IPV4(198, 18, 9, 0), RTE_IPV4(198, 18, 9, 1), 9, 9, IPPROTO_UDP}, 9}, + {{RTE_IPV4(198, 18, 10, 0), RTE_IPV4(198, 18, 10, 1), 9, 9, IPPROTO_UDP}, 10}, + {{RTE_IPV4(198, 18, 11, 0), RTE_IPV4(198, 18, 11, 1), 9, 9, IPPROTO_UDP}, 11}, + {{RTE_IPV4(198, 18, 12, 0), RTE_IPV4(198, 18, 12, 1), 9, 9, IPPROTO_UDP}, 12}, + {{RTE_IPV4(198, 18, 13, 0), RTE_IPV4(198, 18, 13, 1), 9, 9, IPPROTO_UDP}, 13}, + {{RTE_IPV4(198, 18, 14, 0), RTE_IPV4(198, 18, 14, 1), 9, 9, IPPROTO_UDP}, 14}, + {{RTE_IPV4(198, 18, 15, 0), RTE_IPV4(198, 18, 15, 1), 9, 9, IPPROTO_UDP}, 15}, }; -static struct ipv6_l3fwd_em_route ipv6_l3fwd_em_route_array[] = { - {{ - {0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0x02, 0x1e, 0x67, 0xff, 0xfe, 0, 0, 0}, - {0xfe, 0x80, 0, 0, 0, 0, 0, 0, 0x02, 0x1b, 0x21, 0xff, 0xfe, 0x91, 0x38, 0x05}, - 101, 11, IPPROTO_TCP}, 0}, - - {{ - {0xfe, 0x90, 0, 0, 0, 0, 0, 0, 0x02, 0x1e, 0x67, 0xff, 0xfe, 0, 0, 0}, - {0xfe, 0x90, 0, 0, 0, 0, 0, 0, 0x02, 0x1b, 0x21, 0xff, 0xfe, 0x91, 0x38, 0x05}, - 102, 12, IPPROTO_TCP}, 1}, - - {{ - {0xfe, 0xa0, 0, 0, 0, 0, 0, 0, 0x02, 0x1e, 0x67, 0xff, 0xfe, 0, 0, 0}, - {0xfe, 0xa0, 0, 0, 0, 0, 0, 0, 0x02, 0x1b, 0x21, 0xff, 0xfe, 0x91, 0x38, 0x05}, - 101, 11, IPPROTO_TCP}, 2}, - - {{ - {0xfe, 0xb0, 0, 0, 0, 0, 0, 0, 0x02, 0x1e, 0x67, 0xff, 0xfe, 0, 0, 0}, - {0xfe, 0xb0, 0, 0, 0, 0, 0, 0, 0x02, 0x1b, 0x21, 0xff, 0xfe, 0x91, 0x38, 0x05}, - 102, 12, IPPROTO_TCP}, 3}, +/* 2001:0200::/48 is IANA reserved range for IPv6 benchmarking (RFC5180). + * Use RFC863 Discard Protocol. + */ +static const struct ipv6_l3fwd_em_route ipv6_l3fwd_em_route_array[] = { + {{{32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 0}, + {{{32, 1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 1}, + {{{32, 1, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 2}, + {{{32, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 3}, + {{{32, 1, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 4}, + {{{32, 1, 2, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 5}, + {{{32, 1, 2, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 6}, + {{{32, 1, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 7}, + {{{32, 1, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 8}, + {{{32, 1, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 9}, + {{{32, 1, 2, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 10}, + {{{32, 1, 2, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 11}, + {{{32, 1, 2, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 12}, + {{{32, 1, 2, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 13}, + {{{32, 1, 2, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 14}, + {{{32, 1, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0}, + {32, 1, 2, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 1}, 9, 9, IPPROTO_UDP}, 15}, }; struct rte_hash *ipv4_l3fwd_em_lookup_struct[NB_SOCKETS]; @@ -405,7 +436,7 @@ populate_ipv6_few_flow_into_table(const struct rte_hash *h) (uint64_t)IPV6_L3FWD_EM_NUM_ROUTES); } -#define NUMBER_PORT_USED 4 +#define NUMBER_PORT_USED 16 static inline void populate_ipv4_many_flow_into_table(const struct rte_hash *h, unsigned int nr_flow) @@ -416,36 +447,16 @@ populate_ipv4_many_flow_into_table(const struct rte_hash *h, ALL_32_BITS, ALL_32_BITS} }; for (i = 0; i < nr_flow; i++) { + uint8_t port = i % NUMBER_PORT_USED; struct ipv4_l3fwd_em_route entry; union ipv4_5tuple_host newkey; - uint8_t a = (uint8_t) - ((i/NUMBER_PORT_USED)%BYTE_VALUE_MAX); - uint8_t b = (uint8_t) - (((i/NUMBER_PORT_USED)/BYTE_VALUE_MAX)%BYTE_VALUE_MAX); - uint8_t c = (uint8_t) - ((i/NUMBER_PORT_USED)/(BYTE_VALUE_MAX*BYTE_VALUE_MAX)); + uint8_t a = (uint8_t)((port + 1) % BYTE_VALUE_MAX); /* Create the ipv4 exact match flow */ memset(&entry, 0, sizeof(entry)); - switch (i & (NUMBER_PORT_USED - 1)) { - case 0: - entry = ipv4_l3fwd_em_route_array[0]; - entry.key.ip_dst = RTE_IPV4(101, c, b, a); - break; - case 1: - entry = ipv4_l3fwd_em_route_array[1]; - entry.key.ip_dst = RTE_IPV4(201, c, b, a); - break; - case 2: - entry = ipv4_l3fwd_em_route_array[2]; - entry.key.ip_dst = RTE_IPV4(111, c, b, a); - break; - case 3: - entry = ipv4_l3fwd_em_route_array[3]; - entry.key.ip_dst = RTE_IPV4(211, c, b, a); - break; - }; + entry = ipv4_l3fwd_em_route_array[port]; + entry.key.ip_dst = RTE_IPV4(198, 18, port, a); convert_ipv4_5tuple(&entry.key, &newkey); int32_t ret = rte_hash_add_key(h, (void *) &newkey); @@ -469,35 +480,14 @@ populate_ipv6_many_flow_into_table(const struct rte_hash *h, mask2 = (rte_xmm_t){.u32 = {ALL_32_BITS, ALL_32_BITS, 0, 0} }; for (i = 0; i < nr_flow; i++) { + uint8_t port = i % NUMBER_PORT_USED; struct ipv6_l3fwd_em_route entry; union ipv6_5tuple_host newkey; - uint8_t a = (uint8_t) - ((i/NUMBER_PORT_USED)%BYTE_VALUE_MAX); - uint8_t b = (uint8_t) - (((i/NUMBER_PORT_USED)/BYTE_VALUE_MAX)%BYTE_VALUE_MAX); - uint8_t c = (uint8_t) - ((i/NUMBER_PORT_USED)/(BYTE_VALUE_MAX*BYTE_VALUE_MAX)); - /* Create the ipv6 exact match flow */ memset(&entry, 0, sizeof(entry)); - switch (i & (NUMBER_PORT_USED - 1)) { - case 0: - entry = ipv6_l3fwd_em_route_array[0]; - break; - case 1: - entry = ipv6_l3fwd_em_route_array[1]; - break; - case 2: - entry = ipv6_l3fwd_em_route_array[2]; - break; - case 3: - entry = ipv6_l3fwd_em_route_array[3]; - break; - }; - entry.key.ip_dst[13] = c; - entry.key.ip_dst[14] = b; - entry.key.ip_dst[15] = a; + entry = ipv6_l3fwd_em_route_array[port]; + entry.key.ip_dst[15] = (port + 1) % BYTE_VALUE_MAX; convert_ipv6_5tuple(&entry.key, &newkey); int32_t ret = rte_hash_add_key(h, (void *) &newkey);