Hello, On Thu, Mar 21, 2024 at 7:48 PM Sivaprasad Tummala <sivaprasad.tumm...@amd.com> wrote: > > Currently application supports queue IDs up to 255
I think it only relates to Rx queue IDs. Before this patch, the Tx queue count is already stored as a uint32_t or uint16_t and checked against RTE_MAX_LCORE. So no limit on the Tx queue count side. Can you just adjust the commitlog accordingly? (One may argue that the Tx queue count should be also checked against RTE_MAX_QUEUES_PER_PORT, but it is a separate issue to this patch and in practice, we probably always have RTE_MAX_QUEUES_PER_PORT > RTE_MAX_LCORE). > and max queues of 256 irrespective of device support. > This limits the number of active lcores to 256. > > The patch fixes these constraints by increasing > the queue IDs to support up to 65535. [snip] > diff --git a/examples/l3fwd/l3fwd_acl.c b/examples/l3fwd/l3fwd_acl.c > index 401692bcec..2bd63181bc 100644 > --- a/examples/l3fwd/l3fwd_acl.c > +++ b/examples/l3fwd/l3fwd_acl.c > @@ -997,7 +997,7 @@ acl_main_loop(__rte_unused void *dummy) > uint64_t prev_tsc, diff_tsc, cur_tsc; > int i, nb_rx; > uint16_t portid; > - uint8_t queueid; > + uint16_t queueid; > struct lcore_conf *qconf; > int socketid; > const uint64_t drain_tsc = (rte_get_tsc_hz() + US_PER_S - 1) > @@ -1020,7 +1020,7 @@ acl_main_loop(__rte_unused void *dummy) > portid = qconf->rx_queue_list[i].port_id; > queueid = qconf->rx_queue_list[i].queue_id; > RTE_LOG(INFO, L3FWD, > - " -- lcoreid=%u portid=%u rxqueueid=%hhu\n", > + " -- lcoreid=%u portid=%u rxqueueid=%hu\n", Nit: should be %PRIu16 (idem in other hunks formatting a queue). > lcore_id, portid, queueid); > } > [snip] > diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c > index 8d32ae1dd5..4d4738b92b 100644 > --- a/examples/l3fwd/main.c > +++ b/examples/l3fwd/main.c [snip] > @@ -366,7 +366,7 @@ init_lcore_rx_queues(void) > nb_rx_queue = lcore_conf[lcore].n_rx_queue; > if (nb_rx_queue >= MAX_RX_QUEUE_PER_LCORE) { > printf("error: too many queues (%u) for lcore: %u\n", > - (unsigned)nb_rx_queue + 1, (unsigned)lcore); > + (unsigned int)nb_rx_queue + 1, (unsigned > int)lcore); Nit: this does not seem related to the patch (probably a split issue, as a later patch touches this part of the code too). > return -1; > } else { > lcore_conf[lcore].rx_queue_list[nb_rx_queue].port_id = > @@ -500,6 +500,8 @@ parse_config(const char *q_arg) > char *str_fld[_NUM_FLD]; > int i; > unsigned size; > + uint16_t max_fld[_NUM_FLD] = {USHRT_MAX, > + USHRT_MAX, UCHAR_MAX}; Nit: no newline. This part validates user input for the rx queue used by a lcore. Some later check in the example (or in ethdev) may raise an error if requesting too many queues, but I think the limit here should be RTE_MAX_QUEUES_PER_PORT. Besides, this hunk also changes the check on max port and max lcore. This is something that should be left untouched at this point of the series. I would expect something like: uint16_t max_fld[_NUM_FLD] = {255, RTE_MAX_QUEUES_PER_PORT, 255}; > > nb_lcore_params = 0; > > @@ -518,7 +520,8 @@ parse_config(const char *q_arg) > for (i = 0; i < _NUM_FLD; i++){ > errno = 0; > int_fld[i] = strtoul(str_fld[i], &end, 0); > - if (errno != 0 || end == str_fld[i] || int_fld[i] > > 255) > + if (errno != 0 || end == str_fld[i] || int_fld[i] > > + > max_fld[i]) Nit: no newline. > return -1; > } > if (nb_lcore_params >= MAX_LCORE_PARAMS) { [snip] The other changes on the l3fwd example code in this series look good to me. Thanks. -- David Marchand