public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Binoy Jayan <binoy.jayan@linaro.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Arnd Bergmann <arnd@arndb.de>, Johnny Kim <johnny.kim@atmel.com>,
	Austin Shin <austin.shin@atmel.com>,
	Chris Park <chris.park@atmel.com>, Tony Cho <tony.cho@atmel.com>,
	Glen Lee <glen.lee@atmel.com>, Leo Kim <leo.kim@atmel.com>,
	devel@driverdev.osuosl.org, linux-wireless@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Binoy Jayan <binoy.jayan@linaro.org>
Subject: [PATCH 2/7] staging: wilc1000: Replace semaphore txq_add_to_head_cs with mutex
Date: Mon, 13 Jun 2016 16:07:34 +0530	[thread overview]
Message-ID: <1465814259-3009-3-git-send-email-binoy.jayan@linaro.org> (raw)
In-Reply-To: <1465814259-3009-1-git-send-email-binoy.jayan@linaro.org>

The semaphore 'txq_add_to_head_cs' is a simple mutex, so it should be
written as one. Semaphores are going away in the future. Also, removing
the timeout scenario as the error handling code does not propagate the
timeout properly.

Signed-off-by: Binoy Jayan <binoy.jayan@linaro.org>
---
 drivers/staging/wilc1000/linux_wlan.c         |  4 ++--
 drivers/staging/wilc1000/wilc_wfi_netdevice.h |  3 ++-
 drivers/staging/wilc1000/wilc_wlan.c          | 11 ++++-------
 3 files changed, 8 insertions(+), 10 deletions(-)

diff --git a/drivers/staging/wilc1000/linux_wlan.c b/drivers/staging/wilc1000/linux_wlan.c
index 90f906d..a933551 100644
--- a/drivers/staging/wilc1000/linux_wlan.c
+++ b/drivers/staging/wilc1000/linux_wlan.c
@@ -20,7 +20,7 @@
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/skbuff.h>
-
+#include <linux/mutex.h>
 #include <linux/semaphore.h>
 #include <linux/completion.h>
 
@@ -679,7 +679,7 @@ static int wlan_init_locks(struct net_device *dev)
 	mutex_init(&wl->rxq_cs);
 
 	spin_lock_init(&wl->txq_spinlock);
-	sema_init(&wl->txq_add_to_head_cs, 1);
+	mutex_init(&wl->txq_add_to_head_cs);
 
 	init_completion(&wl->txq_event);
 
diff --git a/drivers/staging/wilc1000/wilc_wfi_netdevice.h b/drivers/staging/wilc1000/wilc_wfi_netdevice.h
index 12d7c7b..239cd43 100644
--- a/drivers/staging/wilc1000/wilc_wfi_netdevice.h
+++ b/drivers/staging/wilc1000/wilc_wfi_netdevice.h
@@ -43,6 +43,7 @@
 #include "wilc_wlan.h"
 #include <linux/wireless.h>
 #include <linux/completion.h>
+#include <linux/mutex.h>
 
 #define FLOW_CONTROL_LOWER_THRESHOLD	128
 #define FLOW_CONTROL_UPPER_THRESHOLD	256
