am 17210605: am 173c6313: Minor wake_lock function cleanup
Merge commit '17210605ace5d9457add89c0a73aa084985db395'
* commit '17210605ace5d9457add89c0a73aa084985db395':
Minor wake_lock function cleanup
diff --git a/wilink_6_1/platforms/os/linux/src/osapi.c b/wilink_6_1/platforms/os/linux/src/osapi.c
index fd99089..4ad5646 100644
--- a/wilink_6_1/platforms/os/linux/src/osapi.c
+++ b/wilink_6_1/platforms/os/linux/src/osapi.c
@@ -602,8 +602,8 @@
int ret = 0;
unsigned long flags;
- spin_lock_irqsave(&drv->lock, flags);
if (drv) {
+ spin_lock_irqsave(&drv->lock, flags);
ret = drv->wl_packet;
if (drv->wl_packet) {
drv->wl_packet = 0;
@@ -611,8 +611,8 @@
wake_lock_timeout(&drv->wl_rxwake, (HZ >> 1));
#endif
}
+ spin_unlock_irqrestore(&drv->lock, flags);
}
- spin_unlock_irqrestore(&drv->lock, flags);
/* printk("%s: %d\n", __func__, ret); */
return ret;
}
@@ -630,11 +630,13 @@
{
TWlanDrvIfObj *drv = (TWlanDrvIfObj *)OsContext;
unsigned long flags;
- int ret;
+ int ret = 0;
- spin_lock_irqsave(&drv->lock, flags);
- ret = drv->wl_packet = 1;
- spin_unlock_irqrestore(&drv->lock, flags);
+ if (drv) {
+ spin_lock_irqsave(&drv->lock, flags);
+ ret = drv->wl_packet = 1;
+ spin_unlock_irqrestore(&drv->lock, flags);
+ }
return ret;
}
@@ -653,16 +655,16 @@
int ret = 0;
unsigned long flags;
- spin_lock_irqsave(&drv->lock, flags);
if (drv) {
+ spin_lock_irqsave(&drv->lock, flags);
#ifdef CONFIG_HAS_WAKELOCK
if (!drv->wl_count)
wake_lock(&drv->wl_wifi);
#endif
drv->wl_count++;
ret = drv->wl_count;
+ spin_unlock_irqrestore(&drv->lock, flags);
}
- spin_unlock_irqrestore(&drv->lock, flags);
/* printk("%s: %d\n", __func__, ret); */
return ret;
}
@@ -682,16 +684,18 @@
int ret = 0;
unsigned long flags;
- spin_lock_irqsave(&drv->lock, flags);
- if (drv && drv->wl_count) {
- drv->wl_count--;
+ if (drv) {
+ spin_lock_irqsave(&drv->lock, flags);
+ if (drv->wl_count) {
+ drv->wl_count--;
#ifdef CONFIG_HAS_WAKELOCK
- if (!drv->wl_count)
- wake_unlock(&drv->wl_wifi);
+ if (!drv->wl_count)
+ wake_unlock(&drv->wl_wifi);
#endif
- ret = drv->wl_count;
+ ret = drv->wl_count;
+ }
+ spin_unlock_irqrestore(&drv->lock, flags);
}
- spin_unlock_irqrestore(&drv->lock, flags);
/* printk("%s: %d\n", __func__, ret); */
return ret;
}