ath10k: add support for pktlog in QCA99X0
This patch adds pktlog support for 10.4 fw versions. Signed-off-by: Vivek Natarajan <nataraja@qti.qualcomm.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
parent
52e8ce133e
commit
afb0bf7f53
4 changed files with 35 additions and 0 deletions
|
@ -1598,5 +1598,7 @@ int ath10k_htt_tx_alloc_msdu_id(struct ath10k_htt *htt, struct sk_buff *skb);
|
||||||
void ath10k_htt_tx_free_msdu_id(struct ath10k_htt *htt, u16 msdu_id);
|
void ath10k_htt_tx_free_msdu_id(struct ath10k_htt *htt, u16 msdu_id);
|
||||||
int ath10k_htt_mgmt_tx(struct ath10k_htt *htt, struct sk_buff *);
|
int ath10k_htt_mgmt_tx(struct ath10k_htt *htt, struct sk_buff *);
|
||||||
int ath10k_htt_tx(struct ath10k_htt *htt, struct sk_buff *);
|
int ath10k_htt_tx(struct ath10k_htt *htt, struct sk_buff *);
|
||||||
|
void ath10k_htt_rx_pktlog_completion_handler(struct ath10k *ar,
|
||||||
|
struct sk_buff *skb);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2127,6 +2127,18 @@ void ath10k_htt_t2h_msg_handler(struct ath10k *ar, struct sk_buff *skb)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(ath10k_htt_t2h_msg_handler);
|
EXPORT_SYMBOL(ath10k_htt_t2h_msg_handler);
|
||||||
|
|
||||||
|
void ath10k_htt_rx_pktlog_completion_handler(struct ath10k *ar,
|
||||||
|
struct sk_buff *skb)
|
||||||
|
{
|
||||||
|
struct ath10k_pktlog_10_4_hdr *hdr =
|
||||||
|
(struct ath10k_pktlog_10_4_hdr *)skb->data;
|
||||||
|
|
||||||
|
trace_ath10k_htt_pktlog(ar, hdr->payload,
|
||||||
|
sizeof(*hdr) + __le16_to_cpu(hdr->size));
|
||||||
|
dev_kfree_skb_any(skb);
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(ath10k_htt_rx_pktlog_completion_handler);
|
||||||
|
|
||||||
static void ath10k_htt_txrx_compl_task(unsigned long ptr)
|
static void ath10k_htt_txrx_compl_task(unsigned long ptr)
|
||||||
{
|
{
|
||||||
struct ath10k_htt *htt = (struct ath10k_htt *)ptr;
|
struct ath10k_htt *htt = (struct ath10k_htt *)ptr;
|
||||||
|
|
|
@ -273,6 +273,16 @@ struct ath10k_pktlog_hdr {
|
||||||
u8 payload[0];
|
u8 payload[0];
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
|
struct ath10k_pktlog_10_4_hdr {
|
||||||
|
__le16 flags;
|
||||||
|
__le16 missed_cnt;
|
||||||
|
__le16 log_type;
|
||||||
|
__le16 size;
|
||||||
|
__le32 timestamp;
|
||||||
|
__le32 type_specific_data;
|
||||||
|
u8 payload[0];
|
||||||
|
} __packed;
|
||||||
|
|
||||||
enum ath10k_hw_rate_ofdm {
|
enum ath10k_hw_rate_ofdm {
|
||||||
ATH10K_HW_RATE_OFDM_48M = 0,
|
ATH10K_HW_RATE_OFDM_48M = 0,
|
||||||
ATH10K_HW_RATE_OFDM_24M,
|
ATH10K_HW_RATE_OFDM_24M,
|
||||||
|
|
|
@ -111,6 +111,7 @@ static void ath10k_pci_htc_tx_cb(struct ath10k_ce_pipe *ce_state);
|
||||||
static void ath10k_pci_htc_rx_cb(struct ath10k_ce_pipe *ce_state);
|
static void ath10k_pci_htc_rx_cb(struct ath10k_ce_pipe *ce_state);
|
||||||
static void ath10k_pci_htt_tx_cb(struct ath10k_ce_pipe *ce_state);
|
static void ath10k_pci_htt_tx_cb(struct ath10k_ce_pipe *ce_state);
|
||||||
static void ath10k_pci_htt_rx_cb(struct ath10k_ce_pipe *ce_state);
|
static void ath10k_pci_htt_rx_cb(struct ath10k_ce_pipe *ce_state);
|
||||||
|
static void ath10k_pci_pktlog_rx_cb(struct ath10k_ce_pipe *ce_state);
|
||||||
|
|
||||||
static const struct ce_attr host_ce_config_wlan[] = {
|
static const struct ce_attr host_ce_config_wlan[] = {
|
||||||
/* CE0: host->target HTC control and raw streams */
|
/* CE0: host->target HTC control and raw streams */
|
||||||
|
@ -189,6 +190,7 @@ static const struct ce_attr host_ce_config_wlan[] = {
|
||||||
.src_nentries = 0,
|
.src_nentries = 0,
|
||||||
.src_sz_max = 2048,
|
.src_sz_max = 2048,
|
||||||
.dest_nentries = 128,
|
.dest_nentries = 128,
|
||||||
|
.recv_cb = ath10k_pci_pktlog_rx_cb,
|
||||||
},
|
},
|
||||||
|
|
||||||
/* CE9 target autonomous qcache memcpy */
|
/* CE9 target autonomous qcache memcpy */
|
||||||
|
@ -1208,6 +1210,15 @@ static void ath10k_pci_htc_rx_cb(struct ath10k_ce_pipe *ce_state)
|
||||||
ath10k_pci_process_rx_cb(ce_state, ath10k_htc_rx_completion_handler);
|
ath10k_pci_process_rx_cb(ce_state, ath10k_htc_rx_completion_handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Called by lower (CE) layer when data is received from the Target.
|
||||||
|
* Only 10.4 firmware uses separate CE to transfer pktlog data.
|
||||||
|
*/
|
||||||
|
static void ath10k_pci_pktlog_rx_cb(struct ath10k_ce_pipe *ce_state)
|
||||||
|
{
|
||||||
|
ath10k_pci_process_rx_cb(ce_state,
|
||||||
|
ath10k_htt_rx_pktlog_completion_handler);
|
||||||
|
}
|
||||||
|
|
||||||
/* Called by lower (CE) layer when a send to HTT Target completes. */
|
/* Called by lower (CE) layer when a send to HTT Target completes. */
|
||||||
static void ath10k_pci_htt_tx_cb(struct ath10k_ce_pipe *ce_state)
|
static void ath10k_pci_htt_tx_cb(struct ath10k_ce_pipe *ce_state)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue