Skip to content

Commit b1cb6ad

Browse files
author
Kalle Valo
committed
Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
ath.git patches for v5.8. Major changes: ath10k * SDIO and SNOC are not experimental anymore
2 parents 50ce4c0 + 25ca180 commit b1cb6ad

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+405
-260
lines changed

drivers/net/wireless/ath/ath10k/Kconfig

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,10 @@ config ATH10K_AHB
2828
This module adds support for AHB bus
2929

3030
config ATH10K_SDIO
31-
tristate "Atheros ath10k SDIO support (EXPERIMENTAL)"
31+
tristate "Atheros ath10k SDIO support"
3232
depends on ATH10K && MMC
3333
---help---
34-
This module adds experimental support for SDIO/MMC bus. Currently
35-
work in progress and will not fully work.
34+
This module adds support for SDIO/MMC bus.
3635

3736
config ATH10K_USB
3837
tristate "Atheros ath10k USB support (EXPERIMENTAL)"
@@ -42,7 +41,7 @@ config ATH10K_USB
4241
work in progress and will not fully work.
4342

4443
config ATH10K_SNOC
45-
tristate "Qualcomm ath10k SNOC support (EXPERIMENTAL)"
44+
tristate "Qualcomm ath10k SNOC support"
4645
depends on ATH10K
4746
depends on ARCH_QCOM || COMPILE_TEST
4847
select QCOM_QMI_HELPERS

drivers/net/wireless/ath/ath10k/ce.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ struct ath10k_ce_ring {
110110
struct ce_desc_64 *shadow_base;
111111

112112
/* keep last */
113-
void *per_transfer_context[0];
113+
void *per_transfer_context[];
114114
};
115115

116116
struct ath10k_ce_pipe {

drivers/net/wireless/ath/ath10k/core.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1262,7 +1262,7 @@ struct ath10k {
12621262
int coex_gpio_pin;
12631263

12641264
/* must be last */
1265-
u8 drv_priv[0] __aligned(sizeof(void *));
1265+
u8 drv_priv[] __aligned(sizeof(void *));
12661266
};
12671267

12681268
static inline bool ath10k_peer_stats_enabled(struct ath10k *ar)

drivers/net/wireless/ath/ath10k/coredump.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ struct ath10k_dump_file_data {
8888
u8 unused[128];
8989

9090
/* struct ath10k_tlv_dump_data + more */
91-
u8 data[0];
91+
u8 data[];
9292
} __packed;
9393

9494
struct ath10k_dump_ram_data_hdr {
@@ -100,7 +100,7 @@ struct ath10k_dump_ram_data_hdr {
100100
/* length of payload data, not including this header */
101101
__le32 length;
102102

103-
u8 data[0];
103+
u8 data[];
104104
};
105105

106106
/* magic number to fill the holes not copied due to sections in regions */

drivers/net/wireless/ath/ath10k/debug.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ struct ath10k_pktlog_hdr {
6565
__le16 log_type; /* Type of log information foll this header */
6666
__le16 size; /* Size of variable length log information in bytes */
6767
__le32 timestamp;
68-
u8 payload[0];
68+
u8 payload[];
6969
} __packed;
7070

7171
/* FIXME: How to calculate the buffer size sanely? */

drivers/net/wireless/ath/ath10k/htt.h

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -289,12 +289,12 @@ struct htt_rx_ring_setup_hdr {
289289

290290
struct htt_rx_ring_setup_32 {
291291
struct htt_rx_ring_setup_hdr hdr;
292-
struct htt_rx_ring_setup_ring32 rings[0];
292+
struct htt_rx_ring_setup_ring32 rings[];
293293
} __packed;
294294

295295
struct htt_rx_ring_setup_64 {
296296
struct htt_rx_ring_setup_hdr hdr;
297-
struct htt_rx_ring_setup_ring64 rings[0];
297+
struct htt_rx_ring_setup_ring64 rings[];
298298
} __packed;
299299

300300
/*
@@ -732,7 +732,7 @@ struct htt_rx_indication {
732732
* %mpdu_ranges starts after &%prefix + roundup(%fw_rx_desc_bytes, 4)
733733
* and has %num_mpdu_ranges elements.
734734
*/
735-
struct htt_rx_indication_mpdu_range mpdu_ranges[0];
735+
struct htt_rx_indication_mpdu_range mpdu_ranges[];
736736
} __packed;
737737

738738
/* High latency version of the RX indication */
@@ -741,7 +741,7 @@ struct htt_rx_indication_hl {
741741
struct htt_rx_indication_ppdu ppdu;
742742
struct htt_rx_indication_prefix prefix;
743743
struct fw_rx_desc_hl fw_desc;
744-
struct htt_rx_indication_mpdu_range mpdu_ranges[0];
744+
struct htt_rx_indication_mpdu_range mpdu_ranges[];
745745
} __packed;
746746

747747
struct htt_hl_rx_desc {
@@ -908,7 +908,7 @@ struct htt_append_retries {
908908
struct htt_data_tx_completion_ext {
909909
struct htt_append_retries a_retries;
910910
__le32 t_stamp;
911-
__le16 msdus_rssi[0];
911+
__le16 msdus_rssi[];
912912
} __packed;
913913

914914
/**
@@ -992,7 +992,7 @@ struct htt_data_tx_completion {
992992
} __packed;
993993
u8 num_msdus;
994994
u8 flags2; /* HTT_TX_CMPL_FLAG_DATA_RSSI */
995-
__le16 msdus[0]; /* variable length based on %num_msdus */
995+
__le16 msdus[]; /* variable length based on %num_msdus */
996996
} __packed;
997997

998998
#define HTT_TX_PPDU_DUR_INFO0_PEER_ID_MASK GENMASK(15, 0)
@@ -1007,7 +1007,7 @@ struct htt_data_tx_ppdu_dur {
10071007

10081008
struct htt_data_tx_compl_ppdu_dur {
10091009
__le32 info0; /* HTT_TX_COMPL_PPDU_DUR_INFO0_ */
1010-
struct htt_data_tx_ppdu_dur ppdu_dur[0];
1010+
struct htt_data_tx_ppdu_dur ppdu_dur[];
10111011
} __packed;
10121012

10131013
struct htt_tx_compl_ind_base {
@@ -1033,7 +1033,7 @@ struct htt_rc_update {
10331033
u8 addr[6];
10341034
u8 num_elems;
10351035
u8 rsvd0;
1036-
struct htt_rc_tx_done_params params[0]; /* variable length %num_elems */
1036+
struct htt_rc_tx_done_params params[]; /* variable length %num_elems */
10371037
} __packed;
10381038

10391039
/* see htt_rx_indication for similar fields and descriptions */
@@ -1050,7 +1050,7 @@ struct htt_rx_fragment_indication {
10501050
__le16 fw_rx_desc_bytes;
10511051
__le16 rsvd0;
10521052

1053-
u8 fw_msdu_rx_desc[0];
1053+
u8 fw_msdu_rx_desc[];
10541054
} __packed;
10551055

10561056
#define ATH10K_IEEE80211_EXTIV BIT(5)
@@ -1075,7 +1075,7 @@ struct htt_rx_pn_ind {
10751075
u8 seqno_end;
10761076
u8 pn_ie_count;
10771077
u8 reserved;
1078-
u8 pn_ies[0];
1078+
u8 pn_ies[];
10791079
} __packed;
10801080

10811081
struct htt_rx_offload_msdu {
@@ -1084,7 +1084,7 @@ struct htt_rx_offload_msdu {
10841084
u8 vdev_id;
10851085
u8 tid;
10861086
u8 fw_desc;
1087-
u8 payload[0];
1087+
u8 payload[];
10881088
} __packed;
10891089

10901090
struct htt_rx_offload_ind {
@@ -1167,7 +1167,7 @@ struct htt_rx_test {
11671167
* a) num_ints * sizeof(__le32)
11681168
* b) num_chars * sizeof(u8) aligned to 4bytes
11691169
*/
1170-
u8 payload[0];
1170+
u8 payload[];
11711171
} __packed;
11721172

11731173
static inline __le32 *htt_rx_test_get_ints(struct htt_rx_test *rx_test)
@@ -1201,7 +1201,7 @@ static inline u8 *htt_rx_test_get_chars(struct htt_rx_test *rx_test)
12011201
*/
12021202
struct htt_pktlog_msg {
12031203
u8 pad[3];
1204-
u8 payload[0];
1204+
u8 payload[];
12051205
} __packed;
12061206

12071207
struct htt_dbg_stats_rx_reorder_stats {
@@ -1490,7 +1490,7 @@ struct htt_stats_conf_item {
14901490
} __packed;
14911491
u8 pad;
14921492
__le16 length;
1493-
u8 payload[0]; /* roundup(length, 4) long */
1493+
u8 payload[]; /* roundup(length, 4) long */
14941494
} __packed;
14951495

14961496
struct htt_stats_conf {
@@ -1499,7 +1499,7 @@ struct htt_stats_conf {
14991499
__le32 cookie_msb;
15001500

15011501
/* each item has variable length! */
1502-
struct htt_stats_conf_item items[0];
1502+
struct htt_stats_conf_item items[];
15031503
} __packed;
15041504

15051505
static inline struct htt_stats_conf_item *htt_stats_conf_next_item(
@@ -1673,8 +1673,8 @@ struct htt_tx_fetch_ind {
16731673
__le32 token;
16741674
__le16 num_resp_ids;
16751675
__le16 num_records;
1676-
struct htt_tx_fetch_record records[0];
16771676
__le32 resp_ids[0]; /* ath10k_htt_get_tx_fetch_ind_resp_ids() */
1677+
struct htt_tx_fetch_record records[];
16781678
} __packed;
16791679

16801680
static inline void *
@@ -1689,13 +1689,13 @@ struct htt_tx_fetch_resp {
16891689
__le16 fetch_seq_num;
16901690
__le16 num_records;
16911691
__le32 token;
1692-
struct htt_tx_fetch_record records[0];
1692+
struct htt_tx_fetch_record records[];
16931693
} __packed;
16941694

16951695
struct htt_tx_fetch_confirm {
16961696
u8 pad0;
16971697
__le16 num_resp_ids;
1698-
__le32 resp_ids[0];
1698+
__le32 resp_ids[];
16991699
} __packed;
17001700

17011701
enum htt_tx_mode_switch_mode {
@@ -1727,7 +1727,7 @@ struct htt_tx_mode_switch_ind {
17271727
__le16 info0; /* HTT_TX_MODE_SWITCH_IND_INFO0_ */
17281728
__le16 info1; /* HTT_TX_MODE_SWITCH_IND_INFO1_ */
17291729
u8 pad1[2];
1730-
struct htt_tx_mode_switch_record records[0];
1730+
struct htt_tx_mode_switch_record records[];
17311731
} __packed;
17321732

17331733
struct htt_channel_change {
@@ -1757,7 +1757,7 @@ struct htt_peer_tx_stats {
17571757
u8 num_ppdu;
17581758
u8 ppdu_len;
17591759
u8 version;
1760-
u8 payload[0];
1760+
u8 payload[];
17611761
} __packed;
17621762

17631763
#define ATH10K_10_2_TX_STATS_OFFSET 136
@@ -2206,7 +2206,7 @@ struct htt_rx_desc {
22062206
struct rx_ppdu_end ppdu_end;
22072207
} __packed;
22082208
u8 rx_hdr_status[RX_HTT_HDR_STATUS_LEN];
2209-
u8 msdu_payload[0];
2209+
u8 msdu_payload[];
22102210
};
22112211

22122212
#define HTT_RX_DESC_HL_INFO_SEQ_NUM_MASK 0x00000fff

drivers/net/wireless/ath/ath10k/hw.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ enum qca9377_chip_id_rev {
165165
struct ath10k_fw_ie {
166166
__le32 id;
167167
__le32 len;
168-
u8 data[0];
168+
u8 data[];
169169
};
170170

171171
enum ath10k_fw_ie_type {

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3967,6 +3967,9 @@ void ath10k_mgmt_over_wmi_tx_work(struct work_struct *work)
39673967
if (ret) {
39683968
ath10k_warn(ar, "failed to transmit management frame by ref via WMI: %d\n",
39693969
ret);
3970+
/* remove this msdu from idr tracking */
3971+
ath10k_wmi_cleanup_mgmt_tx_send(ar, skb);
3972+
39703973
dma_unmap_single(ar->dev, paddr, skb->len,
39713974
DMA_TO_DEVICE);
39723975
ieee80211_free_txskb(ar->hw, skb);

drivers/net/wireless/ath/ath10k/pci.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,16 @@ struct ath10k_pci {
178178
*/
179179
u32 (*targ_cpu_to_ce_addr)(struct ath10k *ar, u32 addr);
180180

181+
struct ce_attr *attr;
182+
struct ce_pipe_config *pipe_config;
183+
struct ce_service_to_pipe *serv_to_pipe;
184+
181185
/* Keep this entry in the last, memory for struct ath10k_ahb is
182186
* allocated (ahb support enabled case) in the continuation of
183187
* this struct.
184188
*/
185-
struct ath10k_ahb ahb[0];
189+
struct ath10k_ahb ahb[];
186190

187-
struct ce_attr *attr;
188-
struct ce_pipe_config *pipe_config;
189-
struct ce_service_to_pipe *serv_to_pipe;
190191
};
191192

192193
static inline struct ath10k_pci *ath10k_pci_priv(struct ath10k *ar)

drivers/net/wireless/ath/ath10k/qmi.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,16 @@ static void ath10k_qmi_del_server(struct qmi_handle *qmi_hdl,
961961
container_of(qmi_hdl, struct ath10k_qmi, qmi_hdl);
962962

963963
qmi->fw_ready = false;
964-
ath10k_qmi_driver_event_post(qmi, ATH10K_QMI_EVENT_SERVER_EXIT, NULL);
964+
965+
/*
966+
* The del_server event is to be processed only if coming from
967+
* the qmi server. The qmi infrastructure sends del_server, when
968+
* any client releases the qmi handle. In this case do not process
969+
* this del_server event.
970+
*/
971+
if (qmi->state == ATH10K_QMI_STATE_INIT_DONE)
972+
ath10k_qmi_driver_event_post(qmi, ATH10K_QMI_EVENT_SERVER_EXIT,
973+
NULL);
965974
}
966975

967976
static struct qmi_ops ath10k_qmi_ops = {
@@ -1046,6 +1055,7 @@ int ath10k_qmi_init(struct ath10k *ar, u32 msa_size)
10461055
if (ret)
10471056
goto err_qmi_lookup;
10481057

1058+
qmi->state = ATH10K_QMI_STATE_INIT_DONE;
10491059
return 0;
10501060

10511061
err_qmi_lookup:
@@ -1064,6 +1074,7 @@ int ath10k_qmi_deinit(struct ath10k *ar)
10641074
struct ath10k_snoc *ar_snoc = ath10k_snoc_priv(ar);
10651075
struct ath10k_qmi *qmi = ar_snoc->qmi;
10661076

1077+
qmi->state = ATH10K_QMI_STATE_DEINIT;
10671078
qmi_handle_release(&qmi->qmi_hdl);
10681079
cancel_work_sync(&qmi->event_work);
10691080
destroy_workqueue(qmi->event_wq);

0 commit comments

Comments
 (0)