lkml.org 
[lkml]   [2014]   [May]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.14 51/83] rtlwifi: rtl8192cu: Fix too long disable of IRQs
    Date
    3.14-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Larry Finger <Larry.Finger@lwfinger.net>

    commit a53268be0cb9763f11da4f6fe3fb924cbe3a7d4a upstream.

    In commit f78bccd79ba3cd9d9664981b501d57bdb81ab8a4 entitled "rtlwifi:
    rtl8192ce: Fix too long disable of IRQs", Olivier Langlois
    <olivier@trillion01.com> fixed a problem caused by an extra long disabling
    of interrupts. This patch makes the same fix for rtl8192cu.

    Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/wireless/rtlwifi/rtl8192cu/hw.c | 15 ++++++++++++++-
    1 file changed, 14 insertions(+), 1 deletion(-)

    --- a/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
    +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/hw.c
    @@ -985,6 +985,17 @@ int rtl92cu_hw_init(struct ieee80211_hw
    struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
    int err = 0;
    static bool iqk_initialized;
    + unsigned long flags;
    +
    + /* As this function can take a very long time (up to 350 ms)
    + * and can be called with irqs disabled, reenable the irqs
    + * to let the other devices continue being serviced.
    + *
    + * It is safe doing so since our own interrupts will only be enabled
    + * in a subsequent step.
    + */
    + local_save_flags(flags);
    + local_irq_enable();

    rtlhal->hw_type = HARDWARE_TYPE_RTL8192CU;
    err = _rtl92cu_init_mac(hw);
    @@ -997,7 +1008,7 @@ int rtl92cu_hw_init(struct ieee80211_hw
    RT_TRACE(rtlpriv, COMP_ERR, DBG_WARNING,
    "Failed to download FW. Init HW without FW now..\n");
    err = 1;
    - return err;
    + goto exit;
    }
    rtlhal->last_hmeboxnum = 0; /* h2c */
    _rtl92cu_phy_param_tab_init(hw);
    @@ -1034,6 +1045,8 @@ int rtl92cu_hw_init(struct ieee80211_hw
    _InitPABias(hw);
    _update_mac_setting(hw);
    rtl92c_dm_init(hw);
    +exit:
    + local_irq_restore(flags);
    return err;
    }




    \
     
     \ /
      Last update: 2014-05-11 22:41    [W:3.600 / U:0.104 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site