Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/mm/damon/tests/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 283 B image not shown  

Quelle  commands.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
/*
 * Copyright (C) 2005-2014, 2023-2025 Intel Corporation
 */

/*
 * Please use this file (commands.h) only for uCode API definitions.
 * Please use iwl-xxxx-hw.h for hardware-related definitions.
 * Please use dev.h for driver implementation definitions.
 */


#ifndef_
#define __iwl_commands_h__

#include <linux/ieee80211.h>
#include <linux/types.h>


enum {
 REPLY_ALIVE = 0x1,
 REPLY_ERROR = 0x2,
 REPLY_ECHO = 0x3,  /* test command */

 /* RXON and QOS commands */
 REPLY_RXON = 0x10,
 REPLY_RXON_ASSOC = 0x11,
 REPLY_QOS_PARAM = 0x13,
 REPLY_RXON_TIMING = 0x14,

 /* Multi-Station support */
 REPLY_ADD_STA = 0x18,
 REPLY_REMOVE_STA = 0x19,
 REPLY_REMOVE_ALL_STA = 0x1a, /* not used */
 REPLY_TXFIFO_FLUSH = 0x1e,

 /* Security */
 REPLY_WEPKEY = 0x20,

 /* RX, TX, LEDs */
 REPLY_TX = 0x1c,
 REPLY_LEDS_CMD = 0x48,
 REPLY_TX_LINK_QUALITY_CMD = 0x4e,

 /* WiMAX coexistence */
 COEX_PRIORITY_TABLE_CMD = 0x5a,
 COEX_MEDIUM_NOTIFICATION = 0x5b,
 COEX_EVENT_CMD = 0x5c,

 /* Calibration */
 TEMPERATURE_NOTIFICATION = 0x62,
 CALIBRATION_CFG_CMD = 0x65,
 CALIBRATION_RES_NOTIFICATION = 0x66,
 CALIBRATION_COMPLETE_NOTIFICATION = 0x67,

 /* 802.11h related */
 REPLY_QUIET_CMD = 0x71,  /* not used */
 REPLY_CHANNEL_SWITCH = 0x72,
 CHANNEL_SWITCH_NOTIFICATION = 0x73,
 REPLY_SPECTRUM_MEASUREMENT_CMD = 0x74,
 SPECTRUM_MEASURE_NOTIFICATION = 0x75,

 /* Power Management */
 POWER_TABLE_CMD = 0x77,
 PM_SLEEP_NOTIFICATION = 0x7A,
 PM_DEBUG_STATISTIC_NOTIFIC = 0x7B,

 /* Scan commands and notifications */
 REPLY_SCAN_CMD = 0x80,
 REPLY_SCAN_ABORT_CMD = 0x81,
 SCAN_START_NOTIFICATION = 0x82,
 SCAN_RESULTS_NOTIFICATION = 0x83,
 SCAN_COMPLETE_NOTIFICATION = 0x84,

 /* IBSS/AP commands */
 BEACON_NOTIFICATION = 0x90,
 REPLY_TX_BEACON = 0x91,
 WHO_IS_AWAKE_NOTIFICATION = 0x94, /* not used */

 /* Miscellaneous commands */
 REPLY_TX_POWER_DBM_CMD = 0x95,
 QUIET_NOTIFICATION = 0x96,  /* not used */
 REPLY_TX_PWR_TABLE_CMD = 0x97,
 REPLY_TX_POWER_DBM_CMD_V1 = 0x98, /* old version of API */
 TX_ANT_CONFIGURATION_CMD = 0x98,
 MEASURE_ABORT_NOTIFICATION = 0x99, /* not used */

 /* Bluetooth device coexistence config command */
 REPLY_BT_CONFIG = 0x9b,

 /* Statistics */
 REPLY_STATISTICS_CMD = 0x9c,
 STATISTICS_NOTIFICATION = 0x9d,

 /* RF-KILL commands and notifications */
 REPLY_CARD_STATE_CMD = 0xa0,
 CARD_STATE_NOTIFICATION = 0xa1,

 /* Missed beacons notification */
 MISSED_BEACONS_NOTIFICATION = 0xa2,

 REPLY_CT_KILL_CONFIG_CMD = 0xa4,
 SENSITIVITY_CMD = 0xa8,
 REPLY_PHY_CALIBRATION_CMD = 0xb0,
 REPLY_RX_PHY_CMD = 0xc0,
 REPLY_RX_MPDU_CMD = 0xc1,
 REPLY_RX = 0xc3,
 REPLY_COMPRESSED_BA = 0xc5,

 /* BT Coex */
 REPLY_BT_COEX_PRIO_TABLE = 0xcc,
 REPLY_BT_COEX_PROT_ENV = 0xcd,
 REPLY_BT_COEX_PROFILE_NOTIF = 0xce,

 /* PAN commands */
 REPLY_WIPAN_PARAMS = 0xb2,
 REPLY_WIPAN_RXON = 0xb3, /* use REPLY_RXON structure */
 REPLY_WIPAN_RXON_TIMING = 0xb4, /* use REPLY_RXON_TIMING structure */
 REPLY_WIPAN_RXON_ASSOC = 0xb6, /* use REPLY_RXON_ASSOC structure */
 REPLY_WIPAN_QOS_PARAM = 0xb7, /* use REPLY_QOS_PARAM structure */
 REPLY_WIPAN_WEPKEY = 0xb8, /* use REPLY_WEPKEY structure */
 REPLY_WIPAN_P2P_CHANNEL_SWITCH = 0xb9,
 REPLY_WIPAN_NOA_NOTIFICATION = 0xbc,
 REPLY_WIPAN_DEACTIVATION_COMPLETE = 0xbd,

 REPLY_WOWLAN_PATTERNS = 0xe0,
 REPLY_WOWLAN_WAKEUP_FILTER = 0xe1,
 REPLY_WOWLAN_TSC_RSC_PARAMS = 0xe2,
 REPLY_WOWLAN_TKIP_PARAMS = 0xe3,
 REPLY_WOWLAN_KEK_KCK_MATERIAL = 0xe4,
 REPLY_WOWLAN_GET_STATUS = 0xe5,
 REPLY_D3_CONFIG = 0xd3,

 REPLY_MAX = 0xff
};

/*
 * Minimum number of queues. MAX_NUM is defined in hw specific files.
 * Set the minimum to accommodate
 *  - 4 standard TX queues
 *  - the command queue
 *  - 4 PAN TX queues
 *  - the PAN multicast queue, and
 *  - the AUX (TX during scan dwell) queue.
 */

#define IWL_MIN_NUM_QUEUES 11

/*
 * Command queue depends on iPAN support.
 */

#define IWL_DEFAULT_CMD_QUEUE_NUM 4
#define IWL_IPAN_CMD_QUEUE_NUM  9

#define IWL_TX_FIFO_BK  0 /* shared */
#define IWL_TX_FIFO_BE  1
#define IWL_TX_FIFO_VI  2 /* shared */
#define IWL_TX_FIFO_VO  3
#define IWL_TX_FIFO_BK_IPAN IWL_TX_FIFO_BK
#define IWL_TX_FIFO_BE_IPAN 4
#define IWL_TX_FIFO_VI_IPAN IWL_TX_FIFO_VI
#define IWL_TX_FIFO_VO_IPAN 5
/* re-uses the VO FIFO, uCode will properly flush/schedule */
#define IWL_TX_FIFO_AUX  5
#define IWL_TX_FIFO_UNUSED 255

#define IWLAGN_CMD_FIFO_NUM 7

/*
 * This queue number is required for proper operation
 * because the ucode will stop/start the scheduler as
 * required.
 */

#define IWL_IPAN_MCAST_QUEUE 8

/******************************************************************************
 * (0)
 * Commonly used structures and definitions:
 * Command header, rate_n_flags, txpower
 *
 *****************************************************************************/


/*
 * iwlagn rate_n_flags bit fields
 *
 * rate_n_flags format is used in following iwlagn commands:
 *  REPLY_RX (response only)
 *  REPLY_RX_MPDU (response only)
 *  REPLY_TX (both command and response)
 *  REPLY_TX_LINK_QUALITY_CMD
 *
 * High-throughput (HT) rate format for bits 7:0 (bit 8 must be "1"):
 *  2-0:  0)   6 Mbps
 *        1)  12 Mbps
 *        2)  18 Mbps
 *        3)  24 Mbps
 *        4)  36 Mbps
 *        5)  48 Mbps
 *        6)  54 Mbps
 *        7)  60 Mbps
 *
 *  4-3:  0)  Single stream (SISO)
 *        1)  Dual stream (MIMO)
 *        2)  Triple stream (MIMO)
 *
 *    5:  Value of 0x20 in bits 7:0 indicates 6 Mbps HT40 duplicate data
 *
 * Legacy OFDM rate format for bits 7:0 (bit 8 must be "0", bit 9 "0"):
 *  3-0:  0xD)   6 Mbps
 *        0xF)   9 Mbps
 *        0x5)  12 Mbps
 *        0x7)  18 Mbps
 *        0x9)  24 Mbps
 *        0xB)  36 Mbps
 *        0x1)  48 Mbps
 *        0x3)  54 Mbps
 *
 * Legacy CCK rate format for bits 7:0 (bit 8 must be "0", bit 9 "1"):
 *  6-0:   10)  1 Mbps
 *         20)  2 Mbps
 *         55)  5.5 Mbps
 *        110)  11 Mbps
 */

#define RATE_MCS_CODE_MSK 0x7
#define RATE_MCS_SPATIAL_POS 3
#define RATE_MCS_SPATIAL_MSK 0x18
#define RATE_MCS_HT_DUP_POS 5
#define RATE_MCS_HT_DUP_MSK 0x20
/* Both legacy and HT use bits 7:0 as the CCK/OFDM rate or HT MCS */
#define RATE_MCS_RATE_MSK 0xff

/* Bit 8: (1) HT format, (0) legacy format in bits 7:0 */
#define RATE_MCS_FLAGS_POS 8
#define RATE_MCS_HT_POS 8
#define RATE_MCS_HT_MSK 0x100

/* Bit 9: (1) CCK, (0) OFDM.  HT (bit 8) must be "0" for this bit to be valid */
#define RATE_MCS_CCK_POS 9
#define RATE_MCS_CCK_MSK 0x200

/* Bit 10: (1) Use Green Field preamble */
#define RATE_MCS_GF_POS 10
#define RATE_MCS_GF_MSK 0x400

