| .. | .. |
|---|
| 5 | 5 | * |
|---|
| 6 | 6 | * GPL LICENSE SUMMARY |
|---|
| 7 | 7 | * |
|---|
| 8 | | - * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
|---|
| 9 | 8 | * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
|---|
| 10 | | - * Copyright(c) 2018 Intel Corporation |
|---|
| 9 | + * Copyright(c) 2012 - 2014, 2018 - 2020 Intel Corporation |
|---|
| 11 | 10 | * |
|---|
| 12 | 11 | * This program is free software; you can redistribute it and/or modify |
|---|
| 13 | 12 | * it under the terms of version 2 of the GNU General Public License as |
|---|
| .. | .. |
|---|
| 27 | 26 | * |
|---|
| 28 | 27 | * BSD LICENSE |
|---|
| 29 | 28 | * |
|---|
| 30 | | - * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
|---|
| 31 | 29 | * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
|---|
| 32 | | - * Copyright(c) 2018 Intel Corporation |
|---|
| 30 | + * Copyright(c) 2012 - 2014, 2018 - 2020 Intel Corporation |
|---|
| 33 | 31 | * All rights reserved. |
|---|
| 34 | 32 | * |
|---|
| 35 | 33 | * Redistribution and use in source and binary forms, with or without |
|---|
| .. | .. |
|---|
| 61 | 59 | |
|---|
| 62 | 60 | #ifndef __iwl_fw_api_tx_h__ |
|---|
| 63 | 61 | #define __iwl_fw_api_tx_h__ |
|---|
| 62 | +#include <linux/ieee80211.h> |
|---|
| 64 | 63 | |
|---|
| 65 | 64 | /** |
|---|
| 66 | 65 | * enum iwl_tx_flags - bitmasks for tx_flags in TX command |
|---|
| .. | .. |
|---|
| 186 | 185 | /* |
|---|
| 187 | 186 | * TID for non QoS frames - to be written in tid_tspec |
|---|
| 188 | 187 | */ |
|---|
| 189 | | -#define IWL_TID_NON_QOS IWL_MAX_TID_COUNT |
|---|
| 188 | +#define IWL_TID_NON_QOS 0 |
|---|
| 190 | 189 | |
|---|
| 191 | 190 | /* |
|---|
| 192 | 191 | * Limits on the retransmissions - to be written in {data,rts}_retry_limit |
|---|
| .. | .. |
|---|
| 293 | 292 | __le16 pm_frame_timeout; |
|---|
| 294 | 293 | __le16 reserved4; |
|---|
| 295 | 294 | u8 payload[0]; |
|---|
| 296 | | - struct ieee80211_hdr hdr[0]; |
|---|
| 295 | + struct ieee80211_hdr hdr[]; |
|---|
| 297 | 296 | } __packed; /* TX_CMD_API_S_VER_6 */ |
|---|
| 298 | 297 | |
|---|
| 299 | 298 | struct iwl_dram_sec_info { |
|---|
| .. | .. |
|---|
| 319 | 318 | __le32 flags; |
|---|
| 320 | 319 | struct iwl_dram_sec_info dram_info; |
|---|
| 321 | 320 | __le32 rate_n_flags; |
|---|
| 322 | | - struct ieee80211_hdr hdr[0]; |
|---|
| 321 | + struct ieee80211_hdr hdr[]; |
|---|
| 323 | 322 | } __packed; /* TX_CMD_API_S_VER_7 */ |
|---|
| 324 | 323 | |
|---|
| 325 | 324 | /** |
|---|
| 326 | | - * struct iwl_tx_cmd_gen3 - TX command struct to FW for 22560 devices |
|---|
| 325 | + * struct iwl_tx_cmd_gen3 - TX command struct to FW for AX210+ devices |
|---|
| 327 | 326 | * ( TX_CMD = 0x1c ) |
|---|
| 328 | 327 | * @len: in bytes of the payload, see below for details |
|---|
| 329 | 328 | * @flags: combination of &enum iwl_tx_cmd_flags |
|---|
| .. | .. |
|---|
| 342 | 341 | struct iwl_dram_sec_info dram_info; |
|---|
| 343 | 342 | __le32 rate_n_flags; |
|---|
| 344 | 343 | __le64 ttl; |
|---|
| 345 | | - struct ieee80211_hdr hdr[0]; |
|---|
| 344 | + struct ieee80211_hdr hdr[]; |
|---|
| 346 | 345 | } __packed; /* TX_CMD_API_S_VER_8 */ |
|---|
| 347 | 346 | |
|---|
| 348 | 347 | /* |
|---|
| .. | .. |
|---|
| 766 | 765 | __le32 tx_rate; |
|---|
| 767 | 766 | __le16 tfd_cnt; |
|---|
| 768 | 767 | __le16 ra_tid_cnt; |
|---|
| 769 | | - struct iwl_mvm_compressed_ba_tfd tfd[0]; |
|---|
| 770 | 768 | struct iwl_mvm_compressed_ba_ratid ra_tid[0]; |
|---|
| 769 | + struct iwl_mvm_compressed_ba_tfd tfd[]; |
|---|
| 771 | 770 | } __packed; /* COMPRESSED_BA_RES_API_S_VER_4 */ |
|---|
| 772 | 771 | |
|---|
| 773 | 772 | /** |
|---|
| .. | .. |
|---|
| 784 | 783 | __le32 template_id; |
|---|
| 785 | 784 | __le32 tim_idx; |
|---|
| 786 | 785 | __le32 tim_size; |
|---|
| 787 | | - struct ieee80211_hdr frame[0]; |
|---|
| 786 | + struct ieee80211_hdr frame[]; |
|---|
| 788 | 787 | } __packed; /* BEACON_TEMPLATE_CMD_API_S_VER_6 */ |
|---|
| 789 | 788 | |
|---|
| 790 | 789 | /** |
|---|
| .. | .. |
|---|
| 805 | 804 | __le32 tim_size; |
|---|
| 806 | 805 | __le32 ecsa_offset; |
|---|
| 807 | 806 | __le32 csa_offset; |
|---|
| 808 | | - struct ieee80211_hdr frame[0]; |
|---|
| 807 | + struct ieee80211_hdr frame[]; |
|---|
| 809 | 808 | } __packed; /* BEACON_TEMPLATE_CMD_API_S_VER_7 */ |
|---|
| 810 | 809 | |
|---|
| 811 | 810 | enum iwl_mac_beacon_flags { |
|---|
| .. | .. |
|---|
| 813 | 812 | IWL_MAC_BEACON_ANT_A = BIT(9), |
|---|
| 814 | 813 | IWL_MAC_BEACON_ANT_B = BIT(10), |
|---|
| 815 | 814 | IWL_MAC_BEACON_ANT_C = BIT(11), |
|---|
| 815 | + IWL_MAC_BEACON_FILS = BIT(12), |
|---|
| 816 | 816 | }; |
|---|
| 817 | 817 | |
|---|
| 818 | 818 | /** |
|---|
| .. | .. |
|---|
| 820 | 820 | * @byte_cnt: byte count of the beacon frame. |
|---|
| 821 | 821 | * @flags: least significant byte for rate code. The most significant byte |
|---|
| 822 | 822 | * is &enum iwl_mac_beacon_flags. |
|---|
| 823 | + * @short_ssid: Short SSID |
|---|
| 823 | 824 | * @reserved: reserved |
|---|
| 824 | 825 | * @template_id: currently equal to the mac context id of the coresponding mac. |
|---|
| 825 | 826 | * @tim_idx: the offset of the tim IE in the beacon |
|---|
| .. | .. |
|---|
| 831 | 832 | struct iwl_mac_beacon_cmd { |
|---|
| 832 | 833 | __le16 byte_cnt; |
|---|
| 833 | 834 | __le16 flags; |
|---|
| 834 | | - __le64 reserved; |
|---|
| 835 | + __le32 short_ssid; |
|---|
| 836 | + __le32 reserved; |
|---|
| 835 | 837 | __le32 template_id; |
|---|
| 836 | 838 | __le32 tim_idx; |
|---|
| 837 | 839 | __le32 tim_size; |
|---|
| 838 | 840 | __le32 ecsa_offset; |
|---|
| 839 | 841 | __le32 csa_offset; |
|---|
| 840 | | - struct ieee80211_hdr frame[0]; |
|---|
| 841 | | -} __packed; /* BEACON_TEMPLATE_CMD_API_S_VER_9 */ |
|---|
| 842 | + struct ieee80211_hdr frame[]; |
|---|
| 843 | +} __packed; /* BEACON_TEMPLATE_CMD_API_S_VER_10 */ |
|---|
| 842 | 844 | |
|---|
| 843 | 845 | struct iwl_beacon_notif { |
|---|
| 844 | 846 | struct iwl_mvm_tx_resp beacon_notify_hdr; |
|---|
| .. | .. |
|---|
| 847 | 849 | } __packed; |
|---|
| 848 | 850 | |
|---|
| 849 | 851 | /** |
|---|
| 850 | | - * struct iwl_extended_beacon_notif - notifies about beacon transmission |
|---|
| 852 | + * struct iwl_extended_beacon_notif_v5 - notifies about beacon transmission |
|---|
| 851 | 853 | * @beacon_notify_hdr: tx response command associated with the beacon |
|---|
| 852 | 854 | * @tsf: last beacon tsf |
|---|
| 853 | 855 | * @ibss_mgr_status: whether IBSS is manager |
|---|
| 854 | 856 | * @gp2: last beacon time in gp2 |
|---|
| 855 | 857 | */ |
|---|
| 856 | | -struct iwl_extended_beacon_notif { |
|---|
| 858 | +struct iwl_extended_beacon_notif_v5 { |
|---|
| 857 | 859 | struct iwl_mvm_tx_resp beacon_notify_hdr; |
|---|
| 858 | 860 | __le64 tsf; |
|---|
| 859 | 861 | __le32 ibss_mgr_status; |
|---|
| .. | .. |
|---|
| 861 | 863 | } __packed; /* BEACON_NTFY_API_S_VER_5 */ |
|---|
| 862 | 864 | |
|---|
| 863 | 865 | /** |
|---|
| 866 | + * struct iwl_extended_beacon_notif - notifies about beacon transmission |
|---|
| 867 | + * @status: the status of the Tx response of the beacon |
|---|
| 868 | + * @tsf: last beacon tsf |
|---|
| 869 | + * @ibss_mgr_status: whether IBSS is manager |
|---|
| 870 | + * @gp2: last beacon time in gp2 |
|---|
| 871 | + */ |
|---|
| 872 | +struct iwl_extended_beacon_notif { |
|---|
| 873 | + __le32 status; |
|---|
| 874 | + __le64 tsf; |
|---|
| 875 | + __le32 ibss_mgr_status; |
|---|
| 876 | + __le32 gp2; |
|---|
| 877 | +} __packed; /* BEACON_NTFY_API_S_VER_6_ */ |
|---|
| 878 | + |
|---|
| 879 | +/** |
|---|
| 864 | 880 | * enum iwl_dump_control - dump (flush) control flags |
|---|
| 865 | 881 | * @DUMP_TX_FIFO_FLUSH: Dump MSDUs until the the FIFO is empty |
|---|
| 866 | 882 | * and the TFD queues are empty. |
|---|