vui->vrings[q].callfd_idx = ~0;
}
- if (!(msg.u64 & 0x100))
+ if (!(msg.u64 & VHOST_USER_VRING_NOFD_MASK))
{
if (number_of_fds != 1)
{
vui->vrings[q].kickfd_idx = ~0;
}
- if (!(msg.u64 & 0x100))
+ if (!(msg.u64 & VHOST_USER_VRING_NOFD_MASK))
{
if (number_of_fds != 1)
{
if (vui->vrings[q].errfd != -1)
close (vui->vrings[q].errfd);
- if (!(msg.u64 & 0x100))
+ if (!(msg.u64 & VHOST_USER_VRING_NOFD_MASK))
{
if (number_of_fds != 1)
goto close_socket;
if ((mode == VNET_HW_INTERFACE_RX_MODE_INTERRUPT) ||
(mode == VNET_HW_INTERFACE_RX_MODE_ADAPTIVE))
{
+ if (txvq->kickfd_idx == ~0)
+ {
+ // We cannot support interrupt mode if the driver opts out
+ return clib_error_return (0, "Driver does not support interrupt");
+ }
if (txvq->mode == VNET_HW_INTERFACE_RX_MODE_POLLING)
{
vum->ifq_count++;