Commit 04dd9a42 authored by Chaehyun Lim's avatar Chaehyun Lim Committed by Greg Kroah-Hartman

staging: wilc1000: use completion instead of struct semaphore hif_sema_thread

struct semaphore hif_sema_thread is used to signal completion of host
interface thread. This patch replaces struct semaphore hif_sema_thread
with struct completion hif_thread_comp. It is better to use completion
than semaphore for this case.
Signed-off-by: default avatarChaehyun Lim <chaehyun.lim@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 85d83cd8
...@@ -231,7 +231,7 @@ bool wilc_optaining_ip; ...@@ -231,7 +231,7 @@ bool wilc_optaining_ip;
static u8 P2P_LISTEN_STATE; static u8 P2P_LISTEN_STATE;
static struct task_struct *hif_thread_handler; static struct task_struct *hif_thread_handler;
static struct message_queue hif_msg_q; 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 semaphore hif_sema_driver;
static struct completion hif_wait_response; static struct completion hif_wait_response;
static struct mutex hif_deinit_lock; static struct mutex hif_deinit_lock;
...@@ -2668,7 +2668,7 @@ static int hostIFthread(void *pvArg) ...@@ -2668,7 +2668,7 @@ static int hostIFthread(void *pvArg)
} }
} }
up(&hif_sema_thread); complete(&hif_thread_comp);
return 0; return 0;
} }
...@@ -3400,7 +3400,7 @@ int wilc_init(struct net_device *dev, struct host_if_drv **hif_drv_handler) ...@@ -3400,7 +3400,7 @@ int wilc_init(struct net_device *dev, struct host_if_drv **hif_drv_handler)
wilc_optaining_ip = false; wilc_optaining_ip = false;
if (clients_count == 0) { if (clients_count == 0) {
sema_init(&hif_sema_thread, 0); init_completion(&hif_thread_comp);
sema_init(&hif_sema_driver, 0); sema_init(&hif_sema_driver, 0);
mutex_init(&hif_deinit_lock); mutex_init(&hif_deinit_lock);
} }
...@@ -3503,7 +3503,7 @@ int wilc_deinit(struct wilc_vif *vif) ...@@ -3503,7 +3503,7 @@ int wilc_deinit(struct wilc_vif *vif)
if (result != 0) if (result != 0)
netdev_err(vif->ndev, "deinit : Error(%d)\n", result); 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); wilc_mq_destroy(&hif_msg_q);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment