2017-05-17 22:15:17

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [net-realtek-btcoexist] question about identical code for different branches


Hello everybody,

While looking into Coverity ID 1362263 I ran into the following piece
of code at
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c:1000:

1000void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num)
1001{
1002 if (BT_COEX_ANT_TYPE_PG == type) {
1003 gl_bt_coexist.board_info.pg_ant_num = ant_num;
1004 gl_bt_coexist.board_info.btdm_ant_num = ant_num;
1005 /* The antenna position:
1006 * Main (default) or Aux for pgAntNum=2 && btdmAntNum =1.
1007 * The antenna position should be determined by
1008 * auto-detect mechanism.
1009 * The following is assumed to main,
1010 * and those must be modified
1011 * if y auto-detect mechanism is ready
1012 */
1013 if ((gl_bt_coexist.board_info.pg_ant_num == 2) &&
1014 (gl_bt_coexist.board_info.btdm_ant_num == 1))
1015 gl_bt_coexist.board_info.btdm_ant_pos =
1016
BTC_ANTENNA_AT_MAIN_PORT;
1017 else
1018 gl_bt_coexist.board_info.btdm_ant_pos =
1019
BTC_ANTENNA_AT_MAIN_PORT;
1020 } else if (BT_COEX_ANT_TYPE_ANTDIV == type) {
1021 gl_bt_coexist.board_info.btdm_ant_num = ant_num;
1022 gl_bt_coexist.board_info.btdm_ant_pos =
1023
BTC_ANTENNA_AT_MAIN_PORT;
1024 } else if (type == BT_COEX_ANT_TYPE_DETECTED) {
1025 gl_bt_coexist.board_info.btdm_ant_num = ant_num;
1026 if (rtlpriv->cfg->mod_params->ant_sel == 1)
1027 gl_bt_coexist.board_info.btdm_ant_pos =
1028 BTC_ANTENNA_AT_AUX_PORT;
1029 else
1030 gl_bt_coexist.board_info.btdm_ant_pos =
1031 BTC_ANTENNA_AT_MAIN_PORT;
1032 }
1033}

The issue is that lines of code 1015-1016 and 1018-1019 are identical
for different branches.

My question here is if one of those assignments should be modified, or
the entire _if_ statement replaced and the function refactored?

I'd really appreciate any comment on this.

Thank you!
--
Gustavo A. R. Silva


2017-05-18 01:39:02

by Larry Finger

[permalink] [raw]
Subject: Re: [net-realtek-btcoexist] question about identical code for different branches

On 05/17/2017 04:52 PM, Gustavo A. R. Silva wrote:
>
> Hello everybody,
>
> While looking into Coverity ID 1362263 I ran into the following piece of code at
> drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c:1000:
>
> 1000void exhalbtc_set_ant_num(struct rtl_priv *rtlpriv, u8 type, u8 ant_num)
> 1001{
> 1002 if (BT_COEX_ANT_TYPE_PG == type) {
> 1003 gl_bt_coexist.board_info.pg_ant_num = ant_num;
> 1004 gl_bt_coexist.board_info.btdm_ant_num = ant_num;
> 1005 /* The antenna position:
> 1006 * Main (default) or Aux for pgAntNum=2 && btdmAntNum =1.
> 1007 * The antenna position should be determined by
> 1008 * auto-detect mechanism.
> 1009 * The following is assumed to main,
> 1010 * and those must be modified
> 1011 * if y auto-detect mechanism is ready
> 1012 */
> 1013 if ((gl_bt_coexist.board_info.pg_ant_num == 2) &&
> 1014 (gl_bt_coexist.board_info.btdm_ant_num == 1))
> 1015 gl_bt_coexist.board_info.btdm_ant_pos =
> 1016
> BTC_ANTENNA_AT_MAIN_PORT;
> 1017 else
> 1018 gl_bt_coexist.board_info.btdm_ant_pos =
> 1019
> BTC_ANTENNA_AT_MAIN_PORT;
> 1020 } else if (BT_COEX_ANT_TYPE_ANTDIV == type) {
> 1021 gl_bt_coexist.board_info.btdm_ant_num = ant_num;
> 1022 gl_bt_coexist.board_info.btdm_ant_pos =
> 1023
> BTC_ANTENNA_AT_MAIN_PORT;
> 1024 } else if (type == BT_COEX_ANT_TYPE_DETECTED) {
> 1025 gl_bt_coexist.board_info.btdm_ant_num = ant_num;
> 1026 if (rtlpriv->cfg->mod_params->ant_sel == 1)
> 1027 gl_bt_coexist.board_info.btdm_ant_pos =
> 1028 BTC_ANTENNA_AT_AUX_PORT;
> 1029 else
> 1030 gl_bt_coexist.board_info.btdm_ant_pos =
> 1031 BTC_ANTENNA_AT_MAIN_PORT;
> 1032 }
> 1033}
>
> The issue is that lines of code 1015-1016 and 1018-1019 are identical for
> different branches.
>
> My question here is if one of those assignments should be modified, or the
> entire _if_ statement replaced and the function refactored?
>
> I'd really appreciate any comment on this.
>
> Thank you!
> --
> Gustavo A. R. Silva

Gustavo,

Thanks for the notification. I will discuss with Realtek as to the proper fix.

Larry