/* Bit 11: (1) Use 40Mhz HT40 chnl width, (0) use 20 MHz legacy chnl width */
#define RATE_MCS_HT40_POS 11
#define RATE_MCS_HT40_MSK 0x800

/* Bit 12: (1) Duplicate data on both 20MHz chnls. HT40 (bit 11) must be set. */
#define RATE_MCS_DUP_POS 12
#define RATE_MCS_DUP_MSK 0x1000

/* Bit 13: (1) Short guard interval (0.4 usec), (0) normal GI (0.8 usec) */
#define RATE_MCS_SGI_POS 13
#define RATE_MCS_SGI_MSK 0x2000

/*
 * rate_n_flags Tx antenna masks
 * bit14:16
 */

#define RATE_MCS_ANT_POS 14
#define RATE_MCS_ANT_A_MSK 0x04000
#define RATE_MCS_ANT_B_MSK 0x08000
#define RATE_MCS_ANT_C_MSK 0x10000
#define RATE_MCS_ANT_AB_MSK (RATE_MCS_ANT_A_MSK | RATE_MCS_ANT_B_MSK)
#define RATE_MCS_ANT_ABC_MSK (RATE_MCS_ANT_AB_MSK | RATE_MCS_ANT_C_MSK)
#define RATE_ANT_NUM 3

#define POWER_TABLE_NUM_ENTRIES   33
#define POWER_TABLE_NUM_HT_OFDM_ENTRIES  32
#define POWER_TABLE_CCK_ENTRY   32

#define IWL_PWR_NUM_HT_OFDM_ENTRIES  24
#define IWL_PWR_CCK_ENTRIES   2

/*
 * struct tx_power_dual_stream
 *
 * Table entries in REPLY_TX_PWR_TABLE_CMD, REPLY_CHANNEL_SWITCH
 *
 * Same format as iwl_tx_power_dual_stream, but __le32
 */

struct tx_power_dual_stream {
 __le32 dw;
} __packed;

/*
 * Command REPLY_TX_POWER_DBM_CMD = 0x98
 * struct iwlagn_tx_power_dbm_cmd
 */

#define IWLAGN_TX_POWER_AUTO 0x7f
#define IWLAGN_TX_POWER_NO_CLOSED (0x1 << 6)

struct iwlagn_tx_power_dbm_cmd {
 s8 global_lmt; /*in half-dBm (e.g. 30 = 15 dBm) */
 u8 flags;
 s8 srv_chan_lmt; /*in half-dBm (e.g. 30 = 15 dBm) */
 u8 reserved;
} __packed;

/*
 * Command TX_ANT_CONFIGURATION_CMD = 0x98
 * This command is used to configure valid Tx antenna.
 * By default uCode concludes the valid antenna according to the radio flavor.
 * This command enables the driver to override/modify this conclusion.
 */

struct iwl_tx_ant_config_cmd {
 __le32 valid;
} __packed;

/******************************************************************************
 * (0a)
 * Alive and Error Commands & Responses:
 *
 *****************************************************************************/


#define UCODE_VALID_OK cpu_to_le32(0x1)

/*
 * REPLY_ALIVE = 0x1 (response only, not a command)
 *
 * uCode issues this "alive" notification once the runtime image is ready
 * to receive commands from the driver.  This is the *second* "alive"
 * notification that the driver will receive after rebooting uCode;
 * this "alive" is indicated by subtype field != 9.
 *
 * See comments documenting "BSM" (bootstrap state machine).
 *
 * This response includes two pointers to structures within the device's
 * data SRAM (access via HBUS_TARG_MEM_* regs) that are useful for debugging:
 *
 * 1)  log_event_table_ptr indicates base of the event log.  This traces
 *     a 256-entry history of uCode execution within a circular buffer.
 *     Its header format is:
 *
 * __le32 log_size;     log capacity (in number of entries)
 * __le32 type;         (1) timestamp with each entry, (0) no timestamp
 * __le32 wraps;        # times uCode has wrapped to top of circular buffer
 *      __le32 write_index;  next circular buffer entry that uCode would fill
 *
 *     The header is followed by the circular buffer of log entries.  Entries
 *     with timestamps have the following format:
 *
 * __le32 event_id;     range 0 - 1500
 * __le32 timestamp;    low 32 bits of TSF (of network, if associated)
 * __le32 data;         event_id-specific data value
 *
 *     Entries without timestamps contain only event_id and data.
 *
 *
 * 2)  error_event_table_ptr indicates base of the error log.  This contains
 *     information about any uCode error that occurs.  For agn, the format
 *     of the error log is defined by struct iwl_error_event_table.
 *
 * The Linux driver can print both logs to the system log when a uCode error
 * occurs.
 */


/*
 * Note: This structure is read from the device with IO accesses,
 * and the reading already does the endian conversion. As it is
 * read with u32-sized accesses, any members with a different size
 * need to be ordered correctly though!
 */

struct iwl_error_event_table {
 u32 valid;  /* (nonzero) valid, (0) log is empty */
 u32 error_id;  /* type of error */
 u32 pc;   /* program counter */
 u32 blink1;  /* branch link */
 u32 blink2;  /* branch link */
 u32 ilink1;  /* interrupt link */
 u32 ilink2;  /* interrupt link */
 u32 data1;  /* error-specific data */
 u32 data2;  /* error-specific data */
 u32 line;  /* source code line of error */
 u32 bcon_time;  /* beacon timer */
 u32 tsf_low;  /* network timestamp function timer */
 u32 tsf_hi;  /* network timestamp function timer */
 u32 gp1;  /* GP1 timer register */
 u32 gp2;  /* GP2 timer register */
 u32 gp3;  /* GP3 timer register */
 u32 ucode_ver;  /* uCode version */
 u32 hw_ver;  /* HW Silicon version */
 u32 brd_ver;  /* HW board version */
 u32 log_pc;  /* log program counter */
 u32 frame_ptr;  /* frame pointer */
 u32 stack_ptr;  /* stack pointer */
 u32 hcmd;  /* last host command header */
 u32 isr0;  /* isr status register LMPM_NIC_ISR0:
 * rxtx_flag */

 u32 isr1;  /* isr status register LMPM_NIC_ISR1:
 * host_flag */

 u32 isr2;  /* isr status register LMPM_NIC_ISR2:
 * enc_flag */

 u32 isr3;  /* isr status register LMPM_NIC_ISR3:
 * time_flag */

 u32 isr4;  /* isr status register LMPM_NIC_ISR4:
 * wico interrupt */

 u32 isr_pref;  /* isr status register LMPM_NIC_PREF_STAT */
 u32 wait_event;  /* wait event() caller address */
 u32 l2p_control; /* L2pControlField */
 u32 l2p_duration; /* L2pDurationField */
 u32 l2p_mhvalid; /* L2pMhValidBits */
 u32 l2p_addr_match; /* L2pAddrMatchStat */
 u32 lmpm_pmg_sel; /* indicate which clocks are turned on
 * (LMPM_PMG_SEL) */

 u32 u_timestamp; /* indicate when the date and time of the
 * compilation */

 u32 flow_handler; /* FH read/write pointers, RX credit */
} __packed;

struct iwl_alive_resp {
 u8 ucode_minor;
 u8 ucode_major;
 __le16 reserved1;
 u8 sw_rev[8];
 u8 ver_type;
 u8 ver_subtype;   /* not "9" for runtime alive */
 __le16 reserved2;
 __le32 log_event_table_ptr; /* SRAM address for event log */
 __le32 error_event_table_ptr; /* SRAM address for error log */
 __le32 timestamp;
 __le32 is_valid;
} __packed;

/*
 * REPLY_ERROR = 0x2 (response only, not a command)
 */

struct iwl_error_resp {
 __le32 error_type;
 u8 cmd_id;
 u8 reserved1;
 __le16 bad_cmd_seq_num;
 __le32 error_info;
 __le64 timestamp;
} __packed;

/******************************************************************************
 * (1)
 * RXON Commands & Responses:
 *
 *****************************************************************************/


/*
 * Rx config defines & structure
 */

/* rx_config device types  */
enum {
 RXON_DEV_TYPE_AP = 1,
 RXON_DEV_TYPE_ESS = 3,
 RXON_DEV_TYPE_IBSS = 4,
 RXON_DEV_TYPE_SNIFFER = 6,
 RXON_DEV_TYPE_CP = 7,
 RXON_DEV_TYPE_2STA = 8,
 RXON_DEV_TYPE_P2P = 9,
};


#define RXON_RX_CHAIN_DRIVER_FORCE_MSK  cpu_to_le16(0x1 << 0)
#define RXON_RX_CHAIN_DRIVER_FORCE_POS  (0)
#define RXON_RX_CHAIN_VALID_MSK   cpu_to_le16(0x7 << 1)
#define RXON_RX_CHAIN_VALID_POS   (1)
#define RXON_RX_CHAIN_FORCE_SEL_MSK  cpu_to_le16(0x7 << 4)
#define RXON_RX_CHAIN_FORCE_SEL_POS  (4)
#define RXON_RX_CHAIN_FORCE_MIMO_SEL_MSK cpu_to_le16(0x7 << 7)
#define RXON_RX_CHAIN_FORCE_MIMO_SEL_POS (7)
#define RXON_RX_CHAIN_CNT_MSK   cpu_to_le16(0x3 << 10)
#define RXON_RX_CHAIN_CNT_POS   (10)
#define RXON_RX_CHAIN_MIMO_CNT_MSK  cpu_to_le16(0x3 << 12)
#define RXON_RX_CHAIN_MIMO_CNT_POS  (12)
#define RXON_RX_CHAIN_MIMO_FORCE_MSK  cpu_to_le16(0x1 << 14)
#define RXON_RX_CHAIN_MIMO_FORCE_POS  (14)

/* rx_config flags */
/* band & modulation selection */
#define RXON_FLG_BAND_24G_MSK           cpu_to_le32(1 << 0)
#define RXON_FLG_CCK_MSK                cpu_to_le32(1 << 1)
/* auto detection enable */
#define RXON_FLG_AUTO_DETECT_MSK        cpu_to_le32(1 << 2)
/* TGg protection when tx */
#define RXON_FLG_TGG_PROTECT_MSK        cpu_to_le32(1 << 3)
/* cck short slot & preamble */
#define RXON_FLG_SHORT_SLOT_MSK          cpu_to_le32(1 << 4)
#define RXON_FLG_SHORT_PREAMBLE_MSK     cpu_to_le32(1 << 5)
/* antenna selection */
#define RXON_FLG_DIS_DIV_MSK            cpu_to_le32(1 << 7)
#define RXON_FLG_ANT_SEL_MSK            cpu_to_le32(0x0f00)
#define RXON_FLG_ANT_A_MSK              cpu_to_le32(1 << 8)
#define RXON_FLG_ANT_B_MSK              cpu_to_le32(1 << 9)
/* radar detection enable */
#define RXON_FLG_RADAR_DETECT_MSK       cpu_to_le32(1 << 12)
#define RXON_FLG_TGJ_NARROW_BAND_MSK    cpu_to_le32(1 << 13)
/* rx response to host with 8-byte TSF
* (according to ON_AIR deassertion) */

