lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:	Thu, 22 Sep 2011 09:51:15 +0200
From:	Borislav Petkov <bp@...en8.de>
To:	Larry Finger <Larry.Finger@...inger.net>
Cc:	李朝明 <chaoming_li@...lsil.com.cn>,
	linux-wireless@...r.kernel.org,
	'LKML' <linux-kernel@...r.kernel.org>
Subject: Re: 答复: 答复: 3.1-rc6+ rtl8192se issue

On Wed, Sep 21, 2011 at 10:29:15PM -0500, Larry Finger wrote:
> On 09/21/2011 08:24 PM, 李朝明 wrote:
> > Dear Sir:
> > 
> > 	I can't find _rtl_pci_lps_leave_tasklet in my driver, So I want to
> > kown which driver did you use.
> > 	Would you like to try this new driver with ips =0 and lps = 0, or
> > some combination of these two functions.
> 
> It is not in my driver either. Where did that driver come from?

That's actually _rtl_pci_ips_leave_tasklet with an "i"
in "_ips_" and it is a wrapper around rtl_lps_leave() in
<drivers/net/wireless/rtlwifi/pci.c>

Basically, that's the tasklet handler for ips_leave_tasklet regged in
_rtl_pci_init_struct():

        tasklet_init(&rtlpriv->works.ips_leave_tasklet,
                     (void (*)(unsigned long))_rtl_pci_ips_leave_tasklet,
                     (unsigned long)hw);


The sluggishness is consistent with the tasklet choking on something,
from looking at rtl_lps_leave() it grabs some spinlocks and then enables
IRQs in the middle of it with a very explanatory comment /* FIXME */
ontop of it which looks very suspicious to me:

/*Leave the leisure power save mode.*/
void rtl_lps_leave(struct ieee80211_hw *hw)
{
        struct rtl_priv *rtlpriv = rtl_priv(hw);
        struct rtl_ps_ctl *ppsc = rtl_psc(rtl_priv(hw));
        struct rtl_hal *rtlhal = rtl_hal(rtl_priv(hw));

        spin_lock(&rtlpriv->locks.lps_lock);

        if (ppsc->fwctrl_lps) {
                if (ppsc->dot11_psmode != EACTIVE) {

                        /*FIX ME */
                        rtlpriv->cfg->ops->enable_interrupt(hw);
...

But since I don't know anything about networking drivers, I'm actually
hoping that you guys could have an idea here.

HTH.

-- 
Regards/Gruss,
    Boris.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