@Harish, could you take a look at this please ?

-Jay


> -----Original Message-----
> From: pbhagavat...@marvell.com <pbhagavat...@marvell.com>
> Sent: Monday, December 13, 2021 2:02 PM
> To: jer...@marvell.com; Jayatheerthan, Jay <jay.jayatheert...@intel.com>
> Cc: dev@dpdk.org; Pavan Nikhilesh <pbhagavat...@marvell.com>
> Subject: [PATCH] eventdev: fix missing internal port checks
> 
> From: Pavan Nikhilesh <pbhagavat...@marvell.com>
> 
> When event delivery is through internal port, stats are mainitained
> by HW and we should avoid reading SW data structures for stats.
> Fix missing internal port checks.
> 
> Fixes: 995b150c1ae1 ("eventdev/eth_rx: add queue stats API")
> 
> Signed-off-by: Pavan Nikhilesh <pbhagavat...@marvell.com>
> ---
>  lib/eventdev/rte_event_eth_rx_adapter.c | 24 ++++++++++++++----------
>  1 file changed, 14 insertions(+), 10 deletions(-)
> 
> diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c 
> b/lib/eventdev/rte_event_eth_rx_adapter.c
> index 809416d9b7..da223aacac 100644
> --- a/lib/eventdev/rte_event_eth_rx_adapter.c
> +++ b/lib/eventdev/rte_event_eth_rx_adapter.c
> @@ -2984,15 +2984,17 @@ rte_event_eth_rx_adapter_queue_stats_get(uint8_t id,
>               return -EINVAL;
>       }
> 
> -     queue_info = &dev_info->rx_queue[rx_queue_id];
> -     event_buf = queue_info->event_buf;
> -     q_stats = queue_info->stats;
> +     if (dev_info->internal_event_port == 0) {
> +             queue_info = &dev_info->rx_queue[rx_queue_id];
> +             event_buf = queue_info->event_buf;
> +             q_stats = queue_info->stats;
> 
> -     stats->rx_event_buf_count = event_buf->count;
> -     stats->rx_event_buf_size = event_buf->events_size;
> -     stats->rx_packets = q_stats->rx_packets;
> -     stats->rx_poll_count = q_stats->rx_poll_count;
> -     stats->rx_dropped = q_stats->rx_dropped;
> +             stats->rx_event_buf_count = event_buf->count;
> +             stats->rx_event_buf_size = event_buf->events_size;
> +             stats->rx_packets = q_stats->rx_packets;
> +             stats->rx_poll_count = q_stats->rx_poll_count;
> +             stats->rx_dropped = q_stats->rx_dropped;
> +     }
> 
>       dev = &rte_eventdevs[rx_adapter->eventdev_id];
>       if (dev->dev_ops->eth_rx_adapter_queue_stats_get != NULL) {
> @@ -3086,8 +3088,10 @@ rte_event_eth_rx_adapter_queue_stats_reset(uint8_t id,
>               return -EINVAL;
>       }
> 
> -     queue_info = &dev_info->rx_queue[rx_queue_id];
> -     rxa_queue_stats_reset(queue_info);
> +     if (dev_info->internal_event_port == 0) {
> +             queue_info = &dev_info->rx_queue[rx_queue_id];
> +             rxa_queue_stats_reset(queue_info);
> +     }
> 
>       dev = &rte_eventdevs[rx_adapter->eventdev_id];
>       if (dev->dev_ops->eth_rx_adapter_queue_stats_reset != NULL) {
> --
> 2.34.0

Reply via email to