Skip to content

Commit 8b9754b

Browse files
Bitterblue SmithKalle Valo
authored andcommitted
wifi: rtl8xxxu: Add rate control code for RTL8188EU
Copied from the newer vendor driver, v5.2.2.4. Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com> Reviewed-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/5acc1e5d-62d6-3a6a-0f9e-cbc8b809b1d7@gmail.com
1 parent 3dfb8e8 commit 8b9754b

File tree

3 files changed

+729
-30
lines changed

3 files changed

+729
-30
lines changed

drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.h

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,7 @@ struct rtl8xxxu_txdesc40 {
531531
#define TXDESC32_CTS_SELF_ENABLE BIT(11)
532532
#define TXDESC32_RTS_CTS_ENABLE BIT(12)
533533
#define TXDESC32_HW_RTS_ENABLE BIT(13)
534+
#define TXDESC32_PT_STAGE_MASK GENMASK(17, 15)
534535
#define TXDESC_PRIME_CH_OFF_LOWER BIT(20)
535536
#define TXDESC_PRIME_CH_OFF_UPPER BIT(21)
536537
#define TXDESC32_SHORT_PREAMBLE BIT(24)
@@ -1376,6 +1377,39 @@ struct rtl8xxxu_ra_report {
13761377
u8 desc_rate;
13771378
};
13781379

1380+
struct rtl8xxxu_ra_info {
1381+
u8 rate_id;
1382+
u32 rate_mask;
1383+
u32 ra_use_rate;
1384+
u8 rate_sgi;
1385+
u8 rssi_sta_ra; /* Percentage */
1386+
u8 pre_rssi_sta_ra;
1387+
u8 sgi_enable;
1388+
u8 decision_rate;
1389+
u8 pre_rate;
1390+
u8 highest_rate;
1391+
u8 lowest_rate;
1392+
u32 nsc_up;
1393+
u32 nsc_down;
1394+
u32 total;
1395+
u16 retry[5];
1396+
u16 drop;
1397+
u16 rpt_time;
1398+
u16 pre_min_rpt_time;
1399+
u8 dynamic_tx_rpt_timing_counter;
1400+
u8 ra_waiting_counter;
1401+
u8 ra_pending_counter;
1402+
u8 ra_drop_after_down;
1403+
u8 pt_try_state; /* 0 trying state, 1 for decision state */
1404+
u8 pt_stage; /* 0~6 */
1405+
u8 pt_stop_count; /* Stop PT counter */
1406+
u8 pt_pre_rate; /* if rate change do PT */
1407+
u8 pt_pre_rssi; /* if RSSI change 5% do PT */
1408+
u8 pt_mode_ss; /* decide which rate should do PT */
1409+
u8 ra_stage; /* StageRA, decide how many times RA will be done between PT */
1410+
u8 pt_smooth_factor;
1411+
};
1412+
13791413
#define CFO_TH_XTAL_HIGH 20 /* kHz */
13801414
#define CFO_TH_XTAL_LOW 10 /* kHz */
13811415
#define CFO_TH_ATC 80 /* kHz */
@@ -1509,6 +1543,7 @@ struct rtl8xxxu_priv {
15091543
struct rtl8xxxu_btcoex bt_coex;
15101544
struct rtl8xxxu_ra_report ra_report;
15111545
struct rtl8xxxu_cfo_tracking cfo_tracking;
1546+
struct rtl8xxxu_ra_info ra_info;
15121547
};
15131548

15141549
struct rtl8xxxu_rx_urb {
@@ -1684,6 +1719,10 @@ void rtl8723bu_phy_init_antenna_selection(struct rtl8xxxu_priv *priv);
16841719
void rtl8723a_set_crystal_cap(struct rtl8xxxu_priv *priv, u8 crystal_cap);
16851720
void rtl8188f_set_crystal_cap(struct rtl8xxxu_priv *priv, u8 crystal_cap);
16861721
s8 rtl8723a_cck_rssi(struct rtl8xxxu_priv *priv, u8 cck_agc_rpt);
1722+
void rtl8xxxu_update_ra_report(struct rtl8xxxu_ra_report *rarpt,
1723+
u8 rate, u8 sgi, u8 bw);
1724+
void rtl8188e_ra_info_init_all(struct rtl8xxxu_ra_info *ra);
1725+
void rtl8188e_handle_ra_tx_report2(struct rtl8xxxu_priv *priv, struct sk_buff *skb);
16871726

16881727
extern struct rtl8xxxu_fileops rtl8188fu_fops;
16891728
extern struct rtl8xxxu_fileops rtl8188eu_fops;

0 commit comments

Comments
 (0)