[dpdk-dev] [PATCH 32/39] eventdev: add routine to launch eventmode workers
Carrillo, Erik G
erik.g.carrillo at intel.com
Mon Jun 10 16:46:10 CEST 2019
Hi Anoob,
One other observation in-line:
> -----Original Message-----
> From: Anoob Joseph <anoobj at marvell.com>
> Sent: Monday, June 3, 2019 12:33 PM
> To: Jerin Jacob <jerinj at marvell.com>; Rao, Nikhil <nikhil.rao at intel.com>;
> Carrillo, Erik G <erik.g.carrillo at intel.com>; Gujjar, Abhinandan S
> <abhinandan.gujjar at intel.com>; Richardson, Bruce
> <bruce.richardson at intel.com>; De Lara Guarch, Pablo
> <pablo.de.lara.guarch at intel.com>
> Cc: Anoob Joseph <anoobj at marvell.com>; Narayana Prasad
> <pathreya at marvell.com>; dev at dpdk.org; Lukasz Bartosik
> <lbartosik at marvell.com>; Pavan Nikhilesh <pbhagavatula at marvell.com>;
> Hemant Agrawal <hemant.agrawal at nxp.com>; Nipun Gupta
> <nipun.gupta at nxp.com>; Van Haaren, Harry
> <harry.van.haaren at intel.com>; Mattias Rönnblom
> <mattias.ronnblom at ericsson.com>; Ma, Liang J <liang.j.ma at intel.com>
> Subject: [PATCH 32/39] eventdev: add routine to launch eventmode workers
>
> With eventmode, workers could be drafted differently according to the
> capabilities of the underlying event device. The added function would
> receive an array of such workers and probes the eventmode properties to
> choose the worker.
>
> Signed-off-by: Anoob Joseph <anoobj at marvell.com>
> Signed-off-by: Lukasz Bartosik <lbartosik at marvell.com>
> ---
<...Snipped...>
> +
> +void __rte_experimental
> +rte_eventmode_helper_launch_worker(struct
> rte_eventmode_helper_conf *mode_conf,
> + struct rte_eventmode_helper_app_worker_params
> *app_wrkr,
> + uint8_t nb_wrkr_param)
> +{
> + struct rte_eventmode_helper_app_worker_params *match_wrkr;
> + uint32_t lcore_id;
> + struct eventmode_conf *em_conf;
> +
> + if (mode_conf == NULL) {
> + RTE_EM_HLPR_LOG_ERR("Invalid conf");
> + return;
> + }
> +
> + if (mode_conf->mode_params == NULL) {
> + RTE_EM_HLPR_LOG_ERR("Invalid mode params");
> + return;
> + }
> +
> + /* Get eventmode conf */
> + em_conf = (struct eventmode_conf *)(mode_conf->mode_params);
> +
> + /* Get core ID */
> + lcore_id = rte_lcore_id();
> +
> + /* TODO check capability for rx core */
> +
> + /* Check if this is rx core */
> + if (em_conf->eth_core_mask & (1 << lcore_id)) {
In the above, eth_core_mask is a uint32_t, but RTE_MAX_LCORE=128 in the common config.
> + rte_eventmode_helper_start_worker_eth_core(em_conf,
> lcore_id);
> + return;
> + }
> +
> + if (app_wrkr == NULL || nb_wrkr_param == 0) {
> + RTE_EM_HLPR_LOG_ERR("Invalid args");
> + return;
> + }
> +
> + /*
> + * This is a regular worker thread. The application would be
> + * registering multiple workers with various capabilities. The
> + * worker to be run will be selected by the capabilities of the
> + * event device configured.
> + */
> +
> + /* Get the first matching worker for the event device */
> + match_wrkr = rte_eventmode_helper_find_worker(lcore_id,
> + em_conf,
> + app_wrkr,
> + nb_wrkr_param);
> +
> + if (match_wrkr == NULL) {
> + RTE_EM_HLPR_LOG_ERR(
> + "No matching worker registered for lcore %d",
> lcore_id);
> + goto clean_and_exit;
> + }
> +
> + /* Verify sanity of the matched worker */
> + if (rte_eventmode_helper_verify_match_worker(match_wrkr) != 1)
> {
> + RTE_EM_HLPR_LOG_ERR("Error in validating the matched
> worker");
> + goto clean_and_exit;
> + }
> +
> + /* Launch the worker thread */
> + match_wrkr->worker_thread(mode_conf);
> +
> +clean_and_exit:
> +
> + /* Flag eth_cores to stop, if started */
> + rte_eventmode_helper_stop_worker_eth_core();
> +}
<...Snipped...>
Regards,
Erik
More information about the dev
mailing list