Search Linux Wireless

Re: Possible wireless issue introduced in next-20140930

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/23/2014 10:26 AM, Murilo Opsfelder Araujo wrote:
On 10/23/2014 03:23 AM, Mike Galbraith wrote:
On Thu, 2014-10-23 at 01:17 -0200, Murilo Opsfelder Araujo wrote:
Hello, everyone.

With next-20140930 my laptop does not work, i.e. after I enter my login
and password in KDM, the entire system becomes unresponsive and I need
to reset it in order to reboot (it does not even show the KDE splash
screen).

It was working pretty fine with next-20140926.

I've also tested with next-20141022 and v3.18-rc1 and no luck.

git bisect pointed me to the commit below [1].  My wireless card is a
RTL8191SEvA [2].

Mine is RTL8191SEvB.

I was going to bisect RTL8191SE regression when I got a chance, but you
beat me to it.

commit 38506ecefab911785d5e1aa5889f6eeb462e0954
Author: Larry Finger <Larry.Finger@xxxxxxxxxxxx>
Date:   Mon Sep 22 09:39:19 2014 -0500

      rtlwifi: rtl_pci: Start modification for new drivers

Did you confirm that bisection result, ie revert it at HEAD of whichever
tree you bisected?

The revert (master) removed some warnings on the way to kaboom here, but
the drivers is still toxic.  My log follows in case it's the same thing.
I can't go hunting atm, maybe during the weekend if the problem hasn't
evaporate by then.

next-20141023 does not work as well.

With commit 38506ecefab911785d5e1aa5889f6eeb462e0954 reverted, kernel blows up
very early in boot.

Cascardo (CC:) helped me to investigate and it seems that when
rtlpriv->cfg->ops->get_btc_status() is called, it is pointing to a NULL function.

With the changes below, written by Cascardo, I could get rid of oops/panic and
system booted normally.  But there was no wifi network available (like if wifi
card was disabled).

diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
index 1bff2a0..807f0f7 100644
--- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
@@ -253,6 +253,11 @@ static void rtl92s_deinit_sw_vars(struct ieee80211_hw *hw)
         }
  }

+static bool rtl92s_get_btc_status(void)
+{
+       return false;
+}
+
  static struct rtl_hal_ops rtl8192se_hal_ops = {
         .init_sw_vars = rtl92s_init_sw_vars,
         .deinit_sw_vars = rtl92s_deinit_sw_vars,
@@ -294,6 +299,7 @@ static struct rtl_hal_ops rtl8192se_hal_ops = {
         .set_bbreg = rtl92s_phy_set_bb_reg,
         .get_rfreg = rtl92s_phy_query_rf_reg,
         .set_rfreg = rtl92s_phy_set_rf_reg,
+       .get_btc_status = rtl92s_get_btc_status,
  };

  static struct rtl_mod_params rtl92se_mod_params = {

The above patch is correct; however, the one I just submitted will fix several drivers rather than just this one. For your convenience, I have attached a copy to this message.

Larry


>From 9fee70e0af554bc7827d13ef8cfb22ce95f61514 Mon Sep 17 00:00:00 2001
From: Larry Finger <Larry.Finger@xxxxxxxxxxxx>
Date: Thu, 23 Oct 2014 11:18:05 -0500
Subject: [PATCH] rtlwifi: Add check for get_btc_status callback
To: Marcel Holtmann <marcel@xxxxxxxxxxxx>,
    Gustavo Padovan <gustavo@xxxxxxxxxxx>,
    Johan Hedberg <johan.hedberg@xxxxxxxxx>
Cc: linux-bluetooth@xxxxxxxxxxxxxxx,
    netdev@xxxxxxxxxxxxxxx

Drivers that do not use the get_btc_status() callback may not define a
dummy routine. The caller needs to check before making the call.

Signed-off-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx>
Cc: Murilo Opsfelder Araujo <mopsfelder@xxxxxxxxx>
Cc: Mike Galbraith <umgwanakikbuti@xxxxxxxxx>
Thadeu Cascardo <cascardo@xxxxxxxxxxxxxxx>
---
 drivers/net/wireless/rtlwifi/pci.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c
index 667aba8..25daa87 100644
--- a/drivers/net/wireless/rtlwifi/pci.c
+++ b/drivers/net/wireless/rtlwifi/pci.c
@@ -1796,7 +1796,8 @@ static int rtl_pci_start(struct ieee80211_hw *hw)
 	rtl_pci_reset_trx_ring(hw);
 
 	rtlpci->driver_is_goingto_unload = false;
-	if (rtlpriv->cfg->ops->get_btc_status()) {
+	if (rtlpriv->cfg->ops->get_btc_status &&
+	    rtlpriv->cfg->ops->get_btc_status()) {
 		rtlpriv->btcoexist.btc_ops->btc_init_variables(rtlpriv);
 		rtlpriv->btcoexist.btc_ops->btc_init_hal_vars(rtlpriv);
 	}
-- 
1.8.4.5


[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux