mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 13:59:45 -04:00
staging: rtl8188eu: simplify rtw_cmd_thread's main loop
In rtw_cmd_thread's main loop, we wait until there's a command in the queue. To skip this wait statement in subsequent iterations, the driver uses a label and goto instead of the actual loop. We only get back to the initial wait if the queue is empty when we read it. Basically, all we want to do is check if there's a command in the queue. If yes, we process it. If not, we wait until someone enqueues a command. Signed-off-by: Martin Kaiser <martin@kaiser.cx> Link: https://lore.kernel.org/r/20210408195601.4762-12-martin@kaiser.cx Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
92d056d6cb
commit
e28a09fc0b
@@ -188,10 +188,6 @@ int rtw_cmd_thread(void *context)
|
||||
("start r871x %s !!!!\n", __func__));
|
||||
|
||||
while (1) {
|
||||
if (wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp))
|
||||
break;
|
||||
|
||||
_next:
|
||||
if (padapter->bDriverStopped ||
|
||||
padapter->bSurpriseRemoved) {
|
||||
DBG_88E("%s: DriverStopped(%d) SurpriseRemoved(%d) break at line %d\n",
|
||||
@@ -201,8 +197,13 @@ int rtw_cmd_thread(void *context)
|
||||
}
|
||||
|
||||
pcmd = rtw_dequeue_cmd(&pcmdpriv->cmd_queue);
|
||||
if (!pcmd)
|
||||
if (!pcmd) {
|
||||
/* The queue is empty. Wait until someone enqueues a command. */
|
||||
if (wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp))
|
||||
break;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (rtw_cmd_filter(pcmdpriv, pcmd) == _FAIL) {
|
||||
pcmd->res = H2C_DROPPED;
|
||||
@@ -239,8 +240,6 @@ int rtw_cmd_thread(void *context)
|
||||
|
||||
if (signal_pending(current))
|
||||
flush_signals(current);
|
||||
|
||||
goto _next;
|
||||
}
|
||||
pcmdpriv->cmdthd_running = false;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user