#define RXON_FLG_TSF2HOST_MSK           cpu_to_le32(1 << 15)


/* HT flags */
#define RXON_FLG_CTRL_CHANNEL_LOC_POS  (22)
#define RXON_FLG_CTRL_CHANNEL_LOC_HI_MSK cpu_to_le32(0x1 << 22)

#define RXON_FLG_HT_OPERATING_MODE_POS  (23)

#define RXON_FLG_HT_PROT_MSK   cpu_to_le32(0x1 << 23)
#define RXON_FLG_HT40_PROT_MSK   cpu_to_le32(0x2 << 23)

#define RXON_FLG_CHANNEL_MODE_POS  (25)
#define RXON_FLG_CHANNEL_MODE_MSK  cpu_to_le32(0x3 << 25)

/* channel mode */
enum {
 CHANNEL_MODE_LEGACY = 0,
 CHANNEL_MODE_PURE_40 = 1,
 CHANNEL_MODE_MIXED = 2,
 CHANNEL_MODE_RESERVED = 3,
};
#define RXON_FLG_CHANNEL_MODE_LEGACY cpu_to_le32(CHANNEL_MODE_LEGACY << RXON_FLG_CHANNEL_MODE_POS)
#define RXON_FLG_CHANNEL_MODE_PURE_40 cpu_to_le32(CHANNEL_MODE_PURE_40 << RXON_FLG_CHANNEL_MODE_POS)
#define RXON_FLG_CHANNEL_MODE_MIXED cpu_to_le32(CHANNEL_MODE_MIXED << RXON_FLG_CHANNEL_MODE_POS)

/* CTS to self (if spec allows) flag */
#define RXON_FLG_SELF_CTS_EN   cpu_to_le32(0x1<<30)

/* rx_config filter flags */
/* accept all data frames */
#define RXON_FILTER_PROMISC_MSK         cpu_to_le32(1 << 0)
/* pass control & management to host */
#define RXON_FILTER_CTL2HOST_MSK        cpu_to_le32(1 << 1)
/* accept multi-cast */
#define RXON_FILTER_ACCEPT_GRP_MSK      cpu_to_le32(1 << 2)
/* don't decrypt uni-cast frames */
#define RXON_FILTER_DIS_DECRYPT_MSK     cpu_to_le32(1 << 3)
/* don't decrypt multi-cast frames */
#define RXON_FILTER_DIS_GRP_DECRYPT_MSK cpu_to_le32(1 << 4)
/* STA is associated */
#define RXON_FILTER_ASSOC_MSK           cpu_to_le32(1 << 5)
/* transfer to host non bssid beacons in associated state */
#define RXON_FILTER_BCON_AWARE_MSK      cpu_to_le32(1 << 6)

/*
 * REPLY_RXON = 0x10 (command, has simple generic response)
 *
 * RXON tunes the radio tuner to a service channel, and sets up a number
 * of parameters that are used primarily for Rx, but also for Tx operations.
 *
 * NOTE:  When tuning to a new channel, driver must set the
 *        RXON_FILTER_ASSOC_MSK to 0.  This will clear station-dependent
 *        info within the device, including the station tables, tx retry
 *        rate tables, and txpower tables.  Driver must build a new station
 *        table and txpower table before transmitting anything on the RXON
 *        channel.
 *
 * NOTE:  All RXONs wipe clean the internal txpower table.  Driver must
 *        issue a new REPLY_TX_PWR_TABLE_CMD after each REPLY_RXON (0x10),
 *        regardless of whether RXON_FILTER_ASSOC_MSK is set.
 */


struct iwl_rxon_cmd {
 u8 node_addr[6];
 __le16 reserved1;
 u8 bssid_addr[6];
 __le16 reserved2;
 u8 wlap_bssid_addr[6];
 __le16 reserved3;
 u8 dev_type;
 u8 air_propagation;
 __le16 rx_chain;
 u8 ofdm_basic_rates;
 u8 cck_basic_rates;
 __le16 assoc_id;
 __le32 flags;
 __le32 filter_flags;
 __le16 channel;
 u8 ofdm_ht_single_stream_basic_rates;
 u8 ofdm_ht_dual_stream_basic_rates;
 u8 ofdm_ht_triple_stream_basic_rates;
 u8 reserved5;
 __le16 acquisition_data;
 __le16 reserved6;
} __packed;

/*
 * REPLY_RXON_ASSOC = 0x11 (command, has simple generic response)
 */

struct iwl_rxon_assoc_cmd {
 __le32 flags;
 __le32 filter_flags;
 u8 ofdm_basic_rates;
 u8 cck_basic_rates;
 __le16 reserved1;
 u8 ofdm_ht_single_stream_basic_rates;
 u8 ofdm_ht_dual_stream_basic_rates;
 u8 ofdm_ht_triple_stream_basic_rates;
 u8 reserved2;
 __le16 rx_chain_select_flags;
 __le16 acquisition_data;
 __le32 reserved3;
} __packed;

#define IWL_CONN_MAX_LISTEN_INTERVAL 10
#define IWL_MAX_UCODE_BEACON_INTERVAL 4 /* 4096 */

/*
 * REPLY_RXON_TIMING = 0x14 (command, has simple generic response)
 */

struct iwl_rxon_time_cmd {
 __le64 timestamp;
 __le16 beacon_interval;
 __le16 atim_window;
 __le32 beacon_init_val;
 __le16 listen_interval;
 u8 dtim_period;
 u8 delta_cp_bss_tbtts;
} __packed;

/*
 * REPLY_CHANNEL_SWITCH = 0x72 (command, has simple generic response)
 */

/**
 * struct iwl5000_channel_switch_cmd - channel switch command (5000 series)
 * @band: 0- 5.2GHz, 1- 2.4GHz
 * @expect_beacon: 0- resume transmits after channel switch
 *    1- wait for beacon to resume transmits
 * @channel: new channel number
 * @rxon_flags: Rx on flags
 * @rxon_filter_flags: filtering parameters
 * @switch_time: switch time in extended beacon format
 * @reserved: reserved bytes
 */

struct iwl5000_channel_switch_cmd {
 u8 band;
 u8 expect_beacon;
 __le16 channel;
 __le32 rxon_flags;
 __le32 rxon_filter_flags;
 __le32 switch_time;
 __le32 reserved[2][IWL_PWR_NUM_HT_OFDM_ENTRIES + IWL_PWR_CCK_ENTRIES];
} __packed;

/**
 * struct iwl6000_channel_switch_cmd - channel switch command (6000 series)
 * @band: 0- 5.2GHz, 1- 2.4GHz
 * @expect_beacon: 0- resume transmits after channel switch
 *    1- wait for beacon to resume transmits
 * @channel: new channel number
 * @rxon_flags: Rx on flags
 * @rxon_filter_flags: filtering parameters
 * @switch_time: switch time in extended beacon format
 * @reserved: reserved bytes
 */

struct iwl6000_channel_switch_cmd {
 u8 band;
 u8 expect_beacon;
 __le16 channel;
 __le32 rxon_flags;
 __le32 rxon_filter_flags;
 __le32 switch_time;
 __le32 reserved[3][IWL_PWR_NUM_HT_OFDM_ENTRIES + IWL_PWR_CCK_ENTRIES];
} __packed;

/*
 * CHANNEL_SWITCH_NOTIFICATION = 0x73 (notification only, not a command)
 */

struct iwl_csa_notification {
 __le16 band;
 __le16 channel;
 __le32 status;  /* 0 - OK, 1 - fail */
} __packed;

/******************************************************************************
 * (2)
 * Quality-of-Service (QOS) Commands & Responses:
 *
 *****************************************************************************/


/**
 * struct iwl_ac_qos -- QOS timing params for REPLY_QOS_PARAM
 * One for each of 4 EDCA access categories in struct iwl_qosparam_cmd
 *
 * @cw_min: Contention window, start value in numbers of slots.
 *          Should be a power-of-2, minus 1.  Device's default is 0x0f.
 * @cw_max: Contention window, max value in numbers of slots.
 *          Should be a power-of-2, minus 1.  Device's default is 0x3f.
 * @aifsn:  Number of slots in Arbitration Interframe Space (before
 *          performing random backoff timing prior to Tx).  Device default 1.
 * @edca_txop:  Length of Tx opportunity, in uSecs.  Device default is 0.
 * @reserved1: reserved for alignment
 *
 * Device will automatically increase contention window by (2*CW) + 1 for each
 * transmission retry.  Device uses cw_max as a bit mask, ANDed with new CW
 * value, to cap the CW value.
 */

struct iwl_ac_qos {
 __le16 cw_min;
 __le16 cw_max;
 u8 aifsn;
 u8 reserved1;
 __le16 edca_txop;
} __packed;

/* QoS flags defines */
#define QOS_PARAM_FLG_UPDATE_EDCA_MSK cpu_to_le32(0x01)
#define QOS_PARAM_FLG_TGN_MSK  cpu_to_le32(0x02)
#define QOS_PARAM_FLG_TXOP_TYPE_MSK cpu_to_le32(0x10)

/* Number of Access Categories (AC) (EDCA), queues 0..3 */
#define AC_NUM                4

/*
 * REPLY_QOS_PARAM = 0x13 (command, has simple generic response)
 *
 * This command sets up timings for each of the 4 prioritized EDCA Tx FIFOs
 * 0: Background, 1: Best Effort, 2: Video, 3: Voice.
 */

struct iwl_qosparam_cmd {
 __le32 qos_flags;
 struct iwl_ac_qos ac[AC_NUM];
} __packed;

/******************************************************************************
 * (3)
 * Add/Modify Stations Commands & Responses:
 *
 *****************************************************************************/

/*
 * Multi station support
 */


/* Special, dedicated locations within device's station table */
#define IWL_AP_ID  0
#define IWL_AP_ID_PAN  1
#define IWL_STA_ID  2
#define IWLAGN_PAN_BCAST_ID 14
#define IWLAGN_BROADCAST_ID 15
#define IWLAGN_STATION_COUNT 16

#define IWL_TID_NON_QOS IWL_MAX_TID_COUNT

#define STA_FLG_TX_RATE_MSK  cpu_to_le32(1 << 2)
#define STA_FLG_PWR_SAVE_MSK  cpu_to_le32(1 << 8)
#define STA_FLG_PAN_STATION  cpu_to_le32(1 << 13)
#define STA_FLG_RTS_MIMO_PROT_MSK cpu_to_le32(1 << 17)
#define STA_FLG_AGG_MPDU_8US_MSK cpu_to_le32(1 << 18)
#define STA_FLG_MAX_AGG_SIZE_POS (19)
#define STA_FLG_MAX_AGG_SIZE_MSK cpu_to_le32(3 << 19)
#define STA_FLG_HT40_EN_MSK  cpu_to_le32(1 << 21)
#define STA_FLG_MIMO_DIS_MSK  cpu_to_le32(1 << 22)
#define STA_FLG_AGG_MPDU_DENSITY_POS (23)
#define STA_FLG_AGG_MPDU_DENSITY_MSK cpu_to_le32(7 << 23)

/* Use in mode field.  1: modify existing entry, 0: add new station entry */
#define STA_CONTROL_MODIFY_MSK  0x01

/* key flags __le16*/
#define STA_KEY_FLG_ENCRYPT_MSK cpu_to_le16(0x0007)
#define STA_KEY_FLG_NO_ENC cpu_to_le16(0x0000)
#define STA_KEY_FLG_WEP  cpu_to_le16(0x0001)
#define STA_KEY_FLG_CCMP cpu_to_le16(0x0002)
#define STA_KEY_FLG_TKIP cpu_to_le16(0x0003)

#define STA_KEY_FLG_KEYID_POS 8
#define STA_KEY_FLG_INVALID  cpu_to_le16(0x0800)
/* wep key is either from global key (0) or from station info array (1) */
#define STA_KEY_FLG_MAP_KEY_MSK cpu_to_le16(0x0008)

/* wep key in STA: 5-bytes (0) or 13-bytes (1) */
#define STA_KEY_FLG_KEY_SIZE_MSK     cpu_to_le16(0x1000)
#define STA_KEY_MULTICAST_MSK        cpu_to_le16(0x4000)
#define STA_KEY_MAX_NUM  8
#define STA_KEY_MAX_NUM_PAN 16
/* must not match WEP_INVALID_OFFSET */
#define IWLAGN_HW_KEY_DEFAULT 0xfe

/* Flags indicate whether to modify vs. don't change various station params */
#define STA_MODIFY_KEY_MASK  0x01
#define STA_MODIFY_TID_DISABLE_TX 0x02
#define STA_MODIFY_TX_RATE_MSK  0x04
#define STA_MODIFY_ADDBA_TID_MSK 0x08
#define STA_MODIFY_DELBA_TID_MSK 0x10
#define STA_MODIFY_SLEEP_TX_COUNT_MSK 0x20

/* agn */
struct iwl_keyinfo {
 __le16 key_flags;
 u8 tkip_rx_tsc_byte2; /* TSC[2] for key mix ph1 detection */
 u8 reserved1;
 __le16 tkip_rx_ttak[5]; /* 10-byte unicast TKIP TTAK */
 u8 key_offset;
 u8 reserved2;
 u8 key[16];  /* 16-byte unicast decryption key */
 __le64 tx_secur_seq_cnt;
 __le64 hw_tkip_mic_rx_key;
 __le64 hw_tkip_mic_tx_key;
} __packed;

/**
 * struct sta_id_modify - station modify command
 * @addr: station's MAC address
 * @reserved1: reserved for alignment
 * @sta_id: index of station in uCode's station table
 * @modify_mask: STA_MODIFY_*, 1: modify, 0: don't change
 * @reserved2: reserved for alignment
 *
 * Driver selects unused table index when adding new station,
 * or the index to a pre-existing station entry when modifying that station.
 * Some indexes have special purposes (IWL_AP_ID, index 0, is for AP).
 *
 * modify_mask flags select which parameters to modify vs. leave alone.
 */

struct sta_id_modify {
 u8 addr[ETH_ALEN];
 __le16 reserved1;
 u8 sta_id;
 u8 modify_mask;
 __le16 reserved2;
} __packed;

/*
 * REPLY_ADD_STA = 0x18 (command)
 *
 * The device contains an internal table of per-station information,
 * with info on security keys, aggregation parameters, and Tx rates for
 * initial Tx attempt and any retries (agn devices uses
 * REPLY_TX_LINK_QUALITY_CMD,
 *
 * REPLY_ADD_STA sets up the table entry for one station, either creating
 * a new entry, or modifying a pre-existing one.
 *
 * NOTE:  RXON command (without "associated" bit set) wipes the station table
 *        clean.  Moving into RF_KILL state does this also.  Driver must set up
 *        new station table before transmitting anything on the RXON channel
 *        (except active scans or active measurements; those commands carry
 *        their own txpower/rate setup data).
 *
 *        When getting started on a new channel, driver must set up the
 *        IWL_BROADCAST_ID entry (last entry in the table).  For a client
 *        station in a BSS, once an AP is selected, driver sets up the AP STA
 *        in the IWL_AP_ID entry (1st entry in the table).  BROADCAST and AP
 *        are all that are needed for a BSS client station.  If the device is
 *        used as AP, or in an IBSS network, driver must set up station table
 *        entries for all STAs in network, starting with index IWL_STA_ID.
 */


struct iwl_addsta_cmd {
 u8 mode;  /* 1: modify existing, 0: add new station */
 u8 reserved[3];
 struct sta_id_modify sta;
 struct iwl_keyinfo key;
 __le32 station_flags;  /* STA_FLG_* */
 __le32 station_flags_msk; /* STA_FLG_* */

 /* bit field to disable (1) or enable (0) Tx for Traffic ID (TID)
 * corresponding to bit (e.g. bit 5 controls TID 5).
 * Set modify_mask bit STA_MODIFY_TID_DISABLE_TX to use this field. */

 __le16 tid_disable_tx;
 __le16 legacy_reserved;

 /* TID for which to add block-ack support.
 * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */

 u8 add_immediate_ba_tid;

 /* TID for which to remove block-ack support.
 * Set modify_mask bit STA_MODIFY_DELBA_TID_MSK to use this field. */

 u8 remove_immediate_ba_tid;

 /* Starting Sequence Number for added block-ack support.
 * Set modify_mask bit STA_MODIFY_ADDBA_TID_MSK to use this field. */

 __le16 add_immediate_ba_ssn;

 /*
 * Number of packets OK to transmit to station even though
 * it is asleep -- used to synchronise PS-poll and u-APSD
 * responses while ucode keeps track of STA sleep state.
 */

 __le16 sleep_tx_count;

 __le16 reserved2;
} __packed;


#define ADD_STA_SUCCESS_MSK  0x1
#define ADD_STA_NO_ROOM_IN_TABLE 0x2
#define ADD_STA_NO_BLOCK_ACK_RESOURCE 0x4
#define ADD_STA_MODIFY_NON_EXIST_STA 0x8
/*
 * REPLY_ADD_STA = 0x18 (response)
 */

struct iwl_add_sta_resp {
 u8 status; /* ADD_STA_* */
} __packed;

#define REM_STA_SUCCESS_MSK              0x1
/*
 *  REPLY_REM_STA = 0x19 (response)
 */

struct iwl_rem_sta_resp {
 u8 status;
} __packed;

/*
 *  REPLY_REM_STA = 0x19 (command)
 */

struct iwl_rem_sta_cmd {
 u8 num_sta;     /* number of removed stations */
 u8 reserved[3];
 u8 addr[ETH_ALEN]; /* MAC addr of the first station */
 u8 reserved2[2];
} __packed;


/* WiFi queues mask */
#define IWL_SCD_BK_MSK   BIT(0)
#define IWL_SCD_BE_MSK   BIT(1)
#define IWL_SCD_VI_MSK   BIT(2)
#define IWL_SCD_VO_MSK   BIT(3)
#define IWL_SCD_MGMT_MSK  BIT(3)

/* PAN queues mask */
#define IWL_PAN_SCD_BK_MSK  BIT(4)
#define IWL_PAN_SCD_BE_MSK  BIT(5)
#define IWL_PAN_SCD_VI_MSK  BIT(6)
#define IWL_PAN_SCD_VO_MSK  BIT(7)
#define IWL_PAN_SCD_MGMT_MSK  BIT(7)
#define IWL_PAN_SCD_MULTICAST_MSK BIT(8)

#define IWL_AGG_TX_QUEUE_MSK  0xffc00

#define IWL_DROP_ALL   BIT(1)

/*
 * REPLY_TXFIFO_FLUSH = 0x1e(command and response)
 *
 * When using full FIFO flush this command checks the scheduler HW block WR/RD
 * pointers to check if all the frames were transferred by DMA into the
 * relevant TX FIFO queue. Only when the DMA is finished and the queue is
 * empty the command can finish.
 * This command is used to flush the TXFIFO from transmit commands, it may
 * operate on single or multiple queues, the command queue can't be flushed by
 * this command. The command response is returned when all the queue flush
 * operations are done. Each TX command flushed return response with the FLUSH
 * status set in the TX response status. When FIFO flush operation is used,
 * the flush operation ends when both the scheduler DMA done and TXFIFO empty
 * are set.
 *
 * @queue_control: bit mask for which queues to flush
 * @flush_control: flush controls
 * 0: Dump single MSDU
 * 1: Dump multiple MSDU according to PS, INVALID STA, TTL, TID disable.
 * 2: Dump all FIFO
 */

struct iwl_txfifo_flush_cmd_v3 {
 __le32 queue_control;
 __le16 flush_control;
 __le16 reserved;
} __packed;

struct iwl_txfifo_flush_cmd_v2 {
 __le16 queue_control;
 __le16 flush_control;


/*
 * REPLY_WEP_KEY = 0x20
 */

struct iwl_wep_key {
 u8 key_index;
 u8 key_offset
 u8 reserved1[2];
 u8key_size
 u8 reserved2[3];
 u8 key[16];
} __packed;

struct iwl_wep_cmd {
 u8 num_keys;
 u8 global_key_type;
 u8 flags;
 u8 reserved;
 struct iwl_wep_key key[];
} __packed;

#define WEP_KEY_WEP_TYPE 1
#define WEP_KEYS_MAX 4
#define WEP_INVALID_OFFSET 0xff
#define WEP_KEY_LEN_64 5
#define WEP_KEY_LEN_128 13

/******************************************************************************
 * (4)
 * Rx Responses:
 *
 *****************************************************************************/


# REPLY_RXON=0x10,
  = 0x13

#define  REPLY_ADD_STA =0,
GS_MOD_CCK_MSK cpu_to_le161< )
 /* RX, TX, LEDs */ =01c,
java.lang.StringIndexOutOfBoundsException: Range [24, 25) out of bounds for length 24
RX_RES_PHY_FLAGS_ANTENNA_MSKx70
 RX_RES_PHY_FLAGS_ANTENNA_POS 
RX_RES_PHY_FLAGS_AGG_MSK(1 <<7java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53

define (x7<8
RX_RES_STATUS_SEC_TYPE_NONEx0 <8
_TYPE_WEPx1<8java.lang.StringIndexOutOfBoundsException: Index 45 out of bounds for length 45
#define RX_RES_STATUS_SEC_TYPE_CCMP0x2 < 8
#define RX_RES_STATUS_SEC_TYPE_TKIP0x3< 8)
#define RX_RES_STATUS_SEC_TYPE_ERR (0x7 << 8)

#define RX_RES_STATUS_STATION_FOUND1<<6)
#define RX_RES_STATUS_NO_STATION_INFO_MISMATCH

RX_RES_STATUS_DECRYPT_TYPE_MSK<
#R  ,

#efine  (x1<1)
#define RX_RES_STATUS_BAD_KEY_TTAK (0x2 << 11)

#define RX_MPDU_RES_STATUS_ICV_OK (0x20)
#efine RX_MPDU_RES_STATUS_MIC_OK0)
#defineREPLY_WOWLAN_GET_STATUS * Minimum * Set the minimum  *  - 4 standard java.lang.StringIndexOutOfBoundsException: Index 23 out of bounds for length 23
  0)


#define IWLAGN_RX_RES_PHY_CNT 8
define1
#define IWLAGN_RX_RES_RSSI_AB_IDX 2
#define IWLAGN_RX_RES_RSSI_C_IDX  java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 35
##  25
 * This queue number * because the ucode will stop * requiredjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#define IWLAGN_OFDM_RSSI_INBAND_A_BITMSK 0x00ff
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
# *  REPLY_RX (response *  REPLY_RX_MPDUh command and ** High-throughput (HT) rate format for bits 7:0 (bit 8 must *  2-0:  0) *        1)   *        2)   *        3)  24 Mbps * *        5)  48 Mbps
#define  *        0xF)   9  *        0x5)  12 Mbps
#define *         20)  2 Mbps *         55)  5.5 Mbps *        110)  11 Mbps
definex20
#define IWLAGN_OFDM_RSSI_INBAND_C_BITMSK 0x00ff
#define/* Bit 8: (1) HT format, (0) legacy format in bits 7:0 */
#define IWLAGN_OFDM_RSSI_C_BIT_POSjava.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 36

struct
 __le32 non_cfg_phydefine 1java.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
} __packed;


/*
 * REPLY_RX = 0xc3 (response only, not a command)
 * Used only for legacy (non 11n) frames.
 */

struct iwl_rx_phy_res
define x2000
 u8 cfg_phy_cnt;  /* configurable DSP phy data byte count */
 u8 * bit14
u8;
_le64;/
 __le32 0x10000
_le16; /* general phy flags: band, modulation, ... */
 __le16 channel  3
u8non_cfg_phy_buf32;java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
 __le32 java.lang.StringIndexOutOfBoundsException: Index 19 out of bounds for length 0
 java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
 __le16 *
} __packed;

struct {
 __le16/*
__le16 reserved;
} __packed;


/******************************************************************************
 * (5)
 * Tx Commands & Responses:
 *
 * Driver must place each REPLY_TX command into one of the prioritized Tx
 * queues in host DRAM, shared between driver and device (see comments for
 * SCD registers and Tx/Rx Queues).  When the device's Tx scheduler and uCode
 * are preparing to transmit, the device pulls the Tx command over the PCI
 * bus via one of the device's Tx DMA channels, to fill an internal FIFO
 * from which data will be transmitted.
 *
 * uCode handles all timing and protocol related to control frames
 * (RTS/CTS/ACK), based on flags in the Tx command.  uCode and Tx scheduler
 * handle reception of block-acks; uCode updates the host driver via
 * REPLY_COMPRESSED_BA.
 *
 * uCode handles retrying Tx when an ACK is expected but not received.
 * This includes trying lower data rates than the one requested in the Tx
 * command, as set up by the REPLY_TX_LINK_QUALITY_CMD (agn).
 *
 * Driver sets up transmit power for various rates via REPLY_TX_PWR_TABLE_CMD.
 * This command must be executed after every RXON command, before Tx can occur.
 *****************************************************************************/


/* REPLY_TX Tx flags field */ * This command enables the driver to java.lang.StringIndexOutOfBoundsException: Range [0, 1) out of bounds for length 0

/*
 * 1: Use RTS/CTS protocol or CTS-to-self if spec allows it
 * before this frame. if CTS-to-self required check
 * RXON_FLG_SELF_CTS_EN status.
 */

#define TX_CMD_FLG_PROT_REQUIRE_MSK * to receive commands from the driver.  This * notification that the driver will receive after  * this "alive" is indicated by  *

/* 1: Expect ACK from receiving station
 * 0: Don't expect ACK (MAC header's duration field s/b 0)
 * Set this for unicast frames, but not broadcast/multicast. */

*      __le32 write_index;  next circular buffer *

/* For agn devices:
 * 1: Use rate scale table (see REPLY_TX_LINK_QUALITY_CMD).
 *    Tx command's initial_rate_index indicates first rate to try;
 *    uCode walks through table for additional Tx attempts.
 * 0: Use Tx rate/MCS from Tx command's rate_n_flags field.
 *    This rate will be used for all Tx attempts; it will not be scaled. */

*     Entries without timestamps contain only event_id *

/* 1: Expect immediate block-ack.
 * Set when Txing a block-ack request frame.  Also set TX_CMD_FLG_ACK_MSK. */

#define TX_CMD_FLG_IMM_BA_RSP_MASK  cpu_to_le32(1 << 6)

/* Tx antenna selection field; reserved (0) for agn devices. */ * read * need to be ordered  
TX_CMD_FLG_ANT_SEL_MSK(0xf00

/* 1: Ignore Bluetooth priority for this frame.
 * 0: Delay Tx until Bluetooth device is done (normal usage). */

#define TX_CMD_FLG_IGNORE_BT cpu_to_le32(1 << 12)

/* 1: uCode overrides sequence control field in MAC header.
 * 0: Driver provides sequence control field in MAC header.
 * Set this for management frames, non-QOS data frames, non-unicast frames,
 * and also in Tx command embedded in REPLY_SCAN_CMD for active scans. */

#define TX_CMD_FLG_SEQ_CTL_MSK cpu_to_le32(1 << 13)u2ilink2

/* 1: This frame is non-last MPDU; more fragments are coming.
 * 0: Last fragment, or not using fragmentation. */

  tsf_low

/* 1: uCode calculates and inserts Timestamp Function (TSF) in outgoing frame.
 * 0: No TSF required in outgoing frame.
 * Set this for transmitting beacons and probe responses. */

u ;  HW version

/* 1: Driver inserted 2 bytes pad after the MAC header, for (required) dword ; /* frame pointer */
 *    alignment of frame's payload data field.
 * 0: No pad
 * Set this for MAC headers with 26 or 30 bytes, i.e. those with QOS or ADDR4
 * field (but not both).  Driver must align frame data (i.e. data following
 * MAC header) to DWORD boundary. */

#define TX_CMD_FLG_MH_PAD_MSK cpu_to_le32(1 << 20)

/* accelerate aggregation support
 * 0 - no CCMP encryption; 1 - CCMP encryption */

#define  u32 isr1;

*HCCA-AP  duration overwriting.*/
FLG_DUR_MSK cpu_to_le321< 2)


/*
 * TX command security control
 */

 TX_CMD_SEC_WEP 0
define   x02
#define TX_CMD_SEC_TKIP  u32isr_pref/
#define t_event
#define TX_CMD_SEC_SHIFT u32l2p_control;/* L2pControlField */
#define TX_CMD_SEC_KEY128 0x08

/*
 * REPLY_TX = 0x1c (command)
 */


/*
 * Used for managing Tx retries when expecting block-acks.
 * Driver should set these fields to 0.
 */

struct ;
 u8__ reserved1
 u8 bt_kill_cnt;  u8 ver_type
 _le16;
}__packed;

structiwl_tx_cmd{
 /* New members MUST be added within the __struct_group() macro below. */
 __struct_group
  /*
 * MPDU byte count:
 * MAC header (24/26/30/32 bytes) + 2 bytes pad if 26/30 header size,
 * + 8 byte IV for CCM or TKIP (not used for WEP)
 * + Data payload
 * + 8-byte MIC (not used for CCM/WEP)
 * NOTE:  Does not include Tx command bytes, post-MAC pad bytes,
 *        MIC (CCM) 8 bytes, ICV (WEP/TKIP/CKIP) 4 bytes, CRC 4 bytes.i
 * Range: 14-2342 bytes.
 */

  __le16 len

  /*
 * MPDU or MSDU byte count for next frame.
 * Used for fragmentation and bursting, but not 11n aggregation.
 * Same as "len", but for next frame.  Set to 0 if not applicable.
 */

  __le16

  __le32 tx_flags; /* TX_CMD_FLG_* */

  /* uCode may modify this field of the Tx command (in host DRAM!).
 * Driver must also set dram_lsb_ptr and dram_msb_ptr in this cmd. */

  struct   cpu_to_le16x7< )

  /* Rate for *all* Tx attempts, if TX_CMD_FLG_STA_RATE_MSK is cleared. */
  __le32 rate_n_flags; /* RATE_MCS_* */

 */
   sta_idjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12

