Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge ath-next from git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git

ath.git patches for v6.2. Major changes:

ath10k

* store WLAN firmware version in SMEM image table

+230 -181
+1
drivers/net/wireless/ath/ath10k/Kconfig
··· 44 44 tristate "Qualcomm ath10k SNOC support" 45 45 depends on ATH10K 46 46 depends on ARCH_QCOM || COMPILE_TEST 47 + select QCOM_SMEM 47 48 select QCOM_SCM 48 49 select QCOM_QMI_HELPERS 49 50 help
+10 -15
drivers/net/wireless/ath/ath10k/htt_rx.c
··· 1379 1379 ath10k_get_tid(hdr, tid, sizeof(tid)), 1380 1380 is_multicast_ether_addr(ieee80211_get_DA(hdr)) ? 1381 1381 "mcast" : "ucast", 1382 - (__le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_SEQ) >> 4, 1382 + IEEE80211_SEQ_TO_SN(__le16_to_cpu(hdr->seq_ctrl)), 1383 1383 (status->encoding == RX_ENC_LEGACY) ? "legacy" : "", 1384 1384 (status->encoding == RX_ENC_HT) ? "ht" : "", 1385 1385 (status->encoding == RX_ENC_VHT) ? "vht" : "", ··· 1844 1844 } 1845 1845 1846 1846 static u64 ath10k_htt_rx_h_get_pn(struct ath10k *ar, struct sk_buff *skb, 1847 - u16 offset, 1848 1847 enum htt_rx_mpdu_encrypt_type enctype) 1849 1848 { 1850 1849 struct ieee80211_hdr *hdr; 1851 1850 u64 pn = 0; 1852 1851 u8 *ehdr; 1853 1852 1854 - hdr = (struct ieee80211_hdr *)(skb->data + offset); 1855 - ehdr = skb->data + offset + ieee80211_hdrlen(hdr->frame_control); 1853 + hdr = (struct ieee80211_hdr *)skb->data; 1854 + ehdr = skb->data + ieee80211_hdrlen(hdr->frame_control); 1856 1855 1857 1856 if (enctype == HTT_RX_MPDU_ENCRYPT_AES_CCM_WPA2) { 1858 1857 pn = ehdr[0]; ··· 1865 1866 } 1866 1867 1867 1868 static bool ath10k_htt_rx_h_frag_multicast_check(struct ath10k *ar, 1868 - struct sk_buff *skb, 1869 - u16 offset) 1869 + struct sk_buff *skb) 1870 1870 { 1871 1871 struct ieee80211_hdr *hdr; 1872 1872 1873 - hdr = (struct ieee80211_hdr *)(skb->data + offset); 1873 + hdr = (struct ieee80211_hdr *)skb->data; 1874 1874 return !is_multicast_ether_addr(hdr->addr1); 1875 1875 } 1876 1876 1877 1877 static bool ath10k_htt_rx_h_frag_pn_check(struct ath10k *ar, 1878 1878 struct sk_buff *skb, 1879 1879 u16 peer_id, 1880 - u16 offset, 1881 1880 enum htt_rx_mpdu_encrypt_type enctype) 1882 1881 { 1883 1882 struct ath10k_peer *peer; ··· 1890 1893 return false; 1891 1894 } 1892 1895 1893 - hdr = (struct ieee80211_hdr *)(skb->data + offset); 1896 + hdr = (struct ieee80211_hdr *)skb->data; 1894 1897 if (ieee80211_is_data_qos(hdr->frame_control)) 1895 1898 tid = ieee80211_get_tid(hdr); 1896 1899 else 1897 1900 tid = ATH10K_TXRX_NON_QOS_TID; 1898 1901 1899 1902 last_pn = &peer->frag_tids_last_pn[tid]; 1900 - new_pn.pn48 = ath10k_htt_rx_h_get_pn(ar, skb, offset, enctype); 1903 + new_pn.pn48 = ath10k_htt_rx_h_get_pn(ar, skb, enctype); 1901 1904 frag_number = le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_FRAG; 1902 - seq = (__le16_to_cpu(hdr->seq_ctrl) & IEEE80211_SCTL_SEQ) >> 4; 1905 + seq = IEEE80211_SEQ_TO_SN(__le16_to_cpu(hdr->seq_ctrl)); 1903 1906 1904 1907 if (frag_number == 0) { 1905 1908 last_pn->pn48 = new_pn.pn48; ··· 2056 2059 frag_pn_check = ath10k_htt_rx_h_frag_pn_check(ar, 2057 2060 msdu, 2058 2061 peer_id, 2059 - 0, 2060 2062 enctype); 2061 2063 2062 2064 if (frag) 2063 2065 multicast_check = ath10k_htt_rx_h_frag_multicast_check(ar, 2064 - msdu, 2065 - 0); 2066 + msdu); 2066 2067 2067 2068 if (!frag_pn_check || !multicast_check) { 2068 2069 /* Discard the fragment with invalid PN or multicast DA ··· 2819 2824 2820 2825 hdr_space = ieee80211_hdrlen(hdr->frame_control); 2821 2826 sc = __le16_to_cpu(hdr->seq_ctrl); 2822 - seq = (sc & IEEE80211_SCTL_SEQ) >> 4; 2827 + seq = IEEE80211_SEQ_TO_SN(sc); 2823 2828 frag = sc & IEEE80211_SCTL_FRAG; 2824 2829 2825 2830 sec_index = MS(rx_desc_info, HTT_RX_DESC_HL_INFO_MCAST_BCAST) ?
+12 -8
drivers/net/wireless/ath/ath10k/pci.c
··· 3792 3792 3793 3793 static int __init ath10k_pci_init(void) 3794 3794 { 3795 - int ret; 3795 + int ret1, ret2; 3796 3796 3797 - ret = pci_register_driver(&ath10k_pci_driver); 3798 - if (ret) 3797 + ret1 = pci_register_driver(&ath10k_pci_driver); 3798 + if (ret1) 3799 3799 printk(KERN_ERR "failed to register ath10k pci driver: %d\n", 3800 - ret); 3800 + ret1); 3801 3801 3802 - ret = ath10k_ahb_init(); 3803 - if (ret) 3804 - printk(KERN_ERR "ahb init failed: %d\n", ret); 3802 + ret2 = ath10k_ahb_init(); 3803 + if (ret2) 3804 + printk(KERN_ERR "ahb init failed: %d\n", ret2); 3805 3805 3806 - return ret; 3806 + if (ret1 && ret2) 3807 + return ret1; 3808 + 3809 + /* registered to at least one bus */ 3810 + return 0; 3807 3811 } 3808 3812 module_init(ath10k_pci_init); 3809 3813
+36 -1
drivers/net/wireless/ath/ath10k/qmi.c
··· 14 14 #include <linux/net.h> 15 15 #include <linux/platform_device.h> 16 16 #include <linux/qcom_scm.h> 17 + #include <linux/soc/qcom/smem.h> 17 18 #include <linux/string.h> 18 19 #include <net/sock.h> 19 20 ··· 23 22 24 23 #define ATH10K_QMI_CLIENT_ID 0x4b4e454c 25 24 #define ATH10K_QMI_TIMEOUT 30 25 + #define SMEM_IMAGE_VERSION_TABLE 469 26 + #define SMEM_IMAGE_TABLE_CNSS_INDEX 13 27 + #define SMEM_IMAGE_VERSION_ENTRY_SIZE 128 28 + #define SMEM_IMAGE_VERSION_NAME_SIZE 75 26 29 27 30 static int ath10k_qmi_map_msa_permission(struct ath10k_qmi *qmi, 28 31 struct ath10k_msa_mem_info *mem_info) ··· 541 536 return ath10k_qmi_mode_send_sync_msg(ar, QMI_WLFW_OFF_V01); 542 537 } 543 538 539 + static void ath10k_qmi_add_wlan_ver_smem(struct ath10k *ar, const char *fw_build_id) 540 + { 541 + u8 *table_ptr; 542 + size_t smem_item_size; 543 + const u32 smem_img_idx_wlan = SMEM_IMAGE_TABLE_CNSS_INDEX * 544 + SMEM_IMAGE_VERSION_ENTRY_SIZE; 545 + 546 + table_ptr = qcom_smem_get(QCOM_SMEM_HOST_ANY, 547 + SMEM_IMAGE_VERSION_TABLE, 548 + &smem_item_size); 549 + 550 + if (IS_ERR(table_ptr)) { 551 + ath10k_err(ar, "smem image version table not found\n"); 552 + return; 553 + } 554 + 555 + if (smem_img_idx_wlan + SMEM_IMAGE_VERSION_ENTRY_SIZE > 556 + smem_item_size) { 557 + ath10k_err(ar, "smem block size too small: %zu\n", 558 + smem_item_size); 559 + return; 560 + } 561 + 562 + strscpy(table_ptr + smem_img_idx_wlan, fw_build_id, 563 + SMEM_IMAGE_VERSION_NAME_SIZE); 564 + } 565 + 544 566 static int ath10k_qmi_cap_send_sync_msg(struct ath10k_qmi *qmi) 545 567 { 546 568 struct wlfw_cap_resp_msg_v01 *resp; ··· 638 606 qmi->fw_version, qmi->fw_build_timestamp, qmi->fw_build_id); 639 607 } 640 608 609 + if (resp->fw_build_id_valid) 610 + ath10k_qmi_add_wlan_ver_smem(ar, qmi->fw_build_id); 611 + 641 612 kfree(resp); 642 613 return 0; 643 614 ··· 653 618 { 654 619 struct wlfw_host_cap_resp_msg_v01 resp = {}; 655 620 struct wlfw_host_cap_req_msg_v01 req = {}; 656 - struct qmi_elem_info *req_ei; 621 + const struct qmi_elem_info *req_ei; 657 622 struct ath10k *ar = qmi->ar; 658 623 struct ath10k_snoc *ar_snoc = ath10k_snoc_priv(ar); 659 624 struct qmi_txn txn;
+63 -63
drivers/net/wireless/ath/ath10k/qmi_wlfw_v01.c
··· 7 7 #include <linux/types.h> 8 8 #include "qmi_wlfw_v01.h" 9 9 10 - static struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = { 10 + static const struct qmi_elem_info wlfw_ce_tgt_pipe_cfg_s_v01_ei[] = { 11 11 { 12 12 .data_type = QMI_UNSIGNED_4_BYTE, 13 13 .elem_len = 1, ··· 56 56 {} 57 57 }; 58 58 59 - static struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = { 59 + static const struct qmi_elem_info wlfw_ce_svc_pipe_cfg_s_v01_ei[] = { 60 60 { 61 61 .data_type = QMI_UNSIGNED_4_BYTE, 62 62 .elem_len = 1, ··· 87 87 {} 88 88 }; 89 89 90 - static struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = { 90 + static const struct qmi_elem_info wlfw_shadow_reg_cfg_s_v01_ei[] = { 91 91 { 92 92 .data_type = QMI_UNSIGNED_2_BYTE, 93 93 .elem_len = 1, ··· 109 109 {} 110 110 }; 111 111 112 - static struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = { 112 + static const struct qmi_elem_info wlfw_shadow_reg_v2_cfg_s_v01_ei[] = { 113 113 { 114 114 .data_type = QMI_UNSIGNED_4_BYTE, 115 115 .elem_len = 1, ··· 122 122 {} 123 123 }; 124 124 125 - static struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = { 125 + static const struct qmi_elem_info wlfw_memory_region_info_s_v01_ei[] = { 126 126 { 127 127 .data_type = QMI_UNSIGNED_8_BYTE, 128 128 .elem_len = 1, ··· 153 153 {} 154 154 }; 155 155 156 - static struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = { 156 + static const struct qmi_elem_info wlfw_mem_cfg_s_v01_ei[] = { 157 157 { 158 158 .data_type = QMI_UNSIGNED_8_BYTE, 159 159 .elem_len = 1, ··· 184 184 {} 185 185 }; 186 186 187 - static struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = { 187 + static const struct qmi_elem_info wlfw_mem_seg_s_v01_ei[] = { 188 188 { 189 189 .data_type = QMI_UNSIGNED_4_BYTE, 190 190 .elem_len = 1, ··· 225 225 {} 226 226 }; 227 227 228 - static struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = { 228 + static const struct qmi_elem_info wlfw_mem_seg_resp_s_v01_ei[] = { 229 229 { 230 230 .data_type = QMI_UNSIGNED_8_BYTE, 231 231 .elem_len = 1, ··· 256 256 {} 257 257 }; 258 258 259 - static struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = { 259 + static const struct qmi_elem_info wlfw_rf_chip_info_s_v01_ei[] = { 260 260 { 261 261 .data_type = QMI_UNSIGNED_4_BYTE, 262 262 .elem_len = 1, ··· 278 278 {} 279 279 }; 280 280 281 - static struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = { 281 + static const struct qmi_elem_info wlfw_rf_board_info_s_v01_ei[] = { 282 282 { 283 283 .data_type = QMI_UNSIGNED_4_BYTE, 284 284 .elem_len = 1, ··· 291 291 {} 292 292 }; 293 293 294 - static struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = { 294 + static const struct qmi_elem_info wlfw_soc_info_s_v01_ei[] = { 295 295 { 296 296 .data_type = QMI_UNSIGNED_4_BYTE, 297 297 .elem_len = 1, ··· 304 304 {} 305 305 }; 306 306 307 - static struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = { 307 + static const struct qmi_elem_info wlfw_fw_version_info_s_v01_ei[] = { 308 308 { 309 309 .data_type = QMI_UNSIGNED_4_BYTE, 310 310 .elem_len = 1, ··· 326 326 {} 327 327 }; 328 328 329 - struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = { 329 + const struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[] = { 330 330 { 331 331 .data_type = QMI_OPT_FLAG, 332 332 .elem_len = 1, ··· 528 528 {} 529 529 }; 530 530 531 - struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = { 531 + const struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[] = { 532 532 { 533 533 .data_type = QMI_STRUCT, 534 534 .elem_len = 1, ··· 560 560 {} 561 561 }; 562 562 563 - struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = { 563 + const struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[] = { 564 564 {} 565 565 }; 566 566 567 - struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[] = { 567 + const struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[] = { 568 568 {} 569 569 }; 570 570 571 - struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = { 571 + const struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[] = { 572 572 { 573 573 .data_type = QMI_OPT_FLAG, 574 574 .elem_len = 1, ··· 626 626 {} 627 627 }; 628 628 629 - struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = { 629 + const struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[] = { 630 630 { 631 631 .data_type = QMI_SIGNED_4_BYTE_ENUM, 632 632 .elem_len = 1, ··· 657 657 {} 658 658 }; 659 659 660 - struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = { 660 + const struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[] = { 661 661 { 662 662 .data_type = QMI_STRUCT, 663 663 .elem_len = 1, ··· 671 671 {} 672 672 }; 673 673 674 - struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = { 674 + const struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[] = { 675 675 { 676 676 .data_type = QMI_OPT_FLAG, 677 677 .elem_len = 1, ··· 805 805 {} 806 806 }; 807 807 808 - struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = { 808 + const struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[] = { 809 809 { 810 810 .data_type = QMI_STRUCT, 811 811 .elem_len = 1, ··· 819 819 {} 820 820 }; 821 821 822 - struct qmi_elem_info wlfw_cap_req_msg_v01_ei[] = { 822 + const struct qmi_elem_info wlfw_cap_req_msg_v01_ei[] = { 823 823 {} 824 824 }; 825 825 826 - struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = { 826 + const struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[] = { 827 827 { 828 828 .data_type = QMI_STRUCT, 829 829 .elem_len = 1, ··· 949 949 {} 950 950 }; 951 951 952 - struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = { 952 + const struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[] = { 953 953 { 954 954 .data_type = QMI_UNSIGNED_1_BYTE, 955 955 .elem_len = 1, ··· 1079 1079 {} 1080 1080 }; 1081 1081 1082 - struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[] = { 1082 + const struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[] = { 1083 1083 { 1084 1084 .data_type = QMI_STRUCT, 1085 1085 .elem_len = 1, ··· 1093 1093 {} 1094 1094 }; 1095 1095 1096 - struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = { 1096 + const struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[] = { 1097 1097 { 1098 1098 .data_type = QMI_DATA_LEN, 1099 1099 .elem_len = 1, ··· 1133 1133 {} 1134 1134 }; 1135 1135 1136 - struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[] = { 1136 + const struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[] = { 1137 1137 { 1138 1138 .data_type = QMI_STRUCT, 1139 1139 .elem_len = 1, ··· 1147 1147 {} 1148 1148 }; 1149 1149 1150 - struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = { 1150 + const struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[] = { 1151 1151 { 1152 1152 .data_type = QMI_SIGNED_4_BYTE_ENUM, 1153 1153 .elem_len = 1, ··· 1160 1160 {} 1161 1161 }; 1162 1162 1163 - struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[] = { 1163 + const struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[] = { 1164 1164 { 1165 1165 .data_type = QMI_UNSIGNED_1_BYTE, 1166 1166 .elem_len = 1, ··· 1272 1272 {} 1273 1273 }; 1274 1274 1275 - struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[] = { 1275 + const struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[] = { 1276 1276 { 1277 1277 .data_type = QMI_STRUCT, 1278 1278 .elem_len = 1, ··· 1286 1286 {} 1287 1287 }; 1288 1288 1289 - struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = { 1289 + const struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[] = { 1290 1290 { 1291 1291 .data_type = QMI_SIGNED_4_BYTE_ENUM, 1292 1292 .elem_len = 1, ··· 1308 1308 {} 1309 1309 }; 1310 1310 1311 - struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[] = { 1311 + const struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[] = { 1312 1312 { 1313 1313 .data_type = QMI_SIGNED_4_BYTE_ENUM, 1314 1314 .elem_len = 1, ··· 1330 1330 {} 1331 1331 }; 1332 1332 1333 - struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[] = { 1333 + const struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[] = { 1334 1334 { 1335 1335 .data_type = QMI_STRUCT, 1336 1336 .elem_len = 1, ··· 1443 1443 {} 1444 1444 }; 1445 1445 1446 - struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[] = { 1446 + const struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[] = { 1447 1447 { 1448 1448 .data_type = QMI_UNSIGNED_8_BYTE, 1449 1449 .elem_len = 1, ··· 1465 1465 {} 1466 1466 }; 1467 1467 1468 - struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[] = { 1468 + const struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[] = { 1469 1469 { 1470 1470 .data_type = QMI_STRUCT, 1471 1471 .elem_len = 1, ··· 1498 1498 {} 1499 1499 }; 1500 1500 1501 - struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[] = { 1501 + const struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[] = { 1502 1502 {} 1503 1503 }; 1504 1504 1505 - struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[] = { 1505 + const struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[] = { 1506 1506 { 1507 1507 .data_type = QMI_STRUCT, 1508 1508 .elem_len = 1, ··· 1516 1516 {} 1517 1517 }; 1518 1518 1519 - struct qmi_elem_info wlfw_ini_req_msg_v01_ei[] = { 1519 + const struct qmi_elem_info wlfw_ini_req_msg_v01_ei[] = { 1520 1520 { 1521 1521 .data_type = QMI_OPT_FLAG, 1522 1522 .elem_len = 1, ··· 1538 1538 {} 1539 1539 }; 1540 1540 1541 - struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[] = { 1541 + const struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[] = { 1542 1542 { 1543 1543 .data_type = QMI_STRUCT, 1544 1544 .elem_len = 1, ··· 1552 1552 {} 1553 1553 }; 1554 1554 1555 - struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[] = { 1555 + const struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[] = { 1556 1556 { 1557 1557 .data_type = QMI_UNSIGNED_4_BYTE, 1558 1558 .elem_len = 1, ··· 1583 1583 {} 1584 1584 }; 1585 1585 1586 - struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = { 1586 + const struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[] = { 1587 1587 { 1588 1588 .data_type = QMI_STRUCT, 1589 1589 .elem_len = 1, ··· 1624 1624 {} 1625 1625 }; 1626 1626 1627 - struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[] = { 1627 + const struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[] = { 1628 1628 { 1629 1629 .data_type = QMI_UNSIGNED_4_BYTE, 1630 1630 .elem_len = 1, ··· 1664 1664 {} 1665 1665 }; 1666 1666 1667 - struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = { 1667 + const struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[] = { 1668 1668 { 1669 1669 .data_type = QMI_STRUCT, 1670 1670 .elem_len = 1, ··· 1678 1678 {} 1679 1679 }; 1680 1680 1681 - struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[] = { 1681 + const struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[] = { 1682 1682 { 1683 1683 .data_type = QMI_UNSIGNED_8_BYTE, 1684 1684 .elem_len = 1, ··· 1691 1691 {} 1692 1692 }; 1693 1693 1694 - struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[] = { 1694 + const struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[] = { 1695 1695 { 1696 1696 .data_type = QMI_STRUCT, 1697 1697 .elem_len = 1, ··· 1705 1705 {} 1706 1706 }; 1707 1707 1708 - struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[] = { 1708 + const struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[] = { 1709 1709 { 1710 1710 .data_type = QMI_OPT_FLAG, 1711 1711 .elem_len = 1, ··· 1727 1727 {} 1728 1728 }; 1729 1729 1730 - struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[] = { 1730 + const struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[] = { 1731 1731 { 1732 1732 .data_type = QMI_STRUCT, 1733 1733 .elem_len = 1, ··· 1741 1741 {} 1742 1742 }; 1743 1743 1744 - struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = { 1744 + const struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[] = { 1745 1745 { 1746 1746 .data_type = QMI_OPT_FLAG, 1747 1747 .elem_len = 1, ··· 1988 1988 {} 1989 1989 }; 1990 1990 1991 - struct qmi_elem_info wlfw_host_cap_8bit_req_msg_v01_ei[] = { 1991 + const struct qmi_elem_info wlfw_host_cap_8bit_req_msg_v01_ei[] = { 1992 1992 { 1993 1993 .data_type = QMI_OPT_FLAG, 1994 1994 .elem_len = 1, ··· 2010 2010 {} 2011 2011 }; 2012 2012 2013 - struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[] = { 2013 + const struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[] = { 2014 2014 { 2015 2015 .data_type = QMI_STRUCT, 2016 2016 .elem_len = 1, ··· 2024 2024 {} 2025 2025 }; 2026 2026 2027 - struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[] = { 2027 + const struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[] = { 2028 2028 { 2029 2029 .data_type = QMI_DATA_LEN, 2030 2030 .elem_len = 1, ··· 2047 2047 {} 2048 2048 }; 2049 2049 2050 - struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[] = { 2050 + const struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[] = { 2051 2051 { 2052 2052 .data_type = QMI_DATA_LEN, 2053 2053 .elem_len = 1, ··· 2070 2070 {} 2071 2071 }; 2072 2072 2073 - struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[] = { 2073 + const struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[] = { 2074 2074 { 2075 2075 .data_type = QMI_STRUCT, 2076 2076 .elem_len = 1, ··· 2084 2084 {} 2085 2085 }; 2086 2086 2087 - struct qmi_elem_info wlfw_mem_ready_ind_msg_v01_ei[] = { 2087 + const struct qmi_elem_info wlfw_mem_ready_ind_msg_v01_ei[] = { 2088 2088 {} 2089 2089 }; 2090 2090 2091 - struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[] = { 2091 + const struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[] = { 2092 2092 {} 2093 2093 }; 2094 2094 2095 - struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = { 2095 + const struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[] = { 2096 2096 { 2097 2097 .data_type = QMI_OPT_FLAG, 2098 2098 .elem_len = 1, ··· 2168 2168 {} 2169 2169 }; 2170 2170 2171 - struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[] = { 2171 + const struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[] = { 2172 2172 {} 2173 2173 }; 2174 2174 2175 - struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = { 2175 + const struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[] = { 2176 2176 { 2177 2177 .data_type = QMI_STRUCT, 2178 2178 .elem_len = 1, ··· 2186 2186 {} 2187 2187 }; 2188 2188 2189 - struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = { 2189 + const struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[] = { 2190 2190 { 2191 2191 .data_type = QMI_OPT_FLAG, 2192 2192 .elem_len = 1, ··· 2208 2208 {} 2209 2209 }; 2210 2210 2211 - struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = { 2211 + const struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[] = { 2212 2212 { 2213 2213 .data_type = QMI_STRUCT, 2214 2214 .elem_len = 1, ··· 2258 2258 {} 2259 2259 }; 2260 2260 2261 - struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[] = { 2261 + const struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[] = { 2262 2262 { 2263 2263 .data_type = QMI_UNSIGNED_8_BYTE, 2264 2264 .elem_len = 1, ··· 2280 2280 {} 2281 2281 }; 2282 2282 2283 - struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[] = { 2283 + const struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[] = { 2284 2284 { 2285 2285 .data_type = QMI_STRUCT, 2286 2286 .elem_len = 1, ··· 2294 2294 {} 2295 2295 }; 2296 2296 2297 - struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[] = { 2297 + const struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[] = { 2298 2298 { 2299 2299 .data_type = QMI_UNSIGNED_1_BYTE, 2300 2300 .elem_len = 1,
+51 -51
drivers/net/wireless/ath/ath10k/qmi_wlfw_v01.h
··· 215 215 }; 216 216 217 217 #define WLFW_IND_REGISTER_REQ_MSG_V01_MAX_MSG_LEN 50 218 - extern struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[]; 218 + extern const struct qmi_elem_info wlfw_ind_register_req_msg_v01_ei[]; 219 219 220 220 struct wlfw_ind_register_resp_msg_v01 { 221 221 struct qmi_response_type_v01 resp; ··· 224 224 }; 225 225 226 226 #define WLFW_IND_REGISTER_RESP_MSG_V01_MAX_MSG_LEN 18 227 - extern struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[]; 227 + extern const struct qmi_elem_info wlfw_ind_register_resp_msg_v01_ei[]; 228 228 229 229 struct wlfw_fw_ready_ind_msg_v01 { 230 230 char placeholder; 231 231 }; 232 232 233 233 #define WLFW_FW_READY_IND_MSG_V01_MAX_MSG_LEN 0 234 - extern struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[]; 234 + extern const struct qmi_elem_info wlfw_fw_ready_ind_msg_v01_ei[]; 235 235 236 236 struct wlfw_msa_ready_ind_msg_v01 { 237 237 char placeholder; 238 238 }; 239 239 240 240 #define WLFW_MSA_READY_IND_MSG_V01_MAX_MSG_LEN 0 241 - extern struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[]; 241 + extern const struct qmi_elem_info wlfw_msa_ready_ind_msg_v01_ei[]; 242 242 243 243 struct wlfw_pin_connect_result_ind_msg_v01 { 244 244 u8 pwr_pin_result_valid; ··· 250 250 }; 251 251 252 252 #define WLFW_PIN_CONNECT_RESULT_IND_MSG_V01_MAX_MSG_LEN 21 253 - extern struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[]; 253 + extern const struct qmi_elem_info wlfw_pin_connect_result_ind_msg_v01_ei[]; 254 254 255 255 struct wlfw_wlan_mode_req_msg_v01 { 256 256 enum wlfw_driver_mode_enum_v01 mode; ··· 259 259 }; 260 260 261 261 #define WLFW_WLAN_MODE_REQ_MSG_V01_MAX_MSG_LEN 11 262 - extern struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[]; 262 + extern const struct qmi_elem_info wlfw_wlan_mode_req_msg_v01_ei[]; 263 263 264 264 struct wlfw_wlan_mode_resp_msg_v01 { 265 265 struct qmi_response_type_v01 resp; 266 266 }; 267 267 268 268 #define WLFW_WLAN_MODE_RESP_MSG_V01_MAX_MSG_LEN 7 269 - extern struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[]; 269 + extern const struct qmi_elem_info wlfw_wlan_mode_resp_msg_v01_ei[]; 270 270 271 271 struct wlfw_wlan_cfg_req_msg_v01 { 272 272 u8 host_version_valid; ··· 286 286 }; 287 287 288 288 #define WLFW_WLAN_CFG_REQ_MSG_V01_MAX_MSG_LEN 803 289 - extern struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[]; 289 + extern const struct qmi_elem_info wlfw_wlan_cfg_req_msg_v01_ei[]; 290 290 291 291 struct wlfw_wlan_cfg_resp_msg_v01 { 292 292 struct qmi_response_type_v01 resp; 293 293 }; 294 294 295 295 #define WLFW_WLAN_CFG_RESP_MSG_V01_MAX_MSG_LEN 7 296 - extern struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[]; 296 + extern const struct qmi_elem_info wlfw_wlan_cfg_resp_msg_v01_ei[]; 297 297 298 298 struct wlfw_cap_req_msg_v01 { 299 299 char placeholder; 300 300 }; 301 301 302 302 #define WLFW_CAP_REQ_MSG_V01_MAX_MSG_LEN 0 303 - extern struct qmi_elem_info wlfw_cap_req_msg_v01_ei[]; 303 + extern const struct qmi_elem_info wlfw_cap_req_msg_v01_ei[]; 304 304 305 305 struct wlfw_cap_resp_msg_v01 { 306 306 struct qmi_response_type_v01 resp; ··· 319 319 }; 320 320 321 321 #define WLFW_CAP_RESP_MSG_V01_MAX_MSG_LEN 207 322 - extern struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[]; 322 + extern const struct qmi_elem_info wlfw_cap_resp_msg_v01_ei[]; 323 323 324 324 struct wlfw_bdf_download_req_msg_v01 { 325 325 u8 valid; ··· 339 339 }; 340 340 341 341 #define WLFW_BDF_DOWNLOAD_REQ_MSG_V01_MAX_MSG_LEN 6182 342 - extern struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[]; 342 + extern const struct qmi_elem_info wlfw_bdf_download_req_msg_v01_ei[]; 343 343 344 344 struct wlfw_bdf_download_resp_msg_v01 { 345 345 struct qmi_response_type_v01 resp; 346 346 }; 347 347 348 348 #define WLFW_BDF_DOWNLOAD_RESP_MSG_V01_MAX_MSG_LEN 7 349 - extern struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[]; 349 + extern const struct qmi_elem_info wlfw_bdf_download_resp_msg_v01_ei[]; 350 350 351 351 struct wlfw_cal_report_req_msg_v01 { 352 352 u32 meta_data_len; ··· 356 356 }; 357 357 358 358 #define WLFW_CAL_REPORT_REQ_MSG_V01_MAX_MSG_LEN 28 359 - extern struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[]; 359 + extern const struct qmi_elem_info wlfw_cal_report_req_msg_v01_ei[]; 360 360 361 361 struct wlfw_cal_report_resp_msg_v01 { 362 362 struct qmi_response_type_v01 resp; 363 363 }; 364 364 365 365 #define WLFW_CAL_REPORT_RESP_MSG_V01_MAX_MSG_LEN 7 366 - extern struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[]; 366 + extern const struct qmi_elem_info wlfw_cal_report_resp_msg_v01_ei[]; 367 367 368 368 struct wlfw_initiate_cal_download_ind_msg_v01 { 369 369 enum wlfw_cal_temp_id_enum_v01 cal_id; 370 370 }; 371 371 372 372 #define WLFW_INITIATE_CAL_DOWNLOAD_IND_MSG_V01_MAX_MSG_LEN 7 373 - extern struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[]; 373 + extern const struct qmi_elem_info wlfw_initiate_cal_download_ind_msg_v01_ei[]; 374 374 375 375 struct wlfw_cal_download_req_msg_v01 { 376 376 u8 valid; ··· 388 388 }; 389 389 390 390 #define WLFW_CAL_DOWNLOAD_REQ_MSG_V01_MAX_MSG_LEN 6178 391 - extern struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[]; 391 + extern const struct qmi_elem_info wlfw_cal_download_req_msg_v01_ei[]; 392 392 393 393 struct wlfw_cal_download_resp_msg_v01 { 394 394 struct qmi_response_type_v01 resp; 395 395 }; 396 396 397 397 #define WLFW_CAL_DOWNLOAD_RESP_MSG_V01_MAX_MSG_LEN 7 398 - extern struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[]; 398 + extern const struct qmi_elem_info wlfw_cal_download_resp_msg_v01_ei[]; 399 399 400 400 struct wlfw_initiate_cal_update_ind_msg_v01 { 401 401 enum wlfw_cal_temp_id_enum_v01 cal_id; ··· 403 403 }; 404 404 405 405 #define WLFW_INITIATE_CAL_UPDATE_IND_MSG_V01_MAX_MSG_LEN 14 406 - extern struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[]; 406 + extern const struct qmi_elem_info wlfw_initiate_cal_update_ind_msg_v01_ei[]; 407 407 408 408 struct wlfw_cal_update_req_msg_v01 { 409 409 enum wlfw_cal_temp_id_enum_v01 cal_id; ··· 411 411 }; 412 412 413 413 #define WLFW_CAL_UPDATE_REQ_MSG_V01_MAX_MSG_LEN 14 414 - extern struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[]; 414 + extern const struct qmi_elem_info wlfw_cal_update_req_msg_v01_ei[]; 415 415 416 416 struct wlfw_cal_update_resp_msg_v01 { 417 417 struct qmi_response_type_v01 resp; ··· 429 429 }; 430 430 431 431 #define WLFW_CAL_UPDATE_RESP_MSG_V01_MAX_MSG_LEN 6181 432 - extern struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[]; 432 + extern const struct qmi_elem_info wlfw_cal_update_resp_msg_v01_ei[]; 433 433 434 434 struct wlfw_msa_info_req_msg_v01 { 435 435 u64 msa_addr; ··· 437 437 }; 438 438 439 439 #define WLFW_MSA_INFO_REQ_MSG_V01_MAX_MSG_LEN 18 440 - extern struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[]; 440 + extern const struct qmi_elem_info wlfw_msa_info_req_msg_v01_ei[]; 441 441 442 442 struct wlfw_msa_info_resp_msg_v01 { 443 443 struct qmi_response_type_v01 resp; ··· 446 446 }; 447 447 448 448 #define WLFW_MSA_INFO_RESP_MSG_V01_MAX_MSG_LEN 37 449 - extern struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[]; 449 + extern const struct qmi_elem_info wlfw_msa_info_resp_msg_v01_ei[]; 450 450 451 451 struct wlfw_msa_ready_req_msg_v01 { 452 452 char placeholder; 453 453 }; 454 454 455 455 #define WLFW_MSA_READY_REQ_MSG_V01_MAX_MSG_LEN 0 456 - extern struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[]; 456 + extern const struct qmi_elem_info wlfw_msa_ready_req_msg_v01_ei[]; 457 457 458 458 struct wlfw_msa_ready_resp_msg_v01 { 459 459 struct qmi_response_type_v01 resp; 460 460 }; 461 461 462 462 #define WLFW_MSA_READY_RESP_MSG_V01_MAX_MSG_LEN 7 463 - extern struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[]; 463 + extern const struct qmi_elem_info wlfw_msa_ready_resp_msg_v01_ei[]; 464 464 465 465 struct wlfw_ini_req_msg_v01 { 466 466 u8 enablefwlog_valid; ··· 468 468 }; 469 469 470 470 #define WLFW_INI_REQ_MSG_V01_MAX_MSG_LEN 4 471 - extern struct qmi_elem_info wlfw_ini_req_msg_v01_ei[]; 471 + extern const struct qmi_elem_info wlfw_ini_req_msg_v01_ei[]; 472 472 473 473 struct wlfw_ini_resp_msg_v01 { 474 474 struct qmi_response_type_v01 resp; 475 475 }; 476 476 477 477 #define WLFW_INI_RESP_MSG_V01_MAX_MSG_LEN 7 478 - extern struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[]; 478 + extern const struct qmi_elem_info wlfw_ini_resp_msg_v01_ei[]; 479 479 480 480 struct wlfw_athdiag_read_req_msg_v01 { 481 481 u32 offset; ··· 484 484 }; 485 485 486 486 #define WLFW_ATHDIAG_READ_REQ_MSG_V01_MAX_MSG_LEN 21 487 - extern struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[]; 487 + extern const struct qmi_elem_info wlfw_athdiag_read_req_msg_v01_ei[]; 488 488 489 489 struct wlfw_athdiag_read_resp_msg_v01 { 490 490 struct qmi_response_type_v01 resp; ··· 494 494 }; 495 495 496 496 #define WLFW_ATHDIAG_READ_RESP_MSG_V01_MAX_MSG_LEN 6156 497 - extern struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[]; 497 + extern const struct qmi_elem_info wlfw_athdiag_read_resp_msg_v01_ei[]; 498 498 499 499 struct wlfw_athdiag_write_req_msg_v01 { 500 500 u32 offset; ··· 504 504 }; 505 505 506 506 #define WLFW_ATHDIAG_WRITE_REQ_MSG_V01_MAX_MSG_LEN 6163 507 - extern struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[]; 507 + extern const struct qmi_elem_info wlfw_athdiag_write_req_msg_v01_ei[]; 508 508 509 509 struct wlfw_athdiag_write_resp_msg_v01 { 510 510 struct qmi_response_type_v01 resp; 511 511 }; 512 512 513 513 #define WLFW_ATHDIAG_WRITE_RESP_MSG_V01_MAX_MSG_LEN 7 514 - extern struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[]; 514 + extern const struct qmi_elem_info wlfw_athdiag_write_resp_msg_v01_ei[]; 515 515 516 516 struct wlfw_vbatt_req_msg_v01 { 517 517 u64 voltage_uv; 518 518 }; 519 519 520 520 #define WLFW_VBATT_REQ_MSG_V01_MAX_MSG_LEN 11 521 - extern struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[]; 521 + extern const struct qmi_elem_info wlfw_vbatt_req_msg_v01_ei[]; 522 522 523 523 struct wlfw_vbatt_resp_msg_v01 { 524 524 struct qmi_response_type_v01 resp; 525 525 }; 526 526 527 527 #define WLFW_VBATT_RESP_MSG_V01_MAX_MSG_LEN 7 528 - extern struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[]; 528 + extern const struct qmi_elem_info wlfw_vbatt_resp_msg_v01_ei[]; 529 529 530 530 struct wlfw_mac_addr_req_msg_v01 { 531 531 u8 mac_addr_valid; ··· 533 533 }; 534 534 535 535 #define WLFW_MAC_ADDR_REQ_MSG_V01_MAX_MSG_LEN 9 536 - extern struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[]; 536 + extern const struct qmi_elem_info wlfw_mac_addr_req_msg_v01_ei[]; 537 537 538 538 struct wlfw_mac_addr_resp_msg_v01 { 539 539 struct qmi_response_type_v01 resp; 540 540 }; 541 541 542 542 #define WLFW_MAC_ADDR_RESP_MSG_V01_MAX_MSG_LEN 7 543 - extern struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[]; 543 + extern const struct qmi_elem_info wlfw_mac_addr_resp_msg_v01_ei[]; 544 544 545 545 #define QMI_WLFW_MAX_NUM_GPIO_V01 32 546 546 struct wlfw_host_cap_req_msg_v01 { ··· 574 574 }; 575 575 576 576 #define WLFW_HOST_CAP_REQ_MSG_V01_MAX_MSG_LEN 189 577 - extern struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[]; 578 - extern struct qmi_elem_info wlfw_host_cap_8bit_req_msg_v01_ei[]; 577 + extern const struct qmi_elem_info wlfw_host_cap_req_msg_v01_ei[]; 578 + extern const struct qmi_elem_info wlfw_host_cap_8bit_req_msg_v01_ei[]; 579 579 580 580 struct wlfw_host_cap_resp_msg_v01 { 581 581 struct qmi_response_type_v01 resp; 582 582 }; 583 583 584 584 #define WLFW_HOST_CAP_RESP_MSG_V01_MAX_MSG_LEN 7 585 - extern struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[]; 585 + extern const struct qmi_elem_info wlfw_host_cap_resp_msg_v01_ei[]; 586 586 587 587 struct wlfw_request_mem_ind_msg_v01 { 588 588 u32 mem_seg_len; ··· 590 590 }; 591 591 592 592 #define WLFW_REQUEST_MEM_IND_MSG_V01_MAX_MSG_LEN 564 593 - extern struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[]; 593 + extern const struct qmi_elem_info wlfw_request_mem_ind_msg_v01_ei[]; 594 594 595 595 struct wlfw_respond_mem_req_msg_v01 { 596 596 u32 mem_seg_len; ··· 598 598 }; 599 599 600 600 #define WLFW_RESPOND_MEM_REQ_MSG_V01_MAX_MSG_LEN 260 601 - extern struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[]; 601 + extern const struct qmi_elem_info wlfw_respond_mem_req_msg_v01_ei[]; 602 602 603 603 struct wlfw_respond_mem_resp_msg_v01 { 604 604 struct qmi_response_type_v01 resp; 605 605 }; 606 606 607 607 #define WLFW_RESPOND_MEM_RESP_MSG_V01_MAX_MSG_LEN 7 608 - extern struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[]; 608 + extern const struct qmi_elem_info wlfw_respond_mem_resp_msg_v01_ei[]; 609 609 610 610 struct wlfw_mem_ready_ind_msg_v01 { 611 611 char placeholder; 612 612 }; 613 613 614 614 #define WLFW_MEM_READY_IND_MSG_V01_MAX_MSG_LEN 0 615 - extern struct qmi_elem_info wlfw_mem_ready_ind_msg_v01_ei[]; 615 + extern const struct qmi_elem_info wlfw_mem_ready_ind_msg_v01_ei[]; 616 616 617 617 struct wlfw_fw_init_done_ind_msg_v01 { 618 618 char placeholder; 619 619 }; 620 620 621 621 #define WLFW_FW_INIT_DONE_IND_MSG_V01_MAX_MSG_LEN 0 622 - extern struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[]; 622 + extern const struct qmi_elem_info wlfw_fw_init_done_ind_msg_v01_ei[]; 623 623 624 624 struct wlfw_rejuvenate_ind_msg_v01 { 625 625 u8 cause_for_rejuvenation_valid; ··· 633 633 }; 634 634 635 635 #define WLFW_REJUVENATE_IND_MSG_V01_MAX_MSG_LEN 144 636 - extern struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[]; 636 + extern const struct qmi_elem_info wlfw_rejuvenate_ind_msg_v01_ei[]; 637 637 638 638 struct wlfw_rejuvenate_ack_req_msg_v01 { 639 639 char placeholder; 640 640 }; 641 641 642 642 #define WLFW_REJUVENATE_ACK_REQ_MSG_V01_MAX_MSG_LEN 0 643 - extern struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[]; 643 + extern const struct qmi_elem_info wlfw_rejuvenate_ack_req_msg_v01_ei[]; 644 644 645 645 struct wlfw_rejuvenate_ack_resp_msg_v01 { 646 646 struct qmi_response_type_v01 resp; 647 647 }; 648 648 649 649 #define WLFW_REJUVENATE_ACK_RESP_MSG_V01_MAX_MSG_LEN 7 650 - extern struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[]; 650 + extern const struct qmi_elem_info wlfw_rejuvenate_ack_resp_msg_v01_ei[]; 651 651 652 652 struct wlfw_dynamic_feature_mask_req_msg_v01 { 653 653 u8 mask_valid; ··· 655 655 }; 656 656 657 657 #define WLFW_DYNAMIC_FEATURE_MASK_REQ_MSG_V01_MAX_MSG_LEN 11 658 - extern struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[]; 658 + extern const struct qmi_elem_info wlfw_dynamic_feature_mask_req_msg_v01_ei[]; 659 659 660 660 struct wlfw_dynamic_feature_mask_resp_msg_v01 { 661 661 struct qmi_response_type_v01 resp; ··· 666 666 }; 667 667 668 668 #define WLFW_DYNAMIC_FEATURE_MASK_RESP_MSG_V01_MAX_MSG_LEN 29 669 - extern struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[]; 669 + extern const struct qmi_elem_info wlfw_dynamic_feature_mask_resp_msg_v01_ei[]; 670 670 671 671 struct wlfw_m3_info_req_msg_v01 { 672 672 u64 addr; ··· 674 674 }; 675 675 676 676 #define WLFW_M3_INFO_REQ_MSG_V01_MAX_MSG_LEN 18 677 - extern struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[]; 677 + extern const struct qmi_elem_info wlfw_m3_info_req_msg_v01_ei[]; 678 678 679 679 struct wlfw_m3_info_resp_msg_v01 { 680 680 struct qmi_response_type_v01 resp; 681 681 }; 682 682 683 683 #define WLFW_M3_INFO_RESP_MSG_V01_MAX_MSG_LEN 7 684 - extern struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[]; 684 + extern const struct qmi_elem_info wlfw_m3_info_resp_msg_v01_ei[]; 685 685 686 686 struct wlfw_xo_cal_ind_msg_v01 { 687 687 u8 xo_cal_data; 688 688 }; 689 689 690 690 #define WLFW_XO_CAL_IND_MSG_V01_MAX_MSG_LEN 4 691 - extern struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[]; 691 + extern const struct qmi_elem_info wlfw_xo_cal_ind_msg_v01_ei[]; 692 692 693 693 #endif
+6
drivers/net/wireless/ath/ath11k/core.c
··· 195 195 .tcl_ring_retry = true, 196 196 .tx_ring_size = DP_TCL_DATA_RING_SIZE, 197 197 .smp2p_wow_exit = false, 198 + .support_fw_mac_sequence = false, 198 199 }, 199 200 { 200 201 .name = "qca6390 hw2.0", ··· 278 277 .tcl_ring_retry = true, 279 278 .tx_ring_size = DP_TCL_DATA_RING_SIZE, 280 279 .smp2p_wow_exit = false, 280 + .support_fw_mac_sequence = true, 281 281 }, 282 282 { 283 283 .name = "qcn9074 hw1.0", ··· 358 356 .tcl_ring_retry = true, 359 357 .tx_ring_size = DP_TCL_DATA_RING_SIZE, 360 358 .smp2p_wow_exit = false, 359 + .support_fw_mac_sequence = false, 361 360 }, 362 361 { 363 362 .name = "wcn6855 hw2.0", ··· 441 438 .tcl_ring_retry = true, 442 439 .tx_ring_size = DP_TCL_DATA_RING_SIZE, 443 440 .smp2p_wow_exit = false, 441 + .support_fw_mac_sequence = true, 444 442 }, 445 443 { 446 444 .name = "wcn6855 hw2.1", ··· 523 519 .tcl_ring_retry = true, 524 520 .tx_ring_size = DP_TCL_DATA_RING_SIZE, 525 521 .smp2p_wow_exit = false, 522 + .support_fw_mac_sequence = true, 526 523 }, 527 524 { 528 525 .name = "wcn6750 hw1.0", ··· 602 597 .tcl_ring_retry = false, 603 598 .tx_ring_size = DP_TCL_DATA_RING_SIZE_WCN6750, 604 599 .smp2p_wow_exit = true, 600 + .support_fw_mac_sequence = true, 605 601 }, 606 602 }; 607 603
+1
drivers/net/wireless/ath/ath11k/hw.h
··· 219 219 bool tcl_ring_retry; 220 220 u32 tx_ring_size; 221 221 bool smp2p_wow_exit; 222 + bool support_fw_mac_sequence; 222 223 }; 223 224 224 225 struct ath11k_hw_ops {
+7
drivers/net/wireless/ath/ath11k/mac.c
··· 8010 8010 struct ath11k *ar = hw->priv; 8011 8011 struct ath11k_base *ab = ar->ab; 8012 8012 int recovery_count; 8013 + struct ath11k_vif *arvif; 8013 8014 8014 8015 if (reconfig_type != IEEE80211_RECONFIG_TYPE_RESTART) 8015 8016 return; ··· 8044 8043 ab->is_reset = false; 8045 8044 atomic_set(&ab->fail_cont_count, 0); 8046 8045 ath11k_dbg(ab, ATH11K_DBG_BOOT, "reset success\n"); 8046 + } 8047 + } 8048 + if (ar->ab->hw_params.support_fw_mac_sequence) { 8049 + list_for_each_entry(arvif, &ar->arvifs, list) { 8050 + if (arvif->is_up && arvif->vdev_type == WMI_VDEV_TYPE_STA) 8051 + ieee80211_hw_restart_disconnect(arvif->vif); 8047 8052 } 8048 8053 } 8049 8054 }
+1 -1
drivers/net/wireless/ath/ath11k/mac.h
··· 163 163 void ath11k_mac_peer_cleanup_all(struct ath11k *ar); 164 164 int ath11k_mac_tx_mgmt_pending_free(int buf_id, void *skb, void *ctx); 165 165 u8 ath11k_mac_bw_to_mac80211_bw(u8 bw); 166 - u32 ath11k_mac_he_gi_to_nl80211_he_gi(u8 sgi); 166 + enum nl80211_he_gi ath11k_mac_he_gi_to_nl80211_he_gi(u8 sgi); 167 167 enum nl80211_he_ru_alloc ath11k_mac_phy_he_ru_to_nl80211_he_ru_alloc(u16 ru_phy); 168 168 enum nl80211_he_ru_alloc ath11k_mac_he_ru_tones_to_nl80211_he_ru_alloc(u16 ru_tones); 169 169 enum ath11k_supported_bw ath11k_mac_mac80211_bw_to_ath11k_bw(enum rate_info_bw bw);
+39 -36
drivers/net/wireless/ath/ath11k/qmi.c
··· 29 29 MODULE_PARM_DESC(cold_boot_cal, 30 30 "Decrease the channel switch time but increase the driver load time (Default: true)"); 31 31 32 - static struct qmi_elem_info qmi_wlanfw_host_cap_req_msg_v01_ei[] = { 32 + static const struct qmi_elem_info qmi_wlanfw_host_cap_req_msg_v01_ei[] = { 33 33 { 34 34 .data_type = QMI_OPT_FLAG, 35 35 .elem_len = 1, ··· 280 280 }, 281 281 }; 282 282 283 - static struct qmi_elem_info qmi_wlanfw_host_cap_resp_msg_v01_ei[] = { 283 + static const struct qmi_elem_info qmi_wlanfw_host_cap_resp_msg_v01_ei[] = { 284 284 { 285 285 .data_type = QMI_STRUCT, 286 286 .elem_len = 1, ··· 297 297 }, 298 298 }; 299 299 300 - static struct qmi_elem_info qmi_wlanfw_ind_register_req_msg_v01_ei[] = { 300 + static const struct qmi_elem_info qmi_wlanfw_ind_register_req_msg_v01_ei[] = { 301 301 { 302 302 .data_type = QMI_OPT_FLAG, 303 303 .elem_len = 1, ··· 522 522 }, 523 523 }; 524 524 525 - static struct qmi_elem_info qmi_wlanfw_ind_register_resp_msg_v01_ei[] = { 525 + static const struct qmi_elem_info qmi_wlanfw_ind_register_resp_msg_v01_ei[] = { 526 526 { 527 527 .data_type = QMI_STRUCT, 528 528 .elem_len = 1, ··· 558 558 }, 559 559 }; 560 560 561 - static struct qmi_elem_info qmi_wlanfw_mem_cfg_s_v01_ei[] = { 561 + static const struct qmi_elem_info qmi_wlanfw_mem_cfg_s_v01_ei[] = { 562 562 { 563 563 .data_type = QMI_UNSIGNED_8_BYTE, 564 564 .elem_len = 1, ··· 590 590 }, 591 591 }; 592 592 593 - static struct qmi_elem_info qmi_wlanfw_mem_seg_s_v01_ei[] = { 593 + static const struct qmi_elem_info qmi_wlanfw_mem_seg_s_v01_ei[] = { 594 594 { 595 595 .data_type = QMI_UNSIGNED_4_BYTE, 596 596 .elem_len = 1, ··· 632 632 }, 633 633 }; 634 634 635 - static struct qmi_elem_info qmi_wlanfw_request_mem_ind_msg_v01_ei[] = { 635 + static const struct qmi_elem_info qmi_wlanfw_request_mem_ind_msg_v01_ei[] = { 636 636 { 637 637 .data_type = QMI_DATA_LEN, 638 638 .elem_len = 1, ··· 659 659 }, 660 660 }; 661 661 662 - static struct qmi_elem_info qmi_wlanfw_mem_seg_resp_s_v01_ei[] = { 662 + static const struct qmi_elem_info qmi_wlanfw_mem_seg_resp_s_v01_ei[] = { 663 663 { 664 664 .data_type = QMI_UNSIGNED_8_BYTE, 665 665 .elem_len = 1, ··· 699 699 }, 700 700 }; 701 701 702 - static struct qmi_elem_info qmi_wlanfw_respond_mem_req_msg_v01_ei[] = { 702 + static const struct qmi_elem_info qmi_wlanfw_respond_mem_req_msg_v01_ei[] = { 703 703 { 704 704 .data_type = QMI_DATA_LEN, 705 705 .elem_len = 1, ··· 726 726 }, 727 727 }; 728 728 729 - static struct qmi_elem_info qmi_wlanfw_respond_mem_resp_msg_v01_ei[] = { 729 + static const struct qmi_elem_info qmi_wlanfw_respond_mem_resp_msg_v01_ei[] = { 730 730 { 731 731 .data_type = QMI_STRUCT, 732 732 .elem_len = 1, ··· 744 744 }, 745 745 }; 746 746 747 - static struct qmi_elem_info qmi_wlanfw_cap_req_msg_v01_ei[] = { 747 + static const struct qmi_elem_info qmi_wlanfw_cap_req_msg_v01_ei[] = { 748 748 { 749 749 .data_type = QMI_EOTI, 750 750 .array_type = NO_ARRAY, ··· 752 752 }, 753 753 }; 754 754 755 - static struct qmi_elem_info qmi_wlanfw_device_info_req_msg_v01_ei[] = { 755 + static const struct qmi_elem_info qmi_wlanfw_device_info_req_msg_v01_ei[] = { 756 756 { 757 757 .data_type = QMI_EOTI, 758 758 .array_type = NO_ARRAY, ··· 760 760 }, 761 761 }; 762 762 763 - static struct qmi_elem_info qmi_wlfw_device_info_resp_msg_v01_ei[] = { 763 + static const struct qmi_elem_info qmi_wlfw_device_info_resp_msg_v01_ei[] = { 764 764 { 765 765 .data_type = QMI_STRUCT, 766 766 .elem_len = 1, ··· 814 814 }, 815 815 }; 816 816 817 - static struct qmi_elem_info qmi_wlanfw_rf_chip_info_s_v01_ei[] = { 817 + static const struct qmi_elem_info qmi_wlanfw_rf_chip_info_s_v01_ei[] = { 818 818 { 819 819 .data_type = QMI_UNSIGNED_4_BYTE, 820 820 .elem_len = 1, ··· 840 840 }, 841 841 }; 842 842 843 - static struct qmi_elem_info qmi_wlanfw_rf_board_info_s_v01_ei[] = { 843 + static const struct qmi_elem_info qmi_wlanfw_rf_board_info_s_v01_ei[] = { 844 844 { 845 845 .data_type = QMI_UNSIGNED_4_BYTE, 846 846 .elem_len = 1, ··· 857 857 }, 858 858 }; 859 859 860 - static struct qmi_elem_info qmi_wlanfw_soc_info_s_v01_ei[] = { 860 + static const struct qmi_elem_info qmi_wlanfw_soc_info_s_v01_ei[] = { 861 861 { 862 862 .data_type = QMI_UNSIGNED_4_BYTE, 863 863 .elem_len = 1, ··· 873 873 }, 874 874 }; 875 875 876 - static struct qmi_elem_info qmi_wlanfw_fw_version_info_s_v01_ei[] = { 876 + static const struct qmi_elem_info qmi_wlanfw_fw_version_info_s_v01_ei[] = { 877 877 { 878 878 .data_type = QMI_UNSIGNED_4_BYTE, 879 879 .elem_len = 1, ··· 899 899 }, 900 900 }; 901 901 902 - static struct qmi_elem_info qmi_wlanfw_cap_resp_msg_v01_ei[] = { 902 + static const struct qmi_elem_info qmi_wlanfw_cap_resp_msg_v01_ei[] = { 903 903 { 904 904 .data_type = QMI_STRUCT, 905 905 .elem_len = 1, ··· 1100 1100 }, 1101 1101 }; 1102 1102 1103 - static struct qmi_elem_info qmi_wlanfw_bdf_download_req_msg_v01_ei[] = { 1103 + static const struct qmi_elem_info qmi_wlanfw_bdf_download_req_msg_v01_ei[] = { 1104 1104 { 1105 1105 .data_type = QMI_UNSIGNED_1_BYTE, 1106 1106 .elem_len = 1, ··· 1235 1235 }, 1236 1236 }; 1237 1237 1238 - static struct qmi_elem_info qmi_wlanfw_bdf_download_resp_msg_v01_ei[] = { 1238 + static const struct qmi_elem_info qmi_wlanfw_bdf_download_resp_msg_v01_ei[] = { 1239 1239 { 1240 1240 .data_type = QMI_STRUCT, 1241 1241 .elem_len = 1, ··· 1253 1253 }, 1254 1254 }; 1255 1255 1256 - static struct qmi_elem_info qmi_wlanfw_m3_info_req_msg_v01_ei[] = { 1256 + static const struct qmi_elem_info qmi_wlanfw_m3_info_req_msg_v01_ei[] = { 1257 1257 { 1258 1258 .data_type = QMI_UNSIGNED_8_BYTE, 1259 1259 .elem_len = 1, ··· 1277 1277 }, 1278 1278 }; 1279 1279 1280 - static struct qmi_elem_info qmi_wlanfw_m3_info_resp_msg_v01_ei[] = { 1280 + static const struct qmi_elem_info qmi_wlanfw_m3_info_resp_msg_v01_ei[] = { 1281 1281 { 1282 1282 .data_type = QMI_STRUCT, 1283 1283 .elem_len = 1, ··· 1294 1294 }, 1295 1295 }; 1296 1296 1297 - static struct qmi_elem_info qmi_wlanfw_ce_tgt_pipe_cfg_s_v01_ei[] = { 1297 + static const struct qmi_elem_info qmi_wlanfw_ce_tgt_pipe_cfg_s_v01_ei[] = { 1298 1298 { 1299 1299 .data_type = QMI_UNSIGNED_4_BYTE, 1300 1300 .elem_len = 1, ··· 1347 1347 }, 1348 1348 }; 1349 1349 1350 - static struct qmi_elem_info qmi_wlanfw_ce_svc_pipe_cfg_s_v01_ei[] = { 1350 + static const struct qmi_elem_info qmi_wlanfw_ce_svc_pipe_cfg_s_v01_ei[] = { 1351 1351 { 1352 1352 .data_type = QMI_UNSIGNED_4_BYTE, 1353 1353 .elem_len = 1, ··· 1382 1382 }, 1383 1383 }; 1384 1384 1385 - static struct qmi_elem_info qmi_wlanfw_shadow_reg_cfg_s_v01_ei[] = { 1385 + static const struct qmi_elem_info qmi_wlanfw_shadow_reg_cfg_s_v01_ei[] = { 1386 1386 { 1387 1387 .data_type = QMI_UNSIGNED_2_BYTE, 1388 1388 .elem_len = 1, ··· 1406 1406 }, 1407 1407 }; 1408 1408 1409 - static struct qmi_elem_info qmi_wlanfw_shadow_reg_v2_cfg_s_v01_ei[] = { 1409 + static const struct qmi_elem_info qmi_wlanfw_shadow_reg_v2_cfg_s_v01_ei[] = { 1410 1410 { 1411 1411 .data_type = QMI_UNSIGNED_4_BYTE, 1412 1412 .elem_len = 1, ··· 1423 1423 }, 1424 1424 }; 1425 1425 1426 - static struct qmi_elem_info qmi_wlanfw_wlan_mode_req_msg_v01_ei[] = { 1426 + static const struct qmi_elem_info qmi_wlanfw_wlan_mode_req_msg_v01_ei[] = { 1427 1427 { 1428 1428 .data_type = QMI_UNSIGNED_4_BYTE, 1429 1429 .elem_len = 1, ··· 1458 1458 }, 1459 1459 }; 1460 1460 1461 - static struct qmi_elem_info qmi_wlanfw_wlan_mode_resp_msg_v01_ei[] = { 1461 + static const struct qmi_elem_info qmi_wlanfw_wlan_mode_resp_msg_v01_ei[] = { 1462 1462 { 1463 1463 .data_type = QMI_STRUCT, 1464 1464 .elem_len = 1, ··· 1476 1476 }, 1477 1477 }; 1478 1478 1479 - static struct qmi_elem_info qmi_wlanfw_wlan_cfg_req_msg_v01_ei[] = { 1479 + static const struct qmi_elem_info qmi_wlanfw_wlan_cfg_req_msg_v01_ei[] = { 1480 1480 { 1481 1481 .data_type = QMI_OPT_FLAG, 1482 1482 .elem_len = 1, ··· 1615 1615 }, 1616 1616 }; 1617 1617 1618 - static struct qmi_elem_info qmi_wlanfw_wlan_cfg_resp_msg_v01_ei[] = { 1618 + static const struct qmi_elem_info qmi_wlanfw_wlan_cfg_resp_msg_v01_ei[] = { 1619 1619 { 1620 1620 .data_type = QMI_STRUCT, 1621 1621 .elem_len = 1, ··· 1632 1632 }, 1633 1633 }; 1634 1634 1635 - static struct qmi_elem_info qmi_wlanfw_mem_ready_ind_msg_v01_ei[] = { 1635 + static const struct qmi_elem_info qmi_wlanfw_mem_ready_ind_msg_v01_ei[] = { 1636 1636 { 1637 1637 .data_type = QMI_EOTI, 1638 1638 .array_type = NO_ARRAY, 1639 1639 }, 1640 1640 }; 1641 1641 1642 - static struct qmi_elem_info qmi_wlanfw_fw_ready_ind_msg_v01_ei[] = { 1642 + static const struct qmi_elem_info qmi_wlanfw_fw_ready_ind_msg_v01_ei[] = { 1643 1643 { 1644 1644 .data_type = QMI_EOTI, 1645 1645 .array_type = NO_ARRAY, 1646 1646 }, 1647 1647 }; 1648 1648 1649 - static struct qmi_elem_info qmi_wlanfw_cold_boot_cal_done_ind_msg_v01_ei[] = { 1649 + static const struct qmi_elem_info qmi_wlanfw_cold_boot_cal_done_ind_msg_v01_ei[] = { 1650 1650 { 1651 1651 .data_type = QMI_EOTI, 1652 1652 .array_type = NO_ARRAY, 1653 1653 }, 1654 1654 }; 1655 1655 1656 - static struct qmi_elem_info qmi_wlanfw_wlan_ini_req_msg_v01_ei[] = { 1656 + static const struct qmi_elem_info qmi_wlanfw_wlan_ini_req_msg_v01_ei[] = { 1657 1657 { 1658 1658 .data_type = QMI_OPT_FLAG, 1659 1659 .elem_len = 1, ··· 1679 1679 }, 1680 1680 }; 1681 1681 1682 - static struct qmi_elem_info qmi_wlanfw_wlan_ini_resp_msg_v01_ei[] = { 1682 + static const struct qmi_elem_info qmi_wlanfw_wlan_ini_resp_msg_v01_ei[] = { 1683 1683 { 1684 1684 .data_type = QMI_STRUCT, 1685 1685 .elem_len = 1, ··· 1697 1697 }, 1698 1698 }; 1699 1699 1700 - static struct qmi_elem_info qmi_wlfw_fw_init_done_ind_msg_v01_ei[] = { 1700 + static const struct qmi_elem_info qmi_wlfw_fw_init_done_ind_msg_v01_ei[] = { 1701 1701 { 1702 1702 .data_type = QMI_EOTI, 1703 1703 .array_type = NO_ARRAY, ··· 3090 3090 sizeof(struct qmi_wlfw_fw_init_done_ind_msg_v01), 3091 3091 .fn = ath11k_qmi_msg_fw_init_done_cb, 3092 3092 }, 3093 + 3094 + /* end of list */ 3095 + {}, 3093 3096 }; 3094 3097 3095 3098 static int ath11k_qmi_ops_new_server(struct qmi_handle *qmi_hdl,
+1 -2
drivers/net/wireless/ath/ath9k/ar9003_mci.c
··· 585 585 { 586 586 struct ath_common *common = ath9k_hw_common(ah); 587 587 struct ath9k_hw_mci *mci = &ah->btcoex_hw.mci; 588 - u32 *p_gpm = NULL, mismatch = 0, more_data; 588 + u32 *p_gpm = NULL, more_data; 589 589 u32 offset; 590 590 u8 recv_type = 0, recv_opcode = 0; 591 591 bool b_is_bt_cal_done = (gpm_type == MCI_GPM_BT_CAL_DONE); ··· 656 656 } else { 657 657 ath_dbg(common, MCI, "MCI GPM subtype not match 0x%x\n", 658 658 *(p_gpm + 1)); 659 - mismatch++; 660 659 ar9003_mci_process_gpm_extra(ah, recv_type, 661 660 recv_opcode, p_gpm); 662 661 }
-2
drivers/net/wireless/ath/ath9k/xmit.c
··· 1678 1678 struct ieee80211_tx_info *info; 1679 1679 struct list_head bf_q; 1680 1680 struct ath_buf *bf_tail = NULL, *bf = NULL; 1681 - int sent = 0; 1682 1681 int i, ret; 1683 1682 1684 1683 INIT_LIST_HEAD(&bf_q); ··· 1706 1707 1707 1708 bf_tail = bf; 1708 1709 nframes--; 1709 - sent++; 1710 1710 TX_STAT_INC(sc, txq->axq_qnum, a_queued_hw); 1711 1711 1712 1712 if (an->sta && skb_queue_empty(&tid->retry_q))
+2 -2
drivers/net/wireless/ath/carl9170/fwcmd.h
··· 118 118 } __packed; 119 119 120 120 struct carl9170_write_reg { 121 - struct { 121 + DECLARE_FLEX_ARRAY(struct { 122 122 __le32 addr; 123 123 __le32 val; 124 - } regs[0] __packed; 124 + } __packed, regs); 125 125 } __packed; 126 126 127 127 struct carl9170_write_reg_byte {