Skip to content

Commit ba9b3e7

Browse files
authored
Propagate ath12k changes from qcom-next into 6.18.y (#412)
Propagate ath12k changes from qcom-next into 6.18.y
2 parents d631c6b + 61eb01b commit ba9b3e7

File tree

4 files changed

+275
-1
lines changed

4 files changed

+275
-1
lines changed

drivers/net/wireless/ath/ath12k/debugfs_htt_stats.c

Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5539,6 +5539,189 @@ ath12k_htt_print_pdev_rtt_tbr_cmd_res_stats_tlv(const void *tag_buf, u16 tag_len
55395539
stats_req->buf_len = len;
55405540
}
55415541

5542+
static void
5543+
ath12k_htt_print_rx_pdev_fw_stats_tlv(const void *tag_buf, u16 tag_len,
5544+
struct debug_htt_stats_req *stats_req)
5545+
{
5546+
const struct htt_rx_pdev_fw_stats_tlv *htt_stats_buf = tag_buf;
5547+
u32 buf_len = ATH12K_HTT_STATS_BUF_SIZE;
5548+
u32 len = stats_req->buf_len;
5549+
u8 *buf = stats_req->buf;
5550+
5551+
if (tag_len < sizeof(*htt_stats_buf))
5552+
return;
5553+
5554+
len += scnprintf(buf + len, buf_len - len, "HTT_RX_PDEV_FW_STATS_TLV:\n");
5555+
len += scnprintf(buf + len, buf_len - len, "mac_id = %u\n",
5556+
le32_to_cpu(htt_stats_buf->mac_id__word) & 0xFF);
5557+
len += scnprintf(buf + len, buf_len - len, "ppdu_recvd = %u\n",
5558+
le32_to_cpu(htt_stats_buf->ppdu_recvd));
5559+
len += scnprintf(buf + len, buf_len - len, "mpdu_cnt_fcs_ok = %u\n",
5560+
le32_to_cpu(htt_stats_buf->mpdu_cnt_fcs_ok));
5561+
len += scnprintf(buf + len, buf_len - len, "mpdu_cnt_fcs_err = %u\n",
5562+
le32_to_cpu(htt_stats_buf->mpdu_cnt_fcs_err));
5563+
len += scnprintf(buf + len, buf_len - len, "tcp_msdu_cnt = %u\n",
5564+
le32_to_cpu(htt_stats_buf->tcp_msdu_cnt));
5565+
len += scnprintf(buf + len, buf_len - len, "tcp_ack_msdu_cnt = %u\n",
5566+
le32_to_cpu(htt_stats_buf->tcp_ack_msdu_cnt));
5567+
len += scnprintf(buf + len, buf_len - len, "udp_msdu_cnt = %u\n",
5568+
le32_to_cpu(htt_stats_buf->udp_msdu_cnt));
5569+
len += scnprintf(buf + len, buf_len - len, "other_msdu_cnt = %u\n",
5570+
le32_to_cpu(htt_stats_buf->other_msdu_cnt));
5571+
len += scnprintf(buf + len, buf_len - len, "fw_ring_mpdu_ind = %u\n",
5572+
le32_to_cpu(htt_stats_buf->fw_ring_mpdu_ind));
5573+
len += print_array_to_buf(buf, len, "fw_ring_mgmt_subtype",
5574+
htt_stats_buf->fw_ring_mgmt_subtype,
5575+
ATH12K_HTT_STATS_SUBTYPE_MAX, "\n");
5576+
len += print_array_to_buf(buf, len, "fw_ring_ctrl_subtype",
5577+
htt_stats_buf->fw_ring_ctrl_subtype,
5578+
ATH12K_HTT_STATS_SUBTYPE_MAX, "\n");
5579+
len += scnprintf(buf + len, buf_len - len, "fw_ring_mcast_data_msdu = %u\n",
5580+
le32_to_cpu(htt_stats_buf->fw_ring_mcast_data_msdu));
5581+
len += scnprintf(buf + len, buf_len - len, "fw_ring_bcast_data_msdu = %u\n",
5582+
le32_to_cpu(htt_stats_buf->fw_ring_bcast_data_msdu));
5583+
len += scnprintf(buf + len, buf_len - len, "fw_ring_ucast_data_msdu = %u\n",
5584+
le32_to_cpu(htt_stats_buf->fw_ring_ucast_data_msdu));
5585+
len += scnprintf(buf + len, buf_len - len, "fw_ring_null_data_msdu = %u\n",
5586+
le32_to_cpu(htt_stats_buf->fw_ring_null_data_msdu));
5587+
len += scnprintf(buf + len, buf_len - len, "fw_ring_mpdu_drop = %u\n",
5588+
le32_to_cpu(htt_stats_buf->fw_ring_mpdu_drop));
5589+
len += scnprintf(buf + len, buf_len - len, "ofld_local_data_ind_cnt = %u\n",
5590+
le32_to_cpu(htt_stats_buf->ofld_local_data_ind_cnt));
5591+
len += scnprintf(buf + len, buf_len - len,
5592+
"ofld_local_data_buf_recycle_cnt = %u\n",
5593+
le32_to_cpu(htt_stats_buf->ofld_local_data_buf_recycle_cnt));
5594+
len += scnprintf(buf + len, buf_len - len, "drx_local_data_ind_cnt = %u\n",
5595+
le32_to_cpu(htt_stats_buf->drx_local_data_ind_cnt));
5596+
len += scnprintf(buf + len, buf_len - len,
5597+
"drx_local_data_buf_recycle_cnt = %u\n",
5598+
le32_to_cpu(htt_stats_buf->drx_local_data_buf_recycle_cnt));
5599+
len += scnprintf(buf + len, buf_len - len, "local_nondata_ind_cnt = %u\n",
5600+
le32_to_cpu(htt_stats_buf->local_nondata_ind_cnt));
5601+
len += scnprintf(buf + len, buf_len - len, "local_nondata_buf_recycle_cnt = %u\n",
5602+
le32_to_cpu(htt_stats_buf->local_nondata_buf_recycle_cnt));
5603+
len += scnprintf(buf + len, buf_len - len, "fw_status_buf_ring_refill_cnt = %u\n",
5604+
le32_to_cpu(htt_stats_buf->fw_status_buf_ring_refill_cnt));
5605+
len += scnprintf(buf + len, buf_len - len, "fw_status_buf_ring_empty_cnt = %u\n",
5606+
le32_to_cpu(htt_stats_buf->fw_status_buf_ring_empty_cnt));
5607+
len += scnprintf(buf + len, buf_len - len, "fw_pkt_buf_ring_refill_cnt = %u\n",
5608+
le32_to_cpu(htt_stats_buf->fw_pkt_buf_ring_refill_cnt));
5609+
len += scnprintf(buf + len, buf_len - len, "fw_pkt_buf_ring_empty_cnt = %u\n",
5610+
le32_to_cpu(htt_stats_buf->fw_pkt_buf_ring_empty_cnt));
5611+
len += scnprintf(buf + len, buf_len - len, "fw_link_buf_ring_refill_cnt = %u\n",
5612+
le32_to_cpu(htt_stats_buf->fw_link_buf_ring_refill_cnt));
5613+
len += scnprintf(buf + len, buf_len - len, "fw_link_buf_ring_empty_cnt = %u\n",
5614+
le32_to_cpu(htt_stats_buf->fw_link_buf_ring_empty_cnt));
5615+
len += scnprintf(buf + len, buf_len - len, "host_pkt_buf_ring_refill_cnt = %u\n",
5616+
le32_to_cpu(htt_stats_buf->host_pkt_buf_ring_refill_cnt));
5617+
len += scnprintf(buf + len, buf_len - len, "host_pkt_buf_ring_empty_cnt = %u\n",
5618+
le32_to_cpu(htt_stats_buf->host_pkt_buf_ring_empty_cnt));
5619+
len += scnprintf(buf + len, buf_len - len, "mon_pkt_buf_ring_refill_cnt = %u\n",
5620+
le32_to_cpu(htt_stats_buf->mon_pkt_buf_ring_refill_cnt));
5621+
len += scnprintf(buf + len, buf_len - len, "mon_pkt_buf_ring_empty_cnt = %u\n",
5622+
le32_to_cpu(htt_stats_buf->mon_pkt_buf_ring_empty_cnt));
5623+
len += scnprintf(buf + len, buf_len - len,
5624+
"mon_status_buf_ring_refill_cnt = %u\n",
5625+
le32_to_cpu(htt_stats_buf->mon_status_buf_ring_refill_cnt));
5626+
len += scnprintf(buf + len, buf_len - len, "mon_status_buf_ring_empty_cnt = %u\n",
5627+
le32_to_cpu(htt_stats_buf->mon_status_buf_ring_empty_cnt));
5628+
len += scnprintf(buf + len, buf_len - len, "mon_desc_buf_ring_refill_cnt = %u\n",
5629+
le32_to_cpu(htt_stats_buf->mon_desc_buf_ring_refill_cnt));
5630+
len += scnprintf(buf + len, buf_len - len, "mon_desc_buf_ring_empty_cnt = %u\n",
5631+
le32_to_cpu(htt_stats_buf->mon_desc_buf_ring_empty_cnt));
5632+
len += scnprintf(buf + len, buf_len - len, "mon_dest_ring_update_cnt = %u\n",
5633+
le32_to_cpu(htt_stats_buf->mon_dest_ring_update_cnt));
5634+
len += scnprintf(buf + len, buf_len - len, "mon_dest_ring_full_cnt = %u\n",
5635+
le32_to_cpu(htt_stats_buf->mon_dest_ring_full_cnt));
5636+
len += scnprintf(buf + len, buf_len - len, "rx_suspend_cnt = %u\n",
5637+
le32_to_cpu(htt_stats_buf->rx_suspend_cnt));
5638+
len += scnprintf(buf + len, buf_len - len, "rx_suspend_fail_cnt = %u\n",
5639+
le32_to_cpu(htt_stats_buf->rx_suspend_fail_cnt));
5640+
len += scnprintf(buf + len, buf_len - len, "rx_resume_cnt = %u\n",
5641+
le32_to_cpu(htt_stats_buf->rx_resume_cnt));
5642+
len += scnprintf(buf + len, buf_len - len, "rx_resume_fail_cnt = %u\n",
5643+
le32_to_cpu(htt_stats_buf->rx_resume_fail_cnt));
5644+
len += scnprintf(buf + len, buf_len - len, "rx_ring_switch_cnt = %u\n",
5645+
le32_to_cpu(htt_stats_buf->rx_ring_switch_cnt));
5646+
len += scnprintf(buf + len, buf_len - len, "rx_ring_restore_cnt = %u\n",
5647+
le32_to_cpu(htt_stats_buf->rx_ring_restore_cnt));
5648+
len += scnprintf(buf + len, buf_len - len, "rx_flush_cnt = %u\n",
5649+
le32_to_cpu(htt_stats_buf->rx_flush_cnt));
5650+
len += scnprintf(buf + len, buf_len - len, "rx_recovery_reset_cnt = %u\n",
5651+
le32_to_cpu(htt_stats_buf->rx_recovery_reset_cnt));
5652+
len += scnprintf(buf + len, buf_len - len, "rx_lwm_prom_filter_dis = %u\n",
5653+
le32_to_cpu(htt_stats_buf->rx_lwm_prom_filter_dis));
5654+
len += scnprintf(buf + len, buf_len - len, "rx_hwm_prom_filter_en = %u\n",
5655+
le32_to_cpu(htt_stats_buf->rx_hwm_prom_filter_en));
5656+
len += scnprintf(buf + len, buf_len - len, "bytes_received_low_32 = %u\n",
5657+
le32_to_cpu(htt_stats_buf->bytes_received_low_32));
5658+
len += scnprintf(buf + len, buf_len - len, "bytes_received_high_32 = %u\n",
5659+
le32_to_cpu(htt_stats_buf->bytes_received_high_32));
5660+
5661+
stats_req->buf_len = len;
5662+
}
5663+
5664+
static void
5665+
ath12k_htt_print_tx_hwq_stats_cmn_tlv(const void *tag_buf, u16 tag_len,
5666+
struct debug_htt_stats_req *stats_req)
5667+
{
5668+
const struct htt_tx_hwq_stats_cmn_tlv *htt_stats_buf = tag_buf;
5669+
u32 buf_len = ATH12K_HTT_STATS_BUF_SIZE;
5670+
u32 len = stats_req->buf_len;
5671+
u8 *buf = stats_req->buf;
5672+
5673+
if (tag_len < sizeof(*htt_stats_buf))
5674+
return;
5675+
5676+
len += scnprintf(buf + len, buf_len - len, "HTT_TX_HWQ_STATS_CMN_TLV:\n");
5677+
len += scnprintf(buf + len, buf_len - len, "mac_id = %u\n",
5678+
le32_to_cpu(htt_stats_buf->mac_id__hwq_id__word) & 0xFF);
5679+
len += scnprintf(buf + len, buf_len - len, "hwq_id = %u\n",
5680+
(le32_to_cpu(htt_stats_buf->mac_id__hwq_id__word) & 0xFF00) >> 8);
5681+
len += scnprintf(buf + len, buf_len - len, "xretry = %u\n",
5682+
le32_to_cpu(htt_stats_buf->xretry));
5683+
len += scnprintf(buf + len, buf_len - len, "underrun_cnt = %u\n",
5684+
le32_to_cpu(htt_stats_buf->underrun_cnt));
5685+
len += scnprintf(buf + len, buf_len - len, "flush_cnt = %u\n",
5686+
le32_to_cpu(htt_stats_buf->flush_cnt));
5687+
len += scnprintf(buf + len, buf_len - len, "filt_cnt = %u\n",
5688+
le32_to_cpu(htt_stats_buf->filt_cnt));
5689+
len += scnprintf(buf + len, buf_len - len, "null_mpdu_bmap = %u\n",
5690+
le32_to_cpu(htt_stats_buf->null_mpdu_bmap));
5691+
len += scnprintf(buf + len, buf_len - len, "user_ack_failure = %u\n",
5692+
le32_to_cpu(htt_stats_buf->user_ack_failure));
5693+
len += scnprintf(buf + len, buf_len - len, "ack_tlv_proc = %u\n",
5694+
le32_to_cpu(htt_stats_buf->ack_tlv_proc));
5695+
len += scnprintf(buf + len, buf_len - len, "sched_id_proc = %u\n",
5696+
le32_to_cpu(htt_stats_buf->sched_id_proc));
5697+
len += scnprintf(buf + len, buf_len - len, "null_mpdu_tx_count = %u\n",
5698+
le32_to_cpu(htt_stats_buf->null_mpdu_tx_count));
5699+
len += scnprintf(buf + len, buf_len - len, "mpdu_bmap_not_recvd = %u\n",
5700+
le32_to_cpu(htt_stats_buf->mpdu_bmap_not_recvd));
5701+
len += scnprintf(buf + len, buf_len - len, "num_bar = %u\n",
5702+
le32_to_cpu(htt_stats_buf->num_bar));
5703+
len += scnprintf(buf + len, buf_len - len, "rts = %u\n",
5704+
le32_to_cpu(htt_stats_buf->rts));
5705+
len += scnprintf(buf + len, buf_len - len, "cts2self = %u\n",
5706+
le32_to_cpu(htt_stats_buf->cts2self));
5707+
len += scnprintf(buf + len, buf_len - len, "qos_null = %u\n",
5708+
le32_to_cpu(htt_stats_buf->qos_null));
5709+
len += scnprintf(buf + len, buf_len - len, "mpdu_tried_cnt = %u\n",
5710+
le32_to_cpu(htt_stats_buf->mpdu_tried_cnt));
5711+
len += scnprintf(buf + len, buf_len - len, "mpdu_queued_cnt = %u\n",
5712+
le32_to_cpu(htt_stats_buf->mpdu_queued_cnt));
5713+
len += scnprintf(buf + len, buf_len - len, "mpdu_ack_fail_cnt = %u\n",
5714+
le32_to_cpu(htt_stats_buf->mpdu_ack_fail_cnt));
5715+
len += scnprintf(buf + len, buf_len - len, "mpdu_filt_cnt = %u\n",
5716+
le32_to_cpu(htt_stats_buf->mpdu_filt_cnt));
5717+
len += scnprintf(buf + len, buf_len - len, "false_mpdu_ack_count = %u\n",
5718+
le32_to_cpu(htt_stats_buf->false_mpdu_ack_count));
5719+
len += scnprintf(buf + len, buf_len - len, "txq_timeout = %u\n",
5720+
le32_to_cpu(htt_stats_buf->txq_timeout));
5721+
5722+
stats_req->buf_len = len;
5723+
}
5724+
55425725
static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
55435726
u16 tag, u16 len, const void *tag_buf,
55445727
void *user_data)
@@ -5692,6 +5875,9 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
56925875
case HTT_STATS_SFM_CLIENT_USER_TAG:
56935876
ath12k_htt_print_sfm_client_user_tlv(tag_buf, len, stats_req);
56945877
break;
5878+
case HTT_STATS_RX_PDEV_FW_STATS_TAG:
5879+
ath12k_htt_print_rx_pdev_fw_stats_tlv(tag_buf, len, stats_req);
5880+
break;
56955881
case HTT_STATS_TX_PDEV_MU_MIMO_STATS_TAG:
56965882
ath12k_htt_print_tx_pdev_mu_mimo_sch_stats_tlv(tag_buf, len, stats_req);
56975883
break;
@@ -5835,6 +6021,9 @@ static int ath12k_dbg_htt_ext_stats_parse(struct ath12k_base *ab,
58356021
case HTT_STATS_PDEV_RTT_TBR_CMD_RESULT_STATS_TAG:
58366022
ath12k_htt_print_pdev_rtt_tbr_cmd_res_stats_tlv(tag_buf, len, stats_req);
58376023
break;
6024+
case HTT_STATS_TX_HWQ_CMN_TAG:
6025+
ath12k_htt_print_tx_hwq_stats_cmn_tlv(tag_buf, len, stats_req);
6026+
break;
58386027
default:
58396028
break;
58406029
}

drivers/net/wireless/ath/ath12k/debugfs_htt_stats.h

Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,8 @@ struct ath12k_htt_extd_stats_msg {
127127
enum ath12k_dbg_htt_ext_stats_type {
128128
ATH12K_DBG_HTT_EXT_STATS_RESET = 0,
129129
ATH12K_DBG_HTT_EXT_STATS_PDEV_TX = 1,
130+
ATH12K_DBG_HTT_EXT_STATS_PDEV_RX = 2,
131+
ATH12K_DBG_HTT_EXT_STATS_PDEV_TX_HWQ = 3,
130132
ATH12K_DBG_HTT_EXT_STATS_PDEV_TX_SCHED = 4,
131133
ATH12K_DBG_HTT_EXT_STATS_PDEV_ERROR = 5,
132134
ATH12K_DBG_HTT_EXT_STATS_PDEV_TQM = 6,
@@ -173,6 +175,7 @@ enum ath12k_dbg_htt_tlv_tag {
173175
HTT_STATS_TX_PDEV_SIFS_TAG = 2,
174176
HTT_STATS_TX_PDEV_FLUSH_TAG = 3,
175177
HTT_STATS_STRING_TAG = 5,
178+
HTT_STATS_TX_HWQ_CMN_TAG = 6,
176179
HTT_STATS_TX_TQM_GEN_MPDU_TAG = 11,
177180
HTT_STATS_TX_TQM_LIST_MPDU_TAG = 12,
178181
HTT_STATS_TX_TQM_LIST_MPDU_CNT_TAG = 13,
@@ -188,6 +191,7 @@ enum ath12k_dbg_htt_tlv_tag {
188191
HTT_STATS_TX_PDEV_MU_MIMO_STATS_TAG = 25,
189192
HTT_STATS_SFM_CMN_TAG = 26,
190193
HTT_STATS_SRING_STATS_TAG = 27,
194+
HTT_STATS_RX_PDEV_FW_STATS_TAG = 28,
191195
HTT_STATS_TX_PDEV_RATE_STATS_TAG = 34,
192196
HTT_STATS_RX_PDEV_RATE_STATS_TAG = 35,
193197
HTT_STATS_TX_PDEV_SCHEDULER_TXQ_STATS_TAG = 36,
@@ -2075,4 +2079,81 @@ struct ath12k_htt_stats_pdev_rtt_tbr_cmd_result_stats_tlv {
20752079
__le32 mu_res[ATH12K_HTT_FTYPE_MAX][ATH12K_HTT_MAX_SCH_CMD_RESULT];
20762080
} __packed;
20772081

2082+
struct htt_rx_pdev_fw_stats_tlv {
2083+
__le32 mac_id__word;
2084+
__le32 ppdu_recvd;
2085+
__le32 mpdu_cnt_fcs_ok;
2086+
__le32 mpdu_cnt_fcs_err;
2087+
__le32 tcp_msdu_cnt;
2088+
__le32 tcp_ack_msdu_cnt;
2089+
__le32 udp_msdu_cnt;
2090+
__le32 other_msdu_cnt;
2091+
__le32 fw_ring_mpdu_ind;
2092+
__le32 fw_ring_mgmt_subtype[ATH12K_HTT_STATS_SUBTYPE_MAX];
2093+
__le32 fw_ring_ctrl_subtype[ATH12K_HTT_STATS_SUBTYPE_MAX];
2094+
__le32 fw_ring_mcast_data_msdu;
2095+
__le32 fw_ring_bcast_data_msdu;
2096+
__le32 fw_ring_ucast_data_msdu;
2097+
__le32 fw_ring_null_data_msdu;
2098+
__le32 fw_ring_mpdu_drop;
2099+
__le32 ofld_local_data_ind_cnt;
2100+
__le32 ofld_local_data_buf_recycle_cnt;
2101+
__le32 drx_local_data_ind_cnt;
2102+
__le32 drx_local_data_buf_recycle_cnt;
2103+
__le32 local_nondata_ind_cnt;
2104+
__le32 local_nondata_buf_recycle_cnt;
2105+
__le32 fw_status_buf_ring_refill_cnt;
2106+
__le32 fw_status_buf_ring_empty_cnt;
2107+
__le32 fw_pkt_buf_ring_refill_cnt;
2108+
__le32 fw_pkt_buf_ring_empty_cnt;
2109+
__le32 fw_link_buf_ring_refill_cnt;
2110+
__le32 fw_link_buf_ring_empty_cnt;
2111+
__le32 host_pkt_buf_ring_refill_cnt;
2112+
__le32 host_pkt_buf_ring_empty_cnt;
2113+
__le32 mon_pkt_buf_ring_refill_cnt;
2114+
__le32 mon_pkt_buf_ring_empty_cnt;
2115+
__le32 mon_status_buf_ring_refill_cnt;
2116+
__le32 mon_status_buf_ring_empty_cnt;
2117+
__le32 mon_desc_buf_ring_refill_cnt;
2118+
__le32 mon_desc_buf_ring_empty_cnt;
2119+
__le32 mon_dest_ring_update_cnt;
2120+
__le32 mon_dest_ring_full_cnt;
2121+
__le32 rx_suspend_cnt;
2122+
__le32 rx_suspend_fail_cnt;
2123+
__le32 rx_resume_cnt;
2124+
__le32 rx_resume_fail_cnt;
2125+
__le32 rx_ring_switch_cnt;
2126+
__le32 rx_ring_restore_cnt;
2127+
__le32 rx_flush_cnt;
2128+
__le32 rx_recovery_reset_cnt;
2129+
__le32 rx_lwm_prom_filter_dis;
2130+
__le32 rx_hwm_prom_filter_en;
2131+
__le32 bytes_received_low_32;
2132+
__le32 bytes_received_high_32;
2133+
} __packed;
2134+
2135+
struct htt_tx_hwq_stats_cmn_tlv {
2136+
__le32 mac_id__hwq_id__word;
2137+
__le32 xretry;
2138+
__le32 underrun_cnt;
2139+
__le32 flush_cnt;
2140+
__le32 filt_cnt;
2141+
__le32 null_mpdu_bmap;
2142+
__le32 user_ack_failure;
2143+
__le32 ack_tlv_proc;
2144+
__le32 sched_id_proc;
2145+
__le32 null_mpdu_tx_count;
2146+
__le32 mpdu_bmap_not_recvd;
2147+
__le32 num_bar;
2148+
__le32 rts;
2149+
__le32 cts2self;
2150+
__le32 qos_null;
2151+
__le32 mpdu_tried_cnt;
2152+
__le32 mpdu_queued_cnt;
2153+
__le32 mpdu_ack_fail_cnt;
2154+
__le32 mpdu_filt_cnt;
2155+
__le32 false_mpdu_ack_count;
2156+
__le32 txq_timeout;
2157+
} __packed;
2158+
20782159
#endif

drivers/net/wireless/ath/ath12k/dp_rx.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,9 @@ static int ath12k_dp_prepare_reo_update_elem(struct ath12k_dp *dp,
565565

566566
lockdep_assert_held(&dp->dp_lock);
567567

568+
if (!peer->primary_link)
569+
return 0;
570+
568571
elem = kzalloc(sizeof(*elem), GFP_ATOMIC);
569572
if (!elem)
570573
return -ENOMEM;

drivers/net/wireless/ath/ath12k/mac.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13162,6 +13162,7 @@ int ath12k_mac_op_get_survey(struct ieee80211_hw *hw, int idx,
1316213162
struct ath12k *ar;
1316313163
struct ieee80211_supported_band *sband;
1316413164
struct survey_info *ar_survey;
13165+
int orig_idx = idx;
1316513166

1316613167
lockdep_assert_wiphy(hw->wiphy);
1316713168

@@ -13196,7 +13197,7 @@ int ath12k_mac_op_get_survey(struct ieee80211_hw *hw, int idx,
1319613197
return -ENOENT;
1319713198
}
1319813199

13199-
ar_survey = &ar->survey[idx];
13200+
ar_survey = &ar->survey[orig_idx];
1320013201

1320113202
ath12k_mac_update_bss_chan_survey(ar, &sband->channels[idx]);
1320213203

0 commit comments

Comments
 (0)