|
@@ -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);
|