diff options
Diffstat (limited to 'drivers/staging/rtl8712/rtl8712_cmd.c')
-rw-r--r-- | drivers/staging/rtl8712/rtl8712_cmd.c | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/drivers/staging/rtl8712/rtl8712_cmd.c b/drivers/staging/rtl8712/rtl8712_cmd.c index 3c88994fdfcd..9c8e0c50a804 100644 --- a/drivers/staging/rtl8712/rtl8712_cmd.c +++ b/drivers/staging/rtl8712/rtl8712_cmd.c @@ -321,10 +321,13 @@ int r8712_cmd_thread(void *context) void (*pcmd_callback)(struct _adapter *dev, struct cmd_obj *pcmd); struct _adapter *padapter = context; struct cmd_priv *pcmdpriv = &(padapter->cmdpriv); + struct completion *cmd_queue_comp = + &pcmdpriv->cmd_queue_comp; + struct mutex *pwctrl_lock = &padapter->pwrctrlpriv.mutex_lock; allow_signal(SIGTERM); while (1) { - if (wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp)) + if (wait_for_completion_interruptible(cmd_queue_comp)) break; if (padapter->bDriverStopped || padapter->bSurpriseRemoved) break; @@ -343,6 +346,7 @@ _next: if (pcmd) { /* if pcmd != NULL, cmd will be handled by f/w */ struct dvobj_priv *pdvobj = &padapter->dvobjpriv; u8 blnPending = 0; + u16 cmdcode = pcmd->cmdcode; pcmdpriv->cmd_issued_cnt++; cmdsz = round_up(pcmd->cmdsz, 8); @@ -387,20 +391,18 @@ _next: r8712_write_mem(padapter, RTL8712_DMA_H2CCMD, wr_sz, (u8 *)pdesc); pcmdpriv->cmd_seq++; - if (pcmd->cmdcode == GEN_CMD_CODE(_CreateBss)) { + if (cmdcode == GEN_CMD_CODE(_CreateBss)) { pcmd->res = H2C_SUCCESS; - pcmd_callback = cmd_callback[pcmd-> - cmdcode].callback; + pcmd_callback = cmd_callback[cmdcode].callback; if (pcmd_callback) pcmd_callback(padapter, pcmd); continue; } - if (pcmd->cmdcode == GEN_CMD_CODE(_SetPwrMode)) { + if (cmdcode == GEN_CMD_CODE(_SetPwrMode)) { if (padapter->pwrctrlpriv.bSleep) { - mutex_lock(&padapter-> - pwrctrlpriv.mutex_lock); + mutex_lock(pwctrl_lock); r8712_set_rpwm(padapter, PS_STATE_S2); - mutex_unlock(&padapter->pwrctrlpriv.mutex_lock); + mutex_unlock(pwctrl_lock); } } r8712_free_cmd_obj(pcmd); |