@@ -171,7 +172,7 @@ struct wilc {
 	struct wilc_vif *vif[NUM_CONCURRENT_IFC];
 	u8 open_ifcs;
 
-	struct semaphore txq_add_to_head_cs;
+	struct mutex txq_add_to_head_cs;
 	spinlock_t txq_spinlock;
 
 	struct mutex rxq_cs;
diff --git a/drivers/staging/wilc1000/wilc_wlan.c b/drivers/staging/wilc1000/wilc_wlan.c
index 1a57135..9afbe8d 100644
--- a/drivers/staging/wilc1000/wilc_wlan.c
+++ b/drivers/staging/wilc1000/wilc_wlan.c
@@ -99,9 +99,7 @@ static int wilc_wlan_txq_add_to_head(struct wilc_vif *vif,
 	unsigned long flags;
 	struct wilc *wilc = vif->wilc;
 
-	if (wilc_lock_timeout(wilc, &wilc->txq_add_to_head_cs,
-				    CFG_PKTS_TIMEOUT))
-		return -1;
+	mutex_lock(&wilc->txq_add_to_head_cs);
 
 	spin_lock_irqsave(&wilc->txq_spinlock, flags);
 
@@ -119,7 +117,7 @@ static int wilc_wlan_txq_add_to_head(struct wilc_vif *vif,
 	wilc->txq_entries += 1;
 
 	spin_unlock_irqrestore(&wilc->txq_spinlock, flags);
-	up(&wilc->txq_add_to_head_cs);
+	mutex_unlock(&wilc->txq_add_to_head_cs);
 	complete(&wilc->txq_event);
 
 	return 0;
@@ -573,8 +571,7 @@ int wilc_wlan_handle_txq(struct net_device *dev, u32 *txq_count)
 		if (wilc->quit)
 			break;
 
-		wilc_lock_timeout(wilc, &wilc->txq_add_to_head_cs,
-					CFG_PKTS_TIMEOUT);
+		mutex_lock(&wilc->txq_add_to_head_cs);
 		wilc_wlan_txq_filter_dup_tcp_ack(dev);
 		tqe = wilc_wlan_txq_get_first(wilc);
 		i = 0;
@@ -755,7 +752,7 @@ _end_:
 		if (ret != 1)
 			break;
 	} while (0);
-	up(&wilc->txq_add_to_head_cs);
+	mutex_unlock(&wilc->txq_add_to_head_cs);
 
 	wilc->txq_exit = 1;
 	*txq_count = wilc->txq_entries;
-- 
2.7.4

  parent reply	other threads:[~2016-06-13 10:38 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-13 10:37 [PATCH 0/7] *** staging: wilc1000: Replace semaphores with mutexes or completions *** Binoy Jayan
2016-06-13 10:37 ` [PATCH 1/7] staging: wilc1000: Replace semaphore txq_event with completion Binoy Jayan
2016-06-13 10:37 ` Binoy Jayan [this message]
2016-06-13 13:20   ` [PATCH 2/7] staging: wilc1000: Replace semaphore txq_add_to_head_cs with mutex Arnd Bergmann
2016-06-13 10:37 ` [PATCH 3/7] staging: wilc1000: Replace semaphore cfg_event with completion Binoy Jayan
2016-06-13 13:25   ` Arnd Bergmann
2016-06-13 10:37 ` [PATCH 4/7] staging: wilc1000: Replace semaphore sync_event " Binoy Jayan
2016-06-13 10:37 ` [PATCH 5/7] staging: wilc1000: Replace semaphore close_exit_sync " Binoy Jayan
2016-06-13 13:42   ` Arnd Bergmann
2016-06-13 10:37 ` [PATCH 6/7] staging: wilc1000: message_queue: Replace semaphore sem " Binoy Jayan
2016-06-13 14:24   ` Arnd Bergmann
2016-06-13 10:37 ` [PATCH 7/7] staging: wilc1000: Remove unused inclusion of semaphore header Binoy Jayan
2016-06-13 14:29 ` [PATCH 0/7] *** staging: wilc1000: Replace semaphores with mutexes or completions *** Arnd Bergmann
2016-06-13 14:48   ` Binoy Jayan
2016-06-15  5:24 ` [PATCH v2 0/5] " Binoy Jayan
2016-06-15  5:24   ` [PATCH v2 1/5] staging: wilc1000: Replace semaphore txq_event with completion Binoy Jayan
2016-06-15  5:30 ` [PATCH v3 0/5] *** staging: wilc1000: Replace semaphores with mutexes or completions *** Binoy Jayan
2016-06-15  5:30   ` [PATCH v3 1/5] staging: wilc1000: Replace semaphore txq_event with completion Binoy Jayan
2016-06-15  5:30   ` [PATCH v3 2/5] staging: wilc1000: Replace semaphore txq_add_to_head_cs with mutex Binoy Jayan
2016-06-15  5:30   ` [PATCH v3 3/5] staging: wilc1000: Replace semaphore cfg_event with completion Binoy Jayan
2016-06-15  5:30   ` [PATCH v3 4/5] staging: wilc1000: Replace semaphore sync_event " Binoy Jayan
2016-06-15  5:30   ` [PATCH v3 5/5] staging: wilc1000: Remove semaphore close_exit_sync Binoy Jayan
2016-06-20 10:10 ` [PATCH v2 0/2] *** staging: wilc1000: Replace semaphores *** Binoy Jayan
2016-06-20 10:10   ` [PATCH v2 1/2] staging: wilc1000: message_queue: Move code to host interface Binoy Jayan
2016-06-20 10:10   ` [PATCH v2 2/2] staging: wilc1000: Replace kthread with workqueue for " Binoy Jayan
2016-06-21 16:07     ` Arnd Bergmann
2016-06-22 10:01   ` [PATCH v3 0/3] *** staging: wilc1000: Replace semaphores *** Binoy Jayan
2016-06-22 10:01     ` [PATCH v3 1/3] staging: wilc1000: message_queue: Move code to host interface Binoy Jayan
2016-06-22 10:01     ` [PATCH v3 2/3] staging: wilc1000: Replace kthread with workqueue for " Binoy Jayan
2016-06-22 10:01     ` [PATCH v3 3/3] staging: wilc1000: Change interface wilc_mq_send to wilc_enqueue_cmd Binoy Jayan
2016-06-22 11:06       ` kbuild test robot
2016-06-23  5:41   ` [PATCH v4 0/3] *** staging: wilc1000: Replace semaphores *** Binoy Jayan
2016-06-23  5:41     ` [PATCH v4 1/3] staging: wilc1000: message_queue: Move code to host interface Binoy Jayan
2016-06-23  5:41     ` [PATCH v4 2/3] staging: wilc1000: Replace kthread with workqueue for " Binoy Jayan
2016-06-23  5:41     ` [PATCH v4 3/3] staging: wilc1000: Change interface wilc_mq_send to wilc_enqueue_cmd Binoy Jayan
2016-06-23  9:32     ` [PATCH v4 0/3] *** staging: wilc1000: Replace semaphores *** Arnd Bergmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1465814259-3009-3-git-send-email-binoy.jayan@linaro.org \
    --to=binoy.jayan@linaro.org \
    --cc=arnd@arndb.de \
    --cc=austin.shin@atmel.com \
    --cc=chris.park@atmel.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=glen.lee@atmel.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=johnny.kim@atmel.com \
    --cc=leo.kim@atmel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=tony.cho@atmel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox