[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1466660512-14935-1-git-send-email-binoy.jayan@linaro.org>
Date: Thu, 23 Jun 2016 11:11:49 +0530
From: Binoy Jayan <binoy.jayan@...aro.org>
To: Greg Kroah-Hartman <gregkh@...uxfoundation.org>
Cc: Johnny Kim <johnny.kim@...el.com>,
Austin Shin <austin.shin@...el.com>,
Chris Park <chris.park@...el.com>,
Tony Cho <tony.cho@...el.com>, Glen Lee <glen.lee@...el.com>,
Leo Kim <leo.kim@...el.com>, Arnd Bergmann <arnd@...db.de>,
linux-wireless@...r.kernel.org, devel@...verdev.osuosl.org,
linux-kernel@...r.kernel.org, Binoy Jayan <binoy.jayan@...aro.org>
Subject: [PATCH v4 0/3] *** staging: wilc1000: Replace semaphores ***
Hi,
Thank you Arnd for patiently reviewing this patch series multiple times and
apologies to everyone for spamming you inboxes with a patch (v3) that does
not even build. It was due to an uncommited change in my git repo before
generating the patch. It is corrected in v4.
This patchset [v4] is part of the second patch series for 'wilc1000'.
The original patch series consisted 7 patches of which only the first 5
are good. The patch 6 and 7 are being worked on in this series
in a different way.
This patch series removes the semaphore 'sem' in 'wilc1000' and also
restructures the implementation of kthread / message_queue logic with
a create_singlethread_workqueue() / queue_work() setup.
These are part of a bigger effort to eliminate all semaphores
from the linux kernel.
They build correctly (individually and as a whole).
NB: The changes are untested
Discussion carried forward from previous patchset [v2]
Rework on the review comments by Arnd w.r.t. v1
struct message_queue can be removed since
- after the workqueue conversion, mq->sem is no longer needed
- recv_count is not needed, it just counts the number of entries in the list
- struct wilc' pointer can be retrieved from the host_if_msg, (vif->wilc)
- the message list is not needed because we always look only at the
first entry, except in wilc_mq_destroy(), but it would be better
to just call destroy_workqueue(), which also drains the remaining work.
- the exiting flag is also handled by destroy_workqueue()
- with everything else gone, the spinlock is also not needed any more.
Do 'kfree' only at the end of 'host_if_work'
wilc_initialized is always '1' so the conditional 'wilc_mq_send'
in 'hostIFthread' can be removed.
A connect command (HOST_IF_MSG_CONNECT) does not complete while scan is ongoing.
So, the special handling of this command needs to be preserved.
Use create_singlethread_workqueue() instead of alloc_workqueue(), so that
we stay closer to the current behavior by having the thread run only
on one CPU at a time and not having a 'dedicated' thread for each.
Split the patch to seperate interface changes to 'wilc_mq_send'
No easy way found to split the patch to change the interface
'wilc_mq_send' and to 'wilc_enqueue_cmd' as the parameters
'mq' 'send_buf' and 'send_buf_size' itself are part of the message
queue implementation.
New changes in v3
Rework on the review comments by Arnd w.r.t. v2
- Remove forward declaration for wilc_enqueue_cmd
- Change the interface 'wilc_mq_send' in a different patch
- Avoid change in indentation in host_if_work and move it to
a different patch
Cannot remove forward declaration of local function 'host_if_work'
since there is a mutual dependency.
New changes in v4
Remove unused identifier 'hif_msg_q' which causes the build error.
Binoy
Binoy Jayan (3):
staging: wilc1000: message_queue: Move code to host interface
staging: wilc1000: Replace kthread with workqueue for host interface
staging: wilc1000: Change interface wilc_mq_send to wilc_enqueue_cmd
drivers/staging/wilc1000/Makefile | 1 -
drivers/staging/wilc1000/TODO | 5 +
drivers/staging/wilc1000/host_interface.c | 396 +++++++++++++++---------------
drivers/staging/wilc1000/wilc_msgqueue.c | 144 -----------
drivers/staging/wilc1000/wilc_msgqueue.h | 28 ---
5 files changed, 204 insertions(+), 370 deletions(-)
delete mode 100644 drivers/staging/wilc1000/wilc_msgqueue.c
delete mode 100644 drivers/staging/wilc1000/wilc_msgqueue.h
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project
Powered by blists - more mailing lists