rtlwifi: Add rx ampdu cfg for btcoexist.

If RX ampdu is too long, BT will have less time.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Yan-Hsuan Chuang <yhchuang@realtek.com>
Cc: Birming Chiu <birming@realtek.com>
Cc: Shaofu <shaofu@realtek.com>
Cc: Steven Ting <steventing@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Ping-Ke Shih
2017-06-18 11:12:47 -05:00
committed by Kalle Valo
부모 54685f9c7a
커밋 2635664e6e
6개의 변경된 파일58개의 추가작업 그리고 2개의 파일을 삭제

파일 보기

@@ -272,14 +272,24 @@ static void halbtc_disable_low_power(struct btc_coexist *btcoexist,
static void halbtc_aggregation_check(struct btc_coexist *btcoexist)
{
bool need_to_act = false;
static unsigned long pre_time;
unsigned long cur_time = 0;
struct rtl_priv *rtlpriv = btcoexist->adapter;
/* To void continuous deleteBA=>addBA=>deleteBA=>addBA
* This function is not allowed to continuous called
* It can only be called after 8 seconds
*/
cur_time = jiffies;
if (jiffies_to_msecs(cur_time - pre_time) <= 8000) {
/* over 8 seconds you can execute this function again. */
return;
}
pre_time = cur_time;
if (btcoexist->bt_info.reject_agg_pkt) {
;/* TODO: reject */
need_to_act = true;
btcoexist->bt_info.pre_reject_agg_pkt =
btcoexist->bt_info.reject_agg_pkt;
} else {
@@ -304,8 +314,10 @@ static void halbtc_aggregation_check(struct btc_coexist *btcoexist)
btcoexist->bt_info.pre_agg_buf_size =
btcoexist->bt_info.agg_buf_size;
}
}
if (need_to_act)
rtl_rx_ampdu_apply(rtlpriv);
}
}
static u32 halbtc_get_bt_patch_version(struct btc_coexist *btcoexist)

파일 보기

@@ -46,6 +46,7 @@ static struct rtl_btc_ops rtl_btc_operation = {
.btc_is_bt_disabled = rtl_btc_is_bt_disabled,
.btc_special_packet_notify = rtl_btc_special_packet_notify,
.btc_record_pwr_mode = rtl_btc_record_pwr_mode,
.btc_get_ampdu_cfg = rtl_btc_get_ampdu_cfg,
};
void rtl_btc_record_pwr_mode(struct rtl_priv *rtlpriv, u8 *buf, u8 len)
@@ -60,6 +61,17 @@ void rtl_btc_record_pwr_mode(struct rtl_priv *rtlpriv, u8 *buf, u8 len)
memcpy(gl_bt_coexist.pwr_mode_val, buf, safe_len);
}
void rtl_btc_get_ampdu_cfg(struct rtl_priv *rtlpriv, u8 *reject_agg,
u8 *ctrl_agg_size, u8 *agg_size)
{
if (reject_agg)
*reject_agg = gl_bt_coexist.bt_info.reject_agg_pkt;
if (ctrl_agg_size)
*ctrl_agg_size = gl_bt_coexist.bt_info.bt_ctrl_agg_buf_size;
if (agg_size)
*agg_size = gl_bt_coexist.bt_info.agg_buf_size;
}
void rtl_btc_init_variables(struct rtl_priv *rtlpriv)
{
exhalbtc_initlize_variables();

파일 보기

@@ -44,6 +44,8 @@ bool rtl_btc_is_disable_edca_turbo(struct rtl_priv *rtlpriv);
bool rtl_btc_is_bt_disabled(struct rtl_priv *rtlpriv);
void rtl_btc_special_packet_notify(struct rtl_priv *rtlpriv, u8 pkt_type);
void rtl_btc_record_pwr_mode(struct rtl_priv *rtlpriv, u8 *buf, u8 len);
void rtl_btc_get_ampdu_cfg(struct rtl_priv *rtlpriv, u8 *reject_agg,
u8 *ctrl_agg_size, u8 *agg_size);
struct rtl_btc_ops *rtl_btc_get_ops_pointer(void);