X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Feventdev%2Frte_event_eth_rx_adapter.c;h=ae1e260c083151243bde3ae0fd3de08586d17682;hb=6e858b4d9244cf53505589673755ab18ac2a4a83;hp=56318b5a6f7dd37deaaf825c4e0fbb9ae29ea262;hpb=578402f2d5e81af23000e1aa7980b5383a0394be;p=dpdk.git diff --git a/lib/eventdev/rte_event_eth_rx_adapter.c b/lib/eventdev/rte_event_eth_rx_adapter.c index 56318b5a6f..ae1e260c08 100644 --- a/lib/eventdev/rte_event_eth_rx_adapter.c +++ b/lib/eventdev/rte_event_eth_rx_adapter.c @@ -777,19 +777,25 @@ rxa_flush_event_buffer(struct event_eth_rx_adapter *rx_adapter, struct eth_event_enqueue_buffer *buf, struct rte_event_eth_rx_adapter_stats *stats) { - uint16_t count = buf->last ? buf->last - buf->head : buf->count; + uint16_t count = buf->count; + uint16_t n = 0; if (!count) return 0; - uint16_t n = rte_event_enqueue_new_burst(rx_adapter->eventdev_id, - rx_adapter->event_port_id, - &buf->events[buf->head], - count); - if (n != count) - stats->rx_enq_retry++; + if (buf->last) + count = buf->last - buf->head; + + if (count) { + n = rte_event_enqueue_new_burst(rx_adapter->eventdev_id, + rx_adapter->event_port_id, + &buf->events[buf->head], + count); + if (n != count) + stats->rx_enq_retry++; - buf->head += n; + buf->head += n; + } if (buf->last && n == count) { uint16_t n1; @@ -2978,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) { @@ -3080,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) { @@ -3113,6 +3123,26 @@ rte_event_eth_rx_adapter_service_id_get(uint8_t id, uint32_t *service_id) return rx_adapter->service_inited ? 0 : -ESRCH; } +int +rte_event_eth_rx_adapter_event_port_get(uint8_t id, uint8_t *event_port_id) +{ + struct event_eth_rx_adapter *rx_adapter; + + if (rxa_memzone_lookup()) + return -ENOMEM; + + RTE_EVENT_ETH_RX_ADAPTER_ID_VALID_OR_ERR_RET(id, -EINVAL); + + rx_adapter = rxa_id_to_adapter(id); + if (rx_adapter == NULL || event_port_id == NULL) + return -EINVAL; + + if (rx_adapter->service_inited) + *event_port_id = rx_adapter->event_port_id; + + return rx_adapter->service_inited ? 0 : -ESRCH; +} + int rte_event_eth_rx_adapter_cb_register(uint8_t id, uint16_t eth_dev_id, @@ -3328,7 +3358,7 @@ handle_rxa_get_queue_conf(const char *cmd __rte_unused, token = strtok(NULL, "\0"); if (token != NULL) RTE_EDEV_LOG_ERR("Extra parameters passed to eventdev" - " telemetry command, igrnoring"); + " telemetry command, ignoring"); if (rte_event_eth_rx_adapter_queue_conf_get(rx_adapter_id, eth_dev_id, rx_queue_id, &queue_conf)) { @@ -3392,7 +3422,7 @@ handle_rxa_get_queue_stats(const char *cmd __rte_unused, token = strtok(NULL, "\0"); if (token != NULL) RTE_EDEV_LOG_ERR("Extra parameters passed to eventdev" - " telemetry command, igrnoring"); + " telemetry command, ignoring"); if (rte_event_eth_rx_adapter_queue_stats_get(rx_adapter_id, eth_dev_id, rx_queue_id, &q_stats)) { @@ -3454,7 +3484,7 @@ handle_rxa_queue_stats_reset(const char *cmd __rte_unused, token = strtok(NULL, "\0"); if (token != NULL) RTE_EDEV_LOG_ERR("Extra parameters passed to eventdev" - " telemetry command, igrnoring"); + " telemetry command, ignoring"); if (rte_event_eth_rx_adapter_queue_stats_reset(rx_adapter_id, eth_dev_id,