Lines Matching +full:sync +full:- +full:on +full:- +full:green +full:- +full:active

10  * Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
31 * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
35 * Copyright(c) 2005 - 2014 Intel Corporation. All rights reserved.
59 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
73 * BEGIN iwl-csr.h
81 * low power states due to driver-invoked device resets
82 * (e.g. IWM_CSR_RESET_REG_FLAG_SW_RESET) or uCode-driven power-saving modes.
95 #define IWM_CSR_INT_COALESCING (0x004) /* accum ints, 32-usec units */
109 * 31-16: Reserved
110 * 15-4: Type of device: see IWM_CSR_HW_REV_TYPE_xxx definitions
111 * 3-2: Revision step: 0 = A, 1 = B, 2 = C, 3 = D
112 * 1-0: "Dash" (-) value, as in A-1, etc.
117 * EEPROM and OTP (one-time-programmable) memory reads
131 * UCODE-DRIVER GP (general purpose) mailbox registers.
150 /* Analog phase-lock-loop configuration */
158 * 3-2: 0 = A, 1 = B, 2 = C, 3 = D step
159 * 1-0: "Dash" (-) value, as in C-1, etc.
250 * Indicates state of (platform's) hardware RF-Kill switch
251 * 26-24: POWER_SAVE_TYPE
252 * Indicates current power-saving mode:
253 * 000 -- No power saving
254 * 001 -- MAC power-down
255 * 010 -- PHY (radio) power-down
256 * 011 -- Error
257 * 9-6: SYS_CONFIG
258 * Indicates current system configuration, reflecting pins on chip
261 * Indicates MAC is entering a power-saving sleep power-down.
262 * Not a good time to access device-internal resources.
265 * access to device-internal resources. Host must wait for
266 * MAC_CLOCK_READY (and !GOING_TO_SLEEP) before accessing non-CSR
276 * init or post-power-down restore of internal SRAM memory.
279 * Later devices (5xxx/6xxx/1xxx) use non-volatile SRAM, and
342 /* One-time-programmable memory general purpose reg */
343 #define IWM_CSR_OTP_GP_REG_DEVICE_SELECT (0x00010000) /* 0 - EEPROM, 1 - OTP */
344 #define IWM_CSR_OTP_GP_REG_OTP_ACCESS_MODE (0x00020000) /* 0 - absolute, 1 - relative */
360 * UCODE-DRIVER GP (general purpose) mailbox register 1
371 * Host sets this during RF KILL power-down sequence (HW, SW, CT KILL)
379 * uCode sets this when preparing a power-saving power-down.
380 * uCode resets this when power-up is complete and SRAM is sane.
384 * Later devices (5xxx/6xxx/1xxx) use non-volatile SRAM, and
446 /* Write index table - shadow registers */
475 * This status flag is set by the RFH when there is no active RBD fetch from
481 * This status flag is set by the RFH when there is no active transaction from
483 * Once the SRAM to DRAM DMA is active, this flag is immediately turned off.
486 * This status flag is set by the RFH when there is no active transaction from
488 * Once the RXF-to-DRAM DMA is active, this flag is immediately turned off.
500 #define IWM_RFH_RXF_DMA_RB_SIZE_MASK (0x000F0000) /* bits 16-19 */
513 #define IWM_RFH_RXF_DMA_RBDCB_SIZE_MASK (0x00F00000) /* bits 20-23 */
524 #define IWM_RFH_RXF_DMA_MIN_RB_SIZE_MASK (0x03000000) /* bit 24-25 */
529 #define IWM_RFH_DMA_EN_MASK (0xC0000000) /* bits 30-31*/
563 * HBUS (Host-side Bus)
567 * may be powered-down.
584 * data registers auto-increment the address by one dword.
586 * 0-31: memory address within device
602 * 0-15: register address (offset) within device
603 * 24-25: (# bytes - 1) to read or write (e.g. 3 for dword)
650 * Per-Tx-queue write pointer (index, really!)
653 * 0-7: queue write index
654 * 11-8: queue selector
664 * the CSR_INT_COALESCING is an 8 bit register in 32-usec unit
684 /* Those are the masks INSIDE the flags bit-field: */
719 * END iwl-csr.h
723 * BEGIN iwl-fw.h
773 * @IWM_UCODE_TLV_FLAGS_NEWSCAN: new uCode scan behaviour on hidden SSID,
787 * @IWM_UCODE_TLV_FLAGS_P2P_PS: P2P client power save is supported (only on a
821 * @IWM_UCODE_TLV_API_FRAGMENTED_SCAN: This ucode supports active dwell time
828 * (command version 3) that supports per-chain limits
836 * @IWM_UCODE_TLV_API_EXT_SCAN_PRIORITY: scan APIs use 8-level priority
882 * @IWM_UCODE_TLV_CAPA_CNSLDTD_D3_D0_IMG: Consolidated D3-D0 image
888 * @IWM_UCODE_TLV_CAPA_P2P_STANDALONE_UAPSD: support p2p standalone U-APSD
889 * @IWM_UCODE_TLV_CAPA_BT_COEX_PLCR: enabled BT Coex packet level co-running
892 * IWM_UCODE_TLV_API_WIFI_MCC_UPDATE. When either is set, multi-source LAR
901 * @IWM_UCODE_TLV_CAPA_BT_MPLUT_SUPPORT: supports bt-coex Multi-priority LUT
902 * @IWM_UCODE_TLV_CAPA_BEACON_ANT_SELECTION: firmware will decide on what
907 * @IWM_UCODE_TLV_CAPA_CT_KILL_BY_FW: firmware responsible for CT-kill
1016 * struct iwm_fw_cipher_scheme - a cipher scheme supported by FW.
1042 * struct iwm_fw_cscheme_list - a cipher scheme list
1052 * END iwl-fw.h
1056 * BEGIN iwl-fw-file.h
1191 * END iwl-fw-file.h
1195 * BEGIN iwl-prph.h
1277 * (cf. iwl5000_default_queue_to_tx_fifo in iwl-5000.c):
1279 * 0 -- EDCA BK (background) frames, lowest priority
1280 * 1 -- EDCA BE (best effort) frames, normal priority
1281 * 2 -- EDCA VI (video) frames, higher priority
1282 * 3 -- EDCA VO (voice) and management frames, highest priority
1283 * 4 -- unused
1284 * 5 -- unused
1285 * 6 -- unused
1286 * 7 -- Commands
1288 * Driver should normally map queues 0-6 to Tx DMA/FIFO channels 0-6.
1290 * channels 0-3 to support 11n aggregation via EDCA DMA channels.
1294 * 1) Scheduler-Ack, in which the scheduler automatically supports a
1295 * block-ack (BA) window of up to 64 TFDs. In this mode, each queue
1298 * Quality-Of-Service (QOS) priority, destined for a single station.
1300 * In scheduler-ack mode, the scheduler keeps track of the Tx status of
1303 * automatically processes block-acks received from the receiving STA,
1304 * and reschedules un-acked frames to be retransmitted (successful
1305 * Tx completion may end up being out-of-order).
1311 * 2) FIFO (a.k.a. non-Scheduler-ACK), in which each TFD is processed in order.
1339 * can keep track of at one time when creating block-ack chains of frames.
1340 * Note that "64" matches the number of ack bits in a block-ack packet.
1406 return IWM_SCD_BASE + 0x284 + (chnl - 20) * 4; in IWM_SCD_QUEUE_WRPTR()
1430 * END iwl-prph.h
1434 * BEGIN iwl-fh.h
1449 * Keep-Warm (KW) buffer base address.
1452 * host DRAM powered on (via dummy accesses to DRAM) to maintain low-latency
1454 * from going into a power-savings mode that would cause higher DRAM latency,
1455 * and possible data over/under-runs, before all Tx/Rx is complete.
1459 * automatically invokes keep-warm accesses when normal accesses might not
1463 * 31-0: Keep-warm buffer physical base address [35:4], must be 4K aligned
1471 * Device has 16 base pointer registers, one for each of 16 host-DRAM-resident
1474 * bytes from one another. Each TFD circular buffer in DRAM must be 256-byte
1475 * aligned (address bits 0-7 must be 0).
1480 * 27-0: TFD CB physical base address [35:8], must be 256-byte aligned
1495 return IWM_FH_MEM_CBBC_16_19_LOWER_BOUND + 4 * (chnl - 16); in IWM_FH_MEM_CBBC_QUEUE()
1496 return IWM_FH_MEM_CBBC_20_31_LOWER_BOUND + 4 * (chnl - 20); in IWM_FH_MEM_CBBC_QUEUE()
1522 * 27-0: Receive Buffer physical address bits [35:8], 256-byte aligned
1534 * 31-12: Not used by driver
1535 * 11- 0: Index of last filled Rx buffer descriptor
1544 * available, i.e. one RBD past the tail of the ready-to-fill RBDs within
1560 * driver may process the RB pointed to by RBD 0. Depending on volume of
1574 * Physical base address of 8-byte Rx Status buffer.
1576 * 31-0: Rx status buffer physical base address [35:4], must 16-byte aligned.
1583 * 27-0: RBD CD physical base address [35:8], must be 256-byte aligned.
1590 * 11-0: Index of driver's most recent prepared-to-be-filled RBD, + 1.
1591 * NOTE: For 256-entry circular buffer, use only bits [7:0].
1611 * 31-30: Rx DMA channel enable: '00' off/pause, '01' pause at end of frame,
1613 * 29-24: reserved
1614 * 23-20: # RBDs in circular buffer = 2^value; use "8" for 256 RBDs (normal),
1616 * 19-18: reserved
1617 * 17-16: size of each receive buffer; '00' 4K (normal), '01' 8K,
1619 * 15-14: reserved
1620 * 13-12: IRQ destination; '00' none, '01' host driver (normal operation)
1621 * 11- 4: timeout for closing Rx buffer and interrupting host (units 32 usec)
1623 * 3- 0: reserved
1633 #define IWM_FH_RCSR_CHNL0_RX_CONFIG_RB_TIMEOUT_MSK (0x00000FF0) /* bits 4-11 */
1636 #define IWM_FH_RCSR_CHNL0_RX_CONFIG_RB_SIZE_MSK (0x00030000) /* bits 16-17 */
1637 #define IWM_FH_RCSR_CHNL0_RX_CONFIG_RBDBC_SIZE_MSK (0x00F00000) /* bits 20-23 */
1638 #define IWM_FH_RCSR_CHNL0_RX_CONFIG_DMA_CHNL_EN_MSK (0xC0000000) /* bits 30-31*/
1682 /* TFDB Area - TFDs buffer table */
1705 * 31-30: Tx DMA channel enable: '00' off/pause, '01' pause at end of frame,
1707 * 29- 4: Reserved, set to "0"
1709 * 2- 0: Reserved, set to "0"
1759 * 31-24: 1 = Channel buffers empty (channel 7:0)
1760 * 23-16: 1 = No pending requests (channel 7:0)
1773 * 16-9:Each status bit is for one channel. Indicates that an (Error) ActDMA
1777 * 7-0: Each status bit indicates a channel's TxCredit error. When an error
1794 (IWM_FH_SRVC_LOWER_BOUND + ((_chnl) - 9) * 0x4)
1801 * it is brought from the memory to TX-FIFO
1816 * struct iwm_rb_status - reseve buffer status
1818 * @closed_rb_num [0:11] - Indicates the index of the RB which was closed
1819 * @closed_fr_num [0:11] - Indicates the index of the RX Frame which was closed
1820 * @finished_rb_num [0:11] - Indicates the index of the current RB
1822 * @finished_fr_num [0:11] - Indicates the index of the RX Frame
1851 * every even is unaligned on 16 bit boundary
1852 * @hi_n_len 0-3 [35:32] portion of dma
1853 * 4-15 length of the tx buffer
1866 * @ num_tbs 0-4 number of active tbs
1868 * 6-7 padding (not used)
1874 * contiguous 256 TFDs x 128 bytes-per-TFD = 32 KBytes
1883 * of (4K - 4). The concatenates all of a TFD's buffers into a single
1886 * A maximum of 255 (not 256!) TFDs may be on a queue waiting for Tx.
1898 /* Fixed (non-configurable) rx data from phy */
1903 * @tfd_offset 0-12 - tx command byte count
1904 * 12-16 - station index
1912 * END iwl-fh.h
1916 * BEGIN mvm/fw-api.h
1926 * DQA - Dynamic Queue Allocation -introduction
1929 * to allow dynamic allocation of queues on-demand, rather than allocate them
1931 * per RA/TID, thus allowing an AP - for example - to send BE traffic to STA2
1937 * TXQ #0 - command queue
1938 * TXQ #1 - aux frames
1939 * TXQ #2 - P2P device frames
1940 * TXQ #3 - P2P GO/SoftAP GCAST/BCAST frames
1941 * TXQ #4 - BSS DATA frames queue
1942 * TXQ #5-8 - non-QoS data, QoS no-data, and MGMT frames queue pool
1943 * TXQ #9 - P2P GO/SoftAP probe responses
1944 * TXQ #10-31 - QoS DATA frames queue pool (for Tx aggregation)
1960 /* Reserve 8 DQA Tx queues, from 10 up to 17, for A-MPDU aggregation. */
1963 #define IWM_LAST_AGG_TX_QUEUE (IWM_FIRST_AGG_TX_QUEUE + IWM_MAX_TID_COUNT - 1)
1965 /* legacy non-DQA queues; the legacy command queue uses a different number! */
2048 /* Power - legacy power table command */
2068 /* RF-KILL commands and notifications */
2076 /* Power - new power table command */
2167 * struct iwm_cmd_response - generic response struct for most commands
2183 * struct iwm_reduce_tx_power_cmd - TX power reduction command
2253 * struct iwm_ct_kill_notif - CT-kill entry notification
2264 * struct iwm_temp_report_ths_cmd - set temperature thresholds
2289 * phy db - configure operational ucode
2304 * phy db - Receive phy db chunk after calibrations
2312 /* 7k family NVM HW-Section offset (in words) definitions */
2314 /* 7k family NVM SW-Section offset (in words) definitions */
2320 #define IWM_NVM_CHANNELS 0x1E0 - IWM_NVM_SW_SECTION
2323 #define IWM_XTAL_CALIB (0x316 - IWM_NVM_CALIB_SECTION)
2325 /* 8k family NVM HW-Section offset (in words) definitions */
2332 /* 8k family NVM SW-Section offset (in words) definitions */
2339 /* 8k family NVM REGULATORY -Section offset (in words) definitions */
2347 #define IWM_XTAL_CALIB_8000 (0x316 - IWM_NVM_CALIB_SECTION_8000)
2357 #define IWM_NVM_RF_CFG_DASH_MSK(x) (x & 0x3) /* bits 0-1 */
2358 #define IWM_NVM_RF_CFG_STEP_MSK(x) ((x >> 2) & 0x3) /* bits 2-3 */
2359 #define IWM_NVM_RF_CFG_TYPE_MSK(x) ((x >> 4) & 0x3) /* bits 4-5 */
2360 #define IWM_NVM_RF_CFG_PNUM_MSK(x) ((x >> 6) & 0x3) /* bits 6-7 */
2361 #define IWM_NVM_RF_CFG_TX_ANT_MSK(x) ((x >> 8) & 0xF) /* bits 8-11 */
2362 #define IWM_NVM_RF_CFG_RX_ANT_MSK(x) ((x >> 12) & 0xF) /* bits 12-15 */
2375 * @IWM_NVM_CHANNEL_ACTIVE: active scanning allowed
2415 * struct iwm_nvm_access_cmd_ver2 - Request the device to send an NVM section
2416 * @op_code: 0 - read, 1 - write
2421 * @data: if write operation, the data to write. On read its empty
2465 * struct iwm_fw_paging_cmd - paging layout
2484 * struct iwm_nvm_access_resp_ver2 - response to IWM_NVM_ACCESS_CMD
2489 * @data: if read operation, the data returned. Empty on write.
2578 * struct iwm_soc_configuration_cmd - Set device stabilization latency
2608 * struct iwm_error_resp - FW error indication
2629 * struct iwm_fw_cmd_version - firmware command version entry
2660 /* Possible actions on PHYs, MACs and Bindings */
2694 /* WiDi Sync Events */
2702 /* Time event - defines for command API v1 */
2729 /* Time Event dependencies: none, on another TE, or in a specific time */
2738 * @IWM_TE_V1_NOTIF_HOST_EVENT_START: request/receive notification on event start
2739 * @IWM_TE_V1_NOTIF_HOST_EVENT_END:request/receive notification on event end
2742 * @IWM_TE_V1_NOTIF_HOST_FRAG_START: request/receive notification on frag start
2743 * @IWM_TE_V1_NOTIF_HOST_FRAG_END:request/receive notification on frag end
2765 /* Time event - defines for command API */
2768 * DOC: Time Events - what is it?
2771 * of the device on the channel. Since the fw supports multiple channels
2773 * In order to make sure that the fw is on a specific channel at a certain time
2797 * Is there an end-time for the event?
2838 * @IWM_TE_V2_NOTIF_HOST_EVENT_START: request/receive notification on event start
2839 * @IWM_TE_V2_NOTIF_HOST_EVENT_END:request/receive notification on event end
2842 * @IWM_TE_V2_NOTIF_HOST_FRAG_START: request/receive notification on frag start
2843 * @IWM_TE_V2_NOTIF_HOST_FRAG_END:request/receive notification on frag end
2846 * @IWM_TE_V2_DEP_OTHER: depends on another time event
2847 * @IWM_TE_V2_DEP_TSF: depends on a specific time
2848 * @IWM_TE_V2_EVENT_SOCIOPATHIC: can't co-exist with other events of tha same MAC
2876 * struct iwm_time_event_cmd_api - configuring Time Events
2882 * @id: this field has two meanings, depending on the action:
2888 * @depends_on: the unique ID of the event we depend on (if any)
2894 * on event and/or fragment start and/or end
2916 * struct iwm_time_event_resp - response structure to iwm_time_event_cmd
2930 * struct iwm_time_event_notif - notifications of time event start/stop
2952 * struct iwm_binding_cmd_v1 - configuring bindings
2970 * struct iwm_binding_cmd - configuring bindings
2995 * struct iwm_time_quota_data - configuration of time quota per binding
3008 * struct iwm_time_quota_cmd - configuration of time quota between bindings
3021 * struct iwm_time_quota_data - configuration of time quota per binding
3036 * struct iwm_time_quota_cmd - configuration of time quota between bindings
3038 * Note: on non-CDB the fourth one is the auxilary mac and is essentially zero.
3039 * On CDB the fourth one is a regular binding.
3063 * For VHT - bit-2 marks if the control is lower/upper relative to center-freq
3064 * bits-1:0 mark the distance from the center freq. for 20Mhz, offset is 0.
3095 * struct iwm_fw_channel_info - channel information
3133 /* TODO: fix the value, make it depend on firmware at runtime? */
3138 * struct iwm_phy_context_cmd - config of the PHY context
3214 * struct iwm_rx_phy_info - phy info
3220 * @system_timestamp: GP2 at on air rise
3221 * @timestamp: TSF at on air rise
3222 * @beacon_time_stamp: beacon at on-air rise
3227 * @byte_count: frame's byte-count
3228 * @frame_time: frame's time on the air, based on byte count and frame rate
3230 * @mac_active_msk: what MACs were active when the frame was received
3267 * @IWM_RX_RES_PHY_FLAGS_BAND_24: true if the packet was received on 2.4 band
3271 * @IWM_RX_RES_PHY_FLAGS_ANTENNA: antenna on which the packet was received
3272 * @IWM_RX_RES_PHY_FLAGS_AGG: set if the packet was part of an A-MPDU
3418 * struct iwm_radio_version_notif - information on the radio version
3439 * struct iwm_radio_version_notif - information on the radio version
3448 * struct iwm_missed_beacons_notif - information on missed beacons
3466 * struct iwm_mfuart_load_notif - mfuart image version & status
3481 * struct iwm_set_calib_default_cmd - set default value for calibration.
3497 * struct iwm_mcast_filter_cmd - configure multicast filter.
3500 * to identify network interface adopted in host-device IF.
3547 * count the number of times we have to re-tune
3560 uint32_t non_channel_beacons; /* beacons with our bss id but not on
3792 * @full_on_timeouts: timer values for each scenario in full on state.
3802 * END mvm/fw-api.h
3806 * BEGIN mvm/fw-api-mac.h
3845 * @IWM_FW_MAC_TYPE_PIBSS: Pseudo-IBSS
3883 * struct iwm_mac_data_ap - configuration data for AP MAC context
3891 * NOTE: obsolete from VER2 and on
3906 * struct iwm_mac_data_ibss - configuration data for IBSS MAC context
3922 * struct iwm_mac_data_sta - configuration data for station MAC context
3947 * struct iwm_mac_data_go - configuration data for P2P GO MAC context
3960 * struct iwm_mac_data_p2p_sta - configuration data for P2P client MAC context
3971 * struct iwm_mac_data_pibss - Pseudo IBSS config data
3979 * struct iwm_mac_data_p2p_dev - configuration data for the P2P Device MAC
3981 * @is_disc_extended: if set to true, P2P Device discoverability is enabled on
3983 * device is discoverable and there is an active GO. Note that setting this
3985 * effect on the platform power, as this setting opens the Rx filters on
4028 * struct iwm_ac_qos - QOS timing params for IWM_MAC_CONTEXT_CMD
4030 * Should be a power-of-2, minus 1. Device's default is 0x0f.
4032 * Should be a power-of-2, minus 1. Device's default is 0x3f.
4054 * struct iwm_mac_ctx_cmd - command structure to configure MAC contexts
4121 * END mvm/fw-api-mac.h
4125 * BEGIN mvm/fw-api-power.h
4133 * @IWM_LTR_CFG_FLAG_HW_DIS_ON_SHADOW_REG_ACCESS: allow LTR change on shadow
4135 * @IWM_LTR_CFG_FLAG_HW_EN_SHRT_WR_THROUGH: allow LTR msg send on ANY LTR
4137 * @IWM_LTR_CFG_FLAG_HW_DIS_ON_D0_2_D3: allow LTR msg send on transition from
4141 * @IWM_LTR_CFG_FLAG_DENIE_C10_ON_PD: allow going into C10 on PD
4152 * struct iwm_ltr_config_cmd_v1 - configures the LTR
4164 * struct iwm_ltr_config_cmd - configures the LTR
4187 * receiver and transmitter. '0' - does not allow.
4219 * '1' CAM (Continuous Active Mode) is set, power management is disabled.
4226 * struct iwm_device_power_cmd - device wide power command.
4238 * struct iwm_mac_power_cmd - New power command containing uAPSD support
4242 * @keep_alive_seconds: Keep alive period in seconds. Default - 25 sec.
4243 * Minimum allowed:- 3 * DTIM. Keep alive period must be
4247 * PSM transition - legacy PM
4249 * PSM transition - legacy PM
4255 * PSM transition - uAPSD
4257 * PSM transition - uAPSD
4269 * @uapsd_ac_flags: Set trigger-enabled and delivery-enabled indication for
4311 * struct iwm_uapsd_misbehaving_ap_notif - FW sends this notification when
4314 * @sta_id: index of station in uCode's station table - associated AP ID in
4341 * Threshold. Typical energy threshold is -72dBm.
4344 * If the current temperature is above this threshold - Fast filter
4345 * will be used, If the current temperature is below this threshold -
4361 * for a longer period of time then this escape-timeout. Units: Beacons.
4431 * END mvm/fw-api-power.h
4435 * BEGIN mvm/fw-api-rs.h
4545 * The 32-bit value has different layouts in the low 8 bites depending on the
4549 * High-throughput (HT) rate format
4551 * Very High-throughput (VHT) rate format
4576 * High-throughput (HT) rate format for bits 7:0
4578 * 2-0: MCS rate base
4587 * 4-3: 0) Single stream (SISO)
4591 * (bits 7-6 are zero)
4594 * support MCSes above 15/23, and 0-7 have one stream, 8-15 have two
4595 * streams and 16-23 have three streams. We could also support MCS 32
4602 /* Bit 10: (1) Use Green Field preamble */
4609 * Very High-throughput (VHT) rate format for bits 7:0
4611 * 3-0: VHT MCS (0-9)
4612 * 5-4: number of streams - 1:
4618 /* Bit 4-5: (0) SISO, (1) MIMO2 (2) MIMO3 */
4626 * 3-0: 0xD) 6 Mbps
4634 * (bits 7-4 are 0)
4639 * 6-0: 10) 1 Mbps
4649 * Bit 11-12: (0) 20MHz, (1) 40MHz, (2) 80MHz, (3) 160MHz
4663 /* Bit 14-16: Antenna selection (1) Ant A, (2) Ant B, (4) Ant C */
4675 /* Bit 17-18: (0) SS, (1) SS*2 */
4679 /* Bit 19: (0) Beamforming is off, (1) Beamforming is on */
4683 /* Bit 20: (0) ZLF is off, (1) ZLF is on */
4687 /* Bit 24-25: (0) 20MHz (no dup), (1) 2x20MHz, (2) 4x20MHz, 3 8x20MHz */
4707 /* Bit 1-3: LQ command color. Used to match responses to LQ commands */
4711 /* Bit 4-5: Tx RTS BW Signalling
4737 * struct iwm_lq_cmd - link quality command
4749 * @agg_disable_start_th: try-count threshold for starting aggregation.
4750 * If a frame has higher try-count, it should not be selected for
4755 * 2 - 0x3f: maximal number of frames (up to 3f == 63)
4780 * END mvm/fw-api-rs.h
4784 * BEGIN mvm/fw-api-tx.h
4789 * @IWM_TX_CMD_FLG_PROT_REQUIRE: use RTS or CTS-to-self to protect the frame
4802 * Should be set for mgmt, non-QOS data, mcast, bcast and in scan command
4803 * @IWM_TX_CMD_FLG_MORE_FRAG: this frame is non-last MPDU
4815 * @IWM_TX_CMD_FLG_DUR: disable duration overwriting used in PS-Poll Assoc-id
4850 * enum iwm_tx_pm_timeouts - pm timeout values in TX command
4877 * bits 0:2 - security control (IWM_TX_CMD_SEC_*)
4878 * bit 3 - immediate ACK required
4879 * bit 4 - rate is taken from STA table
4880 * bit 5 - frame belongs to BA stream
4881 * bit 6 - immediate BA response expected
4882 * bit 7 - unused
4883 * bits 8:15 - Station ID
4884 * bits 16:31 - rate
4897 * TX command Frame life time in us - to be written in pm_frame_timeout
4905 * TID for non QoS frames - to be written in tid_tspec
4912 * Limits on the retransmissions - to be written in {data,rts}_retry_limit
4921 * enum iwm_tx_offload_assist_flags_pos - set %iwm_tx_cmd offload_assist values
4933 * @TX_CMD_OFFLD_PAD: mark 2-byte pad was inserted after the mac header for
4935 * @TX_CMD_OFFLD_AMSDU: mark TX command is A-MSDU
4946 * struct iwm_tx_cmd - TX command struct to FW
4967 * @driver_txop: duration od EDCA TXOP, in 32-usec units. Set this if not
4975 * + 8-byte MIC (not used for CCM/WEP)
4976 * It does not include post-MAC padding, i.e.,
4978 * Range of len: 14-2342 bytes.
5107 * frames that used block-acknowledge. All frames were transmitted at
5111 * Note that, for aggregation, ACK (block-ack) status is not delivered
5112 * here; block-ack has not been received by the time the device records
5120 * struct iwm_agg_tx_status - per packet TX aggregation status
5128 /* OpenBSD update - convert code to use this */
5140 * bit-7 invalid rate indication
5150 * struct iwm_tx_resp - notifies that fw is TXing a packet
5156 * @initial_rate: for non-agg: rate of the successful Tx. For agg: rate of the
5158 * @wireless_media_time: for non-agg: RTS + CTS + frame tx attempts time + ACK.
5159 * for agg: RTS + CTS + aggregation tx time + block-ack time.
5172 * @status: for non-agg: frame status IWM_TX_STATUS_*
5205 * struct iwm_ba_notif - notifies about reception of BA
5208 * @sta_id: Index of recipient (BA-sending) station in fw's station table
5219 * for Tx-ing then this value will be set to 0 by FW.
5239 * struct iwm_mac_beacon_cmd - beacon template command
5269 * struct iwm_tx_path_flush_cmd -- queue/FIFO flush command
5281 * struct iwl_tx_path_flush_cmd -- queue/FIFO flush command
5293 * iwm_get_scd_ssn - returns the SSN of the SCD
5294 * @tx_resp: the Tx response from the fw (agg or non-agg)
5307 return le32_to_cpup((uint32_t *)&tx_resp->status + in iwm_get_scd_ssn()
5308 tx_resp->frame_count) & 0xfff; in iwm_get_scd_ssn()
5312 * END mvm/fw-api-tx.h
5316 * BEGIN mvm/fw-api-scan.h
5320 * struct iwm_scd_txq_cfg_cmd - New txq hw scheduler config command
5363 #define IWM_SCAN_CHANNEL_NSSIDS(x) (((1 << (x)) - 1) << 1)
5369 * struct iwm_ssid_ie - directed scan network information element
5399 * iwm_scan_schedule_lmac - schedule of scan offload
5411 * iwm_scan_req_tx_cmd - SCAN_REQ_TX_CMD_API_S
5429 * iwm_scan_channel_cfg_lmac - SCAN_CHANNEL_CFG_S_VER2
5430 * @flags: bits 1-20: directed scan to i'th ssid
5432 * @channel_number: channel number 1-13 etc
5433 * @iter_count: scan iteration on this channel
5434 * @iter_interval: interval in seconds between iterations on one channel
5444 * iwm_scan_probe_segment - PROBE_SEGMENT_API_S_VER_1
5453 /* iwm_scan_probe_req - PROBE_REQUEST_FRAME_API_S_VER_2
5466 /* iwl_scan_probe_req - PROBE_REQUEST_FRAME_API_S_VER_v2
5484 /* iwm_scan_channel_opt - CHANNEL_OPTIMIZATION_API_S
5488 * 1 - EBS is disabled.
5489 * 2 - every second scan will be full scan(and so on).
5500 * @IWM_LMAC_SCAN_FLAG_PASSIVE: force passive scan on all channels
5505 * @IWM_LMAC_SCAN_FLAGS_RRM_ENABLED: insert WFA vendor-specific TPC report
5507 * @IWM_LMAC_SCAN_FLAG_EXTENDED_DWELL: use extended dwell time on channels
5509 * @IWM_LMAC_SCAN_FLAG_MATCH: Send match found notification on matches
5526 * iwm_scan_req_lmac - SCAN_REQUEST_CMD_API_S_VER_1
5529 * @active-dwell: dwell time for active channels
5530 * @passive-dwell: dwell time for passive channels
5531 * @fragmented-dwell: dwell time for fragmented passive scan
5540 * @tx_cmd: tx command for active scan; for 2GHz and for 5GHz
5541 * @direct_scan: list of SSIDs for directed active scan
5578 * iwm_scan_offload_complete - PERIODIC_SCAN_COMPLETE_NTF_API_S_VER_2
5595 * struct iwm_scan_results_notif - scan results for one channel -
5616 * iwm_scan_offload_blacklist - IWM_SCAN_OFFLOAD_BLACKLIST_S
5619 * @client_bitmap: clients ignore this entry - enum scan_framework_client
5636 * iwm_scan_offload_profile - IWM_SCAN_OFFLOAD_PROFILE_S
5638 * @unicast_cipher: encryption olgorithm to match - bitmap
5639 * @aut_alg: authentication olgorithm to match - bitmap
5642 * @client_bitmap: clients waiting for match - enum scan_framework_client
5655 * iwm_scan_offload_profile_cfg - IWM_SCAN_OFFLOAD_PROFILES_CFG_API_S_VER_1
5662 * @active_clients: active clients bitmap - enum scan_framework_client
5689 * struct iwm_lmac_scan_complete_notif - notifies end of scanning (all channels)
5693 * @bt_status: BT on/off status
5713 * 8-bit mask (see IWM_SCAN_MASK).
5737 /* Bits 26-31 are for num of channels in channel_array */
5755 /* Bits 16-27 are for supported rates */
5766 * @tx_chains: valid_tx antenna - ANT_* definitions
5767 * @rx_chains: valid_rx antenna - ANT_* definitions
5768 * @legacy_rates: default legacy rates - enum scan_config_rates
5771 * @dwell_active: default dwell time for active scan
5777 * @channel_flags: default channel flags - enum iwm_channel_flags
5845 * @flags: bitmap - 0-19: directed scan to i'th ssid.
5846 * @channel_num: channel number 1-13 etc.
5848 * @iter_interval: interval between two scan iterations on one channel.
5852 #define IWM_SCAN_CHANNEL_UMAC_NSSIDS(x) ((1 << (x)) - 1)
5871 * struct iwm_scan_req_umac_tail - the rest of the UMAC scan request command
5877 * @direct_scan: list of SSIDs for directed active scan
5890 * struct iwm_scan_req_umac_tail - the rest of the UMAC scan request command
5896 * @direct_scan: list of SSIDs for directed active scan
5927 * @ooc_priority: out of channel priority - &enum iwl_scan_priority
5931 * @active_dwell: dwell time for active scan per LMAC
5941 * @max_out_time: max out of serving channel time, per LMAC - for CDB there
5943 * @suspend_time: max suspend time, per LMAC - for CDB there are 2 LMACs
6068 * struct iwm_scan_offload_profile_match - match information
6086 * struct iwm_scan_offload_profiles_query - match results query response
6111 * struct iwm_umac_scan_iter_complete_notif - notifies end of scanning iteration
6116 * @bt_status: BT on/off status
6144 * END mvm/fw-api-scan.h
6148 * BEGIN mvm/fw-api-sta.h
6167 * @IWM_STA_FLG_MAX_AGG_SIZE_MSK: maximal size for A-MPDU
6224 * @IWM_STA_KEY_FLG_EXT: extended cipher algorithm (depends on the FW support)
6228 * @IWM_STA_KEY_FLG_WEP_KEY_MAP: wep is either a group key (0 - legacy WEP) or from
6229 * station info array (1 - n 1X mode)
6279 * @IWM_STA_SLEEP_STATE_MOREDATA: set more-data bit on
6309 * struct iwm_keyinfo - key information
6312 * @tkip_rx_ttak: 10-byte unicast TKIP TTAK for Rx
6314 * @key: 16-byte unicast decryption key
6316 * @hw_tkip_mic_rx_key: byte: MIC Rx Key - used for TKIP only
6317 * @hw_tkip_mic_tx_key: byte: MIC Tx Key - used for TKIP only
6338 * struct iwm_add_sta_cmd_v7 - Add/modify a station in the fw's sta table.
6348 * alone. 1 - modify, 0 - don't change.
6351 * @add_immediate_ba_tid: tid for which to add block-ack support (Rx)
6354 * @remove_immediate_ba_tid: tid for which to remove block-ack support (Rx)
6356 * @add_immediate_ba_ssn: ssn for the Rx block-ack session. Used together with
6359 * asleep. Used to synchronise PS-poll and u-APSD responses while ucode
6362 * @assoc_id: assoc_id to be sent in VHT PLCP (9-bit), for grp use 0, for AP
6363 * mac-addr.
6367 * The device contains an internal table of per-station information, with info
6368 * on security keys, aggregation parameters, and Tx rates for initial Tx
6372 * entry, or modifying a pre-existing one.
6397 * struct iwm_add_sta_cmd - Add/modify a station in the fw's sta table.
6400 * @awake_acs: ACs to transmit data on while station is sleeping (for U-APSD)
6409 * alone. 1 - modify, 0 - don't change.
6414 * @add_immediate_ba_tid: tid for which to add block-ack support (Rx)
6417 * @remove_immediate_ba_tid: tid for which to remove block-ack support (Rx)
6419 * @add_immediate_ba_ssn: ssn for the Rx block-ack session. Used together with
6422 * asleep. Used to synchronise PS-poll and u-APSD responses while ucode
6426 * @assoc_id: assoc_id to be sent in VHT PLCP (9-bit), for grp use 0, for AP
6427 * mac-addr.
6436 * The device contains an internal table of per-station information, with info
6437 * on security keys, aggregation parameters, and Tx rates for initial Tx
6441 * entry, or modifying a pre-existing one.
6472 * @IWM_STA_LINK: Link station - normal RX and TX traffic.
6477 * @IWM_STA_AUX_ACTIVITY: auxilary station (scan, ROC and so on).
6486 * struct iwm_add_sta_key_common - add/modify sta key common part
6503 * struct iwm_add_sta_key_cmd_v1 - add/modify sta key
6507 * @tkip_rx_ttak: 10-byte unicast TKIP TTAK for Rx
6517 * struct iwm_add_sta_key_cmd - add/modify sta key
6544 * struct iwm_rm_sta_cmd - Add / modify a station in the fw's station table
6610 * struct iwm_bt_coex_cmd - bt coex configuration command
6623 * Location Aware Regulatory (LAR) API - MCC updates
6627 * struct iwm_mcc_update_cmd_v1 - Request the device to update geographic
6629 * The MCC is two letter-code, ascii upper case[A-Z] or '00' for world domain.
6643 * struct iwm_mcc_update_cmd - Request the device to update geographic
6645 * The MCC is two letter-code, ascii upper case[A-Z] or '00' for world domain.
6663 * iwm_mcc_update_resp_v1 - response to MCC_UPDATE_CMD.
6672 * channels, depending on platform)
6686 * iwm_mcc_update_resp_v2 - response to MCC_UPDATE_CMD.
6697 * channels, depending on platform)
6716 * iwm_mcc_update_resp_v3 - response to MCC_UPDATE_CMD.
6727 * channels, depending on platform)
6743 * struct iwm_mcc_chub_notif - chub notifies of mcc change
6750 * The MCC is two letter-code, ascii upper case[A-Z] or '00' for world domain.
6787 * struct iwm_dts_measurement_notif_v1 - measurements notification
6798 * struct iwm_dts_measurement_notif_v2 - measurements notification
6812 * Some cherry-picked definitions
6822 * former flags field, since that's always 0 on commands and thus can
6881 #define IWM_MAX_CMD_PAYLOAD_SIZE ((4096 - 4) - sizeof(struct iwm_cmd_header))
6899 uint8_t data_wide[IWM_DEF_CMD_PAYLOAD_SIZE -
6914 * 28-26: Reserved
6919 * 21-16: RX queue
6920 * 15-14: Reserved
6921 * 13-00: RX frame size
6940 return le32toh(pkt->len_n_flags) & IWM_FH_RSCSR_FRAME_SIZE_MSK; in iwm_rx_packet_len()
6947 return iwm_rx_packet_len(pkt) - sizeof(pkt->hdr); in iwm_rx_packet_payload_len()
6951 #define IWM_MIN_DBM -100
6952 #define IWM_MAX_DBM -33 /* realistic guess */
6955 bus_space_read_4((sc)->sc_st, (sc)->sc_sh, (reg))
6958 bus_space_write_4((sc)->sc_st, (sc)->sc_sh, (reg), (val))
6961 bus_space_write_1((sc)->sc_st, (sc)->sc_sh, (reg), (val))
6970 bus_space_barrier((sc)->sc_st, (sc)->sc_sh, 0, (sc)->sc_sz, \
6974 bus_space_barrier((sc)->sc_st, (sc)->sc_sh, 0, (sc)->sc_sz, \