All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ananyev, Konstantin" <konstantin.ananyev@intel.com>
To: "pbhagavatula@marvell.com" <pbhagavatula@marvell.com>,
	"jerinj@marvell.com" <jerinj@marvell.com>,
	"Kovacevic, Marko" <marko.kovacevic@intel.com>,
	Ori Kam <orika@mellanox.com>,
	"Richardson, Bruce" <bruce.richardson@intel.com>,
	"Nicolau, Radu" <radu.nicolau@intel.com>,
	Akhil Goyal <akhil.goyal@nxp.com>,
	"Kantecki, Tomasz" <tomasz.kantecki@intel.com>,
	Sunil Kumar Kori <skori@marvell.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2 07/11] examples/l3fwd: add service core setup	based on caps
Date: Fri, 3 Jan 2020 13:07:30 +0000	[thread overview]
Message-ID: <SN6PR11MB2558834E2E9166445AAFA0319A230@SN6PR11MB2558.namprd11.prod.outlook.com> (raw)
In-Reply-To: <20191204144345.5736-8-pbhagavatula@marvell.com>

> diff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c
> index 20df12748..69d212bc2 100644
> --- a/examples/l3fwd/main.c
> +++ b/examples/l3fwd/main.c
> @@ -826,6 +826,93 @@ prepare_ptype_parser(uint16_t portid, uint16_t queueid)
>  	return 0;
>  }
> 
> +static inline int
> +l3fwd_service_enable(uint32_t service_id)
> +{
> +	uint8_t min_service_count = UINT8_MAX;
> +	uint32_t slcore_array[RTE_MAX_LCORE];
> +	unsigned int slcore = 0;
> +	uint8_t service_count;
> +	int32_t slcore_count;
> +
> +	if (!rte_service_lcore_count())
> +		return -ENOENT;
> +
> +	slcore_count = rte_service_lcore_list(slcore_array, RTE_MAX_LCORE);
> +	if (slcore_count < 0)
> +		return -ENOENT;
> +	/* Get the core which has least number of services running. */
> +	while (slcore_count--) {
> +		/* Reset default mapping */
> +		rte_service_map_lcore_set(service_id,
> +				slcore_array[slcore_count], 0);
> +		service_count = rte_service_lcore_count_services(
> +				slcore_array[slcore_count]);
> +		if (service_count < min_service_count) {
> +			slcore = slcore_array[slcore_count];
> +			min_service_count = service_count;
> +		}
> +	}
> +	if (rte_service_map_lcore_set(service_id, slcore, 1))
> +		return -ENOENT;
> +	rte_service_lcore_start(slcore);
> +
> +	return 0;
> +}
> +
> +static void
> +l3fwd_event_service_setup(void)
> +{
> +	struct l3fwd_event_resources *evt_rsrc = l3fwd_get_eventdev_rsrc();
> +	struct rte_event_dev_info evdev_info;
> +	uint32_t service_id, caps;
> +	int ret, i;
> +
> +	rte_event_dev_info_get(evt_rsrc->event_d_id, &evdev_info);
> +	if (evdev_info.event_dev_cap  & RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED) {
> +		ret = rte_event_dev_service_id_get(evt_rsrc->event_d_id,
> +				&service_id);
> +		if (ret != -ESRCH && ret != 0)
> +			rte_exit(EXIT_FAILURE,
> +				 "Error in starting eventdev service\n");
> +		l3fwd_service_enable(service_id);
> +	}
> +
> +	for (i = 0; i < evt_rsrc->rx_adptr.nb_rx_adptr; i++) {
> +		ret = rte_event_eth_rx_adapter_caps_get(evt_rsrc->event_d_id,
> +				evt_rsrc->rx_adptr.rx_adptr[i], &caps);
> +		if (ret < 0)
> +			rte_exit(EXIT_FAILURE,
> +				 "Failed to get Rx adapter[%d] caps\n",
> +				 evt_rsrc->rx_adptr.rx_adptr[i]);
> +		ret = rte_event_eth_rx_adapter_service_id_get(
> +				evt_rsrc->event_d_id,
> +				&service_id);
> +		if (ret != -ESRCH && ret != 0)
> +			rte_exit(EXIT_FAILURE,
> +				 "Error in starting Rx adapter[%d] service\n",
> +				 evt_rsrc->rx_adptr.rx_adptr[i]);
> +		l3fwd_service_enable(service_id);
> +	}
> +
> +	for (i = 0; i < evt_rsrc->tx_adptr.nb_tx_adptr; i++) {
> +		ret = rte_event_eth_tx_adapter_caps_get(evt_rsrc->event_d_id,
> +				evt_rsrc->tx_adptr.tx_adptr[i], &caps);
> +		if (ret < 0)
> +			rte_exit(EXIT_FAILURE,
> +				 "Failed to get Rx adapter[%d] caps\n",
> +				 evt_rsrc->tx_adptr.tx_adptr[i]);
> +		ret = rte_event_eth_tx_adapter_service_id_get(
> +				evt_rsrc->event_d_id,
> +				&service_id);
> +		if (ret != -ESRCH && ret != 0)
> +			rte_exit(EXIT_FAILURE,
> +				 "Error in starting Rx adapter[%d] service\n",
> +				 evt_rsrc->tx_adptr.tx_adptr[i]);
> +		l3fwd_service_enable(service_id);
> +	}
> +}
> +
>  int
>  main(int argc, char **argv)
>  {
> @@ -869,6 +956,8 @@ main(int argc, char **argv)
>  	evt_rsrc->port_mask = enabled_port_mask;
>  	/* Configure eventdev parameters if user has requested */
>  	l3fwd_event_resource_setup(&port_conf);
> +	if (evt_rsrc->enabled)
> +		goto skip_port_config;

Please try to avoid introducing more gotos.
If init code below is poll mode specific, let's move it int a separate function.
Then we can have something like:
If (evt_rsrc->enabled)  {
  ...
  ret =  l3fwd_event_resource_setup(...);
  l3fwd_event_service_setup();
 ...
} else 
   ret = l3fwd_poll_resource_setup(...);

...

> 
>  	if (check_lcore_params() < 0)
>  		rte_exit(EXIT_FAILURE, "check_lcore_params failed\n");
> @@ -1054,6 +1143,7 @@ main(int argc, char **argv)
>  		}
>  	}
> 
> +skip_port_config:
>  	printf("\n");
> 
>  	/* start ports */
> @@ -1083,6 +1173,9 @@ main(int argc, char **argv)
>  		}
>  	}
> 
> +	if (evt_rsrc->enabled)
> +		l3fwd_event_service_setup();
> +
>  	printf("\n");
> 
>  	for (lcore_id = 0; lcore_id < RTE_MAX_LCORE; lcore_id++) {
> --
> 2.17.1


  reply	other threads:[~2020-01-03 13:07 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-04 14:43 [dpdk-dev] [PATCH v2 00/11] example/l3fwd: introduce event device support pbhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 01/11] examples/l3fwd: add framework for event device pbhagavatula
2020-01-03 12:49   ` Ananyev, Konstantin
2020-01-06  4:27     ` Pavan Nikhilesh Bhagavatula
2020-01-06 12:32       ` Ananyev, Konstantin
2020-01-07 16:34         ` Pavan Nikhilesh Bhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 02/11] examples/l3fwd: split pipelines based on capability pbhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 03/11] examples/l3fwd: add event device configuration pbhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 04/11] examples/l3fwd: add ethdev setup based on eventdev pbhagavatula
2019-12-27 13:33   ` Nipun Gupta
2019-12-29 15:42     ` Pavan Nikhilesh Bhagavatula
2019-12-30  7:40       ` Nipun Gupta
2020-01-02  6:21         ` Pavan Nikhilesh Bhagavatula
2020-01-02  8:49           ` Nipun Gupta
2020-01-02  9:33             ` Jerin Jacob
2020-01-03  9:06               ` Nipun Gupta
2020-01-03  9:09                 ` Jerin Jacob
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 05/11] examples/l3fwd: add event port and queue setup pbhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 06/11] examples/l3fwd: add event eth Rx/Tx adapter setup pbhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 07/11] examples/l3fwd: add service core setup based on caps pbhagavatula
2020-01-03 13:07   ` Ananyev, Konstantin [this message]
2020-01-06  4:29     ` Pavan Nikhilesh Bhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 08/11] examples/l3fwd: add event lpm main loop pbhagavatula
2020-01-03 13:16   ` Ananyev, Konstantin
2020-01-06  4:43     ` Pavan Nikhilesh Bhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 09/11] examples/l3fwd: add event em " pbhagavatula
2020-01-03 13:45   ` Ananyev, Konstantin
2020-01-06  4:44     ` Pavan Nikhilesh Bhagavatula
2020-01-06 12:27       ` Ananyev, Konstantin
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 10/11] examples/l3fwd: add graceful teardown for eventdevice pbhagavatula
2020-01-03 13:52   ` Ananyev, Konstantin
2020-01-06  4:50     ` Pavan Nikhilesh Bhagavatula
2020-01-06 12:12       ` Ananyev, Konstantin
2020-01-07 16:28         ` Pavan Nikhilesh Bhagavatula
2019-12-04 14:43 ` [dpdk-dev] [PATCH v2 11/11] doc: update l3fwd user guide to support eventdev pbhagavatula
2019-12-04 15:16 ` [dpdk-dev] [PATCH v2 00/11] example/l3fwd: introduce event device support Jerin Jacob
2020-01-11 13:47 ` [dpdk-dev] [PATCH v3 " pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 01/11] examples/l3fwd: add framework for event device pbhagavatula
2020-01-21  8:44     ` Jerin Jacob
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 02/11] examples/l3fwd: split pipelines based on capability pbhagavatula
2020-01-21  8:46     ` Jerin Jacob
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 03/11] examples/l3fwd: add event device configuration pbhagavatula
2020-01-21  8:51     ` Jerin Jacob
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 04/11] examples/l3fwd: add ethdev setup based on eventdev pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 05/11] examples/l3fwd: add event port and queue setup pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 06/11] examples/l3fwd: add event eth Rx/Tx adapter setup pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 07/11] examples/l3fwd: add service core setup based on caps pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 08/11] examples/l3fwd: add event lpm main loop pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 09/11] examples/l3fwd: add event em " pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 10/11] examples/l3fwd: add graceful teardown for eventdevice pbhagavatula
2020-01-11 13:47   ` [dpdk-dev] [PATCH v3 11/11] doc: update l3fwd user guide to support eventdev pbhagavatula
2020-01-13 12:02   ` [dpdk-dev] [PATCH v3 00/11] example/l3fwd: introduce event device support Nipun Gupta
2020-01-22 18:28   ` [dpdk-dev] [PATCH v4 " pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 01/11] examples/l3fwd: add framework for event device pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 02/11] examples/l3fwd: split pipelines based on capability pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 03/11] examples/l3fwd: add event device configuration pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 04/11] examples/l3fwd: add ethdev setup based on eventdev pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 05/11] examples/l3fwd: add event port and queue setup pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 06/11] examples/l3fwd: add event eth Rx/Tx adapter setup pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 07/11] examples/l3fwd: add service core setup based on caps pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 08/11] examples/l3fwd: add event lpm main loop pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 09/11] examples/l3fwd: add event em " pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 10/11] examples/l3fwd: add graceful teardown for eventdevice pbhagavatula
2020-01-22 18:28     ` [dpdk-dev] [PATCH v4 11/11] doc: update l3fwd user guide to support eventdev pbhagavatula
2020-01-23  5:25       ` Jerin Jacob
2020-01-24  4:05     ` [dpdk-dev] [PATCH v5 00/11] example/l3fwd: introduce event device support pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 01/11] examples/l3fwd: add framework for event device pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 02/11] examples/l3fwd: split pipelines based on capability pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 03/11] examples/l3fwd: add event device configuration pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 04/11] examples/l3fwd: add ethdev setup based on eventdev pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 05/11] examples/l3fwd: add event port and queue setup pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 06/11] examples/l3fwd: add event eth Rx/Tx adapter setup pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 07/11] examples/l3fwd: add service core setup based on caps pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 08/11] examples/l3fwd: add event lpm main loop pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 09/11] examples/l3fwd: add event em " pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 10/11] examples/l3fwd: add graceful teardown for eventdevice pbhagavatula
2020-01-24  4:05       ` [dpdk-dev] [PATCH v5 11/11] doc: update l3fwd user guide to support eventdev pbhagavatula
2020-01-27 16:17       ` [dpdk-dev] [PATCH v5 00/11] example/l3fwd: introduce event device support Jerin Jacob

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=SN6PR11MB2558834E2E9166445AAFA0319A230@SN6PR11MB2558.namprd11.prod.outlook.com \
    --to=konstantin.ananyev@intel.com \
    --cc=akhil.goyal@nxp.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=jerinj@marvell.com \
    --cc=marko.kovacevic@intel.com \
    --cc=orika@mellanox.com \
    --cc=pbhagavatula@marvell.com \
    --cc=radu.nicolau@intel.com \
    --cc=skori@marvell.com \
    --cc=tomasz.kantecki@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.