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 27 enum { 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 51 enum { 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 68 enum { 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 94 enum { 95 CONF_SG_DISABLE = 0, 96 CONF_SG_PROTECTIVE, 97 CONF_SG_OPPORTUNISTIC 98 }; 99 100 enum { 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 CONF_SG_PARAMS_MAX, 400 CONF_SG_PARAMS_ALL = 0xff 401 }; 402 403 struct conf_sg_settings { 404 u32 params[CONF_SG_PARAMS_MAX]; 405 u8 state; 406 }; 407 408 enum conf_rx_queue_type { 409 CONF_RX_QUEUE_TYPE_LOW_PRIORITY, /* All except the high priority */ 410 CONF_RX_QUEUE_TYPE_HIGH_PRIORITY, /* Management and voice packets */ 411 }; 412 413 struct conf_rx_settings { 414 /* 415 * The maximum amount of time, in TU, before the 416 * firmware discards the MSDU. 417 * 418 * Range: 0 - 0xFFFFFFFF 419 */ 420 u32 rx_msdu_life_time; 421 422 /* 423 * Packet detection threshold in the PHY. 424 * 425 * FIXME: details unknown. 426 */ 427 u32 packet_detection_threshold; 428 429 /* 430 * The longest time the STA will wait to receive traffic from the AP 431 * after a PS-poll has been transmitted. 432 * 433 * Range: 0 - 200000 434 */ 435 u16 ps_poll_timeout; 436 /* 437 * The longest time the STA will wait to receive traffic from the AP 438 * after a frame has been sent from an UPSD enabled queue. 439 * 440 * Range: 0 - 200000 441 */ 442 u16 upsd_timeout; 443 444 /* 445 * The number of octets in an MPDU, below which an RTS/CTS 446 * handshake is not performed. 447 * 448 * Range: 0 - 4096 449 */ 450 u16 rts_threshold; 451 452 /* 453 * The RX Clear Channel Assessment threshold in the PHY 454 * (the energy threshold). 455 * 456 * Range: ENABLE_ENERGY_D == 0x140A 457 * DISABLE_ENERGY_D == 0xFFEF 458 */ 459 u16 rx_cca_threshold; 460 461 /* 462 * Occupied Rx mem-blocks number which requires interrupting the host 463 * (0 = no buffering, 0xffff = disabled). 464 * 465 * Range: u16 466 */ 467 u16 irq_blk_threshold; 468 469 /* 470 * Rx packets number which requires interrupting the host 471 * (0 = no buffering). 472 * 473 * Range: u16 474 */ 475 u16 irq_pkt_threshold; 476 477 /* 478 * Max time in msec the FW may delay RX-Complete interrupt. 479 * 480 * Range: 1 - 100 481 */ 482 u16 irq_timeout; 483 484 /* 485 * The RX queue type. 486 * 487 * Range: RX_QUEUE_TYPE_RX_LOW_PRIORITY, RX_QUEUE_TYPE_RX_HIGH_PRIORITY, 488 */ 489 u8 queue_type; 490 }; 491 492 #define CONF_TX_MAX_RATE_CLASSES 8 493 494 #define CONF_TX_RATE_MASK_UNSPECIFIED 0 495 #define CONF_TX_RATE_MASK_BASIC (CONF_HW_BIT_RATE_1MBPS | \ 496 CONF_HW_BIT_RATE_2MBPS) 497 #define CONF_TX_RATE_RETRY_LIMIT 10 498 499 /* 500 * Rates supported for data packets when operating as AP. Note the absence 501 * of the 22Mbps rate. There is a FW limitation on 12 rates so we must drop 502 * one. The rate dropped is not mandatory under any operating mode. 503 */ 504 #define CONF_TX_AP_ENABLED_RATES (CONF_HW_BIT_RATE_1MBPS | \ 505 CONF_HW_BIT_RATE_2MBPS | CONF_HW_BIT_RATE_5_5MBPS | \ 506 CONF_HW_BIT_RATE_6MBPS | CONF_HW_BIT_RATE_9MBPS | \ 507 CONF_HW_BIT_RATE_11MBPS | CONF_HW_BIT_RATE_12MBPS | \ 508 CONF_HW_BIT_RATE_18MBPS | CONF_HW_BIT_RATE_24MBPS | \ 509 CONF_HW_BIT_RATE_36MBPS | CONF_HW_BIT_RATE_48MBPS | \ 510 CONF_HW_BIT_RATE_54MBPS) 511 512 /* 513 * Default rates for management traffic when operating in AP mode. This 514 * should be configured according to the basic rate set of the AP 515 */ 516 #define CONF_TX_AP_DEFAULT_MGMT_RATES (CONF_HW_BIT_RATE_1MBPS | \ 517 CONF_HW_BIT_RATE_2MBPS | CONF_HW_BIT_RATE_5_5MBPS) 518 519 struct conf_tx_rate_class { 520 521 /* 522 * The rates enabled for this rate class. 523 * 524 * Range: CONF_HW_BIT_RATE_* bit mask 525 */ 526 u32 enabled_rates; 527 528 /* 529 * The dot11 short retry limit used for TX retries. 530 * 531 * Range: u8 532 */ 533 u8 short_retry_limit; 534 535 /* 536 * The dot11 long retry limit used for TX retries. 537 * 538 * Range: u8 539 */ 540 u8 long_retry_limit; 541 542 /* 543 * Flags controlling the attributes of TX transmission. 544 * 545 * Range: bit 0: Truncate - when set, FW attempts to send a frame stop 546 * when the total valid per-rate attempts have 547 * been exhausted; otherwise transmissions 548 * will continue at the lowest available rate 549 * until the appropriate one of the 550 * short_retry_limit, long_retry_limit, 551 * dot11_max_transmit_msdu_life_time, or 552 * max_tx_life_time, is exhausted. 553 * 1: Preamble Override - indicates if the preamble type 554 * should be used in TX. 555 * 2: Preamble Type - the type of the preamble to be used by 556 * the policy (0 - long preamble, 1 - short preamble. 557 */ 558 u8 aflags; 559 }; 560 561 #define CONF_TX_MAX_AC_COUNT 4 562 563 /* Slot number setting to start transmission at PIFS interval */ 564 #define CONF_TX_AIFS_PIFS 1 565 /* Slot number setting to start transmission at DIFS interval normal 566 * DCF access */ 567 #define CONF_TX_AIFS_DIFS 2 568 569 570 enum conf_tx_ac { 571 CONF_TX_AC_BE = 0, /* best effort / legacy */ 572 CONF_TX_AC_BK = 1, /* background */ 573 CONF_TX_AC_VI = 2, /* video */ 574 CONF_TX_AC_VO = 3, /* voice */ 575 CONF_TX_AC_CTS2SELF = 4, /* fictitious AC, follows AC_VO */ 576 CONF_TX_AC_ANY_TID = 0x1f 577 }; 578 579 struct conf_tx_ac_category { 580 /* 581 * The AC class identifier. 582 * 583 * Range: enum conf_tx_ac 584 */ 585 u8 ac; 586 587 /* 588 * The contention window minimum size (in slots) for the access 589 * class. 590 * 591 * Range: u8 592 */ 593 u8 cw_min; 594 595 /* 596 * The contention window maximum size (in slots) for the access 597 * class. 598 * 599 * Range: u8 600 */ 601 u16 cw_max; 602 603 /* 604 * The AIF value (in slots) for the access class. 605 * 606 * Range: u8 607 */ 608 u8 aifsn; 609 610 /* 611 * The TX Op Limit (in microseconds) for the access class. 612 * 613 * Range: u16 614 */ 615 u16 tx_op_limit; 616 }; 617 618 #define CONF_TX_MAX_TID_COUNT 8 619 620 enum { 621 CONF_CHANNEL_TYPE_DCF = 0, /* DC/LEGACY*/ 622 CONF_CHANNEL_TYPE_EDCF = 1, /* EDCA*/ 623 CONF_CHANNEL_TYPE_HCCA = 2, /* HCCA*/ 624 }; 625 626 enum { 627 CONF_PS_SCHEME_LEGACY = 0, 628 CONF_PS_SCHEME_UPSD_TRIGGER = 1, 629 CONF_PS_SCHEME_LEGACY_PSPOLL = 2, 630 CONF_PS_SCHEME_SAPSD = 3, 631 }; 632 633 enum { 634 CONF_ACK_POLICY_LEGACY = 0, 635 CONF_ACK_POLICY_NO_ACK = 1, 636 CONF_ACK_POLICY_BLOCK = 2, 637 }; 638 639 640 struct conf_tx_tid { 641 u8 queue_id; 642 u8 channel_type; 643 u8 tsid; 644 u8 ps_scheme; 645 u8 ack_policy; 646 u32 apsd_conf[2]; 647 }; 648 649 struct conf_tx_settings { 650 /* 651 * The TX ED value for TELEC Enable/Disable. 652 * 653 * Range: 0, 1 654 */ 655 u8 tx_energy_detection; 656 657 /* 658 * Configuration for rate classes for TX (currently only one 659 * rate class supported). Used in non-AP mode. 660 */ 661 struct conf_tx_rate_class sta_rc_conf; 662 663 /* 664 * Configuration for access categories for TX rate control. 665 */ 666 u8 ac_conf_count; 667 struct conf_tx_ac_category ac_conf[CONF_TX_MAX_AC_COUNT]; 668 669 /* 670 * Configuration for rate classes in AP-mode. These rate classes 671 * are for the AC TX queues 672 */ 673 struct conf_tx_rate_class ap_rc_conf[CONF_TX_MAX_AC_COUNT]; 674 675 /* 676 * Management TX rate class for AP-mode. 677 */ 678 struct conf_tx_rate_class ap_mgmt_conf; 679 680 /* 681 * Broadcast TX rate class for AP-mode. 682 */ 683 struct conf_tx_rate_class ap_bcst_conf; 684 685 /* 686 * AP-mode - allow this number of TX retries to a station before an 687 * event is triggered from FW. 688 */ 689 u16 ap_max_tx_retries; 690 691 /* 692 * Configuration for TID parameters. 693 */ 694 u8 tid_conf_count; 695 struct conf_tx_tid tid_conf[CONF_TX_MAX_TID_COUNT]; 696 697 /* 698 * The TX fragmentation threshold. 699 * 700 * Range: u16 701 */ 702 u16 frag_threshold; 703 704 /* 705 * Max time in msec the FW may delay frame TX-Complete interrupt. 706 * 707 * Range: u16 708 */ 709 u16 tx_compl_timeout; 710 711 /* 712 * Completed TX packet count which requires to issue the TX-Complete 713 * interrupt. 714 * 715 * Range: u16 716 */ 717 u16 tx_compl_threshold; 718 719 /* 720 * The rate used for control messages and scanning on the 2.4GHz band 721 * 722 * Range: CONF_HW_BIT_RATE_* bit mask 723 */ 724 u32 basic_rate; 725 726 /* 727 * The rate used for control messages and scanning on the 5GHz band 728 * 729 * Range: CONF_HW_BIT_RATE_* bit mask 730 */ 731 u32 basic_rate_5; 732 733 /* 734 * TX retry limits for templates 735 */ 736 u8 tmpl_short_retry_limit; 737 u8 tmpl_long_retry_limit; 738 }; 739 740 enum { 741 CONF_WAKE_UP_EVENT_BEACON = 0x01, /* Wake on every Beacon*/ 742 CONF_WAKE_UP_EVENT_DTIM = 0x02, /* Wake on every DTIM*/ 743 CONF_WAKE_UP_EVENT_N_DTIM = 0x04, /* Wake every Nth DTIM */ 744 CONF_WAKE_UP_EVENT_N_BEACONS = 0x08, /* Wake every Nth beacon */ 745 CONF_WAKE_UP_EVENT_BITS_MASK = 0x0F 746 }; 747 748 #define CONF_MAX_BCN_FILT_IE_COUNT 32 749 750 #define CONF_BCN_RULE_PASS_ON_CHANGE BIT(0) 751 #define CONF_BCN_RULE_PASS_ON_APPEARANCE BIT(1) 752 753 #define CONF_BCN_IE_OUI_LEN 3 754 #define CONF_BCN_IE_VER_LEN 2 755 756 struct conf_bcn_filt_rule { 757 /* 758 * IE number to which to associate a rule. 759 * 760 * Range: u8 761 */ 762 u8 ie; 763 764 /* 765 * Rule to associate with the specific ie. 766 * 767 * Range: CONF_BCN_RULE_PASS_ON_* 768 */ 769 u8 rule; 770 771 /* 772 * OUI for the vendor specifie IE (221) 773 */ 774 u8 oui[CONF_BCN_IE_OUI_LEN]; 775 776 /* 777 * Type for the vendor specifie IE (221) 778 */ 779 u8 type; 780 781 /* 782 * Version for the vendor specifie IE (221) 783 */ 784 u8 version[CONF_BCN_IE_VER_LEN]; 785 }; 786 787 #define CONF_MAX_RSSI_SNR_TRIGGERS 8 788 789 enum { 790 CONF_TRIG_METRIC_RSSI_BEACON = 0, 791 CONF_TRIG_METRIC_RSSI_DATA, 792 CONF_TRIG_METRIC_SNR_BEACON, 793 CONF_TRIG_METRIC_SNR_DATA 794 }; 795 796 enum { 797 CONF_TRIG_EVENT_TYPE_LEVEL = 0, 798 CONF_TRIG_EVENT_TYPE_EDGE 799 }; 800 801 enum { 802 CONF_TRIG_EVENT_DIR_LOW = 0, 803 CONF_TRIG_EVENT_DIR_HIGH, 804 CONF_TRIG_EVENT_DIR_BIDIR 805 }; 806 807 struct conf_sig_weights { 808 809 /* 810 * RSSI from beacons average weight. 811 * 812 * Range: u8 813 */ 814 u8 rssi_bcn_avg_weight; 815 816 /* 817 * RSSI from data average weight. 818 * 819 * Range: u8 820 */ 821 u8 rssi_pkt_avg_weight; 822 823 /* 824 * SNR from beacons average weight. 825 * 826 * Range: u8 827 */ 828 u8 snr_bcn_avg_weight; 829 830 /* 831 * SNR from data average weight. 832 * 833 * Range: u8 834 */ 835 u8 snr_pkt_avg_weight; 836 }; 837 838 enum conf_bcn_filt_mode { 839 CONF_BCN_FILT_MODE_DISABLED = 0, 840 CONF_BCN_FILT_MODE_ENABLED = 1 841 }; 842 843 enum conf_bet_mode { 844 CONF_BET_MODE_DISABLE = 0, 845 CONF_BET_MODE_ENABLE = 1, 846 }; 847 848 struct conf_conn_settings { 849 /* 850 * Firmware wakeup conditions configuration. The host may set only 851 * one bit. 852 * 853 * Range: CONF_WAKE_UP_EVENT_* 854 */ 855 u8 wake_up_event; 856 857 /* 858 * Listen interval for beacons or Dtims. 859 * 860 * Range: 0 for beacon and Dtim wakeup 861 * 1-10 for x Dtims 862 * 1-255 for x beacons 863 */ 864 u8 listen_interval; 865 866 /* 867 * Enable or disable the beacon filtering. 868 * 869 * Range: CONF_BCN_FILT_MODE_* 870 */ 871 enum conf_bcn_filt_mode bcn_filt_mode; 872 873 /* 874 * Configure Beacon filter pass-thru rules. 875 */ 876 u8 bcn_filt_ie_count; 877 struct conf_bcn_filt_rule bcn_filt_ie[CONF_MAX_BCN_FILT_IE_COUNT]; 878 879 /* 880 * The number of consequtive beacons to lose, before the firmware 881 * becomes out of synch. 882 * 883 * Range: u32 884 */ 885 u32 synch_fail_thold; 886 887 /* 888 * After out-of-synch, the number of TU's to wait without a further 889 * received beacon (or probe response) before issuing the BSS_EVENT_LOSE 890 * event. 891 * 892 * Range: u32 893 */ 894 u32 bss_lose_timeout; 895 896 /* 897 * Beacon receive timeout. 898 * 899 * Range: u32 900 */ 901 u32 beacon_rx_timeout; 902 903 /* 904 * Broadcast receive timeout. 905 * 906 * Range: u32 907 */ 908 u32 broadcast_timeout; 909 910 /* 911 * Enable/disable reception of broadcast packets in power save mode 912 * 913 * Range: 1 - enable, 0 - disable 914 */ 915 u8 rx_broadcast_in_ps; 916 917 /* 918 * Consequtive PS Poll failures before sending event to driver 919 * 920 * Range: u8 921 */ 922 u8 ps_poll_threshold; 923 924 /* 925 * PS Poll failure recovery ACTIVE period length 926 * 927 * Range: u32 (ms) 928 */ 929 u32 ps_poll_recovery_period; 930 931 /* 932 * Configuration of signal average weights. 933 */ 934 struct conf_sig_weights sig_weights; 935 936 /* 937 * Specifies if beacon early termination procedure is enabled or 938 * disabled. 939 * 940 * Range: CONF_BET_MODE_* 941 */ 942 u8 bet_enable; 943 944 /* 945 * Specifies the maximum number of consecutive beacons that may be 946 * early terminated. After this number is reached at least one full 947 * beacon must be correctly received in FW before beacon ET 948 * resumes. 949 * 950 * Range 0 - 255 951 */ 952 u8 bet_max_consecutive; 953 954 /* 955 * Specifies the maximum number of times to try PSM entry if it fails 956 * (if sending the appropriate null-func message fails.) 957 * 958 * Range 0 - 255 959 */ 960 u8 psm_entry_retries; 961 962 /* 963 * Specifies the maximum number of times to try PSM exit if it fails 964 * (if sending the appropriate null-func message fails.) 965 * 966 * Range 0 - 255 967 */ 968 u8 psm_exit_retries; 969 970 /* 971 * Specifies the maximum number of times to try transmit the PSM entry 972 * null-func frame for each PSM entry attempt 973 * 974 * Range 0 - 255 975 */ 976 u8 psm_entry_nullfunc_retries; 977 978 /* 979 * Specifies the time to linger in active mode after successfully 980 * transmitting the PSM entry null-func frame. 981 * 982 * Range 0 - 255 TU's 983 */ 984 u8 psm_entry_hangover_period; 985 986 /* 987 * 988 * Specifies the interval of the connection keep-alive null-func 989 * frame in ms. 990 * 991 * Range: 1000 - 3600000 992 */ 993 u32 keep_alive_interval; 994 995 /* 996 * Maximum listen interval supported by the driver in units of beacons. 997 * 998 * Range: u16 999 */ 1000 u8 max_listen_interval; 1001 }; 1002 1003 enum { 1004 CONF_REF_CLK_19_2_E, 1005 CONF_REF_CLK_26_E, 1006 CONF_REF_CLK_38_4_E, 1007 CONF_REF_CLK_52_E 1008 }; 1009 1010 enum single_dual_band_enum { 1011 CONF_SINGLE_BAND, 1012 CONF_DUAL_BAND 1013 }; 1014 1015 #define CONF_RSSI_AND_PROCESS_COMPENSATION_SIZE 15 1016 #define CONF_NUMBER_OF_SUB_BANDS_5 7 1017 #define CONF_NUMBER_OF_RATE_GROUPS 6 1018 #define CONF_NUMBER_OF_CHANNELS_2_4 14 1019 #define CONF_NUMBER_OF_CHANNELS_5 35 1020 1021 struct conf_radio_parms { 1022 /* 1023 * FEM parameter set to use 1024 * 1025 * Range: 0 or 1 1026 */ 1027 u8 fem; 1028 }; 1029 1030 struct conf_itrim_settings { 1031 /* enable dco itrim */ 1032 u8 enable; 1033 1034 /* moderation timeout in microsecs from the last TX */ 1035 u32 timeout; 1036 }; 1037 1038 struct conf_pm_config_settings { 1039 /* 1040 * Host clock settling time 1041 * 1042 * Range: 0 - 30000 us 1043 */ 1044 u32 host_clk_settling_time; 1045 1046 /* 1047 * Host fast wakeup support 1048 * 1049 * Range: true, false 1050 */ 1051 bool host_fast_wakeup_support; 1052 }; 1053 1054 struct conf_roam_trigger_settings { 1055 /* 1056 * The minimum interval between two trigger events. 1057 * 1058 * Range: 0 - 60000 ms 1059 */ 1060 u16 trigger_pacing; 1061 1062 /* 1063 * The weight for rssi/beacon average calculation 1064 * 1065 * Range: 0 - 255 1066 */ 1067 u8 avg_weight_rssi_beacon; 1068 1069 /* 1070 * The weight for rssi/data frame average calculation 1071 * 1072 * Range: 0 - 255 1073 */ 1074 u8 avg_weight_rssi_data; 1075 1076 /* 1077 * The weight for snr/beacon average calculation 1078 * 1079 * Range: 0 - 255 1080 */ 1081 u8 avg_weight_snr_beacon; 1082 1083 /* 1084 * The weight for snr/data frame average calculation 1085 * 1086 * Range: 0 - 255 1087 */ 1088 u8 avg_weight_snr_data; 1089 }; 1090 1091 struct conf_scan_settings { 1092 /* 1093 * The minimum time to wait on each channel for active scans 1094 * 1095 * Range: u32 tu/1000 1096 */ 1097 u32 min_dwell_time_active; 1098 1099 /* 1100 * The maximum time to wait on each channel for active scans 1101 * 1102 * Range: u32 tu/1000 1103 */ 1104 u32 max_dwell_time_active; 1105 1106 /* 1107 * The minimum time to wait on each channel for passive scans 1108 * 1109 * Range: u32 tu/1000 1110 */ 1111 u32 min_dwell_time_passive; 1112 1113 /* 1114 * The maximum time to wait on each channel for passive scans 1115 * 1116 * Range: u32 tu/1000 1117 */ 1118 u32 max_dwell_time_passive; 1119 1120 /* 1121 * Number of probe requests to transmit on each active scan channel 1122 * 1123 * Range: u8 1124 */ 1125 u16 num_probe_reqs; 1126 1127 }; 1128 1129 /* these are number of channels on the band divided by two, rounded up */ 1130 #define CONF_TX_PWR_COMPENSATION_LEN_2 7 1131 #define CONF_TX_PWR_COMPENSATION_LEN_5 18 1132 1133 struct conf_rf_settings { 1134 /* 1135 * Per channel power compensation for 2.4GHz 1136 * 1137 * Range: s8 1138 */ 1139 u8 tx_per_channel_power_compensation_2[CONF_TX_PWR_COMPENSATION_LEN_2]; 1140 1141 /* 1142 * Per channel power compensation for 5GHz 1143 * 1144 * Range: s8 1145 */ 1146 u8 tx_per_channel_power_compensation_5[CONF_TX_PWR_COMPENSATION_LEN_5]; 1147 }; 1148 1149 struct conf_ht_setting { 1150 u16 tx_ba_win_size; 1151 u16 inactivity_timeout; 1152 }; 1153 1154 struct conf_memory_settings { 1155 /* Number of stations supported in IBSS mode */ 1156 u8 num_stations; 1157 1158 /* Number of ssid profiles used in IBSS mode */ 1159 u8 ssid_profiles; 1160 1161 /* Number of memory buffers allocated to rx pool */ 1162 u8 rx_block_num; 1163 1164 /* Minimum number of blocks allocated to tx pool */ 1165 u8 tx_min_block_num; 1166 1167 /* Disable/Enable dynamic memory */ 1168 u8 dynamic_memory; 1169 1170 /* 1171 * Minimum required free tx memory blocks in order to assure optimum 1172 * performance 1173 * 1174 * Range: 0-120 1175 */ 1176 u8 min_req_tx_blocks; 1177 1178 /* 1179 * Minimum required free rx memory blocks in order to assure optimum 1180 * performance 1181 * 1182 * Range: 0-120 1183 */ 1184 u8 min_req_rx_blocks; 1185 1186 /* 1187 * Minimum number of mem blocks (free+used) guaranteed for TX 1188 * 1189 * Range: 0-120 1190 */ 1191 u8 tx_min; 1192 }; 1193 1194 struct conf_drv_settings { 1195 struct conf_sg_settings sg; 1196 struct conf_rx_settings rx; 1197 struct conf_tx_settings tx; 1198 struct conf_conn_settings conn; 1199 struct conf_itrim_settings itrim; 1200 struct conf_pm_config_settings pm_config; 1201 struct conf_roam_trigger_settings roam_trigger; 1202 struct conf_scan_settings scan; 1203 struct conf_rf_settings rf; 1204 struct conf_ht_setting ht; 1205 struct conf_memory_settings mem; 1206 }; 1207 1208 #endif 1209