ath11k: add WMI calls to manually add/del/pause/resume TWT dialogs
PATCH v8 1/2 ath11k: add WMI calls to manually add/del/pause/resume TWT dialogs
From: John Crispin <[email protected]>
These calls are used for debugging and will be required for WFA certification tests.
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01179-QCAHKSWPL_SILICONZ-1
---
Changes in V8
- No functional changes from V6/V7, only rebased.
Changes in V7
- No functional changes from V6, only rebased.
Changes in V6
- new function ath11k_wmi_twt_add_dialog_event_status()
- re-added WMI_TAG_TWT_ADD_DIALOG_COMPLETE_EVENT in wmi_tlv_policies which was missed in V5.
Changes in V5
- Setting and resetting of twt_enabled in WMI functions
- ath11k_dbg() instead of ath11k_info() in ath11k_wmi_twt_add_dialog_event()
- Made WMI error messages more readable
drivers/net/wireless/ath/ath11k/core.h | 1 + drivers/net/wireless/ath/ath11k/wmi.c | 247 ++++++++++++++++++++++++- drivers/net/wireless/ath/ath11k/wmi.h | 114 ++++++++++++ 3 files changed, 358 insertions(+), 4 deletions(-)
drivers/net/wireless/ath/ath11k/core.h +1 -0
@@ -604,6 +604,7 @@ struct ath11k {bool pending_11d;bool regdom_set_by_user;int hw_rate_code; +u8 twt_enabled; };struct ath11k_band_cap {
drivers/net/wireless/ath/ath11k/wmi.c +243 -4
288 lines not on this page · raw message
drivers/net/wireless/ath/ath11k/wmi.h +114 -0
126 lines not on this page · raw message
base-commit: 58d16d910730374556da55489ce239625defcc72
Signature · 1 line
2.31.1
PATCH v8 2/2 ath11k: add debugfs for TWT debug calls
From: John Crispin <[email protected]>
New debugfs files to manually add/delete/pause/resume TWT dialogs for test/debug purposes.
The debugfs files expect the following parameters
- Add dialog
echo '<Peer_MAC> <Dialog_ID> <Wake_Interval_Usec> <Wake_Interval_Mantis>
<Wake_Duration_Usec> <First_SP_Offset> <TWT_Command> <1:Broadcast /0:Individual> <1:Triggered / 0:Untriggered> <1:Unannounced /0:Announced> <1:Protected / 0:Unprotected>' > /sys/kernel/debug/ieee80211/phyX/netdev:wlanX/twt/add_dialog
Example (Non-triggered and un-announced):
echo '00:03:7F:20:13:52 1 102400 100 30720 20480 4 0 0 1 0' >
/sys/kernel/debug/ieee80211/phy0/netdev:wlan0/twt/add_dialog
- Delete dialog
echo '<Peer_MAC> <Dialog_ID>' >
/sys/kernel/debug/ieee80211/phyX/netdev:wlanX/twt/del_dialog
- Pause dialog
echo '<Peer_MAC> <Dialog_ID>' >
/sys/kernel/debug/ieee80211/phyX/netdev:wlanX/twt/pause_dialog
- Resume dialog
echo '<Peer_MAC> <Dialog_ID> <SP_Offset_Usec> <Next_TWT_Size>' >
/sys/kernel/debug/ieee80211/phyX/netdev:wlanX/twt/resume_dialog
Example:
echo '00:03:7F:20:13:52 1 2000000 3' >
/sys/kernel/debug/ieee80211/phy0/netdev:wlan0/twt/resume_dialog
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01179-QCAHKSWPL_SILICONZ-1
---
Changes in V8
- No functional changes from V6/V7, only rebased.
Changes in V7
- No functional changes from V6, only rebased.
Changes in V6
- Moved all functions from debug.c to debugfs.c
- ath11k_debugfs_add_interface() returns int instead of void
Changes in V5
- TWT directory created during ath11k_mac_op_add_interface() instead of during TWT enable command.
- File write operation check for twt_enabled.
- Used CONFIG_ATH11K_DEBUGFS instead of CONFIG_MAC80211_DEBUGFS.
- Example commands in commit description.
drivers/net/wireless/ath/ath11k/core.h | 3 + drivers/net/wireless/ath/ath11k/debugfs.c | 222 ++++++++++++++++++++++ drivers/net/wireless/ath/ath11k/debugfs.h | 14 +- drivers/net/wireless/ath/ath11k/mac.c | 7 + 4 files changed, 245 insertions(+), 1 deletion(-)
drivers/net/wireless/ath/ath11k/core.h +3 -0
@@ -263,6 +263,9 @@ struct ath11k_vif {bool bcca_zero_sent;bool do_not_send_tmpl;struct ieee80211_chanctx_conf chanctx; +#ifdef CONFIG_ATH11K_DEBUGFS +struct dentry *debugfs_twt; +#endif /* CONFIG_ATH11K_DEBUGFS */ };struct ath11k_vif_iter {
drivers/net/wireless/ath/ath11k/debugfs.c +222 -0
225 lines not on this page · raw message
drivers/net/wireless/ath/ath11k/debugfs.h +13 -1
@@ -151,6 +151,9 @@ static inline int ath11k_debugfs_rx_filter(struct ath11k *ar) return ar->debug.rx_filter; } +int ath11k_debugfs_add_interface (struct ath11k_vif *arvif); +void ath11k_debugfs_remove_interface (struct ath11k_vif *arvif); +#else static inline int ath11k_debugfs_soc_create (struct ath11k_base *ab) {
@@ -224,6 +227,15 @@ static inline int ath11k_debugfs_get_fw_stats(struct ath11k *ar,return 0 ; } -#endif /* CONFIG_MAC80211_DEBUGFS*/ +static inline int ath11k_debugfs_add_interface (struct ath11k_vif *arvif) +{ +return 0 ; +} + +static inline void ath11k_debugfs_remove_interface (struct ath11k_vif *arvif) +{ +} + +#endif /* CONFIG_ATH11K_DEBUGFS*/ #endif /* _ATH11K_DEBUGFS_H_ */
drivers/net/wireless/ath/ath11k/mac.c +7 -0
@@ -6354,6 +6354,10 @@ static int ath11k_mac_op_add_interface(struct ieee80211_hw *hw, } } + ret =ath11k_debugfs_add_interface (arvif); +if (ret) + goto err_peer_del; +mutex_unlock (&ar->conf_mutex);return 0 ;
@@ -6388,6 +6392,7 @@ static int ath11k_mac_op_add_interface(struct ieee80211_hw *hw,spin_unlock_bh (&ar->data_lock); err: +ath11k_debugfs_remove_interface (arvif);mutex_unlock (&ar->conf_mutex);return ret;
@@ -6486,6 +6491,8 @@ static void ath11k_mac_op_remove_interface(struct ieee80211_hw *hw,/* Recalc txpower for remaining vdev */ ath11k_mac_txpower_recalc (ar); +ath11k_debugfs_remove_interface (arvif); +/* TODO: recal traffic pause state based on the available vdevs */ mutex_unlock (&ar->conf_mutex);
Signature · 1 line
2.31.1
Quoted 7 lines · Aloka Dixit
These calls are used for debugging and will be required for WFA certification tests.
Tested-on: IPQ8074 hw2.0 AHB WLAN.HK.2.5.0.1-01179-QCAHKSWPL_SILICONZ-1
Signed-off-by John Crispin <[email protected]>Signed-off-by Aloka Dixit <[email protected]>Signed-off-by Kalle Valo <[email protected]>
2 patches applied to ath-next branch of ath.git, thanks.
3d00e8b5b818 ath11k: add WMI calls to manually add/del/pause/resume TWT dialogs fe98a6137d03 ath11k: add debugfs for TWT debug calls
Signature · 3 lines
https://patchwork.kernel.org/project/linux-wireless/patch/[email protected]/ https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches