| .. | .. |
|---|
| 8 | 8 | * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
|---|
| 9 | 9 | * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH |
|---|
| 10 | 10 | * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
|---|
| 11 | + * Copyright(c) 2018 - 2019 Intel Corporation |
|---|
| 11 | 12 | * |
|---|
| 12 | 13 | * This program is free software; you can redistribute it and/or modify |
|---|
| 13 | 14 | * it under the terms of version 2 of the GNU General Public License as |
|---|
| .. | .. |
|---|
| 30 | 31 | * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved. |
|---|
| 31 | 32 | * Copyright(c) 2013 - 2015 Intel Mobile Communications GmbH |
|---|
| 32 | 33 | * Copyright(c) 2016 - 2017 Intel Deutschland GmbH |
|---|
| 34 | + * Copyright(c) 2018 - 2019 Intel Corporation |
|---|
| 33 | 35 | * All rights reserved. |
|---|
| 34 | 36 | * |
|---|
| 35 | 37 | * Redistribution and use in source and binary forms, with or without |
|---|
| .. | .. |
|---|
| 72 | 74 | */ |
|---|
| 73 | 75 | LOW_LATENCY_CMD = 0x3, |
|---|
| 74 | 76 | /** |
|---|
| 77 | + * @CHANNEL_SWITCH_TIME_EVENT_CMD: &struct iwl_chan_switch_te_cmd |
|---|
| 78 | + */ |
|---|
| 79 | + CHANNEL_SWITCH_TIME_EVENT_CMD = 0x4, |
|---|
| 80 | + /** |
|---|
| 81 | + * @MISSED_VAP_NOTIF: &struct iwl_missed_vap_notif |
|---|
| 82 | + */ |
|---|
| 83 | + MISSED_VAP_NOTIF = 0xFA, |
|---|
| 84 | + /** |
|---|
| 85 | + * @SESSION_PROTECTION_CMD: &struct iwl_mvm_session_prot_cmd |
|---|
| 86 | + */ |
|---|
| 87 | + SESSION_PROTECTION_CMD = 0x5, |
|---|
| 88 | + |
|---|
| 89 | + /** |
|---|
| 90 | + * @SESSION_PROTECTION_NOTIF: &struct iwl_mvm_session_prot_notif |
|---|
| 91 | + */ |
|---|
| 92 | + SESSION_PROTECTION_NOTIF = 0xFB, |
|---|
| 93 | + |
|---|
| 94 | + /** |
|---|
| 95 | + * @PROBE_RESPONSE_DATA_NOTIF: &struct iwl_probe_resp_data_notif |
|---|
| 96 | + */ |
|---|
| 97 | + PROBE_RESPONSE_DATA_NOTIF = 0xFC, |
|---|
| 98 | + |
|---|
| 99 | + /** |
|---|
| 75 | 100 | * @CHANNEL_SWITCH_NOA_NOTIF: &struct iwl_channel_switch_noa_notif |
|---|
| 76 | 101 | */ |
|---|
| 77 | 102 | CHANNEL_SWITCH_NOA_NOTIF = 0xFF, |
|---|
| 78 | 103 | }; |
|---|
| 104 | + |
|---|
| 105 | +#define IWL_P2P_NOA_DESC_COUNT (2) |
|---|
| 106 | + |
|---|
| 107 | +/** |
|---|
| 108 | + * struct iwl_p2p_noa_attr - NOA attr contained in probe resp FW notification |
|---|
| 109 | + * |
|---|
| 110 | + * @id: attribute id |
|---|
| 111 | + * @len_low: length low half |
|---|
| 112 | + * @len_high: length high half |
|---|
| 113 | + * @idx: instance of NoA timing |
|---|
| 114 | + * @ctwin: GO's ct window and pwer save capability |
|---|
| 115 | + * @desc: NoA descriptor |
|---|
| 116 | + * @reserved: reserved for alignment purposes |
|---|
| 117 | + */ |
|---|
| 118 | +struct iwl_p2p_noa_attr { |
|---|
| 119 | + u8 id; |
|---|
| 120 | + u8 len_low; |
|---|
| 121 | + u8 len_high; |
|---|
| 122 | + u8 idx; |
|---|
| 123 | + u8 ctwin; |
|---|
| 124 | + struct ieee80211_p2p_noa_desc desc[IWL_P2P_NOA_DESC_COUNT]; |
|---|
| 125 | + u8 reserved; |
|---|
| 126 | +} __packed; |
|---|
| 127 | + |
|---|
| 128 | +#define IWL_PROBE_RESP_DATA_NO_CSA (0xff) |
|---|
| 129 | + |
|---|
| 130 | +/** |
|---|
| 131 | + * struct iwl_probe_resp_data_notif - notification with NOA and CSA counter |
|---|
| 132 | + * |
|---|
| 133 | + * @mac_id: the mac which should send the probe response |
|---|
| 134 | + * @noa_active: notifies if the noa attribute should be handled |
|---|
| 135 | + * @noa_attr: P2P NOA attribute |
|---|
| 136 | + * @csa_counter: current csa counter |
|---|
| 137 | + * @reserved: reserved for alignment purposes |
|---|
| 138 | + */ |
|---|
| 139 | +struct iwl_probe_resp_data_notif { |
|---|
| 140 | + __le32 mac_id; |
|---|
| 141 | + __le32 noa_active; |
|---|
| 142 | + struct iwl_p2p_noa_attr noa_attr; |
|---|
| 143 | + u8 csa_counter; |
|---|
| 144 | + u8 reserved[3]; |
|---|
| 145 | +} __packed; /* PROBE_RESPONSE_DATA_NTFY_API_S_VER_1 */ |
|---|
| 146 | + |
|---|
| 147 | +/** |
|---|
| 148 | + * struct iwl_missed_vap_notif - notification of missing vap detection |
|---|
| 149 | + * |
|---|
| 150 | + * @mac_id: the mac for which the ucode sends the notification for |
|---|
| 151 | + * @num_beacon_intervals_elapsed: beacons elpased with no vap profile inside |
|---|
| 152 | + * @profile_periodicity: beacons period to have our profile inside |
|---|
| 153 | + * @reserved: reserved for alignment purposes |
|---|
| 154 | + */ |
|---|
| 155 | +struct iwl_missed_vap_notif { |
|---|
| 156 | + __le32 mac_id; |
|---|
| 157 | + u8 num_beacon_intervals_elapsed; |
|---|
| 158 | + u8 profile_periodicity; |
|---|
| 159 | + u8 reserved[2]; |
|---|
| 160 | +} __packed; /* MISSED_VAP_NTFY_API_S_VER_1 */ |
|---|
| 79 | 161 | |
|---|
| 80 | 162 | /** |
|---|
| 81 | 163 | * struct iwl_channel_switch_noa_notif - Channel switch NOA notification |
|---|
| .. | .. |
|---|
| 87 | 169 | } __packed; /* CHANNEL_SWITCH_START_NTFY_API_S_VER_1 */ |
|---|
| 88 | 170 | |
|---|
| 89 | 171 | /** |
|---|
| 172 | + * struct iwl_chan_switch_te_cmd - Channel Switch Time Event command |
|---|
| 173 | + * |
|---|
| 174 | + * @mac_id: MAC ID for channel switch |
|---|
| 175 | + * @action: action to perform, one of FW_CTXT_ACTION_* |
|---|
| 176 | + * @tsf: beacon tsf |
|---|
| 177 | + * @cs_count: channel switch count from CSA/eCSA IE |
|---|
| 178 | + * @cs_delayed_bcn_count: if set to N (!= 0) GO/AP can delay N beacon intervals |
|---|
| 179 | + * at the new channel after the channel switch, otherwise (N == 0) expect |
|---|
| 180 | + * beacon right after the channel switch. |
|---|
| 181 | + * @cs_mode: 1 - quiet, 0 - otherwise |
|---|
| 182 | + * @reserved: reserved for alignment purposes |
|---|
| 183 | + */ |
|---|
| 184 | +struct iwl_chan_switch_te_cmd { |
|---|
| 185 | + __le32 mac_id; |
|---|
| 186 | + __le32 action; |
|---|
| 187 | + __le32 tsf; |
|---|
| 188 | + u8 cs_count; |
|---|
| 189 | + u8 cs_delayed_bcn_count; |
|---|
| 190 | + u8 cs_mode; |
|---|
| 191 | + u8 reserved; |
|---|
| 192 | +} __packed; /* MAC_CHANNEL_SWITCH_TIME_EVENT_S_VER_2 */ |
|---|
| 193 | + |
|---|
| 194 | +/** |
|---|
| 90 | 195 | * struct iwl_mac_low_latency_cmd - set/clear mac to 'low-latency mode' |
|---|
| 91 | 196 | * |
|---|
| 92 | 197 | * @mac_id: MAC ID to whom to apply the low-latency configurations |
|---|