Re: Patch "rtlwifi: btcoexist: Fix antenna selection code" has been added to the 4.13-stable tree

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

 



On 2017-09-10 13:37 +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote:

> This is a note to let you know that I've just added the patch titled
>
>     rtlwifi: btcoexist: Fix antenna selection code
>
> to the 4.13-stable tree which can be found at:
>     http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
>
> The filename of the patch is:
>      rtlwifi-btcoexist-fix-antenna-selection-code.patch
> and it can be found in the queue-4.13 subdirectory.
>
> If you, or anyone else, feels it should not be added to the stable tree,
> please let <stable@xxxxxxxxxxxxxxx> know about it.
>
>
> From 6d622692836950b3c943776f84c4557ff6c02f3b Mon Sep 17 00:00:00 2001
> From: Larry Finger <Larry.Finger@xxxxxxxxxxxx>
> Date: Mon, 4 Sep 2017 12:51:34 -0500
> Subject: rtlwifi: btcoexist: Fix antenna selection code
>
> From: Larry Finger <Larry.Finger@xxxxxxxxxxxx>
>
> commit 6d622692836950b3c943776f84c4557ff6c02f3b upstream.
>
> In commit 87d8a9f35202 ("rtlwifi: btcoex: call bind to setup btcoex"),
> the code turns on a call to exhalbtc_bind_bt_coex_withadapter(). This
> routine contains a bug that causes incorrect antenna selection for those
> HP laptops with only one antenna and an incorrectly programmed EFUSE.
> These boxes are the ones that need the ant_sel module parameter.

I am the unlucky owner of such a laptop.

> Fixes: 87d8a9f35202 ("rtlwifi: btcoex: call bind to setup btcoex")
> Signed-off-by: Larry Finger <Larry.Finger@xxxxxxxxxxxx>
> Cc: Ping-Ke Shih <pkshih@xxxxxxxxxxx>
> Cc: Yan-Hsuan Chuang <yhchuang@xxxxxxxxxxx>
> Cc: Birming Chiu <birming@xxxxxxxxxxx>
> Cc: Shaofu <shaofu@xxxxxxxxxxx>
> Cc: Steven Ting <steventing@xxxxxxxxxxx>
> Signed-off-by: Kalle Valo <kvalo@xxxxxxxxxxxxxx>
> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
>
> ---
>  drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c |   23 ++++++----
>  1 file changed, 16 insertions(+), 7 deletions(-)
>
> --- a/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
> @@ -173,6 +173,16 @@ static u8 halbtc_get_wifi_central_chnl(s
>  
>  u8 rtl_get_hwpg_single_ant_path(struct rtl_priv *rtlpriv)
>  {
> +	struct rtl_mod_params *mod_params = rtlpriv->cfg->mod_params;
> +
> +	/* override ant_num / ant_path */
> +	if (mod_params->ant_sel) {
> +		rtlpriv->btcoexist.btc_info.ant_num =
> +			(mod_params->ant_sel == 1 ? ANT_X2 : ANT_X1);
> +
> +		rtlpriv->btcoexist.btc_info.single_ant_path =
> +			(mod_params->ant_sel == 1 ? 0 : 1);
> +	}
>  	return rtlpriv->btcoexist.btc_info.single_ant_path;
>  }
>  
> @@ -183,6 +193,7 @@ u8 rtl_get_hwpg_bt_type(struct rtl_priv
>  
>  u8 rtl_get_hwpg_ant_num(struct rtl_priv *rtlpriv)
>  {
> +	struct rtl_mod_params *mod_params = rtlpriv->cfg->mod_params;
>  	u8 num;
>  
>  	if (rtlpriv->btcoexist.btc_info.ant_num == ANT_X2)
> @@ -190,6 +201,10 @@ u8 rtl_get_hwpg_ant_num(struct rtl_priv
>  	else
>  		num = 1;
>  
> +	/* override ant_num / ant_path */
> +	if (mod_params->ant_sel)
> +		num = (mod_params->ant_sel == 1 ? ANT_X2 : ANT_X1) + 1;
> +
>  	return num;
>  }
>  
> @@ -861,7 +876,7 @@ bool exhalbtc_bind_bt_coex_withadapter(v
>  {
>  	struct btc_coexist *btcoexist = &gl_bt_coexist;
>  	struct rtl_priv *rtlpriv = adapter;
> -	u8 ant_num = 2, chip_type, single_ant_path = 0;
> +	u8 ant_num = 2, chip_type;
>  
>  	if (btcoexist->binded)
>  		return false;
> @@ -896,12 +911,6 @@ bool exhalbtc_bind_bt_coex_withadapter(v
>  	ant_num = rtl_get_hwpg_ant_num(rtlpriv);
>  	exhalbtc_set_ant_num(rtlpriv, BT_COEX_ANT_TYPE_PG, ant_num);
>  
> -	/* set default antenna position to main  port */
> -	btcoexist->board_info.btdm_ant_pos = BTC_ANTENNA_AT_MAIN_PORT;
> -
> -	single_ant_path = rtl_get_hwpg_single_ant_path(rtlpriv);
> -	exhalbtc_set_single_ant_path(single_ant_path);
> -
>  	if (rtl_get_hwpg_package_type(rtlpriv) == 0)
>  		btcoexist->board_info.tfbga_package = false;
>  	else if (rtl_get_hwpg_package_type(rtlpriv) == 1)
>
>
> Patches currently in stable-queue which might be from Larry.Finger@xxxxxxxxxxxx are
>
> queue-4.13/rtlwifi-btcoexist-fix-breakage-of-ant_sel-for-rtl8723be.patch
> queue-4.13/rtlwifi-btcoexist-fix-antenna-selection-code.patch

After applying these patches on top of 4.13.1 the WiFi on my laptop
works again (thanks, Larry!), but now rtl8723be needs the ant_sel=2
parameter which is a bit odd, because previously it had been working
(only) with ant_sel=1.  This looks like it has not been intended?

Cheers,
       Sven



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]