Skip to content

Commit 178b8e7

Browse files
Ping-Ke ShihKalle Valo
authored andcommitted
wifi: rtw89: add C2H event handlers of RFK log and report
Trigger a RFK (RF calibration) in firmware by a H2C command, and in progress it reports log and a result finally by C2H events. Firstly, add prototype of the C2H event handlers to have a simple picture of framework. The callers who trigger H2C will wait until a C2H event is received, so we must process these C2H events in receiving process. Thus, mark this kind of C2H events as atomic. Also, timestamp is also useful for debugging, mark C2H events carrying RFK log as atomic as well. Signed-off-by: Ping-Ke Shih <[email protected]> Signed-off-by: Kalle Valo <[email protected]> Link: https://msgid.link/[email protected]
1 parent 7a9192e commit 178b8e7

File tree

3 files changed

+96
-0
lines changed

3 files changed

+96
-0
lines changed

drivers/net/wireless/realtek/rtw89/fw.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3566,6 +3566,8 @@ static bool rtw89_fw_c2h_chk_atomic(struct rtw89_dev *rtwdev,
35663566
return false;
35673567
case RTW89_C2H_CAT_MAC:
35683568
return rtw89_mac_c2h_chk_atomic(rtwdev, class, func);
3569+
case RTW89_C2H_CAT_OUTSRC:
3570+
return rtw89_phy_c2h_chk_atomic(rtwdev, class, func);
35693571
}
35703572
}
35713573

drivers/net/wireless/realtek/rtw89/phy.c

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2445,6 +2445,85 @@ void (* const rtw89_phy_c2h_ra_handler[])(struct rtw89_dev *rtwdev,
24452445
[RTW89_PHY_C2H_FUNC_TXSTS] = NULL,
24462446
};
24472447

