1 /* 2 * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved. 3 * 4 * Permission to use, copy, modify, and/or distribute this software for 5 * any purpose with or without fee is hereby granted, provided that the 6 * above copyright notice and this permission notice appear in all 7 * copies. 8 * 9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 10 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 11 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 12 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 13 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 14 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 15 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 16 * PERFORMANCE OF THIS SOFTWARE. 17 */ 18 19 #ifndef DOT11F_H 20 #define DOT11F_H 21 /* 22 * \file dot11f.h 23 * 24 * \brief Structures, function prototypes & definitions 25 * for working with 802.11 Frames 26 * 27 * 28 * This file was automatically generated by 'framesc' 29 * Tue Jun 5 18:01:08 2018 from the following file(s): 30 * 31 * dot11f.frms 32 * 33 * PLEASE DON'T EDIT THIS FILE BY HAND! 34 * 35 * Instead, please update the input files & re-run 36 * 'framesc' For more information on 'framesc' & the 37 * frames language, run 'framesc --help'. 38 * 39 */ 40 41 typedef uint32_t tDOT11F_U64[2]; 42 43 #if defined (_MSC_VER) 44 #pragma warning (disable:4214) /* nonstandard extension used */ 45 #endif /* Microsoft C/C++ bit field types other than int */ 46 47 #if !defined __must_check 48 #define __must_check 49 #endif 50 51 #if !defined unlikely 52 #define unlikely(x) (x) 53 #endif 54 55 /* 56 * Frames Return Codes: 57 * 58 * Success is indicated by a return value of zero. Failure is indicated 59 * by the presence of the high bit. Warnings encountered in the course 60 * of a successful parse are indicated by various bits in the lower 31 61 * being turned on. 62 * 63 * For instance, a return value of 0x0000000a would indicate that the 64 * parse succeeded, but that a mandatory IE wasn't present, and some IE 65 * was found to be corrupt. 66 * 67 * 68 */ 69 70 #define DOT11F_PARSE_SUCCESS (0x00000000) 71 #define DOT11F_UNKNOWN_IES (0x00000001) 72 #define DOT11F_MANDATORY_IE_MISSING (0x00000002) 73 #define DOT11F_INCOMPLETE_IE (0x00000004) 74 #define DOT11F_SKIPPED_BAD_IE (0x00000008) 75 #define DOT11F_LAST_IE_TOO_LONG (0x00000010) 76 #define DOT11F_DUPLICATE_IE (0x00000020) 77 #define DOT11F_BAD_FIXED_VALUE (0x00000040) 78 #define DOT11F_INCOMPLETE_TLV (0x00000080) 79 #define DOT11F_INVALID_TLV_LENGTH (0x00000100) 80 #define DOT11F_SKIPPED_BAD_TLV (0x00000200) 81 #define DOT11F_UNKNOWN_TLVS (0x00000400) 82 #define DOT11F_LAST_TLV_TOO_LONG (0x00000800) 83 #define DOT11F_MANDATORY_TLV_MISSING (0x00001000) 84 #define DOT11F_INTERNAL_ERROR (0x10000001) 85 #define DOT11F_MISSING_FIXED_FIELD (0x10000002) 86 #define DOT11F_BAD_INPUT_BUFFER (0x10000003) 87 #define DOT11F_BAD_OUTPUT_BUFFER (0x10000004) 88 #define DOT11F_BUFFER_OVERFLOW (0x10000005) 89 #define DOT11F_FAILED(code) ((code) & 0x10000000) 90 #define DOT11F_SUCCEEDED(code) ((code) == 0) 91 #define DOT11F_WARNED(code) (!DOT11F_SUCCEEDED(code) && !DOT11F_FAILED(code)) 92 93 /********************************************************************* 94 * Fixed Fields * 95 ********************************************************************/ 96 97 typedef struct sDot11fFfAID { 98 uint16_t associd; 99 } tDot11fFfAID; 100 101 #define DOT11F_FF_AID_LEN (2) 102 103 void dot11f_unpack_ff_AID(tpAniSirGlobal, uint8_t *, tDot11fFfAID *); 104 105 void dot11f_pack_ff_aid(tpAniSirGlobal, tDot11fFfAID *, uint8_t *); 106 107 typedef struct sDot11fFfAction { 108 uint8_t action; 109 } tDot11fFfAction; 110 111 #define DOT11F_FF_ACTION_LEN (1) 112 113 void dot11f_unpack_ff_action(tpAniSirGlobal, uint8_t *, tDot11fFfAction *); 114 115 void dot11f_pack_ff_action(tpAniSirGlobal, tDot11fFfAction *, uint8_t *); 116 117 typedef struct sDot11fFfAuthAlgo { 118 uint16_t algo; 119 } tDot11fFfAuthAlgo; 120 121 #define DOT11F_FF_AUTHALGO_LEN (2) 122 123 void dot11f_unpack_ff_AuthAlgo(tpAniSirGlobal, uint8_t *, 124 tDot11fFfAuthAlgo *); 125 126 void dot11f_pack_ff_auth_algo(tpAniSirGlobal, tDot11fFfAuthAlgo *, uint8_t *); 127 128 typedef struct sDot11fFfAuthSeqNo { 129 uint16_t no; 130 } tDot11fFfAuthSeqNo; 131 132 #define DOT11F_FF_AUTHSEQNO_LEN (2) 133 134 void dot11f_unpack_ff_AuthSeqNo(tpAniSirGlobal, uint8_t *, 135 tDot11fFfAuthSeqNo *); 136 137 void dot11f_pack_ff_auth_seq_no(tpAniSirGlobal, tDot11fFfAuthSeqNo *, 138 uint8_t *); 139 140 typedef struct sDot11fFfBeaconInterval { 141 uint16_t interval; 142 } tDot11fFfBeaconInterval; 143 144 #define DOT11F_FF_BEACONINTERVAL_LEN (2) 145 146 void dot11f_unpack_ff_BeaconInterval(tpAniSirGlobal, uint8_t *, 147 tDot11fFfBeaconInterval *); 148 149 void dot11f_pack_ff_beacon_interval(tpAniSirGlobal, tDot11fFfBeaconInterval *, 150 uint8_t *); 151 152 typedef struct sDot11fFfCapabilities { 153 uint16_t ess:1; 154 uint16_t ibss:1; 155 uint16_t cfPollable:1; 156 uint16_t cfPollReq:1; 157 uint16_t privacy:1; 158 uint16_t shortPreamble:1; 159 uint16_t pbcc:1; 160 uint16_t channelAgility:1; 161 uint16_t spectrumMgt:1; 162 uint16_t qos:1; 163 uint16_t shortSlotTime:1; 164 uint16_t apsd:1; 165 uint16_t rrm:1; 166 uint16_t dsssOfdm:1; 167 uint16_t delayedBA:1; 168 uint16_t immediateBA:1; 169 } tDot11fFfCapabilities; 170 171 #define DOT11F_FF_CAPABILITIES_LEN (2) 172 173 void dot11f_unpack_ff_capabilities(tpAniSirGlobal, uint8_t *, 174 tDot11fFfCapabilities *); 175 176 void dot11f_pack_ff_capabilities(tpAniSirGlobal, tDot11fFfCapabilities *, 177 uint8_t *); 178 179 #define CAPABILITIES_ESS_OFFSET 0 180 #define CAPABILITIES_ESS_WIDTH 1 181 #define CAPABILITIES_IBSS_OFFSET 1 182 #define CAPABILITIES_IBSS_WIDTH 1 183 #define CAPABILITIES_CFPOLLABLE_OFFSET 2 184 #define CAPABILITIES_CFPOLLABLE_WIDTH 1 185 #define CAPABILITIES_CFPOLLREQ_OFFSET 3 186 #define CAPABILITIES_CFPOLLREQ_WIDTH 1 187 #define CAPABILITIES_PRIVACY_OFFSET 4 188 #define CAPABILITIES_PRIVACY_WIDTH 1 189 #define CAPABILITIES_SHORTPREAMBLE_OFFSET 5 190 #define CAPABILITIES_SHORTPREAMBLE_WIDTH 1 191 #define CAPABILITIES_PBCC_OFFSET 6 192 #define CAPABILITIES_PBCC_WIDTH 1 193 #define CAPABILITIES_CHANNELAGILITY_OFFSET 7 194 #define CAPABILITIES_CHANNELAGILITY_WIDTH 1 195 #define CAPABILITIES_SPECTRUMMGT_OFFSET 8 196 #define CAPABILITIES_SPECTRUMMGT_WIDTH 1 197 #define CAPABILITIES_QOS_OFFSET 9 198 #define CAPABILITIES_QOS_WIDTH 1 199 #define CAPABILITIES_SHORTSLOTTIME_OFFSET 10 200 #define CAPABILITIES_SHORTSLOTTIME_WIDTH 1 201 #define CAPABILITIES_APSD_OFFSET 11 202 #define CAPABILITIES_APSD_WIDTH 1 203 #define CAPABILITIES_RRM_OFFSET 12 204 #define CAPABILITIES_RRM_WIDTH 1 205 #define CAPABILITIES_DSSSOFDM_OFFSET 13 206 #define CAPABILITIES_DSSSOFDM_WIDTH 1 207 #define CAPABILITIES_DELAYEDBA_OFFSET 14 208 #define CAPABILITIES_DELAYEDBA_WIDTH 1 209 #define CAPABILITIES_IMMEDIATEBA_OFFSET 15 210 #define CAPABILITIES_IMMEDIATEBA_WIDTH 1 211 212 typedef struct sDot11fFfCategory { 213 uint8_t category; 214 } tDot11fFfCategory; 215 216 #define DOT11F_FF_CATEGORY_LEN (1) 217 218 void dot11f_unpack_ff_category(tpAniSirGlobal, uint8_t *, 219 tDot11fFfCategory *); 220 221 void dot11f_pack_ff_category(tpAniSirGlobal, tDot11fFfCategory *, uint8_t *); 222 223 typedef struct sDot11fFfCurrentAPAddress { 224 uint8_t mac[6]; 225 } tDot11fFfCurrentAPAddress; 226 227 #define DOT11F_FF_CURRENTAPADDRESS_LEN (6) 228 229 void dot11f_unpack_ff_current_ap_address(tpAniSirGlobal, uint8_t *, 230 tDot11fFfCurrentAPAddress *); 231 232 void dot11f_pack_ff_current_ap_address(tpAniSirGlobal, 233 tDot11fFfCurrentAPAddress *, 234 uint8_t *); 235 236 237 typedef struct sDot11fFfDialogToken { 238 uint8_t token; 239 } tDot11fFfDialogToken; 240 241 #define DOT11F_FF_DIALOGTOKEN_LEN (1) 242 243 void dot11f_unpack_ff_dialog_token(tpAniSirGlobal, uint8_t *, 244 tDot11fFfDialogToken *); 245 246 void dot11f_pack_ff_dialog_token(tpAniSirGlobal, tDot11fFfDialogToken *, 247 uint8_t *); 248 249 typedef struct sDot11fFfLinkMargin { 250 uint8_t linkMargin; 251 } tDot11fFfLinkMargin; 252 253 #define DOT11F_FF_LINKMARGIN_LEN (1) 254 255 void dot11f_unpack_ff_link_margin(tpAniSirGlobal, uint8_t *, 256 tDot11fFfLinkMargin *); 257 258 void dot11f_pack_ff_link_margin(tpAniSirGlobal, tDot11fFfLinkMargin *, 259 uint8_t *); 260 261 typedef struct sDot11fFfListenInterval { 262 uint16_t interval; 263 } tDot11fFfListenInterval; 264 265 #define DOT11F_FF_LISTENINTERVAL_LEN (2) 266 267 void dot11f_unpack_ff_ListenInterval(tpAniSirGlobal, uint8_t *, 268 tDot11fFfListenInterval *); 269 270 void dot11f_pack_ff_listen_interval(tpAniSirGlobal, tDot11fFfListenInterval *, 271 uint8_t *); 272 273 typedef struct sDot11fFfMaxTxPower { 274 uint8_t maxTxPower; 275 } tDot11fFfMaxTxPower; 276 277 #define DOT11F_FF_MAXTXPOWER_LEN (1) 278 279 void dot11f_unpack_ff_max_tx_power(tpAniSirGlobal, uint8_t *, 280 tDot11fFfMaxTxPower *); 281 282 void dot11f_pack_ff_max_tx_power(tpAniSirGlobal, tDot11fFfMaxTxPower *, 283 uint8_t *); 284 285 typedef struct sDot11fFfNumOfRepetitions { 286 uint16_t repetitions; 287 } tDot11fFfNumOfRepetitions; 288 289 #define DOT11F_FF_NUMOFREPETITIONS_LEN (2) 290 291 void dot11f_unpack_ff_num_of_repetitions(tpAniSirGlobal, uint8_t *, 292 tDot11fFfNumOfRepetitions *); 293 294 void dot11f_pack_ff_num_of_repetitions(tpAniSirGlobal, 295 tDot11fFfNumOfRepetitions *, 296 uint8_t *); 297 298 299 typedef struct sDot11fFfOperatingMode { 300 uint8_t chanWidth:2; 301 uint8_t reserved:2; 302 uint8_t rxNSS:3; 303 uint8_t rxNSSType:1; 304 } tDot11fFfOperatingMode; 305 306 #define DOT11F_FF_OPERATINGMODE_LEN (1) 307 308 void dot11f_unpack_ff_operating_mode(tpAniSirGlobal, uint8_t *, 309 tDot11fFfOperatingMode *); 310 311 void dot11f_pack_ff_operating_mode(tpAniSirGlobal, tDot11fFfOperatingMode *, 312 uint8_t *); 313 314 #define OPERATINGMODE_CHANWIDTH_OFFSET 0 315 #define OPERATINGMODE_CHANWIDTH_WIDTH 2 316 #define OPERATINGMODE_RESERVED_OFFSET 2 317 #define OPERATINGMODE_RESERVED_WIDTH 2 318 #define OPERATINGMODE_RXNSS_OFFSET 4 319 #define OPERATINGMODE_RXNSS_WIDTH 3 320 #define OPERATINGMODE_RXNSSTYPE_OFFSET 7 321 #define OPERATINGMODE_RXNSSTYPE_WIDTH 1 322 323 typedef struct sDot11fFfRCPI { 324 uint8_t rcpi; 325 } tDot11fFfRCPI; 326 327 #define DOT11F_FF_RCPI_LEN (1) 328 329 void dot11f_unpack_ff_rcpi(tpAniSirGlobal, uint8_t *, tDot11fFfRCPI *); 330 331 void dot11f_pack_ff_rcpi(tpAniSirGlobal, tDot11fFfRCPI *, uint8_t *); 332 333 typedef struct sDot11fFfRSNI { 334 uint8_t rsni; 335 } tDot11fFfRSNI; 336 337 #define DOT11F_FF_RSNI_LEN (1) 338 339 void dot11f_unpack_ff_rsni(tpAniSirGlobal, uint8_t *, tDot11fFfRSNI *); 340 341 void dot11f_pack_ff_rsni(tpAniSirGlobal, tDot11fFfRSNI *, uint8_t *); 342 343 typedef struct sDot11fFfReason { 344 uint16_t code; 345 } tDot11fFfReason; 346 347 #define DOT11F_FF_REASON_LEN (2) 348 349 void dot11f_unpack_ff_Reason(tpAniSirGlobal, uint8_t *, tDot11fFfReason *); 350 351 void dot11f_pack_ff_reason(tpAniSirGlobal, tDot11fFfReason *, uint8_t *); 352 353 typedef struct sDot11fFfRxAntennaId { 354 uint8_t antennaId; 355 } tDot11fFfRxAntennaId; 356 357 #define DOT11F_FF_RXANTENNAID_LEN (1) 358 359 void dot11f_unpack_ff_rx_antenna_id(tpAniSirGlobal, uint8_t *, 360 tDot11fFfRxAntennaId *); 361 362 void dot11f_pack_ff_rx_antenna_id(tpAniSirGlobal, tDot11fFfRxAntennaId *, 363 uint8_t *); 364 365 typedef struct sDot11fFfSMPowerModeSet { 366 uint8_t PowerSave_En:1; 367 uint8_t Mode:1; 368 uint8_t reserved:6; 369 } tDot11fFfSMPowerModeSet; 370 371 #define DOT11F_FF_SMPOWERMODESET_LEN (1) 372 373 void dot11f_unpack_ff_sm_power_mode_set(tpAniSirGlobal, uint8_t *, 374 tDot11fFfSMPowerModeSet *); 375 376 void dot11f_pack_ff_sm_power_mode_set(tpAniSirGlobal, tDot11fFfSMPowerModeSet *, 377 uint8_t *); 378 379 #define SMPOWERMODESET_POWERSAVE_EN_OFFSET 0 380 #define SMPOWERMODESET_POWERSAVE_EN_WIDTH 1 381 #define SMPOWERMODESET_MODE_OFFSET 1 382 #define SMPOWERMODESET_MODE_WIDTH 1 383 #define SMPOWERMODESET_RESERVED_OFFSET 2 384 #define SMPOWERMODESET_RESERVED_WIDTH 6 385 386 typedef struct sDot11fFfStatus { 387 uint16_t status; 388 } tDot11fFfStatus; 389 390 #define DOT11F_FF_STATUS_LEN (2) 391 392 void dot11f_unpack_ff_Status(tpAniSirGlobal, uint8_t *, tDot11fFfStatus *); 393 394 void dot11f_pack_ff_status(tpAniSirGlobal, tDot11fFfStatus *, uint8_t *); 395 396 typedef struct sDot11fFfStatusCode { 397 uint8_t statusCode; 398 } tDot11fFfStatusCode; 399 400 #define DOT11F_FF_STATUSCODE_LEN (1) 401 402 void dot11f_unpack_ff_status_code(tpAniSirGlobal, uint8_t *, 403 tDot11fFfStatusCode *); 404 405 void dot11f_pack_ff_status_code(tpAniSirGlobal, tDot11fFfStatusCode *, 406 uint8_t *); 407 408 typedef struct sDot11fFfTPCEleID { 409 uint8_t TPCId; 410 } tDot11fFfTPCEleID; 411 412 #define DOT11F_FF_TPCELEID_LEN (1) 413 414 void dot11f_unpack_ff_tpc_ele_id(tpAniSirGlobal, uint8_t *, 415 tDot11fFfTPCEleID *); 416 417 void dot11f_pack_ff_tpc_ele_id(tpAniSirGlobal, tDot11fFfTPCEleID *, uint8_t *); 418 419 typedef struct sDot11fFfTPCEleLen { 420 uint8_t TPCLen; 421 } tDot11fFfTPCEleLen; 422 423 #define DOT11F_FF_TPCELELEN_LEN (1) 424 425 void dot11f_unpack_ff_tpc_ele_len(tpAniSirGlobal, uint8_t *, 426 tDot11fFfTPCEleLen *); 427 428 void dot11f_pack_ff_tpc_ele_len(tpAniSirGlobal, tDot11fFfTPCEleLen *, 429 uint8_t *); 430 431 typedef struct sDot11fFfTSInfo { 432 uint32_t traffic_type:1; 433 uint32_t tsid:4; 434 uint32_t direction:2; 435 uint32_t access_policy:2; 436 uint32_t aggregation:1; 437 uint32_t psb:1; 438 uint32_t user_priority:3; 439 uint32_t tsinfo_ack_pol:2; 440 uint32_t schedule:1; 441 uint32_t unused:15; 442 } tDot11fFfTSInfo; 443 444 #define DOT11F_FF_TSINFO_LEN (3) 445 446 void dot11f_unpack_ff_ts_info(tpAniSirGlobal, uint8_t *, tDot11fFfTSInfo *); 447 448 void dot11f_pack_ff_ts_info(tpAniSirGlobal, tDot11fFfTSInfo *, uint8_t *); 449 450 #define TSINFO_TRAFFIC_TYPE_OFFSET 0 451 #define TSINFO_TRAFFIC_TYPE_WIDTH 1 452 #define TSINFO_TSID_OFFSET 1 453 #define TSINFO_TSID_WIDTH 4 454 #define TSINFO_DIRECTION_OFFSET 5 455 #define TSINFO_DIRECTION_WIDTH 2 456 #define TSINFO_ACCESS_POLICY_OFFSET 7 457 #define TSINFO_ACCESS_POLICY_WIDTH 2 458 #define TSINFO_AGGREGATION_OFFSET 9 459 #define TSINFO_AGGREGATION_WIDTH 1 460 #define TSINFO_PSB_OFFSET 10 461 #define TSINFO_PSB_WIDTH 1 462 #define TSINFO_USER_PRIORITY_OFFSET 11 463 #define TSINFO_USER_PRIORITY_WIDTH 3 464 #define TSINFO_TSINFO_ACK_POL_OFFSET 14 465 #define TSINFO_TSINFO_ACK_POL_WIDTH 2 466 #define TSINFO_SCHEDULE_OFFSET 16 467 #define TSINFO_SCHEDULE_WIDTH 1 468 #define TSINFO_UNUSED_OFFSET 17 469 #define TSINFO_UNUSED_WIDTH 15 470 471 typedef struct sDot11fFfTimeStamp { 472 tDOT11F_U64 timestamp; 473 } tDot11fFfTimeStamp; 474 475 #define DOT11F_FF_TIMESTAMP_LEN (8) 476 477 void dot11f_unpack_ff_time_stamp(tpAniSirGlobal, uint8_t *, 478 tDot11fFfTimeStamp *); 479 480 void dot11f_pack_ff_time_stamp(tpAniSirGlobal, tDot11fFfTimeStamp *, 481 uint8_t *); 482 483 typedef struct sDot11fFfTransactionId { 484 uint8_t transId[2]; 485 } tDot11fFfTransactionId; 486 487 #define DOT11F_FF_TRANSACTIONID_LEN (2) 488 489 void dot11f_unpack_ff_transaction_id(tpAniSirGlobal, uint8_t *, 490 tDot11fFfTransactionId *); 491 492 void dot11f_pack_ff_transaction_id(tpAniSirGlobal, tDot11fFfTransactionId *, 493 uint8_t *); 494 495 typedef struct sDot11fFfTxAntennaId { 496 uint8_t antennaId; 497 } tDot11fFfTxAntennaId; 498 499 #define DOT11F_FF_TXANTENNAID_LEN (1) 500 501 void dot11f_unpack_ff_tx_antenna_id(tpAniSirGlobal, uint8_t *, 502 tDot11fFfTxAntennaId *); 503 504 void dot11f_pack_ff_tx_antenna_id(tpAniSirGlobal, tDot11fFfTxAntennaId *, 505 uint8_t *); 506 507 typedef struct sDot11fFfTxPower { 508 uint8_t txPower; 509 } tDot11fFfTxPower; 510 511 #define DOT11F_FF_TXPOWER_LEN (1) 512 513 void dot11f_unpack_ff_tx_power(tpAniSirGlobal, uint8_t *, 514 tDot11fFfTxPower *); 515 516 void dot11f_pack_ff_tx_power(tpAniSirGlobal, tDot11fFfTxPower *, uint8_t *); 517 518 typedef struct sDot11fFfVhtMembershipStatusArray { 519 uint8_t membershipStatusArray[8]; 520 } tDot11fFfVhtMembershipStatusArray; 521 522 #define DOT11F_FF_VHTMEMBERSHIPSTATUSARRAY_LEN (8) 523 524 void dot11f_unpack_ff_vht_membership_status_array(tpAniSirGlobal, uint8_t *, 525 tDot11fFfVhtMembershipStatusArray *); 526 527 void dot11f_pack_ff_vht_membership_status_array(tpAniSirGlobal, 528 tDot11fFfVhtMembershipStatusArray *, 529 uint8_t *); 530 531 532 typedef struct sDot11fFfVhtUserPositionArray { 533 uint8_t userPositionArray[16]; 534 } tDot11fFfVhtUserPositionArray; 535 536 #define DOT11F_FF_VHTUSERPOSITIONARRAY_LEN (16) 537 538 void dot11f_unpack_ff_vht_user_position_array(tpAniSirGlobal, uint8_t *, 539 tDot11fFfVhtUserPositionArray *); 540 541 void dot11f_pack_ff_vht_user_position_array(tpAniSirGlobal, 542 tDot11fFfVhtUserPositionArray *, 543 uint8_t *); 544 545 546 typedef struct sDot11fFfaddba_param_set { 547 uint16_t amsdu_supp:1; 548 uint16_t policy:1; 549 uint16_t tid:4; 550 uint16_t buff_size:10; 551 } tDot11fFfaddba_param_set; 552 553 #define DOT11F_FF_ADDBA_PARAM_SET_LEN (2) 554 555 void dot11f_unpack_ff_addba_param_set(tpAniSirGlobal, uint8_t *, 556 tDot11fFfaddba_param_set *); 557 558 void dot11f_pack_ff_addba_param_set(tpAniSirGlobal, tDot11fFfaddba_param_set *, 559 uint8_t *); 560 561 #define ADDBA_PARAM_SET_AMSDU_SUPP_OFFSET 0 562 #define ADDBA_PARAM_SET_AMSDU_SUPP_WIDTH 1 563 #define ADDBA_PARAM_SET_POLICY_OFFSET 1 564 #define ADDBA_PARAM_SET_POLICY_WIDTH 1 565 #define ADDBA_PARAM_SET_TID_OFFSET 2 566 #define ADDBA_PARAM_SET_TID_WIDTH 4 567 #define ADDBA_PARAM_SET_BUFF_SIZE_OFFSET 6 568 #define ADDBA_PARAM_SET_BUFF_SIZE_WIDTH 10 569 570 typedef struct sDot11fFfba_start_seq_ctrl { 571 uint16_t frag_number:4; 572 uint16_t ssn:12; 573 } tDot11fFfba_start_seq_ctrl; 574 575 #define DOT11F_FF_BA_START_SEQ_CTRL_LEN (2) 576 577 void dot11f_unpack_ff_ba_start_seq_ctrl(tpAniSirGlobal, uint8_t *, 578 tDot11fFfba_start_seq_ctrl *); 579 580 void dot11f_pack_ff_ba_start_seq_ctrl(tpAniSirGlobal, 581 tDot11fFfba_start_seq_ctrl *, 582 uint8_t *); 583 584 585 #define BA_START_SEQ_CTRL_FRAG_NUMBER_OFFSET 0 586 #define BA_START_SEQ_CTRL_FRAG_NUMBER_WIDTH 4 587 #define BA_START_SEQ_CTRL_SSN_OFFSET 4 588 #define BA_START_SEQ_CTRL_SSN_WIDTH 12 589 590 typedef struct sDot11fFfba_timeout { 591 uint16_t timeout; 592 } tDot11fFfba_timeout; 593 594 #define DOT11F_FF_BA_TIMEOUT_LEN (2) 595 596 void dot11f_unpack_ff_ba_timeout(tpAniSirGlobal, uint8_t *, 597 tDot11fFfba_timeout *); 598 599 void dot11f_pack_ff_ba_timeout(tpAniSirGlobal, tDot11fFfba_timeout *, 600 uint8_t *); 601 602 typedef struct sDot11fFfdelba_param_set { 603 uint16_t reserved:11; 604 uint16_t initiator:1; 605 uint16_t tid:4; 606 } tDot11fFfdelba_param_set; 607 608 #define DOT11F_FF_DELBA_PARAM_SET_LEN (2) 609 610 void dot11f_unpack_ff_delba_param_set(tpAniSirGlobal, uint8_t *, 611 tDot11fFfdelba_param_set *); 612 613 void dot11f_pack_ff_delba_param_set(tpAniSirGlobal, tDot11fFfdelba_param_set *, 614 uint8_t *); 615 616 #define DELBA_PARAM_SET_RESERVED_OFFSET 0 617 #define DELBA_PARAM_SET_RESERVED_WIDTH 11 618 #define DELBA_PARAM_SET_INITIATOR_OFFSET 11 619 #define DELBA_PARAM_SET_INITIATOR_WIDTH 1 620 #define DELBA_PARAM_SET_TID_OFFSET 12 621 #define DELBA_PARAM_SET_TID_WIDTH 4 622 623 typedef struct sDot11fFfext_chan_switch_ann_action { 624 uint32_t switch_mode:8; 625 uint32_t op_class:8; 626 uint32_t new_channel:8; 627 uint32_t switch_count:8; 628 } tDot11fFfext_chan_switch_ann_action; 629 630 #define DOT11F_FF_EXT_CHAN_SWITCH_ANN_ACTION_LEN (4) 631 632 void dot11f_unpack_ff_ext_chan_switch_ann_action(tpAniSirGlobal, uint8_t *, 633 tDot11fFfext_chan_switch_ann_action *); 634 635 void dot11f_pack_ff_ext_chan_switch_ann_action(tpAniSirGlobal, 636 tDot11fFfext_chan_switch_ann_action *, 637 uint8_t *); 638 639 640 #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_MODE_OFFSET 0 641 #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_MODE_WIDTH 8 642 #define EXT_CHAN_SWITCH_ANN_ACTION_OP_CLASS_OFFSET 8 643 #define EXT_CHAN_SWITCH_ANN_ACTION_OP_CLASS_WIDTH 8 644 #define EXT_CHAN_SWITCH_ANN_ACTION_NEW_CHANNEL_OFFSET 16 645 #define EXT_CHAN_SWITCH_ANN_ACTION_NEW_CHANNEL_WIDTH 8 646 #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_COUNT_OFFSET 24 647 #define EXT_CHAN_SWITCH_ANN_ACTION_SWITCH_COUNT_WIDTH 8 648 649 typedef struct sDot11fFfp2p_action_oui { 650 uint8_t oui_data[4]; 651 } tDot11fFfp2p_action_oui; 652 653 #define DOT11F_FF_P2P_ACTION_OUI_LEN (4) 654 655 void dot11f_unpack_ff_p2p_action_oui(tpAniSirGlobal, uint8_t *, 656 tDot11fFfp2p_action_oui *); 657 658 void dot11f_pack_ff_p2p_action_oui(tpAniSirGlobal, tDot11fFfp2p_action_oui *, 659 uint8_t *); 660 661 typedef struct sDot11fFfp2p_action_subtype { 662 uint8_t subtype; 663 } tDot11fFfp2p_action_subtype; 664 665 #define DOT11F_FF_P2P_ACTION_SUBTYPE_LEN (1) 666 667 void dot11f_unpack_ff_p2p_action_subtype(tpAniSirGlobal, uint8_t *, 668 tDot11fFfp2p_action_subtype *); 669 670 void dot11f_pack_ff_p2p_action_subtype(tpAniSirGlobal, 671 tDot11fFfp2p_action_subtype *, 672 uint8_t *); 673 674 675 /********************************************************************* 676 * TLVs * 677 ********************************************************************/ 678 679 680 /* ID 1 (0x0001) */ 681 typedef struct sDot11fTLVAuthorizedMACs { 682 uint8_t present; 683 uint8_t mac[6]; 684 } tDot11fTLVAuthorizedMACs; 685 686 #define DOT11F_TLV_AUTHORIZEDMACS (1) 687 688 /* N.B. These #defines do *not* include the ID & length */ 689 #define DOT11F_TLV_AUTHORIZEDMACS_MIN_LEN (6) 690 691 #define DOT11F_TLV_AUTHORIZEDMACS_MAX_LEN (6) 692 693 #ifdef __cplusplus 694 extern "C" { 695 #endif /* C++ */ 696 uint32_t dot11f_unpack_tlv_authorized_ma_cs( 697 tpAniSirGlobal, 698 uint8_t *, 699 uint16_t, 700 tDot11fTLVAuthorizedMACs*); 701 702 uint32_t dot11f_pack_tlv_authorized_ma_cs( 703 tpAniSirGlobal, 704 tDot11fTLVAuthorizedMACs *, 705 uint8_t *, 706 uint32_t, 707 uint32_t*); 708 709 uint32_t dot11f_get_packed_tlv_AuthorizedMACs( 710 tpAniSirGlobal, 711 tDot11fTLVAuthorizedMACs *, 712 uint32_t*); 713 714 #ifdef __cplusplus 715 }; /* End extern "C". */ 716 #endif /* C++ */ 717 718 /* ID 3 (0x0003) */ 719 typedef struct sDot11fTLVRequestToEnroll { 720 uint8_t present; 721 uint8_t req; 722 } tDot11fTLVRequestToEnroll; 723 724 #define DOT11F_TLV_REQUESTTOENROLL (3) 725 726 /* N.B. These #defines do *not* include the ID & length */ 727 #define DOT11F_TLV_REQUESTTOENROLL_MIN_LEN (1) 728 729 #define DOT11F_TLV_REQUESTTOENROLL_MAX_LEN (1) 730 731 #ifdef __cplusplus 732 extern "C" { 733 #endif /* C++ */ 734 uint32_t dot11f_unpack_tlv_RequestToEnroll( 735 tpAniSirGlobal, 736 uint8_t *, 737 uint16_t, 738 tDot11fTLVRequestToEnroll*); 739 740 uint32_t dot11f_pack_tlv_request_to_enroll( 741 tpAniSirGlobal, 742 tDot11fTLVRequestToEnroll *, 743 uint8_t *, 744 uint32_t, 745 uint32_t*); 746 747 uint32_t dot11f_get_packed_tlv_RequestToEnroll( 748 tpAniSirGlobal, 749 tDot11fTLVRequestToEnroll *, 750 uint32_t*); 751 752 #ifdef __cplusplus 753 }; /* End extern "C". */ 754 #endif /* C++ */ 755 756 /* ID 0 (0x0000) */ 757 typedef struct sDot11fTLVVersion2 { 758 uint8_t present; 759 uint8_t minor:4; 760 uint8_t major:4; 761 } tDot11fTLVVersion2; 762 763 #define DOT11F_TLV_VERSION2 (0) 764 765 /* N.B. These #defines do *not* include the ID & length */ 766 #define DOT11F_TLV_VERSION2_MIN_LEN (1) 767 768 #define DOT11F_TLV_VERSION2_MAX_LEN (1) 769 770 #ifdef __cplusplus 771 extern "C" { 772 #endif /* C++ */ 773 uint32_t dot11f_unpack_tlv_version2( 774 tpAniSirGlobal, 775 uint8_t *, 776 uint16_t, 777 tDot11fTLVVersion2*); 778 779 uint32_t dot11f_pack_tlv_version2( 780 tpAniSirGlobal, 781 tDot11fTLVVersion2 *, 782 uint8_t *, 783 uint32_t, 784 uint32_t*); 785 786 uint32_t dot11f_get_packed_tlv_Version2( 787 tpAniSirGlobal, 788 tDot11fTLVVersion2 *, 789 uint32_t*); 790 791 #ifdef __cplusplus 792 }; /* End extern "C". */ 793 #endif /* C++ */ 794 795 /* ID 4183 (0x1057) */ 796 typedef struct sDot11fTLVAPSetupLocked { 797 uint8_t present; 798 uint8_t fLocked; 799 } tDot11fTLVAPSetupLocked; 800 801 #define DOT11F_TLV_APSETUPLOCKED (4183) 802 803 /* N.B. These #defines do *not* include the ID & length */ 804 #define DOT11F_TLV_APSETUPLOCKED_MIN_LEN (3) 805 806 #define DOT11F_TLV_APSETUPLOCKED_MAX_LEN (3) 807 808 #ifdef __cplusplus 809 extern "C" { 810 #endif /* C++ */ 811 uint32_t dot11f_unpack_tlv_APSetupLocked( 812 tpAniSirGlobal, 813 uint8_t *, 814 uint16_t, 815 tDot11fTLVAPSetupLocked*); 816 817 uint32_t dot11f_pack_tlv_ap_setup_locked( 818 tpAniSirGlobal, 819 tDot11fTLVAPSetupLocked *, 820 uint8_t *, 821 uint32_t, 822 uint32_t*); 823 824 uint32_t dot11f_get_packed_tlv_APSetupLocked( 825 tpAniSirGlobal, 826 tDot11fTLVAPSetupLocked *, 827 uint32_t*); 828 829 #ifdef __cplusplus 830 }; /* End extern "C". */ 831 #endif /* C++ */ 832 833 /* ID 4098 (0x1002) */ 834 typedef struct sDot11fTLVAssociationState { 835 uint8_t present; 836 uint16_t state; 837 } tDot11fTLVAssociationState; 838 839 #define DOT11F_TLV_ASSOCIATIONSTATE (4098) 840 841 /* N.B. These #defines do *not* include the ID & length */ 842 #define DOT11F_TLV_ASSOCIATIONSTATE_MIN_LEN (4) 843 844 #define DOT11F_TLV_ASSOCIATIONSTATE_MAX_LEN (4) 845 846 #ifdef __cplusplus 847 extern "C" { 848 #endif /* C++ */ 849 uint32_t dot11f_unpack_tlv_AssociationState( 850 tpAniSirGlobal, 851 uint8_t *, 852 uint16_t, 853 tDot11fTLVAssociationState*); 854 855 uint32_t dot11f_pack_tlv_association_state( 856 tpAniSirGlobal, 857 tDot11fTLVAssociationState *, 858 uint8_t *, 859 uint32_t, 860 uint32_t*); 861 862 uint32_t dot11f_get_packed_tlv_AssociationState( 863 tpAniSirGlobal, 864 tDot11fTLVAssociationState *, 865 uint32_t*); 866 867 #ifdef __cplusplus 868 }; /* End extern "C". */ 869 #endif /* C++ */ 870 871 /* ID 4104 (0x1008) */ 872 typedef struct sDot11fTLVConfigMethods { 873 uint8_t present; 874 uint16_t methods; 875 } tDot11fTLVConfigMethods; 876 877 #define DOT11F_TLV_CONFIGMETHODS (4104) 878 879 /* N.B. These #defines do *not* include the ID & length */ 880 #define DOT11F_TLV_CONFIGMETHODS_MIN_LEN (4) 881 882 #define DOT11F_TLV_CONFIGMETHODS_MAX_LEN (4) 883 884 #ifdef __cplusplus 885 extern "C" { 886 #endif /* C++ */ 887 uint32_t dot11f_unpack_tlv_ConfigMethods( 888 tpAniSirGlobal, 889 uint8_t *, 890 uint16_t, 891 tDot11fTLVConfigMethods*); 892 893 uint32_t dot11f_pack_tlv_config_methods( 894 tpAniSirGlobal, 895 tDot11fTLVConfigMethods *, 896 uint8_t *, 897 uint32_t, 898 uint32_t*); 899 900 uint32_t dot11f_get_packed_tlv_ConfigMethods( 901 tpAniSirGlobal, 902 tDot11fTLVConfigMethods *, 903 uint32_t*); 904 905 #ifdef __cplusplus 906 }; /* End extern "C". */ 907 #endif /* C++ */ 908 909 /* ID 4105 (0x1009) */ 910 typedef struct sDot11fTLVConfigurationError { 911 uint8_t present; 912 uint16_t error; 913 } tDot11fTLVConfigurationError; 914 915 #define DOT11F_TLV_CONFIGURATIONERROR (4105) 916 917 /* N.B. These #defines do *not* include the ID & length */ 918 #define DOT11F_TLV_CONFIGURATIONERROR_MIN_LEN (4) 919 920 #define DOT11F_TLV_CONFIGURATIONERROR_MAX_LEN (4) 921 922 #ifdef __cplusplus 923 extern "C" { 924 #endif /* C++ */ 925 uint32_t dot11f_unpack_tlv_ConfigurationError( 926 tpAniSirGlobal, 927 uint8_t *, 928 uint16_t, 929 tDot11fTLVConfigurationError*); 930 931 uint32_t dot11f_pack_tlv_configuration_error( 932 tpAniSirGlobal, 933 tDot11fTLVConfigurationError *, 934 uint8_t *, 935 uint32_t, 936 uint32_t*); 937 938 uint32_t dot11f_get_packed_tlv_ConfigurationError( 939 tpAniSirGlobal, 940 tDot11fTLVConfigurationError *, 941 uint32_t*); 942 943 #ifdef __cplusplus 944 }; /* End extern "C". */ 945 #endif /* C++ */ 946 947 /* ID 4113 (0x1011) */ 948 typedef struct sDot11fTLVDeviceName { 949 uint8_t present; 950 uint8_t num_text; 951 uint8_t text[32]; 952 } tDot11fTLVDeviceName; 953 954 #define DOT11F_TLV_DEVICENAME (4113) 955 956 /* N.B. These #defines do *not* include the ID & length */ 957 #define DOT11F_TLV_DEVICENAME_MIN_LEN (2) 958 959 #define DOT11F_TLV_DEVICENAME_MAX_LEN (34) 960 961 #ifdef __cplusplus 962 extern "C" { 963 #endif /* C++ */ 964 uint32_t dot11f_unpack_tlv_device_name( 965 tpAniSirGlobal, 966 uint8_t *, 967 uint16_t, 968 tDot11fTLVDeviceName*); 969 970 uint32_t dot11f_pack_tlv_device_name( 971 tpAniSirGlobal, 972 tDot11fTLVDeviceName *, 973 uint8_t *, 974 uint32_t, 975 uint32_t*); 976 977 uint32_t dot11f_get_packed_tlv_DeviceName( 978 tpAniSirGlobal, 979 tDot11fTLVDeviceName *, 980 uint32_t*); 981 982 #ifdef __cplusplus 983 }; /* End extern "C". */ 984 #endif /* C++ */ 985 986 /* ID 4114 (0x1012) */ 987 typedef struct sDot11fTLVDevicePasswordID { 988 uint8_t present; 989 uint16_t id; 990 } tDot11fTLVDevicePasswordID; 991 992 #define DOT11F_TLV_DEVICEPASSWORDID (4114) 993 994 /* N.B. These #defines do *not* include the ID & length */ 995 #define DOT11F_TLV_DEVICEPASSWORDID_MIN_LEN (4) 996 997 #define DOT11F_TLV_DEVICEPASSWORDID_MAX_LEN (4) 998 999 #ifdef __cplusplus 1000 extern "C" { 1001 #endif /* C++ */ 1002 uint32_t dot11f_unpack_tlv_DevicePasswordID( 1003 tpAniSirGlobal, 1004 uint8_t *, 1005 uint16_t, 1006 tDot11fTLVDevicePasswordID*); 1007 1008 uint32_t dot11f_pack_tlv_device_password_id( 1009 tpAniSirGlobal, 1010 tDot11fTLVDevicePasswordID *, 1011 uint8_t *, 1012 uint32_t, 1013 uint32_t*); 1014 1015 uint32_t dot11f_get_packed_tlv_DevicePasswordID( 1016 tpAniSirGlobal, 1017 tDot11fTLVDevicePasswordID *, 1018 uint32_t*); 1019 1020 #ifdef __cplusplus 1021 }; /* End extern "C". */ 1022 #endif /* C++ */ 1023 1024 /* ID 8 (0x0008) */ 1025 typedef struct sDot11fTLVExtendedListenTiming { 1026 uint8_t present; 1027 uint16_t availibilityPeriod; 1028 uint16_t availibilityInterval; 1029 } tDot11fTLVExtendedListenTiming; 1030 1031 #define DOT11F_TLV_EXTENDEDLISTENTIMING (8) 1032 1033 /* N.B. These #defines do *not* include the ID & length */ 1034 #define DOT11F_TLV_EXTENDEDLISTENTIMING_MIN_LEN (5) 1035 1036 #define DOT11F_TLV_EXTENDEDLISTENTIMING_MAX_LEN (5) 1037 1038 #ifdef __cplusplus 1039 extern "C" { 1040 #endif /* C++ */ 1041 uint32_t dot11f_unpack_tlv_extended_listen_timing( 1042 tpAniSirGlobal, 1043 uint8_t *, 1044 uint16_t, 1045 tDot11fTLVExtendedListenTiming*); 1046 1047 uint32_t dot11f_pack_tlv_extended_listen_timing( 1048 tpAniSirGlobal, 1049 tDot11fTLVExtendedListenTiming *, 1050 uint8_t *, 1051 uint32_t, 1052 uint32_t*); 1053 1054 uint32_t dot11f_get_packed_tlv_ExtendedListenTiming( 1055 tpAniSirGlobal, 1056 tDot11fTLVExtendedListenTiming *, 1057 uint32_t*); 1058 1059 #ifdef __cplusplus 1060 }; /* End extern "C". */ 1061 #endif /* C++ */ 1062 1063 /* ID 6 (0x0006) */ 1064 typedef struct sDot11fTLVListenChannel { 1065 uint8_t present; 1066 uint8_t countryString[3]; 1067 uint8_t regulatoryClass; 1068 uint8_t channel; 1069 } tDot11fTLVListenChannel; 1070 1071 #define DOT11F_TLV_LISTENCHANNEL (6) 1072 1073 /* N.B. These #defines do *not* include the ID & length */ 1074 #define DOT11F_TLV_LISTENCHANNEL_MIN_LEN (6) 1075 1076 #define DOT11F_TLV_LISTENCHANNEL_MAX_LEN (6) 1077 1078 #ifdef __cplusplus 1079 extern "C" { 1080 #endif /* C++ */ 1081 uint32_t dot11f_unpack_tlv_listen_channel( 1082 tpAniSirGlobal, 1083 uint8_t *, 1084 uint16_t, 1085 tDot11fTLVListenChannel*); 1086 1087 uint32_t dot11f_pack_tlv_listen_channel( 1088 tpAniSirGlobal, 1089 tDot11fTLVListenChannel *, 1090 uint8_t *, 1091 uint32_t, 1092 uint32_t*); 1093 1094 uint32_t dot11f_get_packed_tlv_ListenChannel( 1095 tpAniSirGlobal, 1096 tDot11fTLVListenChannel *, 1097 uint32_t*); 1098 1099 #ifdef __cplusplus 1100 }; /* End extern "C". */ 1101 #endif /* C++ */ 1102 1103 /* ID 4129 (0x1021) */ 1104 typedef struct sDot11fTLVManufacturer { 1105 uint8_t present; 1106 uint8_t num_name; 1107 uint8_t name[64]; 1108 } tDot11fTLVManufacturer; 1109 1110 #define DOT11F_TLV_MANUFACTURER (4129) 1111 1112 /* N.B. These #defines do *not* include the ID & length */ 1113 #define DOT11F_TLV_MANUFACTURER_MIN_LEN (2) 1114 1115 #define DOT11F_TLV_MANUFACTURER_MAX_LEN (66) 1116 1117 #ifdef __cplusplus 1118 extern "C" { 1119 #endif /* C++ */ 1120 uint32_t dot11f_unpack_tlv_manufacturer( 1121 tpAniSirGlobal, 1122 uint8_t *, 1123 uint16_t, 1124 tDot11fTLVManufacturer*); 1125 1126 uint32_t dot11f_pack_tlv_manufacturer( 1127 tpAniSirGlobal, 1128 tDot11fTLVManufacturer *, 1129 uint8_t *, 1130 uint32_t, 1131 uint32_t*); 1132 1133 uint32_t dot11f_get_packed_tlv_Manufacturer( 1134 tpAniSirGlobal, 1135 tDot11fTLVManufacturer *, 1136 uint32_t*); 1137 1138 #ifdef __cplusplus 1139 }; /* End extern "C". */ 1140 #endif /* C++ */ 1141 1142 /* ID 1 (0x0001) */ 1143 typedef struct sDot11fTLVMinorReasonCode { 1144 uint8_t present; 1145 uint8_t minorReasonCode; 1146 } tDot11fTLVMinorReasonCode; 1147 1148 #define DOT11F_TLV_MINORREASONCODE (1) 1149 1150 /* N.B. These #defines do *not* include the ID & length */ 1151 #define DOT11F_TLV_MINORREASONCODE_MIN_LEN (2) 1152 1153 #define DOT11F_TLV_MINORREASONCODE_MAX_LEN (2) 1154 1155 #ifdef __cplusplus 1156 extern "C" { 1157 #endif /* C++ */ 1158 uint32_t dot11f_unpack_tlv_MinorReasonCode( 1159 tpAniSirGlobal, 1160 uint8_t *, 1161 uint16_t, 1162 tDot11fTLVMinorReasonCode*); 1163 1164 uint32_t dot11f_pack_tlv_minor_reason_code( 1165 tpAniSirGlobal, 1166 tDot11fTLVMinorReasonCode *, 1167 uint8_t *, 1168 uint32_t, 1169 uint32_t*); 1170 1171 uint32_t dot11f_get_packed_tlv_MinorReasonCode( 1172 tpAniSirGlobal, 1173 tDot11fTLVMinorReasonCode *, 1174 uint32_t*); 1175 1176 #ifdef __cplusplus 1177 }; /* End extern "C". */ 1178 #endif /* C++ */ 1179 1180 /* ID 4131 (0x1023) */ 1181 typedef struct sDot11fTLVModelName { 1182 uint8_t present; 1183 uint8_t num_text; 1184 uint8_t text[32]; 1185 } tDot11fTLVModelName; 1186 1187 #define DOT11F_TLV_MODELNAME (4131) 1188 1189 /* N.B. These #defines do *not* include the ID & length */ 1190 #define DOT11F_TLV_MODELNAME_MIN_LEN (2) 1191 1192 #define DOT11F_TLV_MODELNAME_MAX_LEN (34) 1193 1194 #ifdef __cplusplus 1195 extern "C" { 1196 #endif /* C++ */ 1197 uint32_t dot11f_unpack_tlv_model_name( 1198 tpAniSirGlobal, 1199 uint8_t *, 1200 uint16_t, 1201 tDot11fTLVModelName*); 1202 1203 uint32_t dot11f_pack_tlv_model_name( 1204 tpAniSirGlobal, 1205 tDot11fTLVModelName *, 1206 uint8_t *, 1207 uint32_t, 1208 uint32_t*); 1209 1210 uint32_t dot11f_get_packed_tlv_ModelName( 1211 tpAniSirGlobal, 1212 tDot11fTLVModelName *, 1213 uint32_t*); 1214 1215 #ifdef __cplusplus 1216 }; /* End extern "C". */ 1217 #endif /* C++ */ 1218 1219 /* ID 4132 (0x1024) */ 1220 typedef struct sDot11fTLVModelNumber { 1221 uint8_t present; 1222 uint8_t num_text; 1223 uint8_t text[32]; 1224 } tDot11fTLVModelNumber; 1225 1226 #define DOT11F_TLV_MODELNUMBER (4132) 1227 1228 /* N.B. These #defines do *not* include the ID & length */ 1229 #define DOT11F_TLV_MODELNUMBER_MIN_LEN (2) 1230 1231 #define DOT11F_TLV_MODELNUMBER_MAX_LEN (34) 1232 1233 #ifdef __cplusplus 1234 extern "C" { 1235 #endif /* C++ */ 1236 uint32_t dot11f_unpack_tlv_model_number( 1237 tpAniSirGlobal, 1238 uint8_t *, 1239 uint16_t, 1240 tDot11fTLVModelNumber*); 1241 1242 uint32_t dot11f_pack_tlv_model_number( 1243 tpAniSirGlobal, 1244 tDot11fTLVModelNumber *, 1245 uint8_t *, 1246 uint32_t, 1247 uint32_t*); 1248 1249 uint32_t dot11f_get_packed_tlv_ModelNumber( 1250 tpAniSirGlobal, 1251 tDot11fTLVModelNumber *, 1252 uint32_t*); 1253 1254 #ifdef __cplusplus 1255 }; /* End extern "C". */ 1256 #endif /* C++ */ 1257 1258 /* ID 12 (0x000c) */ 1259 typedef struct sDot11fTLVNoticeOfAbsence { 1260 uint8_t present; 1261 uint8_t index; 1262 uint8_t CTSWindowOppPS; 1263 uint8_t num_NoADesc; 1264 uint8_t NoADesc[36]; 1265 } tDot11fTLVNoticeOfAbsence; 1266 1267 #define DOT11F_TLV_NOTICEOFABSENCE (12) 1268 1269 /* N.B. These #defines do *not* include the ID & length */ 1270 #define DOT11F_TLV_NOTICEOFABSENCE_MIN_LEN (3) 1271 1272 #define DOT11F_TLV_NOTICEOFABSENCE_MAX_LEN (39) 1273 1274 #ifdef __cplusplus 1275 extern "C" { 1276 #endif /* C++ */ 1277 uint32_t dot11f_unpack_tlv_notice_of_absence( 1278 tpAniSirGlobal, 1279 uint8_t *, 1280 uint16_t, 1281 tDot11fTLVNoticeOfAbsence*); 1282 1283 uint32_t dot11f_pack_tlv_notice_of_absence( 1284 tpAniSirGlobal, 1285 tDot11fTLVNoticeOfAbsence *, 1286 uint8_t *, 1287 uint32_t, 1288 uint32_t*); 1289 1290 uint32_t dot11f_get_packed_tlv_NoticeOfAbsence( 1291 tpAniSirGlobal, 1292 tDot11fTLVNoticeOfAbsence *, 1293 uint32_t*); 1294 1295 #ifdef __cplusplus 1296 }; /* End extern "C". */ 1297 #endif /* C++ */ 1298 1299 /* ID 17 (0x0011) */ 1300 typedef struct sDot11fTLVOperatingChannel { 1301 uint8_t present; 1302 uint8_t countryString[3]; 1303 uint8_t regulatoryClass; 1304 uint8_t channel; 1305 } tDot11fTLVOperatingChannel; 1306 1307 #define DOT11F_TLV_OPERATINGCHANNEL (17) 1308 1309 /* N.B. These #defines do *not* include the ID & length */ 1310 #define DOT11F_TLV_OPERATINGCHANNEL_MIN_LEN (6) 1311 1312 #define DOT11F_TLV_OPERATINGCHANNEL_MAX_LEN (6) 1313 1314 #ifdef __cplusplus 1315 extern "C" { 1316 #endif /* C++ */ 1317 uint32_t dot11f_unpack_tlv_operating_channel( 1318 tpAniSirGlobal, 1319 uint8_t *, 1320 uint16_t, 1321 tDot11fTLVOperatingChannel*); 1322 1323 uint32_t dot11f_pack_tlv_operating_channel( 1324 tpAniSirGlobal, 1325 tDot11fTLVOperatingChannel *, 1326 uint8_t *, 1327 uint32_t, 1328 uint32_t*); 1329 1330 uint32_t dot11f_get_packed_tlv_OperatingChannel( 1331 tpAniSirGlobal, 1332 tDot11fTLVOperatingChannel *, 1333 uint32_t*); 1334 1335 #ifdef __cplusplus 1336 }; /* End extern "C". */ 1337 #endif /* C++ */ 1338 1339 /* ID 2 (0x0002) */ 1340 typedef struct sDot11fTLVP2PCapability { 1341 uint8_t present; 1342 uint8_t deviceCapability; 1343 uint8_t groupCapability; 1344 } tDot11fTLVP2PCapability; 1345 1346 #define DOT11F_TLV_P2PCAPABILITY (2) 1347 1348 /* N.B. These #defines do *not* include the ID & length */ 1349 #define DOT11F_TLV_P2PCAPABILITY_MIN_LEN (3) 1350 1351 #define DOT11F_TLV_P2PCAPABILITY_MAX_LEN (3) 1352 1353 #ifdef __cplusplus 1354 extern "C" { 1355 #endif /* C++ */ 1356 uint32_t dot11f_unpack_tlv_p2_p_capability( 1357 tpAniSirGlobal, 1358 uint8_t *, 1359 uint16_t, 1360 tDot11fTLVP2PCapability*); 1361 1362 uint32_t dot11f_pack_tlv_p2_p_capability( 1363 tpAniSirGlobal, 1364 tDot11fTLVP2PCapability *, 1365 uint8_t *, 1366 uint32_t, 1367 uint32_t*); 1368 1369 uint32_t dot11f_get_packed_tlv_P2PCapability( 1370 tpAniSirGlobal, 1371 tDot11fTLVP2PCapability *, 1372 uint32_t*); 1373 1374 #ifdef __cplusplus 1375 }; /* End extern "C". */ 1376 #endif /* C++ */ 1377 1378 /* ID 3 (0x0003) */ 1379 typedef struct sDot11fTLVP2PDeviceId { 1380 uint8_t present; 1381 uint8_t P2PDeviceAddress[6]; 1382 } tDot11fTLVP2PDeviceId; 1383 1384 #define DOT11F_TLV_P2PDEVICEID (3) 1385 1386 /* N.B. These #defines do *not* include the ID & length */ 1387 #define DOT11F_TLV_P2PDEVICEID_MIN_LEN (7) 1388 1389 #define DOT11F_TLV_P2PDEVICEID_MAX_LEN (7) 1390 1391 #ifdef __cplusplus 1392 extern "C" { 1393 #endif /* C++ */ 1394 uint32_t dot11f_unpack_tlv_p2_p_device_id( 1395 tpAniSirGlobal, 1396 uint8_t *, 1397 uint16_t, 1398 tDot11fTLVP2PDeviceId*); 1399 1400 uint32_t dot11f_pack_tlv_p2_p_device_id( 1401 tpAniSirGlobal, 1402 tDot11fTLVP2PDeviceId *, 1403 uint8_t *, 1404 uint32_t, 1405 uint32_t*); 1406 1407 uint32_t dot11f_get_packed_tlv_P2PDeviceId( 1408 tpAniSirGlobal, 1409 tDot11fTLVP2PDeviceId *, 1410 uint32_t*); 1411 1412 #ifdef __cplusplus 1413 }; /* End extern "C". */ 1414 #endif /* C++ */ 1415 1416 /* ID 13 (0x000d) */ 1417 typedef struct sDot11fTLVP2PDeviceInfo { 1418 uint8_t present; 1419 uint8_t P2PDeviceAddress[6]; 1420 uint16_t configMethod; 1421 uint8_t primaryDeviceType[8]; 1422 tDot11fTLVDeviceName DeviceName; 1423 } tDot11fTLVP2PDeviceInfo; 1424 1425 #define DOT11F_TLV_P2PDEVICEINFO (13) 1426 1427 /* N.B. These #defines do *not* include the ID & length */ 1428 #define DOT11F_TLV_P2PDEVICEINFO_MIN_LEN (17) 1429 1430 #define DOT11F_TLV_P2PDEVICEINFO_MAX_LEN (53) 1431 1432 #ifdef __cplusplus 1433 extern "C" { 1434 #endif /* C++ */ 1435 uint32_t dot11f_unpack_tlv_p2_p_device_info( 1436 tpAniSirGlobal, 1437 uint8_t *, 1438 uint16_t, 1439 tDot11fTLVP2PDeviceInfo*); 1440 1441 uint32_t dot11f_pack_tlv_p2_p_device_info( 1442 tpAniSirGlobal, 1443 tDot11fTLVP2PDeviceInfo *, 1444 uint8_t *, 1445 uint32_t, 1446 uint32_t*); 1447 1448 uint32_t dot11f_get_packed_tlv_P2PDeviceInfo( 1449 tpAniSirGlobal, 1450 tDot11fTLVP2PDeviceInfo *, 1451 uint32_t*); 1452 1453 #ifdef __cplusplus 1454 }; /* End extern "C". */ 1455 #endif /* C++ */ 1456 1457 /* ID 14 (0x000e) */ 1458 typedef struct sDot11fTLVP2PGroupInfo { 1459 uint8_t present; 1460 uint8_t num_P2PClientInfoDesc; 1461 uint8_t P2PClientInfoDesc[1024]; 1462 } tDot11fTLVP2PGroupInfo; 1463 1464 #define DOT11F_TLV_P2PGROUPINFO (14) 1465 1466 /* N.B. These #defines do *not* include the ID & length */ 1467 #define DOT11F_TLV_P2PGROUPINFO_MIN_LEN (1) 1468 1469 #define DOT11F_TLV_P2PGROUPINFO_MAX_LEN (1025) 1470 1471 #ifdef __cplusplus 1472 extern "C" { 1473 #endif /* C++ */ 1474 uint32_t dot11f_unpack_tlv_p2_p_group_info( 1475 tpAniSirGlobal, 1476 uint8_t *, 1477 uint16_t, 1478 tDot11fTLVP2PGroupInfo*); 1479 1480 uint32_t dot11f_pack_tlv_p2_p_group_info( 1481 tpAniSirGlobal, 1482 tDot11fTLVP2PGroupInfo *, 1483 uint8_t *, 1484 uint32_t, 1485 uint32_t*); 1486 1487 uint32_t dot11f_get_packed_tlv_P2PGroupInfo( 1488 tpAniSirGlobal, 1489 tDot11fTLVP2PGroupInfo *, 1490 uint32_t*); 1491 1492 #ifdef __cplusplus 1493 }; /* End extern "C". */ 1494 #endif /* C++ */ 1495 1496 /* ID 0 (0x0000) */ 1497 typedef struct sDot11fTLVP2PStatus { 1498 uint8_t present; 1499 uint8_t status; 1500 } tDot11fTLVP2PStatus; 1501 1502 #define DOT11F_TLV_P2PSTATUS (0) 1503 1504 /* N.B. These #defines do *not* include the ID & length */ 1505 #define DOT11F_TLV_P2PSTATUS_MIN_LEN (2) 1506 1507 #define DOT11F_TLV_P2PSTATUS_MAX_LEN (2) 1508 1509 #ifdef __cplusplus 1510 extern "C" { 1511 #endif /* C++ */ 1512 uint32_t dot11f_unpack_tlv_P2PStatus( 1513 tpAniSirGlobal, 1514 uint8_t *, 1515 uint16_t, 1516 tDot11fTLVP2PStatus*); 1517 1518 uint32_t dot11f_pack_tlv_p2_p_status( 1519 tpAniSirGlobal, 1520 tDot11fTLVP2PStatus *, 1521 uint8_t *, 1522 uint32_t, 1523 uint32_t*); 1524 1525 uint32_t dot11f_get_packed_tlv_P2PStatus( 1526 tpAniSirGlobal, 1527 tDot11fTLVP2PStatus *, 1528 uint32_t*); 1529 1530 #ifdef __cplusplus 1531 }; /* End extern "C". */ 1532 #endif /* C++ */ 1533 1534 /* ID 4180 (0x1054) */ 1535 typedef struct sDot11fTLVPrimaryDeviceType { 1536 uint8_t present; 1537 uint16_t primary_category; 1538 uint8_t oui[4]; 1539 uint16_t sub_category; 1540 } tDot11fTLVPrimaryDeviceType; 1541 1542 #define DOT11F_TLV_PRIMARYDEVICETYPE (4180) 1543 1544 /* N.B. These #defines do *not* include the ID & length */ 1545 #define DOT11F_TLV_PRIMARYDEVICETYPE_MIN_LEN (10) 1546 1547 #define DOT11F_TLV_PRIMARYDEVICETYPE_MAX_LEN (10) 1548 1549 #ifdef __cplusplus 1550 extern "C" { 1551 #endif /* C++ */ 1552 uint32_t dot11f_unpack_tlv_primary_device_type( 1553 tpAniSirGlobal, 1554 uint8_t *, 1555 uint16_t, 1556 tDot11fTLVPrimaryDeviceType*); 1557 1558 uint32_t dot11f_pack_tlv_primary_device_type( 1559 tpAniSirGlobal, 1560 tDot11fTLVPrimaryDeviceType *, 1561 uint8_t *, 1562 uint32_t, 1563 uint32_t*); 1564 1565 uint32_t dot11f_get_packed_tlv_PrimaryDeviceType( 1566 tpAniSirGlobal, 1567 tDot11fTLVPrimaryDeviceType *, 1568 uint32_t*); 1569 1570 #ifdef __cplusplus 1571 }; /* End extern "C". */ 1572 #endif /* C++ */ 1573 1574 /* ID 4156 (0x103c) */ 1575 typedef struct sDot11fTLVRFBands { 1576 uint8_t present; 1577 uint8_t bands; 1578 } tDot11fTLVRFBands; 1579 1580 #define DOT11F_TLV_RFBANDS (4156) 1581 1582 /* N.B. These #defines do *not* include the ID & length */ 1583 #define DOT11F_TLV_RFBANDS_MIN_LEN (3) 1584 1585 #define DOT11F_TLV_RFBANDS_MAX_LEN (3) 1586 1587 #ifdef __cplusplus 1588 extern "C" { 1589 #endif /* C++ */ 1590 uint32_t dot11f_unpack_tlv_RFBands( 1591 tpAniSirGlobal, 1592 uint8_t *, 1593 uint16_t, 1594 tDot11fTLVRFBands*); 1595 1596 uint32_t dot11f_pack_tlv_rf_bands( 1597 tpAniSirGlobal, 1598 tDot11fTLVRFBands *, 1599 uint8_t *, 1600 uint32_t, 1601 uint32_t*); 1602 1603 uint32_t dot11f_get_packed_tlv_RFBands( 1604 tpAniSirGlobal, 1605 tDot11fTLVRFBands *, 1606 uint32_t*); 1607 1608 #ifdef __cplusplus 1609 }; /* End extern "C". */ 1610 #endif /* C++ */ 1611 1612 /* ID 4202 (0x106a) */ 1613 typedef struct sDot11fTLVRequestDeviceType { 1614 uint8_t present; 1615 uint16_t primary_category; 1616 uint8_t oui[4]; 1617 uint16_t sub_category; 1618 } tDot11fTLVRequestDeviceType; 1619 1620 #define DOT11F_TLV_REQUESTDEVICETYPE (4202) 1621 1622 /* N.B. These #defines do *not* include the ID & length */ 1623 #define DOT11F_TLV_REQUESTDEVICETYPE_MIN_LEN (10) 1624 1625 #define DOT11F_TLV_REQUESTDEVICETYPE_MAX_LEN (10) 1626 1627 #ifdef __cplusplus 1628 extern "C" { 1629 #endif /* C++ */ 1630 uint32_t dot11f_unpack_tlv_request_device_type( 1631 tpAniSirGlobal, 1632 uint8_t *, 1633 uint16_t, 1634 tDot11fTLVRequestDeviceType*); 1635 1636 uint32_t dot11f_pack_tlv_request_device_type( 1637 tpAniSirGlobal, 1638 tDot11fTLVRequestDeviceType *, 1639 uint8_t *, 1640 uint32_t, 1641 uint32_t*); 1642 1643 uint32_t dot11f_get_packed_tlv_RequestDeviceType( 1644 tpAniSirGlobal, 1645 tDot11fTLVRequestDeviceType *, 1646 uint32_t*); 1647 1648 #ifdef __cplusplus 1649 }; /* End extern "C". */ 1650 #endif /* C++ */ 1651 1652 /* ID 4154 (0x103a) */ 1653 typedef struct sDot11fTLVRequestType { 1654 uint8_t present; 1655 uint8_t reqType; 1656 } tDot11fTLVRequestType; 1657 1658 #define DOT11F_TLV_REQUESTTYPE (4154) 1659 1660 /* N.B. These #defines do *not* include the ID & length */ 1661 #define DOT11F_TLV_REQUESTTYPE_MIN_LEN (3) 1662 1663 #define DOT11F_TLV_REQUESTTYPE_MAX_LEN (3) 1664 1665 #ifdef __cplusplus 1666 extern "C" { 1667 #endif /* C++ */ 1668 uint32_t dot11f_unpack_tlv_RequestType( 1669 tpAniSirGlobal, 1670 uint8_t *, 1671 uint16_t, 1672 tDot11fTLVRequestType*); 1673 1674 uint32_t dot11f_pack_tlv_request_type( 1675 tpAniSirGlobal, 1676 tDot11fTLVRequestType *, 1677 uint8_t *, 1678 uint32_t, 1679 uint32_t*); 1680 1681 uint32_t dot11f_get_packed_tlv_RequestType( 1682 tpAniSirGlobal, 1683 tDot11fTLVRequestType *, 1684 uint32_t*); 1685 1686 #ifdef __cplusplus 1687 }; /* End extern "C". */ 1688 #endif /* C++ */ 1689 1690 /* ID 4155 (0x103b) */ 1691 typedef struct sDot11fTLVResponseType { 1692 uint8_t present; 1693 uint8_t resType; 1694 } tDot11fTLVResponseType; 1695 1696 #define DOT11F_TLV_RESPONSETYPE (4155) 1697 1698 /* N.B. These #defines do *not* include the ID & length */ 1699 #define DOT11F_TLV_RESPONSETYPE_MIN_LEN (3) 1700 1701 #define DOT11F_TLV_RESPONSETYPE_MAX_LEN (3) 1702 1703 #ifdef __cplusplus 1704 extern "C" { 1705 #endif /* C++ */ 1706 uint32_t dot11f_unpack_tlv_ResponseType( 1707 tpAniSirGlobal, 1708 uint8_t *, 1709 uint16_t, 1710 tDot11fTLVResponseType*); 1711 1712 uint32_t dot11f_pack_tlv_response_type( 1713 tpAniSirGlobal, 1714 tDot11fTLVResponseType *, 1715 uint8_t *, 1716 uint32_t, 1717 uint32_t*); 1718 1719 uint32_t dot11f_get_packed_tlv_ResponseType( 1720 tpAniSirGlobal, 1721 tDot11fTLVResponseType *, 1722 uint32_t*); 1723 1724 #ifdef __cplusplus 1725 }; /* End extern "C". */ 1726 #endif /* C++ */ 1727 1728 /* ID 4161 (0x1041) */ 1729 typedef struct sDot11fTLVSelectedRegistrar { 1730 uint8_t present; 1731 uint8_t selected; 1732 } tDot11fTLVSelectedRegistrar; 1733 1734 #define DOT11F_TLV_SELECTEDREGISTRAR (4161) 1735 1736 /* N.B. These #defines do *not* include the ID & length */ 1737 #define DOT11F_TLV_SELECTEDREGISTRAR_MIN_LEN (3) 1738 1739 #define DOT11F_TLV_SELECTEDREGISTRAR_MAX_LEN (3) 1740 1741 #ifdef __cplusplus 1742 extern "C" { 1743 #endif /* C++ */ 1744 uint32_t dot11f_unpack_tlv_SelectedRegistrar( 1745 tpAniSirGlobal, 1746 uint8_t *, 1747 uint16_t, 1748 tDot11fTLVSelectedRegistrar*); 1749 1750 uint32_t dot11f_pack_tlv_selected_registrar( 1751 tpAniSirGlobal, 1752 tDot11fTLVSelectedRegistrar *, 1753 uint8_t *, 1754 uint32_t, 1755 uint32_t*); 1756 1757 uint32_t dot11f_get_packed_tlv_SelectedRegistrar( 1758 tpAniSirGlobal, 1759 tDot11fTLVSelectedRegistrar *, 1760 uint32_t*); 1761 1762 #ifdef __cplusplus 1763 }; /* End extern "C". */ 1764 #endif /* C++ */ 1765 1766 /* ID 4179 (0x1053) */ 1767 typedef struct sDot11fTLVSelectedRegistrarConfigMethods { 1768 uint8_t present; 1769 uint16_t methods; 1770 } tDot11fTLVSelectedRegistrarConfigMethods; 1771 1772 #define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS (4179) 1773 1774 /* N.B. These #defines do *not* include the ID & length */ 1775 #define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MIN_LEN (4) 1776 1777 #define DOT11F_TLV_SELECTEDREGISTRARCONFIGMETHODS_MAX_LEN (4) 1778 1779 #ifdef __cplusplus 1780 extern "C" { 1781 #endif /* C++ */ 1782 uint32_t dot11f_unpack_tlv_SelectedRegistrarConfigMethods( 1783 tpAniSirGlobal, 1784 uint8_t *, 1785 uint16_t, 1786 tDot11fTLVSelectedRegistrarConfigMethods*); 1787 1788 uint32_t dot11f_pack_tlv_selected_registrar_config_methods( 1789 tpAniSirGlobal, 1790 tDot11fTLVSelectedRegistrarConfigMethods *, 1791 uint8_t *, 1792 uint32_t, 1793 uint32_t*); 1794 1795 uint32_t dot11f_get_packed_tlv_SelectedRegistrarConfigMethods( 1796 tpAniSirGlobal, 1797 tDot11fTLVSelectedRegistrarConfigMethods *, 1798 uint32_t*); 1799 1800 #ifdef __cplusplus 1801 }; /* End extern "C". */ 1802 #endif /* C++ */ 1803 1804 /* ID 4162 (0x1042) */ 1805 typedef struct sDot11fTLVSerialNumber { 1806 uint8_t present; 1807 uint8_t num_text; 1808 uint8_t text[32]; 1809 } tDot11fTLVSerialNumber; 1810 1811 #define DOT11F_TLV_SERIALNUMBER (4162) 1812 1813 /* N.B. These #defines do *not* include the ID & length */ 1814 #define DOT11F_TLV_SERIALNUMBER_MIN_LEN (2) 1815 1816 #define DOT11F_TLV_SERIALNUMBER_MAX_LEN (34) 1817 1818 #ifdef __cplusplus 1819 extern "C" { 1820 #endif /* C++ */ 1821 uint32_t dot11f_unpack_tlv_serial_number( 1822 tpAniSirGlobal, 1823 uint8_t *, 1824 uint16_t, 1825 tDot11fTLVSerialNumber*); 1826 1827 uint32_t dot11f_pack_tlv_serial_number( 1828 tpAniSirGlobal, 1829 tDot11fTLVSerialNumber *, 1830 uint8_t *, 1831 uint32_t, 1832 uint32_t*); 1833 1834 uint32_t dot11f_get_packed_tlv_SerialNumber( 1835 tpAniSirGlobal, 1836 tDot11fTLVSerialNumber *, 1837 uint32_t*); 1838 1839 #ifdef __cplusplus 1840 }; /* End extern "C". */ 1841 #endif /* C++ */ 1842 1843 /* ID 4167 (0x1047) */ 1844 typedef struct sDot11fTLVUUID_E { 1845 uint8_t present; 1846 uint8_t uuid[16]; 1847 } tDot11fTLVUUID_E; 1848 1849 #define DOT11F_TLV_UUID_E (4167) 1850 1851 /* N.B. These #defines do *not* include the ID & length */ 1852 #define DOT11F_TLV_UUID_E_MIN_LEN (18) 1853 1854 #define DOT11F_TLV_UUID_E_MAX_LEN (18) 1855 1856 #ifdef __cplusplus 1857 extern "C" { 1858 #endif /* C++ */ 1859 uint32_t dot11f_unpack_tlv_uuid_e( 1860 tpAniSirGlobal, 1861 uint8_t *, 1862 uint16_t, 1863 tDot11fTLVUUID_E*); 1864 1865 uint32_t dot11f_pack_tlv_uuid_e( 1866 tpAniSirGlobal, 1867 tDot11fTLVUUID_E *, 1868 uint8_t *, 1869 uint32_t, 1870 uint32_t*); 1871 1872 uint32_t dot11f_get_packed_tlv_UUID_E( 1873 tpAniSirGlobal, 1874 tDot11fTLVUUID_E *, 1875 uint32_t*); 1876 1877 #ifdef __cplusplus 1878 }; /* End extern "C". */ 1879 #endif /* C++ */ 1880 1881 /* ID 4168 (0x1048) */ 1882 typedef struct sDot11fTLVUUID_R { 1883 uint8_t present; 1884 uint8_t uuid[16]; 1885 } tDot11fTLVUUID_R; 1886 1887 #define DOT11F_TLV_UUID_R (4168) 1888 1889 /* N.B. These #defines do *not* include the ID & length */ 1890 #define DOT11F_TLV_UUID_R_MIN_LEN (18) 1891 1892 #define DOT11F_TLV_UUID_R_MAX_LEN (18) 1893 1894 #ifdef __cplusplus 1895 extern "C" { 1896 #endif /* C++ */ 1897 uint32_t dot11f_unpack_tlv_uuid_r( 1898 tpAniSirGlobal, 1899 uint8_t *, 1900 uint16_t, 1901 tDot11fTLVUUID_R*); 1902 1903 uint32_t dot11f_pack_tlv_uuid_r( 1904 tpAniSirGlobal, 1905 tDot11fTLVUUID_R *, 1906 uint8_t *, 1907 uint32_t, 1908 uint32_t*); 1909 1910 uint32_t dot11f_get_packed_tlv_UUID_R( 1911 tpAniSirGlobal, 1912 tDot11fTLVUUID_R *, 1913 uint32_t*); 1914 1915 #ifdef __cplusplus 1916 }; /* End extern "C". */ 1917 #endif /* C++ */ 1918 1919 /* ID 4169 (0x1049) */ 1920 typedef struct sDot11fTLVVendorExtension { 1921 uint8_t present; 1922 uint8_t vendorId[3]; 1923 tDot11fTLVVersion2 Version2; 1924 tDot11fTLVAuthorizedMACs AuthorizedMACs; 1925 tDot11fTLVRequestToEnroll RequestToEnroll; 1926 } tDot11fTLVVendorExtension; 1927 1928 #define DOT11F_TLV_VENDOREXTENSION (4169) 1929 1930 /* N.B. These #defines do *not* include the ID & length */ 1931 #define DOT11F_TLV_VENDOREXTENSION_MIN_LEN (5) 1932 1933 #define DOT11F_TLV_VENDOREXTENSION_MAX_LEN (19) 1934 1935 #ifdef __cplusplus 1936 extern "C" { 1937 #endif /* C++ */ 1938 uint32_t dot11f_unpack_tlv_vendor_extension( 1939 tpAniSirGlobal, 1940 uint8_t *, 1941 uint16_t, 1942 tDot11fTLVVendorExtension*); 1943 1944 uint32_t dot11f_pack_tlv_vendor_extension( 1945 tpAniSirGlobal, 1946 tDot11fTLVVendorExtension *, 1947 uint8_t *, 1948 uint32_t, 1949 uint32_t*); 1950 1951 uint32_t dot11f_get_packed_tlv_VendorExtension( 1952 tpAniSirGlobal, 1953 tDot11fTLVVendorExtension *, 1954 uint32_t*); 1955 1956 #ifdef __cplusplus 1957 }; /* End extern "C". */ 1958 #endif /* C++ */ 1959 1960 /* ID 4170 (0x104a) */ 1961 typedef struct sDot11fTLVVersion { 1962 uint8_t present; 1963 uint8_t minor:4; 1964 uint8_t major:4; 1965 } tDot11fTLVVersion; 1966 1967 #define DOT11F_TLV_VERSION (4170) 1968 1969 /* N.B. These #defines do *not* include the ID & length */ 1970 #define DOT11F_TLV_VERSION_MIN_LEN (3) 1971 1972 #define DOT11F_TLV_VERSION_MAX_LEN (3) 1973 1974 #ifdef __cplusplus 1975 extern "C" { 1976 #endif /* C++ */ 1977 uint32_t dot11f_unpack_tlv_version( 1978 tpAniSirGlobal, 1979 uint8_t *, 1980 uint16_t, 1981 tDot11fTLVVersion*); 1982 1983 uint32_t dot11f_pack_tlv_version( 1984 tpAniSirGlobal, 1985 tDot11fTLVVersion *, 1986 uint8_t *, 1987 uint32_t, 1988 uint32_t*); 1989 1990 uint32_t dot11f_get_packed_tlv_Version( 1991 tpAniSirGlobal, 1992 tDot11fTLVVersion *, 1993 uint32_t*); 1994 1995 #ifdef __cplusplus 1996 }; /* End extern "C". */ 1997 #endif /* C++ */ 1998 1999 /* ID 4164 (0x1044) */ 2000 typedef struct sDot11fTLVWPSState { 2001 uint8_t present; 2002 uint8_t state; 2003 } tDot11fTLVWPSState; 2004 2005 #define DOT11F_TLV_WPSSTATE (4164) 2006 2007 /* N.B. These #defines do *not* include the ID & length */ 2008 #define DOT11F_TLV_WPSSTATE_MIN_LEN (3) 2009 2010 #define DOT11F_TLV_WPSSTATE_MAX_LEN (3) 2011 2012 #ifdef __cplusplus 2013 extern "C" { 2014 #endif /* C++ */ 2015 uint32_t dot11f_unpack_tlv_WPSState( 2016 tpAniSirGlobal, 2017 uint8_t *, 2018 uint16_t, 2019 tDot11fTLVWPSState*); 2020 2021 uint32_t dot11f_pack_tlv_wps_state( 2022 tpAniSirGlobal, 2023 tDot11fTLVWPSState *, 2024 uint8_t *, 2025 uint32_t, 2026 uint32_t*); 2027 2028 uint32_t dot11f_get_packed_tlv_WPSState( 2029 tpAniSirGlobal, 2030 tDot11fTLVWPSState *, 2031 uint32_t*); 2032 2033 #ifdef __cplusplus 2034 }; /* End extern "C". */ 2035 #endif /* C++ */ 2036 2037 /* ID 4 (0x0004) */ 2038 typedef struct sDot11fTLVassoc_disallowed { 2039 uint8_t present; 2040 uint8_t reason_code; 2041 } tDot11fTLVassoc_disallowed; 2042 2043 #define DOT11F_TLV_ASSOC_DISALLOWED (4) 2044 2045 /* N.B. These #defines do *not* include the ID & length */ 2046 #define DOT11F_TLV_ASSOC_DISALLOWED_MIN_LEN (1) 2047 2048 #define DOT11F_TLV_ASSOC_DISALLOWED_MAX_LEN (1) 2049 2050 #ifdef __cplusplus 2051 extern "C" { 2052 #endif /* C++ */ 2053 uint32_t dot11f_unpack_tlv_assoc_disallowed( 2054 tpAniSirGlobal, 2055 uint8_t *, 2056 uint16_t, 2057 tDot11fTLVassoc_disallowed*); 2058 2059 uint32_t dot11f_pack_tlv_assoc_disallowed( 2060 tpAniSirGlobal, 2061 tDot11fTLVassoc_disallowed *, 2062 uint8_t *, 2063 uint32_t, 2064 uint32_t*); 2065 2066 uint32_t dot11f_get_packed_tlv_assoc_disallowed( 2067 tpAniSirGlobal, 2068 tDot11fTLVassoc_disallowed *, 2069 uint32_t*); 2070 2071 #ifdef __cplusplus 2072 }; /* End extern "C". */ 2073 #endif /* C++ */ 2074 2075 /* ID 8 (0x0008) */ 2076 typedef struct sDot11fTLVassoc_retry_delay { 2077 uint8_t present; 2078 uint16_t delay; 2079 } tDot11fTLVassoc_retry_delay; 2080 2081 #define DOT11F_TLV_ASSOC_RETRY_DELAY (8) 2082 2083 /* N.B. These #defines do *not* include the ID & length */ 2084 #define DOT11F_TLV_ASSOC_RETRY_DELAY_MIN_LEN (2) 2085 2086 #define DOT11F_TLV_ASSOC_RETRY_DELAY_MAX_LEN (2) 2087 2088 #ifdef __cplusplus 2089 extern "C" { 2090 #endif /* C++ */ 2091 uint32_t dot11f_unpack_tlv_assoc_retry_delay( 2092 tpAniSirGlobal, 2093 uint8_t *, 2094 uint16_t, 2095 tDot11fTLVassoc_retry_delay*); 2096 2097 uint32_t dot11f_pack_tlv_assoc_retry_delay( 2098 tpAniSirGlobal, 2099 tDot11fTLVassoc_retry_delay *, 2100 uint8_t *, 2101 uint32_t, 2102 uint32_t*); 2103 2104 uint32_t dot11f_get_packed_tlv_assoc_retry_delay( 2105 tpAniSirGlobal, 2106 tDot11fTLVassoc_retry_delay *, 2107 uint32_t*); 2108 2109 #ifdef __cplusplus 2110 }; /* End extern "C". */ 2111 #endif /* C++ */ 2112 2113 /* ID 3 (0x0003) */ 2114 typedef struct sDot11fTLVcellular_data_cap { 2115 uint8_t present; 2116 uint8_t cellular_connectivity; 2117 } tDot11fTLVcellular_data_cap; 2118 2119 #define DOT11F_TLV_CELLULAR_DATA_CAP (3) 2120 2121 /* N.B. These #defines do *not* include the ID & length */ 2122 #define DOT11F_TLV_CELLULAR_DATA_CAP_MIN_LEN (1) 2123 2124 #define DOT11F_TLV_CELLULAR_DATA_CAP_MAX_LEN (1) 2125 2126 #ifdef __cplusplus 2127 extern "C" { 2128 #endif /* C++ */ 2129 uint32_t dot11f_unpack_tlv_cellular_data_cap( 2130 tpAniSirGlobal, 2131 uint8_t *, 2132 uint16_t, 2133 tDot11fTLVcellular_data_cap*); 2134 2135 uint32_t dot11f_pack_tlv_cellular_data_cap( 2136 tpAniSirGlobal, 2137 tDot11fTLVcellular_data_cap *, 2138 uint8_t *, 2139 uint32_t, 2140 uint32_t*); 2141 2142 uint32_t dot11f_get_packed_tlv_cellular_data_cap( 2143 tpAniSirGlobal, 2144 tDot11fTLVcellular_data_cap *, 2145 uint32_t*); 2146 2147 #ifdef __cplusplus 2148 }; /* End extern "C". */ 2149 #endif /* C++ */ 2150 2151 /* ID 5 (0x0005) */ 2152 typedef struct sDot11fTLVcellular_data_con_pref { 2153 uint8_t present; 2154 uint8_t cellular_preference; 2155 } tDot11fTLVcellular_data_con_pref; 2156 2157 #define DOT11F_TLV_CELLULAR_DATA_CON_PREF (5) 2158 2159 /* N.B. These #defines do *not* include the ID & length */ 2160 #define DOT11F_TLV_CELLULAR_DATA_CON_PREF_MIN_LEN (1) 2161 2162 #define DOT11F_TLV_CELLULAR_DATA_CON_PREF_MAX_LEN (1) 2163 2164 #ifdef __cplusplus 2165 extern "C" { 2166 #endif /* C++ */ 2167 uint32_t dot11f_unpack_tlv_cellular_data_con_pref( 2168 tpAniSirGlobal, 2169 uint8_t *, 2170 uint16_t, 2171 tDot11fTLVcellular_data_con_pref*); 2172 2173 uint32_t dot11f_pack_tlv_cellular_data_con_pref( 2174 tpAniSirGlobal, 2175 tDot11fTLVcellular_data_con_pref *, 2176 uint8_t *, 2177 uint32_t, 2178 uint32_t*); 2179 2180 uint32_t dot11f_get_packed_tlv_cellular_data_con_pref( 2181 tpAniSirGlobal, 2182 tDot11fTLVcellular_data_con_pref *, 2183 uint32_t*); 2184 2185 #ifdef __cplusplus 2186 }; /* End extern "C". */ 2187 #endif /* C++ */ 2188 2189 /* ID 1 (0x0001) */ 2190 typedef struct sDot11fTLVmbo_ap_cap { 2191 uint8_t present; 2192 uint8_t mbo_cap_ind; 2193 } tDot11fTLVmbo_ap_cap; 2194 2195 #define DOT11F_TLV_MBO_AP_CAP (1) 2196 2197 /* N.B. These #defines do *not* include the ID & length */ 2198 #define DOT11F_TLV_MBO_AP_CAP_MIN_LEN (1) 2199 2200 #define DOT11F_TLV_MBO_AP_CAP_MAX_LEN (1) 2201 2202 #ifdef __cplusplus 2203 extern "C" { 2204 #endif /* C++ */ 2205 uint32_t dot11f_unpack_tlv_mbo_ap_cap( 2206 tpAniSirGlobal, 2207 uint8_t *, 2208 uint16_t, 2209 tDot11fTLVmbo_ap_cap*); 2210 2211 uint32_t dot11f_pack_tlv_mbo_ap_cap( 2212 tpAniSirGlobal, 2213 tDot11fTLVmbo_ap_cap *, 2214 uint8_t *, 2215 uint32_t, 2216 uint32_t*); 2217 2218 uint32_t dot11f_get_packed_tlv_mbo_ap_cap( 2219 tpAniSirGlobal, 2220 tDot11fTLVmbo_ap_cap *, 2221 uint32_t*); 2222 2223 #ifdef __cplusplus 2224 }; /* End extern "C". */ 2225 #endif /* C++ */ 2226 2227 /* ID 2 (0x0002) */ 2228 typedef struct sDot11fTLVnon_prefferd_chan_rep { 2229 uint8_t present; 2230 uint8_t oper_class; 2231 uint8_t num_channel_report; 2232 uint8_t channel_report[254]; 2233 } tDot11fTLVnon_prefferd_chan_rep; 2234 2235 #define DOT11F_TLV_NON_PREFFERD_CHAN_REP (2) 2236 2237 /* N.B. These #defines do *not* include the ID & length */ 2238 #define DOT11F_TLV_NON_PREFFERD_CHAN_REP_MIN_LEN (4) 2239 2240 #define DOT11F_TLV_NON_PREFFERD_CHAN_REP_MAX_LEN (255) 2241 2242 #ifdef __cplusplus 2243 extern "C" { 2244 #endif /* C++ */ 2245 uint32_t dot11f_unpack_tlv_non_prefferd_chan_rep( 2246 tpAniSirGlobal, 2247 uint8_t *, 2248 uint16_t, 2249 tDot11fTLVnon_prefferd_chan_rep*); 2250 2251 uint32_t dot11f_pack_tlv_non_prefferd_chan_rep( 2252 tpAniSirGlobal, 2253 tDot11fTLVnon_prefferd_chan_rep *, 2254 uint8_t *, 2255 uint32_t, 2256 uint32_t*); 2257 2258 uint32_t dot11f_get_packed_tlv_non_prefferd_chan_rep( 2259 tpAniSirGlobal, 2260 tDot11fTLVnon_prefferd_chan_rep *, 2261 uint32_t*); 2262 2263 #ifdef __cplusplus 2264 }; /* End extern "C". */ 2265 #endif /* C++ */ 2266 2267 /* ID 101 (0x0065) */ 2268 typedef struct sDot11fTLVoce_cap { 2269 uint8_t present; 2270 uint8_t oce_release:3; 2271 uint8_t is_sta_cfon:1; 2272 uint8_t non_oce_ap_present:1; 2273 uint8_t reserved:3; 2274 } tDot11fTLVoce_cap; 2275 2276 #define DOT11F_TLV_OCE_CAP (101) 2277 2278 /* N.B. These #defines do *not* include the ID & length */ 2279 #define DOT11F_TLV_OCE_CAP_MIN_LEN (1) 2280 2281 #define DOT11F_TLV_OCE_CAP_MAX_LEN (1) 2282 2283 #ifdef __cplusplus 2284 extern "C" { 2285 #endif /* C++ */ 2286 uint32_t dot11f_unpack_tlv_oce_cap( 2287 tpAniSirGlobal, 2288 uint8_t *, 2289 uint16_t, 2290 tDot11fTLVoce_cap*); 2291 2292 uint32_t dot11f_pack_tlv_oce_cap( 2293 tpAniSirGlobal, 2294 tDot11fTLVoce_cap *, 2295 uint8_t *, 2296 uint32_t, 2297 uint32_t*); 2298 2299 uint32_t dot11f_get_packed_tlv_oce_cap( 2300 tpAniSirGlobal, 2301 tDot11fTLVoce_cap *, 2302 uint32_t*); 2303 2304 #ifdef __cplusplus 2305 }; /* End extern "C". */ 2306 #endif /* C++ */ 2307 2308 /* ID 103 (0x0067) */ 2309 typedef struct sDot11fTLVreduced_wan_metrics { 2310 uint8_t present; 2311 uint8_t downlink_av_cap:4; 2312 uint8_t uplink_av_cap:4; 2313 } tDot11fTLVreduced_wan_metrics; 2314 2315 #define DOT11F_TLV_REDUCED_WAN_METRICS (103) 2316 2317 /* N.B. These #defines do *not* include the ID & length */ 2318 #define DOT11F_TLV_REDUCED_WAN_METRICS_MIN_LEN (1) 2319 2320 #define DOT11F_TLV_REDUCED_WAN_METRICS_MAX_LEN (1) 2321 2322 #ifdef __cplusplus 2323 extern "C" { 2324 #endif /* C++ */ 2325 uint32_t dot11f_unpack_tlv_reduced_wan_metrics( 2326 tpAniSirGlobal, 2327 uint8_t *, 2328 uint16_t, 2329 tDot11fTLVreduced_wan_metrics*); 2330 2331 uint32_t dot11f_pack_tlv_reduced_wan_metrics( 2332 tpAniSirGlobal, 2333 tDot11fTLVreduced_wan_metrics *, 2334 uint8_t *, 2335 uint32_t, 2336 uint32_t*); 2337 2338 uint32_t dot11f_get_packed_tlv_reduced_wan_metrics( 2339 tpAniSirGlobal, 2340 tDot11fTLVreduced_wan_metrics *, 2341 uint32_t*); 2342 2343 #ifdef __cplusplus 2344 }; /* End extern "C". */ 2345 #endif /* C++ */ 2346 2347 /* ID 102 (0x0066) */ 2348 typedef struct sDot11fTLVrssi_assoc_rej { 2349 uint8_t present; 2350 uint8_t delta_rssi; 2351 uint8_t retry_delay; 2352 } tDot11fTLVrssi_assoc_rej; 2353 2354 #define DOT11F_TLV_RSSI_ASSOC_REJ (102) 2355 2356 /* N.B. These #defines do *not* include the ID & length */ 2357 #define DOT11F_TLV_RSSI_ASSOC_REJ_MIN_LEN (2) 2358 2359 #define DOT11F_TLV_RSSI_ASSOC_REJ_MAX_LEN (2) 2360 2361 #ifdef __cplusplus 2362 extern "C" { 2363 #endif /* C++ */ 2364 uint32_t dot11f_unpack_tlv_rssi_assoc_rej( 2365 tpAniSirGlobal, 2366 uint8_t *, 2367 uint16_t, 2368 tDot11fTLVrssi_assoc_rej*); 2369 2370 uint32_t dot11f_pack_tlv_rssi_assoc_rej( 2371 tpAniSirGlobal, 2372 tDot11fTLVrssi_assoc_rej *, 2373 uint8_t *, 2374 uint32_t, 2375 uint32_t*); 2376 2377 uint32_t dot11f_get_packed_tlv_rssi_assoc_rej( 2378 tpAniSirGlobal, 2379 tDot11fTLVrssi_assoc_rej *, 2380 uint32_t*); 2381 2382 #ifdef __cplusplus 2383 }; /* End extern "C". */ 2384 #endif /* C++ */ 2385 2386 /* ID 6 (0x0006) */ 2387 typedef struct sDot11fTLVtransition_reason { 2388 uint8_t present; 2389 uint8_t transition_reason_code; 2390 } tDot11fTLVtransition_reason; 2391 2392 #define DOT11F_TLV_TRANSITION_REASON (6) 2393 2394 /* N.B. These #defines do *not* include the ID & length */ 2395 #define DOT11F_TLV_TRANSITION_REASON_MIN_LEN (1) 2396 2397 #define DOT11F_TLV_TRANSITION_REASON_MAX_LEN (1) 2398 2399 #ifdef __cplusplus 2400 extern "C" { 2401 #endif /* C++ */ 2402 uint32_t dot11f_unpack_tlv_transition_reason( 2403 tpAniSirGlobal, 2404 uint8_t *, 2405 uint16_t, 2406 tDot11fTLVtransition_reason*); 2407 2408 uint32_t dot11f_pack_tlv_transition_reason( 2409 tpAniSirGlobal, 2410 tDot11fTLVtransition_reason *, 2411 uint8_t *, 2412 uint32_t, 2413 uint32_t*); 2414 2415 uint32_t dot11f_get_packed_tlv_transition_reason( 2416 tpAniSirGlobal, 2417 tDot11fTLVtransition_reason *, 2418 uint32_t*); 2419 2420 #ifdef __cplusplus 2421 }; /* End extern "C". */ 2422 #endif /* C++ */ 2423 2424 /* ID 7 (0x0007) */ 2425 typedef struct sDot11fTLVtransition_reject_reason { 2426 uint8_t present; 2427 uint8_t transition_reject_code; 2428 } tDot11fTLVtransition_reject_reason; 2429 2430 #define DOT11F_TLV_TRANSITION_REJECT_REASON (7) 2431 2432 /* N.B. These #defines do *not* include the ID & length */ 2433 #define DOT11F_TLV_TRANSITION_REJECT_REASON_MIN_LEN (1) 2434 2435 #define DOT11F_TLV_TRANSITION_REJECT_REASON_MAX_LEN (1) 2436 2437 #ifdef __cplusplus 2438 extern "C" { 2439 #endif /* C++ */ 2440 uint32_t dot11f_unpack_tlv_transition_reject_reason( 2441 tpAniSirGlobal, 2442 uint8_t *, 2443 uint16_t, 2444 tDot11fTLVtransition_reject_reason*); 2445 2446 uint32_t dot11f_pack_tlv_transition_reject_reason( 2447 tpAniSirGlobal, 2448 tDot11fTLVtransition_reject_reason *, 2449 uint8_t *, 2450 uint32_t, 2451 uint32_t*); 2452 2453 uint32_t dot11f_get_packed_tlv_transition_reject_reason( 2454 tpAniSirGlobal, 2455 tDot11fTLVtransition_reject_reason *, 2456 uint32_t*); 2457 2458 #ifdef __cplusplus 2459 }; /* End extern "C". */ 2460 #endif /* C++ */ 2461 2462 /* ID 16 (0x0010) */ 2463 typedef struct sDot11fTLVP2PInterface { 2464 uint8_t present; 2465 uint8_t P2PDeviceAddress[6]; 2466 } tDot11fTLVP2PInterface; 2467 2468 #define DOT11F_TLV_P2PINTERFACE (16) 2469 2470 /* N.B. These #defines do *not* include the ID & length */ 2471 #define DOT11F_TLV_P2PINTERFACE_MIN_LEN (7) 2472 2473 #define DOT11F_TLV_P2PINTERFACE_MAX_LEN (7) 2474 2475 #ifdef __cplusplus 2476 extern "C" { 2477 #endif /* C++ */ 2478 uint32_t dot11f_unpack_tlv_p2_p_interface( 2479 tpAniSirGlobal, 2480 uint8_t *, 2481 uint16_t, 2482 tDot11fTLVP2PInterface*); 2483 2484 uint32_t dot11f_pack_tlv_p2_p_interface( 2485 tpAniSirGlobal, 2486 tDot11fTLVP2PInterface *, 2487 uint8_t *, 2488 uint32_t, 2489 uint32_t*); 2490 2491 uint32_t dot11f_get_packed_tlv_P2PInterface( 2492 tpAniSirGlobal, 2493 tDot11fTLVP2PInterface *, 2494 uint32_t*); 2495 2496 #ifdef __cplusplus 2497 }; /* End extern "C". */ 2498 #endif /* C++ */ 2499 2500 /* ID 10 (0x000a) */ 2501 typedef struct sDot11fTLVP2PManageability { 2502 uint8_t present; 2503 uint8_t manageability; 2504 } tDot11fTLVP2PManageability; 2505 2506 #define DOT11F_TLV_P2PMANAGEABILITY (10) 2507 2508 /* N.B. These #defines do *not* include the ID & length */ 2509 #define DOT11F_TLV_P2PMANAGEABILITY_MIN_LEN (2) 2510 2511 #define DOT11F_TLV_P2PMANAGEABILITY_MAX_LEN (2) 2512 2513 #ifdef __cplusplus 2514 extern "C" { 2515 #endif /* C++ */ 2516 uint32_t dot11f_unpack_tlv_P2PManageability( 2517 tpAniSirGlobal, 2518 uint8_t *, 2519 uint16_t, 2520 tDot11fTLVP2PManageability*); 2521 2522 uint32_t dot11f_pack_tlv_p2_p_manageability( 2523 tpAniSirGlobal, 2524 tDot11fTLVP2PManageability *, 2525 uint8_t *, 2526 uint32_t, 2527 uint32_t*); 2528 2529 uint32_t dot11f_get_packed_tlv_P2PManageability( 2530 tpAniSirGlobal, 2531 tDot11fTLVP2PManageability *, 2532 uint32_t*); 2533 2534 #ifdef __cplusplus 2535 }; /* End extern "C". */ 2536 #endif /* C++ */ 2537 /********************************************************************* 2538 * Information Elements * 2539 ********************************************************************/ 2540 2541 2542 /* EID 2 (0x02) */ 2543 typedef struct sDot11fIEGTK { 2544 uint8_t present; 2545 uint16_t keyId:2; 2546 uint16_t reserved:14; 2547 uint8_t keyLength; 2548 uint8_t RSC[8]; 2549 uint8_t num_key; 2550 uint8_t key[32]; 2551 } tDot11fIEGTK; 2552 2553 #define DOT11F_EID_GTK (2) 2554 2555 /* N.B. These #defines do *not* include the EID & length */ 2556 #define DOT11F_IE_GTK_MIN_LEN (16) 2557 2558 #define DOT11F_IE_GTK_MAX_LEN (43) 2559 2560 #ifdef __cplusplus 2561 extern "C" { 2562 #endif /* C++ */ 2563 __must_check uint32_t dot11f_unpack_ie_gtk( 2564 tpAniSirGlobal, 2565 uint8_t *, 2566 uint8_t, 2567 tDot11fIEGTK*, 2568 bool); 2569 2570 uint32_t dot11f_pack_ie_gtk( 2571 tpAniSirGlobal, 2572 tDot11fIEGTK *, 2573 uint8_t *, 2574 uint32_t, 2575 uint32_t*); 2576 2577 uint32_t dot11f_get_packed_ie_GTK( 2578 tpAniSirGlobal, 2579 tDot11fIEGTK *, 2580 uint32_t*); 2581 2582 #ifdef __cplusplus 2583 }; /* End extern "C". */ 2584 #endif /* C++ */ 2585 2586 /* EID 4 (0x04) */ 2587 typedef struct sDot11fIEIGTK { 2588 uint8_t present; 2589 uint8_t keyID[2]; 2590 uint8_t IPN[6]; 2591 uint8_t keyLength; 2592 uint8_t key[24]; 2593 } tDot11fIEIGTK; 2594 2595 #define DOT11F_EID_IGTK (4) 2596 2597 /* N.B. These #defines do *not* include the EID & length */ 2598 #define DOT11F_IE_IGTK_MIN_LEN (33) 2599 2600 #define DOT11F_IE_IGTK_MAX_LEN (33) 2601 2602 #ifdef __cplusplus 2603 extern "C" { 2604 #endif /* C++ */ 2605 __must_check uint32_t dot11f_unpack_ie_igtk( 2606 tpAniSirGlobal, 2607 uint8_t *, 2608 uint8_t, 2609 tDot11fIEIGTK*, 2610 bool); 2611 2612 uint32_t dot11f_pack_ie_igtk( 2613 tpAniSirGlobal, 2614 tDot11fIEIGTK *, 2615 uint8_t *, 2616 uint32_t, 2617 uint32_t*); 2618 2619 uint32_t dot11f_get_packed_ie_IGTK( 2620 tpAniSirGlobal, 2621 tDot11fIEIGTK *, 2622 uint32_t*); 2623 2624 #ifdef __cplusplus 2625 }; /* End extern "C". */ 2626 #endif /* C++ */ 2627 2628 /* EID 3 (0x03) */ 2629 typedef struct sDot11fIER0KH_ID { 2630 uint8_t present; 2631 uint8_t num_PMK_R0_ID; 2632 uint8_t PMK_R0_ID[48]; 2633 } tDot11fIER0KH_ID; 2634 2635 #define DOT11F_EID_R0KH_ID (3) 2636 2637 /* N.B. These #defines do *not* include the EID & length */ 2638 #define DOT11F_IE_R0KH_ID_MIN_LEN (1) 2639 2640 #define DOT11F_IE_R0KH_ID_MAX_LEN (48) 2641 2642 #ifdef __cplusplus 2643 extern "C" { 2644 #endif /* C++ */ 2645 __must_check uint32_t dot11f_unpack_ie_r0_kh_id( 2646 tpAniSirGlobal, 2647 uint8_t *, 2648 uint8_t, 2649 tDot11fIER0KH_ID*, 2650 bool); 2651 2652 uint32_t dot11f_pack_ie_r0_kh_id( 2653 tpAniSirGlobal, 2654 tDot11fIER0KH_ID *, 2655 uint8_t *, 2656 uint32_t, 2657 uint32_t*); 2658 2659 uint32_t dot11f_get_packed_ie_R0KH_ID( 2660 tpAniSirGlobal, 2661 tDot11fIER0KH_ID *, 2662 uint32_t*); 2663 2664 #ifdef __cplusplus 2665 }; /* End extern "C". */ 2666 #endif /* C++ */ 2667 2668 /* EID 1 (0x01) */ 2669 typedef struct sDot11fIER1KH_ID { 2670 uint8_t present; 2671 uint8_t PMK_R1_ID[6]; 2672 } tDot11fIER1KH_ID; 2673 2674 #define DOT11F_EID_R1KH_ID (1) 2675 2676 /* N.B. These #defines do *not* include the EID & length */ 2677 #define DOT11F_IE_R1KH_ID_MIN_LEN (6) 2678 2679 #define DOT11F_IE_R1KH_ID_MAX_LEN (6) 2680 2681 #ifdef __cplusplus 2682 extern "C" { 2683 #endif /* C++ */ 2684 __must_check uint32_t dot11f_unpack_ie_r1_kh_id( 2685 tpAniSirGlobal, 2686 uint8_t *, 2687 uint8_t, 2688 tDot11fIER1KH_ID*, 2689 bool); 2690 2691 uint32_t dot11f_pack_ie_r1_kh_id( 2692 tpAniSirGlobal, 2693 tDot11fIER1KH_ID *, 2694 uint8_t *, 2695 uint32_t, 2696 uint32_t*); 2697 2698 uint32_t dot11f_get_packed_ie_R1KH_ID( 2699 tpAniSirGlobal, 2700 tDot11fIER1KH_ID *, 2701 uint32_t*); 2702 2703 #ifdef __cplusplus 2704 }; /* End extern "C". */ 2705 #endif /* C++ */ 2706 2707 /* EID 51 (0x33) */ 2708 typedef struct sDot11fIEAPChannelReport { 2709 uint8_t present; 2710 uint8_t regulatoryClass; 2711 uint8_t num_channelList; 2712 uint8_t channelList[50]; 2713 } tDot11fIEAPChannelReport; 2714 2715 #define DOT11F_EID_APCHANNELREPORT (51) 2716 2717 /* N.B. These #defines do *not* include the EID & length */ 2718 #define DOT11F_IE_APCHANNELREPORT_MIN_LEN (1) 2719 2720 #define DOT11F_IE_APCHANNELREPORT_MAX_LEN (51) 2721 2722 #ifdef __cplusplus 2723 extern "C" { 2724 #endif /* C++ */ 2725 __must_check uint32_t dot11f_unpack_ie_ap_channel_report( 2726 tpAniSirGlobal, 2727 uint8_t *, 2728 uint8_t, 2729 tDot11fIEAPChannelReport*, 2730 bool); 2731 2732 uint32_t dot11f_pack_ie_ap_channel_report( 2733 tpAniSirGlobal, 2734 tDot11fIEAPChannelReport *, 2735 uint8_t *, 2736 uint32_t, 2737 uint32_t*); 2738 2739 uint32_t dot11f_get_packed_ie_APChannelReport( 2740 tpAniSirGlobal, 2741 tDot11fIEAPChannelReport *, 2742 uint32_t*); 2743 2744 #ifdef __cplusplus 2745 }; /* End extern "C". */ 2746 #endif /* C++ */ 2747 2748 /* EID 2 (0x02) */ 2749 typedef struct sDot11fIEBcnReportingDetail { 2750 uint8_t present; 2751 uint8_t reportingDetail; 2752 } tDot11fIEBcnReportingDetail; 2753 2754 #define DOT11F_EID_BCNREPORTINGDETAIL (2) 2755 2756 /* N.B. These #defines do *not* include the EID & length */ 2757 #define DOT11F_IE_BCNREPORTINGDETAIL_MIN_LEN (1) 2758 2759 #define DOT11F_IE_BCNREPORTINGDETAIL_MAX_LEN (1) 2760 2761 #ifdef __cplusplus 2762 extern "C" { 2763 #endif /* C++ */ 2764 __must_check uint32_t dot11f_unpack_ie_bcn_reporting_detail( 2765 tpAniSirGlobal, 2766 uint8_t *, 2767 uint8_t, 2768 tDot11fIEBcnReportingDetail*, 2769 bool); 2770 2771 uint32_t dot11f_pack_ie_bcn_reporting_detail( 2772 tpAniSirGlobal, 2773 tDot11fIEBcnReportingDetail *, 2774 uint8_t *, 2775 uint32_t, 2776 uint32_t*); 2777 2778 uint32_t dot11f_get_packed_ie_BcnReportingDetail( 2779 tpAniSirGlobal, 2780 tDot11fIEBcnReportingDetail *, 2781 uint32_t*); 2782 2783 #ifdef __cplusplus 2784 }; /* End extern "C". */ 2785 #endif /* C++ */ 2786 2787 /* EID 1 (0x01) */ 2788 typedef struct sDot11fIEBeaconReportFrmBody { 2789 uint8_t present; 2790 uint8_t num_reportedFields; 2791 uint8_t reportedFields[224]; 2792 } tDot11fIEBeaconReportFrmBody; 2793 2794 #define DOT11F_EID_BEACONREPORTFRMBODY (1) 2795 2796 /* N.B. These #defines do *not* include the EID & length */ 2797 #define DOT11F_IE_BEACONREPORTFRMBODY_MIN_LEN (0) 2798 2799 #define DOT11F_IE_BEACONREPORTFRMBODY_MAX_LEN (224) 2800 2801 #ifdef __cplusplus 2802 extern "C" { 2803 #endif /* C++ */ 2804 __must_check uint32_t dot11f_unpack_ie_beacon_report_frm_body( 2805 tpAniSirGlobal, 2806 uint8_t *, 2807 uint8_t, 2808 tDot11fIEBeaconReportFrmBody*, 2809 bool); 2810 2811 uint32_t dot11f_pack_ie_beacon_report_frm_body( 2812 tpAniSirGlobal, 2813 tDot11fIEBeaconReportFrmBody *, 2814 uint8_t *, 2815 uint32_t, 2816 uint32_t*); 2817 2818 uint32_t dot11f_get_packed_ie_BeaconReportFrmBody( 2819 tpAniSirGlobal, 2820 tDot11fIEBeaconReportFrmBody *, 2821 uint32_t*); 2822 2823 #ifdef __cplusplus 2824 }; /* End extern "C". */ 2825 #endif /* C++ */ 2826 2827 /* EID 1 (0x01) */ 2828 typedef struct sDot11fIEBeaconReporting { 2829 uint8_t present; 2830 uint8_t reportingCondition; 2831 uint8_t threshold; 2832 } tDot11fIEBeaconReporting; 2833 2834 #define DOT11F_EID_BEACONREPORTING (1) 2835 2836 /* N.B. These #defines do *not* include the EID & length */ 2837 #define DOT11F_IE_BEACONREPORTING_MIN_LEN (2) 2838 2839 #define DOT11F_IE_BEACONREPORTING_MAX_LEN (2) 2840 2841 #ifdef __cplusplus 2842 extern "C" { 2843 #endif /* C++ */ 2844 __must_check uint32_t dot11f_unpack_ie_beacon_reporting( 2845 tpAniSirGlobal, 2846 uint8_t *, 2847 uint8_t, 2848 tDot11fIEBeaconReporting*, 2849 bool); 2850 2851 uint32_t dot11f_pack_ie_beacon_reporting( 2852 tpAniSirGlobal, 2853 tDot11fIEBeaconReporting *, 2854 uint8_t *, 2855 uint32_t, 2856 uint32_t*); 2857 2858 uint32_t dot11f_get_packed_ie_BeaconReporting( 2859 tpAniSirGlobal, 2860 tDot11fIEBeaconReporting *, 2861 uint32_t*); 2862 2863 #ifdef __cplusplus 2864 }; /* End extern "C". */ 2865 #endif /* C++ */ 2866 2867 /* EID 2 (0x02) */ 2868 typedef struct sDot11fIECondensedCountryStr { 2869 uint8_t present; 2870 uint8_t countryStr[2]; 2871 } tDot11fIECondensedCountryStr; 2872 2873 #define DOT11F_EID_CONDENSEDCOUNTRYSTR (2) 2874 2875 /* N.B. These #defines do *not* include the EID & length */ 2876 #define DOT11F_IE_CONDENSEDCOUNTRYSTR_MIN_LEN (2) 2877 2878 #define DOT11F_IE_CONDENSEDCOUNTRYSTR_MAX_LEN (2) 2879 2880 #ifdef __cplusplus 2881 extern "C" { 2882 #endif /* C++ */ 2883 __must_check uint32_t dot11f_unpack_ie_condensed_country_str( 2884 tpAniSirGlobal, 2885 uint8_t *, 2886 uint8_t, 2887 tDot11fIECondensedCountryStr*, 2888 bool); 2889 2890 uint32_t dot11f_pack_ie_condensed_country_str( 2891 tpAniSirGlobal, 2892 tDot11fIECondensedCountryStr *, 2893 uint8_t *, 2894 uint32_t, 2895 uint32_t*); 2896 2897 uint32_t dot11f_get_packed_ie_CondensedCountryStr( 2898 tpAniSirGlobal, 2899 tDot11fIECondensedCountryStr *, 2900 uint32_t*); 2901 2902 #ifdef __cplusplus 2903 }; /* End extern "C". */ 2904 #endif /* C++ */ 2905 2906 /* EID 66 (0x42) */ 2907 typedef struct sDot11fIEMeasurementPilot { 2908 uint8_t present; 2909 uint8_t measurementPilot; 2910 uint8_t num_vendorSpecific; 2911 uint8_t vendorSpecific[255]; 2912 } tDot11fIEMeasurementPilot; 2913 2914 #define DOT11F_EID_MEASUREMENTPILOT (66) 2915 2916 /* N.B. These #defines do *not* include the EID & length */ 2917 #define DOT11F_IE_MEASUREMENTPILOT_MIN_LEN (1) 2918 2919 #define DOT11F_IE_MEASUREMENTPILOT_MAX_LEN (256) 2920 2921 #ifdef __cplusplus 2922 extern "C" { 2923 #endif /* C++ */ 2924 __must_check uint32_t dot11f_unpack_ie_measurement_pilot( 2925 tpAniSirGlobal, 2926 uint8_t *, 2927 uint8_t, 2928 tDot11fIEMeasurementPilot*, 2929 bool); 2930 2931 uint32_t dot11f_pack_ie_measurement_pilot( 2932 tpAniSirGlobal, 2933 tDot11fIEMeasurementPilot *, 2934 uint8_t *, 2935 uint32_t, 2936 uint32_t*); 2937 2938 uint32_t dot11f_get_packed_ie_MeasurementPilot( 2939 tpAniSirGlobal, 2940 tDot11fIEMeasurementPilot *, 2941 uint32_t*); 2942 2943 #ifdef __cplusplus 2944 }; /* End extern "C". */ 2945 #endif /* C++ */ 2946 2947 /* EID 71 (0x47) */ 2948 typedef struct sDot11fIEMultiBssid { 2949 uint8_t present; 2950 uint8_t maxBSSIDIndicator; 2951 uint8_t num_vendorSpecific; 2952 uint8_t vendorSpecific[255]; 2953 } tDot11fIEMultiBssid; 2954 2955 #define DOT11F_EID_MULTIBSSID (71) 2956 2957 /* N.B. These #defines do *not* include the EID & length */ 2958 #define DOT11F_IE_MULTIBSSID_MIN_LEN (1) 2959 2960 #define DOT11F_IE_MULTIBSSID_MAX_LEN (256) 2961 2962 #ifdef __cplusplus 2963 extern "C" { 2964 #endif /* C++ */ 2965 __must_check uint32_t dot11f_unpack_ie_multi_bssid( 2966 tpAniSirGlobal, 2967 uint8_t *, 2968 uint8_t, 2969 tDot11fIEMultiBssid*, 2970 bool); 2971 2972 uint32_t dot11f_pack_ie_multi_bssid( 2973 tpAniSirGlobal, 2974 tDot11fIEMultiBssid *, 2975 uint8_t *, 2976 uint32_t, 2977 uint32_t*); 2978 2979 uint32_t dot11f_get_packed_ie_MultiBssid( 2980 tpAniSirGlobal, 2981 tDot11fIEMultiBssid *, 2982 uint32_t*); 2983 2984 #ifdef __cplusplus 2985 }; /* End extern "C". */ 2986 #endif /* C++ */ 2987 2988 /* EID 57 (0x39) */ 2989 typedef struct sDot11fIERICData { 2990 uint8_t present; 2991 uint8_t Identifier; 2992 uint8_t resourceDescCount; 2993 uint16_t statusCode; 2994 } tDot11fIERICData; 2995 2996 #define DOT11F_EID_RICDATA (57) 2997 2998 /* N.B. These #defines do *not* include the EID & length */ 2999 #define DOT11F_IE_RICDATA_MIN_LEN (4) 3000 3001 #define DOT11F_IE_RICDATA_MAX_LEN (4) 3002 3003 #ifdef __cplusplus 3004 extern "C" { 3005 #endif /* C++ */ 3006 __must_check uint32_t dot11f_unpack_ie_ric_data( 3007 tpAniSirGlobal, 3008 uint8_t *, 3009 uint8_t, 3010 tDot11fIERICData*, 3011 bool); 3012 3013 uint32_t dot11f_pack_ie_ric_data( 3014 tpAniSirGlobal, 3015 tDot11fIERICData *, 3016 uint8_t *, 3017 uint32_t, 3018 uint32_t*); 3019 3020 uint32_t dot11f_get_packed_ie_RICData( 3021 tpAniSirGlobal, 3022 tDot11fIERICData *, 3023 uint32_t*); 3024 3025 #ifdef __cplusplus 3026 }; /* End extern "C". */ 3027 #endif /* C++ */ 3028 3029 /* EID 75 (0x4b) */ 3030 typedef struct sDot11fIERICDescriptor { 3031 uint8_t present; 3032 uint8_t resourceType; 3033 uint8_t num_variableData; 3034 uint8_t variableData[255]; 3035 } tDot11fIERICDescriptor; 3036 3037 #define DOT11F_EID_RICDESCRIPTOR (75) 3038 3039 /* N.B. These #defines do *not* include the EID & length */ 3040 #define DOT11F_IE_RICDESCRIPTOR_MIN_LEN (1) 3041 3042 #define DOT11F_IE_RICDESCRIPTOR_MAX_LEN (256) 3043 3044 #ifdef __cplusplus 3045 extern "C" { 3046 #endif /* C++ */ 3047 __must_check uint32_t dot11f_unpack_ie_ric_descriptor( 3048 tpAniSirGlobal, 3049 uint8_t *, 3050 uint8_t, 3051 tDot11fIERICDescriptor*, 3052 bool); 3053 3054 uint32_t dot11f_pack_ie_ric_descriptor( 3055 tpAniSirGlobal, 3056 tDot11fIERICDescriptor *, 3057 uint8_t *, 3058 uint32_t, 3059 uint32_t*); 3060 3061 uint32_t dot11f_get_packed_ie_RICDescriptor( 3062 tpAniSirGlobal, 3063 tDot11fIERICDescriptor *, 3064 uint32_t*); 3065 3066 #ifdef __cplusplus 3067 }; /* End extern "C". */ 3068 #endif /* C++ */ 3069 3070 /* EID 70 (0x46) */ 3071 typedef struct sDot11fIERRMEnabledCap { 3072 uint8_t present; 3073 uint8_t LinkMeasurement:1; 3074 uint8_t NeighborRpt:1; 3075 uint8_t parallel:1; 3076 uint8_t repeated:1; 3077 uint8_t BeaconPassive:1; 3078 uint8_t BeaconActive:1; 3079 uint8_t BeaconTable:1; 3080 uint8_t BeaconRepCond:1; 3081 uint8_t FrameMeasurement:1; 3082 uint8_t ChannelLoad:1; 3083 uint8_t NoiseHistogram:1; 3084 uint8_t statistics:1; 3085 uint8_t LCIMeasurement:1; 3086 uint8_t LCIAzimuth:1; 3087 uint8_t TCMCapability:1; 3088 uint8_t triggeredTCM:1; 3089 uint8_t APChanReport:1; 3090 uint8_t RRMMIBEnabled:1; 3091 uint8_t operatingChanMax:3; 3092 uint8_t nonOperatinChanMax:3; 3093 uint8_t MeasurementPilot:3; 3094 uint8_t MeasurementPilotEnabled:1; 3095 uint8_t NeighborTSFOffset:1; 3096 uint8_t RCPIMeasurement:1; 3097 uint8_t RSNIMeasurement:1; 3098 uint8_t BssAvgAccessDelay:1; 3099 uint8_t BSSAvailAdmission:1; 3100 uint8_t AntennaInformation:1; 3101 uint8_t fine_time_meas_rpt:1; 3102 uint8_t lci_capability:1; 3103 uint8_t reserved:4; 3104 } tDot11fIERRMEnabledCap; 3105 3106 #define DOT11F_EID_RRMENABLEDCAP (70) 3107 3108 /* N.B. These #defines do *not* include the EID & length */ 3109 #define DOT11F_IE_RRMENABLEDCAP_MIN_LEN (5) 3110 3111 #define DOT11F_IE_RRMENABLEDCAP_MAX_LEN (5) 3112 3113 #ifdef __cplusplus 3114 extern "C" { 3115 #endif /* C++ */ 3116 __must_check uint32_t dot11f_unpack_ie_rrm_enabled_cap( 3117 tpAniSirGlobal, 3118 uint8_t *, 3119 uint8_t, 3120 tDot11fIERRMEnabledCap*, 3121 bool); 3122 3123 uint32_t dot11f_pack_ie_rrm_enabled_cap( 3124 tpAniSirGlobal, 3125 tDot11fIERRMEnabledCap *, 3126 uint8_t *, 3127 uint32_t, 3128 uint32_t*); 3129 3130 uint32_t dot11f_get_packed_ie_RRMEnabledCap( 3131 tpAniSirGlobal, 3132 tDot11fIERRMEnabledCap *, 3133 uint32_t*); 3134 3135 #ifdef __cplusplus 3136 }; /* End extern "C". */ 3137 #endif /* C++ */ 3138 3139 /* EID 10 (0x0a) */ 3140 typedef struct sDot11fIERequestedInfo { 3141 uint8_t present; 3142 uint8_t num_requested_eids; 3143 uint8_t requested_eids[255]; 3144 } tDot11fIERequestedInfo; 3145 3146 #define DOT11F_EID_REQUESTEDINFO (10) 3147 3148 /* N.B. These #defines do *not* include the EID & length */ 3149 #define DOT11F_IE_REQUESTEDINFO_MIN_LEN (0) 3150 3151 #define DOT11F_IE_REQUESTEDINFO_MAX_LEN (255) 3152 3153 #ifdef __cplusplus 3154 extern "C" { 3155 #endif /* C++ */ 3156 __must_check uint32_t dot11f_unpack_ie_requested_info( 3157 tpAniSirGlobal, 3158 uint8_t *, 3159 uint8_t, 3160 tDot11fIERequestedInfo*, 3161 bool); 3162 3163 uint32_t dot11f_pack_ie_requested_info( 3164 tpAniSirGlobal, 3165 tDot11fIERequestedInfo *, 3166 uint8_t *, 3167 uint32_t, 3168 uint32_t*); 3169 3170 uint32_t dot11f_get_packed_ie_RequestedInfo( 3171 tpAniSirGlobal, 3172 tDot11fIERequestedInfo *, 3173 uint32_t*); 3174 3175 #ifdef __cplusplus 3176 }; /* End extern "C". */ 3177 #endif /* C++ */ 3178 3179 /* EID 0 (0x00) */ 3180 typedef struct sDot11fIESSID { 3181 uint8_t present; 3182 uint8_t num_ssid; 3183 uint8_t ssid[32]; 3184 } tDot11fIESSID; 3185 3186 #define DOT11F_EID_SSID (0) 3187 3188 /* N.B. These #defines do *not* include the EID & length */ 3189 #define DOT11F_IE_SSID_MIN_LEN (0) 3190 3191 #define DOT11F_IE_SSID_MAX_LEN (32) 3192 3193 #ifdef __cplusplus 3194 extern "C" { 3195 #endif /* C++ */ 3196 __must_check uint32_t dot11f_unpack_ie_ssid( 3197 tpAniSirGlobal, 3198 uint8_t *, 3199 uint8_t, 3200 tDot11fIESSID*, 3201 bool); 3202 3203 uint32_t dot11f_pack_ie_ssid( 3204 tpAniSirGlobal, 3205 tDot11fIESSID *, 3206 uint8_t *, 3207 uint32_t, 3208 uint32_t*); 3209 3210 uint32_t dot11f_get_packed_ie_SSID( 3211 tpAniSirGlobal, 3212 tDot11fIESSID *, 3213 uint32_t*); 3214 3215 #ifdef __cplusplus 3216 }; /* End extern "C". */ 3217 #endif /* C++ */ 3218 3219 /* EID 15 (0x0f) */ 3220 typedef struct sDot11fIESchedule { 3221 uint8_t present; 3222 uint16_t aggregation:1; 3223 uint16_t tsid:4; 3224 uint16_t direction:2; 3225 uint16_t reserved:9; 3226 uint32_t service_start_time; 3227 uint32_t service_interval; 3228 uint16_t max_service_dur; 3229 uint16_t spec_interval; 3230 } tDot11fIESchedule; 3231 3232 #define DOT11F_EID_SCHEDULE (15) 3233 3234 /* N.B. These #defines do *not* include the EID & length */ 3235 #define DOT11F_IE_SCHEDULE_MIN_LEN (14) 3236 3237 #define DOT11F_IE_SCHEDULE_MAX_LEN (14) 3238 3239 #ifdef __cplusplus 3240 extern "C" { 3241 #endif /* C++ */ 3242 __must_check uint32_t dot11f_unpack_ie_schedule( 3243 tpAniSirGlobal, 3244 uint8_t *, 3245 uint8_t, 3246 tDot11fIESchedule*, 3247 bool); 3248 3249 uint32_t dot11f_pack_ie_schedule( 3250 tpAniSirGlobal, 3251 tDot11fIESchedule *, 3252 uint8_t *, 3253 uint32_t, 3254 uint32_t*); 3255 3256 uint32_t dot11f_get_packed_ie_Schedule( 3257 tpAniSirGlobal, 3258 tDot11fIESchedule *, 3259 uint32_t*); 3260 3261 #ifdef __cplusplus 3262 }; /* End extern "C". */ 3263 #endif /* C++ */ 3264 3265 /* EID 14 (0x0e) */ 3266 typedef struct sDot11fIETCLAS { 3267 uint8_t present; 3268 uint8_t user_priority; 3269 uint8_t classifier_type; 3270 uint8_t classifier_mask; 3271 union { 3272 struct { 3273 uint8_t source[6]; 3274 uint8_t dest[6]; 3275 uint16_t type; 3276 } EthParams; /* classifier_type = 0 */ 3277 struct { 3278 uint8_t version; 3279 union { 3280 struct { 3281 uint8_t source[4]; 3282 uint8_t dest[4]; 3283 uint16_t src_port; 3284 uint16_t dest_port; 3285 uint8_t DSCP; 3286 uint8_t proto; 3287 uint8_t reserved; 3288 } IpV4Params; /* version = 4 */ 3289 struct { 3290 uint8_t source[16]; 3291 uint8_t dest[16]; 3292 uint16_t src_port; 3293 uint16_t dest_port; 3294 uint8_t flow_label[3]; 3295 } IpV6Params; /* version = 6 */ 3296 } params; 3297 } IpParams; /* classifier_type = 1 */ 3298 struct { 3299 uint16_t tag_type; 3300 } Params8021dq; /* classifier_type = 2 */ 3301 } info; 3302 } tDot11fIETCLAS; 3303 3304 #define DOT11F_EID_TCLAS (14) 3305 3306 /* N.B. These #defines do *not* include the EID & length */ 3307 #define DOT11F_IE_TCLAS_MIN_LEN (5) 3308 3309 #define DOT11F_IE_TCLAS_MAX_LEN (43) 3310 3311 #ifdef __cplusplus 3312 extern "C" { 3313 #endif /* C++ */ 3314 __must_check uint32_t dot11f_unpack_ie_tclas( 3315 tpAniSirGlobal, 3316 uint8_t *, 3317 uint8_t, 3318 tDot11fIETCLAS*, 3319 bool); 3320 3321 uint32_t dot11f_pack_ie_tclas( 3322 tpAniSirGlobal, 3323 tDot11fIETCLAS *, 3324 uint8_t *, 3325 uint32_t, 3326 uint32_t*); 3327 3328 uint32_t dot11f_get_packed_ietclas( 3329 tpAniSirGlobal, 3330 tDot11fIETCLAS *, 3331 uint32_t*); 3332 3333 #ifdef __cplusplus 3334 }; /* End extern "C". */ 3335 #endif /* C++ */ 3336 3337 /* EID 44 (0x2c) */ 3338 typedef struct sDot11fIETCLASSPROC { 3339 uint8_t present; 3340 uint8_t processing; 3341 } tDot11fIETCLASSPROC; 3342 3343 #define DOT11F_EID_TCLASSPROC (44) 3344 3345 /* N.B. These #defines do *not* include the EID & length */ 3346 #define DOT11F_IE_TCLASSPROC_MIN_LEN (1) 3347 3348 #define DOT11F_IE_TCLASSPROC_MAX_LEN (1) 3349 3350 #ifdef __cplusplus 3351 extern "C" { 3352 #endif /* C++ */ 3353 __must_check uint32_t dot11f_unpack_ie_tclasSPROC( 3354 tpAniSirGlobal, 3355 uint8_t *, 3356 uint8_t, 3357 tDot11fIETCLASSPROC*, 3358 bool); 3359 3360 uint32_t dot11f_pack_ie_tclassproc( 3361 tpAniSirGlobal, 3362 tDot11fIETCLASSPROC *, 3363 uint8_t *, 3364 uint32_t, 3365 uint32_t*); 3366 3367 uint32_t dot11f_get_packed_ietclasSPROC( 3368 tpAniSirGlobal, 3369 tDot11fIETCLASSPROC *, 3370 uint32_t*); 3371 3372 #ifdef __cplusplus 3373 }; /* End extern "C". */ 3374 #endif /* C++ */ 3375 3376 /* EID 43 (0x2b) */ 3377 typedef struct sDot11fIETSDelay { 3378 uint8_t present; 3379 uint32_t delay; 3380 } tDot11fIETSDelay; 3381 3382 #define DOT11F_EID_TSDELAY (43) 3383 3384 /* N.B. These #defines do *not* include the EID & length */ 3385 #define DOT11F_IE_TSDELAY_MIN_LEN (4) 3386 3387 #define DOT11F_IE_TSDELAY_MAX_LEN (4) 3388 3389 #ifdef __cplusplus 3390 extern "C" { 3391 #endif /* C++ */ 3392 __must_check uint32_t dot11f_unpack_ie_ts_delay( 3393 tpAniSirGlobal, 3394 uint8_t *, 3395 uint8_t, 3396 tDot11fIETSDelay*, 3397 bool); 3398 3399 uint32_t dot11f_pack_ie_ts_delay( 3400 tpAniSirGlobal, 3401 tDot11fIETSDelay *, 3402 uint8_t *, 3403 uint32_t, 3404 uint32_t*); 3405 3406 uint32_t dot11f_get_packed_ie_TSDelay( 3407 tpAniSirGlobal, 3408 tDot11fIETSDelay *, 3409 uint32_t*); 3410 3411 #ifdef __cplusplus 3412 }; /* End extern "C". */ 3413 #endif /* C++ */ 3414 3415 /* EID 1 (0x01) */ 3416 typedef struct sDot11fIETSFInfo { 3417 uint8_t present; 3418 uint16_t TsfOffset; 3419 uint16_t BeaconIntvl; 3420 } tDot11fIETSFInfo; 3421 3422 #define DOT11F_EID_TSFINFO (1) 3423 3424 /* N.B. These #defines do *not* include the EID & length */ 3425 #define DOT11F_IE_TSFINFO_MIN_LEN (4) 3426 3427 #define DOT11F_IE_TSFINFO_MAX_LEN (4) 3428 3429 #ifdef __cplusplus 3430 extern "C" { 3431 #endif /* C++ */ 3432 __must_check uint32_t dot11f_unpack_ie_tsf_info( 3433 tpAniSirGlobal, 3434 uint8_t *, 3435 uint8_t, 3436 tDot11fIETSFInfo*, 3437 bool); 3438 3439 uint32_t dot11f_pack_ie_tsf_info( 3440 tpAniSirGlobal, 3441 tDot11fIETSFInfo *, 3442 uint8_t *, 3443 uint32_t, 3444 uint32_t*); 3445 3446 uint32_t dot11f_get_packed_ie_TSFInfo( 3447 tpAniSirGlobal, 3448 tDot11fIETSFInfo *, 3449 uint32_t*); 3450 3451 #ifdef __cplusplus 3452 }; /* End extern "C". */ 3453 #endif /* C++ */ 3454 3455 /* EID 13 (0x0d) */ 3456 typedef struct sDot11fIETSPEC { 3457 uint8_t present; 3458 uint16_t traffic_type:1; 3459 uint16_t tsid:4; 3460 uint16_t direction:2; 3461 uint16_t access_policy:2; 3462 uint16_t aggregation:1; 3463 uint16_t psb:1; 3464 uint16_t user_priority:3; 3465 uint16_t tsinfo_ack_pol:2; 3466 uint8_t schedule:1; 3467 uint8_t unused:7; 3468 uint16_t size:15; 3469 uint16_t fixed:1; 3470 uint16_t max_msdu_size; 3471 uint32_t min_service_int; 3472 uint32_t max_service_int; 3473 uint32_t inactivity_int; 3474 uint32_t suspension_int; 3475 uint32_t service_start_time; 3476 uint32_t min_data_rate; 3477 uint32_t mean_data_rate; 3478 uint32_t peak_data_rate; 3479 uint32_t burst_size; 3480 uint32_t delay_bound; 3481 uint32_t min_phy_rate; 3482 uint16_t surplus_bw_allowance; 3483 uint16_t medium_time; 3484 } tDot11fIETSPEC; 3485 3486 #define DOT11F_EID_TSPEC (13) 3487 3488 /* N.B. These #defines do *not* include the EID & length */ 3489 #define DOT11F_IE_TSPEC_MIN_LEN (55) 3490 3491 #define DOT11F_IE_TSPEC_MAX_LEN (55) 3492 3493 #ifdef __cplusplus 3494 extern "C" { 3495 #endif /* C++ */ 3496 __must_check uint32_t dot11f_unpack_ie_tspec( 3497 tpAniSirGlobal, 3498 uint8_t *, 3499 uint8_t, 3500 tDot11fIETSPEC*, 3501 bool); 3502 3503 uint32_t dot11f_pack_ie_tspec( 3504 tpAniSirGlobal, 3505 tDot11fIETSPEC *, 3506 uint8_t *, 3507 uint32_t, 3508 uint32_t*); 3509 3510 uint32_t dot11f_get_packed_ie_TSPEC( 3511 tpAniSirGlobal, 3512 tDot11fIETSPEC *, 3513 uint32_t*); 3514 3515 #ifdef __cplusplus 3516 }; /* End extern "C". */ 3517 #endif /* C++ */ 3518 3519 /* EID 191 (0xbf) */ 3520 typedef struct sDot11fIEVHTCaps { 3521 uint8_t present; 3522 uint32_t maxMPDULen:2; 3523 uint32_t supportedChannelWidthSet:2; 3524 uint32_t ldpcCodingCap:1; 3525 uint32_t shortGI80MHz:1; 3526 uint32_t shortGI160and80plus80MHz:1; 3527 uint32_t txSTBC:1; 3528 uint32_t rxSTBC:3; 3529 uint32_t suBeamFormerCap:1; 3530 uint32_t suBeamformeeCap:1; 3531 uint32_t csnofBeamformerAntSup:3; 3532 uint32_t numSoundingDim:3; 3533 uint32_t muBeamformerCap:1; 3534 uint32_t muBeamformeeCap:1; 3535 uint32_t vhtTXOPPS:1; 3536 uint32_t htcVHTCap:1; 3537 uint32_t maxAMPDULenExp:3; 3538 uint32_t vhtLinkAdaptCap:2; 3539 uint32_t rxAntPattern:1; 3540 uint32_t txAntPattern:1; 3541 uint32_t reserved1:2; 3542 uint16_t rxMCSMap; 3543 uint16_t rxHighSupDataRate:13; 3544 uint16_t reserved2:3; 3545 uint16_t txMCSMap; 3546 uint16_t txSupDataRate:13; 3547 uint16_t reserved3:3; 3548 } tDot11fIEVHTCaps; 3549 3550 #define DOT11F_EID_VHTCAPS (191) 3551 3552 /* N.B. These #defines do *not* include the EID & length */ 3553 #define DOT11F_IE_VHTCAPS_MIN_LEN (12) 3554 3555 #define DOT11F_IE_VHTCAPS_MAX_LEN (12) 3556 3557 #ifdef __cplusplus 3558 extern "C" { 3559 #endif /* C++ */ 3560 __must_check uint32_t dot11f_unpack_ie_vht_caps( 3561 tpAniSirGlobal, 3562 uint8_t *, 3563 uint8_t, 3564 tDot11fIEVHTCaps*, 3565 bool); 3566 3567 uint32_t dot11f_pack_ie_vht_caps( 3568 tpAniSirGlobal, 3569 tDot11fIEVHTCaps *, 3570 uint8_t *, 3571 uint32_t, 3572 uint32_t*); 3573 3574 uint32_t dot11f_get_packed_ie_VHTCaps( 3575 tpAniSirGlobal, 3576 tDot11fIEVHTCaps *, 3577 uint32_t*); 3578 3579 #ifdef __cplusplus 3580 }; /* End extern "C". */ 3581 #endif /* C++ */ 3582 3583 /* EID 192 (0xc0) */ 3584 typedef struct sDot11fIEVHTOperation { 3585 uint8_t present; 3586 uint8_t chanWidth; 3587 uint8_t chanCenterFreqSeg1; 3588 uint8_t chanCenterFreqSeg2; 3589 uint16_t basicMCSSet; 3590 } tDot11fIEVHTOperation; 3591 3592 #define DOT11F_EID_VHTOPERATION (192) 3593 3594 /* N.B. These #defines do *not* include the EID & length */ 3595 #define DOT11F_IE_VHTOPERATION_MIN_LEN (5) 3596 3597 #define DOT11F_IE_VHTOPERATION_MAX_LEN (5) 3598 3599 #ifdef __cplusplus 3600 extern "C" { 3601 #endif /* C++ */ 3602 __must_check uint32_t dot11f_unpack_ie_vht_operation( 3603 tpAniSirGlobal, 3604 uint8_t *, 3605 uint8_t, 3606 tDot11fIEVHTOperation*, 3607 bool); 3608 3609 uint32_t dot11f_pack_ie_vht_operation( 3610 tpAniSirGlobal, 3611 tDot11fIEVHTOperation *, 3612 uint8_t *, 3613 uint32_t, 3614 uint32_t*); 3615 3616 uint32_t dot11f_get_packed_ie_VHTOperation( 3617 tpAniSirGlobal, 3618 tDot11fIEVHTOperation *, 3619 uint32_t*); 3620 3621 #ifdef __cplusplus 3622 }; /* End extern "C". */ 3623 #endif /* C++ */ 3624 3625 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x09} */ 3626 typedef struct sDot11fIEWMMSchedule { 3627 uint8_t present; 3628 uint8_t version /* Must be 1! */; 3629 uint16_t aggregation:1; 3630 uint16_t tsid:4; 3631 uint16_t direction:2; 3632 uint16_t reserved:9; 3633 uint32_t service_start_time; 3634 uint32_t service_interval; 3635 uint16_t max_service_dur; 3636 uint16_t spec_interval; 3637 } tDot11fIEWMMSchedule; 3638 3639 #define DOT11F_EID_WMMSCHEDULE (221) 3640 3641 /* N.B. These #defines do *not* include the EID & length */ 3642 #define DOT11F_IE_WMMSCHEDULE_MIN_LEN (20) 3643 3644 #define DOT11F_IE_WMMSCHEDULE_MAX_LEN (20) 3645 3646 #ifdef __cplusplus 3647 extern "C" { 3648 #endif /* C++ */ 3649 __must_check uint32_t dot11f_unpack_ie_wmm_schedule( 3650 tpAniSirGlobal, 3651 uint8_t *, 3652 uint8_t, 3653 tDot11fIEWMMSchedule*, 3654 bool); 3655 3656 uint32_t dot11f_pack_ie_wmm_schedule( 3657 tpAniSirGlobal, 3658 tDot11fIEWMMSchedule *, 3659 uint8_t *, 3660 uint32_t, 3661 uint32_t*); 3662 3663 uint32_t dot11f_get_packed_ie_WMMSchedule( 3664 tpAniSirGlobal, 3665 tDot11fIEWMMSchedule *, 3666 uint32_t*); 3667 3668 #ifdef __cplusplus 3669 }; /* End extern "C". */ 3670 #endif /* C++ */ 3671 3672 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x06} */ 3673 typedef struct sDot11fIEWMMTCLAS { 3674 uint8_t present; 3675 uint8_t version /* Must be 1! */; 3676 uint8_t user_priority; 3677 uint8_t classifier_type; 3678 uint8_t classifier_mask; 3679 union { 3680 struct { 3681 uint8_t source[6]; 3682 uint8_t dest[6]; 3683 uint16_t type; 3684 } EthParams; /* classifier_type = 0 */ 3685 struct { 3686 uint8_t version; 3687 union { 3688 struct { 3689 uint8_t source[4]; 3690 uint8_t dest[4]; 3691 uint16_t src_port; 3692 uint16_t dest_port; 3693 uint8_t DSCP; 3694 uint8_t proto; 3695 uint8_t reserved; 3696 } IpV4Params; /* version = 4 */ 3697 struct { 3698 uint8_t source[16]; 3699 uint8_t dest[16]; 3700 uint16_t src_port; 3701 uint16_t dest_port; 3702 uint8_t flow_label[3]; 3703 } IpV6Params; /* version = 6 */ 3704 } params; 3705 } IpParams; /* classifier_type = 1 */ 3706 struct { 3707 uint16_t tag_type; 3708 } Params8021dq; /* classifier_type = 2 */ 3709 } info; 3710 } tDot11fIEWMMTCLAS; 3711 3712 #define DOT11F_EID_WMMTCLAS (221) 3713 3714 /* N.B. These #defines do *not* include the EID & length */ 3715 #define DOT11F_IE_WMMTCLAS_MIN_LEN (11) 3716 3717 #define DOT11F_IE_WMMTCLAS_MAX_LEN (49) 3718 3719 #ifdef __cplusplus 3720 extern "C" { 3721 #endif /* C++ */ 3722 __must_check uint32_t dot11f_unpack_ie_wmmtclas( 3723 tpAniSirGlobal, 3724 uint8_t *, 3725 uint8_t, 3726 tDot11fIEWMMTCLAS*, 3727 bool); 3728 3729 uint32_t dot11f_pack_ie_wmmtclas( 3730 tpAniSirGlobal, 3731 tDot11fIEWMMTCLAS *, 3732 uint8_t *, 3733 uint32_t, 3734 uint32_t*); 3735 3736 uint32_t dot11f_get_packed_iewmmtclas( 3737 tpAniSirGlobal, 3738 tDot11fIEWMMTCLAS *, 3739 uint32_t*); 3740 3741 #ifdef __cplusplus 3742 }; /* End extern "C". */ 3743 #endif /* C++ */ 3744 3745 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x07} */ 3746 typedef struct sDot11fIEWMMTCLASPROC { 3747 uint8_t present; 3748 uint8_t version /* Must be 1! */; 3749 uint8_t processing; 3750 } tDot11fIEWMMTCLASPROC; 3751 3752 #define DOT11F_EID_WMMTCLASPROC (221) 3753 3754 /* N.B. These #defines do *not* include the EID & length */ 3755 #define DOT11F_IE_WMMTCLASPROC_MIN_LEN (7) 3756 3757 #define DOT11F_IE_WMMTCLASPROC_MAX_LEN (7) 3758 3759 #ifdef __cplusplus 3760 extern "C" { 3761 #endif /* C++ */ 3762 __must_check uint32_t dot11f_unpack_ie_wmmtclasproc( 3763 tpAniSirGlobal, 3764 uint8_t *, 3765 uint8_t, 3766 tDot11fIEWMMTCLASPROC*, 3767 bool); 3768 3769 uint32_t dot11f_pack_ie_wmmtclasproc( 3770 tpAniSirGlobal, 3771 tDot11fIEWMMTCLASPROC *, 3772 uint8_t *, 3773 uint32_t, 3774 uint32_t*); 3775 3776 uint32_t dot11f_get_packed_iewmmtclasPROC( 3777 tpAniSirGlobal, 3778 tDot11fIEWMMTCLASPROC *, 3779 uint32_t*); 3780 3781 #ifdef __cplusplus 3782 }; /* End extern "C". */ 3783 #endif /* C++ */ 3784 3785 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x08} */ 3786 typedef struct sDot11fIEWMMTSDelay { 3787 uint8_t present; 3788 uint8_t version /* Must be 1! */; 3789 uint32_t delay; 3790 } tDot11fIEWMMTSDelay; 3791 3792 #define DOT11F_EID_WMMTSDELAY (221) 3793 3794 /* N.B. These #defines do *not* include the EID & length */ 3795 #define DOT11F_IE_WMMTSDELAY_MIN_LEN (10) 3796 3797 #define DOT11F_IE_WMMTSDELAY_MAX_LEN (10) 3798 3799 #ifdef __cplusplus 3800 extern "C" { 3801 #endif /* C++ */ 3802 __must_check uint32_t dot11f_unpack_ie_wmmts_delay( 3803 tpAniSirGlobal, 3804 uint8_t *, 3805 uint8_t, 3806 tDot11fIEWMMTSDelay*, 3807 bool); 3808 3809 uint32_t dot11f_pack_ie_wmmts_delay( 3810 tpAniSirGlobal, 3811 tDot11fIEWMMTSDelay *, 3812 uint8_t *, 3813 uint32_t, 3814 uint32_t*); 3815 3816 uint32_t dot11f_get_packed_ie_WMMTSDelay( 3817 tpAniSirGlobal, 3818 tDot11fIEWMMTSDelay *, 3819 uint32_t*); 3820 3821 #ifdef __cplusplus 3822 }; /* End extern "C". */ 3823 #endif /* C++ */ 3824 3825 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x02} */ 3826 typedef struct sDot11fIEWMMTSPEC { 3827 uint8_t present; 3828 uint8_t version /* Must be 1! */; 3829 uint16_t traffic_type:1; 3830 uint16_t tsid:4; 3831 uint16_t direction:2; 3832 uint16_t access_policy:2; 3833 uint16_t aggregation:1; 3834 uint16_t psb:1; 3835 uint16_t user_priority:3; 3836 uint16_t tsinfo_ack_pol:2; 3837 uint8_t tsinfo_rsvd:7; 3838 uint8_t burst_size_defn:1; 3839 uint16_t size:15; 3840 uint16_t fixed:1; 3841 uint16_t max_msdu_size; 3842 uint32_t min_service_int; 3843 uint32_t max_service_int; 3844 uint32_t inactivity_int; 3845 uint32_t suspension_int; 3846 uint32_t service_start_time; 3847 uint32_t min_data_rate; 3848 uint32_t mean_data_rate; 3849 uint32_t peak_data_rate; 3850 uint32_t burst_size; 3851 uint32_t delay_bound; 3852 uint32_t min_phy_rate; 3853 uint16_t surplus_bw_allowance; 3854 uint16_t medium_time; 3855 } tDot11fIEWMMTSPEC; 3856 3857 #define DOT11F_EID_WMMTSPEC (221) 3858 3859 /* N.B. These #defines do *not* include the EID & length */ 3860 #define DOT11F_IE_WMMTSPEC_MIN_LEN (61) 3861 3862 #define DOT11F_IE_WMMTSPEC_MAX_LEN (61) 3863 3864 #ifdef __cplusplus 3865 extern "C" { 3866 #endif /* C++ */ 3867 __must_check uint32_t dot11f_unpack_ie_wmmtspec( 3868 tpAniSirGlobal, 3869 uint8_t *, 3870 uint8_t, 3871 tDot11fIEWMMTSPEC*, 3872 bool); 3873 3874 uint32_t dot11f_pack_ie_wmmtspec( 3875 tpAniSirGlobal, 3876 tDot11fIEWMMTSPEC *, 3877 uint8_t *, 3878 uint32_t, 3879 uint32_t*); 3880 3881 uint32_t dot11f_get_packed_ie_WMMTSPEC( 3882 tpAniSirGlobal, 3883 tDot11fIEWMMTSPEC *, 3884 uint32_t*); 3885 3886 #ifdef __cplusplus 3887 }; /* End extern "C". */ 3888 #endif /* C++ */ 3889 3890 /* EID 194 (0xc2) */ 3891 typedef struct sDot11fIEWiderBWChanSwitchAnn { 3892 uint8_t present; 3893 uint8_t newChanWidth; 3894 uint8_t newCenterChanFreq0; 3895 uint8_t newCenterChanFreq1; 3896 } tDot11fIEWiderBWChanSwitchAnn; 3897 3898 #define DOT11F_EID_WIDERBWCHANSWITCHANN (194) 3899 3900 /* N.B. These #defines do *not* include the EID & length */ 3901 #define DOT11F_IE_WIDERBWCHANSWITCHANN_MIN_LEN (3) 3902 3903 #define DOT11F_IE_WIDERBWCHANSWITCHANN_MAX_LEN (3) 3904 3905 #ifdef __cplusplus 3906 extern "C" { 3907 #endif /* C++ */ 3908 __must_check uint32_t dot11f_unpack_ie_wider_bw_chan_switch_ann( 3909 tpAniSirGlobal, 3910 uint8_t *, 3911 uint8_t, 3912 tDot11fIEWiderBWChanSwitchAnn*, 3913 bool); 3914 3915 uint32_t dot11f_pack_ie_wider_bw_chan_switch_ann( 3916 tpAniSirGlobal, 3917 tDot11fIEWiderBWChanSwitchAnn *, 3918 uint8_t *, 3919 uint32_t, 3920 uint32_t*); 3921 3922 uint32_t dot11f_get_packed_ie_WiderBWChanSwitchAnn( 3923 tpAniSirGlobal, 3924 tDot11fIEWiderBWChanSwitchAnn *, 3925 uint32_t*); 3926 3927 #ifdef __cplusplus 3928 }; /* End extern "C". */ 3929 #endif /* C++ */ 3930 3931 /* EID 1 (0x01) */ 3932 typedef struct sDot11fIEazimuth_req { 3933 uint8_t present; 3934 uint8_t request; 3935 } tDot11fIEazimuth_req; 3936 3937 #define DOT11F_EID_AZIMUTH_REQ (1) 3938 3939 /* N.B. These #defines do *not* include the EID & length */ 3940 #define DOT11F_IE_AZIMUTH_REQ_MIN_LEN (1) 3941 3942 #define DOT11F_IE_AZIMUTH_REQ_MAX_LEN (1) 3943 3944 #ifdef __cplusplus 3945 extern "C" { 3946 #endif /* C++ */ 3947 __must_check uint32_t dot11f_unpack_ie_azimuth_req( 3948 tpAniSirGlobal, 3949 uint8_t *, 3950 uint8_t, 3951 tDot11fIEazimuth_req*, 3952 bool); 3953 3954 uint32_t dot11f_pack_ie_azimuth_req( 3955 tpAniSirGlobal, 3956 tDot11fIEazimuth_req *, 3957 uint8_t *, 3958 uint32_t, 3959 uint32_t*); 3960 3961 uint32_t dot11f_get_packed_ie_azimuth_req( 3962 tpAniSirGlobal, 3963 tDot11fIEazimuth_req *, 3964 uint32_t*); 3965 3966 #ifdef __cplusplus 3967 }; /* End extern "C". */ 3968 #endif /* C++ */ 3969 3970 /* EID 2 (0x02) */ 3971 typedef struct sDot11fIEbeacon_report_frm_body_fragment_id { 3972 uint8_t present; 3973 uint16_t beacon_report_id:8; 3974 uint16_t fragment_id_number:7; 3975 uint16_t more_fragments:1; 3976 } tDot11fIEbeacon_report_frm_body_fragment_id; 3977 3978 #define DOT11F_EID_BEACON_REPORT_FRM_BODY_FRAGMENT_ID (2) 3979 3980 /* N.B. These #defines do *not* include the EID & length */ 3981 #define DOT11F_IE_BEACON_REPORT_FRM_BODY_FRAGMENT_ID_MIN_LEN (2) 3982 3983 #define DOT11F_IE_BEACON_REPORT_FRM_BODY_FRAGMENT_ID_MAX_LEN (2) 3984 3985 #ifdef __cplusplus 3986 extern "C" { 3987 #endif /* C++ */ 3988 __must_check uint32_t dot11f_unpack_ie_beacon_report_frm_body_fragment_id( 3989 tpAniSirGlobal, 3990 uint8_t *, 3991 uint8_t, 3992 tDot11fIEbeacon_report_frm_body_fragment_id*, 3993 bool); 3994 3995 uint32_t dot11f_pack_ie_beacon_report_frm_body_fragment_id( 3996 tpAniSirGlobal, 3997 tDot11fIEbeacon_report_frm_body_fragment_id *, 3998 uint8_t *, 3999 uint32_t, 4000 uint32_t*); 4001 4002 uint32_t dot11f_get_packed_ie_beacon_report_frm_body_fragment_id( 4003 tpAniSirGlobal, 4004 tDot11fIEbeacon_report_frm_body_fragment_id *, 4005 uint32_t*); 4006 4007 #ifdef __cplusplus 4008 }; /* End extern "C". */ 4009 #endif /* C++ */ 4010 4011 /* EID 164 (0xa4) */ 4012 typedef struct sDot11fIElast_beacon_report_indication { 4013 uint8_t present; 4014 uint8_t last_fragment; 4015 } tDot11fIElast_beacon_report_indication; 4016 4017 #define DOT11F_EID_LAST_BEACON_REPORT_INDICATION (164) 4018 4019 /* N.B. These #defines do *not* include the EID & length */ 4020 #define DOT11F_IE_LAST_BEACON_REPORT_INDICATION_MIN_LEN (1) 4021 4022 #define DOT11F_IE_LAST_BEACON_REPORT_INDICATION_MAX_LEN (1) 4023 4024 #ifdef __cplusplus 4025 extern "C" { 4026 #endif /* C++ */ 4027 __must_check uint32_t dot11f_unpack_ie_last_beacon_report_indication( 4028 tpAniSirGlobal, 4029 uint8_t *, 4030 uint8_t, 4031 tDot11fIElast_beacon_report_indication*, 4032 bool); 4033 4034 uint32_t dot11f_pack_ie_last_beacon_report_indication( 4035 tpAniSirGlobal, 4036 tDot11fIElast_beacon_report_indication *, 4037 uint8_t *, 4038 uint32_t, 4039 uint32_t*); 4040 4041 uint32_t dot11f_get_packed_ie_last_beacon_report_indication( 4042 tpAniSirGlobal, 4043 tDot11fIElast_beacon_report_indication *, 4044 uint32_t*); 4045 4046 #ifdef __cplusplus 4047 }; /* End extern "C". */ 4048 #endif /* C++ */ 4049 4050 /* EID 4 (0x04) */ 4051 typedef struct sDot11fIEmax_age { 4052 uint8_t present; 4053 uint16_t max_age; 4054 } tDot11fIEmax_age; 4055 4056 #define DOT11F_EID_MAX_AGE (4) 4057 4058 /* N.B. These #defines do *not* include the EID & length */ 4059 #define DOT11F_IE_MAX_AGE_MIN_LEN (2) 4060 4061 #define DOT11F_IE_MAX_AGE_MAX_LEN (2) 4062 4063 #ifdef __cplusplus 4064 extern "C" { 4065 #endif /* C++ */ 4066 __must_check uint32_t dot11f_unpack_ie_max_age( 4067 tpAniSirGlobal, 4068 uint8_t *, 4069 uint8_t, 4070 tDot11fIEmax_age*, 4071 bool); 4072 4073 uint32_t dot11f_pack_ie_max_age( 4074 tpAniSirGlobal, 4075 tDot11fIEmax_age *, 4076 uint8_t *, 4077 uint32_t, 4078 uint32_t*); 4079 4080 uint32_t dot11f_get_packed_ie_max_age( 4081 tpAniSirGlobal, 4082 tDot11fIEmax_age *, 4083 uint32_t*); 4084 4085 #ifdef __cplusplus 4086 }; /* End extern "C". */ 4087 #endif /* C++ */ 4088 4089 /* EID 52 (0x34) */ 4090 typedef struct sDot11fIEneighbor_rpt { 4091 uint8_t present; 4092 uint8_t bssid[6]; 4093 uint8_t APReachability:2; 4094 uint8_t Security:1; 4095 uint8_t KeyScope:1; 4096 uint8_t SpecMgmtCap:1; 4097 uint8_t QosCap:1; 4098 uint8_t apsd:1; 4099 uint8_t rrm:1; 4100 uint8_t DelayedBA:1; 4101 uint8_t ImmBA:1; 4102 uint8_t MobilityDomain:1; 4103 uint8_t reserved:5; 4104 uint16_t reserved1; 4105 uint8_t regulatoryClass; 4106 uint8_t channel; 4107 uint8_t PhyType; 4108 tDot11fIETSFInfo TSFInfo; 4109 tDot11fIECondensedCountryStr CondensedCountryStr; 4110 tDot11fIEMeasurementPilot MeasurementPilot; 4111 tDot11fIERRMEnabledCap RRMEnabledCap; 4112 tDot11fIEMultiBssid MultiBssid; 4113 } tDot11fIEneighbor_rpt; 4114 4115 #define DOT11F_EID_NEIGHBOR_RPT (52) 4116 4117 /* N.B. These #defines do *not* include the EID & length */ 4118 #define DOT11F_IE_NEIGHBOR_RPT_MIN_LEN (13) 4119 4120 #define DOT11F_IE_NEIGHBOR_RPT_MAX_LEN (546) 4121 4122 #ifdef __cplusplus 4123 extern "C" { 4124 #endif /* C++ */ 4125 __must_check uint32_t dot11f_unpack_ie_neighbor_rpt( 4126 tpAniSirGlobal, 4127 uint8_t *, 4128 uint8_t, 4129 tDot11fIEneighbor_rpt*, 4130 bool); 4131 4132 uint32_t dot11f_pack_ie_neighbor_rpt( 4133 tpAniSirGlobal, 4134 tDot11fIEneighbor_rpt *, 4135 uint8_t *, 4136 uint32_t, 4137 uint32_t*); 4138 4139 uint32_t dot11f_get_packed_ie_neighbor_rpt( 4140 tpAniSirGlobal, 4141 tDot11fIEneighbor_rpt *, 4142 uint32_t*); 4143 4144 #ifdef __cplusplus 4145 }; /* End extern "C". */ 4146 #endif /* C++ */ 4147 4148 /* EID 2 (0x02) */ 4149 typedef struct sDot11fIEreq_mac_addr { 4150 uint8_t present; 4151 uint8_t addr[6]; 4152 } tDot11fIEreq_mac_addr; 4153 4154 #define DOT11F_EID_REQ_MAC_ADDR (2) 4155 4156 /* N.B. These #defines do *not* include the EID & length */ 4157 #define DOT11F_IE_REQ_MAC_ADDR_MIN_LEN (6) 4158 4159 #define DOT11F_IE_REQ_MAC_ADDR_MAX_LEN (6) 4160 4161 #ifdef __cplusplus 4162 extern "C" { 4163 #endif /* C++ */ 4164 __must_check uint32_t dot11f_unpack_ie_req_mac_addr( 4165 tpAniSirGlobal, 4166 uint8_t *, 4167 uint8_t, 4168 tDot11fIEreq_mac_addr*, 4169 bool); 4170 4171 uint32_t dot11f_pack_ie_req_mac_addr( 4172 tpAniSirGlobal, 4173 tDot11fIEreq_mac_addr *, 4174 uint8_t *, 4175 uint32_t, 4176 uint32_t*); 4177 4178 uint32_t dot11f_get_packed_ie_req_mac_addr( 4179 tpAniSirGlobal, 4180 tDot11fIEreq_mac_addr *, 4181 uint32_t*); 4182 4183 #ifdef __cplusplus 4184 }; /* End extern "C". */ 4185 #endif /* C++ */ 4186 4187 /* EID 3 (0x03) */ 4188 typedef struct sDot11fIEtgt_mac_addr { 4189 uint8_t present; 4190 uint8_t addr[6]; 4191 } tDot11fIEtgt_mac_addr; 4192 4193 #define DOT11F_EID_TGT_MAC_ADDR (3) 4194 4195 /* N.B. These #defines do *not* include the EID & length */ 4196 #define DOT11F_IE_TGT_MAC_ADDR_MIN_LEN (6) 4197 4198 #define DOT11F_IE_TGT_MAC_ADDR_MAX_LEN (6) 4199 4200 #ifdef __cplusplus 4201 extern "C" { 4202 #endif /* C++ */ 4203 __must_check uint32_t dot11f_unpack_ie_tgt_mac_addr( 4204 tpAniSirGlobal, 4205 uint8_t *, 4206 uint8_t, 4207 tDot11fIEtgt_mac_addr*, 4208 bool); 4209 4210 uint32_t dot11f_pack_ie_tgt_mac_addr( 4211 tpAniSirGlobal, 4212 tDot11fIEtgt_mac_addr *, 4213 uint8_t *, 4214 uint32_t, 4215 uint32_t*); 4216 4217 uint32_t dot11f_get_packed_ie_tgt_mac_addr( 4218 tpAniSirGlobal, 4219 tDot11fIEtgt_mac_addr *, 4220 uint32_t*); 4221 4222 #ifdef __cplusplus 4223 }; /* End extern "C". */ 4224 #endif /* C++ */ 4225 4226 /* EID 195 (0xc3) */ 4227 typedef struct sDot11fIEvht_transmit_power_env { 4228 uint8_t present; 4229 uint8_t num_bytes; 4230 uint8_t bytes[5]; 4231 } tDot11fIEvht_transmit_power_env; 4232 4233 #define DOT11F_EID_VHT_TRANSMIT_POWER_ENV (195) 4234 4235 /* N.B. These #defines do *not* include the EID & length */ 4236 #define DOT11F_IE_VHT_TRANSMIT_POWER_ENV_MIN_LEN (2) 4237 4238 #define DOT11F_IE_VHT_TRANSMIT_POWER_ENV_MAX_LEN (5) 4239 4240 #ifdef __cplusplus 4241 extern "C" { 4242 #endif /* C++ */ 4243 __must_check uint32_t dot11f_unpack_ie_vht_transmit_power_env( 4244 tpAniSirGlobal, 4245 uint8_t *, 4246 uint8_t, 4247 tDot11fIEvht_transmit_power_env*, 4248 bool); 4249 4250 uint32_t dot11f_pack_ie_vht_transmit_power_env( 4251 tpAniSirGlobal, 4252 tDot11fIEvht_transmit_power_env *, 4253 uint8_t *, 4254 uint32_t, 4255 uint32_t*); 4256 4257 uint32_t dot11f_get_packed_ie_vht_transmit_power_env( 4258 tpAniSirGlobal, 4259 tDot11fIEvht_transmit_power_env *, 4260 uint32_t*); 4261 4262 #ifdef __cplusplus 4263 }; /* End extern "C". */ 4264 #endif /* C++ */ 4265 4266 /* EID 197 (0xc5) */ 4267 typedef struct sDot11fIEAID { 4268 uint8_t present; 4269 uint16_t assocId; 4270 } tDot11fIEAID; 4271 4272 #define DOT11F_EID_AID (197) 4273 4274 /* N.B. These #defines do *not* include the EID & length */ 4275 #define DOT11F_IE_AID_MIN_LEN (2) 4276 4277 #define DOT11F_IE_AID_MAX_LEN (2) 4278 4279 #ifdef __cplusplus 4280 extern "C" { 4281 #endif /* C++ */ 4282 __must_check uint32_t dot11f_unpack_ie_aid( 4283 tpAniSirGlobal, 4284 uint8_t *, 4285 uint8_t, 4286 tDot11fIEAID*, 4287 bool); 4288 4289 uint32_t dot11f_pack_ie_aid( 4290 tpAniSirGlobal, 4291 tDot11fIEAID *, 4292 uint8_t *, 4293 uint32_t, 4294 uint32_t*); 4295 4296 uint32_t dot11f_get_packed_ie_AID( 4297 tpAniSirGlobal, 4298 tDot11fIEAID *, 4299 uint32_t*); 4300 4301 #ifdef __cplusplus 4302 }; /* End extern "C". */ 4303 #endif /* C++ */ 4304 4305 /* EID 4 (0x04) */ 4306 typedef struct sDot11fIECFParams { 4307 uint8_t present; 4308 uint8_t cfp_count; 4309 uint8_t cfp_period; 4310 uint16_t cfp_maxduration; 4311 uint16_t cfp_durremaining; 4312 } tDot11fIECFParams; 4313 4314 #define DOT11F_EID_CFPARAMS (4) 4315 4316 /* N.B. These #defines do *not* include the EID & length */ 4317 #define DOT11F_IE_CFPARAMS_MIN_LEN (6) 4318 4319 #define DOT11F_IE_CFPARAMS_MAX_LEN (6) 4320 4321 #ifdef __cplusplus 4322 extern "C" { 4323 #endif /* C++ */ 4324 __must_check uint32_t dot11f_unpack_ie_cf_params( 4325 tpAniSirGlobal, 4326 uint8_t *, 4327 uint8_t, 4328 tDot11fIECFParams*, 4329 bool); 4330 4331 uint32_t dot11f_pack_ie_cf_params( 4332 tpAniSirGlobal, 4333 tDot11fIECFParams *, 4334 uint8_t *, 4335 uint32_t, 4336 uint32_t*); 4337 4338 uint32_t dot11f_get_packed_ie_CFParams( 4339 tpAniSirGlobal, 4340 tDot11fIECFParams *, 4341 uint32_t*); 4342 4343 #ifdef __cplusplus 4344 }; /* End extern "C". */ 4345 #endif /* C++ */ 4346 4347 /* EID 16 (0x10) */ 4348 typedef struct sDot11fIEChallengeText { 4349 uint8_t present; 4350 uint8_t num_text; 4351 uint8_t text[253]; 4352 } tDot11fIEChallengeText; 4353 4354 #define DOT11F_EID_CHALLENGETEXT (16) 4355 4356 /* N.B. These #defines do *not* include the EID & length */ 4357 #define DOT11F_IE_CHALLENGETEXT_MIN_LEN (1) 4358 4359 #define DOT11F_IE_CHALLENGETEXT_MAX_LEN (253) 4360 4361 #ifdef __cplusplus 4362 extern "C" { 4363 #endif /* C++ */ 4364 __must_check uint32_t dot11f_unpack_ie_challenge_text( 4365 tpAniSirGlobal, 4366 uint8_t *, 4367 uint8_t, 4368 tDot11fIEChallengeText*, 4369 bool); 4370 4371 uint32_t dot11f_pack_ie_challenge_text( 4372 tpAniSirGlobal, 4373 tDot11fIEChallengeText *, 4374 uint8_t *, 4375 uint32_t, 4376 uint32_t*); 4377 4378 uint32_t dot11f_get_packed_ie_ChallengeText( 4379 tpAniSirGlobal, 4380 tDot11fIEChallengeText *, 4381 uint32_t*); 4382 4383 #ifdef __cplusplus 4384 }; /* End extern "C". */ 4385 #endif /* C++ */ 4386 4387 /* EID 37 (0x25) */ 4388 typedef struct sDot11fIEChanSwitchAnn { 4389 uint8_t present; 4390 uint8_t switchMode; 4391 uint8_t newChannel; 4392 uint8_t switchCount; 4393 } tDot11fIEChanSwitchAnn; 4394 4395 #define DOT11F_EID_CHANSWITCHANN (37) 4396 4397 /* N.B. These #defines do *not* include the EID & length */ 4398 #define DOT11F_IE_CHANSWITCHANN_MIN_LEN (3) 4399 4400 #define DOT11F_IE_CHANSWITCHANN_MAX_LEN (3) 4401 4402 #ifdef __cplusplus 4403 extern "C" { 4404 #endif /* C++ */ 4405 __must_check uint32_t dot11f_unpack_ie_chan_switch_ann( 4406 tpAniSirGlobal, 4407 uint8_t *, 4408 uint8_t, 4409 tDot11fIEChanSwitchAnn*, 4410 bool); 4411 4412 uint32_t dot11f_pack_ie_chan_switch_ann( 4413 tpAniSirGlobal, 4414 tDot11fIEChanSwitchAnn *, 4415 uint8_t *, 4416 uint32_t, 4417 uint32_t*); 4418 4419 uint32_t dot11f_get_packed_ie_ChanSwitchAnn( 4420 tpAniSirGlobal, 4421 tDot11fIEChanSwitchAnn *, 4422 uint32_t*); 4423 4424 #ifdef __cplusplus 4425 }; /* End extern "C". */ 4426 #endif /* C++ */ 4427 4428 /* EID 196 (0xc4) */ 4429 typedef struct sDot11fIEChannelSwitchWrapper { 4430 uint8_t present; 4431 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 4432 tDot11fIEvht_transmit_power_env vht_transmit_power_env; 4433 } tDot11fIEChannelSwitchWrapper; 4434 4435 #define DOT11F_EID_CHANNELSWITCHWRAPPER (196) 4436 4437 /* N.B. These #defines do *not* include the EID & length */ 4438 #define DOT11F_IE_CHANNELSWITCHWRAPPER_MIN_LEN (0) 4439 4440 #define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN (12) 4441 4442 #ifdef __cplusplus 4443 extern "C" { 4444 #endif /* C++ */ 4445 __must_check uint32_t dot11f_unpack_ie_channel_switch_wrapper( 4446 tpAniSirGlobal, 4447 uint8_t *, 4448 uint8_t, 4449 tDot11fIEChannelSwitchWrapper*, 4450 bool); 4451 4452 uint32_t dot11f_pack_ie_channel_switch_wrapper( 4453 tpAniSirGlobal, 4454 tDot11fIEChannelSwitchWrapper *, 4455 uint8_t *, 4456 uint32_t, 4457 uint32_t*); 4458 4459 uint32_t dot11f_get_packed_ie_channel_switch_wrapper( 4460 tpAniSirGlobal, 4461 tDot11fIEChannelSwitchWrapper *, 4462 uint32_t*); 4463 4464 #ifdef __cplusplus 4465 }; /* End extern "C". */ 4466 #endif /* C++ */ 4467 4468 /* EID 7 (0x07) */ 4469 typedef struct sDot11fIECountry { 4470 uint8_t present; 4471 uint8_t country[3]; 4472 uint8_t num_triplets; 4473 uint8_t triplets[84][3]; 4474 } tDot11fIECountry; 4475 4476 #define DOT11F_EID_COUNTRY (7) 4477 4478 /* N.B. These #defines do *not* include the EID & length */ 4479 #define DOT11F_IE_COUNTRY_MIN_LEN (3) 4480 4481 #define DOT11F_IE_COUNTRY_MAX_LEN (255) 4482 4483 #ifdef __cplusplus 4484 extern "C" { 4485 #endif /* C++ */ 4486 __must_check uint32_t dot11f_unpack_ie_country( 4487 tpAniSirGlobal, 4488 uint8_t *, 4489 uint8_t, 4490 tDot11fIECountry*, 4491 bool); 4492 4493 uint32_t dot11f_pack_ie_country( 4494 tpAniSirGlobal, 4495 tDot11fIECountry *, 4496 uint8_t *, 4497 uint32_t, 4498 uint32_t*); 4499 4500 uint32_t dot11f_get_packed_ie_country( 4501 tpAniSirGlobal, 4502 tDot11fIECountry *, 4503 uint32_t*); 4504 4505 #ifdef __cplusplus 4506 }; /* End extern "C". */ 4507 #endif /* C++ */ 4508 4509 /* EID 3 (0x03) */ 4510 typedef struct sDot11fIEDSParams { 4511 uint8_t present; 4512 uint8_t curr_channel; 4513 } tDot11fIEDSParams; 4514 4515 #define DOT11F_EID_DSPARAMS (3) 4516 4517 /* N.B. These #defines do *not* include the EID & length */ 4518 #define DOT11F_IE_DSPARAMS_MIN_LEN (1) 4519 4520 #define DOT11F_IE_DSPARAMS_MAX_LEN (1) 4521 4522 #ifdef __cplusplus 4523 extern "C" { 4524 #endif /* C++ */ 4525 __must_check uint32_t dot11f_unpack_ie_DSParams( 4526 tpAniSirGlobal, 4527 uint8_t *, 4528 uint8_t, 4529 tDot11fIEDSParams*, 4530 bool); 4531 4532 uint32_t dot11f_pack_ie_ds_params( 4533 tpAniSirGlobal, 4534 tDot11fIEDSParams *, 4535 uint8_t *, 4536 uint32_t, 4537 uint32_t*); 4538 4539 uint32_t dot11f_get_packed_ie_DSParams( 4540 tpAniSirGlobal, 4541 tDot11fIEDSParams *, 4542 uint32_t*); 4543 4544 #ifdef __cplusplus 4545 }; /* End extern "C". */ 4546 #endif /* C++ */ 4547 4548 /* EID 12 (0x0c) */ 4549 typedef struct sDot11fIEEDCAParamSet { 4550 uint8_t present; 4551 uint8_t qos; 4552 uint8_t reserved; 4553 uint8_t acbe_aifsn:4; 4554 uint8_t acbe_acm:1; 4555 uint8_t acbe_aci:2; 4556 uint8_t unused1:1; 4557 uint8_t acbe_acwmin:4; 4558 uint8_t acbe_acwmax:4; 4559 uint16_t acbe_txoplimit; 4560 uint8_t acbk_aifsn:4; 4561 uint8_t acbk_acm:1; 4562 uint8_t acbk_aci:2; 4563 uint8_t unused2:1; 4564 uint8_t acbk_acwmin:4; 4565 uint8_t acbk_acwmax:4; 4566 uint16_t acbk_txoplimit; 4567 uint8_t acvi_aifsn:4; 4568 uint8_t acvi_acm:1; 4569 uint8_t acvi_aci:2; 4570 uint8_t unused3:1; 4571 uint8_t acvi_acwmin:4; 4572 uint8_t acvi_acwmax:4; 4573 uint16_t acvi_txoplimit; 4574 uint8_t acvo_aifsn:4; 4575 uint8_t acvo_acm:1; 4576 uint8_t acvo_aci:2; 4577 uint8_t unused4:1; 4578 uint8_t acvo_acwmin:4; 4579 uint8_t acvo_acwmax:4; 4580 uint16_t acvo_txoplimit; 4581 } tDot11fIEEDCAParamSet; 4582 4583 #define DOT11F_EID_EDCAPARAMSET (12) 4584 4585 /* N.B. These #defines do *not* include the EID & length */ 4586 #define DOT11F_IE_EDCAPARAMSET_MIN_LEN (18) 4587 4588 #define DOT11F_IE_EDCAPARAMSET_MAX_LEN (18) 4589 4590 #ifdef __cplusplus 4591 extern "C" { 4592 #endif /* C++ */ 4593 __must_check uint32_t dot11f_unpack_ie_edca_param_set( 4594 tpAniSirGlobal, 4595 uint8_t *, 4596 uint8_t, 4597 tDot11fIEEDCAParamSet*, 4598 bool); 4599 4600 uint32_t dot11f_pack_ie_edca_param_set( 4601 tpAniSirGlobal, 4602 tDot11fIEEDCAParamSet *, 4603 uint8_t *, 4604 uint32_t, 4605 uint32_t*); 4606 4607 uint32_t dot11f_get_packed_ie_EDCAParamSet( 4608 tpAniSirGlobal, 4609 tDot11fIEEDCAParamSet *, 4610 uint32_t*); 4611 4612 #ifdef __cplusplus 4613 }; /* End extern "C". */ 4614 #endif /* C++ */ 4615 4616 /* EID 42 (0x2a) */ 4617 typedef struct sDot11fIEERPInfo { 4618 uint8_t present; 4619 uint8_t non_erp_present:1; 4620 uint8_t use_prot:1; 4621 uint8_t barker_preamble:1; 4622 uint8_t unused:5; 4623 } tDot11fIEERPInfo; 4624 4625 #define DOT11F_EID_ERPINFO (42) 4626 4627 /* N.B. These #defines do *not* include the EID & length */ 4628 #define DOT11F_IE_ERPINFO_MIN_LEN (1) 4629 4630 #define DOT11F_IE_ERPINFO_MAX_LEN (1) 4631 4632 #ifdef __cplusplus 4633 extern "C" { 4634 #endif /* C++ */ 4635 __must_check uint32_t dot11f_unpack_ie_erp_info( 4636 tpAniSirGlobal, 4637 uint8_t *, 4638 uint8_t, 4639 tDot11fIEERPInfo*, 4640 bool); 4641 4642 uint32_t dot11f_pack_ie_erp_info( 4643 tpAniSirGlobal, 4644 tDot11fIEERPInfo *, 4645 uint8_t *, 4646 uint32_t, 4647 uint32_t*); 4648 4649 uint32_t dot11f_get_packed_ie_ERPInfo( 4650 tpAniSirGlobal, 4651 tDot11fIEERPInfo *, 4652 uint32_t*); 4653 4654 #ifdef __cplusplus 4655 }; /* End extern "C". */ 4656 #endif /* C++ */ 4657 4658 /* EID 156 (0x9c) {OUI 0x00, 0x40, 0x96, 0x00} */ 4659 typedef struct sDot11fIEESECckmOpaque { 4660 uint8_t present; 4661 uint8_t num_data; 4662 uint8_t data[20]; 4663 } tDot11fIEESECckmOpaque; 4664 4665 #define DOT11F_EID_ESECCKMOPAQUE (156) 4666 4667 /* N.B. These #defines do *not* include the EID & length */ 4668 #define DOT11F_IE_ESECCKMOPAQUE_MIN_LEN (10) 4669 4670 #define DOT11F_IE_ESECCKMOPAQUE_MAX_LEN (24) 4671 4672 #ifdef __cplusplus 4673 extern "C" { 4674 #endif /* C++ */ 4675 __must_check uint32_t dot11f_unpack_ie_ese_cckm_opaque( 4676 tpAniSirGlobal, 4677 uint8_t *, 4678 uint8_t, 4679 tDot11fIEESECckmOpaque*, 4680 bool); 4681 4682 uint32_t dot11f_pack_ie_ese_cckm_opaque( 4683 tpAniSirGlobal, 4684 tDot11fIEESECckmOpaque *, 4685 uint8_t *, 4686 uint32_t, 4687 uint32_t*); 4688 4689 uint32_t dot11f_get_packed_ie_ESECckmOpaque( 4690 tpAniSirGlobal, 4691 tDot11fIEESECckmOpaque *, 4692 uint32_t*); 4693 4694 #ifdef __cplusplus 4695 }; /* End extern "C". */ 4696 #endif /* C++ */ 4697 4698 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x01} */ 4699 typedef struct sDot11fIEESERadMgmtCap { 4700 uint8_t present; 4701 uint8_t mgmt_state; 4702 uint8_t mbssid_mask:3; 4703 uint8_t reserved:5; 4704 } tDot11fIEESERadMgmtCap; 4705 4706 #define DOT11F_EID_ESERADMGMTCAP (221) 4707 4708 /* N.B. These #defines do *not* include the EID & length */ 4709 #define DOT11F_IE_ESERADMGMTCAP_MIN_LEN (6) 4710 4711 #define DOT11F_IE_ESERADMGMTCAP_MAX_LEN (6) 4712 4713 #ifdef __cplusplus 4714 extern "C" { 4715 #endif /* C++ */ 4716 __must_check uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap( 4717 tpAniSirGlobal, 4718 uint8_t *, 4719 uint8_t, 4720 tDot11fIEESERadMgmtCap*, 4721 bool); 4722 4723 uint32_t dot11f_pack_ie_ese_rad_mgmt_cap( 4724 tpAniSirGlobal, 4725 tDot11fIEESERadMgmtCap *, 4726 uint8_t *, 4727 uint32_t, 4728 uint32_t*); 4729 4730 uint32_t dot11f_get_packed_ie_ESERadMgmtCap( 4731 tpAniSirGlobal, 4732 tDot11fIEESERadMgmtCap *, 4733 uint32_t*); 4734 4735 #ifdef __cplusplus 4736 }; /* End extern "C". */ 4737 #endif /* C++ */ 4738 4739 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x07} */ 4740 typedef struct sDot11fIEESETrafStrmMet { 4741 uint8_t present; 4742 uint8_t tsid; 4743 uint8_t state; 4744 uint16_t msmt_interval; 4745 } tDot11fIEESETrafStrmMet; 4746 4747 #define DOT11F_EID_ESETRAFSTRMMET (221) 4748 4749 /* N.B. These #defines do *not* include the EID & length */ 4750 #define DOT11F_IE_ESETRAFSTRMMET_MIN_LEN (8) 4751 4752 #define DOT11F_IE_ESETRAFSTRMMET_MAX_LEN (8) 4753 4754 #ifdef __cplusplus 4755 extern "C" { 4756 #endif /* C++ */ 4757 __must_check uint32_t dot11f_unpack_ie_ese_traf_strm_met( 4758 tpAniSirGlobal, 4759 uint8_t *, 4760 uint8_t, 4761 tDot11fIEESETrafStrmMet*, 4762 bool); 4763 4764 uint32_t dot11f_pack_ie_ese_traf_strm_met( 4765 tpAniSirGlobal, 4766 tDot11fIEESETrafStrmMet *, 4767 uint8_t *, 4768 uint32_t, 4769 uint32_t*); 4770 4771 uint32_t dot11f_get_packed_ie_ESETrafStrmMet( 4772 tpAniSirGlobal, 4773 tDot11fIEESETrafStrmMet *, 4774 uint32_t*); 4775 4776 #ifdef __cplusplus 4777 }; /* End extern "C". */ 4778 #endif /* C++ */ 4779 4780 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x08} */ 4781 typedef struct sDot11fIEESETrafStrmRateSet { 4782 uint8_t present; 4783 uint8_t tsid; 4784 uint8_t num_tsrates; 4785 uint8_t tsrates[8]; 4786 } tDot11fIEESETrafStrmRateSet; 4787 4788 #define DOT11F_EID_ESETRAFSTRMRATESET (221) 4789 4790 /* N.B. These #defines do *not* include the EID & length */ 4791 #define DOT11F_IE_ESETRAFSTRMRATESET_MIN_LEN (5) 4792 4793 #define DOT11F_IE_ESETRAFSTRMRATESET_MAX_LEN (13) 4794 4795 #ifdef __cplusplus 4796 extern "C" { 4797 #endif /* C++ */ 4798 __must_check uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set( 4799 tpAniSirGlobal, 4800 uint8_t *, 4801 uint8_t, 4802 tDot11fIEESETrafStrmRateSet*, 4803 bool); 4804 4805 uint32_t dot11f_pack_ie_ese_traf_strm_rate_set( 4806 tpAniSirGlobal, 4807 tDot11fIEESETrafStrmRateSet *, 4808 uint8_t *, 4809 uint32_t, 4810 uint32_t*); 4811 4812 uint32_t dot11f_get_packed_ie_ESETrafStrmRateSet( 4813 tpAniSirGlobal, 4814 tDot11fIEESETrafStrmRateSet *, 4815 uint32_t*); 4816 4817 #ifdef __cplusplus 4818 }; /* End extern "C". */ 4819 #endif /* C++ */ 4820 4821 /* EID 150 (0x96) {OUI 0x00, 0x40, 0x96, 0x00} */ 4822 typedef struct sDot11fIEESETxmitPower { 4823 uint8_t present; 4824 uint8_t power_limit; 4825 uint8_t reserved; 4826 } tDot11fIEESETxmitPower; 4827 4828 #define DOT11F_EID_ESETXMITPOWER (150) 4829 4830 /* N.B. These #defines do *not* include the EID & length */ 4831 #define DOT11F_IE_ESETXMITPOWER_MIN_LEN (6) 4832 4833 #define DOT11F_IE_ESETXMITPOWER_MAX_LEN (6) 4834 4835 #ifdef __cplusplus 4836 extern "C" { 4837 #endif /* C++ */ 4838 __must_check uint32_t dot11f_unpack_ie_ese_txmit_power( 4839 tpAniSirGlobal, 4840 uint8_t *, 4841 uint8_t, 4842 tDot11fIEESETxmitPower*, 4843 bool); 4844 4845 uint32_t dot11f_pack_ie_ese_txmit_power( 4846 tpAniSirGlobal, 4847 tDot11fIEESETxmitPower *, 4848 uint8_t *, 4849 uint32_t, 4850 uint32_t*); 4851 4852 uint32_t dot11f_get_packed_ie_ESETxmitPower( 4853 tpAniSirGlobal, 4854 tDot11fIEESETxmitPower *, 4855 uint32_t*); 4856 4857 #ifdef __cplusplus 4858 }; /* End extern "C". */ 4859 #endif /* C++ */ 4860 4861 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x03} */ 4862 typedef struct sDot11fIEESEVersion { 4863 uint8_t present; 4864 uint8_t version; 4865 } tDot11fIEESEVersion; 4866 4867 #define DOT11F_EID_ESEVERSION (221) 4868 4869 /* N.B. These #defines do *not* include the EID & length */ 4870 #define DOT11F_IE_ESEVERSION_MIN_LEN (5) 4871 4872 #define DOT11F_IE_ESEVERSION_MAX_LEN (5) 4873 4874 #ifdef __cplusplus 4875 extern "C" { 4876 #endif /* C++ */ 4877 __must_check uint32_t dot11f_unpack_ie_ese_version( 4878 tpAniSirGlobal, 4879 uint8_t *, 4880 uint8_t, 4881 tDot11fIEESEVersion*, 4882 bool); 4883 4884 uint32_t dot11f_pack_ie_ese_version( 4885 tpAniSirGlobal, 4886 tDot11fIEESEVersion *, 4887 uint8_t *, 4888 uint32_t, 4889 uint32_t*); 4890 4891 uint32_t dot11f_get_packed_ie_ESEVersion( 4892 tpAniSirGlobal, 4893 tDot11fIEESEVersion *, 4894 uint32_t*); 4895 4896 #ifdef __cplusplus 4897 }; /* End extern "C". */ 4898 #endif /* C++ */ 4899 4900 /* EID 127 (0x7f) */ 4901 typedef struct sDot11fIEExtCap { 4902 uint8_t present; 4903 uint8_t num_bytes; 4904 uint8_t bytes[15]; 4905 } tDot11fIEExtCap; 4906 4907 #define DOT11F_EID_EXTCAP (127) 4908 4909 /* N.B. These #defines do *not* include the EID & length */ 4910 #define DOT11F_IE_EXTCAP_MIN_LEN (1) 4911 4912 #define DOT11F_IE_EXTCAP_MAX_LEN (15) 4913 4914 #ifdef __cplusplus 4915 extern "C" { 4916 #endif /* C++ */ 4917 __must_check uint32_t dot11f_unpack_ie_ext_cap( 4918 tpAniSirGlobal, 4919 uint8_t *, 4920 uint8_t, 4921 tDot11fIEExtCap*, 4922 bool); 4923 4924 uint32_t dot11f_pack_ie_ext_cap( 4925 tpAniSirGlobal, 4926 tDot11fIEExtCap *, 4927 uint8_t *, 4928 uint32_t, 4929 uint32_t*); 4930 4931 uint32_t dot11f_get_packed_ie_ExtCap( 4932 tpAniSirGlobal, 4933 tDot11fIEExtCap *, 4934 uint32_t*); 4935 4936 #ifdef __cplusplus 4937 }; /* End extern "C". */ 4938 #endif /* C++ */ 4939 4940 /* EID 50 (0x32) */ 4941 typedef struct sDot11fIEExtSuppRates { 4942 uint8_t present; 4943 uint8_t num_rates; 4944 uint8_t rates[12]; 4945 } tDot11fIEExtSuppRates; 4946 4947 #define DOT11F_EID_EXTSUPPRATES (50) 4948 4949 /* N.B. These #defines do *not* include the EID & length */ 4950 #define DOT11F_IE_EXTSUPPRATES_MIN_LEN (1) 4951 4952 #define DOT11F_IE_EXTSUPPRATES_MAX_LEN (12) 4953 4954 #ifdef __cplusplus 4955 extern "C" { 4956 #endif /* C++ */ 4957 __must_check uint32_t dot11f_unpack_ie_ext_supp_rates( 4958 tpAniSirGlobal, 4959 uint8_t *, 4960 uint8_t, 4961 tDot11fIEExtSuppRates*, 4962 bool); 4963 4964 uint32_t dot11f_pack_ie_ext_supp_rates( 4965 tpAniSirGlobal, 4966 tDot11fIEExtSuppRates *, 4967 uint8_t *, 4968 uint32_t, 4969 uint32_t*); 4970 4971 uint32_t dot11f_get_packed_ie_ExtSuppRates( 4972 tpAniSirGlobal, 4973 tDot11fIEExtSuppRates *, 4974 uint32_t*); 4975 4976 #ifdef __cplusplus 4977 }; /* End extern "C". */ 4978 #endif /* C++ */ 4979 4980 /* EID 2 (0x02) */ 4981 typedef struct sDot11fIEFHParamSet { 4982 uint8_t present; 4983 uint16_t dwell_time; 4984 uint8_t hop_set; 4985 uint8_t hop_pattern; 4986 uint8_t hop_index; 4987 } tDot11fIEFHParamSet; 4988 4989 #define DOT11F_EID_FHPARAMSET (2) 4990 4991 /* N.B. These #defines do *not* include the EID & length */ 4992 #define DOT11F_IE_FHPARAMSET_MIN_LEN (5) 4993 4994 #define DOT11F_IE_FHPARAMSET_MAX_LEN (5) 4995 4996 #ifdef __cplusplus 4997 extern "C" { 4998 #endif /* C++ */ 4999 __must_check uint32_t dot11f_unpack_ie_fh_param_set( 5000 tpAniSirGlobal, 5001 uint8_t *, 5002 uint8_t, 5003 tDot11fIEFHParamSet*, 5004 bool); 5005 5006 uint32_t dot11f_pack_ie_fh_param_set( 5007 tpAniSirGlobal, 5008 tDot11fIEFHParamSet *, 5009 uint8_t *, 5010 uint32_t, 5011 uint32_t*); 5012 5013 uint32_t dot11f_get_packed_ie_FHParamSet( 5014 tpAniSirGlobal, 5015 tDot11fIEFHParamSet *, 5016 uint32_t*); 5017 5018 #ifdef __cplusplus 5019 }; /* End extern "C". */ 5020 #endif /* C++ */ 5021 5022 /* EID 8 (0x08) */ 5023 typedef struct sDot11fIEFHParams { 5024 uint8_t present; 5025 uint8_t radix; 5026 uint8_t nchannels; 5027 } tDot11fIEFHParams; 5028 5029 #define DOT11F_EID_FHPARAMS (8) 5030 5031 /* N.B. These #defines do *not* include the EID & length */ 5032 #define DOT11F_IE_FHPARAMS_MIN_LEN (2) 5033 5034 #define DOT11F_IE_FHPARAMS_MAX_LEN (2) 5035 5036 #ifdef __cplusplus 5037 extern "C" { 5038 #endif /* C++ */ 5039 __must_check uint32_t dot11f_unpack_ie_fh_params( 5040 tpAniSirGlobal, 5041 uint8_t *, 5042 uint8_t, 5043 tDot11fIEFHParams*, 5044 bool); 5045 5046 uint32_t dot11f_pack_ie_fh_params( 5047 tpAniSirGlobal, 5048 tDot11fIEFHParams *, 5049 uint8_t *, 5050 uint32_t, 5051 uint32_t*); 5052 5053 uint32_t dot11f_get_packed_ie_FHParams( 5054 tpAniSirGlobal, 5055 tDot11fIEFHParams *, 5056 uint32_t*); 5057 5058 #ifdef __cplusplus 5059 }; /* End extern "C". */ 5060 #endif /* C++ */ 5061 5062 /* EID 9 (0x09) */ 5063 typedef struct sDot11fIEFHPattTable { 5064 uint8_t present; 5065 uint8_t flag; 5066 uint8_t nsets; 5067 uint8_t modulus; 5068 uint8_t offset; 5069 uint8_t num_randtable; 5070 uint8_t randtable[251]; 5071 } tDot11fIEFHPattTable; 5072 5073 #define DOT11F_EID_FHPATTTABLE (9) 5074 5075 /* N.B. These #defines do *not* include the EID & length */ 5076 #define DOT11F_IE_FHPATTTABLE_MIN_LEN (4) 5077 5078 #define DOT11F_IE_FHPATTTABLE_MAX_LEN (255) 5079 5080 #ifdef __cplusplus 5081 extern "C" { 5082 #endif /* C++ */ 5083 __must_check uint32_t dot11f_unpack_ie_fh_patt_table( 5084 tpAniSirGlobal, 5085 uint8_t *, 5086 uint8_t, 5087 tDot11fIEFHPattTable*, 5088 bool); 5089 5090 uint32_t dot11f_pack_ie_fh_patt_table( 5091 tpAniSirGlobal, 5092 tDot11fIEFHPattTable *, 5093 uint8_t *, 5094 uint32_t, 5095 uint32_t*); 5096 5097 uint32_t dot11f_get_packed_ie_FHPattTable( 5098 tpAniSirGlobal, 5099 tDot11fIEFHPattTable *, 5100 uint32_t*); 5101 5102 #ifdef __cplusplus 5103 }; /* End extern "C". */ 5104 #endif /* C++ */ 5105 5106 /* EID 55 (0x37) */ 5107 typedef struct sDot11fIEFTInfo { 5108 uint8_t present; 5109 uint16_t reserved:8; 5110 uint16_t IECount:8; 5111 uint8_t MIC[16]; 5112 uint8_t Anonce[32]; 5113 uint8_t Snonce[32]; 5114 tDot11fIER1KH_ID R1KH_ID; 5115 tDot11fIEGTK GTK; 5116 tDot11fIER0KH_ID R0KH_ID; 5117 tDot11fIEIGTK IGTK; 5118 } tDot11fIEFTInfo; 5119 5120 #define DOT11F_EID_FTINFO (55) 5121 5122 /* N.B. These #defines do *not* include the EID & length */ 5123 #define DOT11F_IE_FTINFO_MIN_LEN (82) 5124 5125 #define DOT11F_IE_FTINFO_MAX_LEN (220) 5126 5127 #ifdef __cplusplus 5128 extern "C" { 5129 #endif /* C++ */ 5130 __must_check uint32_t dot11f_unpack_ie_ft_info( 5131 tpAniSirGlobal, 5132 uint8_t *, 5133 uint8_t, 5134 tDot11fIEFTInfo*, 5135 bool); 5136 5137 uint32_t dot11f_pack_ie_ft_info( 5138 tpAniSirGlobal, 5139 tDot11fIEFTInfo *, 5140 uint8_t *, 5141 uint32_t, 5142 uint32_t*); 5143 5144 uint32_t dot11f_get_packed_ieft_info( 5145 tpAniSirGlobal, 5146 tDot11fIEFTInfo *, 5147 uint32_t*); 5148 5149 #ifdef __cplusplus 5150 }; /* End extern "C". */ 5151 #endif /* C++ */ 5152 5153 /* EID 45 (0x2d) */ 5154 typedef struct sDot11fIEHTCaps { 5155 uint8_t present; 5156 uint16_t advCodingCap:1; 5157 uint16_t supportedChannelWidthSet:1; 5158 uint16_t mimoPowerSave:2; 5159 uint16_t greenField:1; 5160 uint16_t shortGI20MHz:1; 5161 uint16_t shortGI40MHz:1; 5162 uint16_t txSTBC:1; 5163 uint16_t rxSTBC:2; 5164 uint16_t delayedBA:1; 5165 uint16_t maximalAMSDUsize:1; 5166 uint16_t dsssCckMode40MHz:1; 5167 uint16_t psmp:1; 5168 uint16_t stbcControlFrame:1; 5169 uint16_t lsigTXOPProtection:1; 5170 uint8_t maxRxAMPDUFactor:2; 5171 uint8_t mpduDensity:3; 5172 uint8_t reserved1:3; 5173 uint8_t supportedMCSSet[16]; 5174 uint16_t pco:1; 5175 uint16_t transitionTime:2; 5176 uint16_t reserved2:5; 5177 uint16_t mcsFeedback:2; 5178 uint16_t reserved3:6; 5179 uint32_t txBF:1; 5180 uint32_t rxStaggeredSounding:1; 5181 uint32_t txStaggeredSounding:1; 5182 uint32_t rxZLF:1; 5183 uint32_t txZLF:1; 5184 uint32_t implicitTxBF:1; 5185 uint32_t calibration:2; 5186 uint32_t explicitCSITxBF:1; 5187 uint32_t explicitUncompressedSteeringMatrix:1; 5188 uint32_t explicitBFCSIFeedback:3; 5189 uint32_t explicitUncompressedSteeringMatrixFeedback:3; 5190 uint32_t explicitCompressedSteeringMatrixFeedback:3; 5191 uint32_t csiNumBFAntennae:2; 5192 uint32_t uncompressedSteeringMatrixBFAntennae:2; 5193 uint32_t compressedSteeringMatrixBFAntennae:2; 5194 uint32_t reserved4:7; 5195 uint8_t antennaSelection:1; 5196 uint8_t explicitCSIFeedbackTx:1; 5197 uint8_t antennaIndicesFeedbackTx:1; 5198 uint8_t explicitCSIFeedback:1; 5199 uint8_t antennaIndicesFeedback:1; 5200 uint8_t rxAS:1; 5201 uint8_t txSoundingPPDUs:1; 5202 uint8_t reserved5:1; 5203 uint8_t num_rsvd; 5204 uint8_t rsvd[32]; 5205 } tDot11fIEHTCaps; 5206 5207 #define DOT11F_EID_HTCAPS (45) 5208 5209 /* N.B. These #defines do *not* include the EID & length */ 5210 #define DOT11F_IE_HTCAPS_MIN_LEN (26) 5211 5212 #define DOT11F_IE_HTCAPS_MAX_LEN (58) 5213 5214 #ifdef __cplusplus 5215 extern "C" { 5216 #endif /* C++ */ 5217 __must_check uint32_t dot11f_unpack_ie_ht_caps( 5218 tpAniSirGlobal, 5219 uint8_t *, 5220 uint8_t, 5221 tDot11fIEHTCaps*, 5222 bool); 5223 5224 uint32_t dot11f_pack_ie_ht_caps( 5225 tpAniSirGlobal, 5226 tDot11fIEHTCaps *, 5227 uint8_t *, 5228 uint32_t, 5229 uint32_t*); 5230 5231 uint32_t dot11f_get_packed_ie_HTCaps( 5232 tpAniSirGlobal, 5233 tDot11fIEHTCaps *, 5234 uint32_t*); 5235 5236 #ifdef __cplusplus 5237 }; /* End extern "C". */ 5238 #endif /* C++ */ 5239 5240 /* EID 61 (0x3d) */ 5241 typedef struct sDot11fIEHTInfo { 5242 uint8_t present; 5243 uint8_t primaryChannel; 5244 uint8_t secondaryChannelOffset:2; 5245 uint8_t recommendedTxWidthSet:1; 5246 uint8_t rifsMode:1; 5247 uint8_t controlledAccessOnly:1; 5248 uint8_t serviceIntervalGranularity:3; 5249 uint16_t opMode:2; 5250 uint16_t nonGFDevicesPresent:1; 5251 uint16_t transmitBurstLimit:1; 5252 uint16_t obssNonHTStaPresent:1; 5253 uint16_t reserved:11; 5254 uint16_t basicSTBCMCS:7; 5255 uint16_t dualCTSProtection:1; 5256 uint16_t secondaryBeacon:1; 5257 uint16_t lsigTXOPProtectionFullSupport:1; 5258 uint16_t pcoActive:1; 5259 uint16_t pcoPhase:1; 5260 uint16_t reserved2:4; 5261 uint8_t basicMCSSet[16]; 5262 uint8_t num_rsvd; 5263 uint8_t rsvd[32]; 5264 } tDot11fIEHTInfo; 5265 5266 #define DOT11F_EID_HTINFO (61) 5267 5268 /* N.B. These #defines do *not* include the EID & length */ 5269 #define DOT11F_IE_HTINFO_MIN_LEN (22) 5270 5271 #define DOT11F_IE_HTINFO_MAX_LEN (54) 5272 5273 #ifdef __cplusplus 5274 extern "C" { 5275 #endif /* C++ */ 5276 __must_check uint32_t dot11f_unpack_ie_ht_info( 5277 tpAniSirGlobal, 5278 uint8_t *, 5279 uint8_t, 5280 tDot11fIEHTInfo*, 5281 bool); 5282 5283 uint32_t dot11f_pack_ie_ht_info( 5284 tpAniSirGlobal, 5285 tDot11fIEHTInfo *, 5286 uint8_t *, 5287 uint32_t, 5288 uint32_t*); 5289 5290 uint32_t dot11f_get_packed_ie_HTInfo( 5291 tpAniSirGlobal, 5292 tDot11fIEHTInfo *, 5293 uint32_t*); 5294 5295 #ifdef __cplusplus 5296 }; /* End extern "C". */ 5297 #endif /* C++ */ 5298 5299 /* EID 6 (0x06) */ 5300 typedef struct sDot11fIEIBSSParams { 5301 uint8_t present; 5302 uint16_t atim; 5303 } tDot11fIEIBSSParams; 5304 5305 #define DOT11F_EID_IBSSPARAMS (6) 5306 5307 /* N.B. These #defines do *not* include the EID & length */ 5308 #define DOT11F_IE_IBSSPARAMS_MIN_LEN (2) 5309 5310 #define DOT11F_IE_IBSSPARAMS_MAX_LEN (2) 5311 5312 #ifdef __cplusplus 5313 extern "C" { 5314 #endif /* C++ */ 5315 __must_check uint32_t dot11f_unpack_ie_ibss_params( 5316 tpAniSirGlobal, 5317 uint8_t *, 5318 uint8_t, 5319 tDot11fIEIBSSParams*, 5320 bool); 5321 5322 uint32_t dot11f_pack_ie_ibss_params( 5323 tpAniSirGlobal, 5324 tDot11fIEIBSSParams *, 5325 uint8_t *, 5326 uint32_t, 5327 uint32_t*); 5328 5329 uint32_t dot11f_get_packed_ie_IBSSParams( 5330 tpAniSirGlobal, 5331 tDot11fIEIBSSParams *, 5332 uint32_t*); 5333 5334 #ifdef __cplusplus 5335 }; /* End extern "C". */ 5336 #endif /* C++ */ 5337 5338 /* EID 101 (0x65) */ 5339 typedef struct sDot11fIELinkIdentifier { 5340 uint8_t present; 5341 uint8_t bssid[6]; 5342 uint8_t InitStaAddr[6]; 5343 uint8_t RespStaAddr[6]; 5344 } tDot11fIELinkIdentifier; 5345 5346 #define DOT11F_EID_LINKIDENTIFIER (101) 5347 5348 /* N.B. These #defines do *not* include the EID & length */ 5349 #define DOT11F_IE_LINKIDENTIFIER_MIN_LEN (18) 5350 5351 #define DOT11F_IE_LINKIDENTIFIER_MAX_LEN (18) 5352 5353 #ifdef __cplusplus 5354 extern "C" { 5355 #endif /* C++ */ 5356 __must_check uint32_t dot11f_unpack_ie_link_identifier( 5357 tpAniSirGlobal, 5358 uint8_t *, 5359 uint8_t, 5360 tDot11fIELinkIdentifier*, 5361 bool); 5362 5363 uint32_t dot11f_pack_ie_link_identifier( 5364 tpAniSirGlobal, 5365 tDot11fIELinkIdentifier *, 5366 uint8_t *, 5367 uint32_t, 5368 uint32_t*); 5369 5370 uint32_t dot11f_get_packed_ie_LinkIdentifier( 5371 tpAniSirGlobal, 5372 tDot11fIELinkIdentifier *, 5373 uint32_t*); 5374 5375 #ifdef __cplusplus 5376 }; /* End extern "C". */ 5377 #endif /* C++ */ 5378 5379 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x16} (Multi-IE) */ 5380 typedef struct sDot11fIEMBO_IE { 5381 uint8_t present; 5382 tDot11fTLVmbo_ap_cap mbo_ap_cap; 5383 tDot11fTLVnon_prefferd_chan_rep non_prefferd_chan_rep; 5384 tDot11fTLVcellular_data_cap cellular_data_cap; 5385 tDot11fTLVassoc_disallowed assoc_disallowed; 5386 tDot11fTLVcellular_data_con_pref cellular_data_con_pref; 5387 tDot11fTLVtransition_reason transition_reason; 5388 tDot11fTLVtransition_reject_reason transition_reject_reason; 5389 tDot11fTLVassoc_retry_delay assoc_retry_delay; 5390 tDot11fTLVoce_cap oce_cap; 5391 tDot11fTLVrssi_assoc_rej rssi_assoc_rej; 5392 tDot11fTLVreduced_wan_metrics reduced_wan_metrics; 5393 } tDot11fIEMBO_IE; 5394 5395 #define DOT11F_EID_MBO_IE (221) 5396 5397 /* N.B. These #defines do *not* include the EID & length */ 5398 #define DOT11F_IE_MBO_IE_MIN_LEN (4) 5399 5400 #define DOT11F_IE_MBO_IE_MAX_LEN (293) 5401 5402 #ifdef __cplusplus 5403 extern "C" { 5404 #endif /* C++ */ 5405 __must_check uint32_t dot11f_unpack_ie_MBO_IE( 5406 tpAniSirGlobal, 5407 uint8_t *, 5408 uint8_t, 5409 tDot11fIEMBO_IE*, 5410 bool); 5411 5412 uint32_t dot11f_pack_ie_MBO_IE( 5413 tpAniSirGlobal, 5414 tDot11fIEMBO_IE *, 5415 uint8_t *, 5416 uint32_t, 5417 uint32_t*); 5418 5419 uint32_t dot11f_get_packed_ie_MBO_IE( 5420 tpAniSirGlobal, 5421 tDot11fIEMBO_IE *, 5422 uint32_t*); 5423 5424 #ifdef __cplusplus 5425 }; /* End extern "C". */ 5426 #endif /* C++ */ 5427 5428 /* EID 39 (0x27) */ 5429 typedef struct sDot11fIEMeasurementReport { 5430 uint8_t present; 5431 uint8_t token; 5432 uint8_t late:1; 5433 uint8_t incapable:1; 5434 uint8_t refused:1; 5435 uint8_t unused:5; 5436 uint8_t type; 5437 union { 5438 struct { 5439 uint8_t channel; 5440 tDOT11F_U64 meas_start_time; 5441 uint16_t meas_duration; 5442 uint8_t bss:1; 5443 uint8_t ofdm_preamble:1; 5444 uint8_t unid_signal:1; 5445 uint8_t rader:1; 5446 uint8_t unmeasured:1; 5447 uint8_t unused:3; 5448 } Basic; /* type = 0 */ 5449 struct { 5450 uint8_t channel; 5451 tDOT11F_U64 meas_start_time; 5452 uint16_t meas_duration; 5453 uint8_t cca_busy_fraction; 5454 } CCA; /* type = 1 */ 5455 struct { 5456 uint8_t channel; 5457 tDOT11F_U64 meas_start_time; 5458 uint16_t meas_duration; 5459 uint8_t rpi0_density; 5460 uint8_t rpi1_density; 5461 uint8_t rpi2_density; 5462 uint8_t rpi3_density; 5463 uint8_t rpi4_density; 5464 uint8_t rpi5_density; 5465 uint8_t rpi6_density; 5466 uint8_t rpi7_density; 5467 } RPIHistogram; /* type = 2 */ 5468 struct { 5469 uint8_t regClass; 5470 uint8_t channel; 5471 tDOT11F_U64 meas_start_time; 5472 uint16_t meas_duration; 5473 uint8_t condensed_PHY:7; 5474 uint8_t reported_frame_type:1; 5475 uint8_t RCPI; 5476 uint8_t RSNI; 5477 uint8_t BSSID[6]; 5478 uint8_t antenna_id; 5479 uint32_t parent_TSF; 5480 tDot11fIEBeaconReportFrmBody BeaconReportFrmBody; 5481 tDot11fIEbeacon_report_frm_body_fragment_id beacon_report_frm_body_fragment_id; 5482 tDot11fIElast_beacon_report_indication last_beacon_report_indication; 5483 } Beacon; /* type = 5 */ 5484 } report; 5485 } tDot11fIEMeasurementReport; 5486 5487 #define DOT11F_EID_MEASUREMENTREPORT (39) 5488 5489 /* N.B. These #defines do *not* include the EID & length */ 5490 #define DOT11F_IE_MEASUREMENTREPORT_MIN_LEN (3) 5491 5492 #define DOT11F_IE_MEASUREMENTREPORT_MAX_LEN (29) 5493 5494 #ifdef __cplusplus 5495 extern "C" { 5496 #endif /* C++ */ 5497 __must_check uint32_t dot11f_unpack_ie_measurement_report( 5498 tpAniSirGlobal, 5499 uint8_t *, 5500 uint8_t, 5501 tDot11fIEMeasurementReport*, 5502 bool); 5503 5504 uint32_t dot11f_pack_ie_measurement_report( 5505 tpAniSirGlobal, 5506 tDot11fIEMeasurementReport *, 5507 uint8_t *, 5508 uint32_t, 5509 uint32_t*); 5510 5511 uint32_t dot11f_get_packed_ie_measurement_report( 5512 tpAniSirGlobal, 5513 tDot11fIEMeasurementReport *, 5514 uint32_t*); 5515 5516 #ifdef __cplusplus 5517 }; /* End extern "C". */ 5518 #endif /* C++ */ 5519 5520 /* EID 38 (0x26) */ 5521 typedef struct sDot11fIEMeasurementRequest { 5522 uint8_t present; 5523 uint8_t measurement_token; 5524 uint8_t parallel:1; 5525 uint8_t enable:1; 5526 uint8_t request:1; 5527 uint8_t report:1; 5528 uint8_t durationMandatory:1; 5529 uint8_t unused:3; 5530 uint8_t measurement_type; 5531 union { 5532 struct { 5533 uint8_t channel_no; 5534 uint8_t meas_start_time[8]; 5535 uint16_t meas_duration; 5536 } Basic; /* measurement_type = 0 */ 5537 struct { 5538 uint8_t channel_no; 5539 uint8_t meas_start_time[8]; 5540 uint16_t meas_duration; 5541 } CCA; /* measurement_type = 1 */ 5542 struct { 5543 uint8_t channel_no; 5544 uint8_t meas_start_time[8]; 5545 uint16_t meas_duration; 5546 } RPIHistogram; /* measurement_type = 2 */ 5547 struct { 5548 uint8_t regClass; 5549 uint8_t channel; 5550 uint16_t randomization; 5551 uint16_t meas_duration; 5552 uint8_t meas_mode; 5553 uint8_t BSSID[6]; 5554 tDot11fIESSID SSID; 5555 tDot11fIEBeaconReporting BeaconReporting; 5556 tDot11fIEBcnReportingDetail BcnReportingDetail; 5557 tDot11fIERequestedInfo RequestedInfo; 5558 uint16_t num_APChannelReport; 5559 tDot11fIEAPChannelReport APChannelReport[2]; 5560 tDot11fIElast_beacon_report_indication last_beacon_report_indication; 5561 } Beacon; /* measurement_type = 5 */ 5562 struct { 5563 uint8_t loc_subject; 5564 tDot11fIEazimuth_req azimuth_req; 5565 tDot11fIEreq_mac_addr req_mac_addr; 5566 tDot11fIEtgt_mac_addr tgt_mac_addr; 5567 tDot11fIEmax_age max_age; 5568 } lci; /* measurement_type = 8 */ 5569 struct { 5570 uint16_t random_interval; 5571 uint8_t min_ap_count; 5572 tDot11fIEneighbor_rpt neighbor_rpt; 5573 tDot11fIEmax_age max_age; 5574 } ftmrr; /* measurement_type = 16 */ 5575 } measurement_request; 5576 } tDot11fIEMeasurementRequest; 5577 5578 #define DOT11F_EID_MEASUREMENTREQUEST (38) 5579 5580 /* N.B. These #defines do *not* include the EID & length */ 5581 #define DOT11F_IE_MEASUREMENTREQUEST_MIN_LEN (4) 5582 5583 #define DOT11F_IE_MEASUREMENTREQUEST_MAX_LEN (16) 5584 5585 #ifdef __cplusplus 5586 extern "C" { 5587 #endif /* C++ */ 5588 __must_check uint32_t dot11f_unpack_ie_measurement_request( 5589 tpAniSirGlobal, 5590 uint8_t *, 5591 uint8_t, 5592 tDot11fIEMeasurementRequest*, 5593 bool); 5594 5595 uint32_t dot11f_pack_ie_measurement_request( 5596 tpAniSirGlobal, 5597 tDot11fIEMeasurementRequest *, 5598 uint8_t *, 5599 uint32_t, 5600 uint32_t*); 5601 5602 uint32_t dot11f_get_packed_ie_measurement_request( 5603 tpAniSirGlobal, 5604 tDot11fIEMeasurementRequest *, 5605 uint32_t*); 5606 5607 #ifdef __cplusplus 5608 }; /* End extern "C". */ 5609 #endif /* C++ */ 5610 5611 /* EID 54 (0x36) */ 5612 typedef struct sDot11fIEMobilityDomain { 5613 uint8_t present; 5614 uint16_t MDID; 5615 uint8_t overDSCap:1; 5616 uint8_t resourceReqCap:1; 5617 uint8_t reserved:6; 5618 } tDot11fIEMobilityDomain; 5619 5620 #define DOT11F_EID_MOBILITYDOMAIN (54) 5621 5622 /* N.B. These #defines do *not* include the EID & length */ 5623 #define DOT11F_IE_MOBILITYDOMAIN_MIN_LEN (3) 5624 5625 #define DOT11F_IE_MOBILITYDOMAIN_MAX_LEN (3) 5626 5627 #ifdef __cplusplus 5628 extern "C" { 5629 #endif /* C++ */ 5630 __must_check uint32_t dot11f_unpack_ie_mobility_domain( 5631 tpAniSirGlobal, 5632 uint8_t *, 5633 uint8_t, 5634 tDot11fIEMobilityDomain*, 5635 bool); 5636 5637 uint32_t dot11f_pack_ie_mobility_domain( 5638 tpAniSirGlobal, 5639 tDot11fIEMobilityDomain *, 5640 uint8_t *, 5641 uint32_t, 5642 uint32_t*); 5643 5644 uint32_t dot11f_get_packed_ie_MobilityDomain( 5645 tpAniSirGlobal, 5646 tDot11fIEMobilityDomain *, 5647 uint32_t*); 5648 5649 #ifdef __cplusplus 5650 }; /* End extern "C". */ 5651 #endif /* C++ */ 5652 5653 /* EID 52 (0x34) */ 5654 typedef struct sDot11fIENeighborReport { 5655 uint8_t present; 5656 uint8_t bssid[6]; 5657 uint8_t APReachability:2; 5658 uint8_t Security:1; 5659 uint8_t KeyScope:1; 5660 uint8_t SpecMgmtCap:1; 5661 uint8_t QosCap:1; 5662 uint8_t apsd:1; 5663 uint8_t rrm:1; 5664 uint8_t DelayedBA:1; 5665 uint8_t ImmBA:1; 5666 uint8_t MobilityDomain:1; 5667 uint8_t reserved:5; 5668 uint16_t reserved1; 5669 uint8_t regulatoryClass; 5670 uint8_t channel; 5671 uint8_t PhyType; 5672 tDot11fIETSFInfo TSFInfo; 5673 tDot11fIECondensedCountryStr CondensedCountryStr; 5674 tDot11fIEMeasurementPilot MeasurementPilot; 5675 tDot11fIERRMEnabledCap RRMEnabledCap; 5676 tDot11fIEMultiBssid MultiBssid; 5677 } tDot11fIENeighborReport; 5678 5679 #define DOT11F_EID_NEIGHBORREPORT (52) 5680 5681 /* N.B. These #defines do *not* include the EID & length */ 5682 #define DOT11F_IE_NEIGHBORREPORT_MIN_LEN (13) 5683 5684 #define DOT11F_IE_NEIGHBORREPORT_MAX_LEN (546) 5685 5686 #ifdef __cplusplus 5687 extern "C" { 5688 #endif /* C++ */ 5689 __must_check uint32_t dot11f_unpack_ie_neighbor_report( 5690 tpAniSirGlobal, 5691 uint8_t *, 5692 uint8_t, 5693 tDot11fIENeighborReport*, 5694 bool); 5695 5696 uint32_t dot11f_pack_ie_neighbor_report( 5697 tpAniSirGlobal, 5698 tDot11fIENeighborReport *, 5699 uint8_t *, 5700 uint32_t, 5701 uint32_t*); 5702 5703 uint32_t dot11f_get_packed_ie_neighbor_report( 5704 tpAniSirGlobal, 5705 tDot11fIENeighborReport *, 5706 uint32_t*); 5707 5708 #ifdef __cplusplus 5709 }; /* End extern "C". */ 5710 #endif /* C++ */ 5711 5712 /* EID 74 (0x4a) */ 5713 typedef struct sDot11fIEOBSSScanParameters { 5714 uint8_t present; 5715 uint16_t obssScanPassiveDwell; 5716 uint16_t obssScanActiveDwell; 5717 uint16_t bssChannelWidthTriggerScanInterval; 5718 uint16_t obssScanPassiveTotalPerChannel; 5719 uint16_t obssScanActiveTotalPerChannel; 5720 uint16_t bssWidthChannelTransitionDelayFactor; 5721 uint16_t obssScanActivityThreshold; 5722 } tDot11fIEOBSSScanParameters; 5723 5724 #define DOT11F_EID_OBSSSCANPARAMETERS (74) 5725 5726 /* N.B. These #defines do *not* include the EID & length */ 5727 #define DOT11F_IE_OBSSSCANPARAMETERS_MIN_LEN (14) 5728 5729 #define DOT11F_IE_OBSSSCANPARAMETERS_MAX_LEN (14) 5730 5731 #ifdef __cplusplus 5732 extern "C" { 5733 #endif /* C++ */ 5734 __must_check uint32_t dot11f_unpack_ie_obss_scan_parameters( 5735 tpAniSirGlobal, 5736 uint8_t *, 5737 uint8_t, 5738 tDot11fIEOBSSScanParameters*, 5739 bool); 5740 5741 uint32_t dot11f_pack_ie_obss_scan_parameters( 5742 tpAniSirGlobal, 5743 tDot11fIEOBSSScanParameters *, 5744 uint8_t *, 5745 uint32_t, 5746 uint32_t*); 5747 5748 uint32_t dot11f_get_packed_ie_OBSSScanParameters( 5749 tpAniSirGlobal, 5750 tDot11fIEOBSSScanParameters *, 5751 uint32_t*); 5752 5753 #ifdef __cplusplus 5754 }; /* End extern "C". */ 5755 #endif /* C++ */ 5756 5757 /* EID 199 (0xc7) */ 5758 typedef struct sDot11fIEOperatingMode { 5759 uint8_t present; 5760 uint8_t chanWidth:2; 5761 uint8_t reserved:2; 5762 uint8_t rxNSS:3; 5763 uint8_t rxNSSType:1; 5764 } tDot11fIEOperatingMode; 5765 5766 #define DOT11F_EID_OPERATINGMODE (199) 5767 5768 /* N.B. These #defines do *not* include the EID & length */ 5769 #define DOT11F_IE_OPERATINGMODE_MIN_LEN (1) 5770 5771 #define DOT11F_IE_OPERATINGMODE_MAX_LEN (1) 5772 5773 #ifdef __cplusplus 5774 extern "C" { 5775 #endif /* C++ */ 5776 __must_check uint32_t dot11f_unpack_ie_operating_mode( 5777 tpAniSirGlobal, 5778 uint8_t *, 5779 uint8_t, 5780 tDot11fIEOperatingMode*, 5781 bool); 5782 5783 uint32_t dot11f_pack_ie_operating_mode( 5784 tpAniSirGlobal, 5785 tDot11fIEOperatingMode *, 5786 uint8_t *, 5787 uint32_t, 5788 uint32_t*); 5789 5790 uint32_t dot11f_get_packed_ie_OperatingMode( 5791 tpAniSirGlobal, 5792 tDot11fIEOperatingMode *, 5793 uint32_t*); 5794 5795 #ifdef __cplusplus 5796 }; /* End extern "C". */ 5797 #endif /* C++ */ 5798 5799 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 5800 typedef struct sDot11fIEP2PAssocReq { 5801 uint8_t present; 5802 tDot11fTLVP2PCapability P2PCapability; 5803 tDot11fTLVExtendedListenTiming ExtendedListenTiming; 5804 tDot11fTLVP2PDeviceInfo P2PDeviceInfo; 5805 } tDot11fIEP2PAssocReq; 5806 5807 #define DOT11F_EID_P2PASSOCREQ (221) 5808 5809 /* N.B. These #defines do *not* include the EID & length */ 5810 #define DOT11F_IE_P2PASSOCREQ_MIN_LEN (4) 5811 5812 #define DOT11F_IE_P2PASSOCREQ_MAX_LEN (71) 5813 5814 #ifdef __cplusplus 5815 extern "C" { 5816 #endif /* C++ */ 5817 __must_check uint32_t dot11f_unpack_ie_p2_p_assoc_req( 5818 tpAniSirGlobal, 5819 uint8_t *, 5820 uint8_t, 5821 tDot11fIEP2PAssocReq*, 5822 bool); 5823 5824 uint32_t dot11f_pack_ie_p2_p_assoc_req( 5825 tpAniSirGlobal, 5826 tDot11fIEP2PAssocReq *, 5827 uint8_t *, 5828 uint32_t, 5829 uint32_t*); 5830 5831 uint32_t dot11f_get_packed_iep2_p_assoc_req( 5832 tpAniSirGlobal, 5833 tDot11fIEP2PAssocReq *, 5834 uint32_t*); 5835 5836 #ifdef __cplusplus 5837 }; /* End extern "C". */ 5838 #endif /* C++ */ 5839 5840 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 5841 typedef struct sDot11fIEP2PAssocRes { 5842 uint8_t present; 5843 tDot11fTLVP2PStatus P2PStatus; 5844 tDot11fTLVExtendedListenTiming ExtendedListenTiming; 5845 } tDot11fIEP2PAssocRes; 5846 5847 #define DOT11F_EID_P2PASSOCRES (221) 5848 5849 /* N.B. These #defines do *not* include the EID & length */ 5850 #define DOT11F_IE_P2PASSOCRES_MIN_LEN (4) 5851 5852 #define DOT11F_IE_P2PASSOCRES_MAX_LEN (15) 5853 5854 #ifdef __cplusplus 5855 extern "C" { 5856 #endif /* C++ */ 5857 __must_check uint32_t dot11f_unpack_ie_p2_p_assoc_res( 5858 tpAniSirGlobal, 5859 uint8_t *, 5860 uint8_t, 5861 tDot11fIEP2PAssocRes*, 5862 bool); 5863 5864 uint32_t dot11f_pack_ie_p2_p_assoc_res( 5865 tpAniSirGlobal, 5866 tDot11fIEP2PAssocRes *, 5867 uint8_t *, 5868 uint32_t, 5869 uint32_t*); 5870 5871 uint32_t dot11f_get_packed_iep2_p_assoc_res( 5872 tpAniSirGlobal, 5873 tDot11fIEP2PAssocRes *, 5874 uint32_t*); 5875 5876 #ifdef __cplusplus 5877 }; /* End extern "C". */ 5878 #endif /* C++ */ 5879 5880 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 5881 typedef struct sDot11fIEP2PBeacon { 5882 uint8_t present; 5883 tDot11fTLVP2PCapability P2PCapability; 5884 tDot11fTLVP2PDeviceId P2PDeviceId; 5885 tDot11fTLVNoticeOfAbsence NoticeOfAbsence; 5886 } tDot11fIEP2PBeacon; 5887 5888 #define DOT11F_EID_P2PBEACON (221) 5889 5890 /* N.B. These #defines do *not* include the EID & length */ 5891 #define DOT11F_IE_P2PBEACON_MIN_LEN (4) 5892 5893 #define DOT11F_IE_P2PBEACON_MAX_LEN (59) 5894 5895 #ifdef __cplusplus 5896 extern "C" { 5897 #endif /* C++ */ 5898 __must_check uint32_t dot11f_unpack_ie_p2_p_beacon( 5899 tpAniSirGlobal, 5900 uint8_t *, 5901 uint8_t, 5902 tDot11fIEP2PBeacon*, 5903 bool); 5904 5905 uint32_t dot11f_pack_ie_p2_p_beacon( 5906 tpAniSirGlobal, 5907 tDot11fIEP2PBeacon *, 5908 uint8_t *, 5909 uint32_t, 5910 uint32_t*); 5911 5912 uint32_t dot11f_get_packed_iep2_p_beacon( 5913 tpAniSirGlobal, 5914 tDot11fIEP2PBeacon *, 5915 uint32_t*); 5916 5917 #ifdef __cplusplus 5918 }; /* End extern "C". */ 5919 #endif /* C++ */ 5920 5921 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 5922 typedef struct sDot11fIEP2PBeaconProbeRes { 5923 uint8_t present; 5924 tDot11fTLVP2PCapability P2PCapability; 5925 tDot11fTLVP2PDeviceId P2PDeviceId; 5926 tDot11fTLVExtendedListenTiming ExtendedListenTiming; 5927 tDot11fTLVNoticeOfAbsence NoticeOfAbsence; 5928 tDot11fTLVP2PDeviceInfo P2PDeviceInfo; 5929 tDot11fTLVP2PGroupInfo P2PGroupInfo; 5930 } tDot11fIEP2PBeaconProbeRes; 5931 5932 #define DOT11F_EID_P2PBEACONPROBERES (221) 5933 5934 /* N.B. These #defines do *not* include the EID & length */ 5935 #define DOT11F_IE_P2PBEACONPROBERES_MIN_LEN (4) 5936 5937 #define DOT11F_IE_P2PBEACONPROBERES_MAX_LEN (1148) 5938 5939 #ifdef __cplusplus 5940 extern "C" { 5941 #endif /* C++ */ 5942 __must_check uint32_t dot11f_unpack_ie_p2_p_beacon_probe_res( 5943 tpAniSirGlobal, 5944 uint8_t *, 5945 uint8_t, 5946 tDot11fIEP2PBeaconProbeRes*, 5947 bool); 5948 5949 uint32_t dot11f_pack_ie_p2_p_beacon_probe_res( 5950 tpAniSirGlobal, 5951 tDot11fIEP2PBeaconProbeRes *, 5952 uint8_t *, 5953 uint32_t, 5954 uint32_t*); 5955 5956 uint32_t dot11f_get_packed_iep2_p_beacon_probe_res( 5957 tpAniSirGlobal, 5958 tDot11fIEP2PBeaconProbeRes *, 5959 uint32_t*); 5960 5961 #ifdef __cplusplus 5962 }; /* End extern "C". */ 5963 #endif /* C++ */ 5964 5965 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 5966 typedef struct sDot11fIEP2PDeAuth { 5967 uint8_t present; 5968 tDot11fTLVMinorReasonCode MinorReasonCode; 5969 } tDot11fIEP2PDeAuth; 5970 5971 #define DOT11F_EID_P2PDEAUTH (221) 5972 5973 /* N.B. These #defines do *not* include the EID & length */ 5974 #define DOT11F_IE_P2PDEAUTH_MIN_LEN (4) 5975 5976 #define DOT11F_IE_P2PDEAUTH_MAX_LEN (8) 5977 5978 #ifdef __cplusplus 5979 extern "C" { 5980 #endif /* C++ */ 5981 __must_check uint32_t dot11f_unpack_ie_p2_p_de_auth( 5982 tpAniSirGlobal, 5983 uint8_t *, 5984 uint8_t, 5985 tDot11fIEP2PDeAuth*, 5986 bool); 5987 5988 uint32_t dot11f_pack_ie_p2_p_de_auth( 5989 tpAniSirGlobal, 5990 tDot11fIEP2PDeAuth *, 5991 uint8_t *, 5992 uint32_t, 5993 uint32_t*); 5994 5995 uint32_t dot11f_get_packed_iep2_p_de_auth( 5996 tpAniSirGlobal, 5997 tDot11fIEP2PDeAuth *, 5998 uint32_t*); 5999 6000 #ifdef __cplusplus 6001 }; /* End extern "C". */ 6002 #endif /* C++ */ 6003 6004 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 6005 typedef struct sDot11fIEP2PDisAssoc { 6006 uint8_t present; 6007 tDot11fTLVMinorReasonCode MinorReasonCode; 6008 } tDot11fIEP2PDisAssoc; 6009 6010 #define DOT11F_EID_P2PDISASSOC (221) 6011 6012 /* N.B. These #defines do *not* include the EID & length */ 6013 #define DOT11F_IE_P2PDISASSOC_MIN_LEN (4) 6014 6015 #define DOT11F_IE_P2PDISASSOC_MAX_LEN (8) 6016 6017 #ifdef __cplusplus 6018 extern "C" { 6019 #endif /* C++ */ 6020 __must_check uint32_t dot11f_unpack_ie_p2_p_dis_assoc( 6021 tpAniSirGlobal, 6022 uint8_t *, 6023 uint8_t, 6024 tDot11fIEP2PDisAssoc*, 6025 bool); 6026 6027 uint32_t dot11f_pack_ie_p2_p_dis_assoc( 6028 tpAniSirGlobal, 6029 tDot11fIEP2PDisAssoc *, 6030 uint8_t *, 6031 uint32_t, 6032 uint32_t*); 6033 6034 uint32_t dot11f_get_packed_iep2_p_dis_assoc( 6035 tpAniSirGlobal, 6036 tDot11fIEP2PDisAssoc *, 6037 uint32_t*); 6038 6039 #ifdef __cplusplus 6040 }; /* End extern "C". */ 6041 #endif /* C++ */ 6042 6043 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} */ 6044 typedef struct sDot11fIEP2PIEOpaque { 6045 uint8_t present; 6046 uint8_t num_data; 6047 uint8_t data[249]; 6048 } tDot11fIEP2PIEOpaque; 6049 6050 #define DOT11F_EID_P2PIEOPAQUE (221) 6051 6052 /* N.B. These #defines do *not* include the EID & length */ 6053 #define DOT11F_IE_P2PIEOPAQUE_MIN_LEN (6) 6054 6055 #define DOT11F_IE_P2PIEOPAQUE_MAX_LEN (253) 6056 6057 #ifdef __cplusplus 6058 extern "C" { 6059 #endif /* C++ */ 6060 __must_check uint32_t dot11f_unpack_ie_p2_pie_opaque( 6061 tpAniSirGlobal, 6062 uint8_t *, 6063 uint8_t, 6064 tDot11fIEP2PIEOpaque*, 6065 bool); 6066 6067 uint32_t dot11f_pack_ie_p2_pie_opaque( 6068 tpAniSirGlobal, 6069 tDot11fIEP2PIEOpaque *, 6070 uint8_t *, 6071 uint32_t, 6072 uint32_t*); 6073 6074 uint32_t dot11f_get_packed_ie_P2PIEOpaque( 6075 tpAniSirGlobal, 6076 tDot11fIEP2PIEOpaque *, 6077 uint32_t*); 6078 6079 #ifdef __cplusplus 6080 }; /* End extern "C". */ 6081 #endif /* C++ */ 6082 6083 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 6084 typedef struct sDot11fIEP2PProbeReq { 6085 uint8_t present; 6086 tDot11fTLVP2PCapability P2PCapability; 6087 tDot11fTLVP2PDeviceId P2PDeviceId; 6088 tDot11fTLVListenChannel ListenChannel; 6089 tDot11fTLVExtendedListenTiming ExtendedListenTiming; 6090 tDot11fTLVOperatingChannel OperatingChannel; 6091 } tDot11fIEP2PProbeReq; 6092 6093 #define DOT11F_EID_P2PPROBEREQ (221) 6094 6095 /* N.B. These #defines do *not* include the EID & length */ 6096 #define DOT11F_IE_P2PPROBEREQ_MIN_LEN (4) 6097 6098 #define DOT11F_IE_P2PPROBEREQ_MAX_LEN (41) 6099 6100 #ifdef __cplusplus 6101 extern "C" { 6102 #endif /* C++ */ 6103 __must_check uint32_t dot11f_unpack_ie_p2_p_probe_req( 6104 tpAniSirGlobal, 6105 uint8_t *, 6106 uint8_t, 6107 tDot11fIEP2PProbeReq*, 6108 bool); 6109 6110 uint32_t dot11f_pack_ie_p2_p_probe_req( 6111 tpAniSirGlobal, 6112 tDot11fIEP2PProbeReq *, 6113 uint8_t *, 6114 uint32_t, 6115 uint32_t*); 6116 6117 uint32_t dot11f_get_packed_iep2_p_probe_req( 6118 tpAniSirGlobal, 6119 tDot11fIEP2PProbeReq *, 6120 uint32_t*); 6121 6122 #ifdef __cplusplus 6123 }; /* End extern "C". */ 6124 #endif /* C++ */ 6125 6126 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 6127 typedef struct sDot11fIEP2PProbeRes { 6128 uint8_t present; 6129 tDot11fTLVP2PCapability P2PCapability; 6130 tDot11fTLVExtendedListenTiming ExtendedListenTiming; 6131 tDot11fTLVNoticeOfAbsence NoticeOfAbsence; 6132 tDot11fTLVP2PDeviceInfo P2PDeviceInfo; 6133 tDot11fTLVP2PGroupInfo P2PGroupInfo; 6134 } tDot11fIEP2PProbeRes; 6135 6136 #define DOT11F_EID_P2PPROBERES (221) 6137 6138 /* N.B. These #defines do *not* include the EID & length */ 6139 #define DOT11F_IE_P2PPROBERES_MIN_LEN (4) 6140 6141 #define DOT11F_IE_P2PPROBERES_MAX_LEN (1139) 6142 6143 #ifdef __cplusplus 6144 extern "C" { 6145 #endif /* C++ */ 6146 __must_check uint32_t dot11f_unpack_ie_p2_p_probe_res( 6147 tpAniSirGlobal, 6148 uint8_t *, 6149 uint8_t, 6150 tDot11fIEP2PProbeRes*, 6151 bool); 6152 6153 uint32_t dot11f_pack_ie_p2_p_probe_res( 6154 tpAniSirGlobal, 6155 tDot11fIEP2PProbeRes *, 6156 uint8_t *, 6157 uint32_t, 6158 uint32_t*); 6159 6160 uint32_t dot11f_get_packed_iep2_p_probe_res( 6161 tpAniSirGlobal, 6162 tDot11fIEP2PProbeRes *, 6163 uint32_t*); 6164 6165 #ifdef __cplusplus 6166 }; /* End extern "C". */ 6167 #endif /* C++ */ 6168 6169 /* EID 105 (0x69) */ 6170 typedef struct sDot11fIEPTIControl { 6171 uint8_t present; 6172 uint8_t tid; 6173 uint16_t sequence_control; 6174 } tDot11fIEPTIControl; 6175 6176 #define DOT11F_EID_PTICONTROL (105) 6177 6178 /* N.B. These #defines do *not* include the EID & length */ 6179 #define DOT11F_IE_PTICONTROL_MIN_LEN (3) 6180 6181 #define DOT11F_IE_PTICONTROL_MAX_LEN (3) 6182 6183 #ifdef __cplusplus 6184 extern "C" { 6185 #endif /* C++ */ 6186 __must_check uint32_t dot11f_unpack_ie_pti_control( 6187 tpAniSirGlobal, 6188 uint8_t *, 6189 uint8_t, 6190 tDot11fIEPTIControl*, 6191 bool); 6192 6193 uint32_t dot11f_pack_ie_pti_control( 6194 tpAniSirGlobal, 6195 tDot11fIEPTIControl *, 6196 uint8_t *, 6197 uint32_t, 6198 uint32_t*); 6199 6200 uint32_t dot11f_get_packed_ie_PTIControl( 6201 tpAniSirGlobal, 6202 tDot11fIEPTIControl *, 6203 uint32_t*); 6204 6205 #ifdef __cplusplus 6206 }; /* End extern "C". */ 6207 #endif /* C++ */ 6208 6209 /* EID 106 (0x6a) */ 6210 typedef struct sDot11fIEPUBufferStatus { 6211 uint8_t present; 6212 uint8_t ac_bk_traffic_aval:1; 6213 uint8_t ac_be_traffic_aval:1; 6214 uint8_t ac_vi_traffic_aval:1; 6215 uint8_t ac_vo_traffic_aval:1; 6216 uint8_t reserved:4; 6217 } tDot11fIEPUBufferStatus; 6218 6219 #define DOT11F_EID_PUBUFFERSTATUS (106) 6220 6221 /* N.B. These #defines do *not* include the EID & length */ 6222 #define DOT11F_IE_PUBUFFERSTATUS_MIN_LEN (1) 6223 6224 #define DOT11F_IE_PUBUFFERSTATUS_MAX_LEN (1) 6225 6226 #ifdef __cplusplus 6227 extern "C" { 6228 #endif /* C++ */ 6229 __must_check uint32_t dot11f_unpack_ie_pu_buffer_status( 6230 tpAniSirGlobal, 6231 uint8_t *, 6232 uint8_t, 6233 tDot11fIEPUBufferStatus*, 6234 bool); 6235 6236 uint32_t dot11f_pack_ie_pu_buffer_status( 6237 tpAniSirGlobal, 6238 tDot11fIEPUBufferStatus *, 6239 uint8_t *, 6240 uint32_t, 6241 uint32_t*); 6242 6243 uint32_t dot11f_get_packed_ie_PUBufferStatus( 6244 tpAniSirGlobal, 6245 tDot11fIEPUBufferStatus *, 6246 uint32_t*); 6247 6248 #ifdef __cplusplus 6249 }; /* End extern "C". */ 6250 #endif /* C++ */ 6251 6252 /* EID 33 (0x21) */ 6253 typedef struct sDot11fIEPowerCaps { 6254 uint8_t present; 6255 uint8_t minTxPower; 6256 uint8_t maxTxPower; 6257 } tDot11fIEPowerCaps; 6258 6259 #define DOT11F_EID_POWERCAPS (33) 6260 6261 /* N.B. These #defines do *not* include the EID & length */ 6262 #define DOT11F_IE_POWERCAPS_MIN_LEN (2) 6263 6264 #define DOT11F_IE_POWERCAPS_MAX_LEN (2) 6265 6266 #ifdef __cplusplus 6267 extern "C" { 6268 #endif /* C++ */ 6269 __must_check uint32_t dot11f_unpack_ie_power_caps( 6270 tpAniSirGlobal, 6271 uint8_t *, 6272 uint8_t, 6273 tDot11fIEPowerCaps*, 6274 bool); 6275 6276 uint32_t dot11f_pack_ie_power_caps( 6277 tpAniSirGlobal, 6278 tDot11fIEPowerCaps *, 6279 uint8_t *, 6280 uint32_t, 6281 uint32_t*); 6282 6283 uint32_t dot11f_get_packed_ie_PowerCaps( 6284 tpAniSirGlobal, 6285 tDot11fIEPowerCaps *, 6286 uint32_t*); 6287 6288 #ifdef __cplusplus 6289 }; /* End extern "C". */ 6290 #endif /* C++ */ 6291 6292 /* EID 32 (0x20) */ 6293 typedef struct sDot11fIEPowerConstraints { 6294 uint8_t present; 6295 uint8_t localPowerConstraints; 6296 } tDot11fIEPowerConstraints; 6297 6298 #define DOT11F_EID_POWERCONSTRAINTS (32) 6299 6300 /* N.B. These #defines do *not* include the EID & length */ 6301 #define DOT11F_IE_POWERCONSTRAINTS_MIN_LEN (1) 6302 6303 #define DOT11F_IE_POWERCONSTRAINTS_MAX_LEN (1) 6304 6305 #ifdef __cplusplus 6306 extern "C" { 6307 #endif /* C++ */ 6308 __must_check uint32_t dot11f_unpack_ie_power_constraints( 6309 tpAniSirGlobal, 6310 uint8_t *, 6311 uint8_t, 6312 tDot11fIEPowerConstraints*, 6313 bool); 6314 6315 uint32_t dot11f_pack_ie_power_constraints( 6316 tpAniSirGlobal, 6317 tDot11fIEPowerConstraints *, 6318 uint8_t *, 6319 uint32_t, 6320 uint32_t*); 6321 6322 uint32_t dot11f_get_packed_ie_PowerConstraints( 6323 tpAniSirGlobal, 6324 tDot11fIEPowerConstraints *, 6325 uint32_t*); 6326 6327 #ifdef __cplusplus 6328 }; /* End extern "C". */ 6329 #endif /* C++ */ 6330 6331 /* EID 11 (0x0b) */ 6332 typedef struct sDot11fIEQBSSLoad { 6333 uint8_t present; 6334 uint16_t stacount; 6335 uint8_t chautil; 6336 uint16_t avail; 6337 } tDot11fIEQBSSLoad; 6338 6339 #define DOT11F_EID_QBSSLOAD (11) 6340 6341 /* N.B. These #defines do *not* include the EID & length */ 6342 #define DOT11F_IE_QBSSLOAD_MIN_LEN (5) 6343 6344 #define DOT11F_IE_QBSSLOAD_MAX_LEN (5) 6345 6346 #ifdef __cplusplus 6347 extern "C" { 6348 #endif /* C++ */ 6349 __must_check uint32_t dot11f_unpack_ie_qbss_load( 6350 tpAniSirGlobal, 6351 uint8_t *, 6352 uint8_t, 6353 tDot11fIEQBSSLoad*, 6354 bool); 6355 6356 uint32_t dot11f_pack_ie_qbss_load( 6357 tpAniSirGlobal, 6358 tDot11fIEQBSSLoad *, 6359 uint8_t *, 6360 uint32_t, 6361 uint32_t*); 6362 6363 uint32_t dot11f_get_packed_ie_QBSSLoad( 6364 tpAniSirGlobal, 6365 tDot11fIEQBSSLoad *, 6366 uint32_t*); 6367 6368 #ifdef __cplusplus 6369 }; /* End extern "C". */ 6370 #endif /* C++ */ 6371 6372 /* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} */ 6373 typedef struct sDot11fIEQCN_IE { 6374 uint8_t present; 6375 uint8_t version[4]; 6376 } tDot11fIEQCN_IE; 6377 6378 #define DOT11F_EID_QCN_IE (221) 6379 6380 /* N.B. These #defines do *not* include the EID & length */ 6381 #define DOT11F_IE_QCN_IE_MIN_LEN (8) 6382 6383 #define DOT11F_IE_QCN_IE_MAX_LEN (8) 6384 6385 #ifdef __cplusplus 6386 extern "C" { 6387 #endif /* C++ */ 6388 __must_check uint32_t dot11f_unpack_ie_QCN_IE( 6389 tpAniSirGlobal, 6390 uint8_t *, 6391 uint8_t, 6392 tDot11fIEQCN_IE*, 6393 bool); 6394 6395 uint32_t dot11f_pack_ie_QCN_IE( 6396 tpAniSirGlobal, 6397 tDot11fIEQCN_IE *, 6398 uint8_t *, 6399 uint32_t, 6400 uint32_t*); 6401 6402 uint32_t dot11f_get_packed_ie_QCN_IE( 6403 tpAniSirGlobal, 6404 tDot11fIEQCN_IE *, 6405 uint32_t*); 6406 6407 #ifdef __cplusplus 6408 }; /* End extern "C". */ 6409 #endif /* C++ */ 6410 6411 /* EID 221 (0xdd) {OUI 0x00, 0xa0, 0xc6} */ 6412 typedef struct sDot11fIEQComVendorIE { 6413 uint8_t present; 6414 uint8_t type; 6415 uint8_t channel; 6416 } tDot11fIEQComVendorIE; 6417 6418 #define DOT11F_EID_QCOMVENDORIE (221) 6419 6420 /* N.B. These #defines do *not* include the EID & length */ 6421 #define DOT11F_IE_QCOMVENDORIE_MIN_LEN (5) 6422 6423 #define DOT11F_IE_QCOMVENDORIE_MAX_LEN (5) 6424 6425 #ifdef __cplusplus 6426 extern "C" { 6427 #endif /* C++ */ 6428 __must_check uint32_t dot11f_unpack_ie_QComVendorIE( 6429 tpAniSirGlobal, 6430 uint8_t *, 6431 uint8_t, 6432 tDot11fIEQComVendorIE*, 6433 bool); 6434 6435 uint32_t dot11f_pack_ie_QComVendorIE( 6436 tpAniSirGlobal, 6437 tDot11fIEQComVendorIE *, 6438 uint8_t *, 6439 uint32_t, 6440 uint32_t*); 6441 6442 uint32_t dot11f_get_packed_ie_QComVendorIE( 6443 tpAniSirGlobal, 6444 tDot11fIEQComVendorIE *, 6445 uint32_t*); 6446 6447 #ifdef __cplusplus 6448 }; /* End extern "C". */ 6449 #endif /* C++ */ 6450 6451 /* EID 46 (0x2e) */ 6452 typedef struct sDot11fIEQOSCapsAp { 6453 uint8_t present; 6454 uint8_t count:4; 6455 uint8_t qack:1; 6456 uint8_t qreq:1; 6457 uint8_t txopreq:1; 6458 uint8_t reserved:1; 6459 } tDot11fIEQOSCapsAp; 6460 6461 #define DOT11F_EID_QOSCAPSAP (46) 6462 6463 /* N.B. These #defines do *not* include the EID & length */ 6464 #define DOT11F_IE_QOSCAPSAP_MIN_LEN (1) 6465 6466 #define DOT11F_IE_QOSCAPSAP_MAX_LEN (1) 6467 6468 #ifdef __cplusplus 6469 extern "C" { 6470 #endif /* C++ */ 6471 __must_check uint32_t dot11f_unpack_ie_qos_caps_ap( 6472 tpAniSirGlobal, 6473 uint8_t *, 6474 uint8_t, 6475 tDot11fIEQOSCapsAp*, 6476 bool); 6477 6478 uint32_t dot11f_pack_ie_qos_caps_ap( 6479 tpAniSirGlobal, 6480 tDot11fIEQOSCapsAp *, 6481 uint8_t *, 6482 uint32_t, 6483 uint32_t*); 6484 6485 uint32_t dot11f_get_packed_ie_QOSCapsAp( 6486 tpAniSirGlobal, 6487 tDot11fIEQOSCapsAp *, 6488 uint32_t*); 6489 6490 #ifdef __cplusplus 6491 }; /* End extern "C". */ 6492 #endif /* C++ */ 6493 6494 /* EID 46 (0x2e) */ 6495 typedef struct sDot11fIEQOSCapsStation { 6496 uint8_t present; 6497 uint8_t acvo_uapsd:1; 6498 uint8_t acvi_uapsd:1; 6499 uint8_t acbk_uapsd:1; 6500 uint8_t acbe_uapsd:1; 6501 uint8_t qack:1; 6502 uint8_t max_sp_length:2; 6503 uint8_t more_data_ack:1; 6504 } tDot11fIEQOSCapsStation; 6505 6506 #define DOT11F_EID_QOSCAPSSTATION (46) 6507 6508 /* N.B. These #defines do *not* include the EID & length */ 6509 #define DOT11F_IE_QOSCAPSSTATION_MIN_LEN (1) 6510 6511 #define DOT11F_IE_QOSCAPSSTATION_MAX_LEN (1) 6512 6513 #ifdef __cplusplus 6514 extern "C" { 6515 #endif /* C++ */ 6516 __must_check uint32_t dot11f_unpack_ie_qos_caps_station( 6517 tpAniSirGlobal, 6518 uint8_t *, 6519 uint8_t, 6520 tDot11fIEQOSCapsStation*, 6521 bool); 6522 6523 uint32_t dot11f_pack_ie_qos_caps_station( 6524 tpAniSirGlobal, 6525 tDot11fIEQOSCapsStation *, 6526 uint8_t *, 6527 uint32_t, 6528 uint32_t*); 6529 6530 uint32_t dot11f_get_packed_ie_QOSCapsStation( 6531 tpAniSirGlobal, 6532 tDot11fIEQOSCapsStation *, 6533 uint32_t*); 6534 6535 #ifdef __cplusplus 6536 }; /* End extern "C". */ 6537 #endif /* C++ */ 6538 6539 /* EID 110 (0x6e) */ 6540 typedef struct sDot11fIEQosMapSet { 6541 uint8_t present; 6542 uint8_t num_dscp_exceptions; 6543 uint8_t dscp_exceptions[60]; 6544 } tDot11fIEQosMapSet; 6545 6546 #define DOT11F_EID_QOSMAPSET (110) 6547 6548 /* N.B. These #defines do *not* include the EID & length */ 6549 #define DOT11F_IE_QOSMAPSET_MIN_LEN (0) 6550 6551 #define DOT11F_IE_QOSMAPSET_MAX_LEN (60) 6552 6553 #ifdef __cplusplus 6554 extern "C" { 6555 #endif /* C++ */ 6556 __must_check uint32_t dot11f_unpack_ie_qos_map_set( 6557 tpAniSirGlobal, 6558 uint8_t *, 6559 uint8_t, 6560 tDot11fIEQosMapSet*, 6561 bool); 6562 6563 uint32_t dot11f_pack_ie_qos_map_set( 6564 tpAniSirGlobal, 6565 tDot11fIEQosMapSet *, 6566 uint8_t *, 6567 uint32_t, 6568 uint32_t*); 6569 6570 uint32_t dot11f_get_packed_ie_QosMapSet( 6571 tpAniSirGlobal, 6572 tDot11fIEQosMapSet *, 6573 uint32_t*); 6574 6575 #ifdef __cplusplus 6576 }; /* End extern "C". */ 6577 #endif /* C++ */ 6578 6579 /* EID 40 (0x28) */ 6580 typedef struct sDot11fIEQuiet { 6581 uint8_t present; 6582 uint8_t count; 6583 uint8_t period; 6584 uint16_t duration; 6585 uint16_t offset; 6586 } tDot11fIEQuiet; 6587 6588 #define DOT11F_EID_QUIET (40) 6589 6590 /* N.B. These #defines do *not* include the EID & length */ 6591 #define DOT11F_IE_QUIET_MIN_LEN (6) 6592 6593 #define DOT11F_IE_QUIET_MAX_LEN (6) 6594 6595 #ifdef __cplusplus 6596 extern "C" { 6597 #endif /* C++ */ 6598 __must_check uint32_t dot11f_unpack_ie_quiet( 6599 tpAniSirGlobal, 6600 uint8_t *, 6601 uint8_t, 6602 tDot11fIEQuiet*, 6603 bool); 6604 6605 uint32_t dot11f_pack_ie_quiet( 6606 tpAniSirGlobal, 6607 tDot11fIEQuiet *, 6608 uint8_t *, 6609 uint32_t, 6610 uint32_t*); 6611 6612 uint32_t dot11f_get_packed_ie_Quiet( 6613 tpAniSirGlobal, 6614 tDot11fIEQuiet *, 6615 uint32_t*); 6616 6617 #ifdef __cplusplus 6618 }; /* End extern "C". */ 6619 #endif /* C++ */ 6620 6621 /* EID 53 (0x35) */ 6622 typedef struct sDot11fIERCPIIE { 6623 uint8_t present; 6624 uint8_t rcpi; 6625 } tDot11fIERCPIIE; 6626 6627 #define DOT11F_EID_RCPIIE (53) 6628 6629 /* N.B. These #defines do *not* include the EID & length */ 6630 #define DOT11F_IE_RCPIIE_MIN_LEN (1) 6631 6632 #define DOT11F_IE_RCPIIE_MAX_LEN (1) 6633 6634 #ifdef __cplusplus 6635 extern "C" { 6636 #endif /* C++ */ 6637 __must_check uint32_t dot11f_unpack_ie_rcpiie( 6638 tpAniSirGlobal, 6639 uint8_t *, 6640 uint8_t, 6641 tDot11fIERCPIIE*, 6642 bool); 6643 6644 uint32_t dot11f_pack_ie_rcpiie( 6645 tpAniSirGlobal, 6646 tDot11fIERCPIIE *, 6647 uint8_t *, 6648 uint32_t, 6649 uint32_t*); 6650 6651 uint32_t dot11f_get_packed_ie_RCPIIE( 6652 tpAniSirGlobal, 6653 tDot11fIERCPIIE *, 6654 uint32_t*); 6655 6656 #ifdef __cplusplus 6657 }; /* End extern "C". */ 6658 #endif /* C++ */ 6659 6660 /* EID 57 (0x39) */ 6661 typedef struct sDot11fIERICDataDesc { 6662 uint8_t present; 6663 tDot11fIERICData RICData; 6664 tDot11fIERICDescriptor RICDescriptor; 6665 tDot11fIETSPEC TSPEC; 6666 uint16_t num_TCLAS; 6667 tDot11fIETCLAS TCLAS[2]; 6668 tDot11fIETCLASSPROC TCLASSPROC; 6669 tDot11fIETSDelay TSDelay; 6670 tDot11fIESchedule Schedule; 6671 tDot11fIEWMMTSPEC WMMTSPEC; 6672 uint16_t num_WMMTCLAS; 6673 tDot11fIEWMMTCLAS WMMTCLAS[2]; 6674 tDot11fIEWMMTCLASPROC WMMTCLASPROC; 6675 tDot11fIEWMMTSDelay WMMTSDelay; 6676 tDot11fIEWMMSchedule WMMSchedule; 6677 } tDot11fIERICDataDesc; 6678 6679 #define DOT11F_EID_RICDATADESC (57) 6680 6681 /* N.B. These #defines do *not* include the EID & length */ 6682 #define DOT11F_IE_RICDATADESC_MIN_LEN (0) 6683 6684 #define DOT11F_IE_RICDATADESC_MAX_LEN (548) 6685 6686 #ifdef __cplusplus 6687 extern "C" { 6688 #endif /* C++ */ 6689 __must_check uint32_t dot11f_unpack_ie_ric_data_desc( 6690 tpAniSirGlobal, 6691 uint8_t *, 6692 uint8_t, 6693 tDot11fIERICDataDesc*, 6694 bool); 6695 6696 uint32_t dot11f_pack_ie_ric_data_desc( 6697 tpAniSirGlobal, 6698 tDot11fIERICDataDesc *, 6699 uint8_t *, 6700 uint32_t, 6701 uint32_t*); 6702 6703 uint32_t dot11f_get_packed_ieric_data_desc( 6704 tpAniSirGlobal, 6705 tDot11fIERICDataDesc *, 6706 uint32_t*); 6707 6708 #ifdef __cplusplus 6709 }; /* End extern "C". */ 6710 #endif /* C++ */ 6711 6712 /* EID 48 (0x30) */ 6713 typedef struct sDot11fIERSN { 6714 uint8_t present; 6715 uint16_t version /* Must be 1! */; 6716 uint8_t gp_cipher_suite_present; 6717 uint8_t gp_cipher_suite[4]; 6718 uint16_t pwise_cipher_suite_count; 6719 uint8_t pwise_cipher_suites[6][4]; 6720 uint16_t akm_suite_cnt; 6721 uint8_t akm_suite[6][4]; 6722 uint8_t RSN_Cap_present; 6723 uint8_t RSN_Cap[2]; 6724 uint16_t pmkid_count; 6725 uint8_t pmkid[4][16]; 6726 uint8_t gp_mgmt_cipher_suite_present; 6727 uint8_t gp_mgmt_cipher_suite[4]; 6728 } tDot11fIERSN; 6729 6730 #define DOT11F_EID_RSN (48) 6731 6732 /* N.B. These #defines do *not* include the EID & length */ 6733 #define DOT11F_IE_RSN_MIN_LEN (2) 6734 6735 #define DOT11F_IE_RSN_MAX_LEN (130) 6736 6737 #ifdef __cplusplus 6738 extern "C" { 6739 #endif /* C++ */ 6740 __must_check uint32_t dot11f_unpack_ie_rsn( 6741 tpAniSirGlobal, 6742 uint8_t *, 6743 uint8_t, 6744 tDot11fIERSN*, 6745 bool); 6746 6747 uint32_t dot11f_pack_ie_rsn( 6748 tpAniSirGlobal, 6749 tDot11fIERSN *, 6750 uint8_t *, 6751 uint32_t, 6752 uint32_t*); 6753 6754 uint32_t dot11f_get_packed_iersn( 6755 tpAniSirGlobal, 6756 tDot11fIERSN *, 6757 uint32_t*); 6758 6759 #ifdef __cplusplus 6760 }; /* End extern "C". */ 6761 #endif /* C++ */ 6762 6763 /* EID 65 (0x41) */ 6764 typedef struct sDot11fIERSNIIE { 6765 uint8_t present; 6766 uint8_t rsni; 6767 } tDot11fIERSNIIE; 6768 6769 #define DOT11F_EID_RSNIIE (65) 6770 6771 /* N.B. These #defines do *not* include the EID & length */ 6772 #define DOT11F_IE_RSNIIE_MIN_LEN (1) 6773 6774 #define DOT11F_IE_RSNIIE_MAX_LEN (1) 6775 6776 #ifdef __cplusplus 6777 extern "C" { 6778 #endif /* C++ */ 6779 __must_check uint32_t dot11f_unpack_ie_rsniie( 6780 tpAniSirGlobal, 6781 uint8_t *, 6782 uint8_t, 6783 tDot11fIERSNIIE*, 6784 bool); 6785 6786 uint32_t dot11f_pack_ie_rsniie( 6787 tpAniSirGlobal, 6788 tDot11fIERSNIIE *, 6789 uint8_t *, 6790 uint32_t, 6791 uint32_t*); 6792 6793 uint32_t dot11f_get_packed_iersnIIE( 6794 tpAniSirGlobal, 6795 tDot11fIERSNIIE *, 6796 uint32_t*); 6797 6798 #ifdef __cplusplus 6799 }; /* End extern "C". */ 6800 #endif /* C++ */ 6801 6802 /* EID 48 (0x30) */ 6803 typedef struct sDot11fIERSNOpaque { 6804 uint8_t present; 6805 uint8_t num_data; 6806 uint8_t data[253]; 6807 } tDot11fIERSNOpaque; 6808 6809 #define DOT11F_EID_RSNOPAQUE (48) 6810 6811 /* N.B. These #defines do *not* include the EID & length */ 6812 #define DOT11F_IE_RSNOPAQUE_MIN_LEN (6) 6813 6814 #define DOT11F_IE_RSNOPAQUE_MAX_LEN (253) 6815 6816 #ifdef __cplusplus 6817 extern "C" { 6818 #endif /* C++ */ 6819 __must_check uint32_t dot11f_unpack_ie_rsn_opaque( 6820 tpAniSirGlobal, 6821 uint8_t *, 6822 uint8_t, 6823 tDot11fIERSNOpaque*, 6824 bool); 6825 6826 uint32_t dot11f_pack_ie_rsn_opaque( 6827 tpAniSirGlobal, 6828 tDot11fIERSNOpaque *, 6829 uint8_t *, 6830 uint32_t, 6831 uint32_t*); 6832 6833 uint32_t dot11f_get_packed_iersnOpaque( 6834 tpAniSirGlobal, 6835 tDot11fIERSNOpaque *, 6836 uint32_t*); 6837 6838 #ifdef __cplusplus 6839 }; /* End extern "C". */ 6840 #endif /* C++ */ 6841 6842 /* EID 36 (0x24) */ 6843 typedef struct sDot11fIESuppChannels { 6844 uint8_t present; 6845 uint8_t num_bands; 6846 uint8_t bands[48][2]; 6847 } tDot11fIESuppChannels; 6848 6849 #define DOT11F_EID_SUPPCHANNELS (36) 6850 6851 /* N.B. These #defines do *not* include the EID & length */ 6852 #define DOT11F_IE_SUPPCHANNELS_MIN_LEN (2) 6853 6854 #define DOT11F_IE_SUPPCHANNELS_MAX_LEN (96) 6855 6856 #ifdef __cplusplus 6857 extern "C" { 6858 #endif /* C++ */ 6859 __must_check uint32_t dot11f_unpack_ie_supp_channels( 6860 tpAniSirGlobal, 6861 uint8_t *, 6862 uint8_t, 6863 tDot11fIESuppChannels*, 6864 bool); 6865 6866 uint32_t dot11f_pack_ie_supp_channels( 6867 tpAniSirGlobal, 6868 tDot11fIESuppChannels *, 6869 uint8_t *, 6870 uint32_t, 6871 uint32_t*); 6872 6873 uint32_t dot11f_get_packed_ie_SuppChannels( 6874 tpAniSirGlobal, 6875 tDot11fIESuppChannels *, 6876 uint32_t*); 6877 6878 #ifdef __cplusplus 6879 }; /* End extern "C". */ 6880 #endif /* C++ */ 6881 6882 /* EID 59 (0x3b) */ 6883 typedef struct sDot11fIESuppOperatingClasses { 6884 uint8_t present; 6885 uint8_t num_classes; 6886 uint8_t classes[32]; 6887 } tDot11fIESuppOperatingClasses; 6888 6889 #define DOT11F_EID_SUPPOPERATINGCLASSES (59) 6890 6891 /* N.B. These #defines do *not* include the EID & length */ 6892 #define DOT11F_IE_SUPPOPERATINGCLASSES_MIN_LEN (1) 6893 6894 #define DOT11F_IE_SUPPOPERATINGCLASSES_MAX_LEN (32) 6895 6896 #ifdef __cplusplus 6897 extern "C" { 6898 #endif /* C++ */ 6899 __must_check uint32_t dot11f_unpack_ie_supp_operating_classes( 6900 tpAniSirGlobal, 6901 uint8_t *, 6902 uint8_t, 6903 tDot11fIESuppOperatingClasses*, 6904 bool); 6905 6906 uint32_t dot11f_pack_ie_supp_operating_classes( 6907 tpAniSirGlobal, 6908 tDot11fIESuppOperatingClasses *, 6909 uint8_t *, 6910 uint32_t, 6911 uint32_t*); 6912 6913 uint32_t dot11f_get_packed_ie_SuppOperatingClasses( 6914 tpAniSirGlobal, 6915 tDot11fIESuppOperatingClasses *, 6916 uint32_t*); 6917 6918 #ifdef __cplusplus 6919 }; /* End extern "C". */ 6920 #endif /* C++ */ 6921 6922 /* EID 1 (0x01) */ 6923 typedef struct sDot11fIESuppRates { 6924 uint8_t present; 6925 uint8_t num_rates; 6926 uint8_t rates[12]; 6927 } tDot11fIESuppRates; 6928 6929 #define DOT11F_EID_SUPPRATES (1) 6930 6931 /* N.B. These #defines do *not* include the EID & length */ 6932 #define DOT11F_IE_SUPPRATES_MIN_LEN (0) 6933 6934 #define DOT11F_IE_SUPPRATES_MAX_LEN (12) 6935 6936 #define DOT11F_IS_BG_RATE(_x) (((_x) == 02) || \ 6937 ((_x) == 04) || \ 6938 ((_x) == 11) || \ 6939 ((_x) == 22) || \ 6940 ((_x) == 12) || \ 6941 ((_x) == 18) || \ 6942 ((_x) == 24) || \ 6943 ((_x) == 36) || \ 6944 ((_x) == 48) || \ 6945 ((_x) == 72) || \ 6946 ((_x) == 96) || \ 6947 ((_x) == 108)) 6948 6949 #ifdef __cplusplus 6950 extern "C" { 6951 #endif /* C++ */ 6952 __must_check uint32_t dot11f_unpack_ie_supp_rates( 6953 tpAniSirGlobal, 6954 uint8_t *, 6955 uint8_t, 6956 tDot11fIESuppRates*, 6957 bool); 6958 6959 uint32_t dot11f_pack_ie_supp_rates( 6960 tpAniSirGlobal, 6961 tDot11fIESuppRates *, 6962 uint8_t *, 6963 uint32_t, 6964 uint32_t*); 6965 6966 uint32_t dot11f_get_packed_ie_SuppRates( 6967 tpAniSirGlobal, 6968 tDot11fIESuppRates *, 6969 uint32_t*); 6970 6971 #ifdef __cplusplus 6972 }; /* End extern "C". */ 6973 #endif /* C++ */ 6974 6975 /* EID 5 (0x05) */ 6976 typedef struct sDot11fIETIM { 6977 uint8_t present; 6978 uint8_t dtim_count; 6979 uint8_t dtim_period; 6980 uint8_t bmpctl; 6981 uint8_t num_vbmp; 6982 uint8_t vbmp[251]; 6983 } tDot11fIETIM; 6984 6985 #define DOT11F_EID_TIM (5) 6986 6987 /* N.B. These #defines do *not* include the EID & length */ 6988 #define DOT11F_IE_TIM_MIN_LEN (4) 6989 6990 #define DOT11F_IE_TIM_MAX_LEN (254) 6991 6992 #ifdef __cplusplus 6993 extern "C" { 6994 #endif /* C++ */ 6995 __must_check uint32_t dot11f_unpack_ie_tim( 6996 tpAniSirGlobal, 6997 uint8_t *, 6998 uint8_t, 6999 tDot11fIETIM*, 7000 bool); 7001 7002 uint32_t dot11f_pack_ie_tim( 7003 tpAniSirGlobal, 7004 tDot11fIETIM *, 7005 uint8_t *, 7006 uint32_t, 7007 uint32_t*); 7008 7009 uint32_t dot11f_get_packed_ie_TIM( 7010 tpAniSirGlobal, 7011 tDot11fIETIM *, 7012 uint32_t*); 7013 7014 #ifdef __cplusplus 7015 }; /* End extern "C". */ 7016 #endif /* C++ */ 7017 7018 /* EID 35 (0x23) */ 7019 typedef struct sDot11fIETPCReport { 7020 uint8_t present; 7021 uint8_t tx_power; 7022 uint8_t link_margin; 7023 } tDot11fIETPCReport; 7024 7025 #define DOT11F_EID_TPCREPORT (35) 7026 7027 /* N.B. These #defines do *not* include the EID & length */ 7028 #define DOT11F_IE_TPCREPORT_MIN_LEN (2) 7029 7030 #define DOT11F_IE_TPCREPORT_MAX_LEN (2) 7031 7032 #ifdef __cplusplus 7033 extern "C" { 7034 #endif /* C++ */ 7035 __must_check uint32_t dot11f_unpack_ie_tpc_report( 7036 tpAniSirGlobal, 7037 uint8_t *, 7038 uint8_t, 7039 tDot11fIETPCReport*, 7040 bool); 7041 7042 uint32_t dot11f_pack_ie_tpc_report( 7043 tpAniSirGlobal, 7044 tDot11fIETPCReport *, 7045 uint8_t *, 7046 uint32_t, 7047 uint32_t*); 7048 7049 uint32_t dot11f_get_packed_ie_TPCReport( 7050 tpAniSirGlobal, 7051 tDot11fIETPCReport *, 7052 uint32_t*); 7053 7054 #ifdef __cplusplus 7055 }; /* End extern "C". */ 7056 #endif /* C++ */ 7057 7058 /* EID 34 (0x22) */ 7059 typedef struct sDot11fIETPCRequest { 7060 uint8_t present; 7061 } tDot11fIETPCRequest; 7062 7063 #define DOT11F_EID_TPCREQUEST (34) 7064 7065 /* N.B. These #defines do *not* include the EID & length */ 7066 #define DOT11F_IE_TPCREQUEST_MIN_LEN (0) 7067 7068 #define DOT11F_IE_TPCREQUEST_MAX_LEN (0) 7069 7070 #ifdef __cplusplus 7071 extern "C" { 7072 #endif /* C++ */ 7073 __must_check uint32_t dot11f_unpack_ie_tpc_request( 7074 tpAniSirGlobal, 7075 uint8_t *, 7076 uint8_t, 7077 tDot11fIETPCRequest*, 7078 bool); 7079 7080 uint32_t dot11f_pack_ie_tpc_request( 7081 tpAniSirGlobal, 7082 tDot11fIETPCRequest *, 7083 uint8_t *, 7084 uint32_t, 7085 uint32_t*); 7086 7087 uint32_t dot11f_get_packed_ie_TPCRequest( 7088 tpAniSirGlobal, 7089 tDot11fIETPCRequest *, 7090 uint32_t*); 7091 7092 #ifdef __cplusplus 7093 }; /* End extern "C". */ 7094 #endif /* C++ */ 7095 7096 /* EID 69 (0x45) */ 7097 typedef struct sDot11fIETimeAdvertisement { 7098 uint8_t present; 7099 uint8_t timing_capabilities; 7100 uint8_t time_value[10]; 7101 uint8_t time_error[5]; 7102 } tDot11fIETimeAdvertisement; 7103 7104 #define DOT11F_EID_TIMEADVERTISEMENT (69) 7105 7106 /* N.B. These #defines do *not* include the EID & length */ 7107 #define DOT11F_IE_TIMEADVERTISEMENT_MIN_LEN (16) 7108 7109 #define DOT11F_IE_TIMEADVERTISEMENT_MAX_LEN (16) 7110 7111 #ifdef __cplusplus 7112 extern "C" { 7113 #endif /* C++ */ 7114 __must_check uint32_t dot11f_unpack_ie_time_advertisement( 7115 tpAniSirGlobal, 7116 uint8_t *, 7117 uint8_t, 7118 tDot11fIETimeAdvertisement*, 7119 bool); 7120 7121 uint32_t dot11f_pack_ie_time_advertisement( 7122 tpAniSirGlobal, 7123 tDot11fIETimeAdvertisement *, 7124 uint8_t *, 7125 uint32_t, 7126 uint32_t*); 7127 7128 uint32_t dot11f_get_packed_ie_time_advertisement( 7129 tpAniSirGlobal, 7130 tDot11fIETimeAdvertisement *, 7131 uint32_t*); 7132 7133 #ifdef __cplusplus 7134 }; /* End extern "C". */ 7135 #endif /* C++ */ 7136 7137 /* EID 56 (0x38) */ 7138 typedef struct sDot11fIETimeoutInterval { 7139 uint8_t present; 7140 uint8_t timeoutType; 7141 uint32_t timeoutValue; 7142 } tDot11fIETimeoutInterval; 7143 7144 #define DOT11F_EID_TIMEOUTINTERVAL (56) 7145 7146 /* N.B. These #defines do *not* include the EID & length */ 7147 #define DOT11F_IE_TIMEOUTINTERVAL_MIN_LEN (5) 7148 7149 #define DOT11F_IE_TIMEOUTINTERVAL_MAX_LEN (5) 7150 7151 #ifdef __cplusplus 7152 extern "C" { 7153 #endif /* C++ */ 7154 __must_check uint32_t dot11f_unpack_ie_timeout_interval( 7155 tpAniSirGlobal, 7156 uint8_t *, 7157 uint8_t, 7158 tDot11fIETimeoutInterval*, 7159 bool); 7160 7161 uint32_t dot11f_pack_ie_timeout_interval( 7162 tpAniSirGlobal, 7163 tDot11fIETimeoutInterval *, 7164 uint8_t *, 7165 uint32_t, 7166 uint32_t*); 7167 7168 uint32_t dot11f_get_packed_ie_TimeoutInterval( 7169 tpAniSirGlobal, 7170 tDot11fIETimeoutInterval *, 7171 uint32_t*); 7172 7173 #ifdef __cplusplus 7174 }; /* End extern "C". */ 7175 #endif /* C++ */ 7176 7177 /* EID 193 (0xc1) */ 7178 typedef struct sDot11fIEVHTExtBssLoad { 7179 uint8_t present; 7180 uint8_t muMIMOCapStaCount; 7181 uint8_t ssUnderUtil; 7182 uint8_t FortyMHzUtil; 7183 uint8_t EightyMHzUtil; 7184 uint8_t OneSixtyMHzUtil; 7185 } tDot11fIEVHTExtBssLoad; 7186 7187 #define DOT11F_EID_VHTEXTBSSLOAD (193) 7188 7189 /* N.B. These #defines do *not* include the EID & length */ 7190 #define DOT11F_IE_VHTEXTBSSLOAD_MIN_LEN (5) 7191 7192 #define DOT11F_IE_VHTEXTBSSLOAD_MAX_LEN (5) 7193 7194 #ifdef __cplusplus 7195 extern "C" { 7196 #endif /* C++ */ 7197 __must_check uint32_t dot11f_unpack_ie_vht_ext_bss_load( 7198 tpAniSirGlobal, 7199 uint8_t *, 7200 uint8_t, 7201 tDot11fIEVHTExtBssLoad*, 7202 bool); 7203 7204 uint32_t dot11f_pack_ie_vht_ext_bss_load( 7205 tpAniSirGlobal, 7206 tDot11fIEVHTExtBssLoad *, 7207 uint8_t *, 7208 uint32_t, 7209 uint32_t*); 7210 7211 uint32_t dot11f_get_packed_ie_VHTExtBssLoad( 7212 tpAniSirGlobal, 7213 tDot11fIEVHTExtBssLoad *, 7214 uint32_t*); 7215 7216 #ifdef __cplusplus 7217 }; /* End extern "C". */ 7218 #endif /* C++ */ 7219 7220 /* EID 221 (0xdd) {OUI 0x00, 0x10, 0x18} */ 7221 typedef struct sDot11fIEVendor1IE { 7222 uint8_t present; 7223 } tDot11fIEVendor1IE; 7224 7225 #define DOT11F_EID_VENDOR1IE (221) 7226 7227 /* N.B. These #defines do *not* include the EID & length */ 7228 #define DOT11F_IE_VENDOR1IE_MIN_LEN (3) 7229 7230 #define DOT11F_IE_VENDOR1IE_MAX_LEN (3) 7231 7232 #ifdef __cplusplus 7233 extern "C" { 7234 #endif /* C++ */ 7235 __must_check uint32_t dot11f_unpack_ie_vendor1_ie( 7236 tpAniSirGlobal, 7237 uint8_t *, 7238 uint8_t, 7239 tDot11fIEVendor1IE*, 7240 bool); 7241 7242 uint32_t dot11f_pack_ie_vendor1_ie( 7243 tpAniSirGlobal, 7244 tDot11fIEVendor1IE *, 7245 uint8_t *, 7246 uint32_t, 7247 uint32_t*); 7248 7249 uint32_t dot11f_get_packed_ie_Vendor1IE( 7250 tpAniSirGlobal, 7251 tDot11fIEVendor1IE *, 7252 uint32_t*); 7253 7254 #ifdef __cplusplus 7255 }; /* End extern "C". */ 7256 #endif /* C++ */ 7257 7258 /* EID 221 (0xdd) {OUI 0x00, 0x16, 0x32} */ 7259 typedef struct sDot11fIEVendor3IE { 7260 uint8_t present; 7261 } tDot11fIEVendor3IE; 7262 7263 #define DOT11F_EID_VENDOR3IE (221) 7264 7265 /* N.B. These #defines do *not* include the EID & length */ 7266 #define DOT11F_IE_VENDOR3IE_MIN_LEN (3) 7267 7268 #define DOT11F_IE_VENDOR3IE_MAX_LEN (3) 7269 7270 #ifdef __cplusplus 7271 extern "C" { 7272 #endif /* C++ */ 7273 __must_check uint32_t dot11f_unpack_ie_vendor3_ie( 7274 tpAniSirGlobal, 7275 uint8_t *, 7276 uint8_t, 7277 tDot11fIEVendor3IE*, 7278 bool); 7279 7280 uint32_t dot11f_pack_ie_vendor3_ie( 7281 tpAniSirGlobal, 7282 tDot11fIEVendor3IE *, 7283 uint8_t *, 7284 uint32_t, 7285 uint32_t*); 7286 7287 uint32_t dot11f_get_packed_ie_Vendor3IE( 7288 tpAniSirGlobal, 7289 tDot11fIEVendor3IE *, 7290 uint32_t*); 7291 7292 #ifdef __cplusplus 7293 }; /* End extern "C". */ 7294 #endif /* C++ */ 7295 7296 /* EID 68 (0x44) */ 7297 typedef struct sDot11fIEWAPI { 7298 uint8_t present; 7299 uint16_t version /* Must be 1! */; 7300 uint16_t akm_suite_count; 7301 uint8_t akm_suites[4][4]; 7302 uint16_t unicast_cipher_suite_count; 7303 uint8_t unicast_cipher_suites[4][4]; 7304 uint8_t multicast_cipher_suite[4]; 7305 uint16_t preauth:1; 7306 uint16_t reserved:15; 7307 uint16_t bkid_count; 7308 uint8_t bkid[4][16]; 7309 } tDot11fIEWAPI; 7310 7311 #define DOT11F_EID_WAPI (68) 7312 7313 /* N.B. These #defines do *not* include the EID & length */ 7314 #define DOT11F_IE_WAPI_MIN_LEN (12) 7315 7316 #define DOT11F_IE_WAPI_MAX_LEN (110) 7317 7318 #ifdef __cplusplus 7319 extern "C" { 7320 #endif /* C++ */ 7321 __must_check uint32_t dot11f_unpack_ie_wapi( 7322 tpAniSirGlobal, 7323 uint8_t *, 7324 uint8_t, 7325 tDot11fIEWAPI*, 7326 bool); 7327 7328 uint32_t dot11f_pack_ie_wapi( 7329 tpAniSirGlobal, 7330 tDot11fIEWAPI *, 7331 uint8_t *, 7332 uint32_t, 7333 uint32_t*); 7334 7335 uint32_t dot11f_get_packed_iewapi( 7336 tpAniSirGlobal, 7337 tDot11fIEWAPI *, 7338 uint32_t*); 7339 7340 #ifdef __cplusplus 7341 }; /* End extern "C". */ 7342 #endif /* C++ */ 7343 7344 /* EID 68 (0x44) */ 7345 typedef struct sDot11fIEWAPIOpaque { 7346 uint8_t present; 7347 uint8_t num_data; 7348 uint8_t data[253]; 7349 } tDot11fIEWAPIOpaque; 7350 7351 #define DOT11F_EID_WAPIOPAQUE (68) 7352 7353 /* N.B. These #defines do *not* include the EID & length */ 7354 #define DOT11F_IE_WAPIOPAQUE_MIN_LEN (6) 7355 7356 #define DOT11F_IE_WAPIOPAQUE_MAX_LEN (253) 7357 7358 #ifdef __cplusplus 7359 extern "C" { 7360 #endif /* C++ */ 7361 __must_check uint32_t dot11f_unpack_ie_wapi_opaque( 7362 tpAniSirGlobal, 7363 uint8_t *, 7364 uint8_t, 7365 tDot11fIEWAPIOpaque*, 7366 bool); 7367 7368 uint32_t dot11f_pack_ie_wapi_opaque( 7369 tpAniSirGlobal, 7370 tDot11fIEWAPIOpaque *, 7371 uint8_t *, 7372 uint32_t, 7373 uint32_t*); 7374 7375 uint32_t dot11f_get_packed_iewapiOpaque( 7376 tpAniSirGlobal, 7377 tDot11fIEWAPIOpaque *, 7378 uint32_t*); 7379 7380 #ifdef __cplusplus 7381 }; /* End extern "C". */ 7382 #endif /* C++ */ 7383 7384 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x08, 0x00} */ 7385 typedef struct sDot11fIEWFATPC { 7386 uint8_t present; 7387 uint8_t txPower; 7388 uint8_t linkMargin; 7389 } tDot11fIEWFATPC; 7390 7391 #define DOT11F_EID_WFATPC (221) 7392 7393 /* N.B. These #defines do *not* include the EID & length */ 7394 #define DOT11F_IE_WFATPC_MIN_LEN (7) 7395 7396 #define DOT11F_IE_WFATPC_MAX_LEN (7) 7397 7398 #ifdef __cplusplus 7399 extern "C" { 7400 #endif /* C++ */ 7401 __must_check uint32_t dot11f_unpack_ie_wfatpc( 7402 tpAniSirGlobal, 7403 uint8_t *, 7404 uint8_t, 7405 tDot11fIEWFATPC*, 7406 bool); 7407 7408 uint32_t dot11f_pack_ie_wfatpc( 7409 tpAniSirGlobal, 7410 tDot11fIEWFATPC *, 7411 uint8_t *, 7412 uint32_t, 7413 uint32_t*); 7414 7415 uint32_t dot11f_get_packed_ie_WFATPC( 7416 tpAniSirGlobal, 7417 tDot11fIEWFATPC *, 7418 uint32_t*); 7419 7420 #ifdef __cplusplus 7421 }; /* End extern "C". */ 7422 #endif /* C++ */ 7423 7424 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x0a} */ 7425 typedef struct sDot11fIEWFDIEOpaque { 7426 uint8_t present; 7427 uint8_t num_data; 7428 uint8_t data[249]; 7429 } tDot11fIEWFDIEOpaque; 7430 7431 #define DOT11F_EID_WFDIEOPAQUE (221) 7432 7433 /* N.B. These #defines do *not* include the EID & length */ 7434 #define DOT11F_IE_WFDIEOPAQUE_MIN_LEN (6) 7435 7436 #define DOT11F_IE_WFDIEOPAQUE_MAX_LEN (253) 7437 7438 #ifdef __cplusplus 7439 extern "C" { 7440 #endif /* C++ */ 7441 __must_check uint32_t dot11f_unpack_ie_wfdie_opaque( 7442 tpAniSirGlobal, 7443 uint8_t *, 7444 uint8_t, 7445 tDot11fIEWFDIEOpaque*, 7446 bool); 7447 7448 uint32_t dot11f_pack_ie_wfdie_opaque( 7449 tpAniSirGlobal, 7450 tDot11fIEWFDIEOpaque *, 7451 uint8_t *, 7452 uint32_t, 7453 uint32_t*); 7454 7455 uint32_t dot11f_get_packed_ie_WFDIEOpaque( 7456 tpAniSirGlobal, 7457 tDot11fIEWFDIEOpaque *, 7458 uint32_t*); 7459 7460 #ifdef __cplusplus 7461 }; /* End extern "C". */ 7462 #endif /* C++ */ 7463 7464 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x05} */ 7465 typedef struct sDot11fIEWMMCaps { 7466 uint8_t present; 7467 uint8_t version /* Must be 1! */; 7468 uint8_t reserved:4; 7469 uint8_t qack:1; 7470 uint8_t queue_request:1; 7471 uint8_t txop_request:1; 7472 uint8_t more_ack:1; 7473 } tDot11fIEWMMCaps; 7474 7475 #define DOT11F_EID_WMMCAPS (221) 7476 7477 /* N.B. These #defines do *not* include the EID & length */ 7478 #define DOT11F_IE_WMMCAPS_MIN_LEN (7) 7479 7480 #define DOT11F_IE_WMMCAPS_MAX_LEN (7) 7481 7482 #ifdef __cplusplus 7483 extern "C" { 7484 #endif /* C++ */ 7485 __must_check uint32_t dot11f_unpack_ie_wmm_caps( 7486 tpAniSirGlobal, 7487 uint8_t *, 7488 uint8_t, 7489 tDot11fIEWMMCaps*, 7490 bool); 7491 7492 uint32_t dot11f_pack_ie_wmm_caps( 7493 tpAniSirGlobal, 7494 tDot11fIEWMMCaps *, 7495 uint8_t *, 7496 uint32_t, 7497 uint32_t*); 7498 7499 uint32_t dot11f_get_packed_ie_WMMCaps( 7500 tpAniSirGlobal, 7501 tDot11fIEWMMCaps *, 7502 uint32_t*); 7503 7504 #ifdef __cplusplus 7505 }; /* End extern "C". */ 7506 #endif /* C++ */ 7507 7508 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */ 7509 typedef struct sDot11fIEWMMInfoAp { 7510 uint8_t present; 7511 uint8_t version; 7512 uint8_t param_set_count:4; 7513 uint8_t reserved:3; 7514 uint8_t uapsd:1; 7515 } tDot11fIEWMMInfoAp; 7516 7517 #define DOT11F_EID_WMMINFOAP (221) 7518 7519 /* N.B. These #defines do *not* include the EID & length */ 7520 #define DOT11F_IE_WMMINFOAP_MIN_LEN (7) 7521 7522 #define DOT11F_IE_WMMINFOAP_MAX_LEN (7) 7523 7524 #ifdef __cplusplus 7525 extern "C" { 7526 #endif /* C++ */ 7527 __must_check uint32_t dot11f_unpack_ie_wmm_info_ap( 7528 tpAniSirGlobal, 7529 uint8_t *, 7530 uint8_t, 7531 tDot11fIEWMMInfoAp*, 7532 bool); 7533 7534 uint32_t dot11f_pack_ie_wmm_info_ap( 7535 tpAniSirGlobal, 7536 tDot11fIEWMMInfoAp *, 7537 uint8_t *, 7538 uint32_t, 7539 uint32_t*); 7540 7541 uint32_t dot11f_get_packed_ie_WMMInfoAp( 7542 tpAniSirGlobal, 7543 tDot11fIEWMMInfoAp *, 7544 uint32_t*); 7545 7546 #ifdef __cplusplus 7547 }; /* End extern "C". */ 7548 #endif /* C++ */ 7549 7550 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */ 7551 typedef struct sDot11fIEWMMInfoStation { 7552 uint8_t present; 7553 uint8_t version; 7554 uint8_t acvo_uapsd:1; 7555 uint8_t acvi_uapsd:1; 7556 uint8_t acbk_uapsd:1; 7557 uint8_t acbe_uapsd:1; 7558 uint8_t reserved1:1; 7559 uint8_t max_sp_length:2; 7560 uint8_t reserved2:1; 7561 } tDot11fIEWMMInfoStation; 7562 7563 #define DOT11F_EID_WMMINFOSTATION (221) 7564 7565 /* N.B. These #defines do *not* include the EID & length */ 7566 #define DOT11F_IE_WMMINFOSTATION_MIN_LEN (7) 7567 7568 #define DOT11F_IE_WMMINFOSTATION_MAX_LEN (7) 7569 7570 #ifdef __cplusplus 7571 extern "C" { 7572 #endif /* C++ */ 7573 __must_check uint32_t dot11f_unpack_ie_wmm_info_station( 7574 tpAniSirGlobal, 7575 uint8_t *, 7576 uint8_t, 7577 tDot11fIEWMMInfoStation*, 7578 bool); 7579 7580 uint32_t dot11f_pack_ie_wmm_info_station( 7581 tpAniSirGlobal, 7582 tDot11fIEWMMInfoStation *, 7583 uint8_t *, 7584 uint32_t, 7585 uint32_t*); 7586 7587 uint32_t dot11f_get_packed_ie_WMMInfoStation( 7588 tpAniSirGlobal, 7589 tDot11fIEWMMInfoStation *, 7590 uint32_t*); 7591 7592 #ifdef __cplusplus 7593 }; /* End extern "C". */ 7594 #endif /* C++ */ 7595 7596 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x01} */ 7597 typedef struct sDot11fIEWMMParams { 7598 uint8_t present; 7599 uint8_t version /* Must be 1! */; 7600 uint8_t qosInfo; 7601 uint8_t reserved2; 7602 uint8_t acbe_aifsn:4; 7603 uint8_t acbe_acm:1; 7604 uint8_t acbe_aci:2; 7605 uint8_t unused1:1; 7606 uint8_t acbe_acwmin:4; 7607 uint8_t acbe_acwmax:4; 7608 uint16_t acbe_txoplimit; 7609 uint8_t acbk_aifsn:4; 7610 uint8_t acbk_acm:1; 7611 uint8_t acbk_aci:2; 7612 uint8_t unused2:1; 7613 uint8_t acbk_acwmin:4; 7614 uint8_t acbk_acwmax:4; 7615 uint16_t acbk_txoplimit; 7616 uint8_t acvi_aifsn:4; 7617 uint8_t acvi_acm:1; 7618 uint8_t acvi_aci:2; 7619 uint8_t unused3:1; 7620 uint8_t acvi_acwmin:4; 7621 uint8_t acvi_acwmax:4; 7622 uint16_t acvi_txoplimit; 7623 uint8_t acvo_aifsn:4; 7624 uint8_t acvo_acm:1; 7625 uint8_t acvo_aci:2; 7626 uint8_t unused4:1; 7627 uint8_t acvo_acwmin:4; 7628 uint8_t acvo_acwmax:4; 7629 uint16_t acvo_txoplimit; 7630 } tDot11fIEWMMParams; 7631 7632 #define DOT11F_EID_WMMPARAMS (221) 7633 7634 /* N.B. These #defines do *not* include the EID & length */ 7635 #define DOT11F_IE_WMMPARAMS_MIN_LEN (24) 7636 7637 #define DOT11F_IE_WMMPARAMS_MAX_LEN (24) 7638 7639 #ifdef __cplusplus 7640 extern "C" { 7641 #endif /* C++ */ 7642 __must_check uint32_t dot11f_unpack_ie_wmm_params( 7643 tpAniSirGlobal, 7644 uint8_t *, 7645 uint8_t, 7646 tDot11fIEWMMParams*, 7647 bool); 7648 7649 uint32_t dot11f_pack_ie_wmm_params( 7650 tpAniSirGlobal, 7651 tDot11fIEWMMParams *, 7652 uint8_t *, 7653 uint32_t, 7654 uint32_t*); 7655 7656 uint32_t dot11f_get_packed_ie_WMMParams( 7657 tpAniSirGlobal, 7658 tDot11fIEWMMParams *, 7659 uint32_t*); 7660 7661 #ifdef __cplusplus 7662 }; /* End extern "C". */ 7663 #endif /* C++ */ 7664 7665 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */ 7666 typedef struct sDot11fIEWPA { 7667 uint8_t present; 7668 uint16_t version /* Must be 1! */; 7669 /* field added to fix the bug in dot11fPackIEWPA */ 7670 uint8_t multicast_cipher_present; 7671 uint8_t multicast_cipher[4]; 7672 uint16_t unicast_cipher_count; 7673 uint8_t unicast_ciphers[4][4]; 7674 uint16_t auth_suite_count; 7675 uint8_t auth_suites[4][4]; 7676 uint16_t caps; 7677 } tDot11fIEWPA; 7678 7679 #define DOT11F_EID_WPA (221) 7680 7681 /* N.B. These #defines do *not* include the EID & length */ 7682 #define DOT11F_IE_WPA_MIN_LEN (6) 7683 7684 #define DOT11F_IE_WPA_MAX_LEN (48) 7685 7686 #ifdef __cplusplus 7687 extern "C" { 7688 #endif /* C++ */ 7689 __must_check uint32_t dot11f_unpack_ie_wpa( 7690 tpAniSirGlobal, 7691 uint8_t *, 7692 uint8_t, 7693 tDot11fIEWPA*, 7694 bool); 7695 7696 uint32_t dot11f_pack_ie_wpa( 7697 tpAniSirGlobal, 7698 tDot11fIEWPA *, 7699 uint8_t *, 7700 uint32_t, 7701 uint32_t*); 7702 7703 uint32_t dot11f_get_packed_iewpa( 7704 tpAniSirGlobal, 7705 tDot11fIEWPA *, 7706 uint32_t*); 7707 7708 #ifdef __cplusplus 7709 }; /* End extern "C". */ 7710 #endif /* C++ */ 7711 7712 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */ 7713 typedef struct sDot11fIEWPAOpaque { 7714 uint8_t present; 7715 uint8_t num_data; 7716 uint8_t data[249]; 7717 } tDot11fIEWPAOpaque; 7718 7719 #define DOT11F_EID_WPAOPAQUE (221) 7720 7721 /* N.B. These #defines do *not* include the EID & length */ 7722 #define DOT11F_IE_WPAOPAQUE_MIN_LEN (6) 7723 7724 #define DOT11F_IE_WPAOPAQUE_MAX_LEN (253) 7725 7726 #ifdef __cplusplus 7727 extern "C" { 7728 #endif /* C++ */ 7729 __must_check uint32_t dot11f_unpack_ie_wpa_opaque( 7730 tpAniSirGlobal, 7731 uint8_t *, 7732 uint8_t, 7733 tDot11fIEWPAOpaque*, 7734 bool); 7735 7736 uint32_t dot11f_pack_ie_wpa_opaque( 7737 tpAniSirGlobal, 7738 tDot11fIEWPAOpaque *, 7739 uint8_t *, 7740 uint32_t, 7741 uint32_t*); 7742 7743 uint32_t dot11f_get_packed_iewpaOpaque( 7744 tpAniSirGlobal, 7745 tDot11fIEWPAOpaque *, 7746 uint32_t*); 7747 7748 #ifdef __cplusplus 7749 }; /* End extern "C". */ 7750 #endif /* C++ */ 7751 7752 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 7753 typedef struct sDot11fIEWSC { 7754 uint8_t present; 7755 tDot11fTLVVersion Version; 7756 tDot11fTLVWPSState WPSState; 7757 tDot11fTLVAPSetupLocked APSetupLocked; 7758 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods; 7759 tDot11fTLVUUID_E UUID_E; 7760 tDot11fTLVUUID_R UUID_R; 7761 tDot11fTLVRFBands RFBands; 7762 tDot11fTLVSelectedRegistrar SelectedRegistrar; 7763 tDot11fTLVConfigMethods ConfigMethods; 7764 tDot11fTLVAssociationState AssociationState; 7765 tDot11fTLVConfigurationError ConfigurationError; 7766 tDot11fTLVManufacturer Manufacturer; 7767 tDot11fTLVModelName ModelName; 7768 tDot11fTLVModelNumber ModelNumber; 7769 tDot11fTLVSerialNumber SerialNumber; 7770 tDot11fTLVDeviceName DeviceName; 7771 tDot11fTLVDevicePasswordID DevicePasswordID; 7772 tDot11fTLVPrimaryDeviceType PrimaryDeviceType; 7773 tDot11fTLVRequestType RequestType; 7774 tDot11fTLVResponseType ResponseType; 7775 tDot11fTLVVendorExtension VendorExtension; 7776 tDot11fTLVRequestDeviceType RequestDeviceType; 7777 } tDot11fIEWSC; 7778 7779 #define DOT11F_EID_WSC (221) 7780 7781 /* N.B. These #defines do *not* include the EID & length */ 7782 #define DOT11F_IE_WSC_MIN_LEN (4) 7783 7784 #define DOT11F_IE_WSC_MAX_LEN (366) 7785 7786 #ifdef __cplusplus 7787 extern "C" { 7788 #endif /* C++ */ 7789 __must_check uint32_t dot11f_unpack_ie_wsc( 7790 tpAniSirGlobal, 7791 uint8_t *, 7792 uint8_t, 7793 tDot11fIEWSC*, 7794 bool); 7795 7796 uint32_t dot11f_pack_ie_wsc( 7797 tpAniSirGlobal, 7798 tDot11fIEWSC *, 7799 uint8_t *, 7800 uint32_t, 7801 uint32_t*); 7802 7803 uint32_t dot11f_get_packed_iewsc( 7804 tpAniSirGlobal, 7805 tDot11fIEWSC *, 7806 uint32_t*); 7807 7808 #ifdef __cplusplus 7809 }; /* End extern "C". */ 7810 #endif /* C++ */ 7811 7812 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 7813 typedef struct sDot11fIEWscAssocReq { 7814 uint8_t present; 7815 tDot11fTLVVersion Version; 7816 tDot11fTLVRequestType RequestType; 7817 tDot11fTLVVendorExtension VendorExtension; 7818 } tDot11fIEWscAssocReq; 7819 7820 #define DOT11F_EID_WSCASSOCREQ (221) 7821 7822 /* N.B. These #defines do *not* include the EID & length */ 7823 #define DOT11F_IE_WSCASSOCREQ_MIN_LEN (4) 7824 7825 #define DOT11F_IE_WSCASSOCREQ_MAX_LEN (35) 7826 7827 #ifdef __cplusplus 7828 extern "C" { 7829 #endif /* C++ */ 7830 __must_check uint32_t dot11f_unpack_ie_wsc_assoc_req( 7831 tpAniSirGlobal, 7832 uint8_t *, 7833 uint8_t, 7834 tDot11fIEWscAssocReq*, 7835 bool); 7836 7837 uint32_t dot11f_pack_ie_wsc_assoc_req( 7838 tpAniSirGlobal, 7839 tDot11fIEWscAssocReq *, 7840 uint8_t *, 7841 uint32_t, 7842 uint32_t*); 7843 7844 uint32_t dot11f_get_packed_ie_wsc_assoc_req( 7845 tpAniSirGlobal, 7846 tDot11fIEWscAssocReq *, 7847 uint32_t*); 7848 7849 #ifdef __cplusplus 7850 }; /* End extern "C". */ 7851 #endif /* C++ */ 7852 7853 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 7854 typedef struct sDot11fIEWscAssocRes { 7855 uint8_t present; 7856 tDot11fTLVVersion Version; 7857 tDot11fTLVResponseType ResponseType; 7858 tDot11fTLVVendorExtension VendorExtension; 7859 } tDot11fIEWscAssocRes; 7860 7861 #define DOT11F_EID_WSCASSOCRES (221) 7862 7863 /* N.B. These #defines do *not* include the EID & length */ 7864 #define DOT11F_IE_WSCASSOCRES_MIN_LEN (4) 7865 7866 #define DOT11F_IE_WSCASSOCRES_MAX_LEN (35) 7867 7868 #ifdef __cplusplus 7869 extern "C" { 7870 #endif /* C++ */ 7871 __must_check uint32_t dot11f_unpack_ie_wsc_assoc_res( 7872 tpAniSirGlobal, 7873 uint8_t *, 7874 uint8_t, 7875 tDot11fIEWscAssocRes*, 7876 bool); 7877 7878 uint32_t dot11f_pack_ie_wsc_assoc_res( 7879 tpAniSirGlobal, 7880 tDot11fIEWscAssocRes *, 7881 uint8_t *, 7882 uint32_t, 7883 uint32_t*); 7884 7885 uint32_t dot11f_get_packed_ie_wsc_assoc_res( 7886 tpAniSirGlobal, 7887 tDot11fIEWscAssocRes *, 7888 uint32_t*); 7889 7890 #ifdef __cplusplus 7891 }; /* End extern "C". */ 7892 #endif /* C++ */ 7893 7894 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 7895 typedef struct sDot11fIEWscBeacon { 7896 uint8_t present; 7897 tDot11fTLVVersion Version; 7898 tDot11fTLVWPSState WPSState; 7899 tDot11fTLVAPSetupLocked APSetupLocked; 7900 tDot11fTLVSelectedRegistrar SelectedRegistrar; 7901 tDot11fTLVDevicePasswordID DevicePasswordID; 7902 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods; 7903 tDot11fTLVUUID_E UUID_E; 7904 tDot11fTLVRFBands RFBands; 7905 tDot11fTLVVendorExtension VendorExtension; 7906 } tDot11fIEWscBeacon; 7907 7908 #define DOT11F_EID_WSCBEACON (221) 7909 7910 /* N.B. These #defines do *not* include the EID & length */ 7911 #define DOT11F_IE_WSCBEACON_MIN_LEN (4) 7912 7913 #define DOT11F_IE_WSCBEACON_MAX_LEN (82) 7914 7915 #ifdef __cplusplus 7916 extern "C" { 7917 #endif /* C++ */ 7918 __must_check uint32_t dot11f_unpack_ie_wsc_beacon( 7919 tpAniSirGlobal, 7920 uint8_t *, 7921 uint8_t, 7922 tDot11fIEWscBeacon*, 7923 bool); 7924 7925 uint32_t dot11f_pack_ie_wsc_beacon( 7926 tpAniSirGlobal, 7927 tDot11fIEWscBeacon *, 7928 uint8_t *, 7929 uint32_t, 7930 uint32_t*); 7931 7932 uint32_t dot11f_get_packed_ie_wsc_beacon( 7933 tpAniSirGlobal, 7934 tDot11fIEWscBeacon *, 7935 uint32_t*); 7936 7937 #ifdef __cplusplus 7938 }; /* End extern "C". */ 7939 #endif /* C++ */ 7940 7941 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 7942 typedef struct sDot11fIEWscBeaconProbeRes { 7943 uint8_t present; 7944 tDot11fTLVVersion Version; 7945 tDot11fTLVWPSState WPSState; 7946 tDot11fTLVAPSetupLocked APSetupLocked; 7947 tDot11fTLVSelectedRegistrar SelectedRegistrar; 7948 tDot11fTLVDevicePasswordID DevicePasswordID; 7949 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods; 7950 tDot11fTLVResponseType ResponseType; 7951 tDot11fTLVUUID_E UUID_E; 7952 tDot11fTLVManufacturer Manufacturer; 7953 tDot11fTLVModelName ModelName; 7954 tDot11fTLVModelNumber ModelNumber; 7955 tDot11fTLVSerialNumber SerialNumber; 7956 tDot11fTLVPrimaryDeviceType PrimaryDeviceType; 7957 tDot11fTLVDeviceName DeviceName; 7958 tDot11fTLVConfigMethods ConfigMethods; 7959 tDot11fTLVRFBands RFBands; 7960 tDot11fTLVVendorExtension VendorExtension; 7961 } tDot11fIEWscBeaconProbeRes; 7962 7963 #define DOT11F_EID_WSCBEACONPROBERES (221) 7964 7965 /* N.B. These #defines do *not* include the EID & length */ 7966 #define DOT11F_IE_WSCBEACONPROBERES_MIN_LEN (4) 7967 7968 #define DOT11F_IE_WSCBEACONPROBERES_MAX_LEN (317) 7969 7970 #ifdef __cplusplus 7971 extern "C" { 7972 #endif /* C++ */ 7973 __must_check uint32_t dot11f_unpack_ie_wsc_beacon_probe_res( 7974 tpAniSirGlobal, 7975 uint8_t *, 7976 uint8_t, 7977 tDot11fIEWscBeaconProbeRes*, 7978 bool); 7979 7980 uint32_t dot11f_pack_ie_wsc_beacon_probe_res( 7981 tpAniSirGlobal, 7982 tDot11fIEWscBeaconProbeRes *, 7983 uint8_t *, 7984 uint32_t, 7985 uint32_t*); 7986 7987 uint32_t dot11f_get_packed_ie_wsc_beacon_probe_res( 7988 tpAniSirGlobal, 7989 tDot11fIEWscBeaconProbeRes *, 7990 uint32_t*); 7991 7992 #ifdef __cplusplus 7993 }; /* End extern "C". */ 7994 #endif /* C++ */ 7995 7996 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} */ 7997 typedef struct sDot11fIEWscIEOpaque { 7998 uint8_t present; 7999 uint8_t num_data; 8000 uint8_t data[249]; 8001 } tDot11fIEWscIEOpaque; 8002 8003 #define DOT11F_EID_WSCIEOPAQUE (221) 8004 8005 /* N.B. These #defines do *not* include the EID & length */ 8006 #define DOT11F_IE_WSCIEOPAQUE_MIN_LEN (6) 8007 8008 #define DOT11F_IE_WSCIEOPAQUE_MAX_LEN (253) 8009 8010 #ifdef __cplusplus 8011 extern "C" { 8012 #endif /* C++ */ 8013 __must_check uint32_t dot11f_unpack_ie_wsc_ie_opaque( 8014 tpAniSirGlobal, 8015 uint8_t *, 8016 uint8_t, 8017 tDot11fIEWscIEOpaque*, 8018 bool); 8019 8020 uint32_t dot11f_pack_ie_wsc_ie_opaque( 8021 tpAniSirGlobal, 8022 tDot11fIEWscIEOpaque *, 8023 uint8_t *, 8024 uint32_t, 8025 uint32_t*); 8026 8027 uint32_t dot11f_get_packed_ie_WscIEOpaque( 8028 tpAniSirGlobal, 8029 tDot11fIEWscIEOpaque *, 8030 uint32_t*); 8031 8032 #ifdef __cplusplus 8033 }; /* End extern "C". */ 8034 #endif /* C++ */ 8035 8036 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 8037 typedef struct sDot11fIEWscProbeReq { 8038 uint8_t present; 8039 tDot11fTLVVersion Version; 8040 tDot11fTLVRequestType RequestType; 8041 tDot11fTLVConfigMethods ConfigMethods; 8042 tDot11fTLVUUID_E UUID_E; 8043 tDot11fTLVPrimaryDeviceType PrimaryDeviceType; 8044 tDot11fTLVRFBands RFBands; 8045 tDot11fTLVAssociationState AssociationState; 8046 tDot11fTLVConfigurationError ConfigurationError; 8047 tDot11fTLVDevicePasswordID DevicePasswordID; 8048 tDot11fTLVManufacturer Manufacturer; 8049 tDot11fTLVModelName ModelName; 8050 tDot11fTLVModelNumber ModelNumber; 8051 tDot11fTLVDeviceName DeviceName; 8052 tDot11fTLVVendorExtension VendorExtension; 8053 tDot11fTLVRequestDeviceType RequestDeviceType; 8054 } tDot11fIEWscProbeReq; 8055 8056 #define DOT11F_EID_WSCPROBEREQ (221) 8057 8058 /* N.B. These #defines do *not* include the EID & length */ 8059 #define DOT11F_IE_WSCPROBEREQ_MIN_LEN (4) 8060 8061 #define DOT11F_IE_WSCPROBEREQ_MAX_LEN (284) 8062 8063 #ifdef __cplusplus 8064 extern "C" { 8065 #endif /* C++ */ 8066 __must_check uint32_t dot11f_unpack_ie_wsc_probe_req( 8067 tpAniSirGlobal, 8068 uint8_t *, 8069 uint8_t, 8070 tDot11fIEWscProbeReq*, 8071 bool); 8072 8073 uint32_t dot11f_pack_ie_wsc_probe_req( 8074 tpAniSirGlobal, 8075 tDot11fIEWscProbeReq *, 8076 uint8_t *, 8077 uint32_t, 8078 uint32_t*); 8079 8080 uint32_t dot11f_get_packed_ie_wsc_probe_req( 8081 tpAniSirGlobal, 8082 tDot11fIEWscProbeReq *, 8083 uint32_t*); 8084 8085 #ifdef __cplusplus 8086 }; /* End extern "C". */ 8087 #endif /* C++ */ 8088 8089 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 8090 typedef struct sDot11fIEWscProbeRes { 8091 uint8_t present; 8092 tDot11fTLVVersion Version; 8093 tDot11fTLVWPSState WPSState; 8094 tDot11fTLVAPSetupLocked APSetupLocked; 8095 tDot11fTLVSelectedRegistrar SelectedRegistrar; 8096 tDot11fTLVDevicePasswordID DevicePasswordID; 8097 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods; 8098 tDot11fTLVResponseType ResponseType; 8099 tDot11fTLVUUID_E UUID_E; 8100 tDot11fTLVManufacturer Manufacturer; 8101 tDot11fTLVModelName ModelName; 8102 tDot11fTLVModelNumber ModelNumber; 8103 tDot11fTLVSerialNumber SerialNumber; 8104 tDot11fTLVPrimaryDeviceType PrimaryDeviceType; 8105 tDot11fTLVDeviceName DeviceName; 8106 tDot11fTLVConfigMethods ConfigMethods; 8107 tDot11fTLVRFBands RFBands; 8108 tDot11fTLVVendorExtension VendorExtension; 8109 } tDot11fIEWscProbeRes; 8110 8111 #define DOT11F_EID_WSCPROBERES (221) 8112 8113 /* N.B. These #defines do *not* include the EID & length */ 8114 #define DOT11F_IE_WSCPROBERES_MIN_LEN (4) 8115 8116 #define DOT11F_IE_WSCPROBERES_MAX_LEN (317) 8117 8118 #ifdef __cplusplus 8119 extern "C" { 8120 #endif /* C++ */ 8121 __must_check uint32_t dot11f_unpack_ie_wsc_probe_res( 8122 tpAniSirGlobal, 8123 uint8_t *, 8124 uint8_t, 8125 tDot11fIEWscProbeRes*, 8126 bool); 8127 8128 uint32_t dot11f_pack_ie_wsc_probe_res( 8129 tpAniSirGlobal, 8130 tDot11fIEWscProbeRes *, 8131 uint8_t *, 8132 uint32_t, 8133 uint32_t*); 8134 8135 uint32_t dot11f_get_packed_ie_wsc_probe_res( 8136 tpAniSirGlobal, 8137 tDot11fIEWscProbeRes *, 8138 uint32_t*); 8139 8140 #ifdef __cplusplus 8141 }; /* End extern "C". */ 8142 #endif /* C++ */ 8143 8144 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 8145 typedef struct sDot11fIEWscReassocRes { 8146 uint8_t present; 8147 tDot11fTLVVersion Version; 8148 tDot11fTLVResponseType ResponseType; 8149 tDot11fTLVVendorExtension VendorExtension; 8150 } tDot11fIEWscReassocRes; 8151 8152 #define DOT11F_EID_WSCREASSOCRES (221) 8153 8154 /* N.B. These #defines do *not* include the EID & length */ 8155 #define DOT11F_IE_WSCREASSOCRES_MIN_LEN (4) 8156 8157 #define DOT11F_IE_WSCREASSOCRES_MAX_LEN (35) 8158 8159 #ifdef __cplusplus 8160 extern "C" { 8161 #endif /* C++ */ 8162 __must_check uint32_t dot11f_unpack_ie_wsc_reassoc_res( 8163 tpAniSirGlobal, 8164 uint8_t *, 8165 uint8_t, 8166 tDot11fIEWscReassocRes*, 8167 bool); 8168 8169 uint32_t dot11f_pack_ie_wsc_reassoc_res( 8170 tpAniSirGlobal, 8171 tDot11fIEWscReassocRes *, 8172 uint8_t *, 8173 uint32_t, 8174 uint32_t*); 8175 8176 uint32_t dot11f_get_packed_ie_wsc_reassoc_res( 8177 tpAniSirGlobal, 8178 tDot11fIEWscReassocRes *, 8179 uint32_t*); 8180 8181 #ifdef __cplusplus 8182 }; /* End extern "C". */ 8183 #endif /* C++ */ 8184 8185 /* EID 159 (0x9f) */ 8186 typedef struct sDot11fIEaddba_extn_element { 8187 uint8_t present; 8188 uint8_t no_fragmentation:1; 8189 uint8_t he_frag_operation:2; 8190 uint8_t reserved:5; 8191 } tDot11fIEaddba_extn_element; 8192 8193 #define DOT11F_EID_ADDBA_EXTN_ELEMENT (159) 8194 8195 /* N.B. These #defines do *not* include the EID & length */ 8196 #define DOT11F_IE_ADDBA_EXTN_ELEMENT_MIN_LEN (1) 8197 8198 #define DOT11F_IE_ADDBA_EXTN_ELEMENT_MAX_LEN (1) 8199 8200 #ifdef __cplusplus 8201 extern "C" { 8202 #endif /* C++ */ 8203 __must_check uint32_t dot11f_unpack_ie_addba_extn_element( 8204 tpAniSirGlobal, 8205 uint8_t *, 8206 uint8_t, 8207 tDot11fIEaddba_extn_element*, 8208 bool); 8209 8210 uint32_t dot11f_pack_ie_addba_extn_element( 8211 tpAniSirGlobal, 8212 tDot11fIEaddba_extn_element *, 8213 uint8_t *, 8214 uint32_t, 8215 uint32_t*); 8216 8217 uint32_t dot11f_get_packed_ie_addba_extn_element( 8218 tpAniSirGlobal, 8219 tDot11fIEaddba_extn_element *, 8220 uint32_t*); 8221 8222 #ifdef __cplusplus 8223 }; /* End extern "C". */ 8224 #endif /* C++ */ 8225 8226 /* EID 255 (0xff) Extended EID 42 (0x2a) */ 8227 typedef struct sDot11fIEbss_color_change { 8228 uint8_t present; 8229 uint8_t countdown; 8230 uint8_t new_color:6; 8231 uint8_t reserved:2; 8232 } tDot11fIEbss_color_change; 8233 8234 #define DOT11F_EID_BSS_COLOR_CHANGE (255) 8235 8236 /* N.B. These #defines do *not* include the EID & length */ 8237 #define DOT11F_IE_BSS_COLOR_CHANGE_MIN_LEN (2) 8238 8239 #define DOT11F_IE_BSS_COLOR_CHANGE_MAX_LEN (2) 8240 8241 #ifdef __cplusplus 8242 extern "C" { 8243 #endif /* C++ */ 8244 __must_check uint32_t dot11f_unpack_ie_bss_color_change( 8245 tpAniSirGlobal, 8246 uint8_t *, 8247 uint8_t, 8248 tDot11fIEbss_color_change*, 8249 bool); 8250 8251 uint32_t dot11f_pack_ie_bss_color_change( 8252 tpAniSirGlobal, 8253 tDot11fIEbss_color_change *, 8254 uint8_t *, 8255 uint32_t, 8256 uint32_t*); 8257 8258 uint32_t dot11f_get_packed_ie_bss_color_change( 8259 tpAniSirGlobal, 8260 tDot11fIEbss_color_change *, 8261 uint32_t*); 8262 8263 #ifdef __cplusplus 8264 }; /* End extern "C". */ 8265 #endif /* C++ */ 8266 8267 /* EID 255 (0xff) Extended EID 32 (0x20) */ 8268 typedef struct sDot11fIEdh_parameter_element { 8269 uint8_t present; 8270 uint8_t group[2]; 8271 uint8_t num_public_key; 8272 uint8_t public_key[255]; 8273 } tDot11fIEdh_parameter_element; 8274 8275 #define DOT11F_EID_DH_PARAMETER_ELEMENT (255) 8276 8277 /* N.B. These #defines do *not* include the EID & length */ 8278 #define DOT11F_IE_DH_PARAMETER_ELEMENT_MIN_LEN (2) 8279 8280 #define DOT11F_IE_DH_PARAMETER_ELEMENT_MAX_LEN (257) 8281 8282 #ifdef __cplusplus 8283 extern "C" { 8284 #endif /* C++ */ 8285 __must_check uint32_t dot11f_unpack_ie_dh_parameter_element( 8286 tpAniSirGlobal, 8287 uint8_t *, 8288 uint8_t, 8289 tDot11fIEdh_parameter_element*, 8290 bool); 8291 8292 uint32_t dot11f_pack_ie_dh_parameter_element( 8293 tpAniSirGlobal, 8294 tDot11fIEdh_parameter_element *, 8295 uint8_t *, 8296 uint32_t, 8297 uint32_t*); 8298 8299 uint32_t dot11f_get_packed_ie_dh_parameter_element( 8300 tpAniSirGlobal, 8301 tDot11fIEdh_parameter_element *, 8302 uint32_t*); 8303 8304 #ifdef __cplusplus 8305 }; /* End extern "C". */ 8306 #endif /* C++ */ 8307 8308 /* EID 255 (0xff) Extended EID 11 (0x0b) */ 8309 typedef struct sDot11fIEesp_information { 8310 uint8_t present; 8311 uint8_t num_data; 8312 uint8_t data[96]; 8313 } tDot11fIEesp_information; 8314 8315 #define DOT11F_EID_ESP_INFORMATION (255) 8316 8317 /* N.B. These #defines do *not* include the EID & length */ 8318 #define DOT11F_IE_ESP_INFORMATION_MIN_LEN (0) 8319 8320 #define DOT11F_IE_ESP_INFORMATION_MAX_LEN (96) 8321 8322 #ifdef __cplusplus 8323 extern "C" { 8324 #endif /* C++ */ 8325 __must_check uint32_t dot11f_unpack_ie_esp_information( 8326 tpAniSirGlobal, 8327 uint8_t *, 8328 uint8_t, 8329 tDot11fIEesp_information*, 8330 bool); 8331 8332 uint32_t dot11f_pack_ie_esp_information( 8333 tpAniSirGlobal, 8334 tDot11fIEesp_information *, 8335 uint8_t *, 8336 uint32_t, 8337 uint32_t*); 8338 8339 uint32_t dot11f_get_packed_ie_esp_information( 8340 tpAniSirGlobal, 8341 tDot11fIEesp_information *, 8342 uint32_t*); 8343 8344 #ifdef __cplusplus 8345 }; /* End extern "C". */ 8346 #endif /* C++ */ 8347 8348 /* EID 60 (0x3c) */ 8349 typedef struct sDot11fIEext_chan_switch_ann { 8350 uint8_t present; 8351 uint8_t switch_mode; 8352 uint8_t new_reg_class; 8353 uint8_t new_channel; 8354 uint8_t switch_count; 8355 } tDot11fIEext_chan_switch_ann; 8356 8357 #define DOT11F_EID_EXT_CHAN_SWITCH_ANN (60) 8358 8359 /* N.B. These #defines do *not* include the EID & length */ 8360 #define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MIN_LEN (4) 8361 8362 #define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MAX_LEN (4) 8363 8364 #ifdef __cplusplus 8365 extern "C" { 8366 #endif /* C++ */ 8367 __must_check uint32_t dot11f_unpack_ie_ext_chan_switch_ann( 8368 tpAniSirGlobal, 8369 uint8_t *, 8370 uint8_t, 8371 tDot11fIEext_chan_switch_ann*, 8372 bool); 8373 8374 uint32_t dot11f_pack_ie_ext_chan_switch_ann( 8375 tpAniSirGlobal, 8376 tDot11fIEext_chan_switch_ann *, 8377 uint8_t *, 8378 uint32_t, 8379 uint32_t*); 8380 8381 uint32_t dot11f_get_packed_ie_ext_chan_switch_ann( 8382 tpAniSirGlobal, 8383 tDot11fIEext_chan_switch_ann *, 8384 uint32_t*); 8385 8386 #ifdef __cplusplus 8387 }; /* End extern "C". */ 8388 #endif /* C++ */ 8389 8390 /* EID 255 (0xff) Extended EID 1 (0x01) */ 8391 typedef struct sDot11fIEfils_assoc_delay_info { 8392 uint8_t present; 8393 uint8_t assoc_delay_info; 8394 } tDot11fIEfils_assoc_delay_info; 8395 8396 #define DOT11F_EID_FILS_ASSOC_DELAY_INFO (255) 8397 8398 /* N.B. These #defines do *not* include the EID & length */ 8399 #define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MIN_LEN (1) 8400 8401 #define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MAX_LEN (1) 8402 8403 #ifdef __cplusplus 8404 extern "C" { 8405 #endif /* C++ */ 8406 __must_check uint32_t dot11f_unpack_ie_fils_assoc_delay_info( 8407 tpAniSirGlobal, 8408 uint8_t *, 8409 uint8_t, 8410 tDot11fIEfils_assoc_delay_info*, 8411 bool); 8412 8413 uint32_t dot11f_pack_ie_fils_assoc_delay_info( 8414 tpAniSirGlobal, 8415 tDot11fIEfils_assoc_delay_info *, 8416 uint8_t *, 8417 uint32_t, 8418 uint32_t*); 8419 8420 uint32_t dot11f_get_packed_ie_fils_assoc_delay_info( 8421 tpAniSirGlobal, 8422 tDot11fIEfils_assoc_delay_info *, 8423 uint32_t*); 8424 8425 #ifdef __cplusplus 8426 }; /* End extern "C". */ 8427 #endif /* C++ */ 8428 8429 /* EID 255 (0xff) Extended EID 5 (0x05) */ 8430 typedef struct sDot11fIEfils_hlp_container { 8431 uint8_t present; 8432 uint8_t dest_mac[6]; 8433 uint8_t src_mac[6]; 8434 uint8_t num_hlp_packet; 8435 uint8_t hlp_packet[255]; 8436 } tDot11fIEfils_hlp_container; 8437 8438 #define DOT11F_EID_FILS_HLP_CONTAINER (255) 8439 8440 /* N.B. These #defines do *not* include the EID & length */ 8441 #define DOT11F_IE_FILS_HLP_CONTAINER_MIN_LEN (12) 8442 8443 #define DOT11F_IE_FILS_HLP_CONTAINER_MAX_LEN (267) 8444 8445 #ifdef __cplusplus 8446 extern "C" { 8447 #endif /* C++ */ 8448 __must_check uint32_t dot11f_unpack_ie_fils_hlp_container( 8449 tpAniSirGlobal, 8450 uint8_t *, 8451 uint8_t, 8452 tDot11fIEfils_hlp_container*, 8453 bool); 8454 8455 uint32_t dot11f_pack_ie_fils_hlp_container( 8456 tpAniSirGlobal, 8457 tDot11fIEfils_hlp_container *, 8458 uint8_t *, 8459 uint32_t, 8460 uint32_t*); 8461 8462 uint32_t dot11f_get_packed_ie_fils_hlp_container( 8463 tpAniSirGlobal, 8464 tDot11fIEfils_hlp_container *, 8465 uint32_t*); 8466 8467 #ifdef __cplusplus 8468 }; /* End extern "C". */ 8469 #endif /* C++ */ 8470 8471 /* EID 240 (0xf0) */ 8472 typedef struct sDot11fIEfils_indication { 8473 uint8_t present; 8474 uint16_t public_key_identifiers_cnt:3; 8475 uint16_t realm_identifiers_cnt:3; 8476 uint16_t is_ip_config_supported:1; 8477 uint16_t is_cache_id_present:1; 8478 uint16_t is_hessid_present:1; 8479 uint16_t is_fils_sk_auth_supported:1; 8480 uint16_t is_fils_sk_auth_pfs_supported:1; 8481 uint16_t is_pk_auth_supported:1; 8482 uint16_t reserved:4; 8483 uint8_t num_variable_data; 8484 uint8_t variable_data[255]; 8485 } tDot11fIEfils_indication; 8486 8487 #define DOT11F_EID_FILS_INDICATION (240) 8488 8489 /* N.B. These #defines do *not* include the EID & length */ 8490 #define DOT11F_IE_FILS_INDICATION_MIN_LEN (4) 8491 8492 #define DOT11F_IE_FILS_INDICATION_MAX_LEN (257) 8493 8494 #ifdef __cplusplus 8495 extern "C" { 8496 #endif /* C++ */ 8497 __must_check uint32_t dot11f_unpack_ie_fils_indication( 8498 tpAniSirGlobal, 8499 uint8_t *, 8500 uint8_t, 8501 tDot11fIEfils_indication*, 8502 bool); 8503 8504 uint32_t dot11f_pack_ie_fils_indication( 8505 tpAniSirGlobal, 8506 tDot11fIEfils_indication *, 8507 uint8_t *, 8508 uint32_t, 8509 uint32_t*); 8510 8511 uint32_t dot11f_get_packed_ie_fils_indication( 8512 tpAniSirGlobal, 8513 tDot11fIEfils_indication *, 8514 uint32_t*); 8515 8516 #ifdef __cplusplus 8517 }; /* End extern "C". */ 8518 #endif /* C++ */ 8519 8520 /* EID 255 (0xff) Extended EID 7 (0x07) */ 8521 typedef struct sDot11fIEfils_kde { 8522 uint8_t present; 8523 uint8_t key_rsc[8]; 8524 uint8_t num_kde_list; 8525 uint8_t kde_list[255]; 8526 } tDot11fIEfils_kde; 8527 8528 #define DOT11F_EID_FILS_KDE (255) 8529 8530 /* N.B. These #defines do *not* include the EID & length */ 8531 #define DOT11F_IE_FILS_KDE_MIN_LEN (8) 8532 8533 #define DOT11F_IE_FILS_KDE_MAX_LEN (263) 8534 8535 #ifdef __cplusplus 8536 extern "C" { 8537 #endif /* C++ */ 8538 __must_check uint32_t dot11f_unpack_ie_fils_kde( 8539 tpAniSirGlobal, 8540 uint8_t *, 8541 uint8_t, 8542 tDot11fIEfils_kde*, 8543 bool); 8544 8545 uint32_t dot11f_pack_ie_fils_kde( 8546 tpAniSirGlobal, 8547 tDot11fIEfils_kde *, 8548 uint8_t *, 8549 uint32_t, 8550 uint32_t*); 8551 8552 uint32_t dot11f_get_packed_ie_fils_kde( 8553 tpAniSirGlobal, 8554 tDot11fIEfils_kde *, 8555 uint32_t*); 8556 8557 #ifdef __cplusplus 8558 }; /* End extern "C". */ 8559 #endif /* C++ */ 8560 8561 /* EID 255 (0xff) Extended EID 3 (0x03) */ 8562 typedef struct sDot11fIEfils_key_confirmation { 8563 uint8_t present; 8564 uint8_t num_key_auth; 8565 uint8_t key_auth[255]; 8566 } tDot11fIEfils_key_confirmation; 8567 8568 #define DOT11F_EID_FILS_KEY_CONFIRMATION (255) 8569 8570 /* N.B. These #defines do *not* include the EID & length */ 8571 #define DOT11F_IE_FILS_KEY_CONFIRMATION_MIN_LEN (0) 8572 8573 #define DOT11F_IE_FILS_KEY_CONFIRMATION_MAX_LEN (255) 8574 8575 #ifdef __cplusplus 8576 extern "C" { 8577 #endif /* C++ */ 8578 __must_check uint32_t dot11f_unpack_ie_fils_key_confirmation( 8579 tpAniSirGlobal, 8580 uint8_t *, 8581 uint8_t, 8582 tDot11fIEfils_key_confirmation*, 8583 bool); 8584 8585 uint32_t dot11f_pack_ie_fils_key_confirmation( 8586 tpAniSirGlobal, 8587 tDot11fIEfils_key_confirmation *, 8588 uint8_t *, 8589 uint32_t, 8590 uint32_t*); 8591 8592 uint32_t dot11f_get_packed_ie_fils_key_confirmation( 8593 tpAniSirGlobal, 8594 tDot11fIEfils_key_confirmation *, 8595 uint32_t*); 8596 8597 #ifdef __cplusplus 8598 }; /* End extern "C". */ 8599 #endif /* C++ */ 8600 8601 /* EID 255 (0xff) Extended EID 13 (0x0d) */ 8602 typedef struct sDot11fIEfils_nonce { 8603 uint8_t present; 8604 uint8_t nonce[16]; 8605 } tDot11fIEfils_nonce; 8606 8607 #define DOT11F_EID_FILS_NONCE (255) 8608 8609 /* N.B. These #defines do *not* include the EID & length */ 8610 #define DOT11F_IE_FILS_NONCE_MIN_LEN (16) 8611 8612 #define DOT11F_IE_FILS_NONCE_MAX_LEN (16) 8613 8614 #ifdef __cplusplus 8615 extern "C" { 8616 #endif /* C++ */ 8617 __must_check uint32_t dot11f_unpack_ie_fils_nonce( 8618 tpAniSirGlobal, 8619 uint8_t *, 8620 uint8_t, 8621 tDot11fIEfils_nonce*, 8622 bool); 8623 8624 uint32_t dot11f_pack_ie_fils_nonce( 8625 tpAniSirGlobal, 8626 tDot11fIEfils_nonce *, 8627 uint8_t *, 8628 uint32_t, 8629 uint32_t*); 8630 8631 uint32_t dot11f_get_packed_ie_fils_nonce( 8632 tpAniSirGlobal, 8633 tDot11fIEfils_nonce *, 8634 uint32_t*); 8635 8636 #ifdef __cplusplus 8637 }; /* End extern "C". */ 8638 #endif /* C++ */ 8639 8640 /* EID 255 (0xff) Extended EID 12 (0x0c) */ 8641 typedef struct sDot11fIEfils_public_key { 8642 uint8_t present; 8643 uint8_t key_type; 8644 uint8_t num_public_key; 8645 uint8_t public_key[255]; 8646 } tDot11fIEfils_public_key; 8647 8648 #define DOT11F_EID_FILS_PUBLIC_KEY (255) 8649 8650 /* N.B. These #defines do *not* include the EID & length */ 8651 #define DOT11F_IE_FILS_PUBLIC_KEY_MIN_LEN (1) 8652 8653 #define DOT11F_IE_FILS_PUBLIC_KEY_MAX_LEN (256) 8654 8655 #ifdef __cplusplus 8656 extern "C" { 8657 #endif /* C++ */ 8658 __must_check uint32_t dot11f_unpack_ie_fils_public_key( 8659 tpAniSirGlobal, 8660 uint8_t *, 8661 uint8_t, 8662 tDot11fIEfils_public_key*, 8663 bool); 8664 8665 uint32_t dot11f_pack_ie_fils_public_key( 8666 tpAniSirGlobal, 8667 tDot11fIEfils_public_key *, 8668 uint8_t *, 8669 uint32_t, 8670 uint32_t*); 8671 8672 uint32_t dot11f_get_packed_ie_fils_public_key( 8673 tpAniSirGlobal, 8674 tDot11fIEfils_public_key *, 8675 uint32_t*); 8676 8677 #ifdef __cplusplus 8678 }; /* End extern "C". */ 8679 #endif /* C++ */ 8680 8681 /* EID 255 (0xff) Extended EID 4 (0x04) */ 8682 typedef struct sDot11fIEfils_session { 8683 uint8_t present; 8684 uint8_t session[8]; 8685 } tDot11fIEfils_session; 8686 8687 #define DOT11F_EID_FILS_SESSION (255) 8688 8689 /* N.B. These #defines do *not* include the EID & length */ 8690 #define DOT11F_IE_FILS_SESSION_MIN_LEN (8) 8691 8692 #define DOT11F_IE_FILS_SESSION_MAX_LEN (8) 8693 8694 #ifdef __cplusplus 8695 extern "C" { 8696 #endif /* C++ */ 8697 __must_check uint32_t dot11f_unpack_ie_fils_session( 8698 tpAniSirGlobal, 8699 uint8_t *, 8700 uint8_t, 8701 tDot11fIEfils_session*, 8702 bool); 8703 8704 uint32_t dot11f_pack_ie_fils_session( 8705 tpAniSirGlobal, 8706 tDot11fIEfils_session *, 8707 uint8_t *, 8708 uint32_t, 8709 uint32_t*); 8710 8711 uint32_t dot11f_get_packed_ie_fils_session( 8712 tpAniSirGlobal, 8713 tDot11fIEfils_session *, 8714 uint32_t*); 8715 8716 #ifdef __cplusplus 8717 }; /* End extern "C". */ 8718 #endif /* C++ */ 8719 8720 /* EID 255 (0xff) Extended EID 8 (0x08) */ 8721 typedef struct sDot11fIEfils_wrapped_data { 8722 uint8_t present; 8723 uint8_t num_wrapped_data; 8724 uint8_t wrapped_data[255]; 8725 } tDot11fIEfils_wrapped_data; 8726 8727 #define DOT11F_EID_FILS_WRAPPED_DATA (255) 8728 8729 /* N.B. These #defines do *not* include the EID & length */ 8730 #define DOT11F_IE_FILS_WRAPPED_DATA_MIN_LEN (0) 8731 8732 #define DOT11F_IE_FILS_WRAPPED_DATA_MAX_LEN (255) 8733 8734 #ifdef __cplusplus 8735 extern "C" { 8736 #endif /* C++ */ 8737 __must_check uint32_t dot11f_unpack_ie_fils_wrapped_data( 8738 tpAniSirGlobal, 8739 uint8_t *, 8740 uint8_t, 8741 tDot11fIEfils_wrapped_data*, 8742 bool); 8743 8744 uint32_t dot11f_pack_ie_fils_wrapped_data( 8745 tpAniSirGlobal, 8746 tDot11fIEfils_wrapped_data *, 8747 uint8_t *, 8748 uint32_t, 8749 uint32_t*); 8750 8751 uint32_t dot11f_get_packed_ie_fils_wrapped_data( 8752 tpAniSirGlobal, 8753 tDot11fIEfils_wrapped_data *, 8754 uint32_t*); 8755 8756 #ifdef __cplusplus 8757 }; /* End extern "C". */ 8758 #endif /* C++ */ 8759 8760 /* EID 242 (0xf2) */ 8761 typedef struct sDot11fIEfragment_ie { 8762 uint8_t present; 8763 uint8_t num_data; 8764 uint8_t data[255]; 8765 } tDot11fIEfragment_ie; 8766 8767 #define DOT11F_EID_FRAGMENT_IE (242) 8768 8769 /* N.B. These #defines do *not* include the EID & length */ 8770 #define DOT11F_IE_FRAGMENT_IE_MIN_LEN (0) 8771 8772 #define DOT11F_IE_FRAGMENT_IE_MAX_LEN (255) 8773 8774 #ifdef __cplusplus 8775 extern "C" { 8776 #endif /* C++ */ 8777 __must_check uint32_t dot11f_unpack_ie_fragment_ie( 8778 tpAniSirGlobal, 8779 uint8_t *, 8780 uint8_t, 8781 tDot11fIEfragment_ie*, 8782 bool); 8783 8784 uint32_t dot11f_pack_ie_fragment_ie( 8785 tpAniSirGlobal, 8786 tDot11fIEfragment_ie *, 8787 uint8_t *, 8788 uint32_t, 8789 uint32_t*); 8790 8791 uint32_t dot11f_get_packed_ie_fragment_ie( 8792 tpAniSirGlobal, 8793 tDot11fIEfragment_ie *, 8794 uint32_t*); 8795 8796 #ifdef __cplusplus 8797 }; /* End extern "C". */ 8798 #endif /* C++ */ 8799 8800 /* EID 255 (0xff) Extended EID 35 (0x23) */ 8801 typedef struct sDot11fIEhe_cap { 8802 uint8_t present; 8803 uint32_t htc_he:1; 8804 uint32_t twt_request:1; 8805 uint32_t twt_responder:1; 8806 uint32_t fragmentation:2; 8807 uint32_t max_num_frag_msdu:3; 8808 uint32_t min_frag_size:2; 8809 uint32_t trigger_frm_mac_pad:2; 8810 uint32_t multi_tid_aggr:3; 8811 uint32_t he_link_adaptation:2; 8812 uint32_t all_ack:1; 8813 uint32_t ul_mu_rsp_sched:1; 8814 uint32_t a_bsr:1; 8815 uint32_t broadcast_twt:1; 8816 uint32_t ba_32bit_bitmap:1; 8817 uint32_t mu_cascade:1; 8818 uint32_t ack_enabled_multitid:1; 8819 uint32_t dl_mu_ba:1; 8820 uint32_t omi_a_ctrl:1; 8821 uint32_t ofdma_ra:1; 8822 uint32_t max_ampdu_len:2; 8823 uint32_t amsdu_frag:1; 8824 uint32_t flex_twt_sched:1; 8825 uint32_t rx_ctrl_frame:1; 8826 uint8_t bsrp_ampdu_aggr:1; 8827 uint8_t qtp:1; 8828 uint8_t a_bqr:1; 8829 uint8_t sr_responder:1; 8830 uint8_t ndp_feedback_supp:1; 8831 uint8_t ops_supp:1; 8832 uint8_t amsdu_in_ampdu:1; 8833 uint8_t reserved1:1; 8834 uint32_t dual_band:1; 8835 uint32_t chan_width_0:1; 8836 uint32_t chan_width_1:1; 8837 uint32_t chan_width_2:1; 8838 uint32_t chan_width_3:1; 8839 uint32_t chan_width_4:1; 8840 uint32_t chan_width_5:1; 8841 uint32_t chan_width_6:1; 8842 uint32_t rx_pream_puncturing:4; 8843 uint32_t device_class:1; 8844 uint32_t ldpc_coding:1; 8845 uint32_t he_1x_ltf_800_gi_ppdu:1; 8846 uint32_t midamble_rx_max_nsts:2; 8847 uint32_t he_4x_ltf_3200_gi_ndp:1; 8848 uint32_t tx_stbc_lt_80mhz:1; 8849 uint32_t rx_stbc_lt_80mhz:1; 8850 uint32_t doppler:2; 8851 uint32_t ul_mu:2; 8852 uint32_t dcm_enc_tx:3; 8853 uint32_t dcm_enc_rx:3; 8854 uint32_t ul_he_mu:1; 8855 uint32_t su_beamformer:1; 8856 uint32_t su_beamformee:1; 8857 uint32_t mu_beamformer:1; 8858 uint32_t bfee_sts_lt_80:3; 8859 uint32_t bfee_sts_gt_80:3; 8860 uint32_t num_sounding_lt_80:3; 8861 uint32_t num_sounding_gt_80:3; 8862 uint32_t su_feedback_tone16:1; 8863 uint32_t mu_feedback_tone16:1; 8864 uint32_t codebook_su:1; 8865 uint32_t codebook_mu:1; 8866 uint32_t beamforming_feedback:3; 8867 uint32_t he_er_su_ppdu:1; 8868 uint32_t dl_mu_mimo_part_bw:1; 8869 uint32_t ppet_present:1; 8870 uint32_t srp:1; 8871 uint32_t power_boost:1; 8872 uint32_t he_ltf_800_gi_4x:1; 8873 uint32_t max_nc:3; 8874 uint32_t tx_stbc_gt_80mhz:1; 8875 uint32_t rx_stbc_gt_80mhz:1; 8876 uint8_t er_he_ltf_800_gi_4x:1; 8877 uint8_t he_ppdu_20_in_40Mhz_2G:1; 8878 uint8_t he_ppdu_20_in_160_80p80Mhz:1; 8879 uint8_t he_ppdu_80_in_160_80p80Mhz:1; 8880 uint8_t er_1x_he_ltf_gi:1; 8881 uint8_t midamble_rx_1x_he_ltf:1; 8882 uint8_t reserved2:2; 8883 uint16_t rx_he_mcs_map_lt_80; 8884 uint16_t tx_he_mcs_map_lt_80; 8885 uint8_t rx_he_mcs_map_160[1][2]; 8886 uint8_t tx_he_mcs_map_160[1][2]; 8887 uint8_t rx_he_mcs_map_80_80[1][2]; 8888 uint8_t tx_he_mcs_map_80_80[1][2]; 8889 union { 8890 struct { 8891 uint8_t num_ppe_th; 8892 uint8_t ppe_th[25]; 8893 } ppe_threshold; /* ppet_present = 1 */ 8894 } ppet; 8895 } tDot11fIEhe_cap; 8896 8897 #define DOT11F_EID_HE_CAP (255) 8898 8899 /* N.B. These #defines do *not* include the EID & length */ 8900 #define DOT11F_IE_HE_CAP_MIN_LEN (18) 8901 8902 #define DOT11F_IE_HE_CAP_MAX_LEN (51) 8903 8904 #ifdef __cplusplus 8905 extern "C" { 8906 #endif /* C++ */ 8907 __must_check uint32_t dot11f_unpack_ie_he_cap( 8908 tpAniSirGlobal, 8909 uint8_t *, 8910 uint8_t, 8911 tDot11fIEhe_cap*, 8912 bool); 8913 8914 uint32_t dot11f_pack_ie_he_cap( 8915 tpAniSirGlobal, 8916 tDot11fIEhe_cap *, 8917 uint8_t *, 8918 uint32_t, 8919 uint32_t*); 8920 8921 uint32_t dot11f_get_packed_ie_he_cap( 8922 tpAniSirGlobal, 8923 tDot11fIEhe_cap *, 8924 uint32_t*); 8925 8926 #ifdef __cplusplus 8927 }; /* End extern "C". */ 8928 #endif /* C++ */ 8929 8930 /* EID 255 (0xff) Extended EID 36 (0x24) */ 8931 typedef struct sDot11fIEhe_op { 8932 uint8_t present; 8933 uint32_t bss_color:6; 8934 uint32_t default_pe:3; 8935 uint32_t twt_required:1; 8936 uint32_t rts_threshold:10; 8937 uint32_t partial_bss_col:1; 8938 uint32_t vht_oper_present:1; 8939 uint32_t reserved1:6; 8940 uint32_t mbssid_ap:1; 8941 uint32_t tx_bssid_ind:1; 8942 uint32_t bss_col_disabled:1; 8943 uint32_t reserved2:1; 8944 uint8_t basic_mcs_nss[2]; 8945 union { 8946 struct { 8947 uint8_t chan_width; 8948 uint8_t center_freq_seg0; 8949 uint8_t center_freq_seg1; 8950 } info; /* vht_oper_present = 1 */ 8951 } vht_oper; 8952 union { 8953 struct { 8954 uint8_t data; 8955 } info; /* mbssid_ap = 1 */ 8956 } maxbssid_ind; 8957 } tDot11fIEhe_op; 8958 8959 #define DOT11F_EID_HE_OP (255) 8960 8961 /* N.B. These #defines do *not* include the EID & length */ 8962 #define DOT11F_IE_HE_OP_MIN_LEN (6) 8963 8964 #define DOT11F_IE_HE_OP_MAX_LEN (10) 8965 8966 #ifdef __cplusplus 8967 extern "C" { 8968 #endif /* C++ */ 8969 __must_check uint32_t dot11f_unpack_ie_he_op( 8970 tpAniSirGlobal, 8971 uint8_t *, 8972 uint8_t, 8973 tDot11fIEhe_op*, 8974 bool); 8975 8976 uint32_t dot11f_pack_ie_he_op( 8977 tpAniSirGlobal, 8978 tDot11fIEhe_op *, 8979 uint8_t *, 8980 uint32_t, 8981 uint32_t*); 8982 8983 uint32_t dot11f_get_packed_ie_he_op( 8984 tpAniSirGlobal, 8985 tDot11fIEhe_op *, 8986 uint32_t*); 8987 8988 #ifdef __cplusplus 8989 }; /* End extern "C". */ 8990 #endif /* C++ */ 8991 8992 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x10} */ 8993 typedef struct sDot11fIEhs20vendor_ie { 8994 uint8_t present; 8995 uint8_t dgaf_dis:1; 8996 uint8_t hs_id_present:2; 8997 uint8_t reserved:1; 8998 uint8_t release_num:4; 8999 union { 9000 struct { 9001 uint16_t pps_mo_id; 9002 } pps_mo; /* hs_id_present = 1 */ 9003 struct { 9004 uint16_t anqp_domain_id; 9005 } anqp_domain; /* hs_id_present = 2 */ 9006 } hs_id; 9007 } tDot11fIEhs20vendor_ie; 9008 9009 #define DOT11F_EID_HS20VENDOR_IE (221) 9010 9011 /* N.B. These #defines do *not* include the EID & length */ 9012 #define DOT11F_IE_HS20VENDOR_IE_MIN_LEN (5) 9013 9014 #define DOT11F_IE_HS20VENDOR_IE_MAX_LEN (7) 9015 9016 #ifdef __cplusplus 9017 extern "C" { 9018 #endif /* C++ */ 9019 __must_check uint32_t dot11f_unpack_ie_hs20vendor_ie( 9020 tpAniSirGlobal, 9021 uint8_t *, 9022 uint8_t, 9023 tDot11fIEhs20vendor_ie*, 9024 bool); 9025 9026 uint32_t dot11f_pack_ie_hs20vendor_ie( 9027 tpAniSirGlobal, 9028 tDot11fIEhs20vendor_ie *, 9029 uint8_t *, 9030 uint32_t, 9031 uint32_t*); 9032 9033 uint32_t dot11f_get_packed_ie_hs20vendor_ie( 9034 tpAniSirGlobal, 9035 tDot11fIEhs20vendor_ie *, 9036 uint32_t*); 9037 9038 #ifdef __cplusplus 9039 }; /* End extern "C". */ 9040 #endif /* C++ */ 9041 9042 /* EID 72 (0x48) */ 9043 typedef struct sDot11fIEht2040_bss_coexistence { 9044 uint8_t present; 9045 uint8_t info_request:1; 9046 uint8_t forty_mhz_intolerant:1; 9047 uint8_t twenty_mhz_bsswidth_req:1; 9048 uint8_t obss_scan_exemption_req:1; 9049 uint8_t obss_scan_exemption_grant:1; 9050 uint8_t unused:3; 9051 } tDot11fIEht2040_bss_coexistence; 9052 9053 #define DOT11F_EID_HT2040_BSS_COEXISTENCE (72) 9054 9055 /* N.B. These #defines do *not* include the EID & length */ 9056 #define DOT11F_IE_HT2040_BSS_COEXISTENCE_MIN_LEN (1) 9057 9058 #define DOT11F_IE_HT2040_BSS_COEXISTENCE_MAX_LEN (1) 9059 9060 #ifdef __cplusplus 9061 extern "C" { 9062 #endif /* C++ */ 9063 __must_check uint32_t dot11f_unpack_ie_ht2040_bss_coexistence( 9064 tpAniSirGlobal, 9065 uint8_t *, 9066 uint8_t, 9067 tDot11fIEht2040_bss_coexistence*, 9068 bool); 9069 9070 uint32_t dot11f_pack_ie_ht2040_bss_coexistence( 9071 tpAniSirGlobal, 9072 tDot11fIEht2040_bss_coexistence *, 9073 uint8_t *, 9074 uint32_t, 9075 uint32_t*); 9076 9077 uint32_t dot11f_get_packed_ie_ht2040_bss_coexistence( 9078 tpAniSirGlobal, 9079 tDot11fIEht2040_bss_coexistence *, 9080 uint32_t*); 9081 9082 #ifdef __cplusplus 9083 }; /* End extern "C". */ 9084 #endif /* C++ */ 9085 9086 /* EID 73 (0x49) */ 9087 typedef struct sDot11fIEht2040_bss_intolerant_report { 9088 uint8_t present; 9089 uint8_t operating_class; 9090 uint8_t num_channel_list; 9091 uint8_t channel_list[50]; 9092 } tDot11fIEht2040_bss_intolerant_report; 9093 9094 #define DOT11F_EID_HT2040_BSS_INTOLERANT_REPORT (73) 9095 9096 /* N.B. These #defines do *not* include the EID & length */ 9097 #define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MIN_LEN (1) 9098 9099 #define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MAX_LEN (51) 9100 9101 #ifdef __cplusplus 9102 extern "C" { 9103 #endif /* C++ */ 9104 __must_check uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report( 9105 tpAniSirGlobal, 9106 uint8_t *, 9107 uint8_t, 9108 tDot11fIEht2040_bss_intolerant_report*, 9109 bool); 9110 9111 uint32_t dot11f_pack_ie_ht2040_bss_intolerant_report( 9112 tpAniSirGlobal, 9113 tDot11fIEht2040_bss_intolerant_report *, 9114 uint8_t *, 9115 uint32_t, 9116 uint32_t*); 9117 9118 uint32_t dot11f_get_packed_ie_ht2040_bss_intolerant_report( 9119 tpAniSirGlobal, 9120 tDot11fIEht2040_bss_intolerant_report *, 9121 uint32_t*); 9122 9123 #ifdef __cplusplus 9124 }; /* End extern "C". */ 9125 #endif /* C++ */ 9126 9127 /* EID 255 (0xff) Extended EID 38 (0x26) */ 9128 typedef struct sDot11fIEmu_edca_param_set { 9129 uint8_t present; 9130 uint8_t qos; 9131 uint8_t acbe_aifsn:4; 9132 uint8_t acbe_acm:1; 9133 uint8_t acbe_aci:2; 9134 uint8_t unused1:1; 9135 uint8_t acbe_acwmin:4; 9136 uint8_t acbe_acwmax:4; 9137 uint8_t acbe_muedca_timer; 9138 uint8_t acbk_aifsn:4; 9139 uint8_t acbk_acm:1; 9140 uint8_t acbk_aci:2; 9141 uint8_t unused2:1; 9142 uint8_t acbk_acwmin:4; 9143 uint8_t acbk_acwmax:4; 9144 uint8_t acbk_muedca_timer; 9145 uint8_t acvi_aifsn:4; 9146 uint8_t acvi_acm:1; 9147 uint8_t acvi_aci:2; 9148 uint8_t unused3:1; 9149 uint8_t acvi_acwmin:4; 9150 uint8_t acvi_acwmax:4; 9151 uint8_t acvi_muedca_timer; 9152 uint8_t acvo_aifsn:4; 9153 uint8_t acvo_acm:1; 9154 uint8_t acvo_aci:2; 9155 uint8_t unused4:1; 9156 uint8_t acvo_acwmin:4; 9157 uint8_t acvo_acwmax:4; 9158 uint8_t acvo_muedca_timer; 9159 } tDot11fIEmu_edca_param_set; 9160 9161 #define DOT11F_EID_MU_EDCA_PARAM_SET (255) 9162 9163 /* N.B. These #defines do *not* include the EID & length */ 9164 #define DOT11F_IE_MU_EDCA_PARAM_SET_MIN_LEN (13) 9165 9166 #define DOT11F_IE_MU_EDCA_PARAM_SET_MAX_LEN (13) 9167 9168 #ifdef __cplusplus 9169 extern "C" { 9170 #endif /* C++ */ 9171 __must_check uint32_t dot11f_unpack_ie_mu_edca_param_set( 9172 tpAniSirGlobal, 9173 uint8_t *, 9174 uint8_t, 9175 tDot11fIEmu_edca_param_set*, 9176 bool); 9177 9178 uint32_t dot11f_pack_ie_mu_edca_param_set( 9179 tpAniSirGlobal, 9180 tDot11fIEmu_edca_param_set *, 9181 uint8_t *, 9182 uint32_t, 9183 uint32_t*); 9184 9185 uint32_t dot11f_get_packed_ie_mu_edca_param_set( 9186 tpAniSirGlobal, 9187 tDot11fIEmu_edca_param_set *, 9188 uint32_t*); 9189 9190 #ifdef __cplusplus 9191 }; /* End extern "C". */ 9192 #endif /* C++ */ 9193 9194 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x12} */ 9195 typedef struct sDot11fIEosen_ie { 9196 uint8_t present; 9197 uint8_t num_data; 9198 uint8_t data[255]; 9199 } tDot11fIEosen_ie; 9200 9201 #define DOT11F_EID_OSEN_IE (221) 9202 9203 /* N.B. These #defines do *not* include the EID & length */ 9204 #define DOT11F_IE_OSEN_IE_MIN_LEN (4) 9205 9206 #define DOT11F_IE_OSEN_IE_MAX_LEN (259) 9207 9208 #ifdef __cplusplus 9209 extern "C" { 9210 #endif /* C++ */ 9211 __must_check uint32_t dot11f_unpack_ie_osen_ie( 9212 tpAniSirGlobal, 9213 uint8_t *, 9214 uint8_t, 9215 tDot11fIEosen_ie*, 9216 bool); 9217 9218 uint32_t dot11f_pack_ie_osen_ie( 9219 tpAniSirGlobal, 9220 tDot11fIEosen_ie *, 9221 uint8_t *, 9222 uint32_t, 9223 uint32_t*); 9224 9225 uint32_t dot11f_get_packed_ie_osen_ie( 9226 tpAniSirGlobal, 9227 tDot11fIEosen_ie *, 9228 uint32_t*); 9229 9230 #ifdef __cplusplus 9231 }; /* End extern "C". */ 9232 #endif /* C++ */ 9233 9234 /* EID 62 (0x3e) */ 9235 typedef struct sDot11fIEsec_chan_offset_ele { 9236 uint8_t present; 9237 uint8_t secondaryChannelOffset; 9238 } tDot11fIEsec_chan_offset_ele; 9239 9240 #define DOT11F_EID_SEC_CHAN_OFFSET_ELE (62) 9241 9242 /* N.B. These #defines do *not* include the EID & length */ 9243 #define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MIN_LEN (1) 9244 9245 #define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MAX_LEN (1) 9246 9247 #ifdef __cplusplus 9248 extern "C" { 9249 #endif /* C++ */ 9250 __must_check uint32_t dot11f_unpack_ie_sec_chan_offset_ele( 9251 tpAniSirGlobal, 9252 uint8_t *, 9253 uint8_t, 9254 tDot11fIEsec_chan_offset_ele*, 9255 bool); 9256 9257 uint32_t dot11f_pack_ie_sec_chan_offset_ele( 9258 tpAniSirGlobal, 9259 tDot11fIEsec_chan_offset_ele *, 9260 uint8_t *, 9261 uint32_t, 9262 uint32_t*); 9263 9264 uint32_t dot11f_get_packed_ie_sec_chan_offset_ele( 9265 tpAniSirGlobal, 9266 tDot11fIEsec_chan_offset_ele *, 9267 uint32_t*); 9268 9269 #ifdef __cplusplus 9270 }; /* End extern "C". */ 9271 #endif /* C++ */ 9272 9273 /* EID 221 (0xdd) {OUI 0x00, 0x90, 0x4c, 0x04} */ 9274 typedef struct sDot11fIEvendor_vht_ie { 9275 uint8_t present; 9276 uint8_t sub_type; 9277 tDot11fIEVHTCaps VHTCaps; 9278 tDot11fIEVHTOperation VHTOperation; 9279 } tDot11fIEvendor_vht_ie; 9280 9281 #define DOT11F_EID_VENDOR_VHT_IE (221) 9282 9283 /* N.B. These #defines do *not* include the EID & length */ 9284 #define DOT11F_IE_VENDOR_VHT_IE_MIN_LEN (5) 9285 9286 #define DOT11F_IE_VENDOR_VHT_IE_MAX_LEN (26) 9287 9288 #ifdef __cplusplus 9289 extern "C" { 9290 #endif /* C++ */ 9291 __must_check uint32_t dot11f_unpack_ie_vendor_vht_ie( 9292 tpAniSirGlobal, 9293 uint8_t *, 9294 uint8_t, 9295 tDot11fIEvendor_vht_ie*, 9296 bool); 9297 9298 uint32_t dot11f_pack_ie_vendor_vht_ie( 9299 tpAniSirGlobal, 9300 tDot11fIEvendor_vht_ie *, 9301 uint8_t *, 9302 uint32_t, 9303 uint32_t*); 9304 9305 uint32_t dot11f_get_packed_ie_vendor_vht_ie( 9306 tpAniSirGlobal, 9307 tDot11fIEvendor_vht_ie *, 9308 uint32_t*); 9309 9310 #ifdef __cplusplus 9311 }; /* End extern "C". */ 9312 #endif /* C++ */ 9313 /************************************************************************ 9314 * Frames 9315 **********************************************************************/ 9316 9317 typedef struct sDot11fAddTSRequest{ 9318 tDot11fFfCategory Category; 9319 tDot11fFfAction Action; 9320 tDot11fFfDialogToken DialogToken; 9321 tDot11fIETSPEC TSPEC; 9322 uint16_t num_TCLAS; 9323 tDot11fIETCLAS TCLAS[2]; 9324 tDot11fIETCLASSPROC TCLASSPROC; 9325 tDot11fIEWMMTSPEC WMMTSPEC; 9326 uint16_t num_WMMTCLAS; 9327 tDot11fIEWMMTCLAS WMMTCLAS[2]; 9328 tDot11fIEWMMTCLASPROC WMMTCLASPROC; 9329 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet; 9330 } tDot11fAddTSRequest; 9331 9332 #define DOT11F_ADDTSREQUEST (1) 9333 9334 #ifdef __cplusplus 9335 extern "C" { 9336 #endif /* C++ */ 9337 9338 uint32_t dot11f_unpack_add_ts_request(tpAniSirGlobal pCtx, 9339 uint8_t *pBuf, uint32_t nBuf, 9340 tDot11fAddTSRequest * pFrm, bool append_ie); 9341 uint32_t dot11f_pack_add_ts_request(tpAniSirGlobal pCtx, 9342 tDot11fAddTSRequest *pFrm, uint8_t *pBuf, 9343 uint32_t nBuf, uint32_t *pnConsumed); 9344 uint32_t dot11f_get_packed_add_ts_request_size(tpAniSirGlobal pCtx, 9345 tDot11fAddTSRequest *pFrm, 9346 uint32_t *pnNeeded); 9347 9348 #ifdef __cplusplus 9349 } /* End extern "C". */ 9350 #endif /* C++ */ 9351 9352 typedef struct sDot11fAddTSResponse{ 9353 tDot11fFfCategory Category; 9354 tDot11fFfAction Action; 9355 tDot11fFfDialogToken DialogToken; 9356 tDot11fFfStatus Status; 9357 tDot11fIETSDelay TSDelay; 9358 tDot11fIETSPEC TSPEC; 9359 uint16_t num_TCLAS; 9360 tDot11fIETCLAS TCLAS[2]; 9361 tDot11fIETCLASSPROC TCLASSPROC; 9362 tDot11fIESchedule Schedule; 9363 tDot11fIEWMMTSDelay WMMTSDelay; 9364 tDot11fIEWMMSchedule WMMSchedule; 9365 tDot11fIEWMMTSPEC WMMTSPEC; 9366 uint16_t num_WMMTCLAS; 9367 tDot11fIEWMMTCLAS WMMTCLAS[2]; 9368 tDot11fIEWMMTCLASPROC WMMTCLASPROC; 9369 tDot11fIEESETrafStrmMet ESETrafStrmMet; 9370 } tDot11fAddTSResponse; 9371 9372 #define DOT11F_ADDTSRESPONSE (2) 9373 9374 #ifdef __cplusplus 9375 extern "C" { 9376 #endif /* C++ */ 9377 9378 uint32_t dot11f_unpack_add_ts_response(tpAniSirGlobal pCtx, 9379 uint8_t *pBuf, uint32_t nBuf, 9380 tDot11fAddTSResponse * pFrm, bool append_ie); 9381 uint32_t dot11f_pack_add_ts_response(tpAniSirGlobal pCtx, 9382 tDot11fAddTSResponse *pFrm, uint8_t *pBuf, 9383 uint32_t nBuf, uint32_t *pnConsumed); 9384 uint32_t dot11f_get_packed_add_ts_response_size(tpAniSirGlobal pCtx, 9385 tDot11fAddTSResponse *pFrm, 9386 uint32_t *pnNeeded); 9387 9388 #ifdef __cplusplus 9389 } /* End extern "C". */ 9390 #endif /* C++ */ 9391 9392 typedef struct sDot11fAssocRequest{ 9393 tDot11fFfCapabilities Capabilities; 9394 tDot11fFfListenInterval ListenInterval; 9395 tDot11fIESSID SSID; 9396 tDot11fIESuppRates SuppRates; 9397 tDot11fIEOperatingMode OperatingMode; 9398 tDot11fIEPowerCaps PowerCaps; 9399 tDot11fIESuppChannels SuppChannels; 9400 tDot11fIEHTCaps HTCaps; 9401 tDot11fIEQOSCapsStation QOSCapsStation; 9402 tDot11fIERSNOpaque RSNOpaque; 9403 tDot11fIEExtSuppRates ExtSuppRates; 9404 tDot11fIEMobilityDomain MobilityDomain; 9405 tDot11fIESuppOperatingClasses SuppOperatingClasses; 9406 tDot11fIEWAPIOpaque WAPIOpaque; 9407 tDot11fIEWAPI WAPI; 9408 tDot11fIERRMEnabledCap RRMEnabledCap; 9409 tDot11fIEQosMapSet QosMapSet; 9410 tDot11fIEExtCap ExtCap; 9411 tDot11fIEVHTCaps VHTCaps; 9412 tDot11fIEfils_session fils_session; 9413 tDot11fIEfils_public_key fils_public_key; 9414 tDot11fIEfils_key_confirmation fils_key_confirmation; 9415 tDot11fIEfils_hlp_container fils_hlp_container; 9416 tDot11fIEfragment_ie fragment_ie; 9417 tDot11fIEdh_parameter_element dh_parameter_element; 9418 tDot11fIEWPAOpaque WPAOpaque; 9419 tDot11fIEWMMCaps WMMCaps; 9420 tDot11fIEWMMInfoStation WMMInfoStation; 9421 tDot11fIEWscIEOpaque WscIEOpaque; 9422 tDot11fIEESERadMgmtCap ESERadMgmtCap; 9423 tDot11fIEESEVersion ESEVersion; 9424 tDot11fIEP2PIEOpaque P2PIEOpaque; 9425 tDot11fIEWFDIEOpaque WFDIEOpaque; 9426 tDot11fIEvendor_vht_ie vendor_vht_ie; 9427 tDot11fIEhs20vendor_ie hs20vendor_ie; 9428 tDot11fIEQCN_IE QCN_IE; 9429 tDot11fIEhe_cap he_cap; 9430 tDot11fIEMBO_IE MBO_IE; 9431 tDot11fIEosen_ie osen_ie; 9432 } tDot11fAssocRequest; 9433 9434 #define DOT11F_ASSOCREQUEST (3) 9435 9436 #ifdef __cplusplus 9437 extern "C" { 9438 #endif /* C++ */ 9439 9440 uint32_t dot11f_unpack_assoc_request(tpAniSirGlobal pCtx, 9441 uint8_t *pBuf, uint32_t nBuf, 9442 tDot11fAssocRequest * pFrm, bool append_ie); 9443 uint32_t dot11f_pack_assoc_request(tpAniSirGlobal pCtx, 9444 tDot11fAssocRequest *pFrm, uint8_t *pBuf, 9445 uint32_t nBuf, uint32_t *pnConsumed); 9446 uint32_t dot11f_get_packed_assoc_request_size(tpAniSirGlobal pCtx, 9447 tDot11fAssocRequest *pFrm, 9448 uint32_t *pnNeeded); 9449 9450 #ifdef __cplusplus 9451 } /* End extern "C". */ 9452 #endif /* C++ */ 9453 9454 typedef struct sDot11fAssocResponse{ 9455 tDot11fFfCapabilities Capabilities; 9456 tDot11fFfStatus Status; 9457 tDot11fFfAID AID; 9458 tDot11fIESuppRates SuppRates; 9459 tDot11fIEExtSuppRates ExtSuppRates; 9460 tDot11fIEEDCAParamSet EDCAParamSet; 9461 tDot11fIERCPIIE RCPIIE; 9462 tDot11fIERSNIIE RSNIIE; 9463 tDot11fIERRMEnabledCap RRMEnabledCap; 9464 tDot11fIEMobilityDomain MobilityDomain; 9465 tDot11fIEFTInfo FTInfo; 9466 uint16_t num_RICDataDesc; 9467 tDot11fIERICDataDesc RICDataDesc[2]; 9468 tDot11fIEWPA WPA; 9469 tDot11fIETimeoutInterval TimeoutInterval; 9470 tDot11fIEHTCaps HTCaps; 9471 tDot11fIEHTInfo HTInfo; 9472 tDot11fIEWMMParams WMMParams; 9473 tDot11fIEWMMCaps WMMCaps; 9474 tDot11fIEESERadMgmtCap ESERadMgmtCap; 9475 tDot11fIEESETrafStrmMet ESETrafStrmMet; 9476 tDot11fIEESETxmitPower ESETxmitPower; 9477 uint16_t num_WMMTSPEC; 9478 tDot11fIEWMMTSPEC WMMTSPEC[4]; 9479 tDot11fIEWscAssocRes WscAssocRes; 9480 tDot11fIEP2PAssocRes P2PAssocRes; 9481 tDot11fIEVHTCaps VHTCaps; 9482 tDot11fIEVHTOperation VHTOperation; 9483 tDot11fIEExtCap ExtCap; 9484 tDot11fIEOBSSScanParameters OBSSScanParameters; 9485 tDot11fIEQosMapSet QosMapSet; 9486 tDot11fIEfils_session fils_session; 9487 tDot11fIEfils_public_key fils_public_key; 9488 tDot11fIEfils_key_confirmation fils_key_confirmation; 9489 tDot11fIEfils_hlp_container fils_hlp_container; 9490 tDot11fIEfragment_ie fragment_ie; 9491 tDot11fIEfils_kde fils_kde; 9492 tDot11fIEvendor_vht_ie vendor_vht_ie; 9493 tDot11fIEQCN_IE QCN_IE; 9494 tDot11fIEhe_cap he_cap; 9495 tDot11fIEhe_op he_op; 9496 tDot11fIEbss_color_change bss_color_change; 9497 tDot11fIEmu_edca_param_set mu_edca_param_set; 9498 tDot11fIEMBO_IE MBO_IE; 9499 } tDot11fAssocResponse; 9500 9501 #define DOT11F_ASSOCRESPONSE (4) 9502 9503 #ifdef __cplusplus 9504 extern "C" { 9505 #endif /* C++ */ 9506 9507 uint32_t dot11f_unpack_assoc_response(tpAniSirGlobal pCtx, 9508 uint8_t *pBuf, uint32_t nBuf, 9509 tDot11fAssocResponse * pFrm, bool append_ie); 9510 uint32_t dot11f_pack_assoc_response(tpAniSirGlobal pCtx, 9511 tDot11fAssocResponse *pFrm, uint8_t *pBuf, 9512 uint32_t nBuf, uint32_t *pnConsumed); 9513 uint32_t dot11f_get_packed_assoc_response_size(tpAniSirGlobal pCtx, 9514 tDot11fAssocResponse *pFrm, 9515 uint32_t *pnNeeded); 9516 9517 #ifdef __cplusplus 9518 } /* End extern "C". */ 9519 #endif /* C++ */ 9520 9521 typedef struct sDot11fAuthentication{ 9522 tDot11fFfAuthAlgo AuthAlgo; 9523 tDot11fFfAuthSeqNo AuthSeqNo; 9524 tDot11fFfStatus Status; 9525 tDot11fIEChallengeText ChallengeText; 9526 tDot11fIERSNOpaque RSNOpaque; 9527 tDot11fIEMobilityDomain MobilityDomain; 9528 tDot11fIEFTInfo FTInfo; 9529 tDot11fIETimeoutInterval TimeoutInterval; 9530 uint16_t num_RICDataDesc; 9531 tDot11fIERICDataDesc RICDataDesc[2]; 9532 tDot11fIEfils_nonce fils_nonce; 9533 tDot11fIEfils_session fils_session; 9534 tDot11fIEfils_wrapped_data fils_wrapped_data; 9535 tDot11fIEfils_assoc_delay_info fils_assoc_delay_info; 9536 } tDot11fAuthentication; 9537 9538 #define DOT11F_AUTHENTICATION (5) 9539 9540 #ifdef __cplusplus 9541 extern "C" { 9542 #endif /* C++ */ 9543 9544 uint32_t dot11f_unpack_authentication(tpAniSirGlobal pCtx, 9545 uint8_t *pBuf, uint32_t nBuf, 9546 tDot11fAuthentication * pFrm, bool append_ie); 9547 uint32_t dot11f_pack_authentication(tpAniSirGlobal pCtx, 9548 tDot11fAuthentication *pFrm, uint8_t *pBuf, 9549 uint32_t nBuf, uint32_t *pnConsumed); 9550 uint32_t dot11f_get_packed_authentication_size(tpAniSirGlobal pCtx, 9551 tDot11fAuthentication *pFrm, 9552 uint32_t *pnNeeded); 9553 9554 #ifdef __cplusplus 9555 } /* End extern "C". */ 9556 #endif /* C++ */ 9557 9558 typedef struct sDot11fBeacon{ 9559 tDot11fFfTimeStamp TimeStamp; 9560 tDot11fFfBeaconInterval BeaconInterval; 9561 tDot11fFfCapabilities Capabilities; 9562 tDot11fIESSID SSID; 9563 tDot11fIESuppRates SuppRates; 9564 tDot11fIEFHParamSet FHParamSet; 9565 tDot11fIEDSParams DSParams; 9566 tDot11fIECFParams CFParams; 9567 tDot11fIEIBSSParams IBSSParams; 9568 tDot11fIETIM TIM; 9569 tDot11fIECountry Country; 9570 tDot11fIEFHParams FHParams; 9571 tDot11fIEFHPattTable FHPattTable; 9572 tDot11fIEPowerConstraints PowerConstraints; 9573 tDot11fIEChanSwitchAnn ChanSwitchAnn; 9574 tDot11fIEext_chan_switch_ann ext_chan_switch_ann; 9575 tDot11fIESuppOperatingClasses SuppOperatingClasses; 9576 tDot11fIEQuiet Quiet; 9577 tDot11fIETPCReport TPCReport; 9578 tDot11fIEERPInfo ERPInfo; 9579 tDot11fIEExtSuppRates ExtSuppRates; 9580 tDot11fIERSN RSN; 9581 tDot11fIEQBSSLoad QBSSLoad; 9582 tDot11fIEEDCAParamSet EDCAParamSet; 9583 tDot11fIEQOSCapsAp QOSCapsAp; 9584 tDot11fIEAPChannelReport APChannelReport; 9585 tDot11fIERRMEnabledCap RRMEnabledCap; 9586 tDot11fIEMobilityDomain MobilityDomain; 9587 tDot11fIEWPA WPA; 9588 tDot11fIEHTCaps HTCaps; 9589 tDot11fIEHTInfo HTInfo; 9590 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele; 9591 tDot11fIEWMMInfoAp WMMInfoAp; 9592 tDot11fIEWMMParams WMMParams; 9593 tDot11fIEWMMCaps WMMCaps; 9594 tDot11fIEWAPI WAPI; 9595 tDot11fIEESERadMgmtCap ESERadMgmtCap; 9596 tDot11fIEESETrafStrmMet ESETrafStrmMet; 9597 tDot11fIEESETxmitPower ESETxmitPower; 9598 tDot11fIEWscBeacon WscBeacon; 9599 tDot11fIEP2PBeacon P2PBeacon; 9600 tDot11fIEVHTCaps VHTCaps; 9601 tDot11fIEVHTOperation VHTOperation; 9602 tDot11fIEVHTExtBssLoad VHTExtBssLoad; 9603 tDot11fIEExtCap ExtCap; 9604 tDot11fIEOperatingMode OperatingMode; 9605 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 9606 tDot11fIEOBSSScanParameters OBSSScanParameters; 9607 tDot11fIEfils_indication fils_indication; 9608 tDot11fIEVendor1IE Vendor1IE; 9609 tDot11fIEvendor_vht_ie vendor_vht_ie; 9610 tDot11fIEVendor3IE Vendor3IE; 9611 tDot11fIEhs20vendor_ie hs20vendor_ie; 9612 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper; 9613 tDot11fIEQComVendorIE QComVendorIE; 9614 tDot11fIEESEVersion ESEVersion; 9615 tDot11fIEMBO_IE MBO_IE; 9616 tDot11fIEQCN_IE QCN_IE; 9617 tDot11fIEhe_cap he_cap; 9618 tDot11fIEhe_op he_op; 9619 tDot11fIEbss_color_change bss_color_change; 9620 tDot11fIEmu_edca_param_set mu_edca_param_set; 9621 tDot11fIEesp_information esp_information; 9622 } tDot11fBeacon; 9623 9624 #define DOT11F_BEACON (6) 9625 9626 #ifdef __cplusplus 9627 extern "C" { 9628 #endif /* C++ */ 9629 9630 uint32_t dot11f_unpack_beacon(tpAniSirGlobal pCtx, 9631 uint8_t *pBuf, uint32_t nBuf, 9632 tDot11fBeacon * pFrm, bool append_ie); 9633 uint32_t dot11f_pack_beacon(tpAniSirGlobal pCtx, 9634 tDot11fBeacon *pFrm, uint8_t *pBuf, 9635 uint32_t nBuf, uint32_t *pnConsumed); 9636 uint32_t dot11f_get_packed_beacon_size(tpAniSirGlobal pCtx, 9637 tDot11fBeacon *pFrm, 9638 uint32_t *pnNeeded); 9639 9640 #ifdef __cplusplus 9641 } /* End extern "C". */ 9642 #endif /* C++ */ 9643 9644 typedef struct sDot11fBeacon1{ 9645 tDot11fFfTimeStamp TimeStamp; 9646 tDot11fFfBeaconInterval BeaconInterval; 9647 tDot11fFfCapabilities Capabilities; 9648 tDot11fIESSID SSID; 9649 tDot11fIESuppRates SuppRates; 9650 tDot11fIEDSParams DSParams; 9651 tDot11fIEIBSSParams IBSSParams; 9652 } tDot11fBeacon1; 9653 9654 #define DOT11F_BEACON1 (7) 9655 9656 #ifdef __cplusplus 9657 extern "C" { 9658 #endif /* C++ */ 9659 9660 uint32_t dot11f_unpack_beacon1(tpAniSirGlobal pCtx, 9661 uint8_t *pBuf, uint32_t nBuf, 9662 tDot11fBeacon1 * pFrm, bool append_ie); 9663 uint32_t dot11f_pack_beacon1(tpAniSirGlobal pCtx, 9664 tDot11fBeacon1 *pFrm, uint8_t *pBuf, 9665 uint32_t nBuf, uint32_t *pnConsumed); 9666 uint32_t dot11f_get_packed_beacon1_size(tpAniSirGlobal pCtx, 9667 tDot11fBeacon1 *pFrm, 9668 uint32_t *pnNeeded); 9669 9670 #ifdef __cplusplus 9671 } /* End extern "C". */ 9672 #endif /* C++ */ 9673 9674 typedef struct sDot11fBeacon2{ 9675 tDot11fIECountry Country; 9676 tDot11fIEPowerConstraints PowerConstraints; 9677 tDot11fIEChanSwitchAnn ChanSwitchAnn; 9678 tDot11fIEext_chan_switch_ann ext_chan_switch_ann; 9679 tDot11fIESuppOperatingClasses SuppOperatingClasses; 9680 tDot11fIEQuiet Quiet; 9681 tDot11fIETPCReport TPCReport; 9682 tDot11fIEERPInfo ERPInfo; 9683 tDot11fIEExtSuppRates ExtSuppRates; 9684 tDot11fIERSNOpaque RSNOpaque; 9685 tDot11fIEEDCAParamSet EDCAParamSet; 9686 tDot11fIEAPChannelReport APChannelReport; 9687 tDot11fIERRMEnabledCap RRMEnabledCap; 9688 tDot11fIEMobilityDomain MobilityDomain; 9689 tDot11fIEWPA WPA; 9690 tDot11fIEHTCaps HTCaps; 9691 tDot11fIEHTInfo HTInfo; 9692 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele; 9693 tDot11fIEWMMInfoAp WMMInfoAp; 9694 tDot11fIEWMMParams WMMParams; 9695 tDot11fIEWMMCaps WMMCaps; 9696 tDot11fIEWscBeacon WscBeacon; 9697 tDot11fIEWAPI WAPI; 9698 tDot11fIEESERadMgmtCap ESERadMgmtCap; 9699 tDot11fIEESETrafStrmMet ESETrafStrmMet; 9700 tDot11fIEESETxmitPower ESETxmitPower; 9701 tDot11fIEP2PBeacon P2PBeacon; 9702 tDot11fIEVHTCaps VHTCaps; 9703 tDot11fIEVHTOperation VHTOperation; 9704 tDot11fIEVHTExtBssLoad VHTExtBssLoad; 9705 tDot11fIEExtCap ExtCap; 9706 tDot11fIEOperatingMode OperatingMode; 9707 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 9708 tDot11fIEOBSSScanParameters OBSSScanParameters; 9709 tDot11fIEfils_indication fils_indication; 9710 tDot11fIEVendor1IE Vendor1IE; 9711 tDot11fIEvendor_vht_ie vendor_vht_ie; 9712 tDot11fIEVendor3IE Vendor3IE; 9713 tDot11fIEhs20vendor_ie hs20vendor_ie; 9714 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper; 9715 tDot11fIEQComVendorIE QComVendorIE; 9716 tDot11fIEESEVersion ESEVersion; 9717 tDot11fIEQCN_IE QCN_IE; 9718 tDot11fIEhe_cap he_cap; 9719 tDot11fIEhe_op he_op; 9720 tDot11fIEbss_color_change bss_color_change; 9721 tDot11fIEmu_edca_param_set mu_edca_param_set; 9722 tDot11fIEesp_information esp_information; 9723 } tDot11fBeacon2; 9724 9725 #define DOT11F_BEACON2 (8) 9726 9727 #ifdef __cplusplus 9728 extern "C" { 9729 #endif /* C++ */ 9730 9731 uint32_t dot11f_unpack_beacon2(tpAniSirGlobal pCtx, 9732 uint8_t *pBuf, uint32_t nBuf, 9733 tDot11fBeacon2 * pFrm, bool append_ie); 9734 uint32_t dot11f_pack_beacon2(tpAniSirGlobal pCtx, 9735 tDot11fBeacon2 *pFrm, uint8_t *pBuf, 9736 uint32_t nBuf, uint32_t *pnConsumed); 9737 uint32_t dot11f_get_packed_beacon2_size(tpAniSirGlobal pCtx, 9738 tDot11fBeacon2 *pFrm, 9739 uint32_t *pnNeeded); 9740 9741 #ifdef __cplusplus 9742 } /* End extern "C". */ 9743 #endif /* C++ */ 9744 9745 typedef struct sDot11fBeaconIEs{ 9746 tDot11fIESSID SSID; 9747 tDot11fIESuppRates SuppRates; 9748 tDot11fIEFHParamSet FHParamSet; 9749 tDot11fIEDSParams DSParams; 9750 tDot11fIECFParams CFParams; 9751 tDot11fIEIBSSParams IBSSParams; 9752 tDot11fIETIM TIM; 9753 tDot11fIECountry Country; 9754 tDot11fIEFHParams FHParams; 9755 tDot11fIEFHPattTable FHPattTable; 9756 tDot11fIEPowerConstraints PowerConstraints; 9757 tDot11fIEChanSwitchAnn ChanSwitchAnn; 9758 tDot11fIEext_chan_switch_ann ext_chan_switch_ann; 9759 tDot11fIESuppOperatingClasses SuppOperatingClasses; 9760 tDot11fIEQuiet Quiet; 9761 tDot11fIETPCReport TPCReport; 9762 tDot11fIEERPInfo ERPInfo; 9763 tDot11fIEExtSuppRates ExtSuppRates; 9764 tDot11fIERSN RSN; 9765 tDot11fIEQBSSLoad QBSSLoad; 9766 tDot11fIEEDCAParamSet EDCAParamSet; 9767 tDot11fIEQOSCapsAp QOSCapsAp; 9768 tDot11fIEAPChannelReport APChannelReport; 9769 tDot11fIERRMEnabledCap RRMEnabledCap; 9770 tDot11fIEMobilityDomain MobilityDomain; 9771 tDot11fIEWPA WPA; 9772 tDot11fIEHTCaps HTCaps; 9773 tDot11fIEHTInfo HTInfo; 9774 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele; 9775 tDot11fIEWMMInfoAp WMMInfoAp; 9776 tDot11fIEWMMParams WMMParams; 9777 tDot11fIEWMMCaps WMMCaps; 9778 tDot11fIEWAPI WAPI; 9779 tDot11fIEESEVersion ESEVersion; 9780 tDot11fIEESERadMgmtCap ESERadMgmtCap; 9781 tDot11fIEESETrafStrmMet ESETrafStrmMet; 9782 tDot11fIEESETxmitPower ESETxmitPower; 9783 tDot11fIEWscBeaconProbeRes WscBeaconProbeRes; 9784 tDot11fIEP2PBeaconProbeRes P2PBeaconProbeRes; 9785 tDot11fIEVHTCaps VHTCaps; 9786 tDot11fIEVHTOperation VHTOperation; 9787 tDot11fIEVHTExtBssLoad VHTExtBssLoad; 9788 tDot11fIEExtCap ExtCap; 9789 tDot11fIEOperatingMode OperatingMode; 9790 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 9791 tDot11fIEOBSSScanParameters OBSSScanParameters; 9792 tDot11fIEfils_indication fils_indication; 9793 tDot11fIEVendor1IE Vendor1IE; 9794 tDot11fIEvendor_vht_ie vendor_vht_ie; 9795 tDot11fIEVendor3IE Vendor3IE; 9796 tDot11fIEhs20vendor_ie hs20vendor_ie; 9797 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper; 9798 tDot11fIEQComVendorIE QComVendorIE; 9799 tDot11fIEMBO_IE MBO_IE; 9800 tDot11fIEQCN_IE QCN_IE; 9801 tDot11fIEhe_cap he_cap; 9802 tDot11fIEhe_op he_op; 9803 tDot11fIEbss_color_change bss_color_change; 9804 tDot11fIEmu_edca_param_set mu_edca_param_set; 9805 tDot11fIEesp_information esp_information; 9806 } tDot11fBeaconIEs; 9807 9808 #define DOT11F_BEACONIES (9) 9809 9810 #ifdef __cplusplus 9811 extern "C" { 9812 #endif /* C++ */ 9813 9814 uint32_t dot11f_unpack_beacon_i_es(tpAniSirGlobal pCtx, 9815 uint8_t *pBuf, uint32_t nBuf, 9816 tDot11fBeaconIEs * pFrm, bool append_ie); 9817 uint32_t dot11f_pack_beacon_i_es(tpAniSirGlobal pCtx, 9818 tDot11fBeaconIEs *pFrm, uint8_t *pBuf, 9819 uint32_t nBuf, uint32_t *pnConsumed); 9820 uint32_t dot11f_get_packed_beacon_i_es_size(tpAniSirGlobal pCtx, 9821 tDot11fBeaconIEs *pFrm, 9822 uint32_t *pnNeeded); 9823 9824 #ifdef __cplusplus 9825 } /* End extern "C". */ 9826 #endif /* C++ */ 9827 9828 typedef struct sDot11fChannelSwitch{ 9829 tDot11fFfCategory Category; 9830 tDot11fFfAction Action; 9831 tDot11fIEChanSwitchAnn ChanSwitchAnn; 9832 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele; 9833 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 9834 } tDot11fChannelSwitch; 9835 9836 #define DOT11F_CHANNELSWITCH (10) 9837 9838 #ifdef __cplusplus 9839 extern "C" { 9840 #endif /* C++ */ 9841 9842 uint32_t dot11f_unpack_channel_switch(tpAniSirGlobal pCtx, 9843 uint8_t *pBuf, uint32_t nBuf, 9844 tDot11fChannelSwitch * pFrm, bool append_ie); 9845 uint32_t dot11f_pack_channel_switch(tpAniSirGlobal pCtx, 9846 tDot11fChannelSwitch *pFrm, uint8_t *pBuf, 9847 uint32_t nBuf, uint32_t *pnConsumed); 9848 uint32_t dot11f_get_packed_channel_switch_size(tpAniSirGlobal pCtx, 9849 tDot11fChannelSwitch *pFrm, 9850 uint32_t *pnNeeded); 9851 9852 #ifdef __cplusplus 9853 } /* End extern "C". */ 9854 #endif /* C++ */ 9855 9856 typedef struct sDot11fDeAuth{ 9857 tDot11fFfReason Reason; 9858 tDot11fIEP2PDeAuth P2PDeAuth; 9859 } tDot11fDeAuth; 9860 9861 #define DOT11F_DEAUTH (11) 9862 9863 #ifdef __cplusplus 9864 extern "C" { 9865 #endif /* C++ */ 9866 9867 uint32_t dot11f_unpack_de_auth(tpAniSirGlobal pCtx, 9868 uint8_t *pBuf, uint32_t nBuf, 9869 tDot11fDeAuth * pFrm, bool append_ie); 9870 uint32_t dot11f_pack_de_auth(tpAniSirGlobal pCtx, 9871 tDot11fDeAuth *pFrm, uint8_t *pBuf, 9872 uint32_t nBuf, uint32_t *pnConsumed); 9873 uint32_t dot11f_get_packed_de_auth_size(tpAniSirGlobal pCtx, 9874 tDot11fDeAuth *pFrm, 9875 uint32_t *pnNeeded); 9876 9877 #ifdef __cplusplus 9878 } /* End extern "C". */ 9879 #endif /* C++ */ 9880 9881 typedef struct sDot11fDelTS{ 9882 tDot11fFfCategory Category; 9883 tDot11fFfAction Action; 9884 tDot11fFfTSInfo TSInfo; 9885 tDot11fFfReason Reason; 9886 } tDot11fDelTS; 9887 9888 #define DOT11F_DELTS (12) 9889 9890 #ifdef __cplusplus 9891 extern "C" { 9892 #endif /* C++ */ 9893 9894 uint32_t dot11f_unpack_del_ts(tpAniSirGlobal pCtx, 9895 uint8_t *pBuf, uint32_t nBuf, 9896 tDot11fDelTS * pFrm, bool append_ie); 9897 uint32_t dot11f_pack_del_ts(tpAniSirGlobal pCtx, 9898 tDot11fDelTS *pFrm, uint8_t *pBuf, 9899 uint32_t nBuf, uint32_t *pnConsumed); 9900 uint32_t dot11f_get_packed_del_ts_size(tpAniSirGlobal pCtx, 9901 tDot11fDelTS *pFrm, 9902 uint32_t *pnNeeded); 9903 9904 #ifdef __cplusplus 9905 } /* End extern "C". */ 9906 #endif /* C++ */ 9907 9908 typedef struct sDot11fDisassociation{ 9909 tDot11fFfReason Reason; 9910 tDot11fIEP2PDisAssoc P2PDisAssoc; 9911 } tDot11fDisassociation; 9912 9913 #define DOT11F_DISASSOCIATION (13) 9914 9915 #ifdef __cplusplus 9916 extern "C" { 9917 #endif /* C++ */ 9918 9919 uint32_t dot11f_unpack_disassociation(tpAniSirGlobal pCtx, 9920 uint8_t *pBuf, uint32_t nBuf, 9921 tDot11fDisassociation * pFrm, bool append_ie); 9922 uint32_t dot11f_pack_disassociation(tpAniSirGlobal pCtx, 9923 tDot11fDisassociation *pFrm, uint8_t *pBuf, 9924 uint32_t nBuf, uint32_t *pnConsumed); 9925 uint32_t dot11f_get_packed_disassociation_size(tpAniSirGlobal pCtx, 9926 tDot11fDisassociation *pFrm, 9927 uint32_t *pnNeeded); 9928 9929 #ifdef __cplusplus 9930 } /* End extern "C". */ 9931 #endif /* C++ */ 9932 9933 typedef struct sDot11fLinkMeasurementReport{ 9934 tDot11fFfCategory Category; 9935 tDot11fFfAction Action; 9936 tDot11fFfDialogToken DialogToken; 9937 tDot11fFfTPCEleID TPCEleID; 9938 tDot11fFfTPCEleLen TPCEleLen; 9939 tDot11fFfTxPower TxPower; 9940 tDot11fFfLinkMargin LinkMargin; 9941 tDot11fFfRxAntennaId RxAntennaId; 9942 tDot11fFfTxAntennaId TxAntennaId; 9943 tDot11fFfRCPI RCPI; 9944 tDot11fFfRSNI RSNI; 9945 } tDot11fLinkMeasurementReport; 9946 9947 #define DOT11F_LINKMEASUREMENTREPORT (14) 9948 9949 #ifdef __cplusplus 9950 extern "C" { 9951 #endif /* C++ */ 9952 9953 uint32_t dot11f_unpack_link_measurement_report(tpAniSirGlobal pCtx, 9954 uint8_t *pBuf, uint32_t nBuf, 9955 tDot11fLinkMeasurementReport * pFrm, bool append_ie); 9956 uint32_t dot11f_pack_link_measurement_report(tpAniSirGlobal pCtx, 9957 tDot11fLinkMeasurementReport *pFrm, uint8_t *pBuf, 9958 uint32_t nBuf, uint32_t *pnConsumed); 9959 uint32_t dot11f_get_packed_link_measurement_report_size(tpAniSirGlobal pCtx, 9960 tDot11fLinkMeasurementReport *pFrm, 9961 uint32_t *pnNeeded); 9962 9963 #ifdef __cplusplus 9964 } /* End extern "C". */ 9965 #endif /* C++ */ 9966 9967 typedef struct sDot11fLinkMeasurementRequest{ 9968 tDot11fFfCategory Category; 9969 tDot11fFfAction Action; 9970 tDot11fFfDialogToken DialogToken; 9971 tDot11fFfTxPower TxPower; 9972 tDot11fFfMaxTxPower MaxTxPower; 9973 } tDot11fLinkMeasurementRequest; 9974 9975 #define DOT11F_LINKMEASUREMENTREQUEST (15) 9976 9977 #ifdef __cplusplus 9978 extern "C" { 9979 #endif /* C++ */ 9980 9981 uint32_t dot11f_unpack_link_measurement_request(tpAniSirGlobal pCtx, 9982 uint8_t *pBuf, uint32_t nBuf, 9983 tDot11fLinkMeasurementRequest * pFrm, bool append_ie); 9984 uint32_t dot11f_pack_link_measurement_request(tpAniSirGlobal pCtx, 9985 tDot11fLinkMeasurementRequest *pFrm, uint8_t *pBuf, 9986 uint32_t nBuf, uint32_t *pnConsumed); 9987 uint32_t dot11f_get_packed_link_measurement_request_size(tpAniSirGlobal pCtx, 9988 tDot11fLinkMeasurementRequest *pFrm, 9989 uint32_t *pnNeeded); 9990 9991 #ifdef __cplusplus 9992 } /* End extern "C". */ 9993 #endif /* C++ */ 9994 9995 typedef struct sDot11fMeasurementReport{ 9996 tDot11fFfCategory Category; 9997 tDot11fFfAction Action; 9998 tDot11fFfDialogToken DialogToken; 9999 tDot11fIEMeasurementReport MeasurementReport; 10000 } tDot11fMeasurementReport; 10001 10002 #define DOT11F_MEASUREMENTREPORT (16) 10003 10004 #ifdef __cplusplus 10005 extern "C" { 10006 #endif /* C++ */ 10007 10008 uint32_t dot11f_unpack_measurement_report(tpAniSirGlobal pCtx, 10009 uint8_t *pBuf, uint32_t nBuf, 10010 tDot11fMeasurementReport * pFrm, bool append_ie); 10011 uint32_t dot11f_pack_measurement_report(tpAniSirGlobal pCtx, 10012 tDot11fMeasurementReport *pFrm, uint8_t *pBuf, 10013 uint32_t nBuf, uint32_t *pnConsumed); 10014 uint32_t dot11f_get_packed_measurement_report_size(tpAniSirGlobal pCtx, 10015 tDot11fMeasurementReport *pFrm, 10016 uint32_t *pnNeeded); 10017 10018 #ifdef __cplusplus 10019 } /* End extern "C". */ 10020 #endif /* C++ */ 10021 10022 typedef struct sDot11fMeasurementRequest{ 10023 tDot11fFfCategory Category; 10024 tDot11fFfAction Action; 10025 tDot11fFfDialogToken DialogToken; 10026 uint16_t num_MeasurementRequest; 10027 tDot11fIEMeasurementRequest MeasurementRequest[4]; 10028 } tDot11fMeasurementRequest; 10029 10030 #define DOT11F_MEASUREMENTREQUEST (17) 10031 10032 #ifdef __cplusplus 10033 extern "C" { 10034 #endif /* C++ */ 10035 10036 uint32_t dot11f_unpack_measurement_request(tpAniSirGlobal pCtx, 10037 uint8_t *pBuf, uint32_t nBuf, 10038 tDot11fMeasurementRequest * pFrm, bool append_ie); 10039 uint32_t dot11f_pack_measurement_request(tpAniSirGlobal pCtx, 10040 tDot11fMeasurementRequest *pFrm, uint8_t *pBuf, 10041 uint32_t nBuf, uint32_t *pnConsumed); 10042 uint32_t dot11f_get_packed_measurement_request_size(tpAniSirGlobal pCtx, 10043 tDot11fMeasurementRequest *pFrm, 10044 uint32_t *pnNeeded); 10045 10046 #ifdef __cplusplus 10047 } /* End extern "C". */ 10048 #endif /* C++ */ 10049 10050 typedef struct sDot11fNeighborReportRequest{ 10051 tDot11fFfCategory Category; 10052 tDot11fFfAction Action; 10053 tDot11fFfDialogToken DialogToken; 10054 tDot11fIESSID SSID; 10055 } tDot11fNeighborReportRequest; 10056 10057 #define DOT11F_NEIGHBORREPORTREQUEST (18) 10058 10059 #ifdef __cplusplus 10060 extern "C" { 10061 #endif /* C++ */ 10062 10063 uint32_t dot11f_unpack_neighbor_report_request(tpAniSirGlobal pCtx, 10064 uint8_t *pBuf, uint32_t nBuf, 10065 tDot11fNeighborReportRequest * pFrm, bool append_ie); 10066 uint32_t dot11f_pack_neighbor_report_request(tpAniSirGlobal pCtx, 10067 tDot11fNeighborReportRequest *pFrm, uint8_t *pBuf, 10068 uint32_t nBuf, uint32_t *pnConsumed); 10069 uint32_t dot11f_get_packed_neighbor_report_request_size(tpAniSirGlobal pCtx, 10070 tDot11fNeighborReportRequest *pFrm, 10071 uint32_t *pnNeeded); 10072 10073 #ifdef __cplusplus 10074 } /* End extern "C". */ 10075 #endif /* C++ */ 10076 10077 typedef struct sDot11fNeighborReportResponse{ 10078 tDot11fFfCategory Category; 10079 tDot11fFfAction Action; 10080 tDot11fFfDialogToken DialogToken; 10081 uint16_t num_NeighborReport; 10082 tDot11fIENeighborReport NeighborReport[15]; 10083 } tDot11fNeighborReportResponse; 10084 10085 #define DOT11F_NEIGHBORREPORTRESPONSE (19) 10086 10087 #ifdef __cplusplus 10088 extern "C" { 10089 #endif /* C++ */ 10090 10091 uint32_t dot11f_unpack_neighbor_report_response(tpAniSirGlobal pCtx, 10092 uint8_t *pBuf, uint32_t nBuf, 10093 tDot11fNeighborReportResponse * pFrm, bool append_ie); 10094 uint32_t dot11f_pack_neighbor_report_response(tpAniSirGlobal pCtx, 10095 tDot11fNeighborReportResponse *pFrm, uint8_t *pBuf, 10096 uint32_t nBuf, uint32_t *pnConsumed); 10097 uint32_t dot11f_get_packed_neighbor_report_response_size(tpAniSirGlobal pCtx, 10098 tDot11fNeighborReportResponse *pFrm, 10099 uint32_t *pnNeeded); 10100 10101 #ifdef __cplusplus 10102 } /* End extern "C". */ 10103 #endif /* C++ */ 10104 10105 typedef struct sDot11fOperatingMode{ 10106 tDot11fFfCategory Category; 10107 tDot11fFfAction Action; 10108 tDot11fFfOperatingMode OperatingMode; 10109 } tDot11fOperatingMode; 10110 10111 #define DOT11F_OPERATINGMODE (20) 10112 10113 #ifdef __cplusplus 10114 extern "C" { 10115 #endif /* C++ */ 10116 10117 uint32_t dot11f_unpack_operating_mode(tpAniSirGlobal pCtx, 10118 uint8_t *pBuf, uint32_t nBuf, 10119 tDot11fOperatingMode * pFrm, bool append_ie); 10120 uint32_t dot11f_pack_operating_mode(tpAniSirGlobal pCtx, 10121 tDot11fOperatingMode *pFrm, uint8_t *pBuf, 10122 uint32_t nBuf, uint32_t *pnConsumed); 10123 uint32_t dot11f_get_packed_operating_mode_size(tpAniSirGlobal pCtx, 10124 tDot11fOperatingMode *pFrm, 10125 uint32_t *pnNeeded); 10126 10127 #ifdef __cplusplus 10128 } /* End extern "C". */ 10129 #endif /* C++ */ 10130 10131 typedef struct sDot11fProbeRequest{ 10132 tDot11fIESSID SSID; 10133 tDot11fIESuppRates SuppRates; 10134 tDot11fIERequestedInfo RequestedInfo; 10135 tDot11fIEExtSuppRates ExtSuppRates; 10136 tDot11fIEDSParams DSParams; 10137 tDot11fIEHTCaps HTCaps; 10138 tDot11fIEWscProbeReq WscProbeReq; 10139 tDot11fIEWFATPC WFATPC; 10140 tDot11fIEP2PProbeReq P2PProbeReq; 10141 tDot11fIEVHTCaps VHTCaps; 10142 tDot11fIEExtCap ExtCap; 10143 tDot11fIEQCN_IE QCN_IE; 10144 tDot11fIEhe_cap he_cap; 10145 } tDot11fProbeRequest; 10146 10147 #define DOT11F_PROBEREQUEST (21) 10148 10149 #ifdef __cplusplus 10150 extern "C" { 10151 #endif /* C++ */ 10152 10153 uint32_t dot11f_unpack_probe_request(tpAniSirGlobal pCtx, 10154 uint8_t *pBuf, uint32_t nBuf, 10155 tDot11fProbeRequest * pFrm, bool append_ie); 10156 uint32_t dot11f_pack_probe_request(tpAniSirGlobal pCtx, 10157 tDot11fProbeRequest *pFrm, uint8_t *pBuf, 10158 uint32_t nBuf, uint32_t *pnConsumed); 10159 uint32_t dot11f_get_packed_probe_request_size(tpAniSirGlobal pCtx, 10160 tDot11fProbeRequest *pFrm, 10161 uint32_t *pnNeeded); 10162 10163 #ifdef __cplusplus 10164 } /* End extern "C". */ 10165 #endif /* C++ */ 10166 10167 typedef struct sDot11fProbeResponse{ 10168 tDot11fFfTimeStamp TimeStamp; 10169 tDot11fFfBeaconInterval BeaconInterval; 10170 tDot11fFfCapabilities Capabilities; 10171 tDot11fIESSID SSID; 10172 tDot11fIESuppRates SuppRates; 10173 tDot11fIEFHParamSet FHParamSet; 10174 tDot11fIEDSParams DSParams; 10175 tDot11fIECFParams CFParams; 10176 tDot11fIEIBSSParams IBSSParams; 10177 tDot11fIECountry Country; 10178 tDot11fIEFHParams FHParams; 10179 tDot11fIEFHPattTable FHPattTable; 10180 tDot11fIEPowerConstraints PowerConstraints; 10181 tDot11fIEChanSwitchAnn ChanSwitchAnn; 10182 tDot11fIEext_chan_switch_ann ext_chan_switch_ann; 10183 tDot11fIESuppOperatingClasses SuppOperatingClasses; 10184 tDot11fIEQuiet Quiet; 10185 tDot11fIETPCReport TPCReport; 10186 tDot11fIEERPInfo ERPInfo; 10187 tDot11fIEExtSuppRates ExtSuppRates; 10188 tDot11fIERSNOpaque RSNOpaque; 10189 tDot11fIEQBSSLoad QBSSLoad; 10190 tDot11fIEEDCAParamSet EDCAParamSet; 10191 tDot11fIERRMEnabledCap RRMEnabledCap; 10192 tDot11fIEAPChannelReport APChannelReport; 10193 tDot11fIEMobilityDomain MobilityDomain; 10194 tDot11fIEWPA WPA; 10195 tDot11fIEHTCaps HTCaps; 10196 tDot11fIEHTInfo HTInfo; 10197 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele; 10198 tDot11fIEWMMInfoAp WMMInfoAp; 10199 tDot11fIEWMMParams WMMParams; 10200 tDot11fIEWMMCaps WMMCaps; 10201 tDot11fIEWAPI WAPI; 10202 tDot11fIEESERadMgmtCap ESERadMgmtCap; 10203 tDot11fIEESETrafStrmMet ESETrafStrmMet; 10204 tDot11fIEESETxmitPower ESETxmitPower; 10205 tDot11fIEWscProbeRes WscProbeRes; 10206 tDot11fIEP2PProbeRes P2PProbeRes; 10207 tDot11fIEVHTCaps VHTCaps; 10208 tDot11fIEVHTOperation VHTOperation; 10209 tDot11fIEVHTExtBssLoad VHTExtBssLoad; 10210 tDot11fIEExtCap ExtCap; 10211 tDot11fIEOBSSScanParameters OBSSScanParameters; 10212 tDot11fIEfils_indication fils_indication; 10213 tDot11fIEVendor1IE Vendor1IE; 10214 tDot11fIEvendor_vht_ie vendor_vht_ie; 10215 tDot11fIEVendor3IE Vendor3IE; 10216 tDot11fIEhs20vendor_ie hs20vendor_ie; 10217 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper; 10218 tDot11fIEQComVendorIE QComVendorIE; 10219 tDot11fIEESEVersion ESEVersion; 10220 tDot11fIEMBO_IE MBO_IE; 10221 tDot11fIEQCN_IE QCN_IE; 10222 tDot11fIEhe_cap he_cap; 10223 tDot11fIEhe_op he_op; 10224 tDot11fIEbss_color_change bss_color_change; 10225 tDot11fIEmu_edca_param_set mu_edca_param_set; 10226 tDot11fIEesp_information esp_information; 10227 } tDot11fProbeResponse; 10228 10229 #define DOT11F_PROBERESPONSE (22) 10230 10231 #ifdef __cplusplus 10232 extern "C" { 10233 #endif /* C++ */ 10234 10235 uint32_t dot11f_unpack_probe_response(tpAniSirGlobal pCtx, 10236 uint8_t *pBuf, uint32_t nBuf, 10237 tDot11fProbeResponse * pFrm, bool append_ie); 10238 uint32_t dot11f_pack_probe_response(tpAniSirGlobal pCtx, 10239 tDot11fProbeResponse *pFrm, uint8_t *pBuf, 10240 uint32_t nBuf, uint32_t *pnConsumed); 10241 uint32_t dot11f_get_packed_probe_response_size(tpAniSirGlobal pCtx, 10242 tDot11fProbeResponse *pFrm, 10243 uint32_t *pnNeeded); 10244 10245 #ifdef __cplusplus 10246 } /* End extern "C". */ 10247 #endif /* C++ */ 10248 10249 typedef struct sDot11fQosMapConfigure{ 10250 tDot11fFfCategory Category; 10251 tDot11fFfAction Action; 10252 tDot11fIEQosMapSet QosMapSet; 10253 } tDot11fQosMapConfigure; 10254 10255 #define DOT11F_QOSMAPCONFIGURE (23) 10256 10257 #ifdef __cplusplus 10258 extern "C" { 10259 #endif /* C++ */ 10260 10261 uint32_t dot11f_unpack_qos_map_configure(tpAniSirGlobal pCtx, 10262 uint8_t *pBuf, uint32_t nBuf, 10263 tDot11fQosMapConfigure * pFrm, bool append_ie); 10264 uint32_t dot11f_pack_qos_map_configure(tpAniSirGlobal pCtx, 10265 tDot11fQosMapConfigure *pFrm, uint8_t *pBuf, 10266 uint32_t nBuf, uint32_t *pnConsumed); 10267 uint32_t dot11f_get_packed_qos_map_configure_size(tpAniSirGlobal pCtx, 10268 tDot11fQosMapConfigure *pFrm, 10269 uint32_t *pnNeeded); 10270 10271 #ifdef __cplusplus 10272 } /* End extern "C". */ 10273 #endif /* C++ */ 10274 10275 typedef struct sDot11fRadioMeasurementReport{ 10276 tDot11fFfCategory Category; 10277 tDot11fFfAction Action; 10278 tDot11fFfDialogToken DialogToken; 10279 uint16_t num_MeasurementReport; 10280 tDot11fIEMeasurementReport MeasurementReport[4]; 10281 } tDot11fRadioMeasurementReport; 10282 10283 #define DOT11F_RADIOMEASUREMENTREPORT (24) 10284 10285 #ifdef __cplusplus 10286 extern "C" { 10287 #endif /* C++ */ 10288 10289 uint32_t dot11f_unpack_radio_measurement_report(tpAniSirGlobal pCtx, 10290 uint8_t *pBuf, uint32_t nBuf, 10291 tDot11fRadioMeasurementReport * pFrm, bool append_ie); 10292 uint32_t dot11f_pack_radio_measurement_report(tpAniSirGlobal pCtx, 10293 tDot11fRadioMeasurementReport *pFrm, uint8_t *pBuf, 10294 uint32_t nBuf, uint32_t *pnConsumed); 10295 uint32_t dot11f_get_packed_radio_measurement_report_size(tpAniSirGlobal pCtx, 10296 tDot11fRadioMeasurementReport *pFrm, 10297 uint32_t *pnNeeded); 10298 10299 #ifdef __cplusplus 10300 } /* End extern "C". */ 10301 #endif /* C++ */ 10302 10303 typedef struct sDot11fRadioMeasurementRequest{ 10304 tDot11fFfCategory Category; 10305 tDot11fFfAction Action; 10306 tDot11fFfDialogToken DialogToken; 10307 tDot11fFfNumOfRepetitions NumOfRepetitions; 10308 uint16_t num_MeasurementRequest; 10309 tDot11fIEMeasurementRequest MeasurementRequest[2]; 10310 } tDot11fRadioMeasurementRequest; 10311 10312 #define DOT11F_RADIOMEASUREMENTREQUEST (25) 10313 10314 #ifdef __cplusplus 10315 extern "C" { 10316 #endif /* C++ */ 10317 10318 uint32_t dot11f_unpack_radio_measurement_request(tpAniSirGlobal pCtx, 10319 uint8_t *pBuf, uint32_t nBuf, 10320 tDot11fRadioMeasurementRequest * pFrm, bool append_ie); 10321 uint32_t dot11f_pack_radio_measurement_request(tpAniSirGlobal pCtx, 10322 tDot11fRadioMeasurementRequest *pFrm, uint8_t *pBuf, 10323 uint32_t nBuf, uint32_t *pnConsumed); 10324 uint32_t dot11f_get_packed_radio_measurement_request_size(tpAniSirGlobal pCtx, 10325 tDot11fRadioMeasurementRequest *pFrm, 10326 uint32_t *pnNeeded); 10327 10328 #ifdef __cplusplus 10329 } /* End extern "C". */ 10330 #endif /* C++ */ 10331 10332 typedef struct sDot11fReAssocRequest{ 10333 tDot11fFfCapabilities Capabilities; 10334 tDot11fFfListenInterval ListenInterval; 10335 tDot11fFfCurrentAPAddress CurrentAPAddress; 10336 tDot11fIESSID SSID; 10337 tDot11fIESuppRates SuppRates; 10338 tDot11fIEExtSuppRates ExtSuppRates; 10339 tDot11fIEPowerCaps PowerCaps; 10340 tDot11fIESuppChannels SuppChannels; 10341 tDot11fIERSNOpaque RSNOpaque; 10342 tDot11fIEQOSCapsStation QOSCapsStation; 10343 tDot11fIERRMEnabledCap RRMEnabledCap; 10344 tDot11fIEMobilityDomain MobilityDomain; 10345 tDot11fIEFTInfo FTInfo; 10346 uint16_t num_RICDataDesc; 10347 tDot11fIERICDataDesc RICDataDesc[2]; 10348 tDot11fIEWPAOpaque WPAOpaque; 10349 tDot11fIEHTCaps HTCaps; 10350 tDot11fIEWMMCaps WMMCaps; 10351 tDot11fIEWMMInfoStation WMMInfoStation; 10352 tDot11fIEWscIEOpaque WscIEOpaque; 10353 tDot11fIEWAPIOpaque WAPIOpaque; 10354 tDot11fIEWAPI WAPI; 10355 tDot11fIEESERadMgmtCap ESERadMgmtCap; 10356 tDot11fIEESEVersion ESEVersion; 10357 tDot11fIEESECckmOpaque ESECckmOpaque; 10358 uint16_t num_WMMTSPEC; 10359 tDot11fIEWMMTSPEC WMMTSPEC[4]; 10360 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet; 10361 tDot11fIEP2PIEOpaque P2PIEOpaque; 10362 tDot11fIEWFDIEOpaque WFDIEOpaque; 10363 tDot11fIEVHTCaps VHTCaps; 10364 tDot11fIEExtCap ExtCap; 10365 tDot11fIEOperatingMode OperatingMode; 10366 tDot11fIEQosMapSet QosMapSet; 10367 tDot11fIEvendor_vht_ie vendor_vht_ie; 10368 tDot11fIEhs20vendor_ie hs20vendor_ie; 10369 tDot11fIEhe_cap he_cap; 10370 } tDot11fReAssocRequest; 10371 10372 #define DOT11F_REASSOCREQUEST (26) 10373 10374 #ifdef __cplusplus 10375 extern "C" { 10376 #endif /* C++ */ 10377 10378 uint32_t dot11f_unpack_re_assoc_request(tpAniSirGlobal pCtx, 10379 uint8_t *pBuf, uint32_t nBuf, 10380 tDot11fReAssocRequest * pFrm, bool append_ie); 10381 uint32_t dot11f_pack_re_assoc_request(tpAniSirGlobal pCtx, 10382 tDot11fReAssocRequest *pFrm, uint8_t *pBuf, 10383 uint32_t nBuf, uint32_t *pnConsumed); 10384 uint32_t dot11f_get_packed_re_assoc_request_size(tpAniSirGlobal pCtx, 10385 tDot11fReAssocRequest *pFrm, 10386 uint32_t *pnNeeded); 10387 10388 #ifdef __cplusplus 10389 } /* End extern "C". */ 10390 #endif /* C++ */ 10391 10392 typedef struct sDot11fReAssocResponse{ 10393 tDot11fFfCapabilities Capabilities; 10394 tDot11fFfStatus Status; 10395 tDot11fFfAID AID; 10396 tDot11fIESuppRates SuppRates; 10397 tDot11fIEExtSuppRates ExtSuppRates; 10398 tDot11fIEEDCAParamSet EDCAParamSet; 10399 tDot11fIERCPIIE RCPIIE; 10400 tDot11fIERSNIIE RSNIIE; 10401 tDot11fIERRMEnabledCap RRMEnabledCap; 10402 tDot11fIERSNOpaque RSNOpaque; 10403 tDot11fIEMobilityDomain MobilityDomain; 10404 tDot11fIEFTInfo FTInfo; 10405 uint16_t num_RICDataDesc; 10406 tDot11fIERICDataDesc RICDataDesc[2]; 10407 tDot11fIEWPA WPA; 10408 tDot11fIETimeoutInterval TimeoutInterval; 10409 tDot11fIEHTCaps HTCaps; 10410 tDot11fIEHTInfo HTInfo; 10411 tDot11fIEWMMParams WMMParams; 10412 tDot11fIEESERadMgmtCap ESERadMgmtCap; 10413 tDot11fIEESETrafStrmMet ESETrafStrmMet; 10414 tDot11fIEESETxmitPower ESETxmitPower; 10415 uint16_t num_WMMTSPEC; 10416 tDot11fIEWMMTSPEC WMMTSPEC[4]; 10417 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet; 10418 tDot11fIEWscReassocRes WscReassocRes; 10419 tDot11fIEP2PAssocRes P2PAssocRes; 10420 tDot11fIEVHTCaps VHTCaps; 10421 tDot11fIEVHTOperation VHTOperation; 10422 tDot11fIEExtCap ExtCap; 10423 tDot11fIEOBSSScanParameters OBSSScanParameters; 10424 tDot11fIEQosMapSet QosMapSet; 10425 tDot11fIEvendor_vht_ie vendor_vht_ie; 10426 tDot11fIEhe_cap he_cap; 10427 tDot11fIEhe_op he_op; 10428 tDot11fIEbss_color_change bss_color_change; 10429 tDot11fIEmu_edca_param_set mu_edca_param_set; 10430 tDot11fIEMBO_IE MBO_IE; 10431 } tDot11fReAssocResponse; 10432 10433 #define DOT11F_REASSOCRESPONSE (27) 10434 10435 #ifdef __cplusplus 10436 extern "C" { 10437 #endif /* C++ */ 10438 10439 uint32_t dot11f_unpack_re_assoc_response(tpAniSirGlobal pCtx, 10440 uint8_t *pBuf, uint32_t nBuf, 10441 tDot11fReAssocResponse * pFrm, bool append_ie); 10442 uint32_t dot11f_pack_re_assoc_response(tpAniSirGlobal pCtx, 10443 tDot11fReAssocResponse *pFrm, uint8_t *pBuf, 10444 uint32_t nBuf, uint32_t *pnConsumed); 10445 uint32_t dot11f_get_packed_re_assoc_response_size(tpAniSirGlobal pCtx, 10446 tDot11fReAssocResponse *pFrm, 10447 uint32_t *pnNeeded); 10448 10449 #ifdef __cplusplus 10450 } /* End extern "C". */ 10451 #endif /* C++ */ 10452 10453 typedef struct sDot11fSMPowerSave{ 10454 tDot11fFfCategory Category; 10455 tDot11fFfAction Action; 10456 tDot11fFfSMPowerModeSet SMPowerModeSet; 10457 } tDot11fSMPowerSave; 10458 10459 #define DOT11F_SMPOWERSAVE (28) 10460 10461 #ifdef __cplusplus 10462 extern "C" { 10463 #endif /* C++ */ 10464 10465 uint32_t dot11f_unpack_sm_power_save(tpAniSirGlobal pCtx, 10466 uint8_t *pBuf, uint32_t nBuf, 10467 tDot11fSMPowerSave * pFrm, bool append_ie); 10468 uint32_t dot11f_pack_sm_power_save(tpAniSirGlobal pCtx, 10469 tDot11fSMPowerSave *pFrm, uint8_t *pBuf, 10470 uint32_t nBuf, uint32_t *pnConsumed); 10471 uint32_t dot11f_get_packed_sm_power_save_size(tpAniSirGlobal pCtx, 10472 tDot11fSMPowerSave *pFrm, 10473 uint32_t *pnNeeded); 10474 10475 #ifdef __cplusplus 10476 } /* End extern "C". */ 10477 #endif /* C++ */ 10478 10479 typedef struct sDot11fSaQueryReq{ 10480 tDot11fFfCategory Category; 10481 tDot11fFfAction Action; 10482 tDot11fFfTransactionId TransactionId; 10483 } tDot11fSaQueryReq; 10484 10485 #define DOT11F_SAQUERYREQ (29) 10486 10487 #ifdef __cplusplus 10488 extern "C" { 10489 #endif /* C++ */ 10490 10491 uint32_t dot11f_unpack_sa_query_req(tpAniSirGlobal pCtx, 10492 uint8_t *pBuf, uint32_t nBuf, 10493 tDot11fSaQueryReq * pFrm, bool append_ie); 10494 uint32_t dot11f_pack_sa_query_req(tpAniSirGlobal pCtx, 10495 tDot11fSaQueryReq *pFrm, uint8_t *pBuf, 10496 uint32_t nBuf, uint32_t *pnConsumed); 10497 uint32_t dot11f_get_packed_sa_query_req_size(tpAniSirGlobal pCtx, 10498 tDot11fSaQueryReq *pFrm, 10499 uint32_t *pnNeeded); 10500 10501 #ifdef __cplusplus 10502 } /* End extern "C". */ 10503 #endif /* C++ */ 10504 10505 typedef struct sDot11fSaQueryRsp{ 10506 tDot11fFfCategory Category; 10507 tDot11fFfAction Action; 10508 tDot11fFfTransactionId TransactionId; 10509 } tDot11fSaQueryRsp; 10510 10511 #define DOT11F_SAQUERYRSP (30) 10512 10513 #ifdef __cplusplus 10514 extern "C" { 10515 #endif /* C++ */ 10516 10517 uint32_t dot11f_unpack_sa_query_rsp(tpAniSirGlobal pCtx, 10518 uint8_t *pBuf, uint32_t nBuf, 10519 tDot11fSaQueryRsp * pFrm, bool append_ie); 10520 uint32_t dot11f_pack_sa_query_rsp(tpAniSirGlobal pCtx, 10521 tDot11fSaQueryRsp *pFrm, uint8_t *pBuf, 10522 uint32_t nBuf, uint32_t *pnConsumed); 10523 uint32_t dot11f_get_packed_sa_query_rsp_size(tpAniSirGlobal pCtx, 10524 tDot11fSaQueryRsp *pFrm, 10525 uint32_t *pnNeeded); 10526 10527 #ifdef __cplusplus 10528 } /* End extern "C". */ 10529 #endif /* C++ */ 10530 10531 typedef struct sDot11fTDLSDisReq{ 10532 tDot11fFfCategory Category; 10533 tDot11fFfAction Action; 10534 tDot11fFfDialogToken DialogToken; 10535 tDot11fIELinkIdentifier LinkIdentifier; 10536 } tDot11fTDLSDisReq; 10537 10538 #define DOT11F_TDLSDISREQ (31) 10539 10540 #ifdef __cplusplus 10541 extern "C" { 10542 #endif /* C++ */ 10543 10544 uint32_t dot11f_unpack_tdls_dis_req(tpAniSirGlobal pCtx, 10545 uint8_t *pBuf, uint32_t nBuf, 10546 tDot11fTDLSDisReq * pFrm, bool append_ie); 10547 uint32_t dot11f_pack_tdls_dis_req(tpAniSirGlobal pCtx, 10548 tDot11fTDLSDisReq *pFrm, uint8_t *pBuf, 10549 uint32_t nBuf, uint32_t *pnConsumed); 10550 uint32_t dot11f_get_packed_tdls_dis_req_size(tpAniSirGlobal pCtx, 10551 tDot11fTDLSDisReq *pFrm, 10552 uint32_t *pnNeeded); 10553 10554 #ifdef __cplusplus 10555 } /* End extern "C". */ 10556 #endif /* C++ */ 10557 10558 typedef struct sDot11fTDLSDisRsp{ 10559 tDot11fFfCategory Category; 10560 tDot11fFfAction Action; 10561 tDot11fFfDialogToken DialogToken; 10562 tDot11fFfCapabilities Capabilities; 10563 tDot11fIESuppRates SuppRates; 10564 tDot11fIEExtSuppRates ExtSuppRates; 10565 tDot11fIESuppChannels SuppChannels; 10566 tDot11fIESuppOperatingClasses SuppOperatingClasses; 10567 tDot11fIERSN RSN; 10568 tDot11fIEExtCap ExtCap; 10569 tDot11fIEFTInfo FTInfo; 10570 tDot11fIETimeoutInterval TimeoutInterval; 10571 tDot11fIERICData RICData; 10572 tDot11fIEHTCaps HTCaps; 10573 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence; 10574 tDot11fIELinkIdentifier LinkIdentifier; 10575 tDot11fIEVHTCaps VHTCaps; 10576 } tDot11fTDLSDisRsp; 10577 10578 #define DOT11F_TDLSDISRSP (32) 10579 10580 #ifdef __cplusplus 10581 extern "C" { 10582 #endif /* C++ */ 10583 10584 uint32_t dot11f_unpack_tdls_dis_rsp(tpAniSirGlobal pCtx, 10585 uint8_t *pBuf, uint32_t nBuf, 10586 tDot11fTDLSDisRsp * pFrm, bool append_ie); 10587 uint32_t dot11f_pack_tdls_dis_rsp(tpAniSirGlobal pCtx, 10588 tDot11fTDLSDisRsp *pFrm, uint8_t *pBuf, 10589 uint32_t nBuf, uint32_t *pnConsumed); 10590 uint32_t dot11f_get_packed_tdls_dis_rsp_size(tpAniSirGlobal pCtx, 10591 tDot11fTDLSDisRsp *pFrm, 10592 uint32_t *pnNeeded); 10593 10594 #ifdef __cplusplus 10595 } /* End extern "C". */ 10596 #endif /* C++ */ 10597 10598 typedef struct sDot11fTDLSPeerTrafficInd{ 10599 tDot11fFfCategory Category; 10600 tDot11fFfAction Action; 10601 tDot11fFfDialogToken DialogToken; 10602 tDot11fIELinkIdentifier LinkIdentifier; 10603 tDot11fIEPTIControl PTIControl; 10604 tDot11fIEPUBufferStatus PUBufferStatus; 10605 } tDot11fTDLSPeerTrafficInd; 10606 10607 #define DOT11F_TDLSPEERTRAFFICIND (33) 10608 10609 #ifdef __cplusplus 10610 extern "C" { 10611 #endif /* C++ */ 10612 10613 uint32_t dot11f_unpack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx, 10614 uint8_t *pBuf, uint32_t nBuf, 10615 tDot11fTDLSPeerTrafficInd * pFrm, bool append_ie); 10616 uint32_t dot11f_pack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx, 10617 tDot11fTDLSPeerTrafficInd *pFrm, uint8_t *pBuf, 10618 uint32_t nBuf, uint32_t *pnConsumed); 10619 uint32_t dot11f_get_packed_tdls_peer_traffic_ind_size(tpAniSirGlobal pCtx, 10620 tDot11fTDLSPeerTrafficInd *pFrm, 10621 uint32_t *pnNeeded); 10622 10623 #ifdef __cplusplus 10624 } /* End extern "C". */ 10625 #endif /* C++ */ 10626 10627 typedef struct sDot11fTDLSPeerTrafficRsp{ 10628 tDot11fFfCategory Category; 10629 tDot11fFfAction Action; 10630 tDot11fFfDialogToken DialogToken; 10631 tDot11fIELinkIdentifier LinkIdentifier; 10632 } tDot11fTDLSPeerTrafficRsp; 10633 10634 #define DOT11F_TDLSPEERTRAFFICRSP (34) 10635 10636 #ifdef __cplusplus 10637 extern "C" { 10638 #endif /* C++ */ 10639 10640 uint32_t dot11f_unpack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx, 10641 uint8_t *pBuf, uint32_t nBuf, 10642 tDot11fTDLSPeerTrafficRsp * pFrm, bool append_ie); 10643 uint32_t dot11f_pack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx, 10644 tDot11fTDLSPeerTrafficRsp *pFrm, uint8_t *pBuf, 10645 uint32_t nBuf, uint32_t *pnConsumed); 10646 uint32_t dot11f_get_packed_tdls_peer_traffic_rsp_size(tpAniSirGlobal pCtx, 10647 tDot11fTDLSPeerTrafficRsp *pFrm, 10648 uint32_t *pnNeeded); 10649 10650 #ifdef __cplusplus 10651 } /* End extern "C". */ 10652 #endif /* C++ */ 10653 10654 typedef struct sDot11fTDLSSetupCnf{ 10655 tDot11fFfCategory Category; 10656 tDot11fFfAction Action; 10657 tDot11fFfStatus Status; 10658 tDot11fFfDialogToken DialogToken; 10659 tDot11fIERSN RSN; 10660 tDot11fIEEDCAParamSet EDCAParamSet; 10661 tDot11fIEFTInfo FTInfo; 10662 tDot11fIETimeoutInterval TimeoutInterval; 10663 tDot11fIEHTInfo HTInfo; 10664 tDot11fIELinkIdentifier LinkIdentifier; 10665 tDot11fIEWMMParams WMMParams; 10666 tDot11fIEVHTOperation VHTOperation; 10667 tDot11fIEOperatingMode OperatingMode; 10668 } tDot11fTDLSSetupCnf; 10669 10670 #define DOT11F_TDLSSETUPCNF (35) 10671 10672 #ifdef __cplusplus 10673 extern "C" { 10674 #endif /* C++ */ 10675 10676 uint32_t dot11f_unpack_tdls_setup_cnf(tpAniSirGlobal pCtx, 10677 uint8_t *pBuf, uint32_t nBuf, 10678 tDot11fTDLSSetupCnf * pFrm, bool append_ie); 10679 uint32_t dot11f_pack_tdls_setup_cnf(tpAniSirGlobal pCtx, 10680 tDot11fTDLSSetupCnf *pFrm, uint8_t *pBuf, 10681 uint32_t nBuf, uint32_t *pnConsumed); 10682 uint32_t dot11f_get_packed_tdls_setup_cnf_size(tpAniSirGlobal pCtx, 10683 tDot11fTDLSSetupCnf *pFrm, 10684 uint32_t *pnNeeded); 10685 10686 #ifdef __cplusplus 10687 } /* End extern "C". */ 10688 #endif /* C++ */ 10689 10690 typedef struct sDot11fTDLSSetupReq{ 10691 tDot11fFfCategory Category; 10692 tDot11fFfAction Action; 10693 tDot11fFfDialogToken DialogToken; 10694 tDot11fFfCapabilities Capabilities; 10695 tDot11fIESuppRates SuppRates; 10696 tDot11fIECountry Country; 10697 tDot11fIEExtSuppRates ExtSuppRates; 10698 tDot11fIESuppChannels SuppChannels; 10699 tDot11fIERSN RSN; 10700 tDot11fIEExtCap ExtCap; 10701 tDot11fIESuppOperatingClasses SuppOperatingClasses; 10702 tDot11fIEQOSCapsStation QOSCapsStation; 10703 tDot11fIEFTInfo FTInfo; 10704 tDot11fIETimeoutInterval TimeoutInterval; 10705 tDot11fIERICData RICData; 10706 tDot11fIEHTCaps HTCaps; 10707 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence; 10708 tDot11fIELinkIdentifier LinkIdentifier; 10709 tDot11fIEWMMInfoStation WMMInfoStation; 10710 tDot11fIEAID AID; 10711 tDot11fIEVHTCaps VHTCaps; 10712 } tDot11fTDLSSetupReq; 10713 10714 #define DOT11F_TDLSSETUPREQ (36) 10715 10716 #ifdef __cplusplus 10717 extern "C" { 10718 #endif /* C++ */ 10719 10720 uint32_t dot11f_unpack_tdls_setup_req(tpAniSirGlobal pCtx, 10721 uint8_t *pBuf, uint32_t nBuf, 10722 tDot11fTDLSSetupReq * pFrm, bool append_ie); 10723 uint32_t dot11f_pack_tdls_setup_req(tpAniSirGlobal pCtx, 10724 tDot11fTDLSSetupReq *pFrm, uint8_t *pBuf, 10725 uint32_t nBuf, uint32_t *pnConsumed); 10726 uint32_t dot11f_get_packed_tdls_setup_req_size(tpAniSirGlobal pCtx, 10727 tDot11fTDLSSetupReq *pFrm, 10728 uint32_t *pnNeeded); 10729 10730 #ifdef __cplusplus 10731 } /* End extern "C". */ 10732 #endif /* C++ */ 10733 10734 typedef struct sDot11fTDLSSetupRsp{ 10735 tDot11fFfCategory Category; 10736 tDot11fFfAction Action; 10737 tDot11fFfStatus Status; 10738 tDot11fFfDialogToken DialogToken; 10739 tDot11fFfCapabilities Capabilities; 10740 tDot11fIESuppRates SuppRates; 10741 tDot11fIECountry Country; 10742 tDot11fIEExtSuppRates ExtSuppRates; 10743 tDot11fIESuppChannels SuppChannels; 10744 tDot11fIERSN RSN; 10745 tDot11fIEExtCap ExtCap; 10746 tDot11fIESuppOperatingClasses SuppOperatingClasses; 10747 tDot11fIEQOSCapsStation QOSCapsStation; 10748 tDot11fIEFTInfo FTInfo; 10749 tDot11fIETimeoutInterval TimeoutInterval; 10750 tDot11fIERICData RICData; 10751 tDot11fIEHTCaps HTCaps; 10752 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence; 10753 tDot11fIELinkIdentifier LinkIdentifier; 10754 tDot11fIEWMMInfoStation WMMInfoStation; 10755 tDot11fIEAID AID; 10756 tDot11fIEVHTCaps VHTCaps; 10757 tDot11fIEOperatingMode OperatingMode; 10758 } tDot11fTDLSSetupRsp; 10759 10760 #define DOT11F_TDLSSETUPRSP (37) 10761 10762 #ifdef __cplusplus 10763 extern "C" { 10764 #endif /* C++ */ 10765 10766 uint32_t dot11f_unpack_tdls_setup_rsp(tpAniSirGlobal pCtx, 10767 uint8_t *pBuf, uint32_t nBuf, 10768 tDot11fTDLSSetupRsp * pFrm, bool append_ie); 10769 uint32_t dot11f_pack_tdls_setup_rsp(tpAniSirGlobal pCtx, 10770 tDot11fTDLSSetupRsp *pFrm, uint8_t *pBuf, 10771 uint32_t nBuf, uint32_t *pnConsumed); 10772 uint32_t dot11f_get_packed_tdls_setup_rsp_size(tpAniSirGlobal pCtx, 10773 tDot11fTDLSSetupRsp *pFrm, 10774 uint32_t *pnNeeded); 10775 10776 #ifdef __cplusplus 10777 } /* End extern "C". */ 10778 #endif /* C++ */ 10779 10780 typedef struct sDot11fTDLSTeardown{ 10781 tDot11fFfCategory Category; 10782 tDot11fFfAction Action; 10783 tDot11fFfReason Reason; 10784 tDot11fIEFTInfo FTInfo; 10785 tDot11fIELinkIdentifier LinkIdentifier; 10786 } tDot11fTDLSTeardown; 10787 10788 #define DOT11F_TDLSTEARDOWN (38) 10789 10790 #ifdef __cplusplus 10791 extern "C" { 10792 #endif /* C++ */ 10793 10794 uint32_t dot11f_unpack_tdls_teardown(tpAniSirGlobal pCtx, 10795 uint8_t *pBuf, uint32_t nBuf, 10796 tDot11fTDLSTeardown * pFrm, bool append_ie); 10797 uint32_t dot11f_pack_tdls_teardown(tpAniSirGlobal pCtx, 10798 tDot11fTDLSTeardown *pFrm, uint8_t *pBuf, 10799 uint32_t nBuf, uint32_t *pnConsumed); 10800 uint32_t dot11f_get_packed_tdls_teardown_size(tpAniSirGlobal pCtx, 10801 tDot11fTDLSTeardown *pFrm, 10802 uint32_t *pnNeeded); 10803 10804 #ifdef __cplusplus 10805 } /* End extern "C". */ 10806 #endif /* C++ */ 10807 10808 typedef struct sDot11fTPCReport{ 10809 tDot11fFfCategory Category; 10810 tDot11fFfAction Action; 10811 tDot11fFfDialogToken DialogToken; 10812 tDot11fIETPCReport TPCReport; 10813 } tDot11fTPCReport; 10814 10815 #define DOT11F_TPCREPORT (39) 10816 10817 #ifdef __cplusplus 10818 extern "C" { 10819 #endif /* C++ */ 10820 10821 uint32_t dot11f_unpack_tpc_report(tpAniSirGlobal pCtx, 10822 uint8_t *pBuf, uint32_t nBuf, 10823 tDot11fTPCReport * pFrm, bool append_ie); 10824 uint32_t dot11f_pack_tpc_report(tpAniSirGlobal pCtx, 10825 tDot11fTPCReport *pFrm, uint8_t *pBuf, 10826 uint32_t nBuf, uint32_t *pnConsumed); 10827 uint32_t dot11f_get_packed_tpc_report_size(tpAniSirGlobal pCtx, 10828 tDot11fTPCReport *pFrm, 10829 uint32_t *pnNeeded); 10830 10831 #ifdef __cplusplus 10832 } /* End extern "C". */ 10833 #endif /* C++ */ 10834 10835 typedef struct sDot11fTPCRequest{ 10836 tDot11fFfCategory Category; 10837 tDot11fFfAction Action; 10838 tDot11fFfDialogToken DialogToken; 10839 tDot11fIETPCRequest TPCRequest; 10840 } tDot11fTPCRequest; 10841 10842 #define DOT11F_TPCREQUEST (40) 10843 10844 #ifdef __cplusplus 10845 extern "C" { 10846 #endif /* C++ */ 10847 10848 uint32_t dot11f_unpack_tpc_request(tpAniSirGlobal pCtx, 10849 uint8_t *pBuf, uint32_t nBuf, 10850 tDot11fTPCRequest * pFrm, bool append_ie); 10851 uint32_t dot11f_pack_tpc_request(tpAniSirGlobal pCtx, 10852 tDot11fTPCRequest *pFrm, uint8_t *pBuf, 10853 uint32_t nBuf, uint32_t *pnConsumed); 10854 uint32_t dot11f_get_packed_tpc_request_size(tpAniSirGlobal pCtx, 10855 tDot11fTPCRequest *pFrm, 10856 uint32_t *pnNeeded); 10857 10858 #ifdef __cplusplus 10859 } /* End extern "C". */ 10860 #endif /* C++ */ 10861 10862 typedef struct sDot11fTimingAdvertisementFrame{ 10863 tDot11fFfTimeStamp TimeStamp; 10864 tDot11fFfCapabilities Capabilities; 10865 tDot11fIECountry Country; 10866 tDot11fIEPowerConstraints PowerConstraints; 10867 tDot11fIETimeAdvertisement TimeAdvertisement; 10868 tDot11fIEExtCap ExtCap; 10869 tDot11fIEVendor1IE Vendor1IE; 10870 tDot11fIEVendor3IE Vendor3IE; 10871 } tDot11fTimingAdvertisementFrame; 10872 10873 #define DOT11F_TIMINGADVERTISEMENTFRAME (41) 10874 10875 #ifdef __cplusplus 10876 extern "C" { 10877 #endif /* C++ */ 10878 10879 uint32_t dot11f_unpack_timing_advertisement_frame(tpAniSirGlobal pCtx, 10880 uint8_t *pBuf, uint32_t nBuf, 10881 tDot11fTimingAdvertisementFrame * pFrm, bool append_ie); 10882 uint32_t dot11f_pack_timing_advertisement_frame(tpAniSirGlobal pCtx, 10883 tDot11fTimingAdvertisementFrame *pFrm, uint8_t *pBuf, 10884 uint32_t nBuf, uint32_t *pnConsumed); 10885 uint32_t dot11f_get_packed_timing_advertisement_frame_size(tpAniSirGlobal pCtx, 10886 tDot11fTimingAdvertisementFrame *pFrm, 10887 uint32_t *pnNeeded); 10888 10889 #ifdef __cplusplus 10890 } /* End extern "C". */ 10891 #endif /* C++ */ 10892 10893 typedef struct sDot11fVHTGidManagementActionFrame{ 10894 tDot11fFfCategory Category; 10895 tDot11fFfAction Action; 10896 tDot11fFfVhtMembershipStatusArray VhtMembershipStatusArray; 10897 tDot11fFfVhtUserPositionArray VhtUserPositionArray; 10898 } tDot11fVHTGidManagementActionFrame; 10899 10900 #define DOT11F_VHTGIDMANAGEMENTACTIONFRAME (42) 10901 10902 #ifdef __cplusplus 10903 extern "C" { 10904 #endif /* C++ */ 10905 10906 uint32_t dot11f_unpack_vht_gid_management_action_frame(tpAniSirGlobal pCtx, 10907 uint8_t *pBuf, uint32_t nBuf, 10908 tDot11fVHTGidManagementActionFrame * pFrm, bool append_ie); 10909 uint32_t dot11f_pack_vht_gid_management_action_frame(tpAniSirGlobal pCtx, 10910 tDot11fVHTGidManagementActionFrame *pFrm, uint8_t *pBuf, 10911 uint32_t nBuf, uint32_t *pnConsumed); 10912 uint32_t dot11f_get_packed_vht_gid_management_action_frame_size(tpAniSirGlobal pCtx, 10913 tDot11fVHTGidManagementActionFrame *pFrm, 10914 uint32_t *pnNeeded); 10915 10916 #ifdef __cplusplus 10917 } /* End extern "C". */ 10918 #endif /* C++ */ 10919 10920 typedef struct sDot11fWMMAddTSRequest{ 10921 tDot11fFfCategory Category; 10922 tDot11fFfAction Action; 10923 tDot11fFfDialogToken DialogToken; 10924 tDot11fFfStatusCode StatusCode; 10925 tDot11fIEWMMTSPEC WMMTSPEC; 10926 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet; 10927 } tDot11fWMMAddTSRequest; 10928 10929 #define DOT11F_WMMADDTSREQUEST (43) 10930 10931 #ifdef __cplusplus 10932 extern "C" { 10933 #endif /* C++ */ 10934 10935 uint32_t dot11f_unpack_wmm_add_ts_request(tpAniSirGlobal pCtx, 10936 uint8_t *pBuf, uint32_t nBuf, 10937 tDot11fWMMAddTSRequest * pFrm, bool append_ie); 10938 uint32_t dot11f_pack_wmm_add_ts_request(tpAniSirGlobal pCtx, 10939 tDot11fWMMAddTSRequest *pFrm, uint8_t *pBuf, 10940 uint32_t nBuf, uint32_t *pnConsumed); 10941 uint32_t dot11f_get_packed_wmm_add_ts_request_size(tpAniSirGlobal pCtx, 10942 tDot11fWMMAddTSRequest *pFrm, 10943 uint32_t *pnNeeded); 10944 10945 #ifdef __cplusplus 10946 } /* End extern "C". */ 10947 #endif /* C++ */ 10948 10949 typedef struct sDot11fWMMAddTSResponse{ 10950 tDot11fFfCategory Category; 10951 tDot11fFfAction Action; 10952 tDot11fFfDialogToken DialogToken; 10953 tDot11fFfStatusCode StatusCode; 10954 tDot11fIEWMMTSPEC WMMTSPEC; 10955 tDot11fIEESETrafStrmMet ESETrafStrmMet; 10956 } tDot11fWMMAddTSResponse; 10957 10958 #define DOT11F_WMMADDTSRESPONSE (44) 10959 10960 #ifdef __cplusplus 10961 extern "C" { 10962 #endif /* C++ */ 10963 10964 uint32_t dot11f_unpack_wmm_add_ts_response(tpAniSirGlobal pCtx, 10965 uint8_t *pBuf, uint32_t nBuf, 10966 tDot11fWMMAddTSResponse * pFrm, bool append_ie); 10967 uint32_t dot11f_pack_wmm_add_ts_response(tpAniSirGlobal pCtx, 10968 tDot11fWMMAddTSResponse *pFrm, uint8_t *pBuf, 10969 uint32_t nBuf, uint32_t *pnConsumed); 10970 uint32_t dot11f_get_packed_wmm_add_ts_response_size(tpAniSirGlobal pCtx, 10971 tDot11fWMMAddTSResponse *pFrm, 10972 uint32_t *pnNeeded); 10973 10974 #ifdef __cplusplus 10975 } /* End extern "C". */ 10976 #endif /* C++ */ 10977 10978 typedef struct sDot11fWMMDelTS{ 10979 tDot11fFfCategory Category; 10980 tDot11fFfAction Action; 10981 tDot11fFfDialogToken DialogToken; 10982 tDot11fFfStatusCode StatusCode; 10983 tDot11fIEWMMTSPEC WMMTSPEC; 10984 } tDot11fWMMDelTS; 10985 10986 #define DOT11F_WMMDELTS (45) 10987 10988 #ifdef __cplusplus 10989 extern "C" { 10990 #endif /* C++ */ 10991 10992 uint32_t dot11f_unpack_wmm_del_ts(tpAniSirGlobal pCtx, 10993 uint8_t *pBuf, uint32_t nBuf, 10994 tDot11fWMMDelTS * pFrm, bool append_ie); 10995 uint32_t dot11f_pack_wmm_del_ts(tpAniSirGlobal pCtx, 10996 tDot11fWMMDelTS *pFrm, uint8_t *pBuf, 10997 uint32_t nBuf, uint32_t *pnConsumed); 10998 uint32_t dot11f_get_packed_wmm_del_ts_size(tpAniSirGlobal pCtx, 10999 tDot11fWMMDelTS *pFrm, 11000 uint32_t *pnNeeded); 11001 11002 #ifdef __cplusplus 11003 } /* End extern "C". */ 11004 #endif /* C++ */ 11005 11006 typedef struct sDot11faddba_req{ 11007 tDot11fFfCategory Category; 11008 tDot11fFfAction Action; 11009 tDot11fFfDialogToken DialogToken; 11010 tDot11fFfaddba_param_set addba_param_set; 11011 tDot11fFfba_timeout ba_timeout; 11012 tDot11fFfba_start_seq_ctrl ba_start_seq_ctrl; 11013 tDot11fIEaddba_extn_element addba_extn_element; 11014 } tDot11faddba_req; 11015 11016 #define DOT11F_ADDBA_REQ (46) 11017 11018 #ifdef __cplusplus 11019 extern "C" { 11020 #endif /* C++ */ 11021 11022 uint32_t dot11f_unpack_addba_req(tpAniSirGlobal pCtx, 11023 uint8_t *pBuf, uint32_t nBuf, 11024 tDot11faddba_req * pFrm, bool append_ie); 11025 uint32_t dot11f_pack_addba_req(tpAniSirGlobal pCtx, 11026 tDot11faddba_req *pFrm, uint8_t *pBuf, 11027 uint32_t nBuf, uint32_t *pnConsumed); 11028 uint32_t dot11f_get_packed_addba_req_size(tpAniSirGlobal pCtx, 11029 tDot11faddba_req *pFrm, 11030 uint32_t *pnNeeded); 11031 11032 #ifdef __cplusplus 11033 } /* End extern "C". */ 11034 #endif /* C++ */ 11035 11036 typedef struct sDot11faddba_rsp{ 11037 tDot11fFfCategory Category; 11038 tDot11fFfAction Action; 11039 tDot11fFfDialogToken DialogToken; 11040 tDot11fFfStatus Status; 11041 tDot11fFfaddba_param_set addba_param_set; 11042 tDot11fFfba_timeout ba_timeout; 11043 tDot11fIEaddba_extn_element addba_extn_element; 11044 } tDot11faddba_rsp; 11045 11046 #define DOT11F_ADDBA_RSP (47) 11047 11048 #ifdef __cplusplus 11049 extern "C" { 11050 #endif /* C++ */ 11051 11052 uint32_t dot11f_unpack_addba_rsp(tpAniSirGlobal pCtx, 11053 uint8_t *pBuf, uint32_t nBuf, 11054 tDot11faddba_rsp * pFrm, bool append_ie); 11055 uint32_t dot11f_pack_addba_rsp(tpAniSirGlobal pCtx, 11056 tDot11faddba_rsp *pFrm, uint8_t *pBuf, 11057 uint32_t nBuf, uint32_t *pnConsumed); 11058 uint32_t dot11f_get_packed_addba_rsp_size(tpAniSirGlobal pCtx, 11059 tDot11faddba_rsp *pFrm, 11060 uint32_t *pnNeeded); 11061 11062 #ifdef __cplusplus 11063 } /* End extern "C". */ 11064 #endif /* C++ */ 11065 11066 typedef struct sDot11fdelba_req{ 11067 tDot11fFfCategory Category; 11068 tDot11fFfAction Action; 11069 tDot11fFfdelba_param_set delba_param_set; 11070 tDot11fFfReason Reason; 11071 } tDot11fdelba_req; 11072 11073 #define DOT11F_DELBA_REQ (48) 11074 11075 #ifdef __cplusplus 11076 extern "C" { 11077 #endif /* C++ */ 11078 11079 uint32_t dot11f_unpack_delba_req(tpAniSirGlobal pCtx, 11080 uint8_t *pBuf, uint32_t nBuf, 11081 tDot11fdelba_req * pFrm, bool append_ie); 11082 uint32_t dot11f_pack_delba_req(tpAniSirGlobal pCtx, 11083 tDot11fdelba_req *pFrm, uint8_t *pBuf, 11084 uint32_t nBuf, uint32_t *pnConsumed); 11085 uint32_t dot11f_get_packed_delba_req_size(tpAniSirGlobal pCtx, 11086 tDot11fdelba_req *pFrm, 11087 uint32_t *pnNeeded); 11088 11089 #ifdef __cplusplus 11090 } /* End extern "C". */ 11091 #endif /* C++ */ 11092 11093 typedef struct sDot11fext_channel_switch_action_frame{ 11094 tDot11fFfCategory Category; 11095 tDot11fFfAction Action; 11096 tDot11fFfext_chan_switch_ann_action ext_chan_switch_ann_action; 11097 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 11098 } tDot11fext_channel_switch_action_frame; 11099 11100 #define DOT11F_EXT_CHANNEL_SWITCH_ACTION_FRAME (49) 11101 11102 #ifdef __cplusplus 11103 extern "C" { 11104 #endif /* C++ */ 11105 11106 uint32_t dot11f_unpack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx, 11107 uint8_t *pBuf, uint32_t nBuf, 11108 tDot11fext_channel_switch_action_frame * pFrm, bool append_ie); 11109 uint32_t dot11f_pack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx, 11110 tDot11fext_channel_switch_action_frame *pFrm, uint8_t *pBuf, 11111 uint32_t nBuf, uint32_t *pnConsumed); 11112 uint32_t dot11f_get_packed_ext_channel_switch_action_frame_size(tpAniSirGlobal pCtx, 11113 tDot11fext_channel_switch_action_frame *pFrm, 11114 uint32_t *pnNeeded); 11115 11116 #ifdef __cplusplus 11117 } /* End extern "C". */ 11118 #endif /* C++ */ 11119 11120 typedef struct sDot11fht2040_bss_coexistence_mgmt_action_frame{ 11121 tDot11fFfCategory Category; 11122 tDot11fFfAction Action; 11123 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence; 11124 tDot11fIEht2040_bss_intolerant_report ht2040_bss_intolerant_report; 11125 } tDot11fht2040_bss_coexistence_mgmt_action_frame; 11126 11127 #define DOT11F_HT2040_BSS_COEXISTENCE_MGMT_ACTION_FRAME (50) 11128 11129 #ifdef __cplusplus 11130 extern "C" { 11131 #endif /* C++ */ 11132 11133 uint32_t dot11f_unpack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx, 11134 uint8_t *pBuf, uint32_t nBuf, 11135 tDot11fht2040_bss_coexistence_mgmt_action_frame * pFrm, bool append_ie); 11136 uint32_t dot11f_pack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx, 11137 tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm, uint8_t *pBuf, 11138 uint32_t nBuf, uint32_t *pnConsumed); 11139 uint32_t dot11f_get_packed_ht2040_bss_coexistence_mgmt_action_frameSize(tpAniSirGlobal pCtx, 11140 tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm, 11141 uint32_t *pnNeeded); 11142 11143 #ifdef __cplusplus 11144 } /* End extern "C". */ 11145 #endif /* C++ */ 11146 11147 typedef struct sDot11fp2p_oper_chan_change_confirm{ 11148 tDot11fFfCategory Category; 11149 tDot11fFfp2p_action_oui p2p_action_oui; 11150 tDot11fFfp2p_action_subtype p2p_action_subtype; 11151 tDot11fFfDialogToken DialogToken; 11152 tDot11fIEHTCaps HTCaps; 11153 tDot11fIEVHTCaps VHTCaps; 11154 tDot11fIEOperatingMode OperatingMode; 11155 } tDot11fp2p_oper_chan_change_confirm; 11156 11157 #define DOT11F_P2P_OPER_CHAN_CHANGE_CONFIRM (51) 11158 11159 #ifdef __cplusplus 11160 extern "C" { 11161 #endif /* C++ */ 11162 11163 uint32_t dot11f_unpack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx, 11164 uint8_t *pBuf, uint32_t nBuf, 11165 tDot11fp2p_oper_chan_change_confirm * pFrm, bool append_ie); 11166 uint32_t dot11f_pack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx, 11167 tDot11fp2p_oper_chan_change_confirm *pFrm, uint8_t *pBuf, 11168 uint32_t nBuf, uint32_t *pnConsumed); 11169 uint32_t dot11f_get_packed_p2p_oper_chan_change_confirmSize(tpAniSirGlobal pCtx, 11170 tDot11fp2p_oper_chan_change_confirm *pFrm, 11171 uint32_t *pnNeeded); 11172 11173 #ifdef __cplusplus 11174 } /* End extern "C". */ 11175 #endif /* C++ */ 11176 11177 #endif /* DOT11F_H */ 11178