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