}
        }
 
-       up(&hif_drv->sem_test_disconn_block);
+       complete(&hif_drv->comp_test_disconn_block);
 }
 
 void wilc_resolve_disconnect_aberration(struct wilc_vif *vif)
        if (result)
                netdev_err(vif->ndev, "Failed to send message: disconnect\n");
 
-       down(&hif_drv->sem_test_disconn_block);
+       wait_for_completion(&hif_drv->comp_test_disconn_block);
 
        return result;
 }
        }
 
        sema_init(&hif_drv->sem_test_key_block, 0);
-       sema_init(&hif_drv->sem_test_disconn_block, 0);
+       init_completion(&hif_drv->comp_test_disconn_block);
        init_completion(&hif_drv->comp_get_rssi);
        init_completion(&hif_drv->comp_inactive_time);
 
 
 
        struct mutex cfg_values_lock;
        struct semaphore sem_test_key_block;
-       struct semaphore sem_test_disconn_block;
+       struct completion comp_test_disconn_block;
        struct completion comp_get_rssi;
        struct completion comp_inactive_time;