Skip to content

Commit

Permalink
staging: wilc1000: Replace semaphore txq_add_to_head_cs with mutex
Browse files Browse the repository at this point in the history
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>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Binoy Jayan authored and Greg Kroah-Hartman committed Jun 25, 2016
1 parent b27a6d5 commit 334bed0
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 10 deletions.
4 changes: 2 additions & 2 deletions drivers/staging/wilc1000/linux_wlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>

Expand Down Expand Up @@ -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);

Expand Down
3 changes: 2 additions & 1 deletion drivers/staging/wilc1000/wilc_wfi_netdevice.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
Expand Down
11 changes: 4 additions & 7 deletions drivers/staging/wilc1000/wilc_wlan.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -755,7 +752,7 @@ int wilc_wlan_handle_txq(struct net_device *dev, u32 *txq_count)
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;
Expand Down

0 comments on commit 334bed0

Please sign in to comment.