&wid, 1,
                                                      wilc_get_vif_idx(vif));
                }
-               up(&hif_drv->sem_test_key_block);
+               complete(&hif_drv->comp_test_key_block);
                break;
 
        case WPA_RX_GTK:
                                                      wilc_get_vif_idx(vif));
 
                        kfree(pu8keybuf);
-                       up(&hif_drv->sem_test_key_block);
+                       complete(&hif_drv->comp_test_key_block);
                } else if (pstrHostIFkeyAttr->action & ADDKEY) {
                        pu8keybuf = kzalloc(RX_MIC_KEY_MSG_LEN, GFP_KERNEL);
                        if (pu8keybuf == NULL) {
                                                      wilc_get_vif_idx(vif));
 
                        kfree(pu8keybuf);
-                       up(&hif_drv->sem_test_key_block);
+                       complete(&hif_drv->comp_test_key_block);
                }
 _WPARxGtk_end_case_:
                kfree(pstrHostIFkeyAttr->attr.wpa.key);
                                                      strWIDList, 2,
                                                      wilc_get_vif_idx(vif));
                        kfree(pu8keybuf);
-                       up(&hif_drv->sem_test_key_block);
+                       complete(&hif_drv->comp_test_key_block);
                } else if (pstrHostIFkeyAttr->action & ADDKEY) {
                        pu8keybuf = kmalloc(PTK_KEY_MSG_LEN, GFP_KERNEL);
                        if (!pu8keybuf) {
                                                      &wid, 1,
                                                      wilc_get_vif_idx(vif));
                        kfree(pu8keybuf);
-                       up(&hif_drv->sem_test_key_block);
+                       complete(&hif_drv->comp_test_key_block);
                }
 
 _WPAPtk_end_case_:
        result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
        if (result)
                netdev_err(vif->ndev, "Request to remove WEP key\n");
-       down(&hif_drv->sem_test_key_block);
+       wait_for_completion(&hif_drv->comp_test_key_block);
 
        return result;
 }
        result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
        if (result)
                netdev_err(vif->ndev, "Default key index\n");
-       down(&hif_drv->sem_test_key_block);
+       wait_for_completion(&hif_drv->comp_test_key_block);
 
        return result;
 }
        result = wilc_mq_send(&hif_msg_q, &msg, sizeof(struct host_if_msg));
        if (result)
                netdev_err(vif->ndev, "STA - WEP Key\n");
-       down(&hif_drv->sem_test_key_block);
+       wait_for_completion(&hif_drv->comp_test_key_block);
 
        return result;
 }
 
        if (result)
                netdev_err(vif->ndev, "AP - WEP Key\n");
-       down(&hif_drv->sem_test_key_block);
+       wait_for_completion(&hif_drv->comp_test_key_block);
 
        return result;
 }
        if (result)
                netdev_err(vif->ndev, "PTK Key\n");
 
-       down(&hif_drv->sem_test_key_block);
+       wait_for_completion(&hif_drv->comp_test_key_block);
 
        return result;
 }
        if (result)
                netdev_err(vif->ndev, "RX GTK\n");
 
-       down(&hif_drv->sem_test_key_block);
+       wait_for_completion(&hif_drv->comp_test_key_block);
 
        return result;
 }
                sema_init(&hif_sema_deinit, 1);
        }
 
-       sema_init(&hif_drv->sem_test_key_block, 0);
+       init_completion(&hif_drv->comp_test_key_block);
        init_completion(&hif_drv->comp_test_disconn_block);
        init_completion(&hif_drv->comp_get_rssi);
        init_completion(&hif_drv->comp_inactive_time);