Commit 09a8ea34 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Greg Kroah-Hartman
Browse files

staging: rtl8723bs: change semaphores to completions



This driver uses many semaphores, most of them are equivalent to
completions. The other copies of this driver got moved over to
completions a while ago, so do the same here.

In this usage scenario, the two are equivalent, so the behavior
should not change.

Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Reviewed-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5e8f6161
Loading
Loading
Loading
Loading
+9 −11
Original line number Diff line number Diff line
@@ -166,10 +166,8 @@ sint _rtw_init_cmd_priv(struct cmd_priv *pcmdpriv)
{
	sint res = _SUCCESS;

	sema_init(&(pcmdpriv->cmd_queue_sema), 0);
	/* sema_init(&(pcmdpriv->cmd_done_sema), 0); */
	sema_init(&(pcmdpriv->terminate_cmdthread_sema), 0);

	init_completion(&pcmdpriv->cmd_queue_comp);
	init_completion(&pcmdpriv->terminate_cmdthread_comp);

	_rtw_init_queue(&(pcmdpriv->cmd_queue));

@@ -369,7 +367,7 @@ u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj)
	res = _rtw_enqueue_cmd(&pcmdpriv->cmd_queue, cmd_obj);

	if (res == _SUCCESS)
		up(&pcmdpriv->cmd_queue_sema);
		complete(&pcmdpriv->cmd_queue_comp);

exit:
	return res;
@@ -410,8 +408,8 @@ void rtw_stop_cmd_thread(struct adapter *adapter)
		atomic_read(&(adapter->cmdpriv.cmdthd_running)) == true &&
		adapter->cmdpriv.stop_req == 0) {
		adapter->cmdpriv.stop_req = 1;
		up(&adapter->cmdpriv.cmd_queue_sema);
		down(&adapter->cmdpriv.terminate_cmdthread_sema);
		complete(&adapter->cmdpriv.cmd_queue_comp);
		wait_for_completion(&adapter->cmdpriv.terminate_cmdthread_comp);
	}
}

@@ -435,13 +433,13 @@ int rtw_cmd_thread(void *context)

	pcmdpriv->stop_req = 0;
	atomic_set(&(pcmdpriv->cmdthd_running), true);
	up(&pcmdpriv->terminate_cmdthread_sema);
	complete(&pcmdpriv->terminate_cmdthread_comp);

	RT_TRACE(_module_rtl871x_cmd_c_, _drv_info_, ("start r871x rtw_cmd_thread !!!!\n"));

	while (1) {
		if (down_interruptible(&pcmdpriv->cmd_queue_sema)) {
			DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" down_interruptible(&pcmdpriv->cmd_queue_sema) return != 0, break\n", FUNC_ADPT_ARG(padapter));
		if (wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp)) {
			DBG_871X_LEVEL(_drv_always_, FUNC_ADPT_FMT" wait_for_completion_interruptible(&pcmdpriv->cmd_queue_comp) return != 0, break\n", FUNC_ADPT_ARG(padapter));
			break;
		}

@@ -581,7 +579,7 @@ post_process:
		rtw_free_cmd_obj(pcmd);
	} while (1);

	up(&pcmdpriv->terminate_cmdthread_sema);
	complete(&pcmdpriv->terminate_cmdthread_comp);
	atomic_set(&(pcmdpriv->cmdthd_running), false);

	thread_exit();
+0 −2
Original line number Diff line number Diff line
@@ -2373,8 +2373,6 @@ sint rtw_set_key(struct adapter *adapter, struct security_priv *psecuritypriv, s

		INIT_LIST_HEAD(&pcmd->list);

		/* sema_init(&(pcmd->cmd_sem), 0); */

		res = rtw_enqueue_cmd(pcmdpriv, pcmd);
	} else{
		setkey_hdl(adapter, (u8 *)psetkeyparm);
+2 −2
Original line number Diff line number Diff line
@@ -745,10 +745,10 @@ void cpwm_int_hdl(

	if (pwrpriv->cpwm >= PS_STATE_S2) {
		if (pwrpriv->alives & CMD_ALIVE)
			up(&padapter->cmdpriv.cmd_queue_sema);
			complete(&padapter->cmdpriv.cmd_queue_comp);

		if (pwrpriv->alives & XMIT_ALIVE)
			up(&padapter->xmitpriv.xmit_sema);
			complete(&padapter->xmitpriv.xmit_comp);
	}

	up(&pwrpriv->lock);
+4 −4
Original line number Diff line number Diff line
@@ -45,8 +45,8 @@ s32 _rtw_init_xmit_priv(struct xmit_priv *pxmitpriv, struct adapter *padapter)

	spin_lock_init(&pxmitpriv->lock);
	spin_lock_init(&pxmitpriv->lock_sctx);
	sema_init(&pxmitpriv->xmit_sema, 0);
	sema_init(&pxmitpriv->terminate_xmitthread_sema, 0);
	init_completion(&pxmitpriv->xmit_comp);
	init_completion(&pxmitpriv->terminate_xmitthread_comp);

	/*
	Please insert all the queue initializaiton using _rtw_init_queue below
@@ -2879,7 +2879,7 @@ void enqueue_pending_xmitbuf(
	list_add_tail(&pxmitbuf->list, get_list_head(pqueue));
	spin_unlock_bh(&pqueue->lock);

	up(&(pri_adapter->xmitpriv.xmit_sema));
	complete(&(pri_adapter->xmitpriv.xmit_comp));
}

void enqueue_pending_xmitbuf_to_head(
@@ -2998,7 +2998,7 @@ int rtw_xmit_thread(void *context)
		flush_signals_thread();
	} while (_SUCCESS == err);

	up(&padapter->xmitpriv.terminate_xmitthread_sema);
	complete(&padapter->xmitpriv.terminate_xmitthread_comp);

	thread_exit();
}
+2 −2
Original line number Diff line number Diff line
@@ -4502,8 +4502,8 @@ void rtl8723b_stop_thread(struct adapter *padapter)

	/*  stop xmit_buf_thread */
	if (xmitpriv->SdioXmitThread) {
		up(&xmitpriv->SdioXmitSema);
		down(&xmitpriv->SdioXmitTerminateSema);
		complete(&xmitpriv->SdioXmitStart);
		wait_for_completion(&xmitpriv->SdioXmitTerminate);
		xmitpriv->SdioXmitThread = NULL;
	}
#endif
Loading