From owner-freebsd-wireless@FreeBSD.ORG Fri Aug 2 11:12:47 2013 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id AA55C7C6 for ; Fri, 2 Aug 2013 11:12:47 +0000 (UTC) (envelope-from cg@cgross.info) Received: from alpha.kreiz-it.fr (alpha.kreiz-it.fr [178.32.219.166]) by mx1.freebsd.org (Postfix) with ESMTP id 3217A2207 for ; Fri, 2 Aug 2013 11:12:46 +0000 (UTC) Received: from DirTech (lnr56-1-82-246-51-185.fbx.proxad.net [82.246.51.185]) by alpha.kreiz-it.fr (Postfix) with ESMTPSA id 416D040B for ; Fri, 2 Aug 2013 13:12:39 +0200 (CEST) From: "Cedric GROSS" To: Subject: [iwn] Review split 4 Date: Fri, 2 Aug 2013 13:12:33 +0200 Message-ID: <003001ce8f71$31aa64d0$94ff2e70$@info> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0031_01CE8F81.F53334D0" X-Mailer: Microsoft Office Outlook 12.0 Thread-Index: Ac6PcS/Gc0FvxHCLTheaZZCg8n7t4w== Content-Language: fr X-Content-Filtered-By: Mailman/MimeDel 2.1.14 X-BeenThere: freebsd-wireless@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Discussions of 802.11 stack, tools device driver development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 02 Aug 2013 11:12:47 -0000 This is a multi-part message in MIME format. ------=_NextPart_000_0031_01CE8F81.F53334D0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hello, After split 3 applied and committed , you will find split 4. This one modify if_iwnreg.h Add nearly everything we will need for later use. Cedric ------=_NextPart_000_0031_01CE8F81.F53334D0 Content-Type: application/octet-stream; name="define.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="define.patch" Index: sys/dev/iwn/if_iwnreg.h=0A= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=0A= --- sys/dev/iwn/if_iwnreg.h (revision 11)=0A= +++ sys/dev/iwn/if_iwnreg.h (working copy)=0A= @@ -18,6 +18,9 @@=0A= * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.=0A= */=0A= =0A= +#define IWN_CT_KILL_THRESHOLD 114 /* in Celsius */=0A= +#define IWN_CT_KILL_EXIT_THRESHOLD 95 /* in Celsius */=0A= +=0A= #define IWN_TX_RING_COUNT 256=0A= #define IWN_TX_RING_LOMARK 192=0A= #define IWN_TX_RING_HIMARK 224=0A= @@ -38,6 +41,10 @@=0A= #define IWN_ICT_SIZE 4096=0A= #define IWN_ICT_COUNT (IWN_ICT_SIZE / sizeof (uint32_t))=0A= =0A= +/* For cards with PAN command, default is IWN_CMD_QUEUE_NUM */=0A= +#define IWN_CMD_QUEUE_NUM 4=0A= +#define IWN_PAN_CMD_QUEUE 9=0A= +=0A= /* Maximum number of DMA segments for TX. */=0A= #define IWN_MAX_SCATTER 20=0A= =0A= @@ -89,6 +96,7 @@=0A= #define IWN_MEM_WADDR 0x410=0A= #define IWN_MEM_WDATA 0x418=0A= #define IWN_MEM_RDATA 0x41c=0A= +#define IWN_TARG_MBX_C 0x430=0A= #define IWN_PRPH_WADDR 0x444=0A= #define IWN_PRPH_RADDR 0x448=0A= #define IWN_PRPH_WDATA 0x44c=0A= @@ -213,17 +221,45 @@=0A= #define IWN_GP_DRIVER_RADIO_2X2_IPA (2 << 0)=0A= #define IWN_GP_DRIVER_CALIB_VER6 (1 << 2)=0A= #define IWN_GP_DRIVER_6050_1X2 (1 << 3)=0A= +#define IWN_GP_DRIVER_REG_BIT_RADIO_IQ_INVERT (1 << 7)=0A= =0A= /* Possible flags for register IWN_UCODE_GP1_CLR. */=0A= #define IWN_UCODE_GP1_RFKILL (1 << 1)=0A= #define IWN_UCODE_GP1_CMD_BLOCKED (1 << 2)=0A= #define IWN_UCODE_GP1_CTEMP_STOP_RF (1 << 3)=0A= +#define IWN_UCODE_GP1_CFG_COMPLETE (1 << 5)=0A= =0A= /* Possible flags/values for register IWN_LED. */=0A= #define IWN_LED_BSM_CTRL (1 << 5)=0A= #define IWN_LED_OFF 0x00000038=0A= #define IWN_LED_ON 0x00000078=0A= =0A= +#define IWN_MAX_BLINK_TBL 10=0A= +#define IWN_LED_STATIC_ON 0=0A= +#define IWN_LED_STATIC_OFF 1=0A= +#define IWN_LED_SLOW_BLINK 2=0A= +#define IWN_LED_INT_BLINK 3=0A= +#define IWN_LED_UNIT 0x1388 /* 5 ms */=0A= +=0A= +static const struct {=0A= + uint16_t tpt; /* Mb/s */=0A= + uint8_t on_time;=0A= + uint8_t off_time;=0A= +} blink_tbl[] =3D=0A= +{=0A= + {300, 5, 5},=0A= + {200, 8, 8},=0A= + {100, 11, 11},=0A= + {70, 13, 13},=0A= + {50, 15, 15},=0A= + {20, 17, 17},=0A= + {10, 19, 19},=0A= + {5, 22, 22},=0A= + {1, 26, 26},=0A= + {0, 33, 33},=0A= + /* SOLID_ON */=0A= +};=0A= +=0A= /* Possible flags for register IWN_DRAM_INT_TBL. */=0A= #define IWN_DRAM_INT_TBL_WRAP_CHECK (1 << 27)=0A= #define IWN_DRAM_INT_TBL_ENABLE (1 << 31)=0A= @@ -370,14 +406,26 @@=0A= } __packed;=0A= =0A= struct iwn_rx_desc {=0A= + /*=0A= + * The first 4 bytes of the RX frame header contain both the RX frame=0A= + * size and some flags.=0A= + * Bit fields:=0A= + * 31: flag flush RB request=0A= + * 30: flag ignore TC (terminal counter) request=0A= + * 29: flag fast IRQ request=0A= + * 28-14: Reserved=0A= + * 13-00: RX frame size=0A= + */=0A= uint32_t len;=0A= uint8_t type;=0A= #define IWN_UC_READY 1=0A= #define IWN_ADD_NODE_DONE 24=0A= #define IWN_TX_DONE 28=0A= +#define IWN_REPLY_LED_CMD 72=0A= #define IWN5000_CALIBRATION_RESULT 102=0A= #define IWN5000_CALIBRATION_DONE 103=0A= #define IWN_START_SCAN 130=0A= +#define IWN_NOTIF_SCAN_RESULT 131=0A= #define IWN_STOP_SCAN 132=0A= #define IWN_RX_STATISTICS 156=0A= #define IWN_BEACON_STATISTICS 157=0A= @@ -388,11 +436,23 @@=0A= #define IWN_RX_DONE 195=0A= #define IWN_RX_COMPRESSED_BA 197=0A= =0A= - uint8_t flags;=0A= - uint8_t idx;=0A= + uint8_t flags; /* 0:5 reserved, 6 abort, 7 internal */=0A= + uint8_t idx; /* position within TX queue */=0A= uint8_t qid;=0A= + /* 0:4 TX queue id - 5:6 reserved - 7 unsolicited RX=0A= + * or uCode-originated notification=0A= + */=0A= } __packed;=0A= =0A= +#define IWN_RX_DESC_QID_MSK 0x1F=0A= +#define IWN_UNSOLICITED_RX_NOTIF 0x80=0A= +=0A= +/* CARD_STATE_NOTIFICATION */=0A= +#define IWN_STATE_CHANGE_HW_CARD_DISABLED 0x01=0A= +#define IWN_STATE_CHANGE_SW_CARD_DISABLED 0x02=0A= +#define IWN_STATE_CHANGE_CT_CARD_DISABLED 0x04=0A= +#define IWN_STATE_CHANGE_RXON_CARD_DISABLED 0x10=0A= +=0A= /* Possible RX status flags. */=0A= #define IWN_RX_NO_CRC_ERR (1 << 0)=0A= #define IWN_RX_NO_OVFL_ERR (1 << 1)=0A= @@ -416,6 +476,7 @@=0A= #define IWN_CMD_LINK_QUALITY 78=0A= #define IWN_CMD_SET_LED 72=0A= #define IWN5000_CMD_WIMAX_COEX 90=0A= +#define IWN_TEMP_NOTIFICATION 98=0A= #define IWN5000_CMD_CALIB_CONFIG 101=0A= #define IWN5000_CMD_CALIB_RESULT 102=0A= #define IWN5000_CMD_CALIB_COMPLETE 103=0A= @@ -432,6 +493,17 @@=0A= #define IWN_CMD_PHY_CALIB 176=0A= #define IWN_CMD_BT_COEX_PRIOTABLE 204=0A= #define IWN_CMD_BT_COEX_PROT 205=0A= +#define IWN_CMD_BT_COEX_NOTIF 206=0A= +/* PAN commands */=0A= +#define IWN_CMD_WIPAN_PARAMS 0xb2=0A= +#define IWN_CMD_WIPAN_RXON 0xb3=0A= +#define IWN_CMD_WIPAN_RXON_TIMING 0xb4=0A= +#define IWN_CMD_WIPAN_RXON_ASSOC 0xb6=0A= +#define IWN_CMD_WIPAN_QOS_PARAM 0xb7=0A= +#define IWN_CMD_WIPAN_WEPKEY 0xb8=0A= +#define IWN_CMD_WIPAN_P2P_CHANNEL_SWITCH 0xb9=0A= +#define IWN_CMD_WIPAN_NOA_NOTIFICATION 0xbc=0A= +#define IWN_CMD_WIPAN_DEACTIVATION_COMPLETE 0xbd=0A= =0A= uint8_t flags;=0A= uint8_t idx;=0A= @@ -439,6 +511,27 @@=0A= uint8_t data[136];=0A= } __packed;=0A= =0A= +/*=0A= + * Structure for IWN_CMD_GET_STATISTICS =3D (0x9c) 156=0A= + * all devices identical.=0A= + *=0A= + * This command triggers an immediate response containing uCode = statistics.=0A= + * The response is in the same format as IWN_BEACON_STATISTICS (0x9d) = 157.=0A= + *=0A= + * If the CLEAR_STATS configuration flag is set, uCode will clear its=0A= + * internal copy of the statistics (counters) after issuing the = response.=0A= + * This flag does not affect IWN_BEACON_STATISTICS after beacons (see = below).=0A= + *=0A= + * If the DISABLE_NOTIF configuration flag is set, uCode will not issue=0A= + * IWN_BEACON_STATISTICS after received beacons. This flag=0A= + * does not affect the response to the IWN_CMD_GET_STATISTICS 0x9c = itself.=0A= + */=0A= +struct iwn_statistics_cmd {=0A= + uint32_t configuration_flags;=0A= +#define IWN_STATS_CONF_CLEAR_STATS htole32(0x1)=0A= +#define IWN_STATS_CONF_DISABLE_NOTIF htole32(0x2)=0A= +} __packed;=0A= +=0A= /* Antenna flags, used in various commands. */=0A= #define IWN_ANT_A (1 << 0)=0A= #define IWN_ANT_B (1 << 1)=0A= @@ -446,6 +539,7 @@=0A= /* Shortcuts. */=0A= #define IWN_ANT_AB (IWN_ANT_A | IWN_ANT_B)=0A= #define IWN_ANT_BC (IWN_ANT_B | IWN_ANT_C)=0A= +#define IWN_ANT_AC (IWN_ANT_A | IWN_ANT_C)=0A= #define IWN_ANT_ABC (IWN_ANT_A | IWN_ANT_B | IWN_ANT_C)=0A= =0A= /* Structure for command IWN_CMD_RXON. */=0A= @@ -461,6 +555,8 @@=0A= #define IWN_MODE_STA 3=0A= #define IWN_MODE_IBSS 4=0A= #define IWN_MODE_MONITOR 6=0A= +#define IWN_MODE_2STA 8=0A= +#define IWN_MODE_P2P 9=0A= =0A= uint8_t air;=0A= uint16_t rxchain;=0A= @@ -544,7 +640,8 @@=0A= uint16_t atim;=0A= uint32_t binitval;=0A= uint16_t lintval;=0A= - uint16_t reserved;=0A= + uint8_t dtim_period;=0A= + uint8_t delta_cp_bss_tbtts;=0A= } __packed;=0A= =0A= /* Structure for command IWN_CMD_ADD_NODE. */=0A= @@ -558,6 +655,9 @@=0A= uint16_t reserved2;=0A= uint8_t id;=0A= #define IWN_ID_BSS 0=0A= +#define IWN_STA_ID 1=0A= +=0A= +#define IWN_PAN_ID_BCAST 14=0A= #define IWN5000_ID_BROADCAST 15=0A= #define IWN4965_ID_BROADCAST 31=0A= =0A= @@ -759,6 +859,11 @@=0A= #define IWN_PS_SLEEP_OVER_DTIM (1 << 2)=0A= #define IWN_PS_PCI_PMGT (1 << 3)=0A= #define IWN_PS_FAST_PD (1 << 4)=0A= +#define IWN_PS_BEACON_FILTERING (1 << 5)=0A= +#define IWN_PS_SHADOW_REG (1 << 6)=0A= +#define IWN_PS_CT_KILL (1 << 7)=0A= +#define IWN_PS_BT_SCD (1 << 8)=0A= +#define IWN_PS_ADVANCED_PM (1 << 9)=0A= =0A= uint8_t keepalive;=0A= uint8_t debug;=0A= @@ -796,6 +901,7 @@=0A= =0A= struct iwn_scan_chan {=0A= uint32_t flags;=0A= +#define IWN_CHAN_PASSIVE (0 << 0)=0A= #define IWN_CHAN_ACTIVE (1 << 0)=0A= #define IWN_CHAN_NPBREQS(x) (((1 << (x)) - 1) << 1)=0A= =0A= @@ -806,9 +912,25 @@=0A= uint16_t passive; /* msecs */=0A= } __packed;=0A= =0A= +#define IWN_SCAN_CRC_TH_DISABLED 0=0A= +#define IWN_SCAN_CRC_TH_DEFAULT htole16(1)=0A= +#define IWN_SCAN_CRC_TH_NEVER htole16(0xffff)=0A= +=0A= /* Maximum size of a scan command. */=0A= #define IWN_SCAN_MAXSZ (MCLBYTES - 4)=0A= =0A= +#define IWN_ACTIVE_DWELL_TIME_24 (30) /* all times in msec */=0A= +#define IWN_ACTIVE_DWELL_TIME_52 (20)=0A= +#define IWN_ACTIVE_DWELL_FACTOR_24 (3)=0A= +#define IWN_ACTIVE_DWELL_FACTOR_52 (2)=0A= +=0A= +#define IWN_PASSIVE_DWELL_TIME_24 (20) /* all times in msec */=0A= +#define IWN_PASSIVE_DWELL_TIME_52 (10)=0A= +#define IWN_PASSIVE_DWELL_BASE (100)=0A= +#define IWN_CHANNEL_TUNE_TIME (5)=0A= +=0A= +#define IWN_SCAN_CHAN_TIMEOUT 2=0A= +=0A= /* Structure for command IWN_CMD_TXPOWER (4965AGN only.) */=0A= #define IWN_RIDX_MAX 32=0A= struct iwn4965_cmd_txpower {=0A= @@ -855,6 +977,16 @@=0A= =0A= struct iwn6000_btcoex_config {=0A= uint8_t flags;=0A= +#define IWN_BT_FLAG_COEX6000_CHAN_INHIBITION 1=0A= +#define IWN_BT_FLAG_COEX6000_MODE_MASK ((1 << 3) | (1 << 4) | (1 << 5 = ))=0A= +#define IWN_BT_FLAG_COEX6000_MODE_SHIFT 3=0A= +#define IWN_BT_FLAG_COEX6000_MODE_DISABLED 0=0A= +#define IWN_BT_FLAG_COEX6000_MODE_LEGACY_2W 1=0A= +#define IWN_BT_FLAG_COEX6000_MODE_3W 2=0A= +#define IWN_BT_FLAG_COEX6000_MODE_4W 3=0A= +=0A= +#define IWN_BT_FLAG_UCODE_DEFAULT (1 << 6)=0A= +#define IWN_BT_FLAG_SYNC_2_BT_DISABLE (1 << 7)=0A= uint8_t lead_time;=0A= uint8_t max_kill;=0A= uint8_t bt3_t7_timer;=0A= @@ -871,6 +1003,28 @@=0A= uint16_t rx_prio_boost;=0A= } __packed;=0A= =0A= +/* Structure for enhanced command IWN_CMD_BLUETOOTH for 2000 Series. */=0A= +struct iwn2000_btcoex_config {=0A= + uint8_t flags; /* Cf Flags in iwn6000_btcoex_config */=0A= + uint8_t lead_time;=0A= + uint8_t max_kill;=0A= + uint8_t bt3_t7_timer;=0A= + uint32_t kill_ack;=0A= + uint32_t kill_cts;=0A= + uint8_t sample_time;=0A= + uint8_t bt3_t2_timer;=0A= + uint16_t bt4_reaction;=0A= + uint32_t lookup_table[12];=0A= + uint16_t bt4_decision;=0A= + uint16_t valid;=0A= +=0A= + uint32_t prio_boost; /* size change prior to iwn6000_btcoex_config */=0A= + uint8_t reserved; /* added prior to iwn6000_btcoex_config */=0A= +=0A= + uint8_t tx_prio_boost;=0A= + uint16_t rx_prio_boost;=0A= +} __packed;=0A= +=0A= struct iwn_btcoex_priotable {=0A= uint8_t calib_init1;=0A= uint8_t calib_init2;=0A= @@ -989,6 +1143,17 @@=0A= uint16_t reserved;=0A= } __packed;=0A= =0A= +struct iwn5000_phy_calib_temp_offsetv2 {=0A= + uint8_t code;=0A= + uint8_t group;=0A= + uint8_t ngroups;=0A= + uint8_t isvalid;=0A= + int16_t offset_high;=0A= + int16_t offset_low;=0A= + int16_t burnt_voltage_ref;=0A= + int16_t reserved;=0A= +} __packed;=0A= +=0A= struct iwn_phy_calib_gain {=0A= uint8_t code;=0A= uint8_t group;=0A= @@ -1056,6 +1221,10 @@=0A= } __packed;=0A= =0A= /* Structures for IWN_TX_DONE notification. */=0A= +#define IWN_TX_STATUS_MSK 0xff=0A= +#define TX_STATUS_SUCCESS 0x01=0A= +#define TX_STATUS_DIRECT_DONE 0x02=0A= +=0A= #define IWN_TX_SUCCESS 0x00=0A= #define IWN_TX_FAIL 0x80 /* all failures have 0x80 set */=0A= #define IWN_TX_FAIL_SHORT_LIMIT 0x82 /* too many RTS retries */=0A= @@ -1077,7 +1246,7 @@=0A= } __packed;=0A= =0A= struct iwn5000_tx_stat {=0A= - uint8_t nframes;=0A= + uint8_t nframes; /* 1 no aggregation, >1 aggregation */=0A= uint8_t btkillcnt;=0A= uint8_t rtsfailcnt;=0A= uint8_t ackfailcnt;=0A= @@ -1089,7 +1258,7 @@=0A= uint16_t seq;=0A= uint16_t len;=0A= uint8_t tlc;=0A= - uint8_t ratid;=0A= + uint8_t ratid; /* tid (0:3), sta_id (4:7) */=0A= uint8_t fc[2];=0A= uint16_t status;=0A= uint16_t sequence;=0A= @@ -1137,6 +1306,42 @@=0A= uint16_t chan;=0A= uint8_t phybuf[32];=0A= uint32_t rate;=0A= +/*=0A= + * rate bit fields=0A= + *=0A= + * High-throughput (HT) rate format for bits 7:0 (bit 8 must be "1"):=0A= + * 2-0: 0) 6 Mbps=0A= + * 1) 12 Mbps=0A= + * 2) 18 Mbps=0A= + * 3) 24 Mbps=0A= + * 4) 36 Mbps=0A= + * 5) 48 Mbps=0A= + * 6) 54 Mbps=0A= + * 7) 60 Mbps=0A= + *=0A= + * 4-3: 0) Single stream (SISO)=0A= + * 1) Dual stream (MIMO)=0A= + * 2) Triple stream (MIMO)=0A= + *=0A= + * 5: Value of 0x20 in bits 7:0 indicates 6 Mbps HT40 duplicate data=0A= + *=0A= + * Legacy OFDM rate format for bits 7:0 (bit 8 must be "0", bit 9 "0"):=0A= + * 3-0: 0xD) 6 Mbps=0A= + * 0xF) 9 Mbps=0A= + * 0x5) 12 Mbps=0A= + * 0x7) 18 Mbps=0A= + * 0x9) 24 Mbps=0A= + * 0xB) 36 Mbps=0A= + * 0x1) 48 Mbps=0A= + * 0x3) 54 Mbps=0A= + *=0A= + * Legacy CCK rate format for bits 7:0 (bit 8 must be "0", bit 9 "1"):=0A= + * 6-0: 10) 1 Mbps=0A= + * 20) 2 Mbps=0A= + * 55) 5.5 Mbps=0A= + * 110) 11 Mbps=0A= + *=0A= + */=0A= uint16_t len;=0A= uint16_t reserve3;=0A= } __packed;=0A= @@ -1359,8 +1564,18 @@=0A= #define IWN_FW_TLV_INIT_DATA 4=0A= #define IWN_FW_TLV_BOOT_TEXT 5=0A= #define IWN_FW_TLV_PBREQ_MAXLEN 6=0A= +#define IWN_FW_TLV_PAN 7=0A= +#define IWN_FW_TLV_RUNT_EVTLOG_PTR 8=0A= +#define IWN_FW_TLV_RUNT_EVTLOG_SIZE 9=0A= +#define IWN_FW_TLV_RUNT_ERRLOG_PTR 10=0A= +#define IWN_FW_TLV_INIT_EVTLOG_PTR 11=0A= +#define IWN_FW_TLV_INIT_EVTLOG_SIZE 12=0A= +#define IWN_FW_TLV_INIT_ERRLOG_PTR 13=0A= #define IWN_FW_TLV_ENH_SENS 14=0A= #define IWN_FW_TLV_PHY_CALIB 15=0A= +#define IWN_FW_TLV_WOWLAN_INST 16=0A= +#define IWN_FW_TLV_WOWLAN_DATA 17=0A= +#define IWN_FW_TLV_FLAGS 18=0A= =0A= uint16_t alt;=0A= uint32_t len;=0A= @@ -1394,6 +1609,7 @@=0A= #define IWN4965_EEPROM_VOLTAGE 0x0e9=0A= #define IWN4965_EEPROM_BANDS 0x0ea=0A= /* Indirect offsets. */=0A= +#define IWN5000_EEPROM_NO_HT40 0x000=0A= #define IWN5000_EEPROM_DOMAIN 0x001=0A= #define IWN5000_EEPROM_BAND1 0x004=0A= #define IWN5000_EEPROM_BAND2 0x013=0A= @@ -1505,6 +1721,16 @@=0A= IWN5000_EEPROM_BAND7=0A= };=0A= =0A= +static const uint32_t iwn1000_regulatory_bands[IWN_NBANDS] =3D {=0A= + IWN5000_EEPROM_BAND1,=0A= + IWN5000_EEPROM_BAND2,=0A= + IWN5000_EEPROM_BAND3,=0A= + IWN5000_EEPROM_BAND4,=0A= + IWN5000_EEPROM_BAND5,=0A= + IWN5000_EEPROM_BAND6,=0A= + IWN5000_EEPROM_NO_HT40,=0A= +};=0A= +=0A= #define IWN_CHAN_BANDS_COUNT 7=0A= #define IWN_MAX_CHAN_PER_BAND 14=0A= static const struct iwn_chan_band {=0A= @@ -1524,6 +1750,13 @@=0A= { 11, { 36, 44, 52, 60, 100, 108, 116, 124, 132, 149, 157 } }=0A= };=0A= =0A= +static const uint8_t iwn_bss_ac_to_queue[] =3D {=0A= + 2, 3, 1, 0,=0A= +};=0A= +=0A= +static const uint8_t iwn_pan_ac_to_queue[] =3D {=0A= + 5, 4, 6, 7,=0A= +};=0A= #define IWN1000_OTP_NBLOCKS 3 =0A= #define IWN6000_OTP_NBLOCKS 4 =0A= #define IWN6050_OTP_NBLOCKS 7=0A= @@ -1533,7 +1766,15 @@=0A= #define IWN_RIDX_OFDM6 4=0A= =0A= #define IWN4965_MAX_PWR_INDEX 107=0A= +#define IWN_POWERSAVE_LVL_NONE 0=0A= +#define IWN_POWERSAVE_LVL_VOIP_COMPATIBLE 1=0A= +#define IWN_POWERSAVE_LVL_MAX 5=0A= =0A= +#define IWN_POWERSAVE_LVL_DEFAULT IWN_POWERSAVE_LVL_NONE=0A= +=0A= +/* DTIM value to pass in for IWN_POWERSAVE_LVL_VOIP_COMPATIBLE */=0A= +#define IWN_POWERSAVE_DTIM_VOIP_COMPATIBLE 2=0A= +=0A= /*=0A= * RF Tx gain values from highest to lowest power (values obtained from=0A= * the reference driver.)=0A= @@ -1715,6 +1956,19 @@=0A= 100=0A= };=0A= =0A= +/* Get value from linux kernel 3.2.+ in = Drivers/net/wireless/iwlwifi/iwl-2000.c*/=0A= +static const struct iwn_sensitivity_limits iwn2030_sensitivity_limits = =3D {=0A= + 105,110,=0A= + 128,232,=0A= + 80,145,=0A= + 128,232,=0A= + 125,175,=0A= + 160,310,=0A= + 97,=0A= + 97,=0A= + 110=0A= +};=0A= +=0A= /* Map TID to TX scheduler's FIFO. */=0A= static const uint8_t iwn_tid2fifo[] =3D {=0A= 1, 0, 0, 1, 2, 2, 3, 3, 7, 7, 7, 7, 7, 7, 7, 7, 3=0A= ------=_NextPart_000_0031_01CE8F81.F53334D0--