Skip to contentSkip to conversation

ath11k: add WMI calls to manually add/del/pause/resume TWT dialogs

PATCH In review Aloka Dixit 2 participants 3 messages Jan 31, 2022 – Feb 1, 2022 Qualcomm Atheros ATH11K wireless driver

lore
Share & tools
lore
#0 lore raw

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
index 4eda15c56b04..e89beff4f6ce 100644
@@ -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
#1 lore raw

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
index e89beff4f6ce..b080d535e578 100644
@@ -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
index 4c0740394c95..8ee5759fadf8 100644
@@ -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
index 90fcd6adf2d5..ed899055944e 100644
@@ -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
#2 lore raw
In reply to Aloka Dixit
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

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