static u8 P2P_LISTEN_STATE;
 static struct task_struct *hif_thread_handler;
 static struct message_queue hif_msg_q;
-static struct semaphore hif_sema_thread;
+static struct completion hif_thread_comp;
 static struct semaphore hif_sema_driver;
 static struct completion hif_wait_response;
 static struct mutex hif_deinit_lock;
                }
        }
 
-       up(&hif_sema_thread);
+       complete(&hif_thread_comp);
        return 0;
 }
 
        wilc_optaining_ip = false;
 
        if (clients_count == 0) {
-               sema_init(&hif_sema_thread, 0);
+               init_completion(&hif_thread_comp);
                sema_init(&hif_sema_driver, 0);
                mutex_init(&hif_deinit_lock);
        }
                if (result != 0)
                        netdev_err(vif->ndev, "deinit : Error(%d)\n", result);
 
-               down(&hif_sema_thread);
+               wait_for_completion(&hif_thread_comp);
 
                wilc_mq_destroy(&hif_msg_q);
        }