2448+
static void
2449+
rtw89_phy_c2h_rfk_log_iqk(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
2450+
{
2451+
}
2452+
2453+
static void
2454+
rtw89_phy_c2h_rfk_log_dpk(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
2455+
{
2456+
}
2457+
2458+
static void
2459+
rtw89_phy_c2h_rfk_log_dack(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
2460+
{
2461+
}
2462+
2463+
static void
2464+
rtw89_phy_c2h_rfk_log_rxdck(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
2465+
{
2466+
}
2467+
2468+
static void
2469+
rtw89_phy_c2h_rfk_log_tssi(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
2470+
{
2471+
}
2472+
2473+
static void
2474+
rtw89_phy_c2h_rfk_log_txgapk(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
2475+
{
2476+
}
2477+
2478+
static
2479+
void (* const rtw89_phy_c2h_rfk_log_handler[])(struct rtw89_dev *rtwdev,
2480+
struct sk_buff *c2h, u32 len) = {
2481+
[RTW89_PHY_C2H_RFK_LOG_FUNC_IQK] = rtw89_phy_c2h_rfk_log_iqk,
2482+
[RTW89_PHY_C2H_RFK_LOG_FUNC_DPK] = rtw89_phy_c2h_rfk_log_dpk,
2483+
[RTW89_PHY_C2H_RFK_LOG_FUNC_DACK] = rtw89_phy_c2h_rfk_log_dack,
2484+
[RTW89_PHY_C2H_RFK_LOG_FUNC_RXDCK] = rtw89_phy_c2h_rfk_log_rxdck,
2485+
[RTW89_PHY_C2H_RFK_LOG_FUNC_TSSI] = rtw89_phy_c2h_rfk_log_tssi,
2486+
[RTW89_PHY_C2H_RFK_LOG_FUNC_TXGAPK] = rtw89_phy_c2h_rfk_log_txgapk,
2487+
};
2488+
2489+
static void
2490+
rtw89_phy_c2h_rfk_report_state(struct rtw89_dev *rtwdev, struct sk_buff *c2h, u32 len)
2491+
{
2492+
}
2493+
2494+
static
2495+
void (* const rtw89_phy_c2h_rfk_report_handler[])(struct rtw89_dev *rtwdev,
2496+
struct sk_buff *c2h, u32 len) = {
2497+
[RTW89_PHY_C2H_RFK_REPORT_FUNC_STATE] = rtw89_phy_c2h_rfk_report_state,
2498+
};
2499+
2500+
bool rtw89_phy_c2h_chk_atomic(struct rtw89_dev *rtwdev, u8 class, u8 func)
2501+
{
2502+
switch (class) {
2503+
case RTW89_PHY_C2H_RFK_LOG:
2504+
switch (func) {
2505+
case RTW89_PHY_C2H_RFK_LOG_FUNC_IQK:
2506+
case RTW89_PHY_C2H_RFK_LOG_FUNC_DPK:
2507+
case RTW89_PHY_C2H_RFK_LOG_FUNC_DACK:
2508+
case RTW89_PHY_C2H_RFK_LOG_FUNC_RXDCK:
2509+
case RTW89_PHY_C2H_RFK_LOG_FUNC_TSSI:
2510+
case RTW89_PHY_C2H_RFK_LOG_FUNC_TXGAPK:
2511+
return true;
2512+
default:
2513+
return false;
2514+
}
2515+
case RTW89_PHY_C2H_RFK_REPORT:
2516+
switch (func) {
2517+
case RTW89_PHY_C2H_RFK_REPORT_FUNC_STATE:
2518+
return true;
2519+
default:
2520+
return false;
2521+
}
2522+
default:
2523+
return false;
2524+
}
2525+
}
2526+
24482527
void rtw89_phy_c2h_handle(struct rtw89_dev *rtwdev, struct sk_buff *skb,
24492528
u32 len, u8 class, u8 func)
24502529
{
@@ -2456,6 +2535,14 @@ void rtw89_phy_c2h_handle(struct rtw89_dev *rtwdev, struct sk_buff *skb,
24562535
if (func < RTW89_PHY_C2H_FUNC_RA_MAX)
24572536
handler = rtw89_phy_c2h_ra_handler[func];
24582537
break;
2538+
case RTW89_PHY_C2H_RFK_LOG:
2539+
if (func < ARRAY_SIZE(rtw89_phy_c2h_rfk_log_handler))
2540+
handler = rtw89_phy_c2h_rfk_log_handler[func];
2541+
break;
2542+
case RTW89_PHY_C2H_RFK_REPORT:
2543+
if (func < ARRAY_SIZE(rtw89_phy_c2h_rfk_report_handler))
2544+
handler = rtw89_phy_c2h_rfk_report_handler[func];
2545+
break;
24592546
case RTW89_PHY_C2H_CLASS_DM:
24602547
if (func == RTW89_PHY_C2H_DM_FUNC_LOWRT_RTY)
24612548
return;

drivers/net/wireless/realtek/rtw89/phy.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,10 @@ enum rtw89_phy_c2h_rfk_log_func {
147147
RTW89_PHY_C2H_RFK_LOG_FUNC_NUM,
148148
};
149149

150+
enum rtw89_phy_c2h_rfk_report_func {
151+
RTW89_PHY_C2H_RFK_REPORT_FUNC_STATE = 0,
152+
};
153+
150154
enum rtw89_phy_c2h_dm_func {
151155
RTW89_PHY_C2H_DM_FUNC_FW_TEST,
152156
RTW89_PHY_C2H_DM_FUNC_FW_TRIG_TX_RPT,
@@ -160,6 +164,8 @@ enum rtw89_phy_c2h_class {
160164
RTW89_PHY_C2H_CLASS_RUA,
161165
RTW89_PHY_C2H_CLASS_RA,
162166
RTW89_PHY_C2H_CLASS_DM,
167+
RTW89_PHY_C2H_RFK_LOG = 0x8,
168+
RTW89_PHY_C2H_RFK_REPORT = 0x9,
163169
RTW89_PHY_C2H_CLASS_BTC_MIN = 0x10,
164170
RTW89_PHY_C2H_CLASS_BTC_MAX = 0x17,
165171
RTW89_PHY_C2H_CLASS_MAX,
@@ -800,6 +806,7 @@ void rtw89_phy_ra_updata_sta(struct rtw89_dev *rtwdev, struct ieee80211_sta *sta
800806
void rtw89_phy_rate_pattern_vif(struct rtw89_dev *rtwdev,
801807
struct ieee80211_vif *vif,
802808
const struct cfg80211_bitrate_mask *mask);
809+
bool rtw89_phy_c2h_chk_atomic(struct rtw89_dev *rtwdev, u8 class, u8 func);
803810
void rtw89_phy_c2h_handle(struct rtw89_dev *rtwdev, struct sk_buff *skb,
804811
u32 len, u8 class, u8 func);
805812
void rtw89_phy_cfo_track(struct rtw89_dev *rtwdev);

0 commit comments

Comments
 (0)