#include "rte_eventdev.h"
#include "rte_eventdev_pmd.h"
+#include "rte_eventdev_trace.h"
#include "rte_event_eth_rx_adapter.h"
#define BATCH_SIZE 32
uint32_t rss;
int do_rss;
uint64_t ts;
- struct rte_mbuf *cb_mbufs[BATCH_SIZE];
uint16_t nb_cb;
+ uint16_t dropped;
/* 0xffff ffff if PKT_RX_RSS_HASH is set, otherwise 0 */
rss_mask = ~(((m->ol_flags & PKT_RX_RSS_HASH) != 0) - 1);
}
}
-
- nb_cb = dev_info->cb_fn ? dev_info->cb_fn(eth_dev_id, rx_queue_id,
- ETH_EVENT_BUFFER_SIZE,
- buf->count, mbufs,
- num,
- dev_info->cb_arg,
- cb_mbufs) :
- num;
- if (nb_cb < num) {
- mbufs = cb_mbufs;
- num = nb_cb;
- }
-
for (i = 0; i < num; i++) {
m = mbufs[i];
ev++;
}
+ if (dev_info->cb_fn) {
+
+ dropped = 0;
+ nb_cb = dev_info->cb_fn(eth_dev_id, rx_queue_id,
+ ETH_EVENT_BUFFER_SIZE, buf->count, ev,
+ num, dev_info->cb_arg, &dropped);
+ if (unlikely(nb_cb > num))
+ RTE_EDEV_LOG_ERR("Rx CB returned %d (> %d) events",
+ nb_cb, num);
+ else
+ num = nb_cb;
+ if (dropped)
+ rx_adapter->stats.rx_dropped += dropped;
+ }
+
buf->count += num;
}
event_eth_rx_adapter[id] = rx_adapter;
if (conf_cb == rxa_default_conf_cb)
rx_adapter->default_cb_arg = 1;
+ rte_eventdev_trace_eth_rx_adapter_create(id, dev_id, conf_cb,
+ conf_arg);
return 0;
}
rte_free(rx_adapter);
event_eth_rx_adapter[id] = NULL;
+ rte_eventdev_trace_eth_rx_adapter_free(id);
return 0;
}
rte_spinlock_unlock(&rx_adapter->rx_lock);
}
+ rte_eventdev_trace_eth_rx_adapter_queue_add(id, eth_dev_id,
+ rx_queue_id, queue_conf, ret);
if (ret)
return ret;
rxa_sw_adapter_queue_count(rx_adapter));
}
+ rte_eventdev_trace_eth_rx_adapter_queue_del(id, eth_dev_id,
+ rx_queue_id, ret);
return ret;
}
int
rte_event_eth_rx_adapter_start(uint8_t id)
{
+ rte_eventdev_trace_eth_rx_adapter_start(id);
return rxa_ctrl(id, 1);
}
int
rte_event_eth_rx_adapter_stop(uint8_t id)
{
+ rte_eventdev_trace_eth_rx_adapter_stop(id);
return rxa_ctrl(id, 0);
}