define  (x1<4
  u8sec_ctl/

  /*
 * Index into rate table (see REPLY_TX_LINK_QUALITY_CMD) for initial
 * Tx attempt, if TX_CMD_FLG_STA_RATE_MSK is set.  Normally "0" for
 * data frames, this field may be used to selectively reduce initial
 * rate (via non-0 value) for special frames (e.g. management), while
 * still supporting rate scaling for all frames.
 */

  u8 initial_rate_index;
  ;
  TGg   *
  __le16 next_frame_flags/
 le16
  {
   __le32 life_time;
   __le32 attempt;
  } stop_time;

/* HostDRAM  pointer" .
   *#define RXON_FLG_ANT_B_MSK              cpu_to_le32(1 << 9)
  __le32 dram_lsb_ptr;
  u8 dram_msb_ptr;

  8; /*byte 50 */
  u8
 ;
u {
   _define 2)
   __le16 attempt_duration;
 }timeout

  /*
 * Duration of EDCA burst Tx Opportunity, in 32-usec units.
 * Set this if txop time is not specified by HCCA protocol (e.g. by AP).
 */

  __le16 driver_txop;

 );
 /*
 * MAC header goes here, followed by 2 bytes padding if MAC header
 * length is 26 or 30 bytes, followed by payload data
 */

  CHANNEL_MODE_RESERVED=3
} __packed;RXON_FLG_CHANNEL_MODE_LEGACY cpu_to_le32CHANNEL_MODE_LEGACY< RXON_FLG_CHANNEL_MODE_POS)
(offsetofstruct iwl_tx_cmd hdr= (struct iwl_tx_cmd_hdr
       structmember  _();

#RXON_FLG_SELF_CTS_EN(0<<0java.lang.StringIndexOutOfBoundsException: Index 51 out of bounds for length 51
 attempts.
 *
 are behavior uCode is
 * no special operation required from driver; except for RFKILL_FLUSH,
 * which #define RXON_FILT cpu_to_le321< 4
 *java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
enum {
 TX_STATUS_SUCCESS = 0x01,
 TX_STATUS_DIRECT_DONE = 0x02,
 /* postpone TX */
 TX_STATUS_POSTPONE_DELAY = 0x40 * NOTE:  When tuning to a new channel *        RXON_FILTER_ASSOC_MSK to 0.  This will clear station-dependent
 TX_STATUS_POSTPONE_FEW_BYTES = 0x41,
 TX_STATUS_POSTPONE_BT_PRIO = 0x42,
 TX_STATUS_POSTPONE_QUIET_PERIOD = 0x43, *        channel.
 TX_STATUS_POSTPONE_CALC_TTAK = 0x44,
 /* abort TX */
 *        regardless of whether RXON_FILTER_ASSOC_MSK is set.
TX_STATUS_FAIL_SHORT_LIMIT 0x82,
  = 0x83,
 TX_STATUS_FAIL_FIFO_UNDERRUN = 0x84,
 TX_STATUS_FAIL_DRAIN_FLOW = 0x85,
 TX_STATUS_FAIL_RFKILL_FLUSH = 0x86,
 TX_STATUS_FAIL_LIFE_EXPIRE=0x87,
 TX_STATUS_FAIL_DEST_PS x88
 TX_STATUS_FAIL_HOST_ABORTED = 0x89,
 _le16;
 TX_STATUS_FAIL_STA_INVALID   air_propagation
 TX_STATUS_FAIL_FRAG_DROPPED = 0 8ofdm_basic_rates
 TX_STATUS_FAIL_TID_DISABLE = 0x8d __le16assoc_id;
TX_STATUS_FAIL_FIFO_FLUSHED 0x8e,
 TX_STATUS_FAIL_INSUFFICIENT_CF_POLL = 0x8f,
 TX_STATUS_FAIL_PASSIVE_NO_RX x90
=,
};

#define  _le16;
#define TX_PACKET_MODE_BURST_SEQ _;
#define TX_PACKET_MODE_BURST_FIRST 0x0200 * REPLY_RXON_ASSOC = 0x11 (command, has simple generic response)

enum
 TX_POWER_PA_NOT_ACTIVE = 0  ofdm_ht_single_stream_basic_rates
};

enum
  = 0, /* bits 0:7 */
 TX_STATUS_DELAY_MSK
 TX_STATUS_ABORT_MSK = 0x00000080,
 TX_PACKET_MODE_MSK = 0x0000ff00, /* bits 8:15 */
 TX_FIFO_NUMBER_MSK = 0x00070000, /* bits 16:18 */
 TX_RESERVED =n_time_cmd{
 TX_POWER_PA_DETECT_MSK = 0x7f800000, /* bits 23:30 */
 TX_ABORT_REQUIRED_MSK = 0x80000000, /* bits 31:31 */
};

/* *******************************;
 * TX aggregation status
 ******************************* */


 {
  = 0x00
 AGG_TX_STATE_UNDERRUN_MSK band -.GHz -.GHz
  = x02
= 0x04,
  = x08
AGG_TX_STATE_LAST_SENT_TTL_MSK,
 AGG_TX_STATE_LAST_SENT_TRY_CNT_MSK = 0x20,
 AGG_TX_STATE_LAST_SENT_BT_KILL_MSK0,
 AGG_TX_STATE_SCD_QUERY_MSK = 0x80  @: reserved
 AGG_TX_STATE_TEST_BAD_CRC32_MSK = 
 AGG_TX_STATE_RESPONSE_MSK = 0x1ff,
AGG_TX_STATE_DUMP_TX_MSK=0x200
AGG_TX_STATE_DELAY_TX_MSK =0400
}java.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2

#define AGG_TX_STATUS_MSK 0x00000fff /* bits 0:11 */
#define AGG_TX_TRY_MSK  0x0000f000 /* bits 12:15 */
#define AGG_TX_TRY_POS 1

#define * struct iwl6000_channel_switch_cmd - channel switch command (6000 series)
         AGG_TX_STATE_LAST_SENT_TRY_CNT_MSK | \
         AGG_TX_STATE_LAST_SENT_BT_KILL_MSK * @channel: new channel number

/* # tx attempts for first frame in aggregation */
#efineAGG_TX_STATE_TRY_CNT_POS
 ;

/* Command ID and sequence number of Tx command for this frame */
#define AGG_TX_STATE_SEQ_NUM_POS 16
  xffff0000

/*
 * REPLY_TX = 0x1c (response)
 *
 * This response may be in one of two slightly different formats, indicated
 * by the frame_count field:
 *
 * 1)  No aggregation (frame_count == 1).  This reports Tx results for
 *     a single frame.  Multiple attempts, at various bit rates, may have
 *     been made for this frame.
 *
 * 2)  Aggregation (frame_count > 1).  This reports Tx results for
 *     2 or more frames that used block-acknowledge.  All frames were
 *     transmitted at same rate.  Rate scaling may have been used if first
 *     frame in this new agg block failed in previous agg block(s).
 *
 *     Note that, for aggregation, ACK (block-ack) status is not delivered here;
 *     block-ack has not been received by the time the agn device records
 *     this status.
 *     This status relates to reasons the tx might have been blocked or aborted
 *     within the sending station (this agn device), rather than whether it was
 *     received successfully by the destination station.
 */

struct agg_tx_status {
 _structiwl_ac_qos{
 __ sequence
} __packed  aifsn

/* refer to ra_tid */ __;
#defineIWLAGN_TX_RES_TID_POS
QOS_PARAM_FLG_UPDATE_EDCA_MSK(001
  4
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

struct iwlagn_tx_resp { *
 u8 frame_count;  /* 1 no aggregation, >1 aggregation */
 u8 bt_kill_count; java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 u8 failure_rts;  /* # failures due to unsuccessful RTS */
 u8 ; /* # failures due to no ACK (unused for agg) */

 /* For non-agg:  Rate at which frame was successful.
 * For agg:  Rate at which all frames were transmitted. */

 __le32

 /* For non-agg:  RTS + CTS + frame tx attempts time + ACK.
 * For agg:  RTS + CTS + aggregation tx time + block-ack time. */

 __le16 wireless_media_time; /* uSecs */

 u8 pa_status;  /* RF power amplifier measurement (not used) */
 u8 pa_integ_res_a[define  cpu_to_le32(1< 1)
 u8 pa_integ_res_b[3];
 u8 pa_integ_res_CSTA_FLG_RTS_MIMO_PROT_MSK(1 <7

 __le32 tfd_info;
 define cpu_to_le323<<1)
 __le16 byte_cnt;
 u8 tlc_info;
 u8 ra_tid;  /* tid (0:3), sta_id (4:7) */
 __le16 #define STA_FLG_AGG_MPDU_DENSITY_MSK(7 < 2)
 /*
 * For non-agg:  frame status TX_STATUS_*
 * For agg:  status of 1st frame, AGG_TX_STATE_*; other frame status
 *           fields follow this one, up to frame_count.
 *           Bit fields:
 *           11- 0:  AGG_TX_STATE_* status code
 *           15-12:  Retry count for 1st frame in aggregation (retries
 *                   occur if tx failed for this frame when it was a
 *                   member of a previous aggregation block).  If rate
 *                   scaling is used, retry count indicates the rate
 *                   table entry used for all frames in the new agg.
 *           31-16:  Sequence # for this frame's Tx cmd (not SSN!)
 */

 struct agg_tx_status status; /* TX status (in aggregation -
 * status of 1st frame) */

}_;
/*
 * REPLY_COMPRESSED_BA = 0xc5 (response only, not a command)
 *
 * Reports Block-Acknowledge from recipient station
 */

struct iwl_compressed_ba_resp {
 __le32 sta_addr_lo32  0x10
 _ sta_addr_hi16
 __le16

 /* Index of recipient (BA-sending) station in uCode's station table */tkip_rx_tsc_byte2;/
 u8 ;
 u8 tid;
 __le16 seq_ctl;
 __le64 bitmap;
 __le16 scd_flow;
 __le16 scd_ssn;
 u8 _le16tkip_rx_ttak[] /* 10-byte unicast TKIP TTAK */
  txed_2_done/* number of frames acked */
_ reserved1
} __packed;

/*
 * REPLY_TX_PWR_TABLE_CMD = 0x97 (command, has simple generic response)
 *
 */


/*RS_NEW_API: only TLC_RTS remains and moved to bit 0 */
#define  LINK_QUAL_FLAGS_SET_STA_TLC_RTS_MSK * @reserved2: reserved for *

/* # of EDCA prioritized tx fifos */ * Some indexes have special purposes *
struct {

/* # entries in rate scale table to support Tx retries */
LINK_QUAL_MAX_RETRY_NUM6

/* Tx antenna selection values */
#define  LINK_QUAL_ANT_A_MSK * initial Tx attempt * REPLY_TX_LINK_QUALITY_CMD,
#define  LINK_QUAL_ANT_B_MSK (1 << 1)
#define  LINK_QUAL_ANT_MSK *        clean.  Moving into RF_KILL state  *        new station table before transmitting anything on the RXON channel


/*
 * struct iwl_link_qual_general_params
 *
 * Used in REPLY_TX_LINK_QUALITY_CMD
 */

struct iwl_link_qual_general_params {
 u8 flags;

 /* No entries at or above this (driver chosen) index contain MIMO */
u8;

 /* Best single antenna to use for single stream (legacy, SISO). */  ;
  _ ;/

 /* Best antennas to use for MIMO */
 u8 dual_stream_ant_msk  *

 /*
 * If driver needs to use different initial rates for different
 * EDCA QOS access categories (as implemented by tx fifos 0-3),
 * this table will set that up, by indicating the indexes in the
 * rs_table[LINK_QUAL_MAX_RETRY_NUM] rate table at which to start.
 * Otherwise, driver should set all entries to 0.
 *
 * Entry usage:
 * 0 = Background, 1 = Best Effort (normal), 2 = Video, 3 = Voice
 * TX FIFOs above 3 use same value (typically 0) as TX FIFO 3.
 */

 u8 start_rate_index[LINK_QUAL_AC_NUM];
}_packed

#define LINK_QUAL_AGG_TIME_LIMIT_DEF
define (00
#define LINK_QUAL_AGG_TIME_LIMIT_MIN (100)

#define LINK_QUAL_AGG_DISABLE_START_DEF x2
##ADD_STA_MODIFY_NON_EXIST_STA
#define LINK_QUAL_AGG_DISABLE_START_MIN (0)

#define LINK_QUAL_AGG_FRAME_LIMIT_DEFstatus
#define LINK_QUAL_AGG_FRAME_LIMIT_MAX (63java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
#efine LINK_QUAL_AGG_FRAME_LIMIT_MIN (0)

/*  REPLY_REM_STA = 0x19 (command)
 * struct iwl_link_qual_agg_params
 *
 * Used in REPLY_TX_LINK_QUALITY_CMD
 */

struct {

 /*
 *Maximum number of uSec in aggregation.
 * default set to 4000 (4 milliseconds) if not configured in .cfg
 */

 __le16

 /*
 * Number of Tx retries allowed for a frame, before that frame will
 * no longer be considered for the start of an aggregation sequence
 * (scheduler will then try to tx it as single frame).
 * Driver should set this to 3.
 */

  ;

 /*
 * Maximum number of frames in aggregation.
 * 0 = no limit (default).  1 = no aggregation.
 * Other values = max # frames in aggregation.
 */

 u8 agg_frame_cnt_limit; * operations are done. Each * status set in the TX response * the flush operation ends when * are set. *

  * 2: Dump all FIFO
} __ le32;

/*
 * REPLY_TX_LINK_QUALITY_CMD = 0x4e (command, has simple generic response)
 *
 * For agn devices
 *
 * Each station in the agn device's internal station table has its own table
 * of 16
 * Tx rates and modulation modes (e.g. legacy/SISO/MIMO) for retrying Tx when
 * an ACK is not received.  This command replaces the entire table for
 * one station.
 *
 * NOTE:  Station must already be in agn device's station table.
 *   Use REPLY_ADD_STA.
 *
 * The rate scaling procedures described below work well.  Of course, other
 * procedures are possible, and may work better for particular environments.
 *
 *
 * FILLING THE RATE TABLE
 *
 * Given a particular initial rate and mode, as determined by the rate
 * scaling algorithm described below, the Linux driver uses the following
 * formula to fill the rs_table[LINK_QUAL_MAX_RETRY_NUM] rate table in the
 * Link Quality command:
 *
 *
 * 1)  If using High-throughput (HT) (SISO or MIMO) initial rate:
 *     a) Use this same initial rate for first 3 entries.
 *     b) Find next lower available rate using same mode (SISO or MIMO),
 *        use for next 3 entries.  If no lower rate available, switch to
 *        legacy mode (no HT40 channel, no MIMO, no short guard interval).
 *     c) If using MIMO, set command's mimo_delimiter to number of entries
 *        using MIMO (3 or 6).
 *     d) After trying 2 HT rates, switch to legacy mode (no HT40 channel,
 *        no MIMO, no short guard interval), at the next lower bit rate
 *        (e.g. if second HT bit rate was 54, try 48 legacy), and follow
 *        legacy procedure for remaining table entries.
 *
 * 2)  If using legacy initial rate:
 *     a) Use the initial rate for only one entry.
 *     b) For each following entry, reduce the rate to next lower available
 *        rate, until reaching the lowest available rate.
 *     c) When reducing rate, also switch antenna selection.
 *     d) Once lowest available rate is reached, repeat this rate until
 *        rate table is filled (16 entries), switching antenna each entry.
 *
 *
 * ACCUMULATING HISTORY
 *
 * The rate scaling algorithm for agn devices, as implemented in Linux driver,
 * uses two sets of frame Tx success history:  One for the current/active
 * modulation mode, and one for a speculative/search mode that is being
 * attempted. If the speculative mode turns out to be more effective (i.e.
 * actual transfer rate is better), then the driver continues to use the
 * speculative mode as the new current active mode.
 *
 * Each history set contains, separately for each possible rate, data for a
 * sliding window of the 62 most recent tx attempts at that rate.  The data
 * includes a shifting bitmap of success(1)/failure(0), and sums of successful
 * and attempted frames, from which the driver can additionally calculate a
 * success ratio (success / attempted) and number of failures
 * (attempted - success), and control the size of the window (attempted).
 * The driver uses the bit map to remove successes from the success sum, as
 * the oldest tx attempts fall out of the window.
 *
 * When the agn device makes multiple tx attempts for a given frame, each
 * attempt might be at a different rate, and have different modulation
 * characteristics (e.g. antenna, fat channel, short guard interval), as set
 * up in the rate scaling table in the Link Quality command.  The driver must
 * determine which rate table entry was used for each tx attempt, to determine
 * which rate-specific history to update, and record only those attempts that
 * match the modulation characteristics of the history set.
 *
 * When using block-ack (aggregation), all frames are transmitted at the same
 * rate, since there is no per-attempt acknowledgment from the destination
 * station.  The Tx response struct iwl_tx_resp indicates the Tx rate in
 * rate_n_flags field.  After receiving a block-ack, the driver can update
 * history for the entire block all at once.
 *
 *
 * FINDING BEST STARTING RATE:
 *
 * When working with a selected initial modulation mode (see below), the
 * driver attempts to find a best initial rate.  The initial rate is the
 * first entry in the Link Quality command's rate table.
 *
 * 1)  Calculate actual throughput (success ratio * expected throughput, see
 *     table below) for current initial rate.  Do this only if enough frames
 *     have been attempted to make the value meaningful:  at least 6 failed
 *     tx attempts, or at least 8 successes.  If not enough, don't try rate
 *     scaling yet.
 *
 * 2)  Find available rates adjacent to current initial rate.  Available means:
 *     a)  supported by hardware &&
 *     b)  supported by association &&
 *     c)  within any constraints selected by user
 *
 * 3)  Gather measured throughputs for adjacent rates.  These might not have
 *     enough history to calculate a throughput.  That's okay, we might try
 *     using one of them anyway!
 *
 * 4)  Try decreasing rate if, for current rate:
 *     a)  success ratio is < 15% ||
 *     b)  lower adjacent rate has better measured throughput ||
 *     c)  higher adjacent rate has worse throughput, and lower is unmeasured
 *
 *     As a sanity check, if decrease was determined above, leave rate
 *     unchanged if:
 *     a)  lower rate unavailable
 *     b)  success ratio at current rate > 85% (very good)
 *     c)  current measured throughput is better than expected throughput
 *         of lower rate (under perfect 100% tx conditions, see table below)
 *
 * 5)  Try increasing rate if, for current rate:
 *     a)  success ratio is < 15% ||
 *     b)  both adjacent rates' throughputs are unmeasured (try it!) ||
 *     b)  higher adjacent rate has better measured throughput ||
 *     c)  lower adjacent rate has worse throughput, and higher is unmeasured
 *
 *     As a sanity check, if increase was determined above, leave rate
 *     unchanged if:
 *     a)  success ratio at current rate < 70%.  This is not particularly
 *         good performance; higher rate is sure to have poorer success.
 *
 * 6)  Re-evaluate the rate after each tx frame.  If working with block-
 *     acknowledge, history and statistics may be calculated for the entire
 *     block (including prior history that fits within the history windows),
 *     before re-evaluation.
 *
 * FINDING BEST STARTING MODULATION MODE:
 *
 * After working with a modulation mode for a "while" (and doing rate scaling),
 * the driver searches for a new initial mode in an attempt to improve
 * throughput.  The "while" is measured by numbers of attempted frames:
 *
 * For legacy mode, search for new mode after:
 *   480 successful frames, or 160 failed frames
 * For high-throughput modes (SISO or MIMO), search for new mode after:
 *   4500 successful frames, or 400 failed frames
 *
 * Mode switch possibilities are (3 for each mode):
 *
 * For legacy:
 *   Change antenna, try SISO (if HT association), try MIMO (if HT association)
 * For SISO:
 *   Change antenna, try MIMO, try shortened guard interval (SGI)
 * For MIMO:
 *   Try SISO antenna A, SISO antenna B, try shortened guard interval (SGI)
 *
 * When trying a new mode, use the same bit rate as the old/current mode when
 * trying antenna switches and shortened guard interval.  When switching to
 * SISO from MIMO or legacy, or to MIMO from SISO or legacy, use a rate
 * for which the expected throughput (under perfect conditions) is about the
 * same or slightly better than the actual measured throughput delivered by
 * the old/current mode.
 *
 * Actual throughput can be estimated by multiplying the expected throughput
 * by the success ratio (successful / attempted tx frames).  Frame size is
 * not considered in this calculation; it assumes that frame size will average
 * out to be fairly consistent over several samples.  The following are
 * metric values for expected throughput assuming 100% success ratio.
 * Only G band has support for CCK rates:
 *
 *           RATE:  1    2    5   11    6   9   12   18   24   36   48   54   60
 *
 *              G:  7   13   35   58   40  57   72   98  121  154  177  186  186
 *              A:  0    0    0    0   40  57   72   98  121  154  177  186  186
 *     SISO 20MHz:  0    0    0    0   42  42   76  102  124  159  183  193  202
 * SGI SISO 20MHz:  0    0    0    0   46  46   82  110  132  168  192  202  211
 *     MIMO 20MHz:  0    0    0    0   74  74  123  155  179  214  236  244  251
 * SGI MIMO 20MHz:  0    0    0    0   81  81  131  164  188  222  243  251  257
 *     SISO 40MHz:  0    0    0    0   77  77  127  160  184  220  242  250  257
 * SGI SISO 40MHz:  0    0    0    0   83  83  135  169  193  229  250  257  264
 *     MIMO 40MHz:  0    0    0    0  123 123  182  214  235  264  279  285  289
 * SGI MIMO 40MHz:  0    0    0    0  131 131  191  222  242  270  284  289  293
 *
 * After the new mode has been tried for a short while (minimum of 6 failed
 * frames or 8 successful frames), compare success ratio and actual throughput
 * estimate of the new mode with the old.  If either is better with the new
 * mode, continue to use the new mode.
 *
 * Continue comparing modes until all 3 possibilities have been tried.
 * If moving from legacy to HT, try all 3 possibilities from the new HT
 * mode.  After trying all 3, a best mode is found.  Continue to use this mode
 * for the longer "while" described above (e.g. 480 successful frames for
 * legacy), and then repeat the search process.
 *
 */

struct;

 /* Index of destination/recipient station in uCode's station table */
 u8 sta_id;
 u8 reserved1;
 __le16 control;  /* not used */
 struct iwl_link_qual_general_params general_params;
 struct iwl_link_qual_agg_params agg_params;

 /*
 * Rate info; when using rate-scaling, Tx command's initial_rate_index
 * specifies 1st Tx rate attempted, via index into this table.
 * agn devices works its way through table when retrying Tx.
 */

java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
  __ java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
 [LINK_QUAL_MAX_RETRY_NUM
 __le32 reserved2 =x44
} __packed =0,

/*
 * BT configuration enable flags:
 *   bit 0 - 1: BT channel announcement enabled
 *           0: disable
 *   bit 1 - 1: priority of BT device enabled
 *           0: disable
 *   bit 2 - 1: BT 2 wire support enabled
 *           0: disable
 */

#define BT_COEX_DISABLEjava.lang.StringIndexOutOfBoundsException: Index 2 out of bounds for length 2
#define BT_ENABLE_CHANNEL_ANNOUNCE BIT
#define BT_ENABLE_PRIORITY =x0
#define BT_ENABLE_2_WIRE

#define BT_COEX_DISABLE (0x0)
#define BT_COEX_ENABLE  (  = x00000080

#define BT_LEAD_TIME_MIN   = x00070000/* bits 16:18 */
# BT_LEAD_TIME_DEF (0)
 TX_POWER_PA_DETECT_MSK 0, /* bits 23:30 */

#define BT_MAX_KILL_MIN (0x1)
#define BT_MAX_KILL_DEF (0x5)
#define BT_MAX_KILL_MAX (0xFF)

#define /* ************************
#define BT_DURATION_LIMIT_MAX 1250
#define BT_DURATION_LIMIT_MIN 625

#efine BT_ON_THRESHOLD_DEF4
#define BT_ON_THRESHOLD_MAX 1000
#define BT_ON_THRESHOLD_MIN 1

#define BT_FRAG_THRESHOLD_DEF 0
#define BT_FRAG_THRESHOLD_MAX
#define BT_FRAG_THRESHOLD_MIN 0

#define BT_AGG_THRESHOLD_DEF 1200
java.lang.NullPointerException
#define  |java.lang.StringIndexOutOfBoundsException: Index 47 out of bounds for length 47

/*
 * REPLY_BT_CONFIG = 0x9b (command, has simple generic response)
 *
 * agn devices support hardware handshake with Bluetooth device on
 * same platform.  Bluetooth device alerts wireless device when it will Tx;
 * wireless device can delay or kill its own Tx to accommodate.
 */

struct iwl_bt_cmd {
 u8 flags;
 u8 lead_time;
 u8 max_kill;
 u8 reserved;
 __le32 kill_ack_mask *     Note that, for aggregation, ACK (block-acke the agn device records
 __le32 kill_cts_mask;
} __packed;

struct {

#define }_;
#define IWLAGN_BT_FLAG_COEX_MODE_SHIFT
#define IWLAGN_BT_FLAG_COEX_MODE_DISABLED 0
#define java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 30
define 2
#define IWLAGN_BT_FLAG_COEX_MODE_4W  3

#define IWLAGN_BT_FLAG_UCODE_DEFAULT /* For non-agg:  Rate at which frame was successful.
/* Disable Sync PSPoll on SCO/eSCO */

#define IWLAGN_BT_FLAG_SYNC_2_BT_DISABLE BIT(7)

#define IWLAGN_BT_PSP_MIN_RSSI_THRESHOLD -75 /* dBm */
#define IWLAGN_BT_PSP_MAX_RSSI_THRESHOLD wireless_media_time

#define IWLAGN_BT_PRIO_BOOST_MAX []java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 22
#_ ;
#define IWLAGN_BT_PRIO_BOOST_DEFAULT   tlc_info
#define IWLAGN_BT_PRIO_BOOST_DEFAULT32 ;

#define IWLAGN_BT_MAX_KILL_DEFAULT 5

#define IWLAGN_BT3_T7_DEFAULT  1

enum iwl_bt_kill_idx {
 IWL_BT_KILL_DEFAULT = 0,
 IWL_BT_KILL_OVERRIDE = 1,
 IWL_BT_KILL_REDUCE = 2,
};

#define IWLAGN_BT_KILL_ACK_MASK_DEFAULT cpu_to_le32(0xffff0000)
#define IWLAGN_BT_KILL_CTS_MASK_DEFAULT cpu_to_le32(0xffff0000)
#define IWLAGN_BT_KILL_ACK_CTS_MASK_SCO cpu_to_le32(0java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 31
#define IWLAGN_BT_KILL_ACK_CTS_MASK_REDUCE cpu_to_le32(0)

#define IWLAGN_BT3_PRIO_SAMPLE_DEFAULT 2

#define IWLAGN_BT3_T2_DEFAULTle16;

defineIWLAGN_BT_VALID_ENABLE_FLAGS cpu_to_le16BIT)
#define IWLAGN_BT_VALID_BOOST  cpu_to_le16(BIT(1))
#define IWLAGN_BT_VALID_MAX_KILL cpu_to_le16(BIT(2))
#define IWLAGN_BT_VALID_3W_TIMERS cpu_to_le16(BIT u8 ;
#define IWLAGN_BT_VALID_KILL_ACK_MASK cpu_to_le16 _ seq_ctl
#define IWLAGN_BT_VALID_KILL_CTS_MASK cpu_to_le16java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
#define};
efine  7

#define IWLAGN_BT_ALL_VALID_MSK  (java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 3
   #  LINK_QUAL_FLAGS_SET_STA_TLC_RTS_MSK<0
     / #ofEDCA txfifos/
   IWLAGN_BT_VALID_3W_TIMERS|
     IWLAGN_BT_VALID_KILL_ACK_MASK |
     IWLAGN_BT_VALID_KILL_CTS_MASK | \
    define 6
     IWLAGN_BT_VALID_3W_LUT)/* Tx antenna selection values */

#define IWLAGN_BT_REDUCED_TX_PWR BIT(#  LINK_QUAL_ANT_MSK|)

#define IWLAGN_BT_DECISION_LUT_SIZE 12

struct * Used in REPLY_TX_LINK_QUALITY_CMD
 u8struct  {
u8;/
 u8
 u8 bt3_timer_t7_value;
 _le32;
 __le32 kill_cts_mask;
 u8 bt3_prio_sample_time;
 u8 u8; /* LINK_QUAL_ANT_* */
 __e16; /* unused */
 __le32  dual_stream_ant_msk
 /*
 * bit 0: use reduced tx power for control frame
 * bit 1 - 7: reserved
 */

 u8 reduce_txpower;
 u8 reserved;
 __le16 valid  * Entry usage:
};

struct iwl_bt_cmd_v1  
 truct basic
 u8 prio_boost;
/
  * set IWLAGN_BT_VALID_BOOST to "1"#define LINK_QUAL_AGG_TIME_LIMIT_MIN (100)
  * if configure the#define LINK_QUAL_AGG_DISABLE_START_MAX (255)
  */
 u8 tx_prio_boost; /* SW boost of WiFi tx priority */#define LINK_QUAL_AGG_FRAME_LIMIT_MAX (63)
 __le16/*
};

struct iwl_bt_cmd_v2 {
 struct basic
 __le32 prio_boost;
 /*
 * set IWLAGN_BT_VALID_BOOST to "1" in "valid" bitmask
 * if configure the following patterns
 */

 u8 reserved;
 u8 tx_prio_boost; /* SW boost of WiFi tx priority */
 __le16 rx_prio_boost; /* SW boost of WiFi rx priority */
};

#define  * Number of Tx retries allowed for a frame, before  * no longer be considered for the start of an   * (scheduler will then  *

struct iwlagn_bt_sco_cmd {
 __le32 flags;


/******************************************************************************
 * (6)
 * Spectrum Management (802.11h) Commands, Responses, Notifications:
 *
 *****************************************************************************/


/*
 * Spectrum Management
 */

#define MEASUREMENT_FILTER_FLAG *
     RXON_FILTER_CTL2HOST_MSK        | \
     RXON_FILTER_ACCEPT_GRP_MSK      | * The rate scaling procedures described below  * procedures are possible, and may work better *
     RXON_FILTER_DIS_DECRYPT_MSK     | \
     RXON_FILTER_DIS_GRP_DECRYPT_MSK | \
      * scaling algorithm described below, the Linux driver * formula to fill the rs_table[LINK_QUAL_MAX_RETRY_NUM]  * Link Quality command:
     RXON_FILTER_BCON_AWARE_MSK)

struct iwl_measure_channel  *     b) Find next lower available rate using  *        use for next 3 entries.  If no lower rate  *        legacy mode (no HT40 channel, no MIMO *     c) If using MIMO, set *        using MIMO (3 or 6).
 __le32 duration; /* measurement duration in extended beacon
 * format */

  *     c) When reducing rate, also switch antenna *     d) Once lowest available rate is reached, repeat this rate until
 u8 type;  /* see enum iwl_measure_type */
 __ * The rate scaling * actual transfer rate * speculative mode as the new current active mode *
} __packed;

/*
 * REPLY_SPECTRUM_MEASUREMENT_CMD = 0x74 (command)
 */

struct iwl_spectrum_cmd {
 __le16 len *
 u8 token;  /* token id */
 u8 id; * characteristics (e.g. antenna, fat channel, short guard interval), as set
 u8 * determine which rate table entry was used for each tx attempt, to determine
 u8 periodic;  /* 1 = periodic */
 __le16 path_loss_timeout;
--> --------------------

--> maximum size reached

--> --------------------

Messung V0.5
C=87 H=86 G=86

¤ Dauer der Verarbeitung: 0.22 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.