X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fdevices%2Ftap%2Ftap.c;h=8005b347391af1a9e4b8b06eb133b258d2031377;hb=9e6356962a0cbb84f7ea9056b954d65aaa231a61;hp=de6107a589b34fb682a1070772f242d4a9c35cb3;hpb=829ee5399504478901be245914333fdf704131c2;p=vpp.git diff --git a/src/vnet/devices/tap/tap.c b/src/vnet/devices/tap/tap.c index de6107a589b..8005b347391 100644 --- a/src/vnet/devices/tap/tap.c +++ b/src/vnet/devices/tap/tap.c @@ -130,8 +130,6 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args) vif->tap_fd = -1; vif->id = args->id; - hash_set (tm->dev_instance_by_interface_id, vif->id, vif->dev_instance); - if ((vif->fd = open ("/dev/vhost-net", O_RDWR | O_NONBLOCK)) < 0) { args->rv = VNET_API_ERROR_SYSCALL_ERROR_1; @@ -383,6 +381,8 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args) goto error; } + hash_set (tm->dev_instance_by_interface_id, vif->id, vif->dev_instance); + sw = vnet_get_hw_sw_interface (vnm, vif->hw_if_index); vif->sw_if_index = sw->sw_if_index; args->sw_if_index = vif->sw_if_index; @@ -443,6 +443,7 @@ tap_delete_if (vlib_main_t * vm, u32 sw_if_index) /* 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); + vnet_hw_interface_unassign_rx_thread (vnm, vif->hw_if_index, 0); ethernet_delete_interface (vnm, vif->hw_if_index); vif->hw_if_index = ~0;