X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Flibrte_eventdev%2Frte_event_eth_rx_adapter.c;h=f0000d1ededc9a163b40235732d7f17437bd9430;hb=9dbe628a7ba2420d00bf8c15d066f9667092db2b;hp=380d87a138f9e86714983d868b6856836551c1b9;hpb=b41363e477ebe0dcf26183c341b8f6792a056a64;p=dpdk.git diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c index 380d87a138..f0000d1ede 100644 --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c @@ -20,6 +20,7 @@ #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 @@ -763,8 +764,8 @@ rxa_buffer_mbufs(struct rte_event_eth_rx_adapter *rx_adapter, 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); @@ -780,19 +781,6 @@ rxa_buffer_mbufs(struct rte_event_eth_rx_adapter *rx_adapter, } } - - 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]; @@ -806,6 +794,21 @@ rxa_buffer_mbufs(struct rte_event_eth_rx_adapter *rx_adapter, 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; } @@ -1996,6 +1999,8 @@ rte_event_eth_rx_adapter_create_ext(uint8_t id, uint8_t dev_id, 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; } @@ -2045,6 +2050,7 @@ rte_event_eth_rx_adapter_free(uint8_t id) rte_free(rx_adapter); event_eth_rx_adapter[id] = NULL; + rte_eventdev_trace_eth_rx_adapter_free(id); return 0; } @@ -2140,6 +2146,8 @@ rte_event_eth_rx_adapter_queue_add(uint8_t id, 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; @@ -2261,18 +2269,22 @@ unlock_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); }