debugfs.c (cdd38c5f1ce4398ec58fec95904b75824daab7b5) debugfs.c (ab18e3bc1c138f2b4358c6905a45afb7289d5086)
1// SPDX-License-Identifier: BSD-3-Clause-Clear
2/*
3 * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
4 */
5
6#include "debugfs.h"
7
8#include "core.h"

--- 888 unchanged lines hidden (view full) ---

897 const char __user *ubuf,
898 size_t count, loff_t *ppos)
899{
900 struct ath11k *ar = file->private_data;
901 struct ath11k_base *ab = ar->ab;
902 struct htt_rx_ring_tlv_filter tlv_filter = {0};
903 u32 rx_filter = 0, ring_id, filter, mode;
904 u8 buf[128] = {0};
1// SPDX-License-Identifier: BSD-3-Clause-Clear
2/*
3 * Copyright (c) 2018-2020 The Linux Foundation. All rights reserved.
4 */
5
6#include "debugfs.h"
7
8#include "core.h"

--- 888 unchanged lines hidden (view full) ---

897 const char __user *ubuf,
898 size_t count, loff_t *ppos)
899{
900 struct ath11k *ar = file->private_data;
901 struct ath11k_base *ab = ar->ab;
902 struct htt_rx_ring_tlv_filter tlv_filter = {0};
903 u32 rx_filter = 0, ring_id, filter, mode;
904 u8 buf[128] = {0};
905 int i, ret;
905 int i, ret, rx_buf_sz = 0;
906 ssize_t rc;
907
908 mutex_lock(&ar->conf_mutex);
909 if (ar->state != ATH11K_STATE_ON) {
910 ret = -ENETDOWN;
911 goto out;
912 }
913

--- 21 unchanged lines hidden (view full) ---

935 } else {
936 ret = ath11k_wmi_pdev_pktlog_disable(ar);
937 if (ret) {
938 ath11k_warn(ar->ab, "failed to disable pktlog: %d\n", ret);
939 goto out;
940 }
941 }
942
906 ssize_t rc;
907
908 mutex_lock(&ar->conf_mutex);
909 if (ar->state != ATH11K_STATE_ON) {
910 ret = -ENETDOWN;
911 goto out;
912 }
913

--- 21 unchanged lines hidden (view full) ---

