[dpdk-dev] [PATCH v3] examples/l2fwd: add cmdline option for forwarding port info

Pavan Nikhilesh Bhagavatula pbhagavatula at marvell.com
Mon Apr 27 18:38:40 CEST 2020


>>diff --git a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
>>b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
>>index 39d6b0067..b54321b5b 100644
>>--- a/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
>>+++ b/doc/guides/sample_app_ug/l2_forward_real_virtual.rst
>>@@ -91,7 +91,10 @@ The application requires a number of command
>line
>>options:
>>
>> .. code-block:: console
>>
>>-    ./build/l2fwd [EAL options] -- -p PORTMASK [-q NQ] --[no-]mac-
>updating
>>+    ./build/l2fwd [EAL options] -- -p PORTMASK
>>+                                   [-q NQ]
>>+                                   --[no-]mac-updating
>>+                                   --portmap="(port, port)[,(port, port)]"
>
>Will it be better to represent as [--portmap="(port, port)[,(port, port)]]
>as it is a optional parameter ?
>

Will change in v4.

>>
>> where,
>>
>>@@ -99,7 +102,10 @@ where,
>>
>> *   q NQ: A number of queues (=ports) per lcore (default is 1)
>>
>>-*   --[no-]mac-updating: Enable or disable MAC addresses updating
>(enabled
>>by default).
>>+*   --[no-]mac-updating: Enable or disable MAC addresses updating
>(enabled
>>by default)
>>+
>>+*   --portmap="(port,port)[,(port,port)]": Determines which ports are
>>mapped to
>>+    which ports for packet forwarding.
>
>May be rephrased a bit shorter as "Determines forwarding ports
>mapping".

Will change in v4.

>>
>> To run the application in linux environment with 4 lcores, 16 ports and
>8 RX
>>queues per lcore and MAC address  updating enabled, issue the
>command:
>>@@ -108,6 +114,14 @@ updating enabled, issue the command:
>>
>>     $ ./build/l2fwd -l 0-3 -n 4 -- -q 8 -p ffff
>>
>>+To run the application in linux environment with 4 lcores, 4 ports, 8
>>+RX queues per lcore and MAC address updating enabled, to forward
>RX
>>+traffic of ports 0 & 1 on ports 2 & 3 respectively and vice versa, issue
>the
>>command:
>
>IMO, No need to mentioned information about MAC address update
>enabled because it
>is enabled by default and no param is passed in below command. So
>information is not
>relevant here.
>

Will change in v4.

>>+
>>+.. code-block:: console
>>+
>>+    $ ./build/l2fwd -l 0-3 -n 4 -- -q 8 -p f --portmap="(0,2)(1,3)"
>It looks like comma is missed in between two port map information.
>>+
>> Refer to the *DPDK Getting Started Guide* for general information
>on running
>>applications  and the Environment Abstraction Layer (EAL) options.
>>
>>diff --git a/examples/l2fwd/main.c b/examples/l2fwd/main.c index
>>88ddfe589..81861a22a 100644
>>--- a/examples/l2fwd/main.c
>>+++ b/examples/l2fwd/main.c
>>@@ -38,6 +38,7 @@
>> #include <rte_ethdev.h>
>> #include <rte_mempool.h>
>> #include <rte_mbuf.h>
>>+#include <rte_string_fns.h>
>>
>> static volatile bool force_quit;
>>
>>@@ -67,6 +68,15 @@ static uint32_t l2fwd_enabled_port_mask = 0;
>> /* list of enabled ports */
>> static uint32_t l2fwd_dst_ports[RTE_MAX_ETHPORTS];
>>
>>+struct port_pair_params {
>>+#define NUM_PORTS	2
>>+	uint16_t port[NUM_PORTS];
>>+} __rte_cache_aligned;
>
>Is there any specific reason to use this syntax to declare two ports
>instead of following
>struct port_pair_params {
>     uint16_t port1;
>     uint16_t port2;
>};
>

It was done to reduce code duplication. Will leave as is.

>>+
>>+static struct port_pair_params
>>+port_pair_params_array[RTE_MAX_ETHPORTS];
>Should not be RTE_MAX_ETHPORTS/2 if only 1:1 mapping is allowed  ?
>As I understood it is used to store CLI port mapping, 

RTE_MAX_ETHPORTS/2 will be sufficient.

>I think it is better to
>Use any other MACRO which define maximum number of port map
>parameter.
>If you consider it, then it can also be updated in documentation.
>
>>+static struct port_pair_params *port_pair_params; static uint16_t
>>+nb_port_pair_params;
>>+
>> static unsigned int l2fwd_rx_queue_per_lcore = 1;
>>
>> #define MAX_RX_QUEUE_PER_LCORE 16
>>@@ -294,11 +304,13 @@ l2fwd_usage(const char *prgname)
>> 	printf("%s [EAL options] -- -p PORTMASK [-q NQ]\n"
>> 	       "  -p PORTMASK: hexadecimal bitmask of ports to
>configure\n"
>> 	       "  -q NQ: number of queue (=ports) per lcore (default is
>1)\n"
>>-		   "  -T PERIOD: statistics will be refreshed each PERIOD
>>seconds (0 to disable, 10 default, 86400 maximum)\n"
>>-		   "  --[no-]mac-updating: Enable or disable MAC
>addresses
>>updating (enabled by default)\n"
>>-		   "      When enabled:\n"
>>-		   "       - The source MAC address is replaced by the TX
>port
>>MAC address\n"
>>-		   "       - The destination MAC address is replaced by
>>02:00:00:00:00:TX_PORT_ID\n",
>>+	       "  -T PERIOD: statistics will be refreshed each PERIOD
>seconds (0 to
>>disable, 10 default, 86400 maximum)\n"
>>+	       "  --[no-]mac-updating: Enable or disable MAC addresses
>updating
>>(enabled by default)\n"
>>+	       "      When enabled:\n"
>>+	       "       - The source MAC address is replaced by the TX port
>MAC
>>address\n"
>>+	       "       - The destination MAC address is replaced by
>>02:00:00:00:00:TX_PORT_ID\n"
>>+	       "  --portmap: Configure forwarding port pair mapping\n"
>>+	       "	      Default: alternate port pairs\n\n",
>
>IMO, Indentation changes for other parameters should in separate
>patch.

It's not a functionality change it just minor code formatting change and doesn't 
deserve a separate patch.

>> 	       prgname);
>> }
>>
>>@@ -319,6 +331,61 @@ l2fwd_parse_portmask(const char
>*portmask)
>> 	return pm;
>> }
>>


More information about the dev mailing list