mirror of
https://github.com/torvalds/linux.git
synced 2026-06-05 13:06:59 +02:00
wifi: rtw89: mac: define registers of agg_limit and txcnt_limit to share common flow
The agg_limit and txcnt_limit are used by BT-coexistence to reduce WiFi TX time at once to share time with Bluetooth devices. Since these registers address are different from WiFi 6 and 7 chips, define them accordingly. Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/20250217063053.38936-2-pkshih@realtek.com
This commit is contained in:
parent
bdce057424
commit
a5b8fd3f07
|
|
@ -6433,6 +6433,7 @@ __rtw89_mac_set_tx_time(struct rtw89_dev *rtwdev, struct rtw89_sta_link *rtwsta_
|
|||
u32 tx_time)
|
||||
{
|
||||
#define MAC_AX_DFLT_TX_TIME 5280
|
||||
const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
|
||||
u8 mac_idx = rtwsta_link->rtwvif_link->mac_idx;
|
||||
u32 max_tx_time = tx_time == 0 ? MAC_AX_DFLT_TX_TIME : tx_time;
|
||||
u32 reg;
|
||||
|
|
@ -6448,8 +6449,8 @@ __rtw89_mac_set_tx_time(struct rtw89_dev *rtwdev, struct rtw89_sta_link *rtwsta_
|
|||
return ret;
|
||||
}
|
||||
|
||||
reg = rtw89_mac_reg_by_idx(rtwdev, R_AX_AMPDU_AGG_LIMIT, mac_idx);
|
||||
rtw89_write32_mask(rtwdev, reg, B_AX_AMPDU_MAX_TIME_MASK,
|
||||
reg = rtw89_mac_reg_by_idx(rtwdev, mac->agg_limit.addr, mac_idx);
|
||||
rtw89_write32_mask(rtwdev, reg, mac->agg_limit.mask,
|
||||
max_tx_time >> 5);
|
||||
}
|
||||
|
||||
|
|
@ -6475,6 +6476,7 @@ int rtw89_mac_set_tx_time(struct rtw89_dev *rtwdev, struct rtw89_sta_link *rtwst
|
|||
int rtw89_mac_get_tx_time(struct rtw89_dev *rtwdev, struct rtw89_sta_link *rtwsta_link,
|
||||
u32 *tx_time)
|
||||
{
|
||||
const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
|
||||
u8 mac_idx = rtwsta_link->rtwvif_link->mac_idx;
|
||||
u32 reg;
|
||||
int ret = 0;
|
||||
|
|
@ -6488,8 +6490,8 @@ int rtw89_mac_get_tx_time(struct rtw89_dev *rtwdev, struct rtw89_sta_link *rtwst
|
|||
return ret;
|
||||
}
|
||||
|
||||
reg = rtw89_mac_reg_by_idx(rtwdev, R_AX_AMPDU_AGG_LIMIT, mac_idx);
|
||||
*tx_time = rtw89_read32_mask(rtwdev, reg, B_AX_AMPDU_MAX_TIME_MASK) << 5;
|
||||
reg = rtw89_mac_reg_by_idx(rtwdev, mac->agg_limit.addr, mac_idx);
|
||||
*tx_time = rtw89_read32_mask(rtwdev, reg, mac->agg_limit.mask) << 5;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
@ -6517,6 +6519,7 @@ int rtw89_mac_set_tx_retry_limit(struct rtw89_dev *rtwdev,
|
|||
int rtw89_mac_get_tx_retry_limit(struct rtw89_dev *rtwdev,
|
||||
struct rtw89_sta_link *rtwsta_link, u8 *tx_retry)
|
||||
{
|
||||
const struct rtw89_mac_gen_def *mac = rtwdev->chip->mac_def;
|
||||
u8 mac_idx = rtwsta_link->rtwvif_link->mac_idx;
|
||||
u32 reg;
|
||||
int ret = 0;
|
||||
|
|
@ -6530,8 +6533,8 @@ int rtw89_mac_get_tx_retry_limit(struct rtw89_dev *rtwdev,
|
|||
return ret;
|
||||
}
|
||||
|
||||
reg = rtw89_mac_reg_by_idx(rtwdev, R_AX_TXCNT, mac_idx);
|
||||
*tx_retry = rtw89_read32_mask(rtwdev, reg, B_AX_L_TXCNT_LMT_MASK);
|
||||
reg = rtw89_mac_reg_by_idx(rtwdev, mac->txcnt_limit.addr, mac_idx);
|
||||
*tx_retry = rtw89_read32_mask(rtwdev, reg, mac->txcnt_limit.mask);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
|
@ -6809,6 +6812,8 @@ const struct rtw89_mac_gen_def rtw89_mac_gen_ax = {
|
|||
.mask = B_AX_RXTRIG_RU26_DIS,
|
||||
},
|
||||
.wow_ctrl = {.addr = R_AX_WOW_CTRL, .mask = B_AX_WOW_WOWEN,},
|
||||
.agg_limit = {.addr = R_AX_AMPDU_AGG_LIMIT, .mask = B_AX_AMPDU_MAX_TIME_MASK,},
|
||||
.txcnt_limit = {.addr = R_AX_TXCNT, .mask = B_AX_L_TXCNT_LMT_MASK,},
|
||||
|
||||
.check_mac_en = rtw89_mac_check_mac_en_ax,
|
||||
.sys_init = sys_init_ax,
|
||||
|
|
|
|||
|
|
@ -964,6 +964,8 @@ struct rtw89_mac_gen_def {
|
|||
struct rtw89_reg_def bfee_ctrl;
|
||||
struct rtw89_reg_def narrow_bw_ru_dis;
|
||||
struct rtw89_reg_def wow_ctrl;
|
||||
struct rtw89_reg_def agg_limit;
|
||||
struct rtw89_reg_def txcnt_limit;
|
||||
|
||||
int (*check_mac_en)(struct rtw89_dev *rtwdev, u8 band,
|
||||
enum rtw89_mac_hwmod_sel sel);
|
||||
|
|
|
|||
|
|
@ -2585,6 +2585,8 @@ const struct rtw89_mac_gen_def rtw89_mac_gen_be = {
|
|||
.mask = B_BE_RXTRIG_RU26_DIS,
|
||||
},
|
||||
.wow_ctrl = {.addr = R_BE_WOW_CTRL, .mask = B_BE_WOW_WOWEN,},
|
||||
.agg_limit = {.addr = R_BE_AMPDU_AGG_LIMIT, .mask = B_BE_AMPDU_MAX_TIME_MASK,},
|
||||
.txcnt_limit = {.addr = R_BE_TXCNT, .mask = B_BE_L_TXCNT_LMT_MASK,},
|
||||
|
||||
.check_mac_en = rtw89_mac_check_mac_en_be,
|
||||
.sys_init = sys_init_be,
|
||||
|
|
|
|||
|
|
@ -6618,6 +6618,13 @@
|
|||
#define B_BE_RTS_LIMIT_IN_OFDM6 BIT(1)
|
||||
#define B_BE_CHECK_CCK_EN BIT(0)
|
||||
|
||||
#define R_BE_TXCNT 0x1082C
|
||||
#define R_BE_TXCNT_C1 0x1482C
|
||||
#define B_BE_ADD_TXCNT_BY BIT(31)
|
||||
#define B_BE_TOTAL_TC_OPT BIT(30)
|
||||
#define B_BE_S_TXCNT_LMT_MASK GENMASK(29, 24)
|
||||
#define B_BE_L_TXCNT_LMT_MASK GENMASK(21, 16)
|
||||
|
||||
#define R_BE_MBSSID_DROP_0 0x1083C
|
||||
#define R_BE_MBSSID_DROP_0_C1 0x1483C
|
||||
#define B_BE_GI_LTF_FB_SEL BIT(30)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user