mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-12-20 10:51:27 +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>
160 lines
6.0 KiB
Diff
160 lines
6.0 KiB
Diff
Index: backports-20191227-4.4.60-b805aa84b44f/drivers/net/wireless/ath/ath11k/debug.c
|
|
===================================================================
|
|
--- backports-20191227-4.4.60-b805aa84b44f.orig/drivers/net/wireless/ath/ath11k/debug.c
|
|
+++ backports-20191227-4.4.60-b805aa84b44f/drivers/net/wireless/ath/ath11k/debug.c
|
|
@@ -1226,7 +1226,7 @@ static ssize_t ath11k_write_pktlog_filte
|
|
struct htt_rx_ring_tlv_filter tlv_filter = {0};
|
|
u32 rx_filter = 0, ring_id, filter, mode;
|
|
u8 buf[128] = {0};
|
|
- int ret;
|
|
+ int ret, rx_buf_sz;
|
|
ssize_t rc;
|
|
|
|
mutex_lock(&ar->conf_mutex);
|
|
@@ -1264,6 +1264,17 @@ static ssize_t ath11k_write_pktlog_filte
|
|
}
|
|
}
|
|
|
|
+ /* Clear rx filter set for monitor mode and rx status */
|
|
+ ring_id = ar->dp.rx_mon_status_refill_ring.refill_buf_ring.ring_id;
|
|
+ ret = ath11k_dp_tx_htt_rx_filter_setup(ar->ab, ring_id, ar->dp.mac_id,
|
|
+ HAL_RXDMA_MONITOR_STATUS,
|
|
+ rx_buf_sz, &tlv_filter);
|
|
+ if (ret) {
|
|
+ ath11k_warn(ar->ab, "failed to set rx filter for monitor status ring\n");
|
|
+ goto out;
|
|
+ }
|
|
+
|
|
+
|
|
#define HTT_RX_FILTER_TLV_LITE_MODE \
|
|
(HTT_RX_FILTER_TLV_FLAGS_PPDU_START | \
|
|
HTT_RX_FILTER_TLV_FLAGS_PPDU_END | \
|
|
@@ -1279,6 +1290,7 @@ static ssize_t ath11k_write_pktlog_filte
|
|
HTT_RX_FILTER_TLV_FLAGS_MPDU_END |
|
|
HTT_RX_FILTER_TLV_FLAGS_PACKET_HEADER |
|
|
HTT_RX_FILTER_TLV_FLAGS_ATTENTION;
|
|
+ rx_buf_sz = DP_RX_BUFFER_SIZE;
|
|
} else if (mode == ATH11K_PKTLOG_MODE_LITE) {
|
|
ret = ath11k_dp_tx_htt_h2t_ppdu_stats_req(ar,
|
|
HTT_PPDU_STATS_TAG_PKTLOG);
|
|
@@ -1288,7 +1300,12 @@ static ssize_t ath11k_write_pktlog_filte
|
|
}
|
|
|
|
rx_filter = HTT_RX_FILTER_TLV_LITE_MODE;
|
|
+ rx_buf_sz = DP_RX_BUFFER_SIZE_LITE;
|
|
} else {
|
|
+ rx_buf_sz = DP_RX_BUFFER_SIZE;
|
|
+ tlv_filter = ath11k_mac_mon_status_filter_default;
|
|
+ rx_filter = tlv_filter.rx_filter;
|
|
+
|
|
ret = ath11k_dp_tx_htt_h2t_ppdu_stats_req(ar,
|
|
HTT_PPDU_STATS_TAG_DEFAULT);
|
|
if (ret) {
|
|
@@ -1309,14 +1326,14 @@ static ssize_t ath11k_write_pktlog_filte
|
|
ring_id = ar->dp.rx_mon_status_refill_ring.refill_buf_ring.ring_id;
|
|
ret = ath11k_dp_tx_htt_rx_filter_setup(ar->ab, ring_id, ar->dp.mac_id,
|
|
HAL_RXDMA_MONITOR_STATUS,
|
|
- DP_RX_BUFFER_SIZE, &tlv_filter);
|
|
+ rx_buf_sz, &tlv_filter);
|
|
if (ret) {
|
|
ath11k_warn(ar->ab, "failed to set rx filter for monitor status ring\n");
|
|
goto out;
|
|
}
|
|
|
|
- ath11k_dbg(ar->ab, ATH11K_DBG_WMI, "pktlog filter %d mode %s\n",
|
|
- filter, ((mode == ATH11K_PKTLOG_MODE_FULL) ? "full" : "lite"));
|
|
+ ath11k_info(ar->ab, "pktlog mode %s\n",
|
|
+ ((mode == ATH11K_PKTLOG_MODE_FULL) ? "full" : "lite"));
|
|
|
|
ar->debug.pktlog_filter = filter;
|
|
ar->debug.pktlog_mode = mode;
|
|
Index: backports-20191227-4.4.60-b805aa84b44f/drivers/net/wireless/ath/ath11k/dp.h
|
|
===================================================================
|
|
--- backports-20191227-4.4.60-b805aa84b44f.orig/drivers/net/wireless/ath/ath11k/dp.h
|
|
+++ backports-20191227-4.4.60-b805aa84b44f/drivers/net/wireless/ath/ath11k/dp.h
|
|
@@ -190,6 +190,7 @@ struct ath11k_pdev_dp {
|
|
#define DP_RXDMA_MONITOR_DESC_RING_SIZE 4096
|
|
|
|
#define DP_RX_BUFFER_SIZE 2048
|
|
+#define DP_RX_BUFFER_SIZE_LITE 1024
|
|
#define DP_RX_BUFFER_ALIGN_SIZE 128
|
|
|
|
#define DP_RXDMA_BUF_COOKIE_BUF_ID GENMASK(17, 0)
|
|
Index: backports-20191227-4.4.60-b805aa84b44f/drivers/net/wireless/ath/ath11k/dp_rx.c
|
|
===================================================================
|
|
--- backports-20191227-4.4.60-b805aa84b44f.orig/drivers/net/wireless/ath/ath11k/dp_rx.c
|
|
+++ backports-20191227-4.4.60-b805aa84b44f/drivers/net/wireless/ath/ath11k/dp_rx.c
|
|
@@ -3260,6 +3260,8 @@ int ath11k_dp_rx_process_mon_status(stru
|
|
struct ath11k_peer *peer;
|
|
struct ath11k_sta *arsta;
|
|
int num_buffs_reaped = 0;
|
|
+ u32 rx_buf_sz;
|
|
+ u16 log_type = 0;
|
|
|
|
__skb_queue_head_init(&skb_list);
|
|
|
|
@@ -3272,10 +3274,18 @@ int ath11k_dp_rx_process_mon_status(stru
|
|
memset(&ppdu_info, 0, sizeof(ppdu_info));
|
|
ppdu_info.peer_id = HAL_INVALID_PEERID;
|
|
|
|
- if (ath11k_debug_is_pktlog_rx_stats_enabled(ar)) {
|
|
- trace_ath11k_htt_rxdesc(ar, skb->data, DP_RX_BUFFER_SIZE);
|
|
+ if (ath11k_debug_is_pktlog_lite_mode_enabled(ar)) {
|
|
+ log_type = ATH11K_PKTLOG_TYPE_LITE_RX;
|
|
+ rx_buf_sz = DP_RX_BUFFER_SIZE_LITE;
|
|
+ } else if (ath11k_debug_is_pktlog_rx_stats_enabled(ar)) {
|
|
+ log_type = ATH11K_PKTLOG_TYPE_RX_STATBUF;
|
|
+ rx_buf_sz = DP_RX_BUFFER_SIZE;
|
|
+ }
|
|
+
|
|
+ if (log_type) {
|
|
+ trace_ath11k_htt_rxdesc(ar, skb->data, log_type, rx_buf_sz);
|
|
ath11k_rx_stats_buf_pktlog_process(ar, skb->data,
|
|
- DP_RX_BUFFER_SIZE);
|
|
+ log_type, rx_buf_sz);
|
|
}
|
|
|
|
hal_status = ath11k_hal_rx_parse_mon_status(ab, &ppdu_info, skb);
|
|
@@ -3312,9 +3322,8 @@ int ath11k_dp_rx_process_mon_status(stru
|
|
}
|
|
|
|
if (ath11k_debug_is_pktlog_peer_valid(ar, peer->addr)) {
|
|
- trace_ath11k_htt_rxdesc(ar, skb->data, DP_RX_BUFFER_SIZE);
|
|
- ath11k_rx_stats_buf_pktlog_process(ar, skb->data,
|
|
- DP_RX_BUFFER_SIZE);
|
|
+ trace_ath11k_htt_rxdesc(ar, skb->data, log_type, rx_buf_sz);
|
|
+ ath11k_rx_stats_buf_pktlog_process(ar, skb->data, log_type, rx_buf_sz);
|
|
}
|
|
|
|
spin_unlock_bh(&ab->base_lock);
|
|
Index: backports-20191227-4.4.60-b805aa84b44f/drivers/net/wireless/ath/ath11k/trace.h
|
|
===================================================================
|
|
--- backports-20191227-4.4.60-b805aa84b44f.orig/drivers/net/wireless/ath/ath11k/trace.h
|
|
+++ backports-20191227-4.4.60-b805aa84b44f/drivers/net/wireless/ath/ath11k/trace.h
|
|
@@ -79,14 +79,15 @@ TRACE_EVENT(ath11k_htt_ppdu_stats,
|
|
);
|
|
|
|
TRACE_EVENT(ath11k_htt_rxdesc,
|
|
- TP_PROTO(struct ath11k *ar, const void *data, size_t len),
|
|
+ TP_PROTO(struct ath11k *ar, const void *data, size_t type, size_t len),
|
|
|
|
- TP_ARGS(ar, data, len),
|
|
+ TP_ARGS(ar, data, type, len),
|
|
|
|
TP_STRUCT__entry(
|
|
__string(device, dev_name(ar->ab->dev))
|
|
__string(driver, dev_driver_string(ar->ab->dev))
|
|
__field(u16, len)
|
|
+ __field(u16, type)
|
|
__dynamic_array(u8, rxdesc, len)
|
|
),
|
|
|
|
@@ -94,6 +95,7 @@ TRACE_EVENT(ath11k_htt_rxdesc,
|
|
__assign_str(device, dev_name(ar->ab->dev));
|
|
__assign_str(driver, dev_driver_string(ar->ab->dev));
|
|
__entry->len = len;
|
|
+ __entry->type = type;
|
|
memcpy(__get_dynamic_array(rxdesc), data, len);
|
|
),
|
|
|