Commit da8b0946 authored by Martin Kaiser's avatar Martin Kaiser Committed by Greg Kroah-Hartman

staging: r8188eu: merge _rtw_enqueue_cmd into its caller

The _rtw_enqueue_cmd function is called only by rtw_enqueue_cmd.

When _rtw_enqueue_cmd is called, the caller has already checked that the
obj parameter is not NULL. _rtw_enqueue_cmd returns _SUCCESS in any case.

We can merge the two functions and simplify the error handling.
Signed-off-by: default avatarMartin Kaiser <martin@kaiser.cx>
Tested-by: Philipp Hortmann <philipp.g.hortmann@gmail.com> # Edimax N150
Link: https://lore.kernel.org/r/20230211165045.414424-1-martin@kaiser.cxSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent eec8ccab
...@@ -28,32 +28,6 @@ void rtw_free_evt_priv(struct evt_priv *pevtpriv) ...@@ -28,32 +28,6 @@ void rtw_free_evt_priv(struct evt_priv *pevtpriv)
} }
} }
/* Calling Context:
*
* rtw_enqueue_cmd can only be called between kernel thread,
* since only spin_lock is used.
*
* ISR/Call-Back functions can't call this sub-function.
*/
static int _rtw_enqueue_cmd(struct __queue *queue, struct cmd_obj *obj)
{
unsigned long flags;
if (!obj)
goto exit;
spin_lock_irqsave(&queue->lock, flags);
list_add_tail(&obj->list, &queue->queue);
spin_unlock_irqrestore(&queue->lock, flags);
exit:
return _SUCCESS;
}
int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) int rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
{ {
init_completion(&pcmdpriv->enqueue_cmd); init_completion(&pcmdpriv->enqueue_cmd);
...@@ -125,28 +99,25 @@ static int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) ...@@ -125,28 +99,25 @@ static int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
{ {
int res = _FAIL; unsigned long flags;
struct adapter *padapter = pcmdpriv->padapter; struct adapter *padapter = pcmdpriv->padapter;
if (!cmd_obj) if (!cmd_obj)
goto exit; return _FAIL;
cmd_obj->padapter = padapter; cmd_obj->padapter = padapter;
res = rtw_cmd_filter(pcmdpriv, cmd_obj); if (rtw_cmd_filter(pcmdpriv, cmd_obj) == _FAIL) {
if (res == _FAIL) {
rtw_free_cmd_obj(cmd_obj); rtw_free_cmd_obj(cmd_obj);
goto exit; return _FAIL;
} }
res = _rtw_enqueue_cmd(&pcmdpriv->cmd_queue, cmd_obj); spin_lock_irqsave(&pcmdpriv->cmd_queue.lock, flags);
list_add_tail(&cmd_obj->list, &pcmdpriv->cmd_queue.queue);
if (res == _SUCCESS) spin_unlock_irqrestore(&pcmdpriv->cmd_queue.lock, flags);
complete(&pcmdpriv->enqueue_cmd);
exit: complete(&pcmdpriv->enqueue_cmd);
return _SUCCESS;
return res;
} }
struct cmd_obj *rtw_dequeue_cmd(struct cmd_priv *pcmdpriv) struct cmd_obj *rtw_dequeue_cmd(struct cmd_priv *pcmdpriv)
......
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