summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMike McCormack <mikem@ring3k.org>2011-02-06 13:55:52 (GMT)
committerGreg Kroah-Hartman <gregkh@suse.de>2011-02-09 19:50:20 (GMT)
commit9236928f155e9e4ae19310359518cedab4e64450 (patch)
treeb8c0f4146fdb590ea645d08b34255f2d3a027f8d /drivers
parentfb53c2b73f4fc1cfd3d5548b6efbb00b1d7de3a7 (diff)
downloadlinux-fsl-qoriq-9236928f155e9e4ae19310359518cedab4e64450.tar.xz
staging: rtl8192e: Use spin_lock, just one exit path
Signed-off-by: Mike McCormack <mikem@ring3k.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/staging/rtl8192e/r8192E_core.c26
1 files changed, 11 insertions, 15 deletions
diff --git a/drivers/staging/rtl8192e/r8192E_core.c b/drivers/staging/rtl8192e/r8192E_core.c
index 4f19ac4..29c36c4 100644
--- a/drivers/staging/rtl8192e/r8192E_core.c
+++ b/drivers/staging/rtl8192e/r8192E_core.c
@@ -1977,11 +1977,10 @@ void rtl8192_hw_wakeup_wq (struct work_struct *work)
static void rtl8192_hw_to_sleep(struct net_device *dev, u32 th, u32 tl)
{
struct r8192_priv *priv = ieee80211_priv(dev);
-
+ u32 tmp;
u32 rb = jiffies;
- unsigned long flags;
- spin_lock_irqsave(&priv->ps_lock,flags);
+ spin_lock(&priv->ps_lock);
// Writing HW register with 0 equals to disable
// the timer, that is not really what we want
@@ -1994,28 +1993,25 @@ static void rtl8192_hw_to_sleep(struct net_device *dev, u32 th, u32 tl)
//
if(((tl>=rb)&& (tl-rb) <= MSECS(MIN_SLEEP_TIME))
||((rb>tl)&& (rb-tl) < MSECS(MIN_SLEEP_TIME))) {
- spin_unlock_irqrestore(&priv->ps_lock,flags);
printk("too short to sleep::%x, %x, %lx\n",tl, rb, MSECS(MIN_SLEEP_TIME));
- return;
+ goto out_unlock;
}
if(((tl > rb) && ((tl-rb) > MSECS(MAX_SLEEP_TIME)))||
((tl < rb) && (tl>MSECS(69)) && ((rb-tl) > MSECS(MAX_SLEEP_TIME)))||
((tl<rb)&&(tl<MSECS(69))&&((tl+0xffffffff-rb)>MSECS(MAX_SLEEP_TIME)))) {
printk("========>too long to sleep:%x, %x, %lx\n", tl, rb, MSECS(MAX_SLEEP_TIME));
- spin_unlock_irqrestore(&priv->ps_lock,flags);
- return;
- }
- {
- u32 tmp = (tl>rb)?(tl-rb):(rb-tl);
- queue_delayed_work(priv->ieee80211->wq,
- &priv->ieee80211->hw_wakeup_wq,tmp);
- //PowerSave not supported when kernel version less 2.6.20
+ goto out_unlock;
}
+
+ tmp = (tl>rb)?(tl-rb):(rb-tl);
queue_delayed_work(priv->ieee80211->wq,
- (void *)&priv->ieee80211->hw_sleep_wq,0);
- spin_unlock_irqrestore(&priv->ps_lock,flags);
+ &priv->ieee80211->hw_wakeup_wq,tmp);
+ queue_delayed_work(priv->ieee80211->wq,
+ (void *)&priv->ieee80211->hw_sleep_wq,0);
+out_unlock:
+ spin_unlock(&priv->ps_lock);
}
static void rtl8192_init_priv_variable(struct net_device* dev)