935 } else {
936 ret = ath11k_wmi_pdev_pktlog_disable(ar);
937 if (ret) {
938 ath11k_warn(ar->ab, "failed to disable pktlog: %d\n", ret);
939 goto out;
940 }
941 }
942
943 /* Clear rx filter set for monitor mode and rx status */
944 for (i = 0; i < ab->hw_params.num_rxmda_per_pdev; i++) {
945 ring_id = ar->dp.rx_mon_status_refill_ring[i].refill_buf_ring.ring_id;
946 ret = ath11k_dp_tx_htt_rx_filter_setup(ar->ab, ring_id, ar->dp.mac_id,
947 HAL_RXDMA_MONITOR_STATUS,
948 rx_buf_sz, &tlv_filter);
949 if (ret) {
950 ath11k_warn(ar->ab, "failed to set rx filter for monitor status ring\n");
951 goto out;
952 }
953 }
943#define HTT_RX_FILTER_TLV_LITE_MODE \
944 (HTT_RX_FILTER_TLV_FLAGS_PPDU_START | \
945 HTT_RX_FILTER_TLV_FLAGS_PPDU_END | \
946 HTT_RX_FILTER_TLV_FLAGS_PPDU_END_USER_STATS | \
947 HTT_RX_FILTER_TLV_FLAGS_PPDU_END_USER_STATS_EXT | \
948 HTT_RX_FILTER_TLV_FLAGS_PPDU_END_STATUS_DONE | \
949 HTT_RX_FILTER_TLV_FLAGS_MPDU_START)
950
951 if (mode == ATH11K_PKTLOG_MODE_FULL) {
952 rx_filter = HTT_RX_FILTER_TLV_LITE_MODE |
953 HTT_RX_FILTER_TLV_FLAGS_MSDU_START |
954 HTT_RX_FILTER_TLV_FLAGS_MSDU_END |
955 HTT_RX_FILTER_TLV_FLAGS_MPDU_END |
956 HTT_RX_FILTER_TLV_FLAGS_PACKET_HEADER |
957 HTT_RX_FILTER_TLV_FLAGS_ATTENTION;
954#define HTT_RX_FILTER_TLV_LITE_MODE \
955 (HTT_RX_FILTER_TLV_FLAGS_PPDU_START | \
956 HTT_RX_FILTER_TLV_FLAGS_PPDU_END | \
957 HTT_RX_FILTER_TLV_FLAGS_PPDU_END_USER_STATS | \
958 HTT_RX_FILTER_TLV_FLAGS_PPDU_END_USER_STATS_EXT | \
959 HTT_RX_FILTER_TLV_FLAGS_PPDU_END_STATUS_DONE | \
960 HTT_RX_FILTER_TLV_FLAGS_MPDU_START)
961
962 if (mode == ATH11K_PKTLOG_MODE_FULL) {
963 rx_filter = HTT_RX_FILTER_TLV_LITE_MODE |
964 HTT_RX_FILTER_TLV_FLAGS_MSDU_START |
965 HTT_RX_FILTER_TLV_FLAGS_MSDU_END |
966 HTT_RX_FILTER_TLV_FLAGS_MPDU_END |
967 HTT_RX_FILTER_TLV_FLAGS_PACKET_HEADER |
968 HTT_RX_FILTER_TLV_FLAGS_ATTENTION;
969 rx_buf_sz = DP_RX_BUFFER_SIZE;
958 } else if (mode == ATH11K_PKTLOG_MODE_LITE) {
959 ret = ath11k_dp_tx_htt_h2t_ppdu_stats_req(ar,
960 HTT_PPDU_STATS_TAG_PKTLOG);
961 if (ret) {
962 ath11k_err(ar->ab, "failed to enable pktlog lite: %d\n", ret);
963 goto out;
964 }
965
966 rx_filter = HTT_RX_FILTER_TLV_LITE_MODE;
970 } else if (mode == ATH11K_PKTLOG_MODE_LITE) {
971 ret = ath11k_dp_tx_htt_h2t_ppdu_stats_req(ar,
972 HTT_PPDU_STATS_TAG_PKTLOG);
973 if (ret) {
974 ath11k_err(ar->ab, "failed to enable pktlog lite: %d\n", ret);
975 goto out;
976 }
977
978 rx_filter = HTT_RX_FILTER_TLV_LITE_MODE;
979 rx_buf_sz = DP_RX_BUFFER_SIZE_LITE;
967 } else {
980 } else {
981 rx_buf_sz = DP_RX_BUFFER_SIZE;
982 tlv_filter = ath11k_mac_mon_status_filter_default;
983 rx_filter = tlv_filter.rx_filter;
984
968 ret = ath11k_dp_tx_htt_h2t_ppdu_stats_req(ar,
969 HTT_PPDU_STATS_TAG_DEFAULT);
970 if (ret) {
971 ath11k_err(ar->ab, "failed to send htt ppdu stats req: %d\n",
972 ret);
973 goto out;
974 }
975 }

--- 7 unchanged lines hidden (view full) ---

983 HTT_RX_FP_DATA_FILTER_FLASG3;
984 }
985
986 for (i = 0; i < ab->hw_params.num_rxmda_per_pdev; i++) {
987 ring_id = ar->dp.rx_mon_status_refill_ring[i].refill_buf_ring.ring_id;
988 ret = ath11k_dp_tx_htt_rx_filter_setup(ab, ring_id,
989 ar->dp.mac_id + i,
990 HAL_RXDMA_MONITOR_STATUS,
985 ret = ath11k_dp_tx_htt_h2t_ppdu_stats_req(ar,
986 HTT_PPDU_STATS_TAG_DEFAULT);
987 if (ret) {
988 ath11k_err(ar->ab, "failed to send htt ppdu stats req: %d\n",
989 ret);
990 goto out;
991 }
992 }

--- 7 unchanged lines hidden (view full) ---

1000 HTT_RX_FP_DATA_FILTER_FLASG3;
1001 }
1002
1003 for (i = 0; i < ab->hw_params.num_rxmda_per_pdev; i++) {
1004 ring_id = ar->dp.rx_mon_status_refill_ring[i].refill_buf_ring.ring_id;
1005 ret = ath11k_dp_tx_htt_rx_filter_setup(ab, ring_id,
1006 ar->dp.mac_id + i,
1007 HAL_RXDMA_MONITOR_STATUS,
991 DP_RX_BUFFER_SIZE, &tlv_filter);
1008 rx_buf_sz, &tlv_filter);
992
993 if (ret) {
994 ath11k_warn(ab, "failed to set rx filter for monitor status ring\n");
995 goto out;
996 }
997 }
998
1009
1010 if (ret) {
1011 ath11k_warn(ab, "failed to set rx filter for monitor status ring\n");
1012 goto out;
1013 }
1014 }
1015
999 ath11k_dbg(ab, ATH11K_DBG_WMI, "pktlog filter %d mode %s\n",
1000 filter, ((mode == ATH11K_PKTLOG_MODE_FULL) ? "full" : "lite"));
1016 ath11k_info(ab, "pktlog mode %s\n",
1017 ((mode == ATH11K_PKTLOG_MODE_FULL) ? "full" : "lite"));
1001
1002 ar->debug.pktlog_filter = filter;
1003 ar->debug.pktlog_mode = mode;
1004 ret = count;
1005
1006out:
1007 mutex_unlock(&ar->conf_mutex);
1008 return ret;

--- 90 unchanged lines hidden ---
1018
1019 ar->debug.pktlog_filter = filter;
1020 ar->debug.pktlog_mode = mode;
1021 ret = count;
1022
1023out:
1024 mutex_unlock(&ar->conf_mutex);
1025 return ret;

--- 90 unchanged lines hidden ---