Skip to content

Commit 2542469

Browse files
Tzu-En HuangKalle Valo
authored andcommitted
rtw88: fix non-increase management packet sequence number
In previous setting, management packets' sequence numbers will not increase and always stay at 0. Add hw sequence number support for mgmt packets. The table below shows different sequence number setting in the tx descriptor. seq num ctrl | EN_HWSEQ | DISQSELSEL | HW_SSN_SEL ------------------------------------------------------ sw ctrl | 0 | N/A | N/A hw ctrl per MACID | 1 | 0 | N/A hw ctrl per HWREG | 1 | 1 |HWREG(0/1/2/3) Signed-off-by: Tzu-En Huang <[email protected]> Signed-off-by: Yan-Hsuan Chuang <[email protected]> Reviewed-by: Brian Norris <[email protected]> Tested-by: Brian Norris <[email protected]> Signed-off-by: Kalle Valo <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 8bc513b commit 2542469

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

drivers/net/wireless/realtek/rtw88/main.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -574,6 +574,9 @@ struct rtw_tx_pkt_info {
574574
bool short_gi;
575575
bool report;
576576
bool rts;
577+
bool dis_qselseq;
578+
bool en_hwseq;
579+
u8 hw_ssn_sel;
577580
};
578581

579582
struct rtw_rx_pkt_stat {

drivers/net/wireless/realtek/rtw88/tx.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ void rtw_tx_fill_tx_desc(struct rtw_tx_pkt_info *pkt_info, struct sk_buff *skb)
5858
SET_TX_DESC_SPE_RPT(txdesc, pkt_info->report);
5959
SET_TX_DESC_SW_DEFINE(txdesc, pkt_info->sn);
6060
SET_TX_DESC_USE_RTS(txdesc, pkt_info->rts);
61+
SET_TX_DESC_DISQSELSEQ(txdesc, pkt_info->dis_qselseq);
62+
SET_TX_DESC_EN_HWSEQ(txdesc, pkt_info->en_hwseq);
63+
SET_TX_DESC_HW_SSN_SEL(txdesc, pkt_info->hw_ssn_sel);
6164
}
6265
EXPORT_SYMBOL(rtw_tx_fill_tx_desc);
6366

@@ -227,6 +230,9 @@ static void rtw_tx_mgmt_pkt_info_update(struct rtw_dev *rtwdev,
227230
pkt_info->use_rate = true;
228231
pkt_info->rate_id = 6;
229232
pkt_info->dis_rate_fallback = true;
233+
pkt_info->dis_qselseq = true;
234+
pkt_info->en_hwseq = true;
235+
pkt_info->hw_ssn_sel = 0;
230236
}
231237

232238
static void rtw_tx_data_pkt_info_update(struct rtw_dev *rtwdev,

drivers/net/wireless/realtek/rtw88/tx.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@
5353
le32p_replace_bits((__le32 *)(txdesc) + 0x02, value, BIT(19))
5454
#define SET_TX_DESC_SW_DEFINE(tx_desc, value) \
5555
le32p_replace_bits((__le32 *)(txdesc) + 0x06, value, GENMASK(11, 0))
56+
#define SET_TX_DESC_DISQSELSEQ(txdesc, value) \
57+
le32p_replace_bits((__le32 *)(txdesc) + 0x00, value, BIT(31))
58+
#define SET_TX_DESC_EN_HWSEQ(txdesc, value) \
59+
le32p_replace_bits((__le32 *)(txdesc) + 0x08, value, BIT(15))
60+
#define SET_TX_DESC_HW_SSN_SEL(txdesc, value) \
61+
le32p_replace_bits((__le32 *)(txdesc) + 0x03, value, GENMASK(7, 6))
5662

5763
enum rtw_tx_desc_queue_select {
5864
TX_DESC_QSEL_TID0 = 0,

0 commit comments

Comments
 (0)