mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-20 02:43:38 +00:00
This series is based on * 2020-07-10 ipq6018-ilq-11-0_qca_oem-034672b0676c37b1f4519e5720e18e95fe6236ef Add support for * qsdk kernel/v4.4 * qsdk ethernet subsystem * v5.7 ath11k backport + QualComm staging patches (wlan_ap_1.0) * ath11k-firmware * hostapd/iw/... Feature support * full boot, system detection * sysupgrade to nand * HE support via latest hostapd * driver support for usb, crypto, hwmon, cpufreq, ... Missing * NSS/HW flow offloading - FW blob is not redistributable Using the qsdk v4.4 is an intermediate solution while the vanilla is being tested. Vanilla kernel is almost on feature par. Work has already started to upstream the ethernet and switch drivers. Once complete the target will be fully upstream. Signed-off-by: John Crispin <john@phrozen.org>
166 lines
6.8 KiB
Diff
166 lines
6.8 KiB
Diff
--- a/drivers/net/wireless/ath/ath11k/debug.h
|
|
+++ b/drivers/net/wireless/ath/ath11k/debug.h
|
|
@@ -62,6 +62,8 @@ enum ath11k_dbg_htt_ext_stats_type {
|
|
ATH11K_DBG_HTT_EXT_STATS_PDEV_UL_TRIG_STATS = 26,
|
|
ATH11K_DBG_HTT_EXT_STATS_PDEV_UL_MUMIMO_TRIG_STATS = 27,
|
|
ATH11K_DBG_HTT_EXT_STATS_FSE_RX = 28,
|
|
+ ATH11K_DBG_HTT_EXT_STATS_PEER_CTRL_PATH_TXRX_STATS = 29,
|
|
+ ATH11K_DBG_HTT_EXT_STATS_PDEV_RX_RATE_EXT = 30,
|
|
|
|
/* keep this last */
|
|
ATH11K_DBG_HTT_NUM_EXT_STATS,
|
|
--- a/drivers/net/wireless/ath/ath11k/debug_htt_stats.c
|
|
+++ b/drivers/net/wireless/ath/ath11k/debug_htt_stats.c
|
|
@@ -4062,6 +4062,79 @@ static inline void htt_print_rx_fse_stat
|
|
}
|
|
}
|
|
|
|
+static inline void htt_print_rx_pdev_rate_ext_stats_tlv(const void *tag_buf,
|
|
+ struct debug_htt_stats_req *stats_req)
|
|
+{
|
|
+ const struct htt_rx_pdev_rate_ext_stats_tlv *htt_stats_buf = tag_buf;
|
|
+ u8 *buf = stats_req->buf;
|
|
+ u32 len = stats_req->buf_len;
|
|
+ u32 buf_len = ATH11K_HTT_STATS_BUF_SIZE;
|
|
+ u8 j;
|
|
+
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "HTT_RX_PDEV_RATE_EXT_STATS_TLV:\n");
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "rssi_mcast = %d\n",
|
|
+ htt_stats_buf->rssi_mcast);
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "rssi_mgmt = %d\n",
|
|
+ htt_stats_buf->rssi_mgmt);
|
|
+
|
|
+ for (j = 0; j < HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS; j++) {
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "\nrssi_chain_ext[%u] = ",j);
|
|
+ ARRAY_TO_BUF(buf, len, htt_stats_buf->rssi_chain_ext[j],
|
|
+ HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS);
|
|
+ }
|
|
+
|
|
+ for (j = 0; j < HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS; j++) {
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "\nrx_per_chain_rssi_ext_in_dbm[%u] = ",j);
|
|
+ CHAIN_ARRAY_TO_BUF(buf, len, htt_stats_buf->rx_per_chain_rssi_ext_in_dbm[j],
|
|
+ HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS);
|
|
+ }
|
|
+
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "\nrx_mcs_ext = ");
|
|
+ ARRAY_TO_BUF(buf, len, htt_stats_buf->rx_mcs_ext,
|
|
+ HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT);
|
|
+
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "\nrx_stbc_ext = ");
|
|
+ ARRAY_TO_BUF(buf, len, htt_stats_buf->rx_stbc_ext,
|
|
+ HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT);
|
|
+
|
|
+ for (j = 0; j < HTT_RX_PDEV_STATS_NUM_GI_COUNTERS; j++) {
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "\nrx_gi_ext[%u] = ",j);
|
|
+ ARRAY_TO_BUF(buf, len, htt_stats_buf->rx_gi_ext[j],
|
|
+ HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT);
|
|
+ }
|
|
+
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "\nul_ofdma_rx_mcs_ext = ");
|
|
+ ARRAY_TO_BUF(buf, len, htt_stats_buf->ul_ofdma_rx_mcs_ext,
|
|
+ HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT);
|
|
+
|
|
+ for (j = 0; j < HTT_RX_PDEV_STATS_NUM_GI_COUNTERS; j++) {
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "\nul_ofdma_rx_gi_ext[%u] = ",j);
|
|
+ ARRAY_TO_BUF(buf, len, htt_stats_buf->ul_ofdma_rx_gi_ext[j],
|
|
+ HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT);
|
|
+ }
|
|
+
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "\nrx_11ax_su_txbf_mcs_ext = ");
|
|
+ ARRAY_TO_BUF(buf, len, htt_stats_buf->rx_11ax_su_txbf_mcs_ext,
|
|
+ HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT);
|
|
+
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "\nrx_11ax_mu_txbf_mcs_ext = ");
|
|
+ ARRAY_TO_BUF(buf, len, htt_stats_buf->rx_11ax_mu_txbf_mcs_ext,
|
|
+ HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT);
|
|
+
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "\nrx_11ax_dl_ofdma_mcs_ext = ");
|
|
+ ARRAY_TO_BUF(buf, len, htt_stats_buf->rx_11ax_dl_ofdma_mcs_ext,
|
|
+ HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT);
|
|
+
|
|
+ len += HTT_DBG_OUT(buf + len, buf_len - len, "\n");
|
|
+
|
|
+ if (len >= buf_len)
|
|
+ buf[buf_len - 1] = 0;
|
|
+ else
|
|
+ buf[len] = 0;
|
|
+
|
|
+ stats_req->buf_len = len;
|
|
+}
|
|
+
|
|
static inline void htt_htt_stats_debug_dump(const u32 *tag_buf,
|
|
struct debug_htt_stats_req *stats_req)
|
|
{
|
|
@@ -4481,6 +4554,9 @@ static int ath11k_dbg_htt_ext_stats_pars
|
|
case HTT_STATS_RX_FSE_STATS_TAG:
|
|
htt_print_rx_fse_stats_tlv(tag_buf, stats_req);
|
|
break;
|
|
+ case HTT_STATS_RX_PDEV_RATE_EXT_STATS_TAG:
|
|
+ htt_print_rx_pdev_rate_ext_stats_tlv(tag_buf, stats_req);
|
|
+ break;
|
|
default:
|
|
break;
|
|
}
|
|
--- a/drivers/net/wireless/ath/ath11k/debug_htt_stats.h
|
|
+++ b/drivers/net/wireless/ath/ath11k/debug_htt_stats.h
|
|
@@ -111,6 +111,10 @@ enum htt_tlv_tag_t {
|
|
HTT_STATS_RX_PDEV_UL_MUMIMO_TRIG_STATS_TAG = 97,
|
|
HTT_STATS_RX_FSE_STATS_TAG = 98,
|
|
HTT_STATS_PEER_SCHED_STATS_TAG = 99,
|
|
+ HTT_STATS_SCHED_TXQ_SUPERCYCLE_TRIGGER_TAG = 100,
|
|
+ HTT_STATS_PEER_CTRL_PATH_TXRX_STATS_TAG = 101,
|
|
+ HTT_STATS_PDEV_CTRL_PATH_TX_STATS_TAG = 102,
|
|
+ HTT_STATS_RX_PDEV_RATE_EXT_STATS_TAG = 103,
|
|
|
|
HTT_STATS_MAX_TAG,
|
|
};
|
|
@@ -419,6 +423,12 @@ enum htt_stats_param_type {
|
|
#define HTT_TX_PEER_STATS_NUM_MCS_COUNTERS 12
|
|
#define HTT_TX_PEER_STATS_NUM_GI_COUNTERS 4
|
|
#define HTT_TX_PEER_STATS_NUM_DCM_COUNTERS 5
|
|
+/* HTT_TX_PEER_STATS_NUM_BW_COUNTERS:
|
|
+ * bw index 0: rssi_pri20_chain0
|
|
+ * bw index 1: rssi_ext20_chain0
|
|
+ * bw index 2: rssi_ext40_low20_chain0
|
|
+ * bw index 3: rssi_ext40_high20_chain0
|
|
+ */
|
|
#define HTT_TX_PEER_STATS_NUM_BW_COUNTERS 4
|
|
#define HTT_TX_PEER_STATS_NUM_SPATIAL_STREAMS 8
|
|
#define HTT_TX_PEER_STATS_NUM_PREAMBLE_TYPES HTT_STATS_PREAM_COUNT
|
|
@@ -1795,4 +1805,35 @@ struct htt_rx_fse_stats_tlv {
|
|
u32 fse_search_stat_search_pending_cnt[HTT_RX_MAX_PENDING_SEARCH_INDEX];
|
|
};
|
|
|
|
+/* == PDEV RX RATE EXT STATS == */
|
|
+#define HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT 14
|
|
+/* HTT_RX_PEER_STATS_NUM_BW_EXT_COUNTERS:
|
|
+ * bw index 4 (bw ext index 0): rssi_ext80_low20_chain0
|
|
+ * bw index 5 (bw ext index 1): rssi_ext80_low_high20_chain0
|
|
+ * bw index 6 (bw ext index 2): rssi_ext80_high_low20_chain0
|
|
+ * bw index 7 (bw ext index 3): rssi_ext80_high20_chain0
|
|
+ */
|
|
+#define HTT_RX_PEER_STATS_NUM_BW_EXT_COUNTERS 4
|
|
+#define HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS 4
|
|
+
|
|
+struct htt_rx_pdev_rate_ext_stats_tlv {
|
|
+ u8 rssi_chain_ext[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS]
|
|
+ [HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS];
|
|
+ /* units = dB above noise floor */
|
|
+ s8 rx_per_chain_rssi_ext_in_dbm[HTT_RX_PDEV_STATS_NUM_SPATIAL_STREAMS]
|
|
+ [HTT_RX_PDEV_STATS_NUM_BW_EXT_COUNTERS];
|
|
+ s32 rssi_mcast; /* rx mcast signal strength value in dBm unit */
|
|
+ s32 rssi_mgmt; /* rx mgmt packet signal strength value in dBm unit */
|
|
+ u32 rx_mcs_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];
|
|
+ u32 rx_stbc_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];
|
|
+ u32 rx_gi_ext[HTT_RX_PDEV_STATS_NUM_GI_COUNTERS]
|
|
+ [HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];
|
|
+ u32 ul_ofdma_rx_mcs_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];
|
|
+ u32 ul_ofdma_rx_gi_ext[HTT_TX_PDEV_STATS_NUM_GI_COUNTERS]
|
|
+ [HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];
|
|
+ u32 rx_11ax_su_txbf_mcs_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];
|
|
+ u32 rx_11ax_mu_txbf_mcs_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];
|
|
+ u32 rx_11ax_dl_ofdma_mcs_ext[HTT_RX_PDEV_STATS_NUM_MCS_COUNTERS_EXT];
|
|
+};
|
|
+
|
|
#endif
|