From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752914AbaJ3EaK (ORCPT ); Thu, 30 Oct 2014 00:30:10 -0400 Received: from mail-pa0-f48.google.com ([209.85.220.48]:45350 "EHLO mail-pa0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751514AbaJ3EaI (ORCPT ); Thu, 30 Oct 2014 00:30:08 -0400 Message-ID: <5451BED0.2060906@lwfinger.net> Date: Wed, 29 Oct 2014 23:30:08 -0500 From: Larry Finger User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.1 MIME-Version: 1.0 To: Murilo Opsfelder Araujo , linux-kernel@vger.kernel.org CC: linux-wireless@vger.kernel.org, netdev@vger.kernel.org, Chaoming Li , "John W. Linville" , Mike Galbraith , Thadeu Cascardo , troy_tan@realsil.com.cn Subject: Re: [PATCH] rtlwifi: Add more checks for get_btc_status callback References: <1414625302-3654-1-git-send-email-mopsfelder@gmail.com> In-Reply-To: <1414625302-3654-1-git-send-email-mopsfelder@gmail.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 10/29/2014 06:28 PM, Murilo Opsfelder Araujo wrote: > This is a complement of commit 08054200117a95afc14c3d2ed3a38bf4e345bf78 > "rtlwifi: Add check for get_btc_status callback". > > With this patch, next-20141029 at least does not panic with rtl8192se > device. > This patch is OK, but as noted it is not complete. I have patches to fix all the kernel panics for rtl8192se AND rtl8192ce. There are missing parts, but I would prefer submitting mine, which would conflict with this one. For that reason, NACK for this one, and please apply the set I am submitting now. Larry > Signed-off-by: Murilo Opsfelder Araujo > --- > > Hello, everyone. > > Some days ago, I reported [1] that next-20140930 introduced an issue > with rtl8192se devices. > > Later on, Larry Finger proposed [2] a fix that did not solve the > problem thoroughly. > > This patch is based on Larry's one [3]. It also does not solve the > rtl8192se issue completely but I can at least boot next-20141029 > without a panic. > > The remaining issue is that the rtl8192se device does not associate. > It does not even show any wifi network available. The device is shown > by iwconfig, but I cannot do anything with it. > > I need help from someone out there that could provide me guidance or > possibly investigate the issue (I'm not a kernel expert yet). > > I'd not like to see this regression landing on v3.18. > > [1] http://marc.info/?l=linux-wireless&m=141403434929612 > [2] http://marc.info/?l=linux-wireless&m=141408165513255 > [3] http://marc.info/?l=linux-wireless&m=141416876810127 > > drivers/net/wireless/rtlwifi/base.c | 6 ++++-- > drivers/net/wireless/rtlwifi/core.c | 9 ++++++--- > drivers/net/wireless/rtlwifi/pci.c | 3 ++- > drivers/net/wireless/rtlwifi/ps.c | 12 ++++++++---- > 4 files changed, 20 insertions(+), 10 deletions(-) > > diff --git a/drivers/net/wireless/rtlwifi/base.c b/drivers/net/wireless/rtlwifi/base.c > index 40b6d1d..1a51577 100644 > --- a/drivers/net/wireless/rtlwifi/base.c > +++ b/drivers/net/wireless/rtlwifi/base.c > @@ -1234,7 +1234,8 @@ EXPORT_SYMBOL_GPL(rtl_action_proc); > static void setup_arp_tx(struct rtl_priv *rtlpriv, struct rtl_ps_ctl *ppsc) > { > rtlpriv->ra.is_special_data = true; > - 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_special_packet_notify( > rtlpriv, 1); > rtlpriv->enter_ps = false; > @@ -1629,7 +1630,8 @@ void rtl_watchdog_wq_callback(void *data) > } > } > > - 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_periodical(rtlpriv); > > rtlpriv->link_info.bcn_rx_inperiod = 0; > diff --git a/drivers/net/wireless/rtlwifi/core.c b/drivers/net/wireless/rtlwifi/core.c > index f6179bc..686d256 100644 > --- a/drivers/net/wireless/rtlwifi/core.c > +++ b/drivers/net/wireless/rtlwifi/core.c > @@ -1133,7 +1133,8 @@ static void rtl_op_bss_info_changed(struct ieee80211_hw *hw, > ppsc->report_linked = (mstatus == RT_MEDIA_CONNECT) ? > true : 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_mediastatus_notify( > rtlpriv, mstatus); > } > @@ -1373,7 +1374,8 @@ static void rtl_op_sw_scan_start(struct ieee80211_hw *hw) > return; > } > > - 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_scan_notify(rtlpriv, 1); > > if (rtlpriv->dm.supp_phymode_switch) { > @@ -1425,7 +1427,8 @@ static void rtl_op_sw_scan_complete(struct ieee80211_hw *hw) > } > > rtlpriv->cfg->ops->scan_operation_backup(hw, SCAN_OPT_RESTORE); > - 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_scan_notify(rtlpriv, 0); > } > > diff --git a/drivers/net/wireless/rtlwifi/pci.c b/drivers/net/wireless/rtlwifi/pci.c > index 25daa87..ed3364d 100644 > --- a/drivers/net/wireless/rtlwifi/pci.c > +++ b/drivers/net/wireless/rtlwifi/pci.c > @@ -1833,7 +1833,8 @@ static void rtl_pci_stop(struct ieee80211_hw *hw) > unsigned long flags; > u8 RFInProgressTimeOut = 0; > > - 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_halt_notify(); > > /* > diff --git a/drivers/net/wireless/rtlwifi/ps.c b/drivers/net/wireless/rtlwifi/ps.c > index b69321d..2278af9 100644 > --- a/drivers/net/wireless/rtlwifi/ps.c > +++ b/drivers/net/wireless/rtlwifi/ps.c > @@ -261,7 +261,8 @@ void rtl_ips_nic_off_wq_callback(void *data) > ppsc->in_powersavemode = true; > > /* call before RF off */ > - 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_ips_notify(rtlpriv, > ppsc->inactive_pwrstate); > > @@ -306,7 +307,8 @@ void rtl_ips_nic_on(struct ieee80211_hw *hw) > ppsc->in_powersavemode = false; > _rtl_ps_inactive_ps(hw); > /* call after RF on */ > - 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_ips_notify(rtlpriv, > ppsc->inactive_pwrstate); > } > @@ -390,14 +392,16 @@ void rtl_lps_set_psmode(struct ieee80211_hw *hw, u8 rt_psmode) > if (ppsc->p2p_ps_info.opp_ps) > rtl_p2p_ps_cmd(hw , P2P_PS_ENABLE); > > - 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_lps_notify(rtlpriv, rt_psmode); > } else { > if (rtl_get_fwlps_doze(hw)) { > RT_TRACE(rtlpriv, COMP_RF, DBG_DMESG, > "FW LPS enter ps_mode:%x\n", > ppsc->fwctrl_psmode); > - 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_lps_notify(rtlpriv, rt_psmode); > enter_fwlps = true; > ppsc->pwr_mode = ppsc->fwctrl_psmode; > -- > 2.1.2 >