static struct message_queue hif_msg_q;
 static struct semaphore hif_sema_thread;
 static struct semaphore hif_sema_driver;
-static struct semaphore hif_sema_wait_response;
+static struct completion hif_wait_response;
 static struct semaphore hif_sema_deinit;
 static struct timer_list periodic_rssi;
 
                netdev_err(vif->ndev, "Failed to get mac address\n");
                result = -EFAULT;
        }
-       up(&hif_sema_wait_response);
+       complete(&hif_wait_response);
 
        return result;
 }
                wilc_enable_tcp_ack_filter(false);
 
        if (pstrStatistics != &vif->wilc->dummy_statistics)
-               up(&hif_sema_wait_response);
+               complete(&hif_wait_response);
        return 0;
 }
 
 ERRORHANDLER:
        kfree(wid.val);
 
-       up(&hif_sema_wait_response);
+       complete(&hif_wait_response);
 }
 
 static void Handle_DelStation(struct wilc_vif *vif,
        if (ret)
                netdev_err(vif->ndev, "Failed to get TX PWR\n");
 
-       up(&hif_sema_wait_response);
+       complete(&hif_wait_response);
 }
 
 static int hostIFthread(void *pvArg)
                return -EFAULT;
        }
 
-       down(&hif_sema_wait_response);
+       wait_for_completion(&hif_wait_response);
        return result;
 }
 
        }
 
        if (stats != &vif->wilc->dummy_statistics)
-               down(&hif_sema_wait_response);
+               wait_for_completion(&hif_wait_response);
        return result;
 }
 
 
        scan_while_connected = false;
 
-       sema_init(&hif_sema_wait_response, 0);
+       init_completion(&hif_wait_response);
 
        hif_drv  = kzalloc(sizeof(struct host_if_drv), GFP_KERNEL);
        if (!hif_drv) {
        if (result)
                netdev_err(vif->ndev, "wilc_mq_send fail\n");
 
-       down(&hif_sema_wait_response);
+       wait_for_completion(&hif_wait_response);
 
        return result;
 }
        if (ret)
                netdev_err(vif->ndev, "Failed to get TX PWR\n");
 
-       down(&hif_sema_wait_response);
+       wait_for_completion(&hif_wait_response);
        *tx_power = msg.body.tx_power.tx_pwr;
 
        return ret;