* [dpdk-dev] [PATCH 1/2] examples/l3fwd: set default schedule type as atomic
@ 2020-01-06 4:34 Nipun Gupta
2020-01-06 4:34 ` [dpdk-dev] [PATCH 2/2] examples/l3fwd: support multiple queues in event mode Nipun Gupta
2020-01-07 12:22 ` [dpdk-dev] [PATCH 1/2 v2] examples/l3fwd: set default schedule type as atomic Nipun Gupta
0 siblings, 2 replies; 6+ messages in thread
From: Nipun Gupta @ 2020-01-06 4:34 UTC (permalink / raw)
To: dev
Cc: pbhagavatula, jerinj, hemant.agrawal, akhil.goyal,
marko.kovacevic, orika, bruce.richardson, radu.nicolau,
tomasz.kantecki, skori, Nipun Gupta
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
---
These patches are based over https://patchwork.dpdk.org/patch/63553/.
Feel free to merge into the series.
examples/l3fwd/l3fwd_event.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/examples/l3fwd/l3fwd_event.h b/examples/l3fwd/l3fwd_event.h
index fcc0ce51a..470aedc61 100644
--- a/examples/l3fwd/l3fwd_event.h
+++ b/examples/l3fwd/l3fwd_event.h
@@ -100,7 +100,11 @@ l3fwd_get_eventdev_rsrc(void)
mz = rte_memzone_reserve(name, sizeof(struct l3fwd_event_resources),
0, 0);
if (mz != NULL) {
+ struct l3fwd_event_resources *rsrc = mz->addr;
+
memset(mz->addr, 0, sizeof(struct l3fwd_event_resources));
+ rsrc->sched_type = RTE_SCHED_TYPE_ATOMIC;
+
return mz->addr;
}
--
2.17.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [dpdk-dev] [PATCH 2/2] examples/l3fwd: support multiple queues in event mode
2020-01-06 4:34 [dpdk-dev] [PATCH 1/2] examples/l3fwd: set default schedule type as atomic Nipun Gupta
@ 2020-01-06 4:34 ` Nipun Gupta
2020-01-06 6:09 ` [dpdk-dev] [EXT] " Sunil Kumar Kori
2020-01-07 12:22 ` [dpdk-dev] [PATCH 1/2 v2] examples/l3fwd: set default schedule type as atomic Nipun Gupta
1 sibling, 1 reply; 6+ messages in thread
From: Nipun Gupta @ 2020-01-06 4:34 UTC (permalink / raw)
To: dev
Cc: pbhagavatula, jerinj, hemant.agrawal, akhil.goyal,
marko.kovacevic, orika, bruce.richardson, radu.nicolau,
tomasz.kantecki, skori, Nipun Gupta
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
---
examples/l3fwd/l3fwd_event.c | 55 ++++++++++++++++++++++++++++--------
examples/l3fwd/l3fwd_event.h | 4 +++
examples/l3fwd/main.c | 8 ++++--
3 files changed, 53 insertions(+), 14 deletions(-)
diff --git a/examples/l3fwd/l3fwd_event.c b/examples/l3fwd/l3fwd_event.c
index 9fea11bd9..61f642691 100644
--- a/examples/l3fwd/l3fwd_event.c
+++ b/examples/l3fwd/l3fwd_event.c
@@ -40,12 +40,32 @@ parse_eventq_sync(const char *optarg)
evt_rsrc->sched_type = RTE_SCHED_TYPE_PARALLEL;
}
+static void
+parse_event_eth_queues(const char *eth_queues)
+{
+ struct l3fwd_event_resources *evt_rsrc = l3fwd_get_eventdev_rsrc();
+ char *end = NULL;
+ uint8_t num_eth_queues;
+
+ /* parse decimal string */
+ num_eth_queues = strtoul(eth_queues, &end, 10);
+ if ((eth_queues[0] == '\0') || (end == NULL) || (*end != '\0'))
+ return;
+
+ if (num_eth_queues == 0)
+ return;
+
+ evt_rsrc->eth_queues = num_eth_queues;
+}
+
static void
l3fwd_parse_eventdev_args(char **argv, int argc)
{
const struct option eventdev_lgopts[] = {
{CMD_LINE_OPT_MODE, 1, 0, CMD_LINE_OPT_MODE_NUM},
{CMD_LINE_OPT_EVENTQ_SYNC, 1, 0, CMD_LINE_OPT_EVENTQ_SYNC_NUM},
+ {CMD_LINE_OPT_EVENT_ETH_QUEUES, 1, 0,
+ CMD_LINE_OPT_EVENT_ETH_QUEUES_NUM},
{NULL, 0, 0, 0}
};
char *prgname = argv[0];
@@ -64,6 +84,10 @@ l3fwd_parse_eventdev_args(char **argv, int argc)
parse_eventq_sync(optarg);
break;
+ case CMD_LINE_OPT_EVENT_ETH_QUEUES_NUM:
+ parse_event_eth_queues(optarg);
+ break;
+
default:
print_usage(prgname);
exit(1);
@@ -85,6 +109,7 @@ l3fwd_eth_dev_port_setup(struct rte_eth_conf *port_conf)
struct rte_eth_rxconf rxconf;
unsigned int nb_mbuf;
uint16_t port_id;
+ uint8_t eth_qid;
int32_t ret;
/* initialize all ports */
@@ -118,7 +143,8 @@ l3fwd_eth_dev_port_setup(struct rte_eth_conf *port_conf)
local_port_conf.rx_adv_conf.rss_conf.rss_hf);
}
- ret = rte_eth_dev_configure(port_id, 1, 1, &local_port_conf);
+ ret = rte_eth_dev_configure(port_id, evt_rsrc->eth_queues, 1,
+ &local_port_conf);
if (ret < 0)
rte_exit(EXIT_FAILURE,
"Cannot configure device: err=%d, port=%d\n",
@@ -161,20 +187,25 @@ l3fwd_eth_dev_port_setup(struct rte_eth_conf *port_conf)
8192u);
ret = init_mem(port_id, nb_mbuf);
}
- /* init one Rx queue per port */
+ /* init Rx queues per port */
rxconf = dev_info.default_rxconf;
rxconf.offloads = local_port_conf.rxmode.offloads;
- if (!evt_rsrc->per_port_pool)
- ret = rte_eth_rx_queue_setup(port_id, 0, nb_rxd, 0,
- &rxconf, evt_rsrc->pkt_pool[0][0]);
- else
- ret = rte_eth_rx_queue_setup(port_id, 0, nb_rxd, 0,
- &rxconf,
+
+ for (eth_qid = 0; eth_qid < evt_rsrc->eth_queues; eth_qid++) {
+ if (!evt_rsrc->per_port_pool)
+ ret = rte_eth_rx_queue_setup(port_id, eth_qid,
+ nb_rxd, 0, &rxconf,
+ evt_rsrc->pkt_pool[0][0]);
+ else
+ ret = rte_eth_rx_queue_setup(port_id, eth_qid,
+ nb_rxd, 0, &rxconf,
evt_rsrc->pkt_pool[port_id][0]);
- if (ret < 0)
- rte_exit(EXIT_FAILURE,
- "rte_eth_rx_queue_setup: err=%d, "
- "port=%d\n", ret, port_id);
+ if (ret < 0)
+ rte_exit(EXIT_FAILURE,
+ "rte_eth_rx_queue_setup: err=%d, "
+ "port=%d, eth queue: %d\n",
+ ret, port_id, eth_qid);
+ }
/* init one Tx queue per port */
txconf = dev_info.default_txconf;
diff --git a/examples/l3fwd/l3fwd_event.h b/examples/l3fwd/l3fwd_event.h
index 470aedc61..1fdd51e62 100644
--- a/examples/l3fwd/l3fwd_event.h
+++ b/examples/l3fwd/l3fwd_event.h
@@ -21,10 +21,12 @@
#define CMD_LINE_OPT_MODE "mode"
#define CMD_LINE_OPT_EVENTQ_SYNC "eventq-sched"
+#define CMD_LINE_OPT_EVENT_ETH_QUEUES "event-eth-queues"
enum {
CMD_LINE_OPT_MODE_NUM = 265,
CMD_LINE_OPT_EVENTQ_SYNC_NUM,
+ CMD_LINE_OPT_EVENT_ETH_QUEUES_NUM,
};
typedef uint32_t (*event_device_setup_cb)(void);
@@ -82,6 +84,7 @@ struct l3fwd_event_resources {
uint8_t deq_depth;
uint8_t has_burst;
uint8_t enabled;
+ uint8_t eth_queues;
uint8_t nb_args;
char **args;
};
@@ -104,6 +107,7 @@ l3fwd_get_eventdev_rsrc(void)
memset(mz->addr, 0, sizeof(struct l3fwd_event_resources));
rsrc->sched_type = RTE_SCHED_TYPE_ATOMIC;
+ rsrc->eth_queues = 1;
return mz->addr;
}
diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c
index 68998f42c..ecfaca435 100644
--- a/examples/l3fwd/main.c
+++ b/examples/l3fwd/main.c
@@ -285,7 +285,8 @@ print_usage(const char *prgname)
" [--parse-ptype]"
" [--per-port-pool]"
" [--mode]"
- " [--eventq-sched]\n\n"
+ " [--eventq-sched]"
+ " [--event-eth-queues]\n\n"
" -p PORTMASK: Hexadecimal bitmask of ports to configure\n"
" -P : Enable promiscuous mode\n"
@@ -306,7 +307,10 @@ print_usage(const char *prgname)
" --eventq-sched: Event queue synchronization method "
" ordered, atomic or parallel.\n\t\t"
" Default: atomic\n\t\t"
- " Valid only if --mode=eventdev\n\n",
+ " Valid only if --mode=eventdev\n"
+ " --event-eth-queues: Number of ethernet queues per device.\n\t\t"
+ " Default: 1\n\t\t"
+ " Valid only if --mode=eventdev\n\n",
prgname);
}
--
2.17.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [EXT] [PATCH 2/2] examples/l3fwd: support multiple queues in event mode
2020-01-06 4:34 ` [dpdk-dev] [PATCH 2/2] examples/l3fwd: support multiple queues in event mode Nipun Gupta
@ 2020-01-06 6:09 ` Sunil Kumar Kori
2020-01-06 17:47 ` Nipun Gupta
0 siblings, 1 reply; 6+ messages in thread
From: Sunil Kumar Kori @ 2020-01-06 6:09 UTC (permalink / raw)
To: Nipun Gupta, dev
Cc: Pavan Nikhilesh Bhagavatula, Jerin Jacob Kollanukkaran,
hemant.agrawal, akhil.goyal, marko.kovacevic, orika,
bruce.richardson, radu.nicolau, tomasz.kantecki
Regards
Sunil Kumar Kori
>-----Original Message-----
>From: Nipun Gupta <nipun.gupta@nxp.com>
>Sent: Monday, January 6, 2020 10:05 AM
>To: dev@dpdk.org
>Cc: Pavan Nikhilesh Bhagavatula <pbhagavatula@marvell.com>; Jerin Jacob
>Kollanukkaran <jerinj@marvell.com>; hemant.agrawal@nxp.com;
>akhil.goyal@nxp.com; marko.kovacevic@intel.com; orika@mellanox.com;
>bruce.richardson@intel.com; radu.nicolau@intel.com;
>tomasz.kantecki@intel.com; Sunil Kumar Kori <skori@marvell.com>; Nipun
>Gupta <nipun.gupta@nxp.com>
>Subject: [EXT] [PATCH 2/2] examples/l3fwd: support multiple queues in event
>mode
>
>External Email
>
>----------------------------------------------------------------------
>Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
>---
> examples/l3fwd/l3fwd_event.c | 55 ++++++++++++++++++++++++++++--------
> examples/l3fwd/l3fwd_event.h | 4 +++
> examples/l3fwd/main.c | 8 ++++--
> 3 files changed, 53 insertions(+), 14 deletions(-)
>
>diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index
>68998f42c..ecfaca435 100644
>--- a/examples/l3fwd/main.c
>+++ b/examples/l3fwd/main.c
>@@ -285,7 +285,8 @@ print_usage(const char *prgname)
> " [--parse-ptype]"
> " [--per-port-pool]"
> " [--mode]"
>- " [--eventq-sched]\n\n"
>+ " [--eventq-sched]"
>+ " [--event-eth-queues]\n\n"
>
> " -p PORTMASK: Hexadecimal bitmask of ports to
>configure\n"
> " -P : Enable promiscuous mode\n"
>@@ -306,7 +307,10 @@ print_usage(const char *prgname)
> " --eventq-sched: Event queue synchronization method "
> " ordered, atomic or parallel.\n\t\t"
> " Default: atomic\n\t\t"
>- " Valid only if --mode=eventdev\n\n",
>+ " Valid only if --mode=eventdev\n"
>+ " --event-eth-queues: Number of ethernet queues per
>device.\n\t\t"
Will it be better to make it like "eth-rx-queues" simply ? So that It will clearly reflect that which queues it is referring to, Rx or Tx. Also Comment should be updated accordingly.
>+ " Default: 1\n\t\t"
>+ " Valid only if --mode=eventdev\n\n",
> prgname);
> }
>
>--
>2.17.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [dpdk-dev] [EXT] [PATCH 2/2] examples/l3fwd: support multiple queues in event mode
2020-01-06 6:09 ` [dpdk-dev] [EXT] " Sunil Kumar Kori
@ 2020-01-06 17:47 ` Nipun Gupta
0 siblings, 0 replies; 6+ messages in thread
From: Nipun Gupta @ 2020-01-06 17:47 UTC (permalink / raw)
To: Sunil Kumar Kori, dev
Cc: Pavan Nikhilesh Bhagavatula, Jerin Jacob Kollanukkaran,
Hemant Agrawal, Akhil Goyal, marko.kovacevic, orika,
bruce.richardson, radu.nicolau, tomasz.kantecki
> -----Original Message-----
> From: Sunil Kumar Kori <skori@marvell.com>
> Sent: Monday, January 6, 2020 11:39 AM
> To: Nipun Gupta <nipun.gupta@nxp.com>; dev@dpdk.org
> Cc: Pavan Nikhilesh Bhagavatula <pbhagavatula@marvell.com>; Jerin Jacob
> Kollanukkaran <jerinj@marvell.com>; Hemant Agrawal
> <hemant.agrawal@nxp.com>; Akhil Goyal <akhil.goyal@nxp.com>;
> marko.kovacevic@intel.com; orika@mellanox.com;
> bruce.richardson@intel.com; radu.nicolau@intel.com;
> tomasz.kantecki@intel.com
> Subject: RE: [EXT] [PATCH 2/2] examples/l3fwd: support multiple queues in
> event mode
>
>
>
> Regards
> Sunil Kumar Kori
>
> >-----Original Message-----
> >From: Nipun Gupta <nipun.gupta@nxp.com>
> >Sent: Monday, January 6, 2020 10:05 AM
> >To: dev@dpdk.org
> >Cc: Pavan Nikhilesh Bhagavatula <pbhagavatula@marvell.com>; Jerin Jacob
> >Kollanukkaran <jerinj@marvell.com>; hemant.agrawal@nxp.com;
> >akhil.goyal@nxp.com; marko.kovacevic@intel.com; orika@mellanox.com;
> >bruce.richardson@intel.com; radu.nicolau@intel.com;
> >tomasz.kantecki@intel.com; Sunil Kumar Kori <skori@marvell.com>; Nipun
> >Gupta <nipun.gupta@nxp.com>
> >Subject: [EXT] [PATCH 2/2] examples/l3fwd: support multiple queues in event
> >mode
> >
> >External Email
> >
> >----------------------------------------------------------------------
> >Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
> >---
> > examples/l3fwd/l3fwd_event.c | 55 ++++++++++++++++++++++++++++--------
> > examples/l3fwd/l3fwd_event.h | 4 +++
> > examples/l3fwd/main.c | 8 ++++--
> > 3 files changed, 53 insertions(+), 14 deletions(-)
> >
> >diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c index
> >68998f42c..ecfaca435 100644
> >--- a/examples/l3fwd/main.c
> >+++ b/examples/l3fwd/main.c
> >@@ -285,7 +285,8 @@ print_usage(const char *prgname)
> > " [--parse-ptype]"
> > " [--per-port-pool]"
> > " [--mode]"
> >- " [--eventq-sched]\n\n"
> >+ " [--eventq-sched]"
> >+ " [--event-eth-queues]\n\n"
> >
> > " -p PORTMASK: Hexadecimal bitmask of ports to
> >configure\n"
> > " -P : Enable promiscuous mode\n"
> >@@ -306,7 +307,10 @@ print_usage(const char *prgname)
> > " --eventq-sched: Event queue synchronization method "
> > " ordered, atomic or parallel.\n\t\t"
> > " Default: atomic\n\t\t"
> >- " Valid only if --mode=eventdev\n\n",
> >+ " Valid only if --mode=eventdev\n"
> >+ " --event-eth-queues: Number of ethernet queues per
> >device.\n\t\t"
> Will it be better to make it like "eth-rx-queues" simply ? So that It will clearly
> reflect that which queues it is referring to, Rx or Tx. Also Comment should be
> updated accordingly.
Agree we should add rx also in the name to make it more clear, but I do not want
to remove event from the name. How about ' --event-eth-rxqs'?
Regards,
Nipun
> >+ " Default: 1\n\t\t"
> >+ " Valid only if --mode=eventdev\n\n",
> > prgname);
> > }
> >
> >--
> >2.17.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [dpdk-dev] [PATCH 1/2 v2] examples/l3fwd: set default schedule type as atomic
2020-01-06 4:34 [dpdk-dev] [PATCH 1/2] examples/l3fwd: set default schedule type as atomic Nipun Gupta
2020-01-06 4:34 ` [dpdk-dev] [PATCH 2/2] examples/l3fwd: support multiple queues in event mode Nipun Gupta
@ 2020-01-07 12:22 ` Nipun Gupta
2020-01-07 12:22 ` [dpdk-dev] [PATCH 2/2 v2] examples/l3fwd: support multiple eth Rx queues in event mode Nipun Gupta
1 sibling, 1 reply; 6+ messages in thread
From: Nipun Gupta @ 2020-01-07 12:22 UTC (permalink / raw)
To: dev
Cc: pbhagavatula, jerinj, hemant.agrawal, akhil.goyal,
marko.kovacevic, orika, bruce.richardson, radu.nicolau,
tomasz.kantecki, skori, Nipun Gupta
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
---
examples/l3fwd/l3fwd_event.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/examples/l3fwd/l3fwd_event.h b/examples/l3fwd/l3fwd_event.h
index fcc0ce51a..470aedc61 100644
--- a/examples/l3fwd/l3fwd_event.h
+++ b/examples/l3fwd/l3fwd_event.h
@@ -100,7 +100,11 @@ l3fwd_get_eventdev_rsrc(void)
mz = rte_memzone_reserve(name, sizeof(struct l3fwd_event_resources),
0, 0);
if (mz != NULL) {
+ struct l3fwd_event_resources *rsrc = mz->addr;
+
memset(mz->addr, 0, sizeof(struct l3fwd_event_resources));
+ rsrc->sched_type = RTE_SCHED_TYPE_ATOMIC;
+
return mz->addr;
}
--
2.17.1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [dpdk-dev] [PATCH 2/2 v2] examples/l3fwd: support multiple eth Rx queues in event mode
2020-01-07 12:22 ` [dpdk-dev] [PATCH 1/2 v2] examples/l3fwd: set default schedule type as atomic Nipun Gupta
@ 2020-01-07 12:22 ` Nipun Gupta
0 siblings, 0 replies; 6+ messages in thread
From: Nipun Gupta @ 2020-01-07 12:22 UTC (permalink / raw)
To: dev
Cc: pbhagavatula, jerinj, hemant.agrawal, akhil.goyal,
marko.kovacevic, orika, bruce.richardson, radu.nicolau,
tomasz.kantecki, skori, Nipun Gupta
This patch adds support of multiple Ethernet RX queues
for the event dev mode.
Signed-off-by: Nipun Gupta <nipun.gupta@nxp.com>
---
Changes in v2:
- Update command line argument to '--event-eth-rxqs' instead of
'--event-eth-queues'
- Correctly printed the number of RX queues being created
examples/l3fwd/l3fwd_event.c | 59 ++++++++++++++++++++++++++++--------
examples/l3fwd/l3fwd_event.h | 4 +++
examples/l3fwd/main.c | 8 +++--
3 files changed, 56 insertions(+), 15 deletions(-)
diff --git a/examples/l3fwd/l3fwd_event.c b/examples/l3fwd/l3fwd_event.c
index 9fea11bd9..1289bc9ab 100644
--- a/examples/l3fwd/l3fwd_event.c
+++ b/examples/l3fwd/l3fwd_event.c
@@ -40,12 +40,32 @@ parse_eventq_sync(const char *optarg)
evt_rsrc->sched_type = RTE_SCHED_TYPE_PARALLEL;
}
+static void
+parse_event_eth_rx_queues(const char *eth_rx_queues)
+{
+ struct l3fwd_event_resources *evt_rsrc = l3fwd_get_eventdev_rsrc();
+ char *end = NULL;
+ uint8_t num_eth_rx_queues;
+
+ /* parse decimal string */
+ num_eth_rx_queues = strtoul(eth_rx_queues, &end, 10);
+ if ((eth_rx_queues[0] == '\0') || (end == NULL) || (*end != '\0'))
+ return;
+
+ if (num_eth_rx_queues == 0)
+ return;
+
+ evt_rsrc->eth_rx_queues = num_eth_rx_queues;
+}
+
static void
l3fwd_parse_eventdev_args(char **argv, int argc)
{
const struct option eventdev_lgopts[] = {
{CMD_LINE_OPT_MODE, 1, 0, CMD_LINE_OPT_MODE_NUM},
{CMD_LINE_OPT_EVENTQ_SYNC, 1, 0, CMD_LINE_OPT_EVENTQ_SYNC_NUM},
+ {CMD_LINE_OPT_EVENT_ETH_RX_QUEUES, 1, 0,
+ CMD_LINE_OPT_EVENT_ETH_RX_QUEUES_NUM},
{NULL, 0, 0, 0}
};
char *prgname = argv[0];
@@ -64,6 +84,10 @@ l3fwd_parse_eventdev_args(char **argv, int argc)
parse_eventq_sync(optarg);
break;
+ case CMD_LINE_OPT_EVENT_ETH_RX_QUEUES_NUM:
+ parse_event_eth_rx_queues(optarg);
+ break;
+
default:
print_usage(prgname);
exit(1);
@@ -85,6 +109,7 @@ l3fwd_eth_dev_port_setup(struct rte_eth_conf *port_conf)
struct rte_eth_rxconf rxconf;
unsigned int nb_mbuf;
uint16_t port_id;
+ uint8_t eth_qid;
int32_t ret;
/* initialize all ports */
@@ -99,7 +124,8 @@ l3fwd_eth_dev_port_setup(struct rte_eth_conf *port_conf)
/* init port */
printf("Initializing port %d ... ", port_id);
fflush(stdout);
- printf("Creating queues: nb_rxq=1 nb_txq=1...\n");
+ printf("Creating queues: nb_rxq=%d nb_txq=1...\n",
+ evt_rsrc->eth_rx_queues);
rte_eth_dev_info_get(port_id, &dev_info);
if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
@@ -118,7 +144,8 @@ l3fwd_eth_dev_port_setup(struct rte_eth_conf *port_conf)
local_port_conf.rx_adv_conf.rss_conf.rss_hf);
}
- ret = rte_eth_dev_configure(port_id, 1, 1, &local_port_conf);
+ ret = rte_eth_dev_configure(port_id, evt_rsrc->eth_rx_queues,
+ 1, &local_port_conf);
if (ret < 0)
rte_exit(EXIT_FAILURE,
"Cannot configure device: err=%d, port=%d\n",
@@ -161,20 +188,26 @@ l3fwd_eth_dev_port_setup(struct rte_eth_conf *port_conf)
8192u);
ret = init_mem(port_id, nb_mbuf);
}
- /* init one Rx queue per port */
+ /* init Rx queues per port */
rxconf = dev_info.default_rxconf;
rxconf.offloads = local_port_conf.rxmode.offloads;
- if (!evt_rsrc->per_port_pool)
- ret = rte_eth_rx_queue_setup(port_id, 0, nb_rxd, 0,
- &rxconf, evt_rsrc->pkt_pool[0][0]);
- else
- ret = rte_eth_rx_queue_setup(port_id, 0, nb_rxd, 0,
- &rxconf,
+
+ for (eth_qid = 0; eth_qid < evt_rsrc->eth_rx_queues;
+ eth_qid++) {
+ if (!evt_rsrc->per_port_pool)
+ ret = rte_eth_rx_queue_setup(port_id, eth_qid,
+ nb_rxd, 0, &rxconf,
+ evt_rsrc->pkt_pool[0][0]);
+ else
+ ret = rte_eth_rx_queue_setup(port_id, eth_qid,
+ nb_rxd, 0, &rxconf,
evt_rsrc->pkt_pool[port_id][0]);
- if (ret < 0)
- rte_exit(EXIT_FAILURE,
- "rte_eth_rx_queue_setup: err=%d, "
- "port=%d\n", ret, port_id);
+ if (ret < 0)
+ rte_exit(EXIT_FAILURE,
+ "rte_eth_rx_queue_setup: err=%d, "
+ "port=%d, eth_qid: %d\n",
+ ret, port_id, eth_qid);
+ }
/* init one Tx queue per port */
txconf = dev_info.default_txconf;
diff --git a/examples/l3fwd/l3fwd_event.h b/examples/l3fwd/l3fwd_event.h
index 470aedc61..c79458eec 100644
--- a/examples/l3fwd/l3fwd_event.h
+++ b/examples/l3fwd/l3fwd_event.h
@@ -21,10 +21,12 @@
#define CMD_LINE_OPT_MODE "mode"
#define CMD_LINE_OPT_EVENTQ_SYNC "eventq-sched"
+#define CMD_LINE_OPT_EVENT_ETH_RX_QUEUES "event-eth-rxqs"
enum {
CMD_LINE_OPT_MODE_NUM = 265,
CMD_LINE_OPT_EVENTQ_SYNC_NUM,
+ CMD_LINE_OPT_EVENT_ETH_RX_QUEUES_NUM,
};
typedef uint32_t (*event_device_setup_cb)(void);
@@ -82,6 +84,7 @@ struct l3fwd_event_resources {
uint8_t deq_depth;
uint8_t has_burst;
uint8_t enabled;
+ uint8_t eth_rx_queues;
uint8_t nb_args;
char **args;
};
@@ -104,6 +107,7 @@ l3fwd_get_eventdev_rsrc(void)
memset(mz->addr, 0, sizeof(struct l3fwd_event_resources));
rsrc->sched_type = RTE_SCHED_TYPE_ATOMIC;
+ rsrc->eth_rx_queues = 1;
return mz->addr;
}
diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c
index 68998f42c..b76942a9b 100644
--- a/examples/l3fwd/main.c
+++ b/examples/l3fwd/main.c
@@ -285,7 +285,8 @@ print_usage(const char *prgname)
" [--parse-ptype]"
" [--per-port-pool]"
" [--mode]"
- " [--eventq-sched]\n\n"
+ " [--eventq-sched]"
+ " [--event-eth-rxqs]\n\n"
" -p PORTMASK: Hexadecimal bitmask of ports to configure\n"
" -P : Enable promiscuous mode\n"
@@ -306,7 +307,10 @@ print_usage(const char *prgname)
" --eventq-sched: Event queue synchronization method "
" ordered, atomic or parallel.\n\t\t"
" Default: atomic\n\t\t"
- " Valid only if --mode=eventdev\n\n",
+ " Valid only if --mode=eventdev\n"
+ " --event-eth-rxqs: Number of ethernet RX queues per device.\n\t\t"
+ " Default: 1\n\t\t"
+ " Valid only if --mode=eventdev\n\n",
prgname);
}
--
2.17.1
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-01-07 12:39 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-06 4:34 [dpdk-dev] [PATCH 1/2] examples/l3fwd: set default schedule type as atomic Nipun Gupta
2020-01-06 4:34 ` [dpdk-dev] [PATCH 2/2] examples/l3fwd: support multiple queues in event mode Nipun Gupta
2020-01-06 6:09 ` [dpdk-dev] [EXT] " Sunil Kumar Kori
2020-01-06 17:47 ` Nipun Gupta
2020-01-07 12:22 ` [dpdk-dev] [PATCH 1/2 v2] examples/l3fwd: set default schedule type as atomic Nipun Gupta
2020-01-07 12:22 ` [dpdk-dev] [PATCH 2/2 v2] examples/l3fwd: support multiple eth Rx queues in event mode Nipun Gupta
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).