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:
@@ -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);
|
||||
|
||||
|
Reference in New Issue
Block a user