aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-commands.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-commands.h')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-commands.h297
1 files changed, 280 insertions, 17 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-commands.h b/drivers/net/wireless/iwlwifi/iwl-commands.h
index 4afaf773aeac..e91507531923 100644
--- a/drivers/net/wireless/iwlwifi/iwl-commands.h
+++ b/drivers/net/wireless/iwlwifi/iwl-commands.h
@@ -109,11 +109,12 @@ enum {
109 REPLY_TX_LINK_QUALITY_CMD = 0x4e, /* 4965 only */ 109 REPLY_TX_LINK_QUALITY_CMD = 0x4e, /* 4965 only */
110 110
111 /* WiMAX coexistence */ 111 /* WiMAX coexistence */
112 COEX_PRIORITY_TABLE_CMD = 0x5a, /*5000 only */ 112 COEX_PRIORITY_TABLE_CMD = 0x5a, /* for 5000 series and up */
113 COEX_MEDIUM_NOTIFICATION = 0x5b, 113 COEX_MEDIUM_NOTIFICATION = 0x5b,
114 COEX_EVENT_CMD = 0x5c, 114 COEX_EVENT_CMD = 0x5c,
115 115
116 /* Calibration */ 116 /* Calibration */
117 TEMPERATURE_NOTIFICATION = 0x62,
117 CALIBRATION_CFG_CMD = 0x65, 118 CALIBRATION_CFG_CMD = 0x65,
118 CALIBRATION_RES_NOTIFICATION = 0x66, 119 CALIBRATION_RES_NOTIFICATION = 0x66,
119 CALIBRATION_COMPLETE_NOTIFICATION = 0x67, 120 CALIBRATION_COMPLETE_NOTIFICATION = 0x67,
@@ -148,7 +149,7 @@ enum {
148 QUIET_NOTIFICATION = 0x96, /* not used */ 149 QUIET_NOTIFICATION = 0x96, /* not used */
149 REPLY_TX_PWR_TABLE_CMD = 0x97, 150 REPLY_TX_PWR_TABLE_CMD = 0x97,
150 REPLY_TX_POWER_DBM_CMD_V1 = 0x98, /* old version of API */ 151 REPLY_TX_POWER_DBM_CMD_V1 = 0x98, /* old version of API */
151 TX_ANT_CONFIGURATION_CMD = 0x98, /* not used */ 152 TX_ANT_CONFIGURATION_CMD = 0x98,
152 MEASURE_ABORT_NOTIFICATION = 0x99, /* not used */ 153 MEASURE_ABORT_NOTIFICATION = 0x99, /* not used */
153 154
154 /* Bluetooth device coexistence config command */ 155 /* Bluetooth device coexistence config command */
@@ -353,6 +354,9 @@ struct iwl3945_power_per_rate {
353#define POWER_TABLE_NUM_HT_OFDM_ENTRIES 32 354#define POWER_TABLE_NUM_HT_OFDM_ENTRIES 32
354#define POWER_TABLE_CCK_ENTRY 32 355#define POWER_TABLE_CCK_ENTRY 32
355 356
357#define IWL_PWR_NUM_HT_OFDM_ENTRIES 24
358#define IWL_PWR_CCK_ENTRIES 2
359
356/** 360/**
357 * union iwl4965_tx_power_dual_stream 361 * union iwl4965_tx_power_dual_stream
358 * 362 *
@@ -411,6 +415,16 @@ struct iwl5000_tx_power_dbm_cmd {
411 u8 reserved; 415 u8 reserved;
412} __attribute__ ((packed)); 416} __attribute__ ((packed));
413 417
418/**
419 * Command TX_ANT_CONFIGURATION_CMD = 0x98
420 * This command is used to configure valid Tx antenna.
421 * By default uCode concludes the valid antenna according to the radio flavor.
422 * This command enables the driver to override/modify this conclusion.
423 */
424struct iwl_tx_ant_config_cmd {
425 __le32 valid;
426} __attribute__ ((packed));
427
414/****************************************************************************** 428/******************************************************************************
415 * (0a) 429 * (0a)
416 * Alive and Error Commands & Responses: 430 * Alive and Error Commands & Responses:
@@ -793,7 +807,7 @@ struct iwl3945_channel_switch_cmd {
793 struct iwl3945_power_per_rate power[IWL_MAX_RATES]; 807 struct iwl3945_power_per_rate power[IWL_MAX_RATES];
794} __attribute__ ((packed)); 808} __attribute__ ((packed));
795 809
796struct iwl_channel_switch_cmd { 810struct iwl4965_channel_switch_cmd {
797 u8 band; 811 u8 band;
798 u8 expect_beacon; 812 u8 expect_beacon;
799 __le16 channel; 813 __le16 channel;
@@ -803,6 +817,48 @@ struct iwl_channel_switch_cmd {
803 struct iwl4965_tx_power_db tx_power; 817 struct iwl4965_tx_power_db tx_power;
804} __attribute__ ((packed)); 818} __attribute__ ((packed));
805 819
820/**
821 * struct iwl5000_channel_switch_cmd
822 * @band: 0- 5.2GHz, 1- 2.4GHz
823 * @expect_beacon: 0- resume transmits after channel switch
824 * 1- wait for beacon to resume transmits
825 * @channel: new channel number
826 * @rxon_flags: Rx on flags
827 * @rxon_filter_flags: filtering parameters
828 * @switch_time: switch time in extended beacon format
829 * @reserved: reserved bytes
830 */
831struct iwl5000_channel_switch_cmd {
832 u8 band;
833 u8 expect_beacon;
834 __le16 channel;
835 __le32 rxon_flags;
836 __le32 rxon_filter_flags;
837 __le32 switch_time;
838 __le32 reserved[2][IWL_PWR_NUM_HT_OFDM_ENTRIES + IWL_PWR_CCK_ENTRIES];
839} __attribute__ ((packed));
840
841/**
842 * struct iwl6000_channel_switch_cmd
843 * @band: 0- 5.2GHz, 1- 2.4GHz
844 * @expect_beacon: 0- resume transmits after channel switch
845 * 1- wait for beacon to resume transmits
846 * @channel: new channel number
847 * @rxon_flags: Rx on flags
848 * @rxon_filter_flags: filtering parameters
849 * @switch_time: switch time in extended beacon format
850 * @reserved: reserved bytes
851 */
852struct iwl6000_channel_switch_cmd {
853 u8 band;
854 u8 expect_beacon;
855 __le16 channel;
856 __le32 rxon_flags;
857 __le32 rxon_filter_flags;
858 __le32 switch_time;
859 __le32 reserved[3][IWL_PWR_NUM_HT_OFDM_ENTRIES + IWL_PWR_CCK_ENTRIES];
860} __attribute__ ((packed));
861
806/* 862/*
807 * CHANNEL_SWITCH_NOTIFICATION = 0x73 (notification only, not a command) 863 * CHANNEL_SWITCH_NOTIFICATION = 0x73 (notification only, not a command)
808 */ 864 */
@@ -921,6 +977,7 @@ struct iwl_qosparam_cmd {
921#define STA_MODIFY_TX_RATE_MSK 0x04 977#define STA_MODIFY_TX_RATE_MSK 0x04
922#define STA_MODIFY_ADDBA_TID_MSK 0x08 978#define STA_MODIFY_ADDBA_TID_MSK 0x08
923#define STA_MODIFY_DELBA_TID_MSK 0x10 979#define STA_MODIFY_DELBA_TID_MSK 0x10
980#define STA_MODIFY_SLEEP_TX_COUNT_MSK 0x20
924 981
925/* Receiver address (actually, Rx station's index into station table), 982/* Receiver address (actually, Rx station's index into station table),
926 * combined with Traffic ID (QOS priority), in format used by Tx Scheduler */ 983 * combined with Traffic ID (QOS priority), in format used by Tx Scheduler */
@@ -1051,7 +1108,14 @@ struct iwl4965_addsta_cmd {
1051 * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */ 1108 * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */
1052 __le16 add_immediate_ba_ssn; 1109 __le16 add_immediate_ba_ssn;
1053 1110
1054 __le32 reserved2; 1111 /*
1112 * Number of packets OK to transmit to station even though
1113 * it is asleep -- used to synchronise PS-poll and u-APSD
1114 * responses while ucode keeps track of STA sleep state.
1115 */
1116 __le16 sleep_tx_count;
1117
1118 __le16 reserved2;
1055} __attribute__ ((packed)); 1119} __attribute__ ((packed));
1056 1120
1057/* 5000 */ 1121/* 5000 */
@@ -1082,7 +1146,14 @@ struct iwl_addsta_cmd {
1082 * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */ 1146 * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */
1083 __le16 add_immediate_ba_ssn; 1147 __le16 add_immediate_ba_ssn;
1084 1148
1085 __le32 reserved2; 1149 /*
1150 * Number of packets OK to transmit to station even though
1151 * it is asleep -- used to synchronise PS-poll and u-APSD
1152 * responses while ucode keeps track of STA sleep state.
1153 */
1154 __le16 sleep_tx_count;
1155
1156 __le16 reserved2;
1086} __attribute__ ((packed)); 1157} __attribute__ ((packed));
1087 1158
1088 1159
@@ -1634,6 +1705,21 @@ enum {
1634 TX_ABORT_REQUIRED_MSK = 0x80000000, /* bits 31:31 */ 1705 TX_ABORT_REQUIRED_MSK = 0x80000000, /* bits 31:31 */
1635}; 1706};
1636 1707
1708static inline u32 iwl_tx_status_to_mac80211(u32 status)
1709{
1710 status &= TX_STATUS_MSK;
1711
1712 switch (status) {
1713 case TX_STATUS_SUCCESS:
1714 case TX_STATUS_DIRECT_DONE:
1715 return IEEE80211_TX_STAT_ACK;
1716 case TX_STATUS_FAIL_DEST_PS:
1717 return IEEE80211_TX_STAT_TX_FILTERED;
1718 default:
1719 return 0;
1720 }
1721}
1722
1637static inline bool iwl_is_tx_success(u32 status) 1723static inline bool iwl_is_tx_success(u32 status)
1638{ 1724{
1639 status &= TX_STATUS_MSK; 1725 status &= TX_STATUS_MSK;
@@ -2162,6 +2248,19 @@ struct iwl_link_quality_cmd {
2162 __le32 reserved2; 2248 __le32 reserved2;
2163} __attribute__ ((packed)); 2249} __attribute__ ((packed));
2164 2250
2251#define BT_COEX_DISABLE (0x0)
2252#define BT_COEX_MODE_2W (0x1)
2253#define BT_COEX_MODE_3W (0x2)
2254#define BT_COEX_MODE_4W (0x3)
2255
2256#define BT_LEAD_TIME_MIN (0x0)
2257#define BT_LEAD_TIME_DEF (0x1E)
2258#define BT_LEAD_TIME_MAX (0xFF)
2259
2260#define BT_MAX_KILL_MIN (0x1)
2261#define BT_MAX_KILL_DEF (0x5)
2262#define BT_MAX_KILL_MAX (0xFF)
2263
2165/* 2264/*
2166 * REPLY_BT_CONFIG = 0x9b (command, has simple generic response) 2265 * REPLY_BT_CONFIG = 0x9b (command, has simple generic response)
2167 * 2266 *
@@ -2497,9 +2596,10 @@ struct iwl_scan_channel {
2497/** 2596/**
2498 * struct iwl_ssid_ie - directed scan network information element 2597 * struct iwl_ssid_ie - directed scan network information element
2499 * 2598 *
2500 * Up to 4 of these may appear in REPLY_SCAN_CMD, selected by "type" field 2599 * Up to 20 of these may appear in REPLY_SCAN_CMD (Note: Only 4 are in
2501 * in struct iwl_scan_channel; each channel may select different ssids from 2600 * 3945 SCAN api), selected by "type" bit field in struct iwl_scan_channel;
2502 * among the 4 entries. SSID IEs get transmitted in reverse order of entry. 2601 * each channel may select different ssids from among the 20 (4) entries.
2602 * SSID IEs get transmitted in reverse order of entry.
2503 */ 2603 */
2504struct iwl_ssid_ie { 2604struct iwl_ssid_ie {
2505 u8 id; 2605 u8 id;
@@ -3001,6 +3101,10 @@ struct statistics_general {
3001 __le32 reserved3; 3101 __le32 reserved3;
3002} __attribute__ ((packed)); 3102} __attribute__ ((packed));
3003 3103
3104#define UCODE_STATISTICS_CLEAR_MSK (0x1 << 0)
3105#define UCODE_STATISTICS_FREQUENCY_MSK (0x1 << 1)
3106#define UCODE_STATISTICS_NARROW_BAND_MSK (0x1 << 2)
3107
3004/* 3108/*
3005 * REPLY_STATISTICS_CMD = 0x9c, 3109 * REPLY_STATISTICS_CMD = 0x9c,
3006 * 3945 and 4965 identical. 3110 * 3945 and 4965 identical.
@@ -3237,12 +3341,6 @@ struct iwl_missed_beacon_notif {
3237 * Lower values mean higher energy; this means making sure that the value 3341 * Lower values mean higher energy; this means making sure that the value
3238 * in HD_MIN_ENERGY_CCK_DET_INDEX is at or *above* "Max cck energy". 3342 * in HD_MIN_ENERGY_CCK_DET_INDEX is at or *above* "Max cck energy".
3239 * 3343 *
3240 * Driver should set the following entries to fixed values:
3241 *
3242 * HD_MIN_ENERGY_OFDM_DET_INDEX 100
3243 * HD_BARKER_CORR_TH_ADD_MIN_INDEX 190
3244 * HD_BARKER_CORR_TH_ADD_MIN_MRC_INDEX 390
3245 * HD_OFDM_ENERGY_TH_IN_INDEX 62
3246 */ 3344 */
3247 3345
3248/* 3346/*
@@ -3440,30 +3538,134 @@ struct iwl_led_cmd {
3440} __attribute__ ((packed)); 3538} __attribute__ ((packed));
3441 3539
3442/* 3540/*
3443 * Coexistence WIFI/WIMAX Command 3541 * station priority table entries
3444 * COEX_PRIORITY_TABLE_CMD = 0x5a 3542 * also used as potential "events" value for both
3445 * 3543 * COEX_MEDIUM_NOTIFICATION and COEX_EVENT_CMD
3544 */
3545
3546/*
3547 * COEX events entry flag masks
3548 * RP - Requested Priority
3549 * WP - Win Medium Priority: priority assigned when the contention has been won
3550 */
3551#define COEX_EVT_FLAG_MEDIUM_FREE_NTFY_FLG (0x1)
3552#define COEX_EVT_FLAG_MEDIUM_ACTV_NTFY_FLG (0x2)
3553#define COEX_EVT_FLAG_DELAY_MEDIUM_FREE_NTFY_FLG (0x4)
3554
3555#define COEX_CU_UNASSOC_IDLE_RP 4
3556#define COEX_CU_UNASSOC_MANUAL_SCAN_RP 4
3557#define COEX_CU_UNASSOC_AUTO_SCAN_RP 4
3558#define COEX_CU_CALIBRATION_RP 4
3559#define COEX_CU_PERIODIC_CALIBRATION_RP 4
3560#define COEX_CU_CONNECTION_ESTAB_RP 4
3561#define COEX_CU_ASSOCIATED_IDLE_RP 4
3562#define COEX_CU_ASSOC_MANUAL_SCAN_RP 4
3563#define COEX_CU_ASSOC_AUTO_SCAN_RP 4
3564#define COEX_CU_ASSOC_ACTIVE_LEVEL_RP 4
3565#define COEX_CU_RF_ON_RP 6
3566#define COEX_CU_RF_OFF_RP 4
3567#define COEX_CU_STAND_ALONE_DEBUG_RP 6
3568#define COEX_CU_IPAN_ASSOC_LEVEL_RP 4
3569#define COEX_CU_RSRVD1_RP 4
3570#define COEX_CU_RSRVD2_RP 4
3571
3572#define COEX_CU_UNASSOC_IDLE_WP 3
3573#define COEX_CU_UNASSOC_MANUAL_SCAN_WP 3
3574#define COEX_CU_UNASSOC_AUTO_SCAN_WP 3
3575#define COEX_CU_CALIBRATION_WP 3
3576#define COEX_CU_PERIODIC_CALIBRATION_WP 3
3577#define COEX_CU_CONNECTION_ESTAB_WP 3
3578#define COEX_CU_ASSOCIATED_IDLE_WP 3
3579#define COEX_CU_ASSOC_MANUAL_SCAN_WP 3
3580#define COEX_CU_ASSOC_AUTO_SCAN_WP 3
3581#define COEX_CU_ASSOC_ACTIVE_LEVEL_WP 3
3582#define COEX_CU_RF_ON_WP 3
3583#define COEX_CU_RF_OFF_WP 3
3584#define COEX_CU_STAND_ALONE_DEBUG_WP 6
3585#define COEX_CU_IPAN_ASSOC_LEVEL_WP 3
3586#define COEX_CU_RSRVD1_WP 3
3587#define COEX_CU_RSRVD2_WP 3
3588
3589#define COEX_UNASSOC_IDLE_FLAGS 0
3590#define COEX_UNASSOC_MANUAL_SCAN_FLAGS \
3591 (COEX_EVT_FLAG_MEDIUM_FREE_NTFY_FLG | \
3592 COEX_EVT_FLAG_MEDIUM_ACTV_NTFY_FLG)
3593#define COEX_UNASSOC_AUTO_SCAN_FLAGS \
3594 (COEX_EVT_FLAG_MEDIUM_FREE_NTFY_FLG | \
3595 COEX_EVT_FLAG_MEDIUM_ACTV_NTFY_FLG)
3596#define COEX_CALIBRATION_FLAGS \
3597 (COEX_EVT_FLAG_MEDIUM_FREE_NTFY_FLG | \
3598 COEX_EVT_FLAG_MEDIUM_ACTV_NTFY_FLG)
3599#define COEX_PERIODIC_CALIBRATION_FLAGS 0
3600/*
3601 * COEX_CONNECTION_ESTAB:
3602 * we need DELAY_MEDIUM_FREE_NTFY to let WiMAX disconnect from network.
3603 */
3604#define COEX_CONNECTION_ESTAB_FLAGS \
3605 (COEX_EVT_FLAG_MEDIUM_FREE_NTFY_FLG | \
3606 COEX_EVT_FLAG_MEDIUM_ACTV_NTFY_FLG | \
3607 COEX_EVT_FLAG_DELAY_MEDIUM_FREE_NTFY_FLG)
3608#define COEX_ASSOCIATED_IDLE_FLAGS 0
3609#define COEX_ASSOC_MANUAL_SCAN_FLAGS \
3610 (COEX_EVT_FLAG_MEDIUM_FREE_NTFY_FLG | \
3611 COEX_EVT_FLAG_MEDIUM_ACTV_NTFY_FLG)
3612#define COEX_ASSOC_AUTO_SCAN_FLAGS \
3613 (COEX_EVT_FLAG_MEDIUM_FREE_NTFY_FLG | \
3614 COEX_EVT_FLAG_MEDIUM_ACTV_NTFY_FLG)
3615#define COEX_ASSOC_ACTIVE_LEVEL_FLAGS 0
3616#define COEX_RF_ON_FLAGS 0
3617#define COEX_RF_OFF_FLAGS 0
3618#define COEX_STAND_ALONE_DEBUG_FLAGS \
3619 (COEX_EVT_FLAG_MEDIUM_FREE_NTFY_FLG | \
3620 COEX_EVT_FLAG_MEDIUM_ACTV_NTFY_FLG)
3621#define COEX_IPAN_ASSOC_LEVEL_FLAGS \
3622 (COEX_EVT_FLAG_MEDIUM_FREE_NTFY_FLG | \
3623 COEX_EVT_FLAG_MEDIUM_ACTV_NTFY_FLG | \
3624 COEX_EVT_FLAG_DELAY_MEDIUM_FREE_NTFY_FLG)
3625#define COEX_RSRVD1_FLAGS 0
3626#define COEX_RSRVD2_FLAGS 0
3627/*
3628 * COEX_CU_RF_ON is the event wrapping all radio ownership.
3629 * We need DELAY_MEDIUM_FREE_NTFY to let WiMAX disconnect from network.
3446 */ 3630 */
3631#define COEX_CU_RF_ON_FLAGS \
3632 (COEX_EVT_FLAG_MEDIUM_FREE_NTFY_FLG | \
3633 COEX_EVT_FLAG_MEDIUM_ACTV_NTFY_FLG | \
3634 COEX_EVT_FLAG_DELAY_MEDIUM_FREE_NTFY_FLG)
3635
3636
3447enum { 3637enum {
3638 /* un-association part */
3448 COEX_UNASSOC_IDLE = 0, 3639 COEX_UNASSOC_IDLE = 0,
3449 COEX_UNASSOC_MANUAL_SCAN = 1, 3640 COEX_UNASSOC_MANUAL_SCAN = 1,
3450 COEX_UNASSOC_AUTO_SCAN = 2, 3641 COEX_UNASSOC_AUTO_SCAN = 2,
3642 /* calibration */
3451 COEX_CALIBRATION = 3, 3643 COEX_CALIBRATION = 3,
3452 COEX_PERIODIC_CALIBRATION = 4, 3644 COEX_PERIODIC_CALIBRATION = 4,
3645 /* connection */
3453 COEX_CONNECTION_ESTAB = 5, 3646 COEX_CONNECTION_ESTAB = 5,
3647 /* association part */
3454 COEX_ASSOCIATED_IDLE = 6, 3648 COEX_ASSOCIATED_IDLE = 6,
3455 COEX_ASSOC_MANUAL_SCAN = 7, 3649 COEX_ASSOC_MANUAL_SCAN = 7,
3456 COEX_ASSOC_AUTO_SCAN = 8, 3650 COEX_ASSOC_AUTO_SCAN = 8,
3457 COEX_ASSOC_ACTIVE_LEVEL = 9, 3651 COEX_ASSOC_ACTIVE_LEVEL = 9,
3652 /* RF ON/OFF */
3458 COEX_RF_ON = 10, 3653 COEX_RF_ON = 10,
3459 COEX_RF_OFF = 11, 3654 COEX_RF_OFF = 11,
3460 COEX_STAND_ALONE_DEBUG = 12, 3655 COEX_STAND_ALONE_DEBUG = 12,
3656 /* IPAN */
3461 COEX_IPAN_ASSOC_LEVEL = 13, 3657 COEX_IPAN_ASSOC_LEVEL = 13,
3658 /* reserved */
3462 COEX_RSRVD1 = 14, 3659 COEX_RSRVD1 = 14,
3463 COEX_RSRVD2 = 15, 3660 COEX_RSRVD2 = 15,
3464 COEX_NUM_OF_EVENTS = 16 3661 COEX_NUM_OF_EVENTS = 16
3465}; 3662};
3466 3663
3664/*
3665 * Coexistence WIFI/WIMAX Command
3666 * COEX_PRIORITY_TABLE_CMD = 0x5a
3667 *
3668 */
3467struct iwl_wimax_coex_event_entry { 3669struct iwl_wimax_coex_event_entry {
3468 u8 request_prio; 3670 u8 request_prio;
3469 u8 win_medium_prio; 3671 u8 win_medium_prio;
@@ -3488,6 +3690,55 @@ struct iwl_wimax_coex_cmd {
3488 struct iwl_wimax_coex_event_entry sta_prio[COEX_NUM_OF_EVENTS]; 3690 struct iwl_wimax_coex_event_entry sta_prio[COEX_NUM_OF_EVENTS];
3489} __attribute__ ((packed)); 3691} __attribute__ ((packed));
3490 3692
3693/*
3694 * Coexistence MEDIUM NOTIFICATION
3695 * COEX_MEDIUM_NOTIFICATION = 0x5b
3696 *
3697 * notification from uCode to host to indicate medium changes
3698 *
3699 */
3700/*
3701 * status field
3702 * bit 0 - 2: medium status
3703 * bit 3: medium change indication
3704 * bit 4 - 31: reserved
3705 */
3706/* status option values, (0 - 2 bits) */
3707#define COEX_MEDIUM_BUSY (0x0) /* radio belongs to WiMAX */
3708#define COEX_MEDIUM_ACTIVE (0x1) /* radio belongs to WiFi */
3709#define COEX_MEDIUM_PRE_RELEASE (0x2) /* received radio release */
3710#define COEX_MEDIUM_MSK (0x7)
3711
3712/* send notification status (1 bit) */
3713#define COEX_MEDIUM_CHANGED (0x8)
3714#define COEX_MEDIUM_CHANGED_MSK (0x8)
3715#define COEX_MEDIUM_SHIFT (3)
3716
3717struct iwl_coex_medium_notification {
3718 __le32 status;
3719 __le32 events;
3720} __attribute__ ((packed));
3721
3722/*
3723 * Coexistence EVENT Command
3724 * COEX_EVENT_CMD = 0x5c
3725 *
3726 * send from host to uCode for coex event request.
3727 */
3728/* flags options */
3729#define COEX_EVENT_REQUEST_MSK (0x1)
3730
3731struct iwl_coex_event_cmd {
3732 u8 flags;
3733 u8 event;
3734 __le16 reserved;
3735} __attribute__ ((packed));
3736
3737struct iwl_coex_event_resp {
3738 __le32 status;
3739} __attribute__ ((packed));
3740
3741
3491/****************************************************************************** 3742/******************************************************************************
3492 * (13) 3743 * (13)
3493 * Union of all expected notifications/responses: 3744 * Union of all expected notifications/responses:
@@ -3495,6 +3746,16 @@ struct iwl_wimax_coex_cmd {
3495 *****************************************************************************/ 3746 *****************************************************************************/
3496 3747
3497struct iwl_rx_packet { 3748struct iwl_rx_packet {
3749 /*
3750 * The first 4 bytes of the RX frame header contain both the RX frame
3751 * size and some flags.
3752 * Bit fields:
3753 * 31: flag flush RB request
3754 * 30: flag ignore TC (terminal counter) request
3755 * 29: flag fast IRQ request
3756 * 28-14: Reserved
3757 * 13-00: RX frame size
3758 */
3498 __le32 len_n_flags; 3759 __le32 len_n_flags;
3499 struct iwl_cmd_header hdr; 3760 struct iwl_cmd_header hdr;
3500 union { 3761 union {
@@ -3514,6 +3775,8 @@ struct iwl_rx_packet {
3514 struct iwl_notif_statistics stats; 3775 struct iwl_notif_statistics stats;
3515 struct iwl_compressed_ba_resp compressed_ba; 3776 struct iwl_compressed_ba_resp compressed_ba;
3516 struct iwl_missed_beacon_notif missed_beacon; 3777 struct iwl_missed_beacon_notif missed_beacon;
3778 struct iwl_coex_medium_notification coex_medium_notif;
3779 struct iwl_coex_event_resp coex_event;
3517 __le32 status; 3780 __le32 status;
3518 u8 raw[0]; 3781 u8 raw[0];
3519 } u; 3782 } u;