HI Pavan,

snipped
> Add event dev main loop based on enabled l2fwd options and eventdev
> capabilities.
> 
> Signed-off-by: Pavan Nikhilesh <pbhagavat...@marvell.com>
> ---
> +     if (rsrc->event_mode) {
> +             port_conf.rxmode.mq_mode = ETH_MQ_RX_RSS;
> +             port_conf.rx_adv_conf.rss_conf.rss_key = NULL;
> +             port_conf.rx_adv_conf.rss_conf.rss_hf = ETH_RSS_IP;
> +     }
Question, is RSS hash configured for generating flow id for Eventdev? As my 
understanding. RSS for single RX port-queue pair does not require the same. 
snipped
> +             if (is_master && timer_period > 0) {
> +                     cur_tsc = rte_rdtsc();
> +                     diff_tsc = cur_tsc - prev_tsc;
> +
> +                     /* advance the timer */
> +                     timer_tsc += diff_tsc;
> +
> +                     /* if timer has reached its timeout */
> +                     if (unlikely(timer_tsc >= timer_period)) {
> +                             print_stats(rsrc);
> +                             /* reset the timer */
> +                             timer_tsc = 0;
> +                     }
> +                     prev_tsc = cur_tsc;
> +             }
Is it possible to move the print_stats to service core, as 'CALL_MASTER' is 
enabled in remote_launch making this a potential worker?

> +
> +             /* Read packet from eventdev */
> +             if (!rte_event_dequeue_burst(event_d_id, port_id, &ev, 1, 0))
> +                     continue;
Is not this unlikely `nb_burst == 0`

> +
> +             l2fwd_event_fwd(rsrc, &ev, tx_q_id, timer_period, flags);
> +
> +             if (flags & L2FWD_EVENT_TX_ENQ) {
> +                     while (rte_event_enqueue_burst(event_d_id, port_id,
> +                                                    &ev, 1) &&
> +                                     !rsrc->force_quit)
> +                             ;
Can we place a `continue` as we are not expecting ` L2FWD_EVENT_TX_DIRECT`?
> +             }

> +
> +             if (flags & L2FWD_EVENT_TX_DIRECT) {
> +                     while
> (!rte_event_eth_tx_adapter_enqueue(event_d_id,
> +                                                             port_id,
> +                                                             &ev, 1, 0) &&
> +                                     !rsrc->force_quit)
> +                             ;
> +             }
> +     }
snipped
> +
> +     while (!rsrc->force_quit) {
> +             /* if timer is enabled */
> +             if (is_master && timer_period > 0) {
> +                     cur_tsc = rte_rdtsc();
> +                     diff_tsc = cur_tsc - prev_tsc;
> +
> +                     /* advance the timer */
> +                     timer_tsc += diff_tsc;
> +
> +                     /* if timer has reached its timeout */
> +                     if (unlikely(timer_tsc >= timer_period)) {
> +                             print_stats(rsrc);
> +                             /* reset the timer */
> +                             timer_tsc = 0;
> +                     }
> +                     prev_tsc = cur_tsc;
> +             }
Can we move `print_stats` logic to service core?

> +
> +             /* Read packet from eventdev */
> +             nb_rx = rte_event_dequeue_burst(event_d_id, port_id, ev,
> +                                             deq_len, 0);
> +             if (nb_rx == 0)
Can we use `unlikely`?
> +                     continue;
> +
> +             for (i = 0; i < nb_rx; i++) {
> +                     l2fwd_event_fwd(rsrc, &ev[i], tx_q_id, timer_period,
> +                                     flags);
> +             }
> +
> +             if (flags & L2FWD_EVENT_TX_ENQ) {
> +                     nb_tx = rte_event_enqueue_burst(event_d_id, port_id,
> +                                                     ev, nb_rx);
> +                     while (nb_tx < nb_rx && !rsrc->force_quit)
> +                             nb_tx +=
> rte_event_enqueue_burst(event_d_id,
> +                                             port_id, ev + nb_tx,
> +                                             nb_rx - nb_tx);
Can we use `continue` as we do not transmit from the same worker int his case?
> +             }
> +
snipped

Reply via email to