aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Roskin <proski@gnu.org>2007-05-01 20:01:07 -0400
committerGuido Guenther <agx@bogon.sigxcpu.org>2007-05-02 11:22:18 +0200
commitc360795bda2df2260b2b8a459087c9e37ef17266 (patch)
treedbf971bc643dddbe1a41945905330612aa375eb9
parentb74a15493e90d141947df9d8c6755788fa8ffb96 (diff)
[PATCH] Replace semaphores with mutexes
Semaphores are overkill for simple locking. Signed-off-by: Pavel Roskin <proski@gnu.org>
-rw-r--r--at76_usb.c60
-rw-r--r--at76_usb.h2
2 files changed, 31 insertions, 31 deletions
diff --git a/at76_usb.c b/at76_usb.c
index b66536d..62172ff 100644
--- a/at76_usb.c
+++ b/at76_usb.c
@@ -2288,7 +2288,7 @@ static void at76_work_assoc_done(struct work_struct *work)
struct at76_priv *priv = container_of(work, struct at76_priv,
work_assoc_done);
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
at76_assert(priv->istate == ASSOCIATING || priv->istate == REASSOCIATING);
if (priv->iw_mode == IW_MODE_INFRA) {
@@ -2323,7 +2323,7 @@ static void at76_work_assoc_done(struct work_struct *work)
at76_dbg(DBG_PROGRESS, "%s: connected to BSSID %s",
priv->netdev->name, mac2str(priv->curr_bss->bssid));
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -4033,7 +4033,7 @@ static int at76_open(struct net_device *netdev)
at76_dbg(DBG_PROC_ENTRY, "at76_open entry");
- if (down_interruptible(&priv->sem))
+ if (mutex_lock_interruptible(&priv->mtx))
return -EINTR;
/* if netdev->dev_addr != priv->mac_addr we must
@@ -4062,7 +4062,7 @@ static int at76_open(struct net_device *netdev)
at76_dbg(DBG_PROC_ENTRY, "at76_open end");
err:
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
return ret < 0 ? ret : 0;
}
@@ -4074,7 +4074,7 @@ static int at76_stop(struct net_device *netdev)
at76_dbg(DBG_DEVSTART, "%s: ENTER", __FUNCTION__);
- if (down_interruptible(&priv->sem))
+ if (mutex_lock_interruptible(&priv->mtx))
return -EINTR;
netif_stop_queue(netdev);
@@ -4107,7 +4107,7 @@ static int at76_stop(struct net_device *netdev)
at76_assert(priv->open_count > 0);
priv->open_count--;
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
at76_dbg(DBG_DEVSTART, "%s: EXIT", __FUNCTION__);
return 0;
@@ -4271,7 +4271,7 @@ static void at76_work_external_fw(struct work_struct *work)
int ret;
u8 op_mode;
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
op_mode = at76_get_op_mode(priv->udev);
at76_dbg(DBG_DEVSTART, "opmode %d", op_mode);
@@ -4290,7 +4290,7 @@ static void at76_work_external_fw(struct work_struct *work)
}
if (priv->board_type == BOARDTYPE_505A_RFMD_2958) {
info("200 ms delay for board type 7");
- /* can we do this with priv->sem down? */
+ /* can we do this with priv->mtx down? */
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(HZ / 5 + 1);
}
@@ -4300,7 +4300,7 @@ static void at76_work_external_fw(struct work_struct *work)
err("Downloading external firmware failed: %d", ret);
end_external_fw:
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -4311,7 +4311,7 @@ static void at76_work_internal_fw(struct work_struct *work)
work_internal_fw);
int ret;
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
ret = at76_usbdfu_download(priv->udev, priv->intfw,
priv->intfw_size,
@@ -4337,7 +4337,7 @@ static void at76_work_internal_fw(struct work_struct *work)
mod_timer(&priv->fw_dl_timer, jiffies + 2 * HZ + 1);
end_internal_fw:
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -4475,7 +4475,7 @@ static void at76_work_join(struct work_struct *work)
int ret;
unsigned long flags;
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
if (priv->istate == INIT)
goto end_join;
@@ -4547,7 +4547,7 @@ static void at76_work_join(struct work_struct *work)
schedule_work(&priv->work_scan);
end_join:
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -4556,9 +4556,9 @@ static void at76_work_mgmt_timeout(struct work_struct *work)
struct at76_priv *priv = container_of(work, struct at76_priv,
work_mgmt_timeout);
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
at76_handle_mgmt_timeout(priv);
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -4570,7 +4570,7 @@ static void at76_work_new_bss(struct work_struct *work)
struct net_device *netdev = priv->netdev;
struct mib_mac_mgmt mac_mgmt;
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
ret = at76_get_mib(priv->udev, MIB_MAC_MGMT, &mac_mgmt,
sizeof(struct mib_mac_mgmt));
@@ -4594,7 +4594,7 @@ static void at76_work_new_bss(struct work_struct *work)
err("%s: set_mib (ibss change ok) failed: %d", netdev->name, ret);
new_bss_clean:
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -4603,10 +4603,10 @@ static void at76_work_reset_device(struct work_struct *work)
struct at76_priv *priv = container_of(work, struct at76_priv,
work_reset_device);
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
usb_reset_device(priv->udev);
priv->istate = WAIT_FOR_DISCONNECT;
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -4758,7 +4758,7 @@ static void at76_work_restart(struct work_struct *work)
struct at76_priv *priv = container_of(work, struct at76_priv,
work_restart);
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
at76_startup_device(priv);
at76_set_monitor_mode(priv);
@@ -4778,7 +4778,7 @@ static void at76_work_restart(struct work_struct *work)
jiffies + SCAN_POLL_INTERVAL);
}
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -4788,7 +4788,7 @@ static void at76_work_scan(struct work_struct *work)
work_scan);
int ret;
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
at76_assert(priv->istate == SCANNING);
/* only clear the bss list when a scan is actively initiated,
@@ -4806,7 +4806,7 @@ static void at76_work_scan(struct work_struct *work)
mod_timer(&priv->mgmt_timer, jiffies + SCAN_POLL_INTERVAL);
}
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -4816,7 +4816,7 @@ static void at76_work_set_promisc(struct work_struct *work)
work_set_promisc);
int ret = 0;
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
memset(&priv->mib_buf, 0, sizeof(struct set_mib_buffer));
priv->mib_buf.type = MIB_LOCAL;
@@ -4829,7 +4829,7 @@ static void at76_work_set_promisc(struct work_struct *work)
priv->netdev->name, ret);
}
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -4839,7 +4839,7 @@ static void at76_work_start_ibss(struct work_struct *work)
work_start_ibss);
int ret;
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
at76_assert(priv->istate == STARTIBSS);
ret = at76_start_ibss(priv);
@@ -4878,7 +4878,7 @@ static void at76_work_start_ibss(struct work_struct *work)
netif_start_queue(priv->netdev);
end_startibss:
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -4887,9 +4887,9 @@ static void at76_work_submit_rx(struct work_struct *work)
struct at76_priv *priv = container_of(work, struct at76_priv,
work_submit_rx);
- down(&priv->sem);
+ mutex_lock(&priv->mtx);
at76_submit_rx_urb(priv);
- up(&priv->sem);
+ mutex_unlock(&priv->mtx);
}
@@ -6097,7 +6097,7 @@ static struct at76_priv *at76_alloc_new_device(struct usb_device *udev,
priv->udev = udev;
priv->netdev = netdev;
- init_MUTEX(&priv->sem);
+ mutex_init(&priv->mtx);
INIT_WORK(&priv->work_assoc_done, at76_work_assoc_done);
INIT_WORK(&priv->work_external_fw, at76_work_external_fw);
INIT_WORK(&priv->work_internal_fw, at76_work_internal_fw);
diff --git a/at76_usb.h b/at76_usb.h
index f32bb61..34f1862 100644
--- a/at76_usb.h
+++ b/at76_usb.h
@@ -466,7 +466,7 @@ struct at76_priv {
__u8 bulk_out_endpointAddr; /* the address of the bulk out endpoint */
int open_count; /* number of times this port has been opened */
- struct semaphore sem; /* locks this structure */
+ struct mutex mtx; /* locks this structure */
/* work queues */
struct work_struct work_assoc_done;