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;
struct rte_mbuf *mbufs[BATCH_SIZE];
uint16_t n;
uint32_t nb_rx = 0;
+ uint32_t nb_flushed = 0;
if (rxq_empty)
*rxq_empty = 0;
*/
while (rxa_pkt_buf_available(buf)) {
if (buf->count >= BATCH_SIZE)
- rxa_flush_event_buffer(rx_adapter, buf, stats);
+ nb_flushed +=
+ rxa_flush_event_buffer(rx_adapter, buf, stats);
stats->rx_poll_count++;
n = rte_eth_rx_burst(port_id, queue_id, mbufs, BATCH_SIZE);
}
if (buf->count > 0)
- rxa_flush_event_buffer(rx_adapter, buf, stats);
+ nb_flushed += rxa_flush_event_buffer(rx_adapter, buf, stats);
stats->rx_packets += nb_rx;
+ if (nb_flushed == 0)
+ rte_event_maintain(rx_adapter->eventdev_id,
+ rx_adapter->event_port_id, 0);
return nb_rx;
}
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) {
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) {
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,
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)) {
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)) {
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,