ipc: end multiprocess thread during cleanup
[dpdk.git] / lib / eventdev / rte_event_eth_rx_adapter.c
index 56318b5..ae1e260 100644 (file)
@@ -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,