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