Linux Audio

Check our new training course

Loading...
Note: File does not exist in v5.4.
   1/*
   2 * This file is part of wl1271
   3 *
   4 * Copyright (C) 2009 Nokia Corporation
   5 *
   6 * Contact: Luciano Coelho <luciano.coelho@nokia.com>
   7 *
   8 * This program is free software; you can redistribute it and/or
   9 * modify it under the terms of the GNU General Public License
  10 * version 2 as published by the Free Software Foundation.
  11 *
  12 * This program is distributed in the hope that it will be useful, but
  13 * WITHOUT ANY WARRANTY; without even the implied warranty of
  14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15 * General Public License for more details.
  16 *
  17 * You should have received a copy of the GNU General Public License
  18 * along with this program; if not, write to the Free Software
  19 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  20 * 02110-1301 USA
  21 *
  22 */
  23
  24#ifndef __CONF_H__
  25#define __CONF_H__
  26
  27enum {
  28	CONF_HW_BIT_RATE_1MBPS   = BIT(0),
  29	CONF_HW_BIT_RATE_2MBPS   = BIT(1),
  30	CONF_HW_BIT_RATE_5_5MBPS = BIT(2),
  31	CONF_HW_BIT_RATE_6MBPS   = BIT(3),
  32	CONF_HW_BIT_RATE_9MBPS   = BIT(4),
  33	CONF_HW_BIT_RATE_11MBPS  = BIT(5),
  34	CONF_HW_BIT_RATE_12MBPS  = BIT(6),
  35	CONF_HW_BIT_RATE_18MBPS  = BIT(7),
  36	CONF_HW_BIT_RATE_22MBPS  = BIT(8),
  37	CONF_HW_BIT_RATE_24MBPS  = BIT(9),
  38	CONF_HW_BIT_RATE_36MBPS  = BIT(10),
  39	CONF_HW_BIT_RATE_48MBPS  = BIT(11),
  40	CONF_HW_BIT_RATE_54MBPS  = BIT(12),
  41	CONF_HW_BIT_RATE_MCS_0   = BIT(13),
  42	CONF_HW_BIT_RATE_MCS_1   = BIT(14),
  43	CONF_HW_BIT_RATE_MCS_2   = BIT(15),
  44	CONF_HW_BIT_RATE_MCS_3   = BIT(16),
  45	CONF_HW_BIT_RATE_MCS_4   = BIT(17),
  46	CONF_HW_BIT_RATE_MCS_5   = BIT(18),
  47	CONF_HW_BIT_RATE_MCS_6   = BIT(19),
  48	CONF_HW_BIT_RATE_MCS_7   = BIT(20)
  49};
  50
  51enum {
  52	CONF_HW_RATE_INDEX_1MBPS   = 0,
  53	CONF_HW_RATE_INDEX_2MBPS   = 1,
  54	CONF_HW_RATE_INDEX_5_5MBPS = 2,
  55	CONF_HW_RATE_INDEX_6MBPS   = 3,
  56	CONF_HW_RATE_INDEX_9MBPS   = 4,
  57	CONF_HW_RATE_INDEX_11MBPS  = 5,
  58	CONF_HW_RATE_INDEX_12MBPS  = 6,
  59	CONF_HW_RATE_INDEX_18MBPS  = 7,
  60	CONF_HW_RATE_INDEX_22MBPS  = 8,
  61	CONF_HW_RATE_INDEX_24MBPS  = 9,
  62	CONF_HW_RATE_INDEX_36MBPS  = 10,
  63	CONF_HW_RATE_INDEX_48MBPS  = 11,
  64	CONF_HW_RATE_INDEX_54MBPS  = 12,
  65	CONF_HW_RATE_INDEX_MAX     = CONF_HW_RATE_INDEX_54MBPS,
  66};
  67
  68enum {
  69	CONF_HW_RXTX_RATE_MCS7 = 0,
  70	CONF_HW_RXTX_RATE_MCS6,
  71	CONF_HW_RXTX_RATE_MCS5,
  72	CONF_HW_RXTX_RATE_MCS4,
  73	CONF_HW_RXTX_RATE_MCS3,
  74	CONF_HW_RXTX_RATE_MCS2,
  75	CONF_HW_RXTX_RATE_MCS1,
  76	CONF_HW_RXTX_RATE_MCS0,
  77	CONF_HW_RXTX_RATE_54,
  78	CONF_HW_RXTX_RATE_48,
  79	CONF_HW_RXTX_RATE_36,
  80	CONF_HW_RXTX_RATE_24,
  81	CONF_HW_RXTX_RATE_22,
  82	CONF_HW_RXTX_RATE_18,
  83	CONF_HW_RXTX_RATE_12,
  84	CONF_HW_RXTX_RATE_11,
  85	CONF_HW_RXTX_RATE_9,
  86	CONF_HW_RXTX_RATE_6,
  87	CONF_HW_RXTX_RATE_5_5,
  88	CONF_HW_RXTX_RATE_2,
  89	CONF_HW_RXTX_RATE_1,
  90	CONF_HW_RXTX_RATE_MAX,
  91	CONF_HW_RXTX_RATE_UNSUPPORTED = 0xff
  92};
  93
  94enum {
  95	CONF_SG_DISABLE = 0,
  96	CONF_SG_PROTECTIVE,
  97	CONF_SG_OPPORTUNISTIC
  98};
  99
 100enum {
 101	/*
 102	 * PER threshold in PPM of the BT voice
 103	 *
 104	 * Range: 0 - 10000000
 105	 */
 106	CONF_SG_BT_PER_THRESHOLD = 0,
 107
 108	/*
 109	 * Number of consequent RX_ACTIVE activities to override BT voice
 110	 * frames to ensure WLAN connection
 111	 *
 112	 * Range: 0 - 100
 113	 */
 114	CONF_SG_HV3_MAX_OVERRIDE,
 115
 116	/*
 117	 * Defines the PER threshold of the BT voice
 118	 *
 119	 * Range: 0 - 65000
 120	 */
 121	CONF_SG_BT_NFS_SAMPLE_INTERVAL,
 122
 123	/*
 124	 * Defines the load ratio of BT
 125	 *
 126	 * Range: 0 - 100 (%)
 127	 */
 128	CONF_SG_BT_LOAD_RATIO,
 129
 130	/*
 131	 * Defines whether the SG will force WLAN host to enter/exit PSM
 132	 *
 133	 * Range: 1 - SG can force, 0 - host handles PSM
 134	 */
 135	CONF_SG_AUTO_PS_MODE,
 136
 137	/*
 138	 * Compensation percentage of probe requests when scan initiated
 139	 * during BT voice/ACL link.
 140	 *
 141	 * Range: 0 - 255 (%)
 142	 */
 143	CONF_SG_AUTO_SCAN_PROBE_REQ,
 144
 145	/*
 146	 * Compensation percentage of probe requests when active scan initiated
 147	 * during BT voice
 148	 *
 149	 * Range: 0 - 255 (%)
 150	 */
 151	CONF_SG_ACTIVE_SCAN_DURATION_FACTOR_HV3,
 152
 153	/*
 154	 * Defines antenna configuration (single/dual antenna)
 155	 *
 156	 * Range: 0 - single antenna, 1 - dual antenna
 157	 */
 158	CONF_SG_ANTENNA_CONFIGURATION,
 159
 160	/*
 161	 * The threshold (percent) of max consequtive beacon misses before
 162	 * increasing priority of beacon reception.
 163	 *
 164	 * Range: 0 - 100 (%)
 165	 */
 166	CONF_SG_BEACON_MISS_PERCENT,
 167
 168	/*
 169	 * The rate threshold below which receiving a data frame from the AP
 170	 * will increase the priority of the data frame above BT traffic.
 171	 *
 172	 * Range: 0,2, 5(=5.5), 6, 9, 11, 12, 18, 24, 36, 48, 54
 173	 */
 174	CONF_SG_RATE_ADAPT_THRESH,
 175
 176	/*
 177	 * Not used currently.
 178	 *
 179	 * Range: 0
 180	 */
 181	CONF_SG_RATE_ADAPT_SNR,
 182
 183	/*
 184	 * Configure the min and max time BT gains the antenna
 185	 * in WLAN PSM / BT master basic rate
 186	 *
 187	 * Range: 0 - 255 (ms)
 188	 */
 189	CONF_SG_WLAN_PS_BT_ACL_MASTER_MIN_BR,
 190	CONF_SG_WLAN_PS_BT_ACL_MASTER_MAX_BR,
 191
 192	/*
 193	 * The time after it expires no new WLAN trigger frame is trasmitted
 194	 * in WLAN PSM / BT master basic rate
 195	 *
 196	 * Range: 0 - 255 (ms)
 197	 */
 198	CONF_SG_WLAN_PS_MAX_BT_ACL_MASTER_BR,
 199
 200	/*
 201	 * Configure the min and max time BT gains the antenna
 202	 * in WLAN PSM / BT slave basic rate
 203	 *
 204	 * Range: 0 - 255 (ms)
 205	 */
 206	CONF_SG_WLAN_PS_BT_ACL_SLAVE_MIN_BR,
 207	CONF_SG_WLAN_PS_BT_ACL_SLAVE_MAX_BR,
 208
 209	/*
 210	 * The time after it expires no new WLAN trigger frame is trasmitted
 211	 * in WLAN PSM / BT slave basic rate
 212	 *
 213	 * Range: 0 - 255 (ms)
 214	 */
 215	CONF_SG_WLAN_PS_MAX_BT_ACL_SLAVE_BR,
 216
 217	/*
 218	 * Configure the min and max time BT gains the antenna
 219	 * in WLAN PSM / BT master EDR
 220	 *
 221	 * Range: 0 - 255 (ms)
 222	 */
 223	CONF_SG_WLAN_PS_BT_ACL_MASTER_MIN_EDR,
 224	CONF_SG_WLAN_PS_BT_ACL_MASTER_MAX_EDR,
 225
 226	/*
 227	 * The time after it expires no new WLAN trigger frame is trasmitted
 228	 * in WLAN PSM / BT master EDR
 229	 *
 230	 * Range: 0 - 255 (ms)
 231	 */
 232	CONF_SG_WLAN_PS_MAX_BT_ACL_MASTER_EDR,
 233
 234	/*
 235	 * Configure the min and max time BT gains the antenna
 236	 * in WLAN PSM / BT slave EDR
 237	 *
 238	 * Range: 0 - 255 (ms)
 239	 */
 240	CONF_SG_WLAN_PS_BT_ACL_SLAVE_MIN_EDR,
 241	CONF_SG_WLAN_PS_BT_ACL_SLAVE_MAX_EDR,
 242
 243	/*
 244	 * The time after it expires no new WLAN trigger frame is trasmitted
 245	 * in WLAN PSM / BT slave EDR
 246	 *
 247	 * Range: 0 - 255 (ms)
 248	 */
 249	CONF_SG_WLAN_PS_MAX_BT_ACL_SLAVE_EDR,
 250
 251	/*
 252	 * RX guard time before the beginning of a new BT voice frame during
 253	 * which no new WLAN trigger frame is transmitted.
 254	 *
 255	 * Range: 0 - 100000 (us)
 256	 */
 257	CONF_SG_RXT,
 258
 259	/*
 260	 * TX guard time before the beginning of a new BT voice frame during
 261	 * which no new WLAN frame is transmitted.
 262	 *
 263	 * Range: 0 - 100000 (us)
 264	 */
 265
 266	CONF_SG_TXT,
 267
 268	/*
 269	 * Enable adaptive RXT/TXT algorithm. If disabled, the host values
 270	 * will be utilized.
 271	 *
 272	 * Range: 0 - disable, 1 - enable
 273	 */
 274	CONF_SG_ADAPTIVE_RXT_TXT,
 275
 276	/*
 277	 * The used WLAN legacy service period during active BT ACL link
 278	 *
 279	 * Range: 0 - 255 (ms)
 280	 */
 281	CONF_SG_PS_POLL_TIMEOUT,
 282
 283	/*
 284	 * The used WLAN UPSD service period during active BT ACL link
 285	 *
 286	 * Range: 0 - 255 (ms)
 287	 */
 288	CONF_SG_UPSD_TIMEOUT,
 289
 290	/*
 291	 * Configure the min and max time BT gains the antenna
 292	 * in WLAN Active / BT master EDR
 293	 *
 294	 * Range: 0 - 255 (ms)
 295	 */
 296	CONF_SG_WLAN_ACTIVE_BT_ACL_MASTER_MIN_EDR,
 297	CONF_SG_WLAN_ACTIVE_BT_ACL_MASTER_MAX_EDR,
 298
 299	/*
 300	 * The maximum time WLAN can gain the antenna for
 301	 * in WLAN Active / BT master EDR
 302	 *
 303	 * Range: 0 - 255 (ms)
 304	 */
 305	CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_MASTER_EDR,
 306
 307	/*
 308	 * Configure the min and max time BT gains the antenna
 309	 * in WLAN Active / BT slave EDR
 310	 *
 311	 * Range: 0 - 255 (ms)
 312	 */
 313	CONF_SG_WLAN_ACTIVE_BT_ACL_SLAVE_MIN_EDR,
 314	CONF_SG_WLAN_ACTIVE_BT_ACL_SLAVE_MAX_EDR,
 315
 316	/*
 317	 * The maximum time WLAN can gain the antenna for
 318	 * in WLAN Active / BT slave EDR
 319	 *
 320	 * Range: 0 - 255 (ms)
 321	 */
 322	CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_SLAVE_EDR,
 323
 324	/*
 325	 * Configure the min and max time BT gains the antenna
 326	 * in WLAN Active / BT basic rate
 327	 *
 328	 * Range: 0 - 255 (ms)
 329	 */
 330	CONF_SG_WLAN_ACTIVE_BT_ACL_MIN_BR,
 331	CONF_SG_WLAN_ACTIVE_BT_ACL_MAX_BR,
 332
 333	/*
 334	 * The maximum time WLAN can gain the antenna for
 335	 * in WLAN Active / BT basic rate
 336	 *
 337	 * Range: 0 - 255 (ms)
 338	 */
 339	CONF_SG_WLAN_ACTIVE_MAX_BT_ACL_BR,
 340
 341	/*
 342	 * Compensation percentage of WLAN passive scan window if initiated
 343	 * during BT voice
 344	 *
 345	 * Range: 0 - 1000 (%)
 346	 */
 347	CONF_SG_PASSIVE_SCAN_DURATION_FACTOR_HV3,
 348
 349	/*
 350	 * Compensation percentage of WLAN passive scan window if initiated
 351	 * during BT A2DP
 352	 *
 353	 * Range: 0 - 1000 (%)
 354	 */
 355	CONF_SG_PASSIVE_SCAN_DURATION_FACTOR_A2DP,
 356
 357	/*
 358	 * Fixed time ensured for BT traffic to gain the antenna during WLAN
 359	 * passive scan.
 360	 *
 361	 * Range: 0 - 1000 ms
 362	 */
 363	CONF_SG_PASSIVE_SCAN_A2DP_BT_TIME,
 364
 365	/*
 366	 * Fixed time ensured for WLAN traffic to gain the antenna during WLAN
 367	 * passive scan.
 368	 *
 369	 * Range: 0 - 1000 ms
 370	 */
 371	CONF_SG_PASSIVE_SCAN_A2DP_WLAN_TIME,
 372
 373	/*
 374	 * Number of consequent BT voice frames not interrupted by WLAN
 375	 *
 376	 * Range: 0 - 100
 377	 */
 378	CONF_SG_HV3_MAX_SERVED,
 379
 380	/*
 381	 * Protection time of the DHCP procedure.
 382	 *
 383	 * Range: 0 - 100000 (ms)
 384	 */
 385	CONF_SG_DHCP_TIME,
 386
 387	/*
 388	 * Compensation percentage of WLAN active scan window if initiated
 389	 * during BT A2DP
 390	 *
 391	 * Range: 0 - 1000 (%)
 392	 */
 393	CONF_SG_ACTIVE_SCAN_DURATION_FACTOR_A2DP,
 394	CONF_SG_TEMP_PARAM_1,
 395	CONF_SG_TEMP_PARAM_2,
 396	CONF_SG_TEMP_PARAM_3,
 397	CONF_SG_TEMP_PARAM_4,
 398	CONF_SG_TEMP_PARAM_5,
 399
 400	/*
 401	 * AP beacon miss
 402	 *
 403	 * Range: 0 - 255
 404	 */
 405	CONF_SG_AP_BEACON_MISS_TX,
 406
 407	/*
 408	 * AP RX window length
 409	 *
 410	 * Range: 0 - 50
 411	 */
 412	CONF_SG_RX_WINDOW_LENGTH,
 413
 414	/*
 415	 * AP connection protection time
 416	 *
 417	 * Range: 0 - 5000
 418	 */
 419	CONF_SG_AP_CONNECTION_PROTECTION_TIME,
 420
 421	CONF_SG_TEMP_PARAM_6,
 422	CONF_SG_TEMP_PARAM_7,
 423	CONF_SG_TEMP_PARAM_8,
 424	CONF_SG_TEMP_PARAM_9,
 425	CONF_SG_TEMP_PARAM_10,
 426
 427	CONF_SG_STA_PARAMS_MAX = CONF_SG_TEMP_PARAM_5 + 1,
 428	CONF_SG_AP_PARAMS_MAX = CONF_SG_TEMP_PARAM_10 + 1,
 429
 430	CONF_SG_PARAMS_ALL = 0xff
 431};
 432
 433struct conf_sg_settings {
 434	u32 sta_params[CONF_SG_STA_PARAMS_MAX];
 435	u32 ap_params[CONF_SG_AP_PARAMS_MAX];
 436	u8 state;
 437};
 438
 439enum conf_rx_queue_type {
 440	CONF_RX_QUEUE_TYPE_LOW_PRIORITY,  /* All except the high priority */
 441	CONF_RX_QUEUE_TYPE_HIGH_PRIORITY, /* Management and voice packets */
 442};
 443
 444struct conf_rx_settings {
 445	/*
 446	 * The maximum amount of time, in TU, before the
 447	 * firmware discards the MSDU.
 448	 *
 449	 * Range: 0 - 0xFFFFFFFF
 450	 */
 451	u32 rx_msdu_life_time;
 452
 453	/*
 454	 * Packet detection threshold in the PHY.
 455	 *
 456	 * FIXME: details unknown.
 457	 */
 458	u32 packet_detection_threshold;
 459
 460	/*
 461	 * The longest time the STA will wait to receive traffic from the AP
 462	 * after a PS-poll has been transmitted.
 463	 *
 464	 * Range: 0 - 200000
 465	 */
 466	u16 ps_poll_timeout;
 467	/*
 468	 * The longest time the STA will wait to receive traffic from the AP
 469	 * after a frame has been sent from an UPSD enabled queue.
 470	 *
 471	 * Range: 0 - 200000
 472	 */
 473	u16 upsd_timeout;
 474
 475	/*
 476	 * The number of octets in an MPDU, below which an RTS/CTS
 477	 * handshake is not performed.
 478	 *
 479	 * Range: 0 - 4096
 480	 */
 481	u16 rts_threshold;
 482
 483	/*
 484	 * The RX Clear Channel Assessment threshold in the PHY
 485	 * (the energy threshold).
 486	 *
 487	 * Range: ENABLE_ENERGY_D  == 0x140A
 488	 *        DISABLE_ENERGY_D == 0xFFEF
 489	 */
 490	u16 rx_cca_threshold;
 491
 492	/*
 493	 * Occupied Rx mem-blocks number which requires interrupting the host
 494	 * (0 = no buffering, 0xffff = disabled).
 495	 *
 496	 * Range: u16
 497	 */
 498	u16 irq_blk_threshold;
 499
 500	/*
 501	 * Rx packets number which requires interrupting the host
 502	 * (0 = no buffering).
 503	 *
 504	 * Range: u16
 505	 */
 506	u16 irq_pkt_threshold;
 507
 508	/*
 509	 * Max time in msec the FW may delay RX-Complete interrupt.
 510	 *
 511	 * Range: 1 - 100
 512	 */
 513	u16 irq_timeout;
 514
 515	/*
 516	 * The RX queue type.
 517	 *
 518	 * Range: RX_QUEUE_TYPE_RX_LOW_PRIORITY, RX_QUEUE_TYPE_RX_HIGH_PRIORITY,
 519	 */
 520	u8 queue_type;
 521};
 522
 523#define CONF_TX_MAX_RATE_CLASSES       8
 524
 525#define CONF_TX_RATE_MASK_UNSPECIFIED  0
 526#define CONF_TX_RATE_MASK_BASIC        (CONF_HW_BIT_RATE_1MBPS | \
 527					CONF_HW_BIT_RATE_2MBPS)
 528#define CONF_TX_RATE_RETRY_LIMIT       10
 529
 530/*
 531 * Rates supported for data packets when operating as AP. Note the absence
 532 * of the 22Mbps rate. There is a FW limitation on 12 rates so we must drop
 533 * one. The rate dropped is not mandatory under any operating mode.
 534 */
 535#define CONF_TX_AP_ENABLED_RATES       (CONF_HW_BIT_RATE_1MBPS | \
 536	CONF_HW_BIT_RATE_2MBPS | CONF_HW_BIT_RATE_5_5MBPS |      \
 537	CONF_HW_BIT_RATE_6MBPS | CONF_HW_BIT_RATE_9MBPS |        \
 538	CONF_HW_BIT_RATE_11MBPS | CONF_HW_BIT_RATE_12MBPS |      \
 539	CONF_HW_BIT_RATE_18MBPS | CONF_HW_BIT_RATE_24MBPS |      \
 540	CONF_HW_BIT_RATE_36MBPS | CONF_HW_BIT_RATE_48MBPS |      \
 541	CONF_HW_BIT_RATE_54MBPS)
 542
 543#define CONF_TX_OFDM_RATES (CONF_HW_BIT_RATE_6MBPS |             \
 544	CONF_HW_BIT_RATE_12MBPS | CONF_HW_BIT_RATE_24MBPS |      \
 545	CONF_HW_BIT_RATE_36MBPS | CONF_HW_BIT_RATE_48MBPS |      \
 546	CONF_HW_BIT_RATE_54MBPS)
 547
 548
 549/*
 550 * Default rates for management traffic when operating in AP mode. This
 551 * should be configured according to the basic rate set of the AP
 552 */
 553#define CONF_TX_AP_DEFAULT_MGMT_RATES  (CONF_HW_BIT_RATE_1MBPS | \
 554	CONF_HW_BIT_RATE_2MBPS | CONF_HW_BIT_RATE_5_5MBPS)
 555
 556/*
 557 * Default rates for working as IBSS. use 11b rates
 558 */
 559#define CONF_TX_IBSS_DEFAULT_RATES  (CONF_HW_BIT_RATE_1MBPS |       \
 560		CONF_HW_BIT_RATE_2MBPS | CONF_HW_BIT_RATE_5_5MBPS | \
 561		CONF_HW_BIT_RATE_11MBPS);
 562
 563struct conf_tx_rate_class {
 564
 565	/*
 566	 * The rates enabled for this rate class.
 567	 *
 568	 * Range: CONF_HW_BIT_RATE_* bit mask
 569	 */
 570	u32 enabled_rates;
 571
 572	/*
 573	 * The dot11 short retry limit used for TX retries.
 574	 *
 575	 * Range: u8
 576	 */
 577	u8 short_retry_limit;
 578
 579	/*
 580	 * The dot11 long retry limit used for TX retries.
 581	 *
 582	 * Range: u8
 583	 */
 584	u8 long_retry_limit;
 585
 586	/*
 587	 * Flags controlling the attributes of TX transmission.
 588	 *
 589	 * Range: bit 0: Truncate - when set, FW attempts to send a frame stop
 590	 *               when the total valid per-rate attempts have
 591	 *               been exhausted; otherwise transmissions
 592	 *               will continue at the lowest available rate
 593	 *               until the appropriate one of the
 594	 *               short_retry_limit, long_retry_limit,
 595	 *               dot11_max_transmit_msdu_life_time, or
 596	 *               max_tx_life_time, is exhausted.
 597	 *            1: Preamble Override - indicates if the preamble type
 598	 *               should be used in TX.
 599	 *            2: Preamble Type - the type of the preamble to be used by
 600	 *               the policy (0 - long preamble, 1 - short preamble.
 601	 */
 602	u8 aflags;
 603};
 604
 605#define CONF_TX_MAX_AC_COUNT 4
 606
 607/* Slot number setting to start transmission at PIFS interval */
 608#define CONF_TX_AIFS_PIFS 1
 609/* Slot number setting to start transmission at DIFS interval normal
 610 * DCF access */
 611#define CONF_TX_AIFS_DIFS 2
 612
 613
 614enum conf_tx_ac {
 615	CONF_TX_AC_BE = 0,         /* best effort / legacy */
 616	CONF_TX_AC_BK = 1,         /* background */
 617	CONF_TX_AC_VI = 2,         /* video */
 618	CONF_TX_AC_VO = 3,         /* voice */
 619	CONF_TX_AC_CTS2SELF = 4,   /* fictitious AC, follows AC_VO */
 620	CONF_TX_AC_ANY_TID = 0x1f
 621};
 622
 623struct conf_tx_ac_category {
 624	/*
 625	 * The AC class identifier.
 626	 *
 627	 * Range: enum conf_tx_ac
 628	 */
 629	u8 ac;
 630
 631	/*
 632	 * The contention window minimum size (in slots) for the access
 633	 * class.
 634	 *
 635	 * Range: u8
 636	 */
 637	u8 cw_min;
 638
 639	/*
 640	 * The contention window maximum size (in slots) for the access
 641	 * class.
 642	 *
 643	 * Range: u8
 644	 */
 645	u16 cw_max;
 646
 647	/*
 648	 * The AIF value (in slots) for the access class.
 649	 *
 650	 * Range: u8
 651	 */
 652	u8 aifsn;
 653
 654	/*
 655	 * The TX Op Limit (in microseconds) for the access class.
 656	 *
 657	 * Range: u16
 658	 */
 659	u16 tx_op_limit;
 660};
 661
 662#define CONF_TX_MAX_TID_COUNT 8
 663
 664enum {
 665	CONF_CHANNEL_TYPE_DCF = 0,   /* DC/LEGACY*/
 666	CONF_CHANNEL_TYPE_EDCF = 1,  /* EDCA*/
 667	CONF_CHANNEL_TYPE_HCCA = 2,  /* HCCA*/
 668};
 669
 670enum {
 671	CONF_PS_SCHEME_LEGACY = 0,
 672	CONF_PS_SCHEME_UPSD_TRIGGER = 1,
 673	CONF_PS_SCHEME_LEGACY_PSPOLL = 2,
 674	CONF_PS_SCHEME_SAPSD = 3,
 675};
 676
 677enum {
 678	CONF_ACK_POLICY_LEGACY = 0,
 679	CONF_ACK_POLICY_NO_ACK = 1,
 680	CONF_ACK_POLICY_BLOCK = 2,
 681};
 682
 683
 684struct conf_tx_tid {
 685	u8 queue_id;
 686	u8 channel_type;
 687	u8 tsid;
 688	u8 ps_scheme;
 689	u8 ack_policy;
 690	u32 apsd_conf[2];
 691};
 692
 693struct conf_tx_settings {
 694	/*
 695	 * The TX ED value for TELEC Enable/Disable.
 696	 *
 697	 * Range: 0, 1
 698	 */
 699	u8 tx_energy_detection;
 700
 701	/*
 702	 * Configuration for rate classes for TX (currently only one
 703	 * rate class supported). Used in non-AP mode.
 704	 */
 705	struct conf_tx_rate_class sta_rc_conf;
 706
 707	/*
 708	 * Configuration for access categories for TX rate control.
 709	 */
 710	u8 ac_conf_count;
 711	struct conf_tx_ac_category ac_conf[CONF_TX_MAX_AC_COUNT];
 712
 713	/*
 714	 * AP-mode - allow this number of TX retries to a station before an
 715	 * event is triggered from FW.
 716	 * In AP-mode the hlids of unreachable stations are given in the
 717	 * "sta_tx_retry_exceeded" member in the event mailbox.
 718	 */
 719	u8 max_tx_retries;
 720
 721	/*
 722	 * AP-mode - after this number of seconds a connected station is
 723	 * considered inactive.
 724	 */
 725	u16 ap_aging_period;
 726
 727	/*
 728	 * Configuration for TID parameters.
 729	 */
 730	u8 tid_conf_count;
 731	struct conf_tx_tid tid_conf[CONF_TX_MAX_TID_COUNT];
 732
 733	/*
 734	 * The TX fragmentation threshold.
 735	 *
 736	 * Range: u16
 737	 */
 738	u16 frag_threshold;
 739
 740	/*
 741	 * Max time in msec the FW may delay frame TX-Complete interrupt.
 742	 *
 743	 * Range: u16
 744	 */
 745	u16 tx_compl_timeout;
 746
 747	/*
 748	 * Completed TX packet count which requires to issue the TX-Complete
 749	 * interrupt.
 750	 *
 751	 * Range: u16
 752	 */
 753	u16 tx_compl_threshold;
 754
 755	/*
 756	 * The rate used for control messages and scanning on the 2.4GHz band
 757	 *
 758	 * Range: CONF_HW_BIT_RATE_* bit mask
 759	 */
 760	u32 basic_rate;
 761
 762	/*
 763	 * The rate used for control messages and scanning on the 5GHz band
 764	 *
 765	 * Range: CONF_HW_BIT_RATE_* bit mask
 766	 */
 767	u32 basic_rate_5;
 768
 769	/*
 770	 * TX retry limits for templates
 771	 */
 772	u8 tmpl_short_retry_limit;
 773	u8 tmpl_long_retry_limit;
 774};
 775
 776enum {
 777	CONF_WAKE_UP_EVENT_BEACON    = 0x01, /* Wake on every Beacon*/
 778	CONF_WAKE_UP_EVENT_DTIM      = 0x02, /* Wake on every DTIM*/
 779	CONF_WAKE_UP_EVENT_N_DTIM    = 0x04, /* Wake every Nth DTIM */
 780	CONF_WAKE_UP_EVENT_N_BEACONS = 0x08, /* Wake every Nth beacon */
 781	CONF_WAKE_UP_EVENT_BITS_MASK = 0x0F
 782};
 783
 784#define CONF_MAX_BCN_FILT_IE_COUNT 32
 785
 786#define CONF_BCN_RULE_PASS_ON_CHANGE         BIT(0)
 787#define CONF_BCN_RULE_PASS_ON_APPEARANCE     BIT(1)
 788
 789#define CONF_BCN_IE_OUI_LEN    3
 790#define CONF_BCN_IE_VER_LEN    2
 791
 792struct conf_bcn_filt_rule {
 793	/*
 794	 * IE number to which to associate a rule.
 795	 *
 796	 * Range: u8
 797	 */
 798	u8 ie;
 799
 800	/*
 801	 * Rule to associate with the specific ie.
 802	 *
 803	 * Range: CONF_BCN_RULE_PASS_ON_*
 804	 */
 805	u8 rule;
 806
 807	/*
 808	 * OUI for the vendor specifie IE (221)
 809	 */
 810	u8 oui[CONF_BCN_IE_OUI_LEN];
 811
 812	/*
 813	 * Type for the vendor specifie IE (221)
 814	 */
 815	u8 type;
 816
 817	/*
 818	 * Version for the vendor specifie IE (221)
 819	 */
 820	u8 version[CONF_BCN_IE_VER_LEN];
 821};
 822
 823#define CONF_MAX_RSSI_SNR_TRIGGERS 8
 824
 825enum {
 826	CONF_TRIG_METRIC_RSSI_BEACON = 0,
 827	CONF_TRIG_METRIC_RSSI_DATA,
 828	CONF_TRIG_METRIC_SNR_BEACON,
 829	CONF_TRIG_METRIC_SNR_DATA
 830};
 831
 832enum {
 833	CONF_TRIG_EVENT_TYPE_LEVEL = 0,
 834	CONF_TRIG_EVENT_TYPE_EDGE
 835};
 836
 837enum {
 838	CONF_TRIG_EVENT_DIR_LOW = 0,
 839	CONF_TRIG_EVENT_DIR_HIGH,
 840	CONF_TRIG_EVENT_DIR_BIDIR
 841};
 842
 843struct conf_sig_weights {
 844
 845	/*
 846	 * RSSI from beacons average weight.
 847	 *
 848	 * Range: u8
 849	 */
 850	u8 rssi_bcn_avg_weight;
 851
 852	/*
 853	 * RSSI from data average weight.
 854	 *
 855	 * Range: u8
 856	 */
 857	u8 rssi_pkt_avg_weight;
 858
 859	/*
 860	 * SNR from beacons average weight.
 861	 *
 862	 * Range: u8
 863	 */
 864	u8 snr_bcn_avg_weight;
 865
 866	/*
 867	 * SNR from data average weight.
 868	 *
 869	 * Range: u8
 870	 */
 871	u8 snr_pkt_avg_weight;
 872};
 873
 874enum conf_bcn_filt_mode {
 875	CONF_BCN_FILT_MODE_DISABLED = 0,
 876	CONF_BCN_FILT_MODE_ENABLED = 1
 877};
 878
 879enum conf_bet_mode {
 880	CONF_BET_MODE_DISABLE = 0,
 881	CONF_BET_MODE_ENABLE = 1,
 882};
 883
 884struct conf_conn_settings {
 885	/*
 886	 * Firmware wakeup conditions configuration. The host may set only
 887	 * one bit.
 888	 *
 889	 * Range: CONF_WAKE_UP_EVENT_*
 890	 */
 891	u8 wake_up_event;
 892
 893	/*
 894	 * Listen interval for beacons or Dtims.
 895	 *
 896	 * Range: 0 for beacon and Dtim wakeup
 897	 *        1-10 for x Dtims
 898	 *        1-255 for x beacons
 899	 */
 900	u8 listen_interval;
 901
 902	/*
 903	 * Enable or disable the beacon filtering.
 904	 *
 905	 * Range: CONF_BCN_FILT_MODE_*
 906	 */
 907	enum conf_bcn_filt_mode bcn_filt_mode;
 908
 909	/*
 910	 * Configure Beacon filter pass-thru rules.
 911	 */
 912	u8 bcn_filt_ie_count;
 913	struct conf_bcn_filt_rule bcn_filt_ie[CONF_MAX_BCN_FILT_IE_COUNT];
 914
 915	/*
 916	 * The number of consequtive beacons to lose, before the firmware
 917	 * becomes out of synch.
 918	 *
 919	 * Range: u32
 920	 */
 921	u32 synch_fail_thold;
 922
 923	/*
 924	 * After out-of-synch, the number of TU's to wait without a further
 925	 * received beacon (or probe response) before issuing the BSS_EVENT_LOSE
 926	 * event.
 927	 *
 928	 * Range: u32
 929	 */
 930	u32 bss_lose_timeout;
 931
 932	/*
 933	 * Beacon receive timeout.
 934	 *
 935	 * Range: u32
 936	 */
 937	u32 beacon_rx_timeout;
 938
 939	/*
 940	 * Broadcast receive timeout.
 941	 *
 942	 * Range: u32
 943	 */
 944	u32 broadcast_timeout;
 945
 946	/*
 947	 * Enable/disable reception of broadcast packets in power save mode
 948	 *
 949	 * Range: 1 - enable, 0 - disable
 950	 */
 951	u8 rx_broadcast_in_ps;
 952
 953	/*
 954	 * Consequtive PS Poll failures before sending event to driver
 955	 *
 956	 * Range: u8
 957	 */
 958	u8 ps_poll_threshold;
 959
 960	/*
 961	 * PS Poll failure recovery ACTIVE period length
 962	 *
 963	 * Range: u32 (ms)
 964	 */
 965	u32 ps_poll_recovery_period;
 966
 967	/*
 968	 * Configuration of signal average weights.
 969	 */
 970	struct conf_sig_weights sig_weights;
 971
 972	/*
 973	 * Specifies if beacon early termination procedure is enabled or
 974	 * disabled.
 975	 *
 976	 * Range: CONF_BET_MODE_*
 977	 */
 978	u8 bet_enable;
 979
 980	/*
 981	 * Specifies the maximum number of consecutive beacons that may be
 982	 * early terminated. After this number is reached at least one full
 983	 * beacon must be correctly received in FW before beacon ET
 984	 * resumes.
 985	 *
 986	 * Range 0 - 255
 987	 */
 988	u8 bet_max_consecutive;
 989
 990	/*
 991	 * Specifies the maximum number of times to try PSM entry if it fails
 992	 * (if sending the appropriate null-func message fails.)
 993	 *
 994	 * Range 0 - 255
 995	 */
 996	u8 psm_entry_retries;
 997
 998	/*
 999	 * Specifies the maximum number of times to try PSM exit if it fails
1000	 * (if sending the appropriate null-func message fails.)
1001	 *
1002	 * Range 0 - 255
1003	 */
1004	u8 psm_exit_retries;
1005
1006	/*
1007	 * Specifies the maximum number of times to try transmit the PSM entry
1008	 * null-func frame for each PSM entry attempt
1009	 *
1010	 * Range 0 - 255
1011	 */
1012	u8 psm_entry_nullfunc_retries;
1013
1014	/*
1015	 * Specifies the time to linger in active mode after successfully
1016	 * transmitting the PSM entry null-func frame.
1017	 *
1018	 * Range 0 - 255 TU's
1019	 */
1020	u8 psm_entry_hangover_period;
1021
1022	/*
1023	 *
1024	 * Specifies the interval of the connection keep-alive null-func
1025	 * frame in ms.
1026	 *
1027	 * Range: 1000 - 3600000
1028	 */
1029	u32 keep_alive_interval;
1030
1031	/*
1032	 * Maximum listen interval supported by the driver in units of beacons.
1033	 *
1034	 * Range: u16
1035	 */
1036	u8 max_listen_interval;
1037};
1038
1039enum {
1040	CONF_REF_CLK_19_2_E,
1041	CONF_REF_CLK_26_E,
1042	CONF_REF_CLK_38_4_E,
1043	CONF_REF_CLK_52_E,
1044	CONF_REF_CLK_38_4_M_XTAL,
1045	CONF_REF_CLK_26_M_XTAL,
1046};
1047
1048enum single_dual_band_enum {
1049	CONF_SINGLE_BAND,
1050	CONF_DUAL_BAND
1051};
1052
1053#define CONF_RSSI_AND_PROCESS_COMPENSATION_SIZE 15
1054#define CONF_NUMBER_OF_SUB_BANDS_5  7
1055#define CONF_NUMBER_OF_RATE_GROUPS  6
1056#define CONF_NUMBER_OF_CHANNELS_2_4 14
1057#define CONF_NUMBER_OF_CHANNELS_5   35
1058
1059struct conf_itrim_settings {
1060	/* enable dco itrim */
1061	u8 enable;
1062
1063	/* moderation timeout in microsecs from the last TX */
1064	u32 timeout;
1065};
1066
1067struct conf_pm_config_settings {
1068	/*
1069	 * Host clock settling time
1070	 *
1071	 * Range: 0 - 30000 us
1072	 */
1073	u32 host_clk_settling_time;
1074
1075	/*
1076	 * Host fast wakeup support
1077	 *
1078	 * Range: true, false
1079	 */
1080	bool host_fast_wakeup_support;
1081};
1082
1083struct conf_roam_trigger_settings {
1084	/*
1085	 * The minimum interval between two trigger events.
1086	 *
1087	 * Range: 0 - 60000 ms
1088	 */
1089	u16 trigger_pacing;
1090
1091	/*
1092	 * The weight for rssi/beacon average calculation
1093	 *
1094	 * Range: 0 - 255
1095	 */
1096	u8 avg_weight_rssi_beacon;
1097
1098	/*
1099	 * The weight for rssi/data frame average calculation
1100	 *
1101	 * Range: 0 - 255
1102	 */
1103	u8 avg_weight_rssi_data;
1104
1105	/*
1106	 * The weight for snr/beacon average calculation
1107	 *
1108	 * Range: 0 - 255
1109	 */
1110	u8 avg_weight_snr_beacon;
1111
1112	/*
1113	 * The weight for snr/data frame average calculation
1114	 *
1115	 * Range: 0 - 255
1116	 */
1117	u8 avg_weight_snr_data;
1118};
1119
1120struct conf_scan_settings {
1121	/*
1122	 * The minimum time to wait on each channel for active scans
1123	 *
1124	 * Range: u32 tu/1000
1125	 */
1126	u32 min_dwell_time_active;
1127
1128	/*
1129	 * The maximum time to wait on each channel for active scans
1130	 *
1131	 * Range: u32 tu/1000
1132	 */
1133	u32 max_dwell_time_active;
1134
1135	/*
1136	 * The minimum time to wait on each channel for passive scans
1137	 *
1138	 * Range: u32 tu/1000
1139	 */
1140	u32 min_dwell_time_passive;
1141
1142	/*
1143	 * The maximum time to wait on each channel for passive scans
1144	 *
1145	 * Range: u32 tu/1000
1146	 */
1147	u32 max_dwell_time_passive;
1148
1149	/*
1150	 * Number of probe requests to transmit on each active scan channel
1151	 *
1152	 * Range: u8
1153	 */
1154	u16 num_probe_reqs;
1155
1156};
1157
1158struct conf_sched_scan_settings {
1159	/* minimum time to wait on the channel for active scans (in TUs) */
1160	u16 min_dwell_time_active;
1161
1162	/* maximum time to wait on the channel for active scans (in TUs) */
1163	u16 max_dwell_time_active;
1164
1165	/* time to wait on the channel for passive scans (in TUs) */
1166	u32 dwell_time_passive;
1167
1168	/* time to wait on the channel for DFS scans (in TUs) */
1169	u32 dwell_time_dfs;
1170
1171	/* number of probe requests to send on each channel in active scans */
1172	u8 num_probe_reqs;
1173
1174	/* RSSI threshold to be used for filtering */
1175	s8 rssi_threshold;
1176
1177	/* SNR threshold to be used for filtering */
1178	s8 snr_threshold;
1179};
1180
1181/* these are number of channels on the band divided by two, rounded up */
1182#define CONF_TX_PWR_COMPENSATION_LEN_2 7
1183#define CONF_TX_PWR_COMPENSATION_LEN_5 18
1184
1185struct conf_rf_settings {
1186	/*
1187	 * Per channel power compensation for 2.4GHz
1188	 *
1189	 * Range: s8
1190	 */
1191	u8 tx_per_channel_power_compensation_2[CONF_TX_PWR_COMPENSATION_LEN_2];
1192
1193	/*
1194	 * Per channel power compensation for 5GHz
1195	 *
1196	 * Range: s8
1197	 */
1198	u8 tx_per_channel_power_compensation_5[CONF_TX_PWR_COMPENSATION_LEN_5];
1199};
1200
1201struct conf_ht_setting {
1202	u16 tx_ba_win_size;
1203	u16 inactivity_timeout;
1204};
1205
1206struct conf_memory_settings {
1207	/* Number of stations supported in IBSS mode */
1208	u8 num_stations;
1209
1210	/* Number of ssid profiles used in IBSS mode */
1211	u8 ssid_profiles;
1212
1213	/* Number of memory buffers allocated to rx pool */
1214	u8 rx_block_num;
1215
1216	/* Minimum number of blocks allocated to tx pool */
1217	u8 tx_min_block_num;
1218
1219	/* Disable/Enable dynamic memory */
1220	u8 dynamic_memory;
1221
1222	/*
1223	 * Minimum required free tx memory blocks in order to assure optimum
1224	 * performance
1225	 *
1226	 * Range: 0-120
1227	 */
1228	u8 min_req_tx_blocks;
1229
1230	/*
1231	 * Minimum required free rx memory blocks in order to assure optimum
1232	 * performance
1233	 *
1234	 * Range: 0-120
1235	 */
1236	u8 min_req_rx_blocks;
1237
1238	/*
1239	 * Minimum number of mem blocks (free+used) guaranteed for TX
1240	 *
1241	 * Range: 0-120
1242	 */
1243	u8 tx_min;
1244};
1245
1246struct conf_fm_coex {
1247	u8 enable;
1248	u8 swallow_period;
1249	u8 n_divider_fref_set_1;
1250	u8 n_divider_fref_set_2;
1251	u16 m_divider_fref_set_1;
1252	u16 m_divider_fref_set_2;
1253	u32 coex_pll_stabilization_time;
1254	u16 ldo_stabilization_time;
1255	u8 fm_disturbed_band_margin;
1256	u8 swallow_clk_diff;
1257};
1258
1259struct conf_rx_streaming_settings {
1260	/*
1261	 * RX Streaming duration (in msec) from last tx/rx
1262	 *
1263	 * Range: u32
1264	 */
1265	u32 duration;
1266
1267	/*
1268	 * Bitmap of tids to be polled during RX streaming.
1269	 * (Note: it doesn't look like it really matters)
1270	 *
1271	 * Range: 0x1-0xff
1272	 */
1273	u8 queues;
1274
1275	/*
1276	 * RX Streaming interval.
1277	 * (Note:this value is also used as the rx streaming timeout)
1278	 * Range: 0 (disabled), 10 - 100
1279	 */
1280	u8 interval;
1281
1282	/*
1283	 * enable rx streaming also when there is no coex activity
1284	 */
1285	u8 always;
1286};
1287
1288struct conf_fwlog {
1289	/* Continuous or on-demand */
1290	u8 mode;
1291
1292	/*
1293	 * Number of memory blocks dedicated for the FW logger
1294	 *
1295	 * Range: 1-3, or 0 to disable the FW logger
1296	 */
1297	u8 mem_blocks;
1298
1299	/* Minimum log level threshold */
1300	u8 severity;
1301
1302	/* Include/exclude timestamps from the log messages */
1303	u8 timestamp;
1304
1305	/* See enum wl1271_fwlogger_output */
1306	u8 output;
1307
1308	/* Regulates the frequency of log messages */
1309	u8 threshold;
1310};
1311
1312struct conf_drv_settings {
1313	struct conf_sg_settings sg;
1314	struct conf_rx_settings rx;
1315	struct conf_tx_settings tx;
1316	struct conf_conn_settings conn;
1317	struct conf_itrim_settings itrim;
1318	struct conf_pm_config_settings pm_config;
1319	struct conf_roam_trigger_settings roam_trigger;
1320	struct conf_scan_settings scan;
1321	struct conf_sched_scan_settings sched_scan;
1322	struct conf_rf_settings rf;
1323	struct conf_ht_setting ht;
1324	struct conf_memory_settings mem_wl127x;
1325	struct conf_memory_settings mem_wl128x;
1326	struct conf_fm_coex fm_coex;
1327	struct conf_rx_streaming_settings rx_streaming;
1328	struct conf_fwlog fwlog;
1329	u8 hci_io_ds;
1330};
1331
1332#endif