|
@@ -128,6 +128,10 @@ enum {
|
|
|
/* global key */
|
|
/* global key */
|
|
|
WEP_KEY = 0x20,
|
|
WEP_KEY = 0x20,
|
|
|
|
|
|
|
|
|
|
+ /* TDLS */
|
|
|
|
|
+ TDLS_CHANNEL_SWITCH_CMD = 0x27,
|
|
|
|
|
+ TDLS_CHANNEL_SWITCH_NOTIFICATION = 0xaa,
|
|
|
|
|
+
|
|
|
/* MAC and Binding commands */
|
|
/* MAC and Binding commands */
|
|
|
MAC_CONTEXT_CMD = 0x28,
|
|
MAC_CONTEXT_CMD = 0x28,
|
|
|
TIME_EVENT_CMD = 0x29, /* both CMD and response */
|
|
TIME_EVENT_CMD = 0x29, /* both CMD and response */
|
|
@@ -1717,4 +1721,83 @@ struct iwl_scd_txq_cfg_cmd {
|
|
|
u8 flags;
|
|
u8 flags;
|
|
|
} __packed;
|
|
} __packed;
|
|
|
|
|
|
|
|
|
|
+/***********************************
|
|
|
|
|
+ * TDLS API
|
|
|
|
|
+ ***********************************/
|
|
|
|
|
+
|
|
|
|
|
+/* Type of TDLS request */
|
|
|
|
|
+enum iwl_tdls_channel_switch_type {
|
|
|
|
|
+ TDLS_SEND_CHAN_SW_REQ = 0,
|
|
|
|
|
+ TDLS_SEND_CHAN_SW_RESP_AND_MOVE_CH,
|
|
|
|
|
+ TDLS_MOVE_CH,
|
|
|
|
|
+}; /* TDLS_STA_CHANNEL_SWITCH_CMD_TYPE_API_E_VER_1 */
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * Switch timing sub-element in a TDLS channel-switch command
|
|
|
|
|
+ * @frame_timestamp: GP2 timestamp of channel-switch request/response packet
|
|
|
|
|
+ * received from peer
|
|
|
|
|
+ * @max_offchan_duration: What amount of microseconds out of a DTIM is given
|
|
|
|
|
+ * to the TDLS off-channel communication. For instance if the DTIM is
|
|
|
|
|
+ * 200TU and the TDLS peer is to be given 25% of the time, the value
|
|
|
|
|
+ * given will be 50TU, or 50 * 1024 if translated into microseconds.
|
|
|
|
|
+ * @switch_time: switch time the peer sent in its channel switch timing IE
|
|
|
|
|
+ * @switch_timout: switch timeout the peer sent in its channel switch timing IE
|
|
|
|
|
+ */
|
|
|
|
|
+struct iwl_tdls_channel_switch_timing {
|
|
|
|
|
+ __le32 frame_timestamp; /* GP2 time of peer packet Rx */
|
|
|
|
|
+ __le32 max_offchan_duration; /* given in micro-seconds */
|
|
|
|
|
+ __le32 switch_time; /* given in micro-seconds */
|
|
|
|
|
+ __le32 switch_timeout; /* given in micro-seconds */
|
|
|
|
|
+} __packed; /* TDLS_STA_CHANNEL_SWITCH_TIMING_DATA_API_S_VER_1 */
|
|
|
|
|
+
|
|
|
|
|
+#define IWL_TDLS_CH_SW_FRAME_MAX_SIZE 200
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * TDLS channel switch frame template
|
|
|
|
|
+ *
|
|
|
|
|
+ * A template representing a TDLS channel-switch request or response frame
|
|
|
|
|
+ *
|
|
|
|
|
+ * @switch_time_offset: offset to the channel switch timing IE in the template
|
|
|
|
|
+ * @tx_cmd: Tx parameters for the frame
|
|
|
|
|
+ * @data: frame data
|
|
|
|
|
+ */
|
|
|
|
|
+struct iwl_tdls_channel_switch_frame {
|
|
|
|
|
+ __le32 switch_time_offset;
|
|
|
|
|
+ struct iwl_tx_cmd tx_cmd;
|
|
|
|
|
+ u8 data[IWL_TDLS_CH_SW_FRAME_MAX_SIZE];
|
|
|
|
|
+} __packed; /* TDLS_STA_CHANNEL_SWITCH_FRAME_API_S_VER_1 */
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * TDLS channel switch command
|
|
|
|
|
+ *
|
|
|
|
|
+ * The command is sent to initiate a channel switch and also in response to
|
|
|
|
|
+ * incoming TDLS channel-switch request/response packets from remote peers.
|
|
|
|
|
+ *
|
|
|
|
|
+ * @switch_type: see &enum iwl_tdls_channel_switch_type
|
|
|
|
|
+ * @peer_sta_id: station id of TDLS peer
|
|
|
|
|
+ * @ci: channel we switch to
|
|
|
|
|
+ * @timing: timing related data for command
|
|
|
|
|
+ * @frame: channel-switch request/response template, depending to switch_type
|
|
|
|
|
+ */
|
|
|
|
|
+struct iwl_tdls_channel_switch_cmd {
|
|
|
|
|
+ u8 switch_type;
|
|
|
|
|
+ __le32 peer_sta_id;
|
|
|
|
|
+ struct iwl_fw_channel_info ci;
|
|
|
|
|
+ struct iwl_tdls_channel_switch_timing timing;
|
|
|
|
|
+ struct iwl_tdls_channel_switch_frame frame;
|
|
|
|
|
+} __packed; /* TDLS_STA_CHANNEL_SWITCH_CMD_API_S_VER_1 */
|
|
|
|
|
+
|
|
|
|
|
+/**
|
|
|
|
|
+ * TDLS channel switch start notification
|
|
|
|
|
+ *
|
|
|
|
|
+ * @status: non-zero on success
|
|
|
|
|
+ * @offchannel_duration: duration given in microseconds
|
|
|
|
|
+ * @sta_id: peer currently performing the channel-switch with
|
|
|
|
|
+ */
|
|
|
|
|
+struct iwl_tdls_channel_switch_notif {
|
|
|
|
|
+ __le32 status;
|
|
|
|
|
+ __le32 offchannel_duration;
|
|
|
|
|
+ __le32 sta_id;
|
|
|
|
|
+} __packed; /* TDLS_STA_CHANNEL_SWITCH_NTFY_API_S_VER_1 */
|
|
|
|
|
+
|
|
|
#endif /* __fw_api_h__ */
|
|
#endif /* __fw_api_h__ */
|