OSDN Git Service

rtlwifi: Remove extra workqueue for enter/leave power state
authorLarry Finger <Larry.Finger@lwfinger.net>
Mon, 22 Sep 2014 14:39:18 +0000 (09:39 -0500)
committerJohn W. Linville <linville@tuxdriver.com>
Fri, 26 Sep 2014 21:22:27 +0000 (17:22 -0400)
When the rtlwifi family of drivers was converted to use a workqueue when
entering or leaving power save mode (commits a269913c52a5ffbe0a19,
41affd5286b9116b9a2b, and 6539306b2c), the code began scheduling work from
the callback routine of a different workqueue with a resulting increase in
overhead.

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rtlwifi/base.c

index 93bb384..3b599b6 100644 (file)
@@ -1401,12 +1401,9 @@ void rtl_watchdog_wq_callback(void *data)
                if (((rtlpriv->link_info.num_rx_inperiod +
                      rtlpriv->link_info.num_tx_inperiod) > 8) ||
                    (rtlpriv->link_info.num_rx_inperiod > 2))
-                       rtlpriv->enter_ps = true;
+                       rtl_lps_enter(hw);
                else
-                       rtlpriv->enter_ps = false;
-
-               /* LeisurePS only work in infra mode. */
-               schedule_work(&rtlpriv->works.lps_change_work);
+                       rtl_lps_leave(hw);
        }
 
        rtlpriv->link_info.num_rx_inperiod = 0;