else
host_if_name = (char *) args->host_if_name;
- fcntl (tfd, F_SETFL, O_NONBLOCK);
+ if (fcntl (tfd, F_SETFL, O_NONBLOCK) < 0)
+ {
+ err = clib_error_return_unix (0, "fcntl(tfd, F_SETFL, O_NONBLOCK)");
+ tap_log_err (vif, "set nonblocking: %U", format_clib_error, err);
+ goto error;
+ }
tap_log_dbg (vif, "TUNSETVNETHDRSZ: fd %d vnet_hdr_sz %u", tfd, hdrsz);
_IOCTL (tfd, TUNSETVNETHDRSZ, &hdrsz);
if (args->tap_flags & TAP_FLAG_GSO)
{
hw->flags |= VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO;
- vnm->interface_main.gso_interface_count++;
}
vnet_hw_interface_set_input_node (vnm, vif->hw_if_index,
virtio_input_node.index);
if (vif->type != VIRTIO_IF_TYPE_TAP)
return VNET_API_ERROR_INVALID_INTERFACE;
- /* decrement if this was a GSO interface */
- if (hw->flags & VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO)
- vnm->interface_main.gso_interface_count--;
-
/* bring down the interface */
vnet_hw_interface_set_flags (vnm, vif->hw_if_index, 0);
vnet_sw_interface_set_flags (vnm, vif->sw_if_index, 0);
{
if ((hw->flags & VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO) == 0)
{
- vnm->interface_main.gso_interface_count++;
hw->flags |= VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO;
}
}
{
if ((hw->flags & VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO) != 0)
{
- vnm->interface_main.gso_interface_count--;
hw->flags &= ~VNET_HW_INTERFACE_FLAG_SUPPORTS_GSO;
}
}