On Mon, Dec 21, 2015 at 9:47 PM, Yuanhan Liu <yuanhan.liu at linux.intel.com> wrote:
> On Mon, Dec 21, 2015 at 08:47:28PM -0800, Rich Lane wrote: > > The queue state change callback is the one new API that needs to be > > added because > > normal NICs don't have this behavior. > > Again I'd ask, will vring_state_changed() be enough, when above issues > are resolved: vring_state_changed() will be invoked at new_device()/ > destroy_device(), and of course, ethtool change? It would be sufficient. It is not a great API though, because it requires the application to do the conversion from struct virtio_net to a DPDK port number, and from a virtqueue index to a DPDK queue id and direction. Also, the current implementation often makes this callback when the vring state has not actually changed (enabled -> enabled and disabled -> disabled). If you're asking about using vring_state_changed() _instead_ of the link status event and rte_eth_dev_socket_id(), then yes, it still works. I'd only consider that a stopgap until the real ethdev APIs are implemented. I'd suggest to add RTE_ETH_EVENT_QUEUE_STATE_CHANGE rather than create another callback registration API. Perhaps we could merge the basic PMD which I think is pretty solid and then continue the API discussion with patches to it.