diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/mvm/fw-api-d3.h')
| -rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/fw-api-d3.h | 74 | 
1 files changed, 67 insertions, 7 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/fw-api-d3.h b/drivers/net/wireless/iwlwifi/mvm/fw-api-d3.h index df72fcdf817..13696fe419b 100644 --- a/drivers/net/wireless/iwlwifi/mvm/fw-api-d3.h +++ b/drivers/net/wireless/iwlwifi/mvm/fw-api-d3.h @@ -5,7 +5,7 @@   *   * GPL LICENSE SUMMARY   * - * Copyright(c) 2012 - 2013 Intel Corporation. All rights reserved. + * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.   *   * This program is free software; you can redistribute it and/or modify   * it under the terms of version 2 of the GNU General Public License as @@ -30,7 +30,7 @@   *   * BSD LICENSE   * - * Copyright(c) 2012 - 2013 Intel Corporation. All rights reserved. + * Copyright(c) 2012 - 2014 Intel Corporation. All rights reserved.   * All rights reserved.   *   * Redistribution and use in source and binary forms, with or without @@ -100,7 +100,12 @@ enum iwl_proto_offloads {  #define IWL_PROTO_OFFLOAD_NUM_IPV6_ADDRS_V1	2  #define IWL_PROTO_OFFLOAD_NUM_IPV6_ADDRS_V2	6 -#define IWL_PROTO_OFFLOAD_NUM_IPV6_ADDRS_MAX	6 +#define IWL_PROTO_OFFLOAD_NUM_IPV6_ADDRS_V3L	12 +#define IWL_PROTO_OFFLOAD_NUM_IPV6_ADDRS_V3S	4 +#define IWL_PROTO_OFFLOAD_NUM_IPV6_ADDRS_MAX	12 + +#define IWL_PROTO_OFFLOAD_NUM_NS_CONFIG_V3L	4 +#define IWL_PROTO_OFFLOAD_NUM_NS_CONFIG_V3S	2  /**   * struct iwl_proto_offload_cmd_common - ARP/NS offload common part @@ -155,6 +160,43 @@ struct iwl_proto_offload_cmd_v2 {  	u8 reserved2[3];  } __packed; /* PROT_OFFLOAD_CONFIG_CMD_DB_S_VER_2 */ +struct iwl_ns_config { +	struct in6_addr source_ipv6_addr; +	struct in6_addr dest_ipv6_addr; +	u8 target_mac_addr[ETH_ALEN]; +	__le16 reserved; +} __packed; /* NS_OFFLOAD_CONFIG */ + +struct iwl_targ_addr { +	struct in6_addr addr; +	__le32 config_num; +} __packed; /* TARGET_IPV6_ADDRESS */ + +/** + * struct iwl_proto_offload_cmd_v3_small - ARP/NS offload configuration + * @common: common/IPv4 configuration + * @target_ipv6_addr: target IPv6 addresses + * @ns_config: NS offload configurations + */ +struct iwl_proto_offload_cmd_v3_small { +	struct iwl_proto_offload_cmd_common common; +	__le32 num_valid_ipv6_addrs; +	struct iwl_targ_addr targ_addrs[IWL_PROTO_OFFLOAD_NUM_IPV6_ADDRS_V3S]; +	struct iwl_ns_config ns_config[IWL_PROTO_OFFLOAD_NUM_NS_CONFIG_V3S]; +} __packed; /* PROT_OFFLOAD_CONFIG_CMD_DB_S_VER_3 */ + +/** + * struct iwl_proto_offload_cmd_v3_large - ARP/NS offload configuration + * @common: common/IPv4 configuration + * @target_ipv6_addr: target IPv6 addresses + * @ns_config: NS offload configurations + */ +struct iwl_proto_offload_cmd_v3_large { +	struct iwl_proto_offload_cmd_common common; +	__le32 num_valid_ipv6_addrs; +	struct iwl_targ_addr targ_addrs[IWL_PROTO_OFFLOAD_NUM_IPV6_ADDRS_V3L]; +	struct iwl_ns_config ns_config[IWL_PROTO_OFFLOAD_NUM_NS_CONFIG_V3L]; +} __packed; /* PROT_OFFLOAD_CONFIG_CMD_DB_S_VER_3 */  /*   * WOWLAN_PATTERNS @@ -189,11 +231,15 @@ enum iwl_wowlan_wakeup_filters {  	IWL_WOWLAN_WAKEUP_RF_KILL_DEASSERT		= BIT(8),  	IWL_WOWLAN_WAKEUP_REMOTE_LINK_LOSS		= BIT(9),  	IWL_WOWLAN_WAKEUP_REMOTE_SIGNATURE_TABLE	= BIT(10), -	/* BIT(11) reserved */ +	IWL_WOWLAN_WAKEUP_REMOTE_TCP_EXTERNAL		= BIT(11),  	IWL_WOWLAN_WAKEUP_REMOTE_WAKEUP_PACKET		= BIT(12), +	IWL_WOWLAN_WAKEUP_IOAC_MAGIC_PACKET		= BIT(13), +	IWL_WOWLAN_WAKEUP_HOST_TIMER			= BIT(14), +	IWL_WOWLAN_WAKEUP_RX_FRAME			= BIT(15), +	IWL_WOWLAN_WAKEUP_BCN_FILTERING			= BIT(16),  }; /* WOWLAN_WAKEUP_FILTER_API_E_VER_4 */ -struct iwl_wowlan_config_cmd { +struct iwl_wowlan_config_cmd_v2 {  	__le32 wakeup_filter;  	__le16 non_qos_seq;  	__le16 qos_seq[8]; @@ -201,6 +247,12 @@ struct iwl_wowlan_config_cmd {  	u8 is_11n_connection;  } __packed; /* WOWLAN_CONFIG_API_S_VER_2 */ +struct iwl_wowlan_config_cmd_v3 { +	struct iwl_wowlan_config_cmd_v2 common; +	u8 offloading_tid; +	u8 reserved[3]; +} __packed; /* WOWLAN_CONFIG_API_S_VER_3 */ +  /*   * WOWLAN_TSC_RSC_PARAMS   */ @@ -293,20 +345,28 @@ enum iwl_wowlan_wakeup_reason {  	IWL_WOWLAN_WAKEUP_BY_REM_WAKE_WAKEUP_PACKET		= BIT(12),  }; /* WOWLAN_WAKE_UP_REASON_API_E_VER_2 */ +struct iwl_wowlan_gtk_status { +	u8 key_index; +	u8 reserved[3]; +	u8 decrypt_key[16]; +	u8 tkip_mic_key[8]; +	struct iwl_wowlan_rsc_tsc_params_cmd rsc; +} __packed; +  struct iwl_wowlan_status { +	struct iwl_wowlan_gtk_status gtk;  	__le64 replay_ctr;  	__le16 pattern_number;  	__le16 non_qos_seq_ctr;  	__le16 qos_seq_ctr[8];  	__le32 wakeup_reasons; -	__le32 rekey_status;  	__le32 num_of_gtk_rekeys;  	__le32 transmitted_ndps;  	__le32 received_beacons;  	__le32 wake_packet_length;  	__le32 wake_packet_bufsize;  	u8 wake_packet[]; /* can be truncated from _length to _bufsize */ -} __packed; /* WOWLAN_STATUSES_API_S_VER_4 */ +} __packed; /* WOWLAN_STATUSES_API_S_VER_6 */  #define IWL_WOWLAN_TCP_MAX_PACKET_LEN		64  #define IWL_WOWLAN_REMOTE_WAKE_MAX_PACKET_LEN	128  | 
