diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-commands.h')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-commands.h | 470 |
1 files changed, 438 insertions, 32 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h index 4083e4430827..3e4ba31b5d59 100644 --- a/drivers/net/wireless/iwlwifi/iwl-commands.h +++ b/drivers/net/wireless/iwlwifi/iwl-commands.h | |||
@@ -62,7 +62,7 @@ | |||
62 | *****************************************************************************/ | 62 | *****************************************************************************/ |
63 | /* | 63 | /* |
64 | * Please use this file (iwl-commands.h) only for uCode API definitions. | 64 | * Please use this file (iwl-commands.h) only for uCode API definitions. |
65 | * Please use iwl-4965-hw.h for hardware-related definitions. | 65 | * Please use iwl-xxxx-hw.h for hardware-related definitions. |
66 | * Please use iwl-dev.h for driver implementation definitions. | 66 | * Please use iwl-dev.h for driver implementation definitions. |
67 | */ | 67 | */ |
68 | 68 | ||
@@ -173,6 +173,23 @@ enum { | |||
173 | REPLY_RX_MPDU_CMD = 0xc1, | 173 | REPLY_RX_MPDU_CMD = 0xc1, |
174 | REPLY_RX = 0xc3, | 174 | REPLY_RX = 0xc3, |
175 | REPLY_COMPRESSED_BA = 0xc5, | 175 | REPLY_COMPRESSED_BA = 0xc5, |
176 | |||
177 | /* BT Coex */ | ||
178 | REPLY_BT_COEX_PRIO_TABLE = 0xcc, | ||
179 | REPLY_BT_COEX_PROT_ENV = 0xcd, | ||
180 | REPLY_BT_COEX_PROFILE_NOTIF = 0xce, | ||
181 | REPLY_BT_COEX_SCO = 0xcf, | ||
182 | |||
183 | /* PAN commands */ | ||
184 | REPLY_WIPAN_PARAMS = 0xb2, | ||
185 | REPLY_WIPAN_RXON = 0xb3, /* use REPLY_RXON structure */ | ||
186 | REPLY_WIPAN_RXON_TIMING = 0xb4, /* use REPLY_RXON_TIMING structure */ | ||
187 | REPLY_WIPAN_RXON_ASSOC = 0xb6, /* use REPLY_RXON_ASSOC structure */ | ||
188 | REPLY_WIPAN_QOS_PARAM = 0xb7, /* use REPLY_QOS_PARAM structure */ | ||
189 | REPLY_WIPAN_WEPKEY = 0xb8, /* use REPLY_WEPKEY structure */ | ||
190 | REPLY_WIPAN_P2P_CHANNEL_SWITCH = 0xb9, | ||
191 | REPLY_WIPAN_NOA_NOTIFICATION = 0xbc, | ||
192 | |||
176 | REPLY_MAX = 0xff | 193 | REPLY_MAX = 0xff |
177 | }; | 194 | }; |
178 | 195 | ||
@@ -600,6 +617,9 @@ enum { | |||
600 | RXON_DEV_TYPE_ESS = 3, | 617 | RXON_DEV_TYPE_ESS = 3, |
601 | RXON_DEV_TYPE_IBSS = 4, | 618 | RXON_DEV_TYPE_IBSS = 4, |
602 | RXON_DEV_TYPE_SNIFFER = 6, | 619 | RXON_DEV_TYPE_SNIFFER = 6, |
620 | RXON_DEV_TYPE_CP = 7, | ||
621 | RXON_DEV_TYPE_2STA = 8, | ||
622 | RXON_DEV_TYPE_P2P = 9, | ||
603 | }; | 623 | }; |
604 | 624 | ||
605 | 625 | ||
@@ -816,7 +836,8 @@ struct iwl_rxon_time_cmd { | |||
816 | __le16 atim_window; | 836 | __le16 atim_window; |
817 | __le32 beacon_init_val; | 837 | __le32 beacon_init_val; |
818 | __le16 listen_interval; | 838 | __le16 listen_interval; |
819 | __le16 reserved; | 839 | u8 dtim_period; |
840 | u8 delta_cp_bss_tbtts; | ||
820 | } __packed; | 841 | } __packed; |
821 | 842 | ||
822 | /* | 843 | /* |
@@ -953,11 +974,13 @@ struct iwl_qosparam_cmd { | |||
953 | 974 | ||
954 | /* Special, dedicated locations within device's station table */ | 975 | /* Special, dedicated locations within device's station table */ |
955 | #define IWL_AP_ID 0 | 976 | #define IWL_AP_ID 0 |
977 | #define IWL_AP_ID_PAN 1 | ||
956 | #define IWL_STA_ID 2 | 978 | #define IWL_STA_ID 2 |
957 | #define IWL3945_BROADCAST_ID 24 | 979 | #define IWL3945_BROADCAST_ID 24 |
958 | #define IWL3945_STATION_COUNT 25 | 980 | #define IWL3945_STATION_COUNT 25 |
959 | #define IWL4965_BROADCAST_ID 31 | 981 | #define IWL4965_BROADCAST_ID 31 |
960 | #define IWL4965_STATION_COUNT 32 | 982 | #define IWL4965_STATION_COUNT 32 |
983 | #define IWLAGN_PAN_BCAST_ID 14 | ||
961 | #define IWLAGN_BROADCAST_ID 15 | 984 | #define IWLAGN_BROADCAST_ID 15 |
962 | #define IWLAGN_STATION_COUNT 16 | 985 | #define IWLAGN_STATION_COUNT 16 |
963 | 986 | ||
@@ -966,6 +989,7 @@ struct iwl_qosparam_cmd { | |||
966 | 989 | ||
967 | #define STA_FLG_TX_RATE_MSK cpu_to_le32(1 << 2) | 990 | #define STA_FLG_TX_RATE_MSK cpu_to_le32(1 << 2) |
968 | #define STA_FLG_PWR_SAVE_MSK cpu_to_le32(1 << 8) | 991 | #define STA_FLG_PWR_SAVE_MSK cpu_to_le32(1 << 8) |
992 | #define STA_FLG_PAN_STATION cpu_to_le32(1 << 13) | ||
969 | #define STA_FLG_RTS_MIMO_PROT_MSK cpu_to_le32(1 << 17) | 993 | #define STA_FLG_RTS_MIMO_PROT_MSK cpu_to_le32(1 << 17) |
970 | #define STA_FLG_AGG_MPDU_8US_MSK cpu_to_le32(1 << 18) | 994 | #define STA_FLG_AGG_MPDU_8US_MSK cpu_to_le32(1 << 18) |
971 | #define STA_FLG_MAX_AGG_SIZE_POS (19) | 995 | #define STA_FLG_MAX_AGG_SIZE_POS (19) |
@@ -994,6 +1018,7 @@ struct iwl_qosparam_cmd { | |||
994 | #define STA_KEY_FLG_KEY_SIZE_MSK cpu_to_le16(0x1000) | 1018 | #define STA_KEY_FLG_KEY_SIZE_MSK cpu_to_le16(0x1000) |
995 | #define STA_KEY_MULTICAST_MSK cpu_to_le16(0x4000) | 1019 | #define STA_KEY_MULTICAST_MSK cpu_to_le16(0x4000) |
996 | #define STA_KEY_MAX_NUM 8 | 1020 | #define STA_KEY_MAX_NUM 8 |
1021 | #define STA_KEY_MAX_NUM_PAN 16 | ||
997 | 1022 | ||
998 | /* Flags indicate whether to modify vs. don't change various station params */ | 1023 | /* Flags indicate whether to modify vs. don't change various station params */ |
999 | #define STA_MODIFY_KEY_MASK 0x01 | 1024 | #define STA_MODIFY_KEY_MASK 0x01 |
@@ -1056,7 +1081,8 @@ struct sta_id_modify { | |||
1056 | * | 1081 | * |
1057 | * The device contains an internal table of per-station information, | 1082 | * The device contains an internal table of per-station information, |
1058 | * with info on security keys, aggregation parameters, and Tx rates for | 1083 | * with info on security keys, aggregation parameters, and Tx rates for |
1059 | * initial Tx attempt and any retries (4965 uses REPLY_TX_LINK_QUALITY_CMD, | 1084 | * initial Tx attempt and any retries (agn devices uses |
1085 | * REPLY_TX_LINK_QUALITY_CMD, | ||
1060 | * 3945 uses REPLY_RATE_SCALE to set up rate tables). | 1086 | * 3945 uses REPLY_RATE_SCALE to set up rate tables). |
1061 | * | 1087 | * |
1062 | * REPLY_ADD_STA sets up the table entry for one station, either creating | 1088 | * REPLY_ADD_STA sets up the table entry for one station, either creating |
@@ -1427,12 +1453,12 @@ struct iwl_rx_mpdu_res_start { | |||
1427 | * uCode handles all timing and protocol related to control frames | 1453 | * uCode handles all timing and protocol related to control frames |
1428 | * (RTS/CTS/ACK), based on flags in the Tx command. uCode and Tx scheduler | 1454 | * (RTS/CTS/ACK), based on flags in the Tx command. uCode and Tx scheduler |
1429 | * handle reception of block-acks; uCode updates the host driver via | 1455 | * handle reception of block-acks; uCode updates the host driver via |
1430 | * REPLY_COMPRESSED_BA (4965). | 1456 | * REPLY_COMPRESSED_BA. |
1431 | * | 1457 | * |
1432 | * uCode handles retrying Tx when an ACK is expected but not received. | 1458 | * uCode handles retrying Tx when an ACK is expected but not received. |
1433 | * This includes trying lower data rates than the one requested in the Tx | 1459 | * This includes trying lower data rates than the one requested in the Tx |
1434 | * command, as set up by the REPLY_RATE_SCALE (for 3945) or | 1460 | * command, as set up by the REPLY_RATE_SCALE (for 3945) or |
1435 | * REPLY_TX_LINK_QUALITY_CMD (4965). | 1461 | * REPLY_TX_LINK_QUALITY_CMD (agn). |
1436 | * | 1462 | * |
1437 | * Driver sets up transmit power for various rates via REPLY_TX_PWR_TABLE_CMD. | 1463 | * Driver sets up transmit power for various rates via REPLY_TX_PWR_TABLE_CMD. |
1438 | * This command must be executed after every RXON command, before Tx can occur. | 1464 | * This command must be executed after every RXON command, before Tx can occur. |
@@ -1468,7 +1494,7 @@ struct iwl_rx_mpdu_res_start { | |||
1468 | * Set this for unicast frames, but not broadcast/multicast. */ | 1494 | * Set this for unicast frames, but not broadcast/multicast. */ |
1469 | #define TX_CMD_FLG_ACK_MSK cpu_to_le32(1 << 3) | 1495 | #define TX_CMD_FLG_ACK_MSK cpu_to_le32(1 << 3) |
1470 | 1496 | ||
1471 | /* For 4965: | 1497 | /* For agn devices: |
1472 | * 1: Use rate scale table (see REPLY_TX_LINK_QUALITY_CMD). | 1498 | * 1: Use rate scale table (see REPLY_TX_LINK_QUALITY_CMD). |
1473 | * Tx command's initial_rate_index indicates first rate to try; | 1499 | * Tx command's initial_rate_index indicates first rate to try; |
1474 | * uCode walks through table for additional Tx attempts. | 1500 | * uCode walks through table for additional Tx attempts. |
@@ -1487,7 +1513,7 @@ struct iwl_rx_mpdu_res_start { | |||
1487 | */ | 1513 | */ |
1488 | #define TX_CMD_FLG_FULL_TXOP_PROT_MSK cpu_to_le32(1 << 7) | 1514 | #define TX_CMD_FLG_FULL_TXOP_PROT_MSK cpu_to_le32(1 << 7) |
1489 | 1515 | ||
1490 | /* Tx antenna selection field; used only for 3945, reserved (0) for 4965. | 1516 | /* Tx antenna selection field; used only for 3945, reserved (0) for agn devices. |
1491 | * Set field to "0" to allow 3945 uCode to select antenna (normal usage). */ | 1517 | * Set field to "0" to allow 3945 uCode to select antenna (normal usage). */ |
1492 | #define TX_CMD_FLG_ANT_SEL_MSK cpu_to_le32(0xf00) | 1518 | #define TX_CMD_FLG_ANT_SEL_MSK cpu_to_le32(0xf00) |
1493 | #define TX_CMD_FLG_ANT_A_MSK cpu_to_le32(1 << 8) | 1519 | #define TX_CMD_FLG_ANT_A_MSK cpu_to_le32(1 << 8) |
@@ -1870,9 +1896,10 @@ enum { | |||
1870 | * frame in this new agg block failed in previous agg block(s). | 1896 | * frame in this new agg block failed in previous agg block(s). |
1871 | * | 1897 | * |
1872 | * Note that, for aggregation, ACK (block-ack) status is not delivered here; | 1898 | * Note that, for aggregation, ACK (block-ack) status is not delivered here; |
1873 | * block-ack has not been received by the time the 4965 records this status. | 1899 | * block-ack has not been received by the time the agn device records |
1900 | * this status. | ||
1874 | * This status relates to reasons the tx might have been blocked or aborted | 1901 | * This status relates to reasons the tx might have been blocked or aborted |
1875 | * within the sending station (this 4965), rather than whether it was | 1902 | * within the sending station (this agn device), rather than whether it was |
1876 | * received successfully by the destination station. | 1903 | * received successfully by the destination station. |
1877 | */ | 1904 | */ |
1878 | struct agg_tx_status { | 1905 | struct agg_tx_status { |
@@ -2140,14 +2167,16 @@ struct iwl_link_qual_agg_params { | |||
2140 | /* | 2167 | /* |
2141 | * REPLY_TX_LINK_QUALITY_CMD = 0x4e (command, has simple generic response) | 2168 | * REPLY_TX_LINK_QUALITY_CMD = 0x4e (command, has simple generic response) |
2142 | * | 2169 | * |
2143 | * For 4965 only; 3945 uses REPLY_RATE_SCALE. | 2170 | * For agn devices only; 3945 uses REPLY_RATE_SCALE. |
2144 | * | 2171 | * |
2145 | * Each station in the 4965's internal station table has its own table of 16 | 2172 | * Each station in the agn device's internal station table has its own table |
2173 | * of 16 | ||
2146 | * Tx rates and modulation modes (e.g. legacy/SISO/MIMO) for retrying Tx when | 2174 | * Tx rates and modulation modes (e.g. legacy/SISO/MIMO) for retrying Tx when |
2147 | * an ACK is not received. This command replaces the entire table for | 2175 | * an ACK is not received. This command replaces the entire table for |
2148 | * one station. | 2176 | * one station. |
2149 | * | 2177 | * |
2150 | * NOTE: Station must already be in 4965's station table. Use REPLY_ADD_STA. | 2178 | * NOTE: Station must already be in agn device's station table. |
2179 | * Use REPLY_ADD_STA. | ||
2151 | * | 2180 | * |
2152 | * The rate scaling procedures described below work well. Of course, other | 2181 | * The rate scaling procedures described below work well. Of course, other |
2153 | * procedures are possible, and may work better for particular environments. | 2182 | * procedures are possible, and may work better for particular environments. |
@@ -2184,12 +2213,12 @@ struct iwl_link_qual_agg_params { | |||
2184 | * | 2213 | * |
2185 | * ACCUMULATING HISTORY | 2214 | * ACCUMULATING HISTORY |
2186 | * | 2215 | * |
2187 | * The rate scaling algorithm for 4965, as implemented in Linux driver, uses | 2216 | * The rate scaling algorithm for agn devices, as implemented in Linux driver, |
2188 | * two sets of frame Tx success history: One for the current/active modulation | 2217 | * uses two sets of frame Tx success history: One for the current/active |
2189 | * mode, and one for a speculative/search mode that is being attempted. If the | 2218 | * modulation mode, and one for a speculative/search mode that is being |
2190 | * speculative mode turns out to be more effective (i.e. actual transfer | 2219 | * attempted. If the speculative mode turns out to be more effective (i.e. |
2191 | * rate is better), then the driver continues to use the speculative mode | 2220 | * actual transfer rate is better), then the driver continues to use the |
2192 | * as the new current active mode. | 2221 | * speculative mode as the new current active mode. |
2193 | * | 2222 | * |
2194 | * Each history set contains, separately for each possible rate, data for a | 2223 | * Each history set contains, separately for each possible rate, data for a |
2195 | * sliding window of the 62 most recent tx attempts at that rate. The data | 2224 | * sliding window of the 62 most recent tx attempts at that rate. The data |
@@ -2200,12 +2229,12 @@ struct iwl_link_qual_agg_params { | |||
2200 | * The driver uses the bit map to remove successes from the success sum, as | 2229 | * The driver uses the bit map to remove successes from the success sum, as |
2201 | * the oldest tx attempts fall out of the window. | 2230 | * the oldest tx attempts fall out of the window. |
2202 | * | 2231 | * |
2203 | * When the 4965 makes multiple tx attempts for a given frame, each attempt | 2232 | * When the agn device makes multiple tx attempts for a given frame, each |
2204 | * might be at a different rate, and have different modulation characteristics | 2233 | * attempt might be at a different rate, and have different modulation |
2205 | * (e.g. antenna, fat channel, short guard interval), as set up in the rate | 2234 | * characteristics (e.g. antenna, fat channel, short guard interval), as set |
2206 | * scaling table in the Link Quality command. The driver must determine | 2235 | * up in the rate scaling table in the Link Quality command. The driver must |
2207 | * which rate table entry was used for each tx attempt, to determine which | 2236 | * determine which rate table entry was used for each tx attempt, to determine |
2208 | * rate-specific history to update, and record only those attempts that | 2237 | * which rate-specific history to update, and record only those attempts that |
2209 | * match the modulation characteristics of the history set. | 2238 | * match the modulation characteristics of the history set. |
2210 | * | 2239 | * |
2211 | * When using block-ack (aggregation), all frames are transmitted at the same | 2240 | * When using block-ack (aggregation), all frames are transmitted at the same |
@@ -2335,7 +2364,7 @@ struct iwl_link_quality_cmd { | |||
2335 | /* | 2364 | /* |
2336 | * Rate info; when using rate-scaling, Tx command's initial_rate_index | 2365 | * Rate info; when using rate-scaling, Tx command's initial_rate_index |
2337 | * specifies 1st Tx rate attempted, via index into this table. | 2366 | * specifies 1st Tx rate attempted, via index into this table. |
2338 | * 4965 works its way through table when retrying Tx. | 2367 | * agn devices works its way through table when retrying Tx. |
2339 | */ | 2368 | */ |
2340 | struct { | 2369 | struct { |
2341 | __le32 rate_n_flags; /* RATE_MCS_*, IWL_RATE_* */ | 2370 | __le32 rate_n_flags; /* RATE_MCS_*, IWL_RATE_* */ |
@@ -2368,10 +2397,26 @@ struct iwl_link_quality_cmd { | |||
2368 | #define BT_MAX_KILL_DEF (0x5) | 2397 | #define BT_MAX_KILL_DEF (0x5) |
2369 | #define BT_MAX_KILL_MAX (0xFF) | 2398 | #define BT_MAX_KILL_MAX (0xFF) |
2370 | 2399 | ||
2400 | #define BT_DURATION_LIMIT_DEF 625 | ||
2401 | #define BT_DURATION_LIMIT_MAX 1250 | ||
2402 | #define BT_DURATION_LIMIT_MIN 625 | ||
2403 | |||
2404 | #define BT_ON_THRESHOLD_DEF 4 | ||
2405 | #define BT_ON_THRESHOLD_MAX 1000 | ||
2406 | #define BT_ON_THRESHOLD_MIN 1 | ||
2407 | |||
2408 | #define BT_FRAG_THRESHOLD_DEF 0 | ||
2409 | #define BT_FRAG_THRESHOLD_MAX 0 | ||
2410 | #define BT_FRAG_THRESHOLD_MIN 0 | ||
2411 | |||
2412 | #define BT_AGG_THRESHOLD_DEF 0 | ||
2413 | #define BT_AGG_THRESHOLD_MAX 0 | ||
2414 | #define BT_AGG_THRESHOLD_MIN 0 | ||
2415 | |||
2371 | /* | 2416 | /* |
2372 | * REPLY_BT_CONFIG = 0x9b (command, has simple generic response) | 2417 | * REPLY_BT_CONFIG = 0x9b (command, has simple generic response) |
2373 | * | 2418 | * |
2374 | * 3945 and 4965 support hardware handshake with Bluetooth device on | 2419 | * 3945 and agn devices support hardware handshake with Bluetooth device on |
2375 | * same platform. Bluetooth device alerts wireless device when it will Tx; | 2420 | * same platform. Bluetooth device alerts wireless device when it will Tx; |
2376 | * wireless device can delay or kill its own Tx to accommodate. | 2421 | * wireless device can delay or kill its own Tx to accommodate. |
2377 | */ | 2422 | */ |
@@ -2384,6 +2429,74 @@ struct iwl_bt_cmd { | |||
2384 | __le32 kill_cts_mask; | 2429 | __le32 kill_cts_mask; |
2385 | } __packed; | 2430 | } __packed; |
2386 | 2431 | ||
2432 | #define IWLAGN_BT_FLAG_CHANNEL_INHIBITION BIT(0) | ||
2433 | |||
2434 | #define IWLAGN_BT_FLAG_COEX_MODE_MASK (BIT(3)|BIT(4)|BIT(5)) | ||
2435 | #define IWLAGN_BT_FLAG_COEX_MODE_SHIFT 3 | ||
2436 | #define IWLAGN_BT_FLAG_COEX_MODE_DISABLED 0 | ||
2437 | #define IWLAGN_BT_FLAG_COEX_MODE_LEGACY_2W 1 | ||
2438 | #define IWLAGN_BT_FLAG_COEX_MODE_3W 2 | ||
2439 | #define IWLAGN_BT_FLAG_COEX_MODE_4W 3 | ||
2440 | |||
2441 | #define IWLAGN_BT_FLAG_UCODE_DEFAULT BIT(6) | ||
2442 | #define IWLAGN_BT_FLAG_NOCOEX_NOTIF BIT(7) | ||
2443 | |||
2444 | #define IWLAGN_BT_PRIO_BOOST_MAX 0xFF | ||
2445 | #define IWLAGN_BT_PRIO_BOOST_MIN 0x00 | ||
2446 | #define IWLAGN_BT_PRIO_BOOST_DEFAULT 0xF0 | ||
2447 | |||
2448 | #define IWLAGN_BT_MAX_KILL_DEFAULT 5 | ||
2449 | |||
2450 | #define IWLAGN_BT3_T7_DEFAULT 1 | ||
2451 | |||
2452 | #define IWLAGN_BT_KILL_ACK_MASK_DEFAULT cpu_to_le32(0xffffffff) | ||
2453 | #define IWLAGN_BT_KILL_CTS_MASK_DEFAULT cpu_to_le32(0xffffffff) | ||
2454 | |||
2455 | #define IWLAGN_BT3_PRIO_SAMPLE_DEFAULT 2 | ||
2456 | |||
2457 | #define IWLAGN_BT3_T2_DEFAULT 0xc | ||
2458 | |||
2459 | #define IWLAGN_BT_VALID_ENABLE_FLAGS cpu_to_le16(BIT(0)) | ||
2460 | #define IWLAGN_BT_VALID_BOOST cpu_to_le16(BIT(1)) | ||
2461 | #define IWLAGN_BT_VALID_MAX_KILL cpu_to_le16(BIT(2)) | ||
2462 | #define IWLAGN_BT_VALID_3W_TIMERS cpu_to_le16(BIT(3)) | ||
2463 | #define IWLAGN_BT_VALID_KILL_ACK_MASK cpu_to_le16(BIT(4)) | ||
2464 | #define IWLAGN_BT_VALID_KILL_CTS_MASK cpu_to_le16(BIT(5)) | ||
2465 | #define IWLAGN_BT_VALID_BT4_TIMES cpu_to_le16(BIT(6)) | ||
2466 | #define IWLAGN_BT_VALID_3W_LUT cpu_to_le16(BIT(7)) | ||
2467 | |||
2468 | #define IWLAGN_BT_ALL_VALID_MSK (IWLAGN_BT_VALID_ENABLE_FLAGS | \ | ||
2469 | IWLAGN_BT_VALID_BOOST | \ | ||
2470 | IWLAGN_BT_VALID_MAX_KILL | \ | ||
2471 | IWLAGN_BT_VALID_3W_TIMERS | \ | ||
2472 | IWLAGN_BT_VALID_KILL_ACK_MASK | \ | ||
2473 | IWLAGN_BT_VALID_KILL_CTS_MASK | \ | ||
2474 | IWLAGN_BT_VALID_BT4_TIMES | \ | ||
2475 | IWLAGN_BT_VALID_3W_LUT) | ||
2476 | |||
2477 | struct iwlagn_bt_cmd { | ||
2478 | u8 flags; | ||
2479 | u8 ledtime; /* unused */ | ||
2480 | u8 max_kill; | ||
2481 | u8 bt3_timer_t7_value; | ||
2482 | __le32 kill_ack_mask; | ||
2483 | __le32 kill_cts_mask; | ||
2484 | u8 bt3_prio_sample_time; | ||
2485 | u8 bt3_timer_t2_value; | ||
2486 | __le16 bt4_reaction_time; /* unused */ | ||
2487 | __le32 bt3_lookup_table[12]; | ||
2488 | __le16 bt4_decision_time; /* unused */ | ||
2489 | __le16 valid; | ||
2490 | u8 prio_boost; | ||
2491 | u8 reserved[3]; | ||
2492 | }; | ||
2493 | |||
2494 | #define IWLAGN_BT_SCO_ACTIVE cpu_to_le32(BIT(0)) | ||
2495 | |||
2496 | struct iwlagn_bt_sco_cmd { | ||
2497 | __le32 flags; | ||
2498 | }; | ||
2499 | |||
2387 | /****************************************************************************** | 2500 | /****************************************************************************** |
2388 | * (6) | 2501 | * (6) |
2389 | * Spectrum Management (802.11h) Commands, Responses, Notifications: | 2502 | * Spectrum Management (802.11h) Commands, Responses, Notifications: |
@@ -2572,7 +2685,7 @@ struct iwl_powertable_cmd { | |||
2572 | 2685 | ||
2573 | /* | 2686 | /* |
2574 | * PM_SLEEP_NOTIFICATION = 0x7A (notification only, not a command) | 2687 | * PM_SLEEP_NOTIFICATION = 0x7A (notification only, not a command) |
2575 | * 3945 and 4965 identical. | 2688 | * all devices identical. |
2576 | */ | 2689 | */ |
2577 | struct iwl_sleep_notification { | 2690 | struct iwl_sleep_notification { |
2578 | u8 pm_sleep_mode; | 2691 | u8 pm_sleep_mode; |
@@ -2583,7 +2696,7 @@ struct iwl_sleep_notification { | |||
2583 | __le32 bcon_timer; | 2696 | __le32 bcon_timer; |
2584 | } __packed; | 2697 | } __packed; |
2585 | 2698 | ||
2586 | /* Sleep states. 3945 and 4965 identical. */ | 2699 | /* Sleep states. all devices identical. */ |
2587 | enum { | 2700 | enum { |
2588 | IWL_PM_NO_SLEEP = 0, | 2701 | IWL_PM_NO_SLEEP = 0, |
2589 | IWL_PM_SLP_MAC = 1, | 2702 | IWL_PM_SLP_MAC = 1, |
@@ -2892,6 +3005,12 @@ struct iwl_scanstart_notification { | |||
2892 | #define SCAN_OWNER_STATUS 0x1; | 3005 | #define SCAN_OWNER_STATUS 0x1; |
2893 | #define MEASURE_OWNER_STATUS 0x2; | 3006 | #define MEASURE_OWNER_STATUS 0x2; |
2894 | 3007 | ||
3008 | #define IWL_PROBE_STATUS_OK 0 | ||
3009 | #define IWL_PROBE_STATUS_TX_FAILED BIT(0) | ||
3010 | /* error statuses combined with TX_FAILED */ | ||
3011 | #define IWL_PROBE_STATUS_FAIL_TTL BIT(1) | ||
3012 | #define IWL_PROBE_STATUS_FAIL_BT BIT(2) | ||
3013 | |||
2895 | #define NUMBER_OF_STATISTICS 1 /* first __le32 is good CRC */ | 3014 | #define NUMBER_OF_STATISTICS 1 /* first __le32 is good CRC */ |
2896 | /* | 3015 | /* |
2897 | * SCAN_RESULTS_NOTIFICATION = 0x83 (notification only, not a command) | 3016 | * SCAN_RESULTS_NOTIFICATION = 0x83 (notification only, not a command) |
@@ -2899,7 +3018,8 @@ struct iwl_scanstart_notification { | |||
2899 | struct iwl_scanresults_notification { | 3018 | struct iwl_scanresults_notification { |
2900 | u8 channel; | 3019 | u8 channel; |
2901 | u8 band; | 3020 | u8 band; |
2902 | u8 reserved[2]; | 3021 | u8 probe_status; |
3022 | u8 num_probe_not_sent; /* not enough time to send */ | ||
2903 | __le32 tsf_low; | 3023 | __le32 tsf_low; |
2904 | __le32 tsf_high; | 3024 | __le32 tsf_high; |
2905 | __le32 statistics[NUMBER_OF_STATISTICS]; | 3025 | __le32 statistics[NUMBER_OF_STATISTICS]; |
@@ -2911,7 +3031,7 @@ struct iwl_scanresults_notification { | |||
2911 | struct iwl_scancomplete_notification { | 3031 | struct iwl_scancomplete_notification { |
2912 | u8 scanned_channels; | 3032 | u8 scanned_channels; |
2913 | u8 status; | 3033 | u8 status; |
2914 | u8 reserved; | 3034 | u8 bt_status; /* BT On/Off status */ |
2915 | u8 last_channel; | 3035 | u8 last_channel; |
2916 | __le32 tsf_low; | 3036 | __le32 tsf_low; |
2917 | __le32 tsf_high; | 3037 | __le32 tsf_high; |
@@ -3270,7 +3390,7 @@ struct statistics_general_bt { | |||
3270 | 3390 | ||
3271 | /* | 3391 | /* |
3272 | * REPLY_STATISTICS_CMD = 0x9c, | 3392 | * REPLY_STATISTICS_CMD = 0x9c, |
3273 | * 3945 and 4965 identical. | 3393 | * all devices identical. |
3274 | * | 3394 | * |
3275 | * This command triggers an immediate response containing uCode statistics. | 3395 | * This command triggers an immediate response containing uCode statistics. |
3276 | * The response is in the same format as STATISTICS_NOTIFICATION 0x9d, below. | 3396 | * The response is in the same format as STATISTICS_NOTIFICATION 0x9d, below. |
@@ -3608,7 +3728,7 @@ struct iwl_enhance_sensitivity_cmd { | |||
3608 | /** | 3728 | /** |
3609 | * REPLY_PHY_CALIBRATION_CMD = 0xb0 (command, has simple generic response) | 3729 | * REPLY_PHY_CALIBRATION_CMD = 0xb0 (command, has simple generic response) |
3610 | * | 3730 | * |
3611 | * This command sets the relative gains of 4965's 3 radio receiver chains. | 3731 | * This command sets the relative gains of agn device's 3 radio receiver chains. |
3612 | * | 3732 | * |
3613 | * After the first association, driver should accumulate signal and noise | 3733 | * After the first association, driver should accumulate signal and noise |
3614 | * statistics from the STATISTICS_NOTIFICATIONs that follow the first 20 | 3734 | * statistics from the STATISTICS_NOTIFICATIONs that follow the first 20 |
@@ -3965,6 +4085,201 @@ struct iwl_coex_event_resp { | |||
3965 | 4085 | ||
3966 | 4086 | ||
3967 | /****************************************************************************** | 4087 | /****************************************************************************** |
4088 | * Bluetooth Coexistence commands | ||
4089 | * | ||
4090 | *****************************************************************************/ | ||
4091 | |||
4092 | /* | ||
4093 | * BT Status notification | ||
4094 | * REPLY_BT_COEX_PROFILE_NOTIF = 0xce | ||
4095 | */ | ||
4096 | enum iwl_bt_coex_profile_traffic_load { | ||
4097 | IWL_BT_COEX_TRAFFIC_LOAD_NONE = 0, | ||
4098 | IWL_BT_COEX_TRAFFIC_LOAD_LOW = 1, | ||
4099 | IWL_BT_COEX_TRAFFIC_LOAD_HIGH = 2, | ||
4100 | IWL_BT_COEX_TRAFFIC_LOAD_CONTINUOUS = 3, | ||
4101 | /* | ||
4102 | * There are no more even though below is a u8, the | ||
4103 | * indication from the BT device only has two bits. | ||
4104 | */ | ||
4105 | }; | ||
4106 | |||
4107 | #define BT_UART_MSG_FRAME1MSGTYPE_POS (0) | ||
4108 | #define BT_UART_MSG_FRAME1MSGTYPE_MSK \ | ||
4109 | (0x7 << BT_UART_MSG_FRAME1MSGTYPE_POS) | ||
4110 | #define BT_UART_MSG_FRAME1SSN_POS (3) | ||
4111 | #define BT_UART_MSG_FRAME1SSN_MSK \ | ||
4112 | (0x3 << BT_UART_MSG_FRAME1SSN_POS) | ||
4113 | #define BT_UART_MSG_FRAME1UPDATEREQ_POS (5) | ||
4114 | #define BT_UART_MSG_FRAME1UPDATEREQ_MSK \ | ||
4115 | (0x1 << BT_UART_MSG_FRAME1UPDATEREQ_POS) | ||
4116 | #define BT_UART_MSG_FRAME1RESERVED_POS (6) | ||
4117 | #define BT_UART_MSG_FRAME1RESERVED_MSK \ | ||
4118 | (0x3 << BT_UART_MSG_FRAME1RESERVED_POS) | ||
4119 | |||
4120 | #define BT_UART_MSG_FRAME2OPENCONNECTIONS_POS (0) | ||
4121 | #define BT_UART_MSG_FRAME2OPENCONNECTIONS_MSK \ | ||
4122 | (0x3 << BT_UART_MSG_FRAME2OPENCONNECTIONS_POS) | ||
4123 | #define BT_UART_MSG_FRAME2TRAFFICLOAD_POS (2) | ||
4124 | #define BT_UART_MSG_FRAME2TRAFFICLOAD_MSK \ | ||
4125 | (0x3 << BT_UART_MSG_FRAME2TRAFFICLOAD_POS) | ||
4126 | #define BT_UART_MSG_FRAME2CHLSEQN_POS (4) | ||
4127 | #define BT_UART_MSG_FRAME2CHLSEQN_MSK \ | ||
4128 | (0x1 << BT_UART_MSG_FRAME2CHLSEQN_POS) | ||
4129 | #define BT_UART_MSG_FRAME2INBAND_POS (5) | ||
4130 | #define BT_UART_MSG_FRAME2INBAND_MSK \ | ||
4131 | (0x1 << BT_UART_MSG_FRAME2INBAND_POS) | ||
4132 | #define BT_UART_MSG_FRAME2RESERVED_POS (6) | ||
4133 | #define BT_UART_MSG_FRAME2RESERVED_MSK \ | ||
4134 | (0x3 << BT_UART_MSG_FRAME2RESERVED_POS) | ||
4135 | |||
4136 | #define BT_UART_MSG_FRAME3SCOESCO_POS (0) | ||
4137 | #define BT_UART_MSG_FRAME3SCOESCO_MSK \ | ||
4138 | (0x1 << BT_UART_MSG_FRAME3SCOESCO_POS) | ||
4139 | #define BT_UART_MSG_FRAME3SNIFF_POS (1) | ||
4140 | #define BT_UART_MSG_FRAME3SNIFF_MSK \ | ||
4141 | (0x1 << BT_UART_MSG_FRAME3SNIFF_POS) | ||
4142 | #define BT_UART_MSG_FRAME3A2DP_POS (2) | ||
4143 | #define BT_UART_MSG_FRAME3A2DP_MSK \ | ||
4144 | (0x1 << BT_UART_MSG_FRAME3A2DP_POS) | ||
4145 | #define BT_UART_MSG_FRAME3ACL_POS (3) | ||
4146 | #define BT_UART_MSG_FRAME3ACL_MSK \ | ||
4147 | (0x1 << BT_UART_MSG_FRAME3ACL_POS) | ||
4148 | #define BT_UART_MSG_FRAME3MASTER_POS (4) | ||
4149 | #define BT_UART_MSG_FRAME3MASTER_MSK \ | ||
4150 | (0x1 << BT_UART_MSG_FRAME3MASTER_POS) | ||
4151 | #define BT_UART_MSG_FRAME3OBEX_POS (5) | ||
4152 | #define BT_UART_MSG_FRAME3OBEX_MSK \ | ||
4153 | (0x1 << BT_UART_MSG_FRAME3OBEX_POS) | ||
4154 | #define BT_UART_MSG_FRAME3RESERVED_POS (6) | ||
4155 | #define BT_UART_MSG_FRAME3RESERVED_MSK \ | ||
4156 | (0x3 << BT_UART_MSG_FRAME3RESERVED_POS) | ||
4157 | |||
4158 | #define BT_UART_MSG_FRAME4IDLEDURATION_POS (0) | ||
4159 | #define BT_UART_MSG_FRAME4IDLEDURATION_MSK \ | ||
4160 | (0x3F << BT_UART_MSG_FRAME4IDLEDURATION_POS) | ||
4161 | #define BT_UART_MSG_FRAME4RESERVED_POS (6) | ||
4162 | #define BT_UART_MSG_FRAME4RESERVED_MSK \ | ||
4163 | (0x3 << BT_UART_MSG_FRAME4RESERVED_POS) | ||
4164 | |||
4165 | #define BT_UART_MSG_FRAME5TXACTIVITY_POS (0) | ||
4166 | #define BT_UART_MSG_FRAME5TXACTIVITY_MSK \ | ||
4167 | (0x3 << BT_UART_MSG_FRAME5TXACTIVITY_POS) | ||
4168 | #define BT_UART_MSG_FRAME5RXACTIVITY_POS (2) | ||
4169 | #define BT_UART_MSG_FRAME5RXACTIVITY_MSK \ | ||
4170 | (0x3 << BT_UART_MSG_FRAME5RXACTIVITY_POS) | ||
4171 | #define BT_UART_MSG_FRAME5ESCORETRANSMIT_POS (4) | ||
4172 | #define BT_UART_MSG_FRAME5ESCORETRANSMIT_MSK \ | ||
4173 | (0x3 << BT_UART_MSG_FRAME5ESCORETRANSMIT_POS) | ||
4174 | #define BT_UART_MSG_FRAME5RESERVED_POS (6) | ||
4175 | #define BT_UART_MSG_FRAME5RESERVED_MSK \ | ||
4176 | (0x3 << BT_UART_MSG_FRAME5RESERVED_POS) | ||
4177 | |||
4178 | #define BT_UART_MSG_FRAME6SNIFFINTERVAL_POS (0) | ||
4179 | #define BT_UART_MSG_FRAME6SNIFFINTERVAL_MSK \ | ||
4180 | (0x1F << BT_UART_MSG_FRAME6SNIFFINTERVAL_POS) | ||
4181 | #define BT_UART_MSG_FRAME6DISCOVERABLE_POS (5) | ||
4182 | #define BT_UART_MSG_FRAME6DISCOVERABLE_MSK \ | ||
4183 | (0x1 << BT_UART_MSG_FRAME6DISCOVERABLE_POS) | ||
4184 | #define BT_UART_MSG_FRAME6RESERVED_POS (6) | ||
4185 | #define BT_UART_MSG_FRAME6RESERVED_MSK \ | ||
4186 | (0x3 << BT_UART_MSG_FRAME6RESERVED_POS) | ||
4187 | |||
4188 | #define BT_UART_MSG_FRAME7SNIFFACTIVITY_POS (0) | ||
4189 | #define BT_UART_MSG_FRAME7SNIFFACTIVITY_MSK \ | ||
4190 | (0x7 << BT_UART_MSG_FRAME7SNIFFACTIVITY_POS) | ||
4191 | #define BT_UART_MSG_FRAME7INQUIRYPAGESRMODE_POS (3) | ||
4192 | #define BT_UART_MSG_FRAME7INQUIRYPAGESRMODE_MSK \ | ||
4193 | (0x3 << BT_UART_MSG_FRAME7INQUIRYPAGESRMODE_POS) | ||
4194 | #define BT_UART_MSG_FRAME7CONNECTABLE_POS (5) | ||
4195 | #define BT_UART_MSG_FRAME7CONNECTABLE_MSK \ | ||
4196 | (0x1 << BT_UART_MSG_FRAME7CONNECTABLE_POS) | ||
4197 | #define BT_UART_MSG_FRAME7RESERVED_POS (6) | ||
4198 | #define BT_UART_MSG_FRAME7RESERVED_MSK \ | ||
4199 | (0x3 << BT_UART_MSG_FRAME7RESERVED_POS) | ||
4200 | |||
4201 | |||
4202 | struct iwl_bt_uart_msg { | ||
4203 | u8 header; | ||
4204 | u8 frame1; | ||
4205 | u8 frame2; | ||
4206 | u8 frame3; | ||
4207 | u8 frame4; | ||
4208 | u8 frame5; | ||
4209 | u8 frame6; | ||
4210 | u8 frame7; | ||
4211 | } __attribute__((packed)); | ||
4212 | |||
4213 | struct iwl_bt_coex_profile_notif { | ||
4214 | struct iwl_bt_uart_msg last_bt_uart_msg; | ||
4215 | u8 bt_status; /* 0 - off, 1 - on */ | ||
4216 | u8 bt_traffic_load; /* 0 .. 3? */ | ||
4217 | u8 bt_ci_compliance; /* 0 - not complied, 1 - complied */ | ||
4218 | u8 reserved; | ||
4219 | } __attribute__((packed)); | ||
4220 | |||
4221 | #define IWL_BT_COEX_PRIO_TBL_SHARED_ANTENNA_POS 0 | ||
4222 | #define IWL_BT_COEX_PRIO_TBL_SHARED_ANTENNA_MSK 0x1 | ||
4223 | #define IWL_BT_COEX_PRIO_TBL_PRIO_POS 1 | ||
4224 | #define IWL_BT_COEX_PRIO_TBL_PRIO_MASK 0x0e | ||
4225 | #define IWL_BT_COEX_PRIO_TBL_RESERVED_POS 4 | ||
4226 | #define IWL_BT_COEX_PRIO_TBL_RESERVED_MASK 0xf0 | ||
4227 | #define IWL_BT_COEX_PRIO_TBL_PRIO_SHIFT 1 | ||
4228 | |||
4229 | /* | ||
4230 | * BT Coexistence Priority table | ||
4231 | * REPLY_BT_COEX_PRIO_TABLE = 0xcc | ||
4232 | */ | ||
4233 | enum bt_coex_prio_table_events { | ||
4234 | BT_COEX_PRIO_TBL_EVT_INIT_CALIB1 = 0, | ||
4235 | BT_COEX_PRIO_TBL_EVT_INIT_CALIB2 = 1, | ||
4236 | BT_COEX_PRIO_TBL_EVT_PERIODIC_CALIB_LOW1 = 2, | ||
4237 | BT_COEX_PRIO_TBL_EVT_PERIODIC_CALIB_LOW2 = 3, /* DC calib */ | ||
4238 | BT_COEX_PRIO_TBL_EVT_PERIODIC_CALIB_HIGH1 = 4, | ||
4239 | BT_COEX_PRIO_TBL_EVT_PERIODIC_CALIB_HIGH2 = 5, | ||
4240 | BT_COEX_PRIO_TBL_EVT_DTIM = 6, | ||
4241 | BT_COEX_PRIO_TBL_EVT_SCAN52 = 7, | ||
4242 | BT_COEX_PRIO_TBL_EVT_SCAN24 = 8, | ||
4243 | BT_COEX_PRIO_TBL_EVT_RESERVED0 = 9, | ||
4244 | BT_COEX_PRIO_TBL_EVT_RESERVED1 = 10, | ||
4245 | BT_COEX_PRIO_TBL_EVT_RESERVED2 = 11, | ||
4246 | BT_COEX_PRIO_TBL_EVT_RESERVED3 = 12, | ||
4247 | BT_COEX_PRIO_TBL_EVT_RESERVED4 = 13, | ||
4248 | BT_COEX_PRIO_TBL_EVT_RESERVED5 = 14, | ||
4249 | BT_COEX_PRIO_TBL_EVT_RESERVED6 = 15, | ||
4250 | /* BT_COEX_PRIO_TBL_EVT_MAX should always be last */ | ||
4251 | BT_COEX_PRIO_TBL_EVT_MAX, | ||
4252 | }; | ||
4253 | |||
4254 | enum bt_coex_prio_table_priorities { | ||
4255 | BT_COEX_PRIO_TBL_DISABLED = 0, | ||
4256 | BT_COEX_PRIO_TBL_PRIO_LOW = 1, | ||
4257 | BT_COEX_PRIO_TBL_PRIO_HIGH = 2, | ||
4258 | BT_COEX_PRIO_TBL_PRIO_BYPASS = 3, | ||
4259 | BT_COEX_PRIO_TBL_PRIO_COEX_OFF = 4, | ||
4260 | BT_COEX_PRIO_TBL_PRIO_COEX_ON = 5, | ||
4261 | BT_COEX_PRIO_TBL_PRIO_RSRVD1 = 6, | ||
4262 | BT_COEX_PRIO_TBL_PRIO_RSRVD2 = 7, | ||
4263 | BT_COEX_PRIO_TBL_MAX, | ||
4264 | }; | ||
4265 | |||
4266 | struct iwl_bt_coex_prio_table_cmd { | ||
4267 | u8 prio_tbl[BT_COEX_PRIO_TBL_EVT_MAX]; | ||
4268 | } __attribute__((packed)); | ||
4269 | |||
4270 | #define IWL_BT_COEX_ENV_CLOSE 0 | ||
4271 | #define IWL_BT_COEX_ENV_OPEN 1 | ||
4272 | /* | ||
4273 | * BT Protection Envelope | ||
4274 | * REPLY_BT_COEX_PROT_ENV = 0xcd | ||
4275 | */ | ||
4276 | struct iwl_bt_coex_prot_env_cmd { | ||
4277 | u8 action; /* 0 = closed, 1 = open */ | ||
4278 | u8 type; /* 0 .. 15 */ | ||
4279 | u8 reserved[2]; | ||
4280 | } __attribute__((packed)); | ||
4281 | |||
4282 | /****************************************************************************** | ||
3968 | * (13) | 4283 | * (13) |
3969 | * Union of all expected notifications/responses: | 4284 | * Union of all expected notifications/responses: |
3970 | * | 4285 | * |
@@ -4003,6 +4318,7 @@ struct iwl_rx_packet { | |||
4003 | struct iwl_missed_beacon_notif missed_beacon; | 4318 | struct iwl_missed_beacon_notif missed_beacon; |
4004 | struct iwl_coex_medium_notification coex_medium_notif; | 4319 | struct iwl_coex_medium_notification coex_medium_notif; |
4005 | struct iwl_coex_event_resp coex_event; | 4320 | struct iwl_coex_event_resp coex_event; |
4321 | struct iwl_bt_coex_profile_notif bt_coex_profile_notif; | ||
4006 | __le32 status; | 4322 | __le32 status; |
4007 | u8 raw[0]; | 4323 | u8 raw[0]; |
4008 | } u; | 4324 | } u; |
@@ -4010,4 +4326,94 @@ struct iwl_rx_packet { | |||
4010 | 4326 | ||
4011 | int iwl_agn_check_rxon_cmd(struct iwl_priv *priv); | 4327 | int iwl_agn_check_rxon_cmd(struct iwl_priv *priv); |
4012 | 4328 | ||
4329 | /* | ||
4330 | * REPLY_WIPAN_PARAMS = 0xb2 (Commands and Notification) | ||
4331 | */ | ||
4332 | |||
4333 | /** | ||
4334 | * struct iwl_wipan_slot | ||
4335 | * @width: Time in TU | ||
4336 | * @type: | ||
4337 | * 0 - BSS | ||
4338 | * 1 - PAN | ||
4339 | */ | ||
4340 | struct iwl_wipan_slot { | ||
4341 | __le16 width; | ||
4342 | u8 type; | ||
4343 | u8 reserved; | ||
4344 | } __packed; | ||
4345 | |||
4346 | #define IWL_WIPAN_PARAMS_FLG_LEAVE_CHANNEL_CTS BIT(1) /* reserved */ | ||
4347 | #define IWL_WIPAN_PARAMS_FLG_LEAVE_CHANNEL_QUIET BIT(2) /* reserved */ | ||
4348 | #define IWL_WIPAN_PARAMS_FLG_SLOTTED_MODE BIT(3) /* reserved */ | ||
4349 | #define IWL_WIPAN_PARAMS_FLG_FILTER_BEACON_NOTIF BIT(4) | ||
4350 | #define IWL_WIPAN_PARAMS_FLG_FULL_SLOTTED_MODE BIT(5) | ||
4351 | |||
4352 | /** | ||
4353 | * struct iwl_wipan_params_cmd | ||
4354 | * @flags: | ||
4355 | * bit0: reserved | ||
4356 | * bit1: CP leave channel with CTS | ||
4357 | * bit2: CP leave channel qith Quiet | ||
4358 | * bit3: slotted mode | ||
4359 | * 1 - work in slotted mode | ||
4360 | * 0 - work in non slotted mode | ||
4361 | * bit4: filter beacon notification | ||
4362 | * bit5: full tx slotted mode. if this flag is set, | ||
4363 | * uCode will perform leaving channel methods in context switch | ||
4364 | * also when working in same channel mode | ||
4365 | * @num_slots: 1 - 10 | ||
4366 | */ | ||
4367 | struct iwl_wipan_params_cmd { | ||
4368 | __le16 flags; | ||
4369 | u8 reserved; | ||
4370 | u8 num_slots; | ||
4371 | struct iwl_wipan_slot slots[10]; | ||
4372 | } __packed; | ||
4373 | |||
4374 | /* | ||
4375 | * REPLY_WIPAN_P2P_CHANNEL_SWITCH = 0xb9 | ||
4376 | * | ||
4377 | * TODO: Figure out what this is used for, | ||
4378 | * it can only switch between 2.4 GHz | ||
4379 | * channels!! | ||
4380 | */ | ||
4381 | |||
4382 | struct iwl_wipan_p2p_channel_switch_cmd { | ||
4383 | __le16 channel; | ||
4384 | __le16 reserved; | ||
4385 | }; | ||
4386 | |||
4387 | /* | ||
4388 | * REPLY_WIPAN_NOA_NOTIFICATION = 0xbc | ||
4389 | * | ||
4390 | * This is used by the device to notify us of the | ||
4391 | * NoA schedule it determined so we can forward it | ||
4392 | * to userspace for inclusion in probe responses. | ||
4393 | * | ||
4394 | * In beacons, the NoA schedule is simply appended | ||
4395 | * to the frame we give the device. | ||
4396 | */ | ||
4397 | |||
4398 | struct iwl_wipan_noa_descriptor { | ||
4399 | u8 count; | ||
4400 | __le32 duration; | ||
4401 | __le32 interval; | ||
4402 | __le32 starttime; | ||
4403 | } __packed; | ||
4404 | |||
4405 | struct iwl_wipan_noa_attribute { | ||
4406 | u8 id; | ||
4407 | __le16 length; | ||
4408 | u8 index; | ||
4409 | u8 ct_window; | ||
4410 | struct iwl_wipan_noa_descriptor descr0, descr1; | ||
4411 | u8 reserved; | ||
4412 | } __packed; | ||
4413 | |||
4414 | struct iwl_wipan_noa_notification { | ||
4415 | u32 noa_active; | ||
4416 | struct iwl_wipan_noa_attribute noa_attribute; | ||
4417 | } __packed; | ||
4418 | |||
4013 | #endif /* __iwl_commands_h__ */ | 4419 | #endif /* __iwl_commands_h__ */ |