From: Maharaja Kennadyrajan <mkenna@codeaurora.org>
To: ath10k@lists.infradead.org
Cc: linux-wireless@vger.kernel.org
Subject: Re: [PATCH] ath11k: add pktlog checksum in trace events to support pktlog
Date: Thu, 26 Mar 2020 20:17:39 +0530 [thread overview]
Message-ID: <6a4d557a6bb5ef9f9f243c01e67be090@codeaurora.org> (raw)
In-Reply-To: <1585234044-30362-1-git-send-email-mkenna@codeaurora.org>
Hi,
Please ignore this patch. Sent to wrong mailing list. Regret for the
inconvenience caused.
Regards,
Maha
On 2020-03-26 20:17, Maharaja Kennadyrajan wrote:
> Pktlog data are different among the chipset & chipset versions.
> As part of enhancing the user space script to decode the pktlog
> trace events generated, it is desirable to know which chipset or
> which chipset version has provided the events and thereby decode
> the pktlogs appropriately.
>
> Pktlog checksum helps to determine the chipset variant which is
> given by the firmware in the struct wmi_ready_event.
>
> Pktlog checksums are computed during the firmware build.
> So, adding that pktlog checksum in the pklog trace events.
>
> Signed-off-by: Maharaja Kennadyrajan <mkenna@codeaurora.org>
> ---
> drivers/net/wireless/ath/ath11k/core.h | 1 +
> drivers/net/wireless/ath/ath11k/dp_rx.c | 3 ++-
> drivers/net/wireless/ath/ath11k/trace.h | 12 ++++++++----
> drivers/net/wireless/ath/ath11k/wmi.c | 21 +++++++++++++--------
> drivers/net/wireless/ath/ath11k/wmi.h | 8 +++++++-
> 5 files changed, 31 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath11k/core.h
> b/drivers/net/wireless/ath/ath11k/core.h
> index 6e7b8ec..a1e29f3 100644
> --- a/drivers/net/wireless/ath/ath11k/core.h
> +++ b/drivers/net/wireless/ath/ath11k/core.h
> @@ -650,6 +650,7 @@ struct ath11k_base {
> /* protected by data_lock */
> u32 fw_crash_counter;
> } stats;
> + u32 pktlog_defs_checksum;
> };
>
> struct ath11k_fw_stats_pdev {
> diff --git a/drivers/net/wireless/ath/ath11k/dp_rx.c
> b/drivers/net/wireless/ath/ath11k/dp_rx.c
> index f74a0e7..a3f2c76 100644
> --- a/drivers/net/wireless/ath/ath11k/dp_rx.c
> +++ b/drivers/net/wireless/ath/ath11k/dp_rx.c
> @@ -1491,7 +1491,8 @@ static void ath11k_htt_pktlog(struct ath11k_base
> *ab, struct sk_buff *skb)
> return;
> }
>
> - trace_ath11k_htt_pktlog(ar, data->payload, hdr->size);
> + trace_ath11k_htt_pktlog(ar, data->payload, hdr->size,
> + ar->ab->pktlog_defs_checksum);
> }
>
> static void ath11k_htt_backpressure_event_handler(struct ath11k_base
> *ab,
> diff --git a/drivers/net/wireless/ath/ath11k/trace.h
> b/drivers/net/wireless/ath/ath11k/trace.h
> index 8700a62..66d0aae 100644
> --- a/drivers/net/wireless/ath/ath11k/trace.h
> +++ b/drivers/net/wireless/ath/ath11k/trace.h
> @@ -21,14 +21,16 @@
> #define TRACE_SYSTEM ath11k
>
> TRACE_EVENT(ath11k_htt_pktlog,
> - TP_PROTO(struct ath11k *ar, const void *buf, u16 buf_len),
> + TP_PROTO(struct ath11k *ar, const void *buf, u16 buf_len,
> + u32 pktlog_checksum),
>
> - TP_ARGS(ar, buf, buf_len),
> + TP_ARGS(ar, buf, buf_len, pktlog_checksum),
>
> TP_STRUCT__entry(
> __string(device, dev_name(ar->ab->dev))
> __string(driver, dev_driver_string(ar->ab->dev))
> __field(u16, buf_len)
> + __field(u32, pktlog_checksum)
> __dynamic_array(u8, pktlog, buf_len)
> ),
>
> @@ -36,14 +38,16 @@
> __assign_str(device, dev_name(ar->ab->dev));
> __assign_str(driver, dev_driver_string(ar->ab->dev));
> __entry->buf_len = buf_len;
> + __entry->pktlog_checksum = pktlog_checksum;
> memcpy(__get_dynamic_array(pktlog), buf, buf_len);
> ),
>
> TP_printk(
> - "%s %s size %hu",
> + "%s %s size %hu pktlog_checksum %d",
> __get_str(driver),
> __get_str(device),
> - __entry->buf_len
> + __entry->buf_len,
> + __entry->pktlog_checksum
> )
> );
>
> diff --git a/drivers/net/wireless/ath/ath11k/wmi.c
> b/drivers/net/wireless/ath/ath11k/wmi.c
> index e7ce369..ad88efe 100644
> --- a/drivers/net/wireless/ath/ath11k/wmi.c
> +++ b/drivers/net/wireless/ath/ath11k/wmi.c
> @@ -87,8 +87,8 @@ struct wmi_tlv_rdy_parse {
> = { .min_len = sizeof(struct wmi_pdev_bss_chan_info_event) },
> [WMI_TAG_VDEV_INSTALL_KEY_COMPLETE_EVENT]
> = { .min_len = sizeof(struct wmi_vdev_install_key_compl_event) },
> - [WMI_TAG_READY_EVENT]
> - = {.min_len = sizeof(struct wmi_ready_event) },
> + [WMI_TAG_READY_EVENT] = {
> + .min_len = sizeof(struct wmi_ready_event_min) },
> [WMI_TAG_SERVICE_AVAILABLE_EVENT]
> = {.min_len = sizeof(struct wmi_service_available_event) },
> [WMI_TAG_PEER_ASSOC_CONF_EVENT]
> @@ -4851,7 +4851,7 @@ static int ath11k_wmi_tlv_rdy_parse(struct
> ath11k_base *ab, u16 tag, u16 len,
> const void *ptr, void *data)
> {
> struct wmi_tlv_rdy_parse *rdy_parse = data;
> - struct wmi_ready_event *fixed_param;
> + struct wmi_ready_event fixed_param;
> struct wmi_mac_addr *addr_list;
> struct ath11k_pdev *pdev;
> u32 num_mac_addr;
> @@ -4859,11 +4859,16 @@ static int ath11k_wmi_tlv_rdy_parse(struct
> ath11k_base *ab, u16 tag, u16 len,
>
> switch (tag) {
> case WMI_TAG_READY_EVENT:
> - fixed_param = (struct wmi_ready_event *)ptr;
> - ab->wlan_init_status = fixed_param->status;
> - rdy_parse->num_extra_mac_addr = fixed_param->num_extra_mac_addr;
> -
> - ether_addr_copy(ab->mac_addr, fixed_param->mac_addr.addr);
> + memset(&fixed_param, 0, sizeof(fixed_param));
> + memcpy(&fixed_param, (struct wmi_ready_event *)ptr,
> + min_t(u16, sizeof(fixed_param), len));
> + ab->wlan_init_status = fixed_param.ready_event_min.status;
> + rdy_parse->num_extra_mac_addr =
> + fixed_param.ready_event_min.num_extra_mac_addr;
> +
> + ether_addr_copy(ab->mac_addr,
> + fixed_param.ready_event_min.mac_addr.addr);
> + ab->pktlog_defs_checksum = fixed_param.pktlog_defs_checksum;
> ab->wmi_ready = true;
> break;
> case WMI_TAG_ARRAY_FIXED_STRUCT:
> diff --git a/drivers/net/wireless/ath/ath11k/wmi.h
> b/drivers/net/wireless/ath/ath11k/wmi.h
> index 510f9c6..58f9098 100644
> --- a/drivers/net/wireless/ath/ath11k/wmi.h
> +++ b/drivers/net/wireless/ath/ath11k/wmi.h
> @@ -2345,7 +2345,7 @@ struct wmi_mac_addr {
> } __packed;
> } __packed;
>
> -struct wmi_ready_event {
> +struct wmi_ready_event_min {
> struct wmi_abi_version fw_abi_vers;
> struct wmi_mac_addr mac_addr;
> u32 status;
> @@ -2355,6 +2355,12 @@ struct wmi_ready_event {
> u32 num_extra_peers;
> } __packed;
>
> +struct wmi_ready_event {
> + struct wmi_ready_event_min ready_event_min;
> + u32 max_ast_index;
> + u32 pktlog_defs_checksum;
> +} __packed;
> +
> struct wmi_service_available_event {
> u32 wmi_service_segment_offset;
> u32 wmi_service_segment_bitmap[WMI_SERVICE_SEGMENT_BM_SIZE32];
next prev parent reply other threads:[~2020-03-26 14:47 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-26 14:47 [PATCH] ath11k: add pktlog checksum in trace events to support pktlog Maharaja Kennadyrajan
2020-03-26 14:47 ` Maharaja Kennadyrajan [this message]
-- strict thread matches above, loose matches on Subject: below --
2020-03-26 14:49 Maharaja Kennadyrajan
2020-03-26 16:44 ` Kalle Valo
2020-03-27 4:32 ` Maharaja Kennadyrajan
2020-04-06 16:18 ` Kalle Valo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6a4d557a6bb5ef9f9f243c01e67be090@codeaurora.org \
--to=mkenna@codeaurora.org \
--cc=ath10k@lists.infradead.org \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).