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 Sep 22 02:08:42 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 } tDot11fIEtransmit_power_env; 4951 4952 #define DOT11F_EID_TRANSMIT_POWER_ENV (195) 4953 4954 /* N.B. These #defines do *not* include the EID & length */ 4955 #define DOT11F_IE_TRANSMIT_POWER_ENV_MIN_LEN (2) 4956 4957 #define DOT11F_IE_TRANSMIT_POWER_ENV_MAX_LEN (9) 4958 4959 #ifdef __cplusplus 4960 extern "C" { 4961 #endif /* C++ */ 4962 __must_check uint32_t dot11f_unpack_ie_transmit_power_env( 4963 tpAniSirGlobal, 4964 uint8_t *, 4965 uint8_t, 4966 tDot11fIEtransmit_power_env*, 4967 bool); 4968 4969 uint32_t dot11f_pack_ie_transmit_power_env( 4970 tpAniSirGlobal, 4971 tDot11fIEtransmit_power_env *, 4972 uint8_t *, 4973 uint32_t, 4974 uint32_t*); 4975 4976 uint32_t dot11f_get_packed_ie_transmit_power_env( 4977 tpAniSirGlobal, 4978 tDot11fIEtransmit_power_env *, 4979 uint32_t*); 4980 4981 #ifdef __cplusplus 4982 }; /* End extern "C". */ 4983 #endif /* C++ */ 4984 4985 /* EID 163 (0xa3) */ 4986 typedef struct sDot11fIEwide_bw_chan_switch { 4987 uint8_t present; 4988 uint8_t new_chan_width; 4989 uint8_t new_center_chan_freq0; 4990 uint8_t new_center_chan_freq1; 4991 } tDot11fIEwide_bw_chan_switch; 4992 4993 #define DOT11F_EID_WIDE_BW_CHAN_SWITCH (163) 4994 4995 /* N.B. These #defines do *not* include the EID & length */ 4996 #define DOT11F_IE_WIDE_BW_CHAN_SWITCH_MIN_LEN (3) 4997 4998 #define DOT11F_IE_WIDE_BW_CHAN_SWITCH_MAX_LEN (3) 4999 5000 #ifdef __cplusplus 5001 extern "C" { 5002 #endif /* C++ */ 5003 __must_check uint32_t dot11f_unpack_ie_wide_bw_chan_switch( 5004 tpAniSirGlobal, 5005 uint8_t *, 5006 uint8_t, 5007 tDot11fIEwide_bw_chan_switch*, 5008 bool); 5009 5010 uint32_t dot11f_pack_ie_wide_bw_chan_switch( 5011 tpAniSirGlobal, 5012 tDot11fIEwide_bw_chan_switch *, 5013 uint8_t *, 5014 uint32_t, 5015 uint32_t*); 5016 5017 uint32_t dot11f_get_packed_ie_wide_bw_chan_switch( 5018 tpAniSirGlobal, 5019 tDot11fIEwide_bw_chan_switch *, 5020 uint32_t*); 5021 5022 #ifdef __cplusplus 5023 }; /* End extern "C". */ 5024 #endif /* C++ */ 5025 5026 /* EID 197 (0xc5) */ 5027 typedef struct sDot11fIEAID { 5028 uint8_t present; 5029 uint16_t assocId; 5030 } tDot11fIEAID; 5031 5032 #define DOT11F_EID_AID (197) 5033 5034 /* N.B. These #defines do *not* include the EID & length */ 5035 #define DOT11F_IE_AID_MIN_LEN (2) 5036 5037 #define DOT11F_IE_AID_MAX_LEN (2) 5038 5039 #ifdef __cplusplus 5040 extern "C" { 5041 #endif /* C++ */ 5042 __must_check uint32_t dot11f_unpack_ie_aid( 5043 tpAniSirGlobal, 5044 uint8_t *, 5045 uint8_t, 5046 tDot11fIEAID*, 5047 bool); 5048 5049 uint32_t dot11f_pack_ie_aid( 5050 tpAniSirGlobal, 5051 tDot11fIEAID *, 5052 uint8_t *, 5053 uint32_t, 5054 uint32_t*); 5055 5056 uint32_t dot11f_get_packed_ie_AID( 5057 tpAniSirGlobal, 5058 tDot11fIEAID *, 5059 uint32_t*); 5060 5061 #ifdef __cplusplus 5062 }; /* End extern "C". */ 5063 #endif /* C++ */ 5064 5065 /* EID 4 (0x04) */ 5066 typedef struct sDot11fIECFParams { 5067 uint8_t present; 5068 uint8_t cfp_count; 5069 uint8_t cfp_period; 5070 uint16_t cfp_maxduration; 5071 uint16_t cfp_durremaining; 5072 } tDot11fIECFParams; 5073 5074 #define DOT11F_EID_CFPARAMS (4) 5075 5076 /* N.B. These #defines do *not* include the EID & length */ 5077 #define DOT11F_IE_CFPARAMS_MIN_LEN (6) 5078 5079 #define DOT11F_IE_CFPARAMS_MAX_LEN (6) 5080 5081 #ifdef __cplusplus 5082 extern "C" { 5083 #endif /* C++ */ 5084 __must_check uint32_t dot11f_unpack_ie_cf_params( 5085 tpAniSirGlobal, 5086 uint8_t *, 5087 uint8_t, 5088 tDot11fIECFParams*, 5089 bool); 5090 5091 uint32_t dot11f_pack_ie_cf_params( 5092 tpAniSirGlobal, 5093 tDot11fIECFParams *, 5094 uint8_t *, 5095 uint32_t, 5096 uint32_t*); 5097 5098 uint32_t dot11f_get_packed_ie_CFParams( 5099 tpAniSirGlobal, 5100 tDot11fIECFParams *, 5101 uint32_t*); 5102 5103 #ifdef __cplusplus 5104 }; /* End extern "C". */ 5105 #endif /* C++ */ 5106 5107 /* EID 16 (0x10) */ 5108 typedef struct sDot11fIEChallengeText { 5109 uint8_t present; 5110 uint8_t num_text; 5111 uint8_t text[253]; 5112 } tDot11fIEChallengeText; 5113 5114 #define DOT11F_EID_CHALLENGETEXT (16) 5115 5116 /* N.B. These #defines do *not* include the EID & length */ 5117 #define DOT11F_IE_CHALLENGETEXT_MIN_LEN (1) 5118 5119 #define DOT11F_IE_CHALLENGETEXT_MAX_LEN (253) 5120 5121 #ifdef __cplusplus 5122 extern "C" { 5123 #endif /* C++ */ 5124 __must_check uint32_t dot11f_unpack_ie_challenge_text( 5125 tpAniSirGlobal, 5126 uint8_t *, 5127 uint8_t, 5128 tDot11fIEChallengeText*, 5129 bool); 5130 5131 uint32_t dot11f_pack_ie_challenge_text( 5132 tpAniSirGlobal, 5133 tDot11fIEChallengeText *, 5134 uint8_t *, 5135 uint32_t, 5136 uint32_t*); 5137 5138 uint32_t dot11f_get_packed_ie_ChallengeText( 5139 tpAniSirGlobal, 5140 tDot11fIEChallengeText *, 5141 uint32_t*); 5142 5143 #ifdef __cplusplus 5144 }; /* End extern "C". */ 5145 #endif /* C++ */ 5146 5147 /* EID 37 (0x25) */ 5148 typedef struct sDot11fIEChanSwitchAnn { 5149 uint8_t present; 5150 uint8_t switchMode; 5151 uint8_t newChannel; 5152 uint8_t switchCount; 5153 } tDot11fIEChanSwitchAnn; 5154 5155 #define DOT11F_EID_CHANSWITCHANN (37) 5156 5157 /* N.B. These #defines do *not* include the EID & length */ 5158 #define DOT11F_IE_CHANSWITCHANN_MIN_LEN (3) 5159 5160 #define DOT11F_IE_CHANSWITCHANN_MAX_LEN (3) 5161 5162 #ifdef __cplusplus 5163 extern "C" { 5164 #endif /* C++ */ 5165 __must_check uint32_t dot11f_unpack_ie_chan_switch_ann( 5166 tpAniSirGlobal, 5167 uint8_t *, 5168 uint8_t, 5169 tDot11fIEChanSwitchAnn*, 5170 bool); 5171 5172 uint32_t dot11f_pack_ie_chan_switch_ann( 5173 tpAniSirGlobal, 5174 tDot11fIEChanSwitchAnn *, 5175 uint8_t *, 5176 uint32_t, 5177 uint32_t*); 5178 5179 uint32_t dot11f_get_packed_ie_ChanSwitchAnn( 5180 tpAniSirGlobal, 5181 tDot11fIEChanSwitchAnn *, 5182 uint32_t*); 5183 5184 #ifdef __cplusplus 5185 }; /* End extern "C". */ 5186 #endif /* C++ */ 5187 5188 /* EID 196 (0xc4) */ 5189 typedef struct sDot11fIEChannelSwitchWrapper { 5190 uint8_t present; 5191 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 5192 tDot11fIEtransmit_power_env transmit_power_env; 5193 tDot11fIEbw_ind_element bw_ind_element; 5194 } tDot11fIEChannelSwitchWrapper; 5195 5196 #define DOT11F_EID_CHANNELSWITCHWRAPPER (196) 5197 5198 /* N.B. These #defines do *not* include the EID & length */ 5199 #define DOT11F_IE_CHANNELSWITCHWRAPPER_MIN_LEN (0) 5200 5201 #define DOT11F_IE_CHANNELSWITCHWRAPPER_MAX_LEN (24) 5202 5203 #ifdef __cplusplus 5204 extern "C" { 5205 #endif /* C++ */ 5206 __must_check uint32_t dot11f_unpack_ie_channel_switch_wrapper( 5207 tpAniSirGlobal, 5208 uint8_t *, 5209 uint8_t, 5210 tDot11fIEChannelSwitchWrapper*, 5211 bool); 5212 5213 uint32_t dot11f_pack_ie_channel_switch_wrapper( 5214 tpAniSirGlobal, 5215 tDot11fIEChannelSwitchWrapper *, 5216 uint8_t *, 5217 uint32_t, 5218 uint32_t*); 5219 5220 uint32_t dot11f_get_packed_ie_channel_switch_wrapper( 5221 tpAniSirGlobal, 5222 tDot11fIEChannelSwitchWrapper *, 5223 uint32_t*); 5224 5225 #ifdef __cplusplus 5226 }; /* End extern "C". */ 5227 #endif /* C++ */ 5228 5229 /* EID 7 (0x07) */ 5230 typedef struct sDot11fIECountry { 5231 uint8_t present; 5232 uint8_t country[3]; 5233 uint8_t first_triplet[3]; 5234 uint8_t num_more_triplets; 5235 uint8_t more_triplets[80][3]; 5236 } tDot11fIECountry; 5237 5238 #define DOT11F_EID_COUNTRY (7) 5239 5240 /* N.B. These #defines do *not* include the EID & length */ 5241 #define DOT11F_IE_COUNTRY_MIN_LEN (6) 5242 5243 #define DOT11F_IE_COUNTRY_MAX_LEN (246) 5244 5245 #ifdef __cplusplus 5246 extern "C" { 5247 #endif /* C++ */ 5248 __must_check uint32_t dot11f_unpack_ie_country( 5249 tpAniSirGlobal, 5250 uint8_t *, 5251 uint8_t, 5252 tDot11fIECountry*, 5253 bool); 5254 5255 uint32_t dot11f_pack_ie_country( 5256 tpAniSirGlobal, 5257 tDot11fIECountry *, 5258 uint8_t *, 5259 uint32_t, 5260 uint32_t*); 5261 5262 uint32_t dot11f_get_packed_ie_country( 5263 tpAniSirGlobal, 5264 tDot11fIECountry *, 5265 uint32_t*); 5266 5267 #ifdef __cplusplus 5268 }; /* End extern "C". */ 5269 #endif /* C++ */ 5270 5271 /* EID 3 (0x03) */ 5272 typedef struct sDot11fIEDSParams { 5273 uint8_t present; 5274 uint8_t curr_channel; 5275 } tDot11fIEDSParams; 5276 5277 #define DOT11F_EID_DSPARAMS (3) 5278 5279 /* N.B. These #defines do *not* include the EID & length */ 5280 #define DOT11F_IE_DSPARAMS_MIN_LEN (1) 5281 5282 #define DOT11F_IE_DSPARAMS_MAX_LEN (1) 5283 5284 #ifdef __cplusplus 5285 extern "C" { 5286 #endif /* C++ */ 5287 __must_check uint32_t dot11f_unpack_ie_DSParams( 5288 tpAniSirGlobal, 5289 uint8_t *, 5290 uint8_t, 5291 tDot11fIEDSParams*, 5292 bool); 5293 5294 uint32_t dot11f_pack_ie_ds_params( 5295 tpAniSirGlobal, 5296 tDot11fIEDSParams *, 5297 uint8_t *, 5298 uint32_t, 5299 uint32_t*); 5300 5301 uint32_t dot11f_get_packed_ie_DSParams( 5302 tpAniSirGlobal, 5303 tDot11fIEDSParams *, 5304 uint32_t*); 5305 5306 #ifdef __cplusplus 5307 }; /* End extern "C". */ 5308 #endif /* C++ */ 5309 5310 /* EID 12 (0x0c) */ 5311 typedef struct sDot11fIEEDCAParamSet { 5312 uint8_t present; 5313 uint8_t qos; 5314 uint8_t reserved; 5315 uint8_t acbe_aifsn:4; 5316 uint8_t acbe_acm:1; 5317 uint8_t acbe_aci:2; 5318 uint8_t unused1:1; 5319 uint8_t acbe_acwmin:4; 5320 uint8_t acbe_acwmax:4; 5321 uint16_t acbe_txoplimit; 5322 uint8_t acbk_aifsn:4; 5323 uint8_t acbk_acm:1; 5324 uint8_t acbk_aci:2; 5325 uint8_t unused2:1; 5326 uint8_t acbk_acwmin:4; 5327 uint8_t acbk_acwmax:4; 5328 uint16_t acbk_txoplimit; 5329 uint8_t acvi_aifsn:4; 5330 uint8_t acvi_acm:1; 5331 uint8_t acvi_aci:2; 5332 uint8_t unused3:1; 5333 uint8_t acvi_acwmin:4; 5334 uint8_t acvi_acwmax:4; 5335 uint16_t acvi_txoplimit; 5336 uint8_t acvo_aifsn:4; 5337 uint8_t acvo_acm:1; 5338 uint8_t acvo_aci:2; 5339 uint8_t unused4:1; 5340 uint8_t acvo_acwmin:4; 5341 uint8_t acvo_acwmax:4; 5342 uint16_t acvo_txoplimit; 5343 } tDot11fIEEDCAParamSet; 5344 5345 #define DOT11F_EID_EDCAPARAMSET (12) 5346 5347 /* N.B. These #defines do *not* include the EID & length */ 5348 #define DOT11F_IE_EDCAPARAMSET_MIN_LEN (18) 5349 5350 #define DOT11F_IE_EDCAPARAMSET_MAX_LEN (18) 5351 5352 #ifdef __cplusplus 5353 extern "C" { 5354 #endif /* C++ */ 5355 __must_check uint32_t dot11f_unpack_ie_edca_param_set( 5356 tpAniSirGlobal, 5357 uint8_t *, 5358 uint8_t, 5359 tDot11fIEEDCAParamSet*, 5360 bool); 5361 5362 uint32_t dot11f_pack_ie_edca_param_set( 5363 tpAniSirGlobal, 5364 tDot11fIEEDCAParamSet *, 5365 uint8_t *, 5366 uint32_t, 5367 uint32_t*); 5368 5369 uint32_t dot11f_get_packed_ie_EDCAParamSet( 5370 tpAniSirGlobal, 5371 tDot11fIEEDCAParamSet *, 5372 uint32_t*); 5373 5374 #ifdef __cplusplus 5375 }; /* End extern "C". */ 5376 #endif /* C++ */ 5377 5378 /* EID 42 (0x2a) */ 5379 typedef struct sDot11fIEERPInfo { 5380 uint8_t present; 5381 uint8_t non_erp_present:1; 5382 uint8_t use_prot:1; 5383 uint8_t barker_preamble:1; 5384 uint8_t unused:5; 5385 } tDot11fIEERPInfo; 5386 5387 #define DOT11F_EID_ERPINFO (42) 5388 5389 /* N.B. These #defines do *not* include the EID & length */ 5390 #define DOT11F_IE_ERPINFO_MIN_LEN (1) 5391 5392 #define DOT11F_IE_ERPINFO_MAX_LEN (1) 5393 5394 #ifdef __cplusplus 5395 extern "C" { 5396 #endif /* C++ */ 5397 __must_check uint32_t dot11f_unpack_ie_erp_info( 5398 tpAniSirGlobal, 5399 uint8_t *, 5400 uint8_t, 5401 tDot11fIEERPInfo*, 5402 bool); 5403 5404 uint32_t dot11f_pack_ie_erp_info( 5405 tpAniSirGlobal, 5406 tDot11fIEERPInfo *, 5407 uint8_t *, 5408 uint32_t, 5409 uint32_t*); 5410 5411 uint32_t dot11f_get_packed_ie_ERPInfo( 5412 tpAniSirGlobal, 5413 tDot11fIEERPInfo *, 5414 uint32_t*); 5415 5416 #ifdef __cplusplus 5417 }; /* End extern "C". */ 5418 #endif /* C++ */ 5419 5420 /* EID 156 (0x9c) {OUI 0x00, 0x40, 0x96, 0x00} */ 5421 typedef struct sDot11fIEESECckmOpaque { 5422 uint8_t present; 5423 uint8_t num_data; 5424 uint8_t data[20]; 5425 } tDot11fIEESECckmOpaque; 5426 5427 #define DOT11F_EID_ESECCKMOPAQUE (156) 5428 5429 /* N.B. These #defines do *not* include the EID & length */ 5430 #define DOT11F_IE_ESECCKMOPAQUE_MIN_LEN (10) 5431 5432 #define DOT11F_IE_ESECCKMOPAQUE_MAX_LEN (24) 5433 5434 #ifdef __cplusplus 5435 extern "C" { 5436 #endif /* C++ */ 5437 __must_check uint32_t dot11f_unpack_ie_ese_cckm_opaque( 5438 tpAniSirGlobal, 5439 uint8_t *, 5440 uint8_t, 5441 tDot11fIEESECckmOpaque*, 5442 bool); 5443 5444 uint32_t dot11f_pack_ie_ese_cckm_opaque( 5445 tpAniSirGlobal, 5446 tDot11fIEESECckmOpaque *, 5447 uint8_t *, 5448 uint32_t, 5449 uint32_t*); 5450 5451 uint32_t dot11f_get_packed_ie_ESECckmOpaque( 5452 tpAniSirGlobal, 5453 tDot11fIEESECckmOpaque *, 5454 uint32_t*); 5455 5456 #ifdef __cplusplus 5457 }; /* End extern "C". */ 5458 #endif /* C++ */ 5459 5460 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x01} */ 5461 typedef struct sDot11fIEESERadMgmtCap { 5462 uint8_t present; 5463 uint8_t mgmt_state; 5464 uint8_t mbssid_mask:3; 5465 uint8_t reserved:5; 5466 } tDot11fIEESERadMgmtCap; 5467 5468 #define DOT11F_EID_ESERADMGMTCAP (221) 5469 5470 /* N.B. These #defines do *not* include the EID & length */ 5471 #define DOT11F_IE_ESERADMGMTCAP_MIN_LEN (6) 5472 5473 #define DOT11F_IE_ESERADMGMTCAP_MAX_LEN (6) 5474 5475 #ifdef __cplusplus 5476 extern "C" { 5477 #endif /* C++ */ 5478 __must_check uint32_t dot11f_unpack_ie_ese_rad_mgmt_cap( 5479 tpAniSirGlobal, 5480 uint8_t *, 5481 uint8_t, 5482 tDot11fIEESERadMgmtCap*, 5483 bool); 5484 5485 uint32_t dot11f_pack_ie_ese_rad_mgmt_cap( 5486 tpAniSirGlobal, 5487 tDot11fIEESERadMgmtCap *, 5488 uint8_t *, 5489 uint32_t, 5490 uint32_t*); 5491 5492 uint32_t dot11f_get_packed_ie_ESERadMgmtCap( 5493 tpAniSirGlobal, 5494 tDot11fIEESERadMgmtCap *, 5495 uint32_t*); 5496 5497 #ifdef __cplusplus 5498 }; /* End extern "C". */ 5499 #endif /* C++ */ 5500 5501 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x07} */ 5502 typedef struct sDot11fIEESETrafStrmMet { 5503 uint8_t present; 5504 uint8_t tsid; 5505 uint8_t state; 5506 uint16_t msmt_interval; 5507 } tDot11fIEESETrafStrmMet; 5508 5509 #define DOT11F_EID_ESETRAFSTRMMET (221) 5510 5511 /* N.B. These #defines do *not* include the EID & length */ 5512 #define DOT11F_IE_ESETRAFSTRMMET_MIN_LEN (8) 5513 5514 #define DOT11F_IE_ESETRAFSTRMMET_MAX_LEN (8) 5515 5516 #ifdef __cplusplus 5517 extern "C" { 5518 #endif /* C++ */ 5519 __must_check uint32_t dot11f_unpack_ie_ese_traf_strm_met( 5520 tpAniSirGlobal, 5521 uint8_t *, 5522 uint8_t, 5523 tDot11fIEESETrafStrmMet*, 5524 bool); 5525 5526 uint32_t dot11f_pack_ie_ese_traf_strm_met( 5527 tpAniSirGlobal, 5528 tDot11fIEESETrafStrmMet *, 5529 uint8_t *, 5530 uint32_t, 5531 uint32_t*); 5532 5533 uint32_t dot11f_get_packed_ie_ESETrafStrmMet( 5534 tpAniSirGlobal, 5535 tDot11fIEESETrafStrmMet *, 5536 uint32_t*); 5537 5538 #ifdef __cplusplus 5539 }; /* End extern "C". */ 5540 #endif /* C++ */ 5541 5542 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x08} */ 5543 typedef struct sDot11fIEESETrafStrmRateSet { 5544 uint8_t present; 5545 uint8_t tsid; 5546 uint8_t num_tsrates; 5547 uint8_t tsrates[8]; 5548 } tDot11fIEESETrafStrmRateSet; 5549 5550 #define DOT11F_EID_ESETRAFSTRMRATESET (221) 5551 5552 /* N.B. These #defines do *not* include the EID & length */ 5553 #define DOT11F_IE_ESETRAFSTRMRATESET_MIN_LEN (5) 5554 5555 #define DOT11F_IE_ESETRAFSTRMRATESET_MAX_LEN (13) 5556 5557 #ifdef __cplusplus 5558 extern "C" { 5559 #endif /* C++ */ 5560 __must_check uint32_t dot11f_unpack_ie_ese_traf_strm_rate_set( 5561 tpAniSirGlobal, 5562 uint8_t *, 5563 uint8_t, 5564 tDot11fIEESETrafStrmRateSet*, 5565 bool); 5566 5567 uint32_t dot11f_pack_ie_ese_traf_strm_rate_set( 5568 tpAniSirGlobal, 5569 tDot11fIEESETrafStrmRateSet *, 5570 uint8_t *, 5571 uint32_t, 5572 uint32_t*); 5573 5574 uint32_t dot11f_get_packed_ie_ESETrafStrmRateSet( 5575 tpAniSirGlobal, 5576 tDot11fIEESETrafStrmRateSet *, 5577 uint32_t*); 5578 5579 #ifdef __cplusplus 5580 }; /* End extern "C". */ 5581 #endif /* C++ */ 5582 5583 /* EID 150 (0x96) {OUI 0x00, 0x40, 0x96, 0x00} */ 5584 typedef struct sDot11fIEESETxmitPower { 5585 uint8_t present; 5586 uint8_t power_limit; 5587 uint8_t reserved; 5588 } tDot11fIEESETxmitPower; 5589 5590 #define DOT11F_EID_ESETXMITPOWER (150) 5591 5592 /* N.B. These #defines do *not* include the EID & length */ 5593 #define DOT11F_IE_ESETXMITPOWER_MIN_LEN (6) 5594 5595 #define DOT11F_IE_ESETXMITPOWER_MAX_LEN (6) 5596 5597 #ifdef __cplusplus 5598 extern "C" { 5599 #endif /* C++ */ 5600 __must_check uint32_t dot11f_unpack_ie_ese_txmit_power( 5601 tpAniSirGlobal, 5602 uint8_t *, 5603 uint8_t, 5604 tDot11fIEESETxmitPower*, 5605 bool); 5606 5607 uint32_t dot11f_pack_ie_ese_txmit_power( 5608 tpAniSirGlobal, 5609 tDot11fIEESETxmitPower *, 5610 uint8_t *, 5611 uint32_t, 5612 uint32_t*); 5613 5614 uint32_t dot11f_get_packed_ie_ESETxmitPower( 5615 tpAniSirGlobal, 5616 tDot11fIEESETxmitPower *, 5617 uint32_t*); 5618 5619 #ifdef __cplusplus 5620 }; /* End extern "C". */ 5621 #endif /* C++ */ 5622 5623 /* EID 221 (0xdd) {OUI 0x00, 0x40, 0x96, 0x03} */ 5624 typedef struct sDot11fIEESEVersion { 5625 uint8_t present; 5626 uint8_t version; 5627 } tDot11fIEESEVersion; 5628 5629 #define DOT11F_EID_ESEVERSION (221) 5630 5631 /* N.B. These #defines do *not* include the EID & length */ 5632 #define DOT11F_IE_ESEVERSION_MIN_LEN (5) 5633 5634 #define DOT11F_IE_ESEVERSION_MAX_LEN (5) 5635 5636 #ifdef __cplusplus 5637 extern "C" { 5638 #endif /* C++ */ 5639 __must_check uint32_t dot11f_unpack_ie_ese_version( 5640 tpAniSirGlobal, 5641 uint8_t *, 5642 uint8_t, 5643 tDot11fIEESEVersion*, 5644 bool); 5645 5646 uint32_t dot11f_pack_ie_ese_version( 5647 tpAniSirGlobal, 5648 tDot11fIEESEVersion *, 5649 uint8_t *, 5650 uint32_t, 5651 uint32_t*); 5652 5653 uint32_t dot11f_get_packed_ie_ESEVersion( 5654 tpAniSirGlobal, 5655 tDot11fIEESEVersion *, 5656 uint32_t*); 5657 5658 #ifdef __cplusplus 5659 }; /* End extern "C". */ 5660 #endif /* C++ */ 5661 5662 /* EID 127 (0x7f) */ 5663 typedef struct sDot11fIEExtCap { 5664 uint8_t present; 5665 uint8_t num_bytes; 5666 uint8_t bytes[15]; 5667 } tDot11fIEExtCap; 5668 5669 #define DOT11F_EID_EXTCAP (127) 5670 5671 /* N.B. These #defines do *not* include the EID & length */ 5672 #define DOT11F_IE_EXTCAP_MIN_LEN (1) 5673 5674 #define DOT11F_IE_EXTCAP_MAX_LEN (15) 5675 5676 #ifdef __cplusplus 5677 extern "C" { 5678 #endif /* C++ */ 5679 __must_check uint32_t dot11f_unpack_ie_ext_cap( 5680 tpAniSirGlobal, 5681 uint8_t *, 5682 uint8_t, 5683 tDot11fIEExtCap*, 5684 bool); 5685 5686 uint32_t dot11f_pack_ie_ext_cap( 5687 tpAniSirGlobal, 5688 tDot11fIEExtCap *, 5689 uint8_t *, 5690 uint32_t, 5691 uint32_t*); 5692 5693 uint32_t dot11f_get_packed_ie_ExtCap( 5694 tpAniSirGlobal, 5695 tDot11fIEExtCap *, 5696 uint32_t*); 5697 5698 #ifdef __cplusplus 5699 }; /* End extern "C". */ 5700 #endif /* C++ */ 5701 5702 /* EID 50 (0x32) */ 5703 typedef struct sDot11fIEExtSuppRates { 5704 uint8_t present; 5705 uint8_t num_rates; 5706 uint8_t rates[12]; 5707 } tDot11fIEExtSuppRates; 5708 5709 #define DOT11F_EID_EXTSUPPRATES (50) 5710 5711 /* N.B. These #defines do *not* include the EID & length */ 5712 #define DOT11F_IE_EXTSUPPRATES_MIN_LEN (1) 5713 5714 #define DOT11F_IE_EXTSUPPRATES_MAX_LEN (12) 5715 5716 #ifdef __cplusplus 5717 extern "C" { 5718 #endif /* C++ */ 5719 __must_check uint32_t dot11f_unpack_ie_ext_supp_rates( 5720 tpAniSirGlobal, 5721 uint8_t *, 5722 uint8_t, 5723 tDot11fIEExtSuppRates*, 5724 bool); 5725 5726 uint32_t dot11f_pack_ie_ext_supp_rates( 5727 tpAniSirGlobal, 5728 tDot11fIEExtSuppRates *, 5729 uint8_t *, 5730 uint32_t, 5731 uint32_t*); 5732 5733 uint32_t dot11f_get_packed_ie_ExtSuppRates( 5734 tpAniSirGlobal, 5735 tDot11fIEExtSuppRates *, 5736 uint32_t*); 5737 5738 #ifdef __cplusplus 5739 }; /* End extern "C". */ 5740 #endif /* C++ */ 5741 5742 /* EID 2 (0x02) */ 5743 typedef struct sDot11fIEFHParamSet { 5744 uint8_t present; 5745 uint16_t dwell_time; 5746 uint8_t hop_set; 5747 uint8_t hop_pattern; 5748 uint8_t hop_index; 5749 } tDot11fIEFHParamSet; 5750 5751 #define DOT11F_EID_FHPARAMSET (2) 5752 5753 /* N.B. These #defines do *not* include the EID & length */ 5754 #define DOT11F_IE_FHPARAMSET_MIN_LEN (5) 5755 5756 #define DOT11F_IE_FHPARAMSET_MAX_LEN (5) 5757 5758 #ifdef __cplusplus 5759 extern "C" { 5760 #endif /* C++ */ 5761 __must_check uint32_t dot11f_unpack_ie_fh_param_set( 5762 tpAniSirGlobal, 5763 uint8_t *, 5764 uint8_t, 5765 tDot11fIEFHParamSet*, 5766 bool); 5767 5768 uint32_t dot11f_pack_ie_fh_param_set( 5769 tpAniSirGlobal, 5770 tDot11fIEFHParamSet *, 5771 uint8_t *, 5772 uint32_t, 5773 uint32_t*); 5774 5775 uint32_t dot11f_get_packed_ie_FHParamSet( 5776 tpAniSirGlobal, 5777 tDot11fIEFHParamSet *, 5778 uint32_t*); 5779 5780 #ifdef __cplusplus 5781 }; /* End extern "C". */ 5782 #endif /* C++ */ 5783 5784 /* EID 8 (0x08) */ 5785 typedef struct sDot11fIEFHParams { 5786 uint8_t present; 5787 uint8_t radix; 5788 uint8_t nchannels; 5789 } tDot11fIEFHParams; 5790 5791 #define DOT11F_EID_FHPARAMS (8) 5792 5793 /* N.B. These #defines do *not* include the EID & length */ 5794 #define DOT11F_IE_FHPARAMS_MIN_LEN (2) 5795 5796 #define DOT11F_IE_FHPARAMS_MAX_LEN (2) 5797 5798 #ifdef __cplusplus 5799 extern "C" { 5800 #endif /* C++ */ 5801 __must_check uint32_t dot11f_unpack_ie_fh_params( 5802 tpAniSirGlobal, 5803 uint8_t *, 5804 uint8_t, 5805 tDot11fIEFHParams*, 5806 bool); 5807 5808 uint32_t dot11f_pack_ie_fh_params( 5809 tpAniSirGlobal, 5810 tDot11fIEFHParams *, 5811 uint8_t *, 5812 uint32_t, 5813 uint32_t*); 5814 5815 uint32_t dot11f_get_packed_ie_FHParams( 5816 tpAniSirGlobal, 5817 tDot11fIEFHParams *, 5818 uint32_t*); 5819 5820 #ifdef __cplusplus 5821 }; /* End extern "C". */ 5822 #endif /* C++ */ 5823 5824 /* EID 9 (0x09) */ 5825 typedef struct sDot11fIEFHPattTable { 5826 uint8_t present; 5827 uint8_t flag; 5828 uint8_t nsets; 5829 uint8_t modulus; 5830 uint8_t offset; 5831 uint8_t num_randtable; 5832 uint8_t randtable[251]; 5833 } tDot11fIEFHPattTable; 5834 5835 #define DOT11F_EID_FHPATTTABLE (9) 5836 5837 /* N.B. These #defines do *not* include the EID & length */ 5838 #define DOT11F_IE_FHPATTTABLE_MIN_LEN (4) 5839 5840 #define DOT11F_IE_FHPATTTABLE_MAX_LEN (255) 5841 5842 #ifdef __cplusplus 5843 extern "C" { 5844 #endif /* C++ */ 5845 __must_check uint32_t dot11f_unpack_ie_fh_patt_table( 5846 tpAniSirGlobal, 5847 uint8_t *, 5848 uint8_t, 5849 tDot11fIEFHPattTable*, 5850 bool); 5851 5852 uint32_t dot11f_pack_ie_fh_patt_table( 5853 tpAniSirGlobal, 5854 tDot11fIEFHPattTable *, 5855 uint8_t *, 5856 uint32_t, 5857 uint32_t*); 5858 5859 uint32_t dot11f_get_packed_ie_FHPattTable( 5860 tpAniSirGlobal, 5861 tDot11fIEFHPattTable *, 5862 uint32_t*); 5863 5864 #ifdef __cplusplus 5865 }; /* End extern "C". */ 5866 #endif /* C++ */ 5867 5868 /* EID 55 (0x37) */ 5869 typedef struct sDot11fIEFTInfo { 5870 uint8_t present; 5871 uint16_t reserved:8; 5872 uint16_t IECount:8; 5873 uint8_t MIC[16]; 5874 uint8_t Anonce[32]; 5875 uint8_t Snonce[32]; 5876 tDot11fIER1KH_ID R1KH_ID; 5877 tDot11fIEGTK GTK; 5878 tDot11fIER0KH_ID R0KH_ID; 5879 tDot11fIEIGTK IGTK; 5880 } tDot11fIEFTInfo; 5881 5882 #define DOT11F_EID_FTINFO (55) 5883 5884 /* N.B. These #defines do *not* include the EID & length */ 5885 #define DOT11F_IE_FTINFO_MIN_LEN (82) 5886 5887 #define DOT11F_IE_FTINFO_MAX_LEN (220) 5888 5889 #ifdef __cplusplus 5890 extern "C" { 5891 #endif /* C++ */ 5892 __must_check uint32_t dot11f_unpack_ie_ft_info( 5893 tpAniSirGlobal, 5894 uint8_t *, 5895 uint8_t, 5896 tDot11fIEFTInfo*, 5897 bool); 5898 5899 uint32_t dot11f_pack_ie_ft_info( 5900 tpAniSirGlobal, 5901 tDot11fIEFTInfo *, 5902 uint8_t *, 5903 uint32_t, 5904 uint32_t*); 5905 5906 uint32_t dot11f_get_packed_ieft_info( 5907 tpAniSirGlobal, 5908 tDot11fIEFTInfo *, 5909 uint32_t*); 5910 5911 #ifdef __cplusplus 5912 }; /* End extern "C". */ 5913 #endif /* C++ */ 5914 5915 /* EID 45 (0x2d) */ 5916 typedef struct sDot11fIEHTCaps { 5917 uint8_t present; 5918 uint16_t advCodingCap:1; 5919 uint16_t supportedChannelWidthSet:1; 5920 uint16_t mimoPowerSave:2; 5921 uint16_t greenField:1; 5922 uint16_t shortGI20MHz:1; 5923 uint16_t shortGI40MHz:1; 5924 uint16_t txSTBC:1; 5925 uint16_t rxSTBC:2; 5926 uint16_t delayedBA:1; 5927 uint16_t maximalAMSDUsize:1; 5928 uint16_t dsssCckMode40MHz:1; 5929 uint16_t psmp:1; 5930 uint16_t stbcControlFrame:1; 5931 uint16_t lsigTXOPProtection:1; 5932 uint8_t maxRxAMPDUFactor:2; 5933 uint8_t mpduDensity:3; 5934 uint8_t reserved1:3; 5935 uint8_t supportedMCSSet[16]; 5936 uint16_t pco:1; 5937 uint16_t transitionTime:2; 5938 uint16_t reserved2:5; 5939 uint16_t mcsFeedback:2; 5940 uint16_t reserved3:6; 5941 uint32_t txBF:1; 5942 uint32_t rxStaggeredSounding:1; 5943 uint32_t txStaggeredSounding:1; 5944 uint32_t rxZLF:1; 5945 uint32_t txZLF:1; 5946 uint32_t implicitTxBF:1; 5947 uint32_t calibration:2; 5948 uint32_t explicitCSITxBF:1; 5949 uint32_t explicitUncompressedSteeringMatrix:1; 5950 uint32_t explicitBFCSIFeedback:3; 5951 uint32_t explicitUncompressedSteeringMatrixFeedback:3; 5952 uint32_t explicitCompressedSteeringMatrixFeedback:3; 5953 uint32_t csiNumBFAntennae:2; 5954 uint32_t uncompressedSteeringMatrixBFAntennae:2; 5955 uint32_t compressedSteeringMatrixBFAntennae:2; 5956 uint32_t reserved4:7; 5957 uint8_t antennaSelection:1; 5958 uint8_t explicitCSIFeedbackTx:1; 5959 uint8_t antennaIndicesFeedbackTx:1; 5960 uint8_t explicitCSIFeedback:1; 5961 uint8_t antennaIndicesFeedback:1; 5962 uint8_t rxAS:1; 5963 uint8_t txSoundingPPDUs:1; 5964 uint8_t reserved5:1; 5965 uint8_t num_rsvd; 5966 uint8_t rsvd[32]; 5967 } tDot11fIEHTCaps; 5968 5969 #define DOT11F_EID_HTCAPS (45) 5970 5971 /* N.B. These #defines do *not* include the EID & length */ 5972 #define DOT11F_IE_HTCAPS_MIN_LEN (26) 5973 5974 #define DOT11F_IE_HTCAPS_MAX_LEN (58) 5975 5976 #ifdef __cplusplus 5977 extern "C" { 5978 #endif /* C++ */ 5979 __must_check uint32_t dot11f_unpack_ie_ht_caps( 5980 tpAniSirGlobal, 5981 uint8_t *, 5982 uint8_t, 5983 tDot11fIEHTCaps*, 5984 bool); 5985 5986 uint32_t dot11f_pack_ie_ht_caps( 5987 tpAniSirGlobal, 5988 tDot11fIEHTCaps *, 5989 uint8_t *, 5990 uint32_t, 5991 uint32_t*); 5992 5993 uint32_t dot11f_get_packed_ie_HTCaps( 5994 tpAniSirGlobal, 5995 tDot11fIEHTCaps *, 5996 uint32_t*); 5997 5998 #ifdef __cplusplus 5999 }; /* End extern "C". */ 6000 #endif /* C++ */ 6001 6002 /* EID 61 (0x3d) */ 6003 typedef struct sDot11fIEHTInfo { 6004 uint8_t present; 6005 uint8_t primaryChannel; 6006 uint8_t secondaryChannelOffset:2; 6007 uint8_t recommendedTxWidthSet:1; 6008 uint8_t rifsMode:1; 6009 uint8_t controlledAccessOnly:1; 6010 uint8_t serviceIntervalGranularity:3; 6011 uint16_t opMode:2; 6012 uint16_t nonGFDevicesPresent:1; 6013 uint16_t transmitBurstLimit:1; 6014 uint16_t obssNonHTStaPresent:1; 6015 uint16_t chan_center_freq_seg2:8; 6016 uint16_t reserved:3; 6017 uint16_t basicSTBCMCS:7; 6018 uint16_t dualCTSProtection:1; 6019 uint16_t secondaryBeacon:1; 6020 uint16_t lsigTXOPProtectionFullSupport:1; 6021 uint16_t pcoActive:1; 6022 uint16_t pcoPhase:1; 6023 uint16_t reserved2:4; 6024 uint8_t basicMCSSet[16]; 6025 uint8_t num_rsvd; 6026 uint8_t rsvd[32]; 6027 } tDot11fIEHTInfo; 6028 6029 #define DOT11F_EID_HTINFO (61) 6030 6031 /* N.B. These #defines do *not* include the EID & length */ 6032 #define DOT11F_IE_HTINFO_MIN_LEN (22) 6033 6034 #define DOT11F_IE_HTINFO_MAX_LEN (54) 6035 6036 #ifdef __cplusplus 6037 extern "C" { 6038 #endif /* C++ */ 6039 __must_check uint32_t dot11f_unpack_ie_ht_info( 6040 tpAniSirGlobal, 6041 uint8_t *, 6042 uint8_t, 6043 tDot11fIEHTInfo*, 6044 bool); 6045 6046 uint32_t dot11f_pack_ie_ht_info( 6047 tpAniSirGlobal, 6048 tDot11fIEHTInfo *, 6049 uint8_t *, 6050 uint32_t, 6051 uint32_t*); 6052 6053 uint32_t dot11f_get_packed_ie_HTInfo( 6054 tpAniSirGlobal, 6055 tDot11fIEHTInfo *, 6056 uint32_t*); 6057 6058 #ifdef __cplusplus 6059 }; /* End extern "C". */ 6060 #endif /* C++ */ 6061 6062 /* EID 101 (0x65) */ 6063 typedef struct sDot11fIELinkIdentifier { 6064 uint8_t present; 6065 uint8_t bssid[6]; 6066 uint8_t InitStaAddr[6]; 6067 uint8_t RespStaAddr[6]; 6068 } tDot11fIELinkIdentifier; 6069 6070 #define DOT11F_EID_LINKIDENTIFIER (101) 6071 6072 /* N.B. These #defines do *not* include the EID & length */ 6073 #define DOT11F_IE_LINKIDENTIFIER_MIN_LEN (18) 6074 6075 #define DOT11F_IE_LINKIDENTIFIER_MAX_LEN (18) 6076 6077 #ifdef __cplusplus 6078 extern "C" { 6079 #endif /* C++ */ 6080 __must_check uint32_t dot11f_unpack_ie_link_identifier( 6081 tpAniSirGlobal, 6082 uint8_t *, 6083 uint8_t, 6084 tDot11fIELinkIdentifier*, 6085 bool); 6086 6087 uint32_t dot11f_pack_ie_link_identifier( 6088 tpAniSirGlobal, 6089 tDot11fIELinkIdentifier *, 6090 uint8_t *, 6091 uint32_t, 6092 uint32_t*); 6093 6094 uint32_t dot11f_get_packed_ie_LinkIdentifier( 6095 tpAniSirGlobal, 6096 tDot11fIELinkIdentifier *, 6097 uint32_t*); 6098 6099 #ifdef __cplusplus 6100 }; /* End extern "C". */ 6101 #endif /* C++ */ 6102 6103 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x16} (Multi-IE) */ 6104 typedef struct sDot11fIEMBO_IE { 6105 uint8_t present; 6106 tDot11fTLVmbo_ap_cap mbo_ap_cap; 6107 tDot11fTLVnon_prefferd_chan_rep non_prefferd_chan_rep; 6108 tDot11fTLVcellular_data_cap cellular_data_cap; 6109 tDot11fTLVassoc_disallowed assoc_disallowed; 6110 tDot11fTLVcellular_data_con_pref cellular_data_con_pref; 6111 tDot11fTLVtransition_reason transition_reason; 6112 tDot11fTLVtransition_reject_reason transition_reject_reason; 6113 tDot11fTLVassoc_retry_delay assoc_retry_delay; 6114 tDot11fTLVoce_cap oce_cap; 6115 tDot11fTLVrssi_assoc_rej rssi_assoc_rej; 6116 tDot11fTLVreduced_wan_metrics reduced_wan_metrics; 6117 } tDot11fIEMBO_IE; 6118 6119 #define DOT11F_EID_MBO_IE (221) 6120 6121 /* N.B. These #defines do *not* include the EID & length */ 6122 #define DOT11F_IE_MBO_IE_MIN_LEN (4) 6123 6124 #define DOT11F_IE_MBO_IE_MAX_LEN (293) 6125 6126 #ifdef __cplusplus 6127 extern "C" { 6128 #endif /* C++ */ 6129 __must_check uint32_t dot11f_unpack_ie_MBO_IE( 6130 tpAniSirGlobal, 6131 uint8_t *, 6132 uint8_t, 6133 tDot11fIEMBO_IE*, 6134 bool); 6135 6136 uint32_t dot11f_pack_ie_MBO_IE( 6137 tpAniSirGlobal, 6138 tDot11fIEMBO_IE *, 6139 uint8_t *, 6140 uint32_t, 6141 uint32_t*); 6142 6143 uint32_t dot11f_get_packed_ie_MBO_IE( 6144 tpAniSirGlobal, 6145 tDot11fIEMBO_IE *, 6146 uint32_t*); 6147 6148 #ifdef __cplusplus 6149 }; /* End extern "C". */ 6150 #endif /* C++ */ 6151 6152 /* EID 39 (0x27) */ 6153 typedef struct sDot11fIEMeasurementReport { 6154 uint8_t present; 6155 uint8_t token; 6156 uint8_t late:1; 6157 uint8_t incapable:1; 6158 uint8_t refused:1; 6159 uint8_t unused:5; 6160 uint8_t type; 6161 union { 6162 struct { 6163 uint8_t channel; 6164 tDOT11F_U64 meas_start_time; 6165 uint16_t meas_duration; 6166 uint8_t bss:1; 6167 uint8_t ofdm_preamble:1; 6168 uint8_t unid_signal:1; 6169 uint8_t rader:1; 6170 uint8_t unmeasured:1; 6171 uint8_t unused:3; 6172 } Basic; /* type = 0 */ 6173 struct { 6174 uint8_t channel; 6175 tDOT11F_U64 meas_start_time; 6176 uint16_t meas_duration; 6177 uint8_t cca_busy_fraction; 6178 } CCA; /* type = 1 */ 6179 struct { 6180 uint8_t channel; 6181 tDOT11F_U64 meas_start_time; 6182 uint16_t meas_duration; 6183 uint8_t rpi0_density; 6184 uint8_t rpi1_density; 6185 uint8_t rpi2_density; 6186 uint8_t rpi3_density; 6187 uint8_t rpi4_density; 6188 uint8_t rpi5_density; 6189 uint8_t rpi6_density; 6190 uint8_t rpi7_density; 6191 } RPIHistogram; /* type = 2 */ 6192 struct { 6193 uint8_t op_class; 6194 uint8_t channel; 6195 tDOT11F_U64 meas_start_time; 6196 uint16_t meas_duration; 6197 uint8_t chan_load; 6198 tDot11fIEwide_bw_chan_switch wide_bw_chan_switch; 6199 tDot11fIEbw_indication bw_indication; 6200 } channel_load_report; /* type = 3 */ 6201 struct { 6202 uint8_t regClass; 6203 uint8_t channel; 6204 tDOT11F_U64 meas_start_time; 6205 uint16_t meas_duration; 6206 uint8_t condensed_PHY:7; 6207 uint8_t reported_frame_type:1; 6208 uint8_t RCPI; 6209 uint8_t RSNI; 6210 uint8_t BSSID[6]; 6211 uint8_t antenna_id; 6212 uint32_t parent_TSF; 6213 tDot11fIEBeaconReportFrmBody BeaconReportFrmBody; 6214 tDot11fIEbeacon_report_frm_body_fragment_id beacon_report_frm_body_fragment_id; 6215 tDot11fIElast_beacon_report_indication last_beacon_report_indication; 6216 } Beacon; /* type = 5 */ 6217 struct { 6218 uint16_t meas_duration; 6219 uint8_t group_id; 6220 union { 6221 struct { 6222 uint32_t transmitted_fragment_count; 6223 uint32_t group_transmitted_frame_count; 6224 uint32_t failed_count; 6225 uint32_t received_fragment_count; 6226 uint32_t group_received_frame_count; 6227 uint32_t fcs_error_count; 6228 uint32_t transmitted_frame_count; 6229 } dot11_counter_stats; /* group_id = 0 */ 6230 struct { 6231 uint32_t retry_count; 6232 uint32_t multiple_retry_count; 6233 uint32_t frame_duplicate_count; 6234 uint32_t rts_success_count; 6235 uint32_t rts_failure_count; 6236 uint32_t ack_failure_count; 6237 } dot11_mac_stats; /* group_id = 1 */ 6238 struct { 6239 uint32_t qos_transmitted_fragment_count; 6240 uint32_t qos_failed_count; 6241 uint32_t qos_retry_count; 6242 uint32_t qos_multiple_retry_count; 6243 uint32_t qos_frame_duplicate_count; 6244 uint32_t qos_rts_success_count; 6245 uint32_t qos_rts_failure_count; 6246 uint32_t qos_ack_failure_count; 6247 uint32_t qos_received_fragment_count; 6248 uint32_t qos_transmitted_frame_count; 6249 uint32_t qos_discarded_frame_count; 6250 uint32_t qos_mpdus_received_count; 6251 uint32_t qos_retries_received_count; 6252 } dot11_qos_counter; /* group_id = 2 */ 6253 struct { 6254 uint16_t ap_average_access_delay; 6255 uint16_t average_access_delay_besteffort; 6256 uint16_t average_access_delay_background; 6257 uint16_t average_access_delay_video; 6258 uint16_t average_access_delay_voice; 6259 uint16_t station_count; 6260 uint16_t channel_utilization; 6261 } dot11_bss_average_access_delay; /* group_id = 10 */ 6262 } statsgroupdata; 6263 tDot11fIEreporting_reason reporting_reason; 6264 } sta_stats; /* type = 7 */ 6265 } report; 6266 } tDot11fIEMeasurementReport; 6267 6268 #define DOT11F_EID_MEASUREMENTREPORT (39) 6269 6270 /* N.B. These #defines do *not* include the EID & length */ 6271 #define DOT11F_IE_MEASUREMENTREPORT_MIN_LEN (3) 6272 6273 #define DOT11F_IE_MEASUREMENTREPORT_MAX_LEN (58) 6274 6275 #ifdef __cplusplus 6276 extern "C" { 6277 #endif /* C++ */ 6278 __must_check uint32_t dot11f_unpack_ie_measurement_report( 6279 tpAniSirGlobal, 6280 uint8_t *, 6281 uint8_t, 6282 tDot11fIEMeasurementReport*, 6283 bool); 6284 6285 uint32_t dot11f_pack_ie_measurement_report( 6286 tpAniSirGlobal, 6287 tDot11fIEMeasurementReport *, 6288 uint8_t *, 6289 uint32_t, 6290 uint32_t*); 6291 6292 uint32_t dot11f_get_packed_ie_measurement_report( 6293 tpAniSirGlobal, 6294 tDot11fIEMeasurementReport *, 6295 uint32_t*); 6296 6297 #ifdef __cplusplus 6298 }; /* End extern "C". */ 6299 #endif /* C++ */ 6300 6301 /* EID 38 (0x26) */ 6302 typedef struct sDot11fIEMeasurementRequest { 6303 uint8_t present; 6304 uint8_t measurement_token; 6305 uint8_t parallel:1; 6306 uint8_t enable:1; 6307 uint8_t request:1; 6308 uint8_t report:1; 6309 uint8_t durationMandatory:1; 6310 uint8_t unused:3; 6311 uint8_t measurement_type; 6312 union { 6313 struct { 6314 uint8_t channel_no; 6315 uint8_t meas_start_time[8]; 6316 uint16_t meas_duration; 6317 } Basic; /* measurement_type = 0 */ 6318 struct { 6319 uint8_t channel_no; 6320 uint8_t meas_start_time[8]; 6321 uint16_t meas_duration; 6322 } CCA; /* measurement_type = 1 */ 6323 struct { 6324 uint8_t channel_no; 6325 uint8_t meas_start_time[8]; 6326 uint16_t meas_duration; 6327 } RPIHistogram; /* measurement_type = 2 */ 6328 struct { 6329 uint8_t op_class; 6330 uint8_t channel; 6331 uint16_t randomization_intv; 6332 uint16_t meas_duration; 6333 tDot11fIErrm_reporting rrm_reporting; 6334 tDot11fIEwide_bw_chan_switch wide_bw_chan_switch; 6335 tDot11fIEbw_indication bw_indication; 6336 } channel_load; /* measurement_type = 3 */ 6337 struct { 6338 uint8_t regClass; 6339 uint8_t channel; 6340 uint16_t randomization; 6341 uint16_t meas_duration; 6342 uint8_t meas_mode; 6343 uint8_t BSSID[6]; 6344 tDot11fIESSID SSID; 6345 tDot11fIErrm_reporting rrm_reporting; 6346 tDot11fIEBcnReportingDetail BcnReportingDetail; 6347 tDot11fIERequestedInfo RequestedInfo; 6348 tDot11fIEExtRequestedInfo ExtRequestedInfo; 6349 uint16_t num_APChannelReport; 6350 tDot11fIEAPChannelReport APChannelReport[2]; 6351 tDot11fIElast_beacon_report_indication last_beacon_report_indication; 6352 } Beacon; /* measurement_type = 5 */ 6353 struct { 6354 uint8_t loc_subject; 6355 tDot11fIEazimuth_req azimuth_req; 6356 tDot11fIEreq_mac_addr req_mac_addr; 6357 tDot11fIEtgt_mac_addr tgt_mac_addr; 6358 tDot11fIEmax_age max_age; 6359 } lci; /* measurement_type = 8 */ 6360 struct { 6361 uint16_t random_interval; 6362 uint8_t min_ap_count; 6363 tDot11fIEneighbor_rpt neighbor_rpt; 6364 tDot11fIEmax_age max_age; 6365 } ftmrr; /* measurement_type = 16 */ 6366 struct { 6367 uint8_t peer_mac_addr[6]; 6368 uint16_t randomization; 6369 uint16_t meas_duration; 6370 uint8_t group_identity; 6371 } sta_stats; /* measurement_type = 7 */ 6372 } measurement_request; 6373 } tDot11fIEMeasurementRequest; 6374 6375 #define DOT11F_EID_MEASUREMENTREQUEST (38) 6376 6377 /* N.B. These #defines do *not* include the EID & length */ 6378 #define DOT11F_IE_MEASUREMENTREQUEST_MIN_LEN (4) 6379 6380 #define DOT11F_IE_MEASUREMENTREQUEST_MAX_LEN (16) 6381 6382 #ifdef __cplusplus 6383 extern "C" { 6384 #endif /* C++ */ 6385 __must_check uint32_t dot11f_unpack_ie_measurement_request( 6386 tpAniSirGlobal, 6387 uint8_t *, 6388 uint8_t, 6389 tDot11fIEMeasurementRequest*, 6390 bool); 6391 6392 uint32_t dot11f_pack_ie_measurement_request( 6393 tpAniSirGlobal, 6394 tDot11fIEMeasurementRequest *, 6395 uint8_t *, 6396 uint32_t, 6397 uint32_t*); 6398 6399 uint32_t dot11f_get_packed_ie_measurement_request( 6400 tpAniSirGlobal, 6401 tDot11fIEMeasurementRequest *, 6402 uint32_t*); 6403 6404 #ifdef __cplusplus 6405 }; /* End extern "C". */ 6406 #endif /* C++ */ 6407 6408 /* EID 54 (0x36) */ 6409 typedef struct sDot11fIEMobilityDomain { 6410 uint8_t present; 6411 uint16_t MDID; 6412 uint8_t overDSCap:1; 6413 uint8_t resourceReqCap:1; 6414 uint8_t reserved:6; 6415 } tDot11fIEMobilityDomain; 6416 6417 #define DOT11F_EID_MOBILITYDOMAIN (54) 6418 6419 /* N.B. These #defines do *not* include the EID & length */ 6420 #define DOT11F_IE_MOBILITYDOMAIN_MIN_LEN (3) 6421 6422 #define DOT11F_IE_MOBILITYDOMAIN_MAX_LEN (3) 6423 6424 #ifdef __cplusplus 6425 extern "C" { 6426 #endif /* C++ */ 6427 __must_check uint32_t dot11f_unpack_ie_mobility_domain( 6428 tpAniSirGlobal, 6429 uint8_t *, 6430 uint8_t, 6431 tDot11fIEMobilityDomain*, 6432 bool); 6433 6434 uint32_t dot11f_pack_ie_mobility_domain( 6435 tpAniSirGlobal, 6436 tDot11fIEMobilityDomain *, 6437 uint8_t *, 6438 uint32_t, 6439 uint32_t*); 6440 6441 uint32_t dot11f_get_packed_ie_MobilityDomain( 6442 tpAniSirGlobal, 6443 tDot11fIEMobilityDomain *, 6444 uint32_t*); 6445 6446 #ifdef __cplusplus 6447 }; /* End extern "C". */ 6448 #endif /* C++ */ 6449 6450 /* EID 52 (0x34) */ 6451 typedef struct sDot11fIENeighborReport { 6452 uint8_t present; 6453 uint8_t bssid[6]; 6454 uint8_t APReachability:2; 6455 uint8_t Security:1; 6456 uint8_t KeyScope:1; 6457 uint8_t SpecMgmtCap:1; 6458 uint8_t QosCap:1; 6459 uint8_t apsd:1; 6460 uint8_t rrm:1; 6461 uint8_t DelayedBA:1; 6462 uint8_t ImmBA:1; 6463 uint8_t MobilityDomain:1; 6464 uint8_t reserved:5; 6465 uint16_t reserved1; 6466 uint8_t regulatoryClass; 6467 uint8_t channel; 6468 uint8_t PhyType; 6469 tDot11fIETSFInfo TSFInfo; 6470 tDot11fIECondensedCountryStr CondensedCountryStr; 6471 tDot11fIEMeasurementPilot MeasurementPilot; 6472 tDot11fIERRMEnabledCap RRMEnabledCap; 6473 tDot11fIEMultiBssid MultiBssid; 6474 } tDot11fIENeighborReport; 6475 6476 #define DOT11F_EID_NEIGHBORREPORT (52) 6477 6478 /* N.B. These #defines do *not* include the EID & length */ 6479 #define DOT11F_IE_NEIGHBORREPORT_MIN_LEN (13) 6480 6481 #define DOT11F_IE_NEIGHBORREPORT_MAX_LEN (546) 6482 6483 #ifdef __cplusplus 6484 extern "C" { 6485 #endif /* C++ */ 6486 __must_check uint32_t dot11f_unpack_ie_neighbor_report( 6487 tpAniSirGlobal, 6488 uint8_t *, 6489 uint8_t, 6490 tDot11fIENeighborReport*, 6491 bool); 6492 6493 uint32_t dot11f_pack_ie_neighbor_report( 6494 tpAniSirGlobal, 6495 tDot11fIENeighborReport *, 6496 uint8_t *, 6497 uint32_t, 6498 uint32_t*); 6499 6500 uint32_t dot11f_get_packed_ie_neighbor_report( 6501 tpAniSirGlobal, 6502 tDot11fIENeighborReport *, 6503 uint32_t*); 6504 6505 #ifdef __cplusplus 6506 }; /* End extern "C". */ 6507 #endif /* C++ */ 6508 6509 /* EID 74 (0x4a) */ 6510 typedef struct sDot11fIEOBSSScanParameters { 6511 uint8_t present; 6512 uint16_t obssScanPassiveDwell; 6513 uint16_t obssScanActiveDwell; 6514 uint16_t bssChannelWidthTriggerScanInterval; 6515 uint16_t obssScanPassiveTotalPerChannel; 6516 uint16_t obssScanActiveTotalPerChannel; 6517 uint16_t bssWidthChannelTransitionDelayFactor; 6518 uint16_t obssScanActivityThreshold; 6519 } tDot11fIEOBSSScanParameters; 6520 6521 #define DOT11F_EID_OBSSSCANPARAMETERS (74) 6522 6523 /* N.B. These #defines do *not* include the EID & length */ 6524 #define DOT11F_IE_OBSSSCANPARAMETERS_MIN_LEN (14) 6525 6526 #define DOT11F_IE_OBSSSCANPARAMETERS_MAX_LEN (14) 6527 6528 #ifdef __cplusplus 6529 extern "C" { 6530 #endif /* C++ */ 6531 __must_check uint32_t dot11f_unpack_ie_obss_scan_parameters( 6532 tpAniSirGlobal, 6533 uint8_t *, 6534 uint8_t, 6535 tDot11fIEOBSSScanParameters*, 6536 bool); 6537 6538 uint32_t dot11f_pack_ie_obss_scan_parameters( 6539 tpAniSirGlobal, 6540 tDot11fIEOBSSScanParameters *, 6541 uint8_t *, 6542 uint32_t, 6543 uint32_t*); 6544 6545 uint32_t dot11f_get_packed_ie_OBSSScanParameters( 6546 tpAniSirGlobal, 6547 tDot11fIEOBSSScanParameters *, 6548 uint32_t*); 6549 6550 #ifdef __cplusplus 6551 }; /* End extern "C". */ 6552 #endif /* C++ */ 6553 6554 /* EID 199 (0xc7) */ 6555 typedef struct sDot11fIEOperatingMode { 6556 uint8_t present; 6557 uint8_t chanWidth:2; 6558 uint8_t vht_160_80p80_supp:1; 6559 uint8_t no_ldpc:1; 6560 uint8_t rxNSS:3; 6561 uint8_t rxNSSType:1; 6562 } tDot11fIEOperatingMode; 6563 6564 #define DOT11F_EID_OPERATINGMODE (199) 6565 6566 /* N.B. These #defines do *not* include the EID & length */ 6567 #define DOT11F_IE_OPERATINGMODE_MIN_LEN (1) 6568 6569 #define DOT11F_IE_OPERATINGMODE_MAX_LEN (1) 6570 6571 #ifdef __cplusplus 6572 extern "C" { 6573 #endif /* C++ */ 6574 __must_check uint32_t dot11f_unpack_ie_operating_mode( 6575 tpAniSirGlobal, 6576 uint8_t *, 6577 uint8_t, 6578 tDot11fIEOperatingMode*, 6579 bool); 6580 6581 uint32_t dot11f_pack_ie_operating_mode( 6582 tpAniSirGlobal, 6583 tDot11fIEOperatingMode *, 6584 uint8_t *, 6585 uint32_t, 6586 uint32_t*); 6587 6588 uint32_t dot11f_get_packed_ie_OperatingMode( 6589 tpAniSirGlobal, 6590 tDot11fIEOperatingMode *, 6591 uint32_t*); 6592 6593 #ifdef __cplusplus 6594 }; /* End extern "C". */ 6595 #endif /* C++ */ 6596 6597 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 6598 typedef struct sDot11fIEP2PAssocReq { 6599 uint8_t present; 6600 tDot11fTLVP2PCapability P2PCapability; 6601 tDot11fTLVExtendedListenTiming ExtendedListenTiming; 6602 tDot11fTLVP2PDeviceInfo P2PDeviceInfo; 6603 } tDot11fIEP2PAssocReq; 6604 6605 #define DOT11F_EID_P2PASSOCREQ (221) 6606 6607 /* N.B. These #defines do *not* include the EID & length */ 6608 #define DOT11F_IE_P2PASSOCREQ_MIN_LEN (4) 6609 6610 #define DOT11F_IE_P2PASSOCREQ_MAX_LEN (71) 6611 6612 #ifdef __cplusplus 6613 extern "C" { 6614 #endif /* C++ */ 6615 __must_check uint32_t dot11f_unpack_ie_p2_p_assoc_req( 6616 tpAniSirGlobal, 6617 uint8_t *, 6618 uint8_t, 6619 tDot11fIEP2PAssocReq*, 6620 bool); 6621 6622 uint32_t dot11f_pack_ie_p2_p_assoc_req( 6623 tpAniSirGlobal, 6624 tDot11fIEP2PAssocReq *, 6625 uint8_t *, 6626 uint32_t, 6627 uint32_t*); 6628 6629 uint32_t dot11f_get_packed_iep2_p_assoc_req( 6630 tpAniSirGlobal, 6631 tDot11fIEP2PAssocReq *, 6632 uint32_t*); 6633 6634 #ifdef __cplusplus 6635 }; /* End extern "C". */ 6636 #endif /* C++ */ 6637 6638 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 6639 typedef struct sDot11fIEP2PAssocRes { 6640 uint8_t present; 6641 tDot11fTLVP2PStatus P2PStatus; 6642 tDot11fTLVExtendedListenTiming ExtendedListenTiming; 6643 } tDot11fIEP2PAssocRes; 6644 6645 #define DOT11F_EID_P2PASSOCRES (221) 6646 6647 /* N.B. These #defines do *not* include the EID & length */ 6648 #define DOT11F_IE_P2PASSOCRES_MIN_LEN (4) 6649 6650 #define DOT11F_IE_P2PASSOCRES_MAX_LEN (15) 6651 6652 #ifdef __cplusplus 6653 extern "C" { 6654 #endif /* C++ */ 6655 __must_check uint32_t dot11f_unpack_ie_p2_p_assoc_res( 6656 tpAniSirGlobal, 6657 uint8_t *, 6658 uint8_t, 6659 tDot11fIEP2PAssocRes*, 6660 bool); 6661 6662 uint32_t dot11f_pack_ie_p2_p_assoc_res( 6663 tpAniSirGlobal, 6664 tDot11fIEP2PAssocRes *, 6665 uint8_t *, 6666 uint32_t, 6667 uint32_t*); 6668 6669 uint32_t dot11f_get_packed_iep2_p_assoc_res( 6670 tpAniSirGlobal, 6671 tDot11fIEP2PAssocRes *, 6672 uint32_t*); 6673 6674 #ifdef __cplusplus 6675 }; /* End extern "C". */ 6676 #endif /* C++ */ 6677 6678 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 6679 typedef struct sDot11fIEP2PBeacon { 6680 uint8_t present; 6681 tDot11fTLVP2PCapability P2PCapability; 6682 tDot11fTLVP2PDeviceId P2PDeviceId; 6683 tDot11fTLVNoticeOfAbsence NoticeOfAbsence; 6684 } tDot11fIEP2PBeacon; 6685 6686 #define DOT11F_EID_P2PBEACON (221) 6687 6688 /* N.B. These #defines do *not* include the EID & length */ 6689 #define DOT11F_IE_P2PBEACON_MIN_LEN (4) 6690 6691 #define DOT11F_IE_P2PBEACON_MAX_LEN (59) 6692 6693 #ifdef __cplusplus 6694 extern "C" { 6695 #endif /* C++ */ 6696 __must_check uint32_t dot11f_unpack_ie_p2_p_beacon( 6697 tpAniSirGlobal, 6698 uint8_t *, 6699 uint8_t, 6700 tDot11fIEP2PBeacon*, 6701 bool); 6702 6703 uint32_t dot11f_pack_ie_p2_p_beacon( 6704 tpAniSirGlobal, 6705 tDot11fIEP2PBeacon *, 6706 uint8_t *, 6707 uint32_t, 6708 uint32_t*); 6709 6710 uint32_t dot11f_get_packed_iep2_p_beacon( 6711 tpAniSirGlobal, 6712 tDot11fIEP2PBeacon *, 6713 uint32_t*); 6714 6715 #ifdef __cplusplus 6716 }; /* End extern "C". */ 6717 #endif /* C++ */ 6718 6719 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 6720 typedef struct sDot11fIEP2PBeaconProbeRes { 6721 uint8_t present; 6722 tDot11fTLVP2PCapability P2PCapability; 6723 tDot11fTLVP2PDeviceId P2PDeviceId; 6724 tDot11fTLVExtendedListenTiming ExtendedListenTiming; 6725 tDot11fTLVNoticeOfAbsence NoticeOfAbsence; 6726 tDot11fTLVP2PDeviceInfo P2PDeviceInfo; 6727 tDot11fTLVP2PGroupInfo P2PGroupInfo; 6728 } tDot11fIEP2PBeaconProbeRes; 6729 6730 #define DOT11F_EID_P2PBEACONPROBERES (221) 6731 6732 /* N.B. These #defines do *not* include the EID & length */ 6733 #define DOT11F_IE_P2PBEACONPROBERES_MIN_LEN (4) 6734 6735 #define DOT11F_IE_P2PBEACONPROBERES_MAX_LEN (1148) 6736 6737 #ifdef __cplusplus 6738 extern "C" { 6739 #endif /* C++ */ 6740 __must_check uint32_t dot11f_unpack_ie_p2_p_beacon_probe_res( 6741 tpAniSirGlobal, 6742 uint8_t *, 6743 uint8_t, 6744 tDot11fIEP2PBeaconProbeRes*, 6745 bool); 6746 6747 uint32_t dot11f_pack_ie_p2_p_beacon_probe_res( 6748 tpAniSirGlobal, 6749 tDot11fIEP2PBeaconProbeRes *, 6750 uint8_t *, 6751 uint32_t, 6752 uint32_t*); 6753 6754 uint32_t dot11f_get_packed_iep2_p_beacon_probe_res( 6755 tpAniSirGlobal, 6756 tDot11fIEP2PBeaconProbeRes *, 6757 uint32_t*); 6758 6759 #ifdef __cplusplus 6760 }; /* End extern "C". */ 6761 #endif /* C++ */ 6762 6763 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 6764 typedef struct sDot11fIEP2PDeAuth { 6765 uint8_t present; 6766 tDot11fTLVMinorReasonCode MinorReasonCode; 6767 } tDot11fIEP2PDeAuth; 6768 6769 #define DOT11F_EID_P2PDEAUTH (221) 6770 6771 /* N.B. These #defines do *not* include the EID & length */ 6772 #define DOT11F_IE_P2PDEAUTH_MIN_LEN (4) 6773 6774 #define DOT11F_IE_P2PDEAUTH_MAX_LEN (8) 6775 6776 #ifdef __cplusplus 6777 extern "C" { 6778 #endif /* C++ */ 6779 __must_check uint32_t dot11f_unpack_ie_p2_p_de_auth( 6780 tpAniSirGlobal, 6781 uint8_t *, 6782 uint8_t, 6783 tDot11fIEP2PDeAuth*, 6784 bool); 6785 6786 uint32_t dot11f_pack_ie_p2_p_de_auth( 6787 tpAniSirGlobal, 6788 tDot11fIEP2PDeAuth *, 6789 uint8_t *, 6790 uint32_t, 6791 uint32_t*); 6792 6793 uint32_t dot11f_get_packed_iep2_p_de_auth( 6794 tpAniSirGlobal, 6795 tDot11fIEP2PDeAuth *, 6796 uint32_t*); 6797 6798 #ifdef __cplusplus 6799 }; /* End extern "C". */ 6800 #endif /* C++ */ 6801 6802 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 6803 typedef struct sDot11fIEP2PDisAssoc { 6804 uint8_t present; 6805 tDot11fTLVMinorReasonCode MinorReasonCode; 6806 } tDot11fIEP2PDisAssoc; 6807 6808 #define DOT11F_EID_P2PDISASSOC (221) 6809 6810 /* N.B. These #defines do *not* include the EID & length */ 6811 #define DOT11F_IE_P2PDISASSOC_MIN_LEN (4) 6812 6813 #define DOT11F_IE_P2PDISASSOC_MAX_LEN (8) 6814 6815 #ifdef __cplusplus 6816 extern "C" { 6817 #endif /* C++ */ 6818 __must_check uint32_t dot11f_unpack_ie_p2_p_dis_assoc( 6819 tpAniSirGlobal, 6820 uint8_t *, 6821 uint8_t, 6822 tDot11fIEP2PDisAssoc*, 6823 bool); 6824 6825 uint32_t dot11f_pack_ie_p2_p_dis_assoc( 6826 tpAniSirGlobal, 6827 tDot11fIEP2PDisAssoc *, 6828 uint8_t *, 6829 uint32_t, 6830 uint32_t*); 6831 6832 uint32_t dot11f_get_packed_iep2_p_dis_assoc( 6833 tpAniSirGlobal, 6834 tDot11fIEP2PDisAssoc *, 6835 uint32_t*); 6836 6837 #ifdef __cplusplus 6838 }; /* End extern "C". */ 6839 #endif /* C++ */ 6840 6841 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} */ 6842 typedef struct sDot11fIEP2PIEOpaque { 6843 uint8_t present; 6844 uint8_t num_data; 6845 uint8_t data[249]; 6846 } tDot11fIEP2PIEOpaque; 6847 6848 #define DOT11F_EID_P2PIEOPAQUE (221) 6849 6850 /* N.B. These #defines do *not* include the EID & length */ 6851 #define DOT11F_IE_P2PIEOPAQUE_MIN_LEN (6) 6852 6853 #define DOT11F_IE_P2PIEOPAQUE_MAX_LEN (253) 6854 6855 #ifdef __cplusplus 6856 extern "C" { 6857 #endif /* C++ */ 6858 __must_check uint32_t dot11f_unpack_ie_p2_pie_opaque( 6859 tpAniSirGlobal, 6860 uint8_t *, 6861 uint8_t, 6862 tDot11fIEP2PIEOpaque*, 6863 bool); 6864 6865 uint32_t dot11f_pack_ie_p2_pie_opaque( 6866 tpAniSirGlobal, 6867 tDot11fIEP2PIEOpaque *, 6868 uint8_t *, 6869 uint32_t, 6870 uint32_t*); 6871 6872 uint32_t dot11f_get_packed_ie_P2PIEOpaque( 6873 tpAniSirGlobal, 6874 tDot11fIEP2PIEOpaque *, 6875 uint32_t*); 6876 6877 #ifdef __cplusplus 6878 }; /* End extern "C". */ 6879 #endif /* C++ */ 6880 6881 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 6882 typedef struct sDot11fIEP2PProbeReq { 6883 uint8_t present; 6884 tDot11fTLVP2PCapability P2PCapability; 6885 tDot11fTLVP2PDeviceId P2PDeviceId; 6886 tDot11fTLVListenChannel ListenChannel; 6887 tDot11fTLVExtendedListenTiming ExtendedListenTiming; 6888 tDot11fTLVOperatingChannel OperatingChannel; 6889 } tDot11fIEP2PProbeReq; 6890 6891 #define DOT11F_EID_P2PPROBEREQ (221) 6892 6893 /* N.B. These #defines do *not* include the EID & length */ 6894 #define DOT11F_IE_P2PPROBEREQ_MIN_LEN (4) 6895 6896 #define DOT11F_IE_P2PPROBEREQ_MAX_LEN (41) 6897 6898 #ifdef __cplusplus 6899 extern "C" { 6900 #endif /* C++ */ 6901 __must_check uint32_t dot11f_unpack_ie_p2_p_probe_req( 6902 tpAniSirGlobal, 6903 uint8_t *, 6904 uint8_t, 6905 tDot11fIEP2PProbeReq*, 6906 bool); 6907 6908 uint32_t dot11f_pack_ie_p2_p_probe_req( 6909 tpAniSirGlobal, 6910 tDot11fIEP2PProbeReq *, 6911 uint8_t *, 6912 uint32_t, 6913 uint32_t*); 6914 6915 uint32_t dot11f_get_packed_iep2_p_probe_req( 6916 tpAniSirGlobal, 6917 tDot11fIEP2PProbeReq *, 6918 uint32_t*); 6919 6920 #ifdef __cplusplus 6921 }; /* End extern "C". */ 6922 #endif /* C++ */ 6923 6924 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x09} (Multi-IE) */ 6925 typedef struct sDot11fIEP2PProbeRes { 6926 uint8_t present; 6927 tDot11fTLVP2PCapability P2PCapability; 6928 tDot11fTLVExtendedListenTiming ExtendedListenTiming; 6929 tDot11fTLVNoticeOfAbsence NoticeOfAbsence; 6930 tDot11fTLVP2PDeviceInfo P2PDeviceInfo; 6931 tDot11fTLVP2PGroupInfo P2PGroupInfo; 6932 } tDot11fIEP2PProbeRes; 6933 6934 #define DOT11F_EID_P2PPROBERES (221) 6935 6936 /* N.B. These #defines do *not* include the EID & length */ 6937 #define DOT11F_IE_P2PPROBERES_MIN_LEN (4) 6938 6939 #define DOT11F_IE_P2PPROBERES_MAX_LEN (1139) 6940 6941 #ifdef __cplusplus 6942 extern "C" { 6943 #endif /* C++ */ 6944 __must_check uint32_t dot11f_unpack_ie_p2_p_probe_res( 6945 tpAniSirGlobal, 6946 uint8_t *, 6947 uint8_t, 6948 tDot11fIEP2PProbeRes*, 6949 bool); 6950 6951 uint32_t dot11f_pack_ie_p2_p_probe_res( 6952 tpAniSirGlobal, 6953 tDot11fIEP2PProbeRes *, 6954 uint8_t *, 6955 uint32_t, 6956 uint32_t*); 6957 6958 uint32_t dot11f_get_packed_iep2_p_probe_res( 6959 tpAniSirGlobal, 6960 tDot11fIEP2PProbeRes *, 6961 uint32_t*); 6962 6963 #ifdef __cplusplus 6964 }; /* End extern "C". */ 6965 #endif /* C++ */ 6966 6967 /* EID 105 (0x69) */ 6968 typedef struct sDot11fIEPTIControl { 6969 uint8_t present; 6970 uint8_t tid; 6971 uint16_t sequence_control; 6972 } tDot11fIEPTIControl; 6973 6974 #define DOT11F_EID_PTICONTROL (105) 6975 6976 /* N.B. These #defines do *not* include the EID & length */ 6977 #define DOT11F_IE_PTICONTROL_MIN_LEN (3) 6978 6979 #define DOT11F_IE_PTICONTROL_MAX_LEN (3) 6980 6981 #ifdef __cplusplus 6982 extern "C" { 6983 #endif /* C++ */ 6984 __must_check uint32_t dot11f_unpack_ie_pti_control( 6985 tpAniSirGlobal, 6986 uint8_t *, 6987 uint8_t, 6988 tDot11fIEPTIControl*, 6989 bool); 6990 6991 uint32_t dot11f_pack_ie_pti_control( 6992 tpAniSirGlobal, 6993 tDot11fIEPTIControl *, 6994 uint8_t *, 6995 uint32_t, 6996 uint32_t*); 6997 6998 uint32_t dot11f_get_packed_ie_PTIControl( 6999 tpAniSirGlobal, 7000 tDot11fIEPTIControl *, 7001 uint32_t*); 7002 7003 #ifdef __cplusplus 7004 }; /* End extern "C". */ 7005 #endif /* C++ */ 7006 7007 /* EID 106 (0x6a) */ 7008 typedef struct sDot11fIEPUBufferStatus { 7009 uint8_t present; 7010 uint8_t ac_bk_traffic_aval:1; 7011 uint8_t ac_be_traffic_aval:1; 7012 uint8_t ac_vi_traffic_aval:1; 7013 uint8_t ac_vo_traffic_aval:1; 7014 uint8_t reserved:4; 7015 } tDot11fIEPUBufferStatus; 7016 7017 #define DOT11F_EID_PUBUFFERSTATUS (106) 7018 7019 /* N.B. These #defines do *not* include the EID & length */ 7020 #define DOT11F_IE_PUBUFFERSTATUS_MIN_LEN (1) 7021 7022 #define DOT11F_IE_PUBUFFERSTATUS_MAX_LEN (1) 7023 7024 #ifdef __cplusplus 7025 extern "C" { 7026 #endif /* C++ */ 7027 __must_check uint32_t dot11f_unpack_ie_pu_buffer_status( 7028 tpAniSirGlobal, 7029 uint8_t *, 7030 uint8_t, 7031 tDot11fIEPUBufferStatus*, 7032 bool); 7033 7034 uint32_t dot11f_pack_ie_pu_buffer_status( 7035 tpAniSirGlobal, 7036 tDot11fIEPUBufferStatus *, 7037 uint8_t *, 7038 uint32_t, 7039 uint32_t*); 7040 7041 uint32_t dot11f_get_packed_ie_PUBufferStatus( 7042 tpAniSirGlobal, 7043 tDot11fIEPUBufferStatus *, 7044 uint32_t*); 7045 7046 #ifdef __cplusplus 7047 }; /* End extern "C". */ 7048 #endif /* C++ */ 7049 7050 /* EID 33 (0x21) */ 7051 typedef struct sDot11fIEPowerCaps { 7052 uint8_t present; 7053 uint8_t minTxPower; 7054 uint8_t maxTxPower; 7055 } tDot11fIEPowerCaps; 7056 7057 #define DOT11F_EID_POWERCAPS (33) 7058 7059 /* N.B. These #defines do *not* include the EID & length */ 7060 #define DOT11F_IE_POWERCAPS_MIN_LEN (2) 7061 7062 #define DOT11F_IE_POWERCAPS_MAX_LEN (2) 7063 7064 #ifdef __cplusplus 7065 extern "C" { 7066 #endif /* C++ */ 7067 __must_check uint32_t dot11f_unpack_ie_power_caps( 7068 tpAniSirGlobal, 7069 uint8_t *, 7070 uint8_t, 7071 tDot11fIEPowerCaps*, 7072 bool); 7073 7074 uint32_t dot11f_pack_ie_power_caps( 7075 tpAniSirGlobal, 7076 tDot11fIEPowerCaps *, 7077 uint8_t *, 7078 uint32_t, 7079 uint32_t*); 7080 7081 uint32_t dot11f_get_packed_ie_PowerCaps( 7082 tpAniSirGlobal, 7083 tDot11fIEPowerCaps *, 7084 uint32_t*); 7085 7086 #ifdef __cplusplus 7087 }; /* End extern "C". */ 7088 #endif /* C++ */ 7089 7090 /* EID 32 (0x20) */ 7091 typedef struct sDot11fIEPowerConstraints { 7092 uint8_t present; 7093 uint8_t localPowerConstraints; 7094 } tDot11fIEPowerConstraints; 7095 7096 #define DOT11F_EID_POWERCONSTRAINTS (32) 7097 7098 /* N.B. These #defines do *not* include the EID & length */ 7099 #define DOT11F_IE_POWERCONSTRAINTS_MIN_LEN (1) 7100 7101 #define DOT11F_IE_POWERCONSTRAINTS_MAX_LEN (1) 7102 7103 #ifdef __cplusplus 7104 extern "C" { 7105 #endif /* C++ */ 7106 __must_check uint32_t dot11f_unpack_ie_power_constraints( 7107 tpAniSirGlobal, 7108 uint8_t *, 7109 uint8_t, 7110 tDot11fIEPowerConstraints*, 7111 bool); 7112 7113 uint32_t dot11f_pack_ie_power_constraints( 7114 tpAniSirGlobal, 7115 tDot11fIEPowerConstraints *, 7116 uint8_t *, 7117 uint32_t, 7118 uint32_t*); 7119 7120 uint32_t dot11f_get_packed_ie_PowerConstraints( 7121 tpAniSirGlobal, 7122 tDot11fIEPowerConstraints *, 7123 uint32_t*); 7124 7125 #ifdef __cplusplus 7126 }; /* End extern "C". */ 7127 #endif /* C++ */ 7128 7129 /* EID 11 (0x0b) */ 7130 typedef struct sDot11fIEQBSSLoad { 7131 uint8_t present; 7132 uint16_t stacount; 7133 uint8_t chautil; 7134 uint16_t avail; 7135 } tDot11fIEQBSSLoad; 7136 7137 #define DOT11F_EID_QBSSLOAD (11) 7138 7139 /* N.B. These #defines do *not* include the EID & length */ 7140 #define DOT11F_IE_QBSSLOAD_MIN_LEN (5) 7141 7142 #define DOT11F_IE_QBSSLOAD_MAX_LEN (5) 7143 7144 #ifdef __cplusplus 7145 extern "C" { 7146 #endif /* C++ */ 7147 __must_check uint32_t dot11f_unpack_ie_qbss_load( 7148 tpAniSirGlobal, 7149 uint8_t *, 7150 uint8_t, 7151 tDot11fIEQBSSLoad*, 7152 bool); 7153 7154 uint32_t dot11f_pack_ie_qbss_load( 7155 tpAniSirGlobal, 7156 tDot11fIEQBSSLoad *, 7157 uint8_t *, 7158 uint32_t, 7159 uint32_t*); 7160 7161 uint32_t dot11f_get_packed_ie_QBSSLoad( 7162 tpAniSirGlobal, 7163 tDot11fIEQBSSLoad *, 7164 uint32_t*); 7165 7166 #ifdef __cplusplus 7167 }; /* End extern "C". */ 7168 #endif /* C++ */ 7169 7170 /* EID 221 (0xdd) {OUI 0x00, 0xa0, 0xc6} */ 7171 typedef struct sDot11fIEQComVendorIE { 7172 uint8_t present; 7173 uint8_t type; 7174 uint8_t channel; 7175 } tDot11fIEQComVendorIE; 7176 7177 #define DOT11F_EID_QCOMVENDORIE (221) 7178 7179 /* N.B. These #defines do *not* include the EID & length */ 7180 #define DOT11F_IE_QCOMVENDORIE_MIN_LEN (5) 7181 7182 #define DOT11F_IE_QCOMVENDORIE_MAX_LEN (5) 7183 7184 #ifdef __cplusplus 7185 extern "C" { 7186 #endif /* C++ */ 7187 __must_check uint32_t dot11f_unpack_ie_QComVendorIE( 7188 tpAniSirGlobal, 7189 uint8_t *, 7190 uint8_t, 7191 tDot11fIEQComVendorIE*, 7192 bool); 7193 7194 uint32_t dot11f_pack_ie_QComVendorIE( 7195 tpAniSirGlobal, 7196 tDot11fIEQComVendorIE *, 7197 uint8_t *, 7198 uint32_t, 7199 uint32_t*); 7200 7201 uint32_t dot11f_get_packed_ie_QComVendorIE( 7202 tpAniSirGlobal, 7203 tDot11fIEQComVendorIE *, 7204 uint32_t*); 7205 7206 #ifdef __cplusplus 7207 }; /* End extern "C". */ 7208 #endif /* C++ */ 7209 7210 /* EID 46 (0x2e) */ 7211 typedef struct sDot11fIEQOSCapsAp { 7212 uint8_t present; 7213 uint8_t count:4; 7214 uint8_t qack:1; 7215 uint8_t qreq:1; 7216 uint8_t txopreq:1; 7217 uint8_t reserved:1; 7218 } tDot11fIEQOSCapsAp; 7219 7220 #define DOT11F_EID_QOSCAPSAP (46) 7221 7222 /* N.B. These #defines do *not* include the EID & length */ 7223 #define DOT11F_IE_QOSCAPSAP_MIN_LEN (1) 7224 7225 #define DOT11F_IE_QOSCAPSAP_MAX_LEN (1) 7226 7227 #ifdef __cplusplus 7228 extern "C" { 7229 #endif /* C++ */ 7230 __must_check uint32_t dot11f_unpack_ie_qos_caps_ap( 7231 tpAniSirGlobal, 7232 uint8_t *, 7233 uint8_t, 7234 tDot11fIEQOSCapsAp*, 7235 bool); 7236 7237 uint32_t dot11f_pack_ie_qos_caps_ap( 7238 tpAniSirGlobal, 7239 tDot11fIEQOSCapsAp *, 7240 uint8_t *, 7241 uint32_t, 7242 uint32_t*); 7243 7244 uint32_t dot11f_get_packed_ie_QOSCapsAp( 7245 tpAniSirGlobal, 7246 tDot11fIEQOSCapsAp *, 7247 uint32_t*); 7248 7249 #ifdef __cplusplus 7250 }; /* End extern "C". */ 7251 #endif /* C++ */ 7252 7253 /* EID 46 (0x2e) */ 7254 typedef struct sDot11fIEQOSCapsStation { 7255 uint8_t present; 7256 uint8_t acvo_uapsd:1; 7257 uint8_t acvi_uapsd:1; 7258 uint8_t acbk_uapsd:1; 7259 uint8_t acbe_uapsd:1; 7260 uint8_t qack:1; 7261 uint8_t max_sp_length:2; 7262 uint8_t more_data_ack:1; 7263 } tDot11fIEQOSCapsStation; 7264 7265 #define DOT11F_EID_QOSCAPSSTATION (46) 7266 7267 /* N.B. These #defines do *not* include the EID & length */ 7268 #define DOT11F_IE_QOSCAPSSTATION_MIN_LEN (1) 7269 7270 #define DOT11F_IE_QOSCAPSSTATION_MAX_LEN (1) 7271 7272 #ifdef __cplusplus 7273 extern "C" { 7274 #endif /* C++ */ 7275 __must_check uint32_t dot11f_unpack_ie_qos_caps_station( 7276 tpAniSirGlobal, 7277 uint8_t *, 7278 uint8_t, 7279 tDot11fIEQOSCapsStation*, 7280 bool); 7281 7282 uint32_t dot11f_pack_ie_qos_caps_station( 7283 tpAniSirGlobal, 7284 tDot11fIEQOSCapsStation *, 7285 uint8_t *, 7286 uint32_t, 7287 uint32_t*); 7288 7289 uint32_t dot11f_get_packed_ie_QOSCapsStation( 7290 tpAniSirGlobal, 7291 tDot11fIEQOSCapsStation *, 7292 uint32_t*); 7293 7294 #ifdef __cplusplus 7295 }; /* End extern "C". */ 7296 #endif /* C++ */ 7297 7298 /* EID 110 (0x6e) */ 7299 typedef struct sDot11fIEQosMapSet { 7300 uint8_t present; 7301 uint8_t num_dscp_exceptions; 7302 uint8_t dscp_exceptions[58]; 7303 } tDot11fIEQosMapSet; 7304 7305 #define DOT11F_EID_QOSMAPSET (110) 7306 7307 /* N.B. These #defines do *not* include the EID & length */ 7308 #define DOT11F_IE_QOSMAPSET_MIN_LEN (16) 7309 7310 #define DOT11F_IE_QOSMAPSET_MAX_LEN (58) 7311 7312 #ifdef __cplusplus 7313 extern "C" { 7314 #endif /* C++ */ 7315 __must_check uint32_t dot11f_unpack_ie_qos_map_set( 7316 tpAniSirGlobal, 7317 uint8_t *, 7318 uint8_t, 7319 tDot11fIEQosMapSet*, 7320 bool); 7321 7322 uint32_t dot11f_pack_ie_qos_map_set( 7323 tpAniSirGlobal, 7324 tDot11fIEQosMapSet *, 7325 uint8_t *, 7326 uint32_t, 7327 uint32_t*); 7328 7329 uint32_t dot11f_get_packed_ie_QosMapSet( 7330 tpAniSirGlobal, 7331 tDot11fIEQosMapSet *, 7332 uint32_t*); 7333 7334 #ifdef __cplusplus 7335 }; /* End extern "C". */ 7336 #endif /* C++ */ 7337 7338 /* EID 40 (0x28) */ 7339 typedef struct sDot11fIEQuiet { 7340 uint8_t present; 7341 uint8_t count; 7342 uint8_t period; 7343 uint16_t duration; 7344 uint16_t offset; 7345 } tDot11fIEQuiet; 7346 7347 #define DOT11F_EID_QUIET (40) 7348 7349 /* N.B. These #defines do *not* include the EID & length */ 7350 #define DOT11F_IE_QUIET_MIN_LEN (6) 7351 7352 #define DOT11F_IE_QUIET_MAX_LEN (6) 7353 7354 #ifdef __cplusplus 7355 extern "C" { 7356 #endif /* C++ */ 7357 __must_check uint32_t dot11f_unpack_ie_quiet( 7358 tpAniSirGlobal, 7359 uint8_t *, 7360 uint8_t, 7361 tDot11fIEQuiet*, 7362 bool); 7363 7364 uint32_t dot11f_pack_ie_quiet( 7365 tpAniSirGlobal, 7366 tDot11fIEQuiet *, 7367 uint8_t *, 7368 uint32_t, 7369 uint32_t*); 7370 7371 uint32_t dot11f_get_packed_ie_Quiet( 7372 tpAniSirGlobal, 7373 tDot11fIEQuiet *, 7374 uint32_t*); 7375 7376 #ifdef __cplusplus 7377 }; /* End extern "C". */ 7378 #endif /* C++ */ 7379 7380 /* EID 53 (0x35) */ 7381 typedef struct sDot11fIERCPIIE { 7382 uint8_t present; 7383 uint8_t rcpi; 7384 } tDot11fIERCPIIE; 7385 7386 #define DOT11F_EID_RCPIIE (53) 7387 7388 /* N.B. These #defines do *not* include the EID & length */ 7389 #define DOT11F_IE_RCPIIE_MIN_LEN (1) 7390 7391 #define DOT11F_IE_RCPIIE_MAX_LEN (1) 7392 7393 #ifdef __cplusplus 7394 extern "C" { 7395 #endif /* C++ */ 7396 __must_check uint32_t dot11f_unpack_ie_rcpiie( 7397 tpAniSirGlobal, 7398 uint8_t *, 7399 uint8_t, 7400 tDot11fIERCPIIE*, 7401 bool); 7402 7403 uint32_t dot11f_pack_ie_rcpiie( 7404 tpAniSirGlobal, 7405 tDot11fIERCPIIE *, 7406 uint8_t *, 7407 uint32_t, 7408 uint32_t*); 7409 7410 uint32_t dot11f_get_packed_ie_RCPIIE( 7411 tpAniSirGlobal, 7412 tDot11fIERCPIIE *, 7413 uint32_t*); 7414 7415 #ifdef __cplusplus 7416 }; /* End extern "C". */ 7417 #endif /* C++ */ 7418 7419 /* EID 57 (0x39) */ 7420 typedef struct sDot11fIERICDataDesc { 7421 uint8_t present; 7422 tDot11fIERICData RICData; 7423 tDot11fIERICDescriptor RICDescriptor; 7424 tDot11fIETSPEC TSPEC; 7425 uint16_t num_TCLAS; 7426 tDot11fIETCLAS TCLAS[2]; 7427 tDot11fIETCLASSPROC TCLASSPROC; 7428 tDot11fIETSDelay TSDelay; 7429 tDot11fIESchedule Schedule; 7430 tDot11fIEWMMTSPEC WMMTSPEC; 7431 uint16_t num_WMMTCLAS; 7432 tDot11fIEWMMTCLAS WMMTCLAS[2]; 7433 tDot11fIEWMMTCLASPROC WMMTCLASPROC; 7434 tDot11fIEWMMTSDelay WMMTSDelay; 7435 tDot11fIEWMMSchedule WMMSchedule; 7436 } tDot11fIERICDataDesc; 7437 7438 #define DOT11F_EID_RICDATADESC (57) 7439 7440 /* N.B. These #defines do *not* include the EID & length */ 7441 #define DOT11F_IE_RICDATADESC_MIN_LEN (0) 7442 7443 #define DOT11F_IE_RICDATADESC_MAX_LEN (548) 7444 7445 #ifdef __cplusplus 7446 extern "C" { 7447 #endif /* C++ */ 7448 __must_check uint32_t dot11f_unpack_ie_ric_data_desc( 7449 tpAniSirGlobal, 7450 uint8_t *, 7451 uint8_t, 7452 tDot11fIERICDataDesc*, 7453 bool); 7454 7455 uint32_t dot11f_pack_ie_ric_data_desc( 7456 tpAniSirGlobal, 7457 tDot11fIERICDataDesc *, 7458 uint8_t *, 7459 uint32_t, 7460 uint32_t*); 7461 7462 uint32_t dot11f_get_packed_ieric_data_desc( 7463 tpAniSirGlobal, 7464 tDot11fIERICDataDesc *, 7465 uint32_t*); 7466 7467 #ifdef __cplusplus 7468 }; /* End extern "C". */ 7469 #endif /* C++ */ 7470 7471 /* EID 48 (0x30) */ 7472 typedef struct sDot11fIERSN { 7473 uint8_t present; 7474 uint16_t version /* Must be 1! */; 7475 uint8_t gp_cipher_suite_present; 7476 uint8_t gp_cipher_suite[4]; 7477 uint16_t pwise_cipher_suite_count; 7478 uint8_t pwise_cipher_suites[6][4]; 7479 uint16_t akm_suite_cnt; 7480 uint8_t akm_suite[6][4]; 7481 uint8_t RSN_Cap_present; 7482 uint8_t RSN_Cap[2]; 7483 uint16_t pmkid_count; 7484 uint8_t pmkid[4][16]; 7485 uint8_t gp_mgmt_cipher_suite_present; 7486 uint8_t gp_mgmt_cipher_suite[4]; 7487 } tDot11fIERSN; 7488 7489 #define DOT11F_EID_RSN (48) 7490 7491 /* N.B. These #defines do *not* include the EID & length */ 7492 #define DOT11F_IE_RSN_MIN_LEN (2) 7493 7494 #define DOT11F_IE_RSN_MAX_LEN (130) 7495 7496 #ifdef __cplusplus 7497 extern "C" { 7498 #endif /* C++ */ 7499 __must_check uint32_t dot11f_unpack_ie_rsn( 7500 tpAniSirGlobal, 7501 uint8_t *, 7502 uint8_t, 7503 tDot11fIERSN*, 7504 bool); 7505 7506 uint32_t dot11f_pack_ie_rsn( 7507 tpAniSirGlobal, 7508 tDot11fIERSN *, 7509 uint8_t *, 7510 uint32_t, 7511 uint32_t*); 7512 7513 uint32_t dot11f_get_packed_iersn( 7514 tpAniSirGlobal, 7515 tDot11fIERSN *, 7516 uint32_t*); 7517 7518 #ifdef __cplusplus 7519 }; /* End extern "C". */ 7520 #endif /* C++ */ 7521 7522 /* EID 65 (0x41) */ 7523 typedef struct sDot11fIERSNIIE { 7524 uint8_t present; 7525 uint8_t rsni; 7526 } tDot11fIERSNIIE; 7527 7528 #define DOT11F_EID_RSNIIE (65) 7529 7530 /* N.B. These #defines do *not* include the EID & length */ 7531 #define DOT11F_IE_RSNIIE_MIN_LEN (1) 7532 7533 #define DOT11F_IE_RSNIIE_MAX_LEN (1) 7534 7535 #ifdef __cplusplus 7536 extern "C" { 7537 #endif /* C++ */ 7538 __must_check uint32_t dot11f_unpack_ie_rsniie( 7539 tpAniSirGlobal, 7540 uint8_t *, 7541 uint8_t, 7542 tDot11fIERSNIIE*, 7543 bool); 7544 7545 uint32_t dot11f_pack_ie_rsniie( 7546 tpAniSirGlobal, 7547 tDot11fIERSNIIE *, 7548 uint8_t *, 7549 uint32_t, 7550 uint32_t*); 7551 7552 uint32_t dot11f_get_packed_iersnIIE( 7553 tpAniSirGlobal, 7554 tDot11fIERSNIIE *, 7555 uint32_t*); 7556 7557 #ifdef __cplusplus 7558 }; /* End extern "C". */ 7559 #endif /* C++ */ 7560 7561 /* EID 48 (0x30) */ 7562 typedef struct sDot11fIERSNOpaque { 7563 uint8_t present; 7564 uint8_t num_data; 7565 uint8_t data[253]; 7566 } tDot11fIERSNOpaque; 7567 7568 #define DOT11F_EID_RSNOPAQUE (48) 7569 7570 /* N.B. These #defines do *not* include the EID & length */ 7571 #define DOT11F_IE_RSNOPAQUE_MIN_LEN (0) 7572 7573 #define DOT11F_IE_RSNOPAQUE_MAX_LEN (253) 7574 7575 #ifdef __cplusplus 7576 extern "C" { 7577 #endif /* C++ */ 7578 __must_check uint32_t dot11f_unpack_ie_rsn_opaque( 7579 tpAniSirGlobal, 7580 uint8_t *, 7581 uint8_t, 7582 tDot11fIERSNOpaque*, 7583 bool); 7584 7585 uint32_t dot11f_pack_ie_rsn_opaque( 7586 tpAniSirGlobal, 7587 tDot11fIERSNOpaque *, 7588 uint8_t *, 7589 uint32_t, 7590 uint32_t*); 7591 7592 uint32_t dot11f_get_packed_iersnOpaque( 7593 tpAniSirGlobal, 7594 tDot11fIERSNOpaque *, 7595 uint32_t*); 7596 7597 #ifdef __cplusplus 7598 }; /* End extern "C". */ 7599 #endif /* C++ */ 7600 7601 /* EID 36 (0x24) */ 7602 typedef struct sDot11fIESuppChannels { 7603 uint8_t present; 7604 uint8_t num_bands; 7605 uint8_t bands[48][2]; 7606 } tDot11fIESuppChannels; 7607 7608 #define DOT11F_EID_SUPPCHANNELS (36) 7609 7610 /* N.B. These #defines do *not* include the EID & length */ 7611 #define DOT11F_IE_SUPPCHANNELS_MIN_LEN (0) 7612 7613 #define DOT11F_IE_SUPPCHANNELS_MAX_LEN (96) 7614 7615 #ifdef __cplusplus 7616 extern "C" { 7617 #endif /* C++ */ 7618 __must_check uint32_t dot11f_unpack_ie_supp_channels( 7619 tpAniSirGlobal, 7620 uint8_t *, 7621 uint8_t, 7622 tDot11fIESuppChannels*, 7623 bool); 7624 7625 uint32_t dot11f_pack_ie_supp_channels( 7626 tpAniSirGlobal, 7627 tDot11fIESuppChannels *, 7628 uint8_t *, 7629 uint32_t, 7630 uint32_t*); 7631 7632 uint32_t dot11f_get_packed_ie_SuppChannels( 7633 tpAniSirGlobal, 7634 tDot11fIESuppChannels *, 7635 uint32_t*); 7636 7637 #ifdef __cplusplus 7638 }; /* End extern "C". */ 7639 #endif /* C++ */ 7640 7641 /* EID 59 (0x3b) */ 7642 typedef struct sDot11fIESuppOperatingClasses { 7643 uint8_t present; 7644 uint8_t num_classes; 7645 uint8_t classes[32]; 7646 } tDot11fIESuppOperatingClasses; 7647 7648 #define DOT11F_EID_SUPPOPERATINGCLASSES (59) 7649 7650 /* N.B. These #defines do *not* include the EID & length */ 7651 #define DOT11F_IE_SUPPOPERATINGCLASSES_MIN_LEN (1) 7652 7653 #define DOT11F_IE_SUPPOPERATINGCLASSES_MAX_LEN (32) 7654 7655 #ifdef __cplusplus 7656 extern "C" { 7657 #endif /* C++ */ 7658 __must_check uint32_t dot11f_unpack_ie_supp_operating_classes( 7659 tpAniSirGlobal, 7660 uint8_t *, 7661 uint8_t, 7662 tDot11fIESuppOperatingClasses*, 7663 bool); 7664 7665 uint32_t dot11f_pack_ie_supp_operating_classes( 7666 tpAniSirGlobal, 7667 tDot11fIESuppOperatingClasses *, 7668 uint8_t *, 7669 uint32_t, 7670 uint32_t*); 7671 7672 uint32_t dot11f_get_packed_ie_SuppOperatingClasses( 7673 tpAniSirGlobal, 7674 tDot11fIESuppOperatingClasses *, 7675 uint32_t*); 7676 7677 #ifdef __cplusplus 7678 }; /* End extern "C". */ 7679 #endif /* C++ */ 7680 7681 /* EID 1 (0x01) */ 7682 typedef struct sDot11fIESuppRates { 7683 uint8_t present; 7684 uint8_t num_rates; 7685 uint8_t rates[12]; 7686 } tDot11fIESuppRates; 7687 7688 #define DOT11F_EID_SUPPRATES (1) 7689 7690 /* N.B. These #defines do *not* include the EID & length */ 7691 #define DOT11F_IE_SUPPRATES_MIN_LEN (0) 7692 7693 #define DOT11F_IE_SUPPRATES_MAX_LEN (12) 7694 7695 #define DOT11F_IS_BG_RATE(_x) (((_x) == 02) || \ 7696 ((_x) == 04) || \ 7697 ((_x) == 11) || \ 7698 ((_x) == 22) || \ 7699 ((_x) == 12) || \ 7700 ((_x) == 18) || \ 7701 ((_x) == 24) || \ 7702 ((_x) == 36) || \ 7703 ((_x) == 48) || \ 7704 ((_x) == 72) || \ 7705 ((_x) == 96) || \ 7706 ((_x) == 108)) 7707 7708 #ifdef __cplusplus 7709 extern "C" { 7710 #endif /* C++ */ 7711 __must_check uint32_t dot11f_unpack_ie_supp_rates( 7712 tpAniSirGlobal, 7713 uint8_t *, 7714 uint8_t, 7715 tDot11fIESuppRates*, 7716 bool); 7717 7718 uint32_t dot11f_pack_ie_supp_rates( 7719 tpAniSirGlobal, 7720 tDot11fIESuppRates *, 7721 uint8_t *, 7722 uint32_t, 7723 uint32_t*); 7724 7725 uint32_t dot11f_get_packed_ie_SuppRates( 7726 tpAniSirGlobal, 7727 tDot11fIESuppRates *, 7728 uint32_t*); 7729 7730 #ifdef __cplusplus 7731 }; /* End extern "C". */ 7732 #endif /* C++ */ 7733 7734 /* EID 5 (0x05) */ 7735 typedef struct sDot11fIETIM { 7736 uint8_t present; 7737 uint8_t dtim_count; 7738 uint8_t dtim_period; 7739 uint8_t bmpctl; 7740 uint8_t num_vbmp; 7741 uint8_t vbmp[251]; 7742 } tDot11fIETIM; 7743 7744 #define DOT11F_EID_TIM (5) 7745 7746 /* N.B. These #defines do *not* include the EID & length */ 7747 #define DOT11F_IE_TIM_MIN_LEN (4) 7748 7749 #define DOT11F_IE_TIM_MAX_LEN (254) 7750 7751 #ifdef __cplusplus 7752 extern "C" { 7753 #endif /* C++ */ 7754 __must_check uint32_t dot11f_unpack_ie_tim( 7755 tpAniSirGlobal, 7756 uint8_t *, 7757 uint8_t, 7758 tDot11fIETIM*, 7759 bool); 7760 7761 uint32_t dot11f_pack_ie_tim( 7762 tpAniSirGlobal, 7763 tDot11fIETIM *, 7764 uint8_t *, 7765 uint32_t, 7766 uint32_t*); 7767 7768 uint32_t dot11f_get_packed_ie_TIM( 7769 tpAniSirGlobal, 7770 tDot11fIETIM *, 7771 uint32_t*); 7772 7773 #ifdef __cplusplus 7774 }; /* End extern "C". */ 7775 #endif /* C++ */ 7776 7777 /* EID 35 (0x23) */ 7778 typedef struct sDot11fIETPCReport { 7779 uint8_t present; 7780 uint8_t tx_power; 7781 uint8_t link_margin; 7782 } tDot11fIETPCReport; 7783 7784 #define DOT11F_EID_TPCREPORT (35) 7785 7786 /* N.B. These #defines do *not* include the EID & length */ 7787 #define DOT11F_IE_TPCREPORT_MIN_LEN (2) 7788 7789 #define DOT11F_IE_TPCREPORT_MAX_LEN (2) 7790 7791 #ifdef __cplusplus 7792 extern "C" { 7793 #endif /* C++ */ 7794 __must_check uint32_t dot11f_unpack_ie_tpc_report( 7795 tpAniSirGlobal, 7796 uint8_t *, 7797 uint8_t, 7798 tDot11fIETPCReport*, 7799 bool); 7800 7801 uint32_t dot11f_pack_ie_tpc_report( 7802 tpAniSirGlobal, 7803 tDot11fIETPCReport *, 7804 uint8_t *, 7805 uint32_t, 7806 uint32_t*); 7807 7808 uint32_t dot11f_get_packed_ie_TPCReport( 7809 tpAniSirGlobal, 7810 tDot11fIETPCReport *, 7811 uint32_t*); 7812 7813 #ifdef __cplusplus 7814 }; /* End extern "C". */ 7815 #endif /* C++ */ 7816 7817 /* EID 34 (0x22) */ 7818 typedef struct sDot11fIETPCRequest { 7819 uint8_t present; 7820 } tDot11fIETPCRequest; 7821 7822 #define DOT11F_EID_TPCREQUEST (34) 7823 7824 /* N.B. These #defines do *not* include the EID & length */ 7825 #define DOT11F_IE_TPCREQUEST_MIN_LEN (0) 7826 7827 #define DOT11F_IE_TPCREQUEST_MAX_LEN (0) 7828 7829 #ifdef __cplusplus 7830 extern "C" { 7831 #endif /* C++ */ 7832 __must_check uint32_t dot11f_unpack_ie_tpc_request( 7833 tpAniSirGlobal, 7834 uint8_t *, 7835 uint8_t, 7836 tDot11fIETPCRequest*, 7837 bool); 7838 7839 uint32_t dot11f_pack_ie_tpc_request( 7840 tpAniSirGlobal, 7841 tDot11fIETPCRequest *, 7842 uint8_t *, 7843 uint32_t, 7844 uint32_t*); 7845 7846 uint32_t dot11f_get_packed_ie_TPCRequest( 7847 tpAniSirGlobal, 7848 tDot11fIETPCRequest *, 7849 uint32_t*); 7850 7851 #ifdef __cplusplus 7852 }; /* End extern "C". */ 7853 #endif /* C++ */ 7854 7855 /* EID 69 (0x45) */ 7856 typedef struct sDot11fIETimeAdvertisement { 7857 uint8_t present; 7858 uint8_t timing_capabilities; 7859 uint8_t time_value[10]; 7860 uint8_t time_error[5]; 7861 } tDot11fIETimeAdvertisement; 7862 7863 #define DOT11F_EID_TIMEADVERTISEMENT (69) 7864 7865 /* N.B. These #defines do *not* include the EID & length */ 7866 #define DOT11F_IE_TIMEADVERTISEMENT_MIN_LEN (16) 7867 7868 #define DOT11F_IE_TIMEADVERTISEMENT_MAX_LEN (16) 7869 7870 #ifdef __cplusplus 7871 extern "C" { 7872 #endif /* C++ */ 7873 __must_check uint32_t dot11f_unpack_ie_time_advertisement( 7874 tpAniSirGlobal, 7875 uint8_t *, 7876 uint8_t, 7877 tDot11fIETimeAdvertisement*, 7878 bool); 7879 7880 uint32_t dot11f_pack_ie_time_advertisement( 7881 tpAniSirGlobal, 7882 tDot11fIETimeAdvertisement *, 7883 uint8_t *, 7884 uint32_t, 7885 uint32_t*); 7886 7887 uint32_t dot11f_get_packed_ie_time_advertisement( 7888 tpAniSirGlobal, 7889 tDot11fIETimeAdvertisement *, 7890 uint32_t*); 7891 7892 #ifdef __cplusplus 7893 }; /* End extern "C". */ 7894 #endif /* C++ */ 7895 7896 /* EID 56 (0x38) */ 7897 typedef struct sDot11fIETimeoutInterval { 7898 uint8_t present; 7899 uint8_t timeoutType; 7900 uint32_t timeoutValue; 7901 } tDot11fIETimeoutInterval; 7902 7903 #define DOT11F_EID_TIMEOUTINTERVAL (56) 7904 7905 /* N.B. These #defines do *not* include the EID & length */ 7906 #define DOT11F_IE_TIMEOUTINTERVAL_MIN_LEN (5) 7907 7908 #define DOT11F_IE_TIMEOUTINTERVAL_MAX_LEN (5) 7909 7910 #ifdef __cplusplus 7911 extern "C" { 7912 #endif /* C++ */ 7913 __must_check uint32_t dot11f_unpack_ie_timeout_interval( 7914 tpAniSirGlobal, 7915 uint8_t *, 7916 uint8_t, 7917 tDot11fIETimeoutInterval*, 7918 bool); 7919 7920 uint32_t dot11f_pack_ie_timeout_interval( 7921 tpAniSirGlobal, 7922 tDot11fIETimeoutInterval *, 7923 uint8_t *, 7924 uint32_t, 7925 uint32_t*); 7926 7927 uint32_t dot11f_get_packed_ie_TimeoutInterval( 7928 tpAniSirGlobal, 7929 tDot11fIETimeoutInterval *, 7930 uint32_t*); 7931 7932 #ifdef __cplusplus 7933 }; /* End extern "C". */ 7934 #endif /* C++ */ 7935 7936 /* EID 193 (0xc1) */ 7937 typedef struct sDot11fIEVHTExtBssLoad { 7938 uint8_t present; 7939 uint8_t muMIMOCapStaCount; 7940 uint8_t ssUnderUtil; 7941 uint8_t FortyMHzUtil; 7942 uint8_t EightyMHzUtil; 7943 uint8_t OneSixtyMHzUtil; 7944 } tDot11fIEVHTExtBssLoad; 7945 7946 #define DOT11F_EID_VHTEXTBSSLOAD (193) 7947 7948 /* N.B. These #defines do *not* include the EID & length */ 7949 #define DOT11F_IE_VHTEXTBSSLOAD_MIN_LEN (5) 7950 7951 #define DOT11F_IE_VHTEXTBSSLOAD_MAX_LEN (5) 7952 7953 #ifdef __cplusplus 7954 extern "C" { 7955 #endif /* C++ */ 7956 __must_check uint32_t dot11f_unpack_ie_vht_ext_bss_load( 7957 tpAniSirGlobal, 7958 uint8_t *, 7959 uint8_t, 7960 tDot11fIEVHTExtBssLoad*, 7961 bool); 7962 7963 uint32_t dot11f_pack_ie_vht_ext_bss_load( 7964 tpAniSirGlobal, 7965 tDot11fIEVHTExtBssLoad *, 7966 uint8_t *, 7967 uint32_t, 7968 uint32_t*); 7969 7970 uint32_t dot11f_get_packed_ie_VHTExtBssLoad( 7971 tpAniSirGlobal, 7972 tDot11fIEVHTExtBssLoad *, 7973 uint32_t*); 7974 7975 #ifdef __cplusplus 7976 }; /* End extern "C". */ 7977 #endif /* C++ */ 7978 7979 /* EID 221 (0xdd) {OUI 0x00, 0x10, 0x18} */ 7980 typedef struct sDot11fIEVendor1IE { 7981 uint8_t present; 7982 } tDot11fIEVendor1IE; 7983 7984 #define DOT11F_EID_VENDOR1IE (221) 7985 7986 /* N.B. These #defines do *not* include the EID & length */ 7987 #define DOT11F_IE_VENDOR1IE_MIN_LEN (3) 7988 7989 #define DOT11F_IE_VENDOR1IE_MAX_LEN (3) 7990 7991 #ifdef __cplusplus 7992 extern "C" { 7993 #endif /* C++ */ 7994 __must_check uint32_t dot11f_unpack_ie_vendor1_ie( 7995 tpAniSirGlobal, 7996 uint8_t *, 7997 uint8_t, 7998 tDot11fIEVendor1IE*, 7999 bool); 8000 8001 uint32_t dot11f_pack_ie_vendor1_ie( 8002 tpAniSirGlobal, 8003 tDot11fIEVendor1IE *, 8004 uint8_t *, 8005 uint32_t, 8006 uint32_t*); 8007 8008 uint32_t dot11f_get_packed_ie_Vendor1IE( 8009 tpAniSirGlobal, 8010 tDot11fIEVendor1IE *, 8011 uint32_t*); 8012 8013 #ifdef __cplusplus 8014 }; /* End extern "C". */ 8015 #endif /* C++ */ 8016 8017 /* EID 221 (0xdd) {OUI 0x00, 0x16, 0x32} */ 8018 typedef struct sDot11fIEVendor3IE { 8019 uint8_t present; 8020 } tDot11fIEVendor3IE; 8021 8022 #define DOT11F_EID_VENDOR3IE (221) 8023 8024 /* N.B. These #defines do *not* include the EID & length */ 8025 #define DOT11F_IE_VENDOR3IE_MIN_LEN (3) 8026 8027 #define DOT11F_IE_VENDOR3IE_MAX_LEN (3) 8028 8029 #ifdef __cplusplus 8030 extern "C" { 8031 #endif /* C++ */ 8032 __must_check uint32_t dot11f_unpack_ie_vendor3_ie( 8033 tpAniSirGlobal, 8034 uint8_t *, 8035 uint8_t, 8036 tDot11fIEVendor3IE*, 8037 bool); 8038 8039 uint32_t dot11f_pack_ie_vendor3_ie( 8040 tpAniSirGlobal, 8041 tDot11fIEVendor3IE *, 8042 uint8_t *, 8043 uint32_t, 8044 uint32_t*); 8045 8046 uint32_t dot11f_get_packed_ie_Vendor3IE( 8047 tpAniSirGlobal, 8048 tDot11fIEVendor3IE *, 8049 uint32_t*); 8050 8051 #ifdef __cplusplus 8052 }; /* End extern "C". */ 8053 #endif /* C++ */ 8054 8055 /* EID 68 (0x44) */ 8056 typedef struct sDot11fIEWAPI { 8057 uint8_t present; 8058 uint16_t version /* Must be 1! */; 8059 uint16_t akm_suite_count; 8060 uint8_t akm_suites[4][4]; 8061 uint16_t unicast_cipher_suite_count; 8062 uint8_t unicast_cipher_suites[4][4]; 8063 uint8_t multicast_cipher_suite[4]; 8064 uint16_t preauth:1; 8065 uint16_t reserved:15; 8066 uint16_t bkid_count; 8067 uint8_t bkid[4][16]; 8068 } tDot11fIEWAPI; 8069 8070 #define DOT11F_EID_WAPI (68) 8071 8072 /* N.B. These #defines do *not* include the EID & length */ 8073 #define DOT11F_IE_WAPI_MIN_LEN (12) 8074 8075 #define DOT11F_IE_WAPI_MAX_LEN (110) 8076 8077 #ifdef __cplusplus 8078 extern "C" { 8079 #endif /* C++ */ 8080 __must_check uint32_t dot11f_unpack_ie_wapi( 8081 tpAniSirGlobal, 8082 uint8_t *, 8083 uint8_t, 8084 tDot11fIEWAPI*, 8085 bool); 8086 8087 uint32_t dot11f_pack_ie_wapi( 8088 tpAniSirGlobal, 8089 tDot11fIEWAPI *, 8090 uint8_t *, 8091 uint32_t, 8092 uint32_t*); 8093 8094 uint32_t dot11f_get_packed_iewapi( 8095 tpAniSirGlobal, 8096 tDot11fIEWAPI *, 8097 uint32_t*); 8098 8099 #ifdef __cplusplus 8100 }; /* End extern "C". */ 8101 #endif /* C++ */ 8102 8103 /* EID 68 (0x44) */ 8104 typedef struct sDot11fIEWAPIOpaque { 8105 uint8_t present; 8106 uint8_t num_data; 8107 uint8_t data[253]; 8108 } tDot11fIEWAPIOpaque; 8109 8110 #define DOT11F_EID_WAPIOPAQUE (68) 8111 8112 /* N.B. These #defines do *not* include the EID & length */ 8113 #define DOT11F_IE_WAPIOPAQUE_MIN_LEN (6) 8114 8115 #define DOT11F_IE_WAPIOPAQUE_MAX_LEN (253) 8116 8117 #ifdef __cplusplus 8118 extern "C" { 8119 #endif /* C++ */ 8120 __must_check uint32_t dot11f_unpack_ie_wapi_opaque( 8121 tpAniSirGlobal, 8122 uint8_t *, 8123 uint8_t, 8124 tDot11fIEWAPIOpaque*, 8125 bool); 8126 8127 uint32_t dot11f_pack_ie_wapi_opaque( 8128 tpAniSirGlobal, 8129 tDot11fIEWAPIOpaque *, 8130 uint8_t *, 8131 uint32_t, 8132 uint32_t*); 8133 8134 uint32_t dot11f_get_packed_iewapiOpaque( 8135 tpAniSirGlobal, 8136 tDot11fIEWAPIOpaque *, 8137 uint32_t*); 8138 8139 #ifdef __cplusplus 8140 }; /* End extern "C". */ 8141 #endif /* C++ */ 8142 8143 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x08, 0x00} */ 8144 typedef struct sDot11fIEWFATPC { 8145 uint8_t present; 8146 uint8_t txPower; 8147 uint8_t linkMargin; 8148 } tDot11fIEWFATPC; 8149 8150 #define DOT11F_EID_WFATPC (221) 8151 8152 /* N.B. These #defines do *not* include the EID & length */ 8153 #define DOT11F_IE_WFATPC_MIN_LEN (7) 8154 8155 #define DOT11F_IE_WFATPC_MAX_LEN (7) 8156 8157 #ifdef __cplusplus 8158 extern "C" { 8159 #endif /* C++ */ 8160 __must_check uint32_t dot11f_unpack_ie_wfatpc( 8161 tpAniSirGlobal, 8162 uint8_t *, 8163 uint8_t, 8164 tDot11fIEWFATPC*, 8165 bool); 8166 8167 uint32_t dot11f_pack_ie_wfatpc( 8168 tpAniSirGlobal, 8169 tDot11fIEWFATPC *, 8170 uint8_t *, 8171 uint32_t, 8172 uint32_t*); 8173 8174 uint32_t dot11f_get_packed_ie_WFATPC( 8175 tpAniSirGlobal, 8176 tDot11fIEWFATPC *, 8177 uint32_t*); 8178 8179 #ifdef __cplusplus 8180 }; /* End extern "C". */ 8181 #endif /* C++ */ 8182 8183 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x0a} */ 8184 typedef struct sDot11fIEWFDIEOpaque { 8185 uint8_t present; 8186 uint8_t num_data; 8187 uint8_t data[249]; 8188 } tDot11fIEWFDIEOpaque; 8189 8190 #define DOT11F_EID_WFDIEOPAQUE (221) 8191 8192 /* N.B. These #defines do *not* include the EID & length */ 8193 #define DOT11F_IE_WFDIEOPAQUE_MIN_LEN (6) 8194 8195 #define DOT11F_IE_WFDIEOPAQUE_MAX_LEN (253) 8196 8197 #ifdef __cplusplus 8198 extern "C" { 8199 #endif /* C++ */ 8200 __must_check uint32_t dot11f_unpack_ie_wfdie_opaque( 8201 tpAniSirGlobal, 8202 uint8_t *, 8203 uint8_t, 8204 tDot11fIEWFDIEOpaque*, 8205 bool); 8206 8207 uint32_t dot11f_pack_ie_wfdie_opaque( 8208 tpAniSirGlobal, 8209 tDot11fIEWFDIEOpaque *, 8210 uint8_t *, 8211 uint32_t, 8212 uint32_t*); 8213 8214 uint32_t dot11f_get_packed_ie_WFDIEOpaque( 8215 tpAniSirGlobal, 8216 tDot11fIEWFDIEOpaque *, 8217 uint32_t*); 8218 8219 #ifdef __cplusplus 8220 }; /* End extern "C". */ 8221 #endif /* C++ */ 8222 8223 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x05} */ 8224 typedef struct sDot11fIEWMMCaps { 8225 uint8_t present; 8226 uint8_t version /* Must be 1! */; 8227 uint8_t reserved:4; 8228 uint8_t qack:1; 8229 uint8_t queue_request:1; 8230 uint8_t txop_request:1; 8231 uint8_t more_ack:1; 8232 } tDot11fIEWMMCaps; 8233 8234 #define DOT11F_EID_WMMCAPS (221) 8235 8236 /* N.B. These #defines do *not* include the EID & length */ 8237 #define DOT11F_IE_WMMCAPS_MIN_LEN (7) 8238 8239 #define DOT11F_IE_WMMCAPS_MAX_LEN (7) 8240 8241 #ifdef __cplusplus 8242 extern "C" { 8243 #endif /* C++ */ 8244 __must_check uint32_t dot11f_unpack_ie_wmm_caps( 8245 tpAniSirGlobal, 8246 uint8_t *, 8247 uint8_t, 8248 tDot11fIEWMMCaps*, 8249 bool); 8250 8251 uint32_t dot11f_pack_ie_wmm_caps( 8252 tpAniSirGlobal, 8253 tDot11fIEWMMCaps *, 8254 uint8_t *, 8255 uint32_t, 8256 uint32_t*); 8257 8258 uint32_t dot11f_get_packed_ie_WMMCaps( 8259 tpAniSirGlobal, 8260 tDot11fIEWMMCaps *, 8261 uint32_t*); 8262 8263 #ifdef __cplusplus 8264 }; /* End extern "C". */ 8265 #endif /* C++ */ 8266 8267 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */ 8268 typedef struct sDot11fIEWMMInfoAp { 8269 uint8_t present; 8270 uint8_t version; 8271 uint8_t param_set_count:4; 8272 uint8_t reserved:3; 8273 uint8_t uapsd:1; 8274 } tDot11fIEWMMInfoAp; 8275 8276 #define DOT11F_EID_WMMINFOAP (221) 8277 8278 /* N.B. These #defines do *not* include the EID & length */ 8279 #define DOT11F_IE_WMMINFOAP_MIN_LEN (7) 8280 8281 #define DOT11F_IE_WMMINFOAP_MAX_LEN (7) 8282 8283 #ifdef __cplusplus 8284 extern "C" { 8285 #endif /* C++ */ 8286 __must_check uint32_t dot11f_unpack_ie_wmm_info_ap( 8287 tpAniSirGlobal, 8288 uint8_t *, 8289 uint8_t, 8290 tDot11fIEWMMInfoAp*, 8291 bool); 8292 8293 uint32_t dot11f_pack_ie_wmm_info_ap( 8294 tpAniSirGlobal, 8295 tDot11fIEWMMInfoAp *, 8296 uint8_t *, 8297 uint32_t, 8298 uint32_t*); 8299 8300 uint32_t dot11f_get_packed_ie_WMMInfoAp( 8301 tpAniSirGlobal, 8302 tDot11fIEWMMInfoAp *, 8303 uint32_t*); 8304 8305 #ifdef __cplusplus 8306 }; /* End extern "C". */ 8307 #endif /* C++ */ 8308 8309 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x00} */ 8310 typedef struct sDot11fIEWMMInfoStation { 8311 uint8_t present; 8312 uint8_t version; 8313 uint8_t acvo_uapsd:1; 8314 uint8_t acvi_uapsd:1; 8315 uint8_t acbk_uapsd:1; 8316 uint8_t acbe_uapsd:1; 8317 uint8_t reserved1:1; 8318 uint8_t max_sp_length:2; 8319 uint8_t reserved2:1; 8320 } tDot11fIEWMMInfoStation; 8321 8322 #define DOT11F_EID_WMMINFOSTATION (221) 8323 8324 /* N.B. These #defines do *not* include the EID & length */ 8325 #define DOT11F_IE_WMMINFOSTATION_MIN_LEN (7) 8326 8327 #define DOT11F_IE_WMMINFOSTATION_MAX_LEN (7) 8328 8329 #ifdef __cplusplus 8330 extern "C" { 8331 #endif /* C++ */ 8332 __must_check uint32_t dot11f_unpack_ie_wmm_info_station( 8333 tpAniSirGlobal, 8334 uint8_t *, 8335 uint8_t, 8336 tDot11fIEWMMInfoStation*, 8337 bool); 8338 8339 uint32_t dot11f_pack_ie_wmm_info_station( 8340 tpAniSirGlobal, 8341 tDot11fIEWMMInfoStation *, 8342 uint8_t *, 8343 uint32_t, 8344 uint32_t*); 8345 8346 uint32_t dot11f_get_packed_ie_WMMInfoStation( 8347 tpAniSirGlobal, 8348 tDot11fIEWMMInfoStation *, 8349 uint32_t*); 8350 8351 #ifdef __cplusplus 8352 }; /* End extern "C". */ 8353 #endif /* C++ */ 8354 8355 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x02, 0x01} */ 8356 typedef struct sDot11fIEWMMParams { 8357 uint8_t present; 8358 uint8_t version /* Must be 1! */; 8359 uint8_t qosInfo; 8360 uint8_t reserved2; 8361 uint8_t acbe_aifsn:4; 8362 uint8_t acbe_acm:1; 8363 uint8_t acbe_aci:2; 8364 uint8_t unused1:1; 8365 uint8_t acbe_acwmin:4; 8366 uint8_t acbe_acwmax:4; 8367 uint16_t acbe_txoplimit; 8368 uint8_t acbk_aifsn:4; 8369 uint8_t acbk_acm:1; 8370 uint8_t acbk_aci:2; 8371 uint8_t unused2:1; 8372 uint8_t acbk_acwmin:4; 8373 uint8_t acbk_acwmax:4; 8374 uint16_t acbk_txoplimit; 8375 uint8_t acvi_aifsn:4; 8376 uint8_t acvi_acm:1; 8377 uint8_t acvi_aci:2; 8378 uint8_t unused3:1; 8379 uint8_t acvi_acwmin:4; 8380 uint8_t acvi_acwmax:4; 8381 uint16_t acvi_txoplimit; 8382 uint8_t acvo_aifsn:4; 8383 uint8_t acvo_acm:1; 8384 uint8_t acvo_aci:2; 8385 uint8_t unused4:1; 8386 uint8_t acvo_acwmin:4; 8387 uint8_t acvo_acwmax:4; 8388 uint16_t acvo_txoplimit; 8389 } tDot11fIEWMMParams; 8390 8391 #define DOT11F_EID_WMMPARAMS (221) 8392 8393 /* N.B. These #defines do *not* include the EID & length */ 8394 #define DOT11F_IE_WMMPARAMS_MIN_LEN (24) 8395 8396 #define DOT11F_IE_WMMPARAMS_MAX_LEN (24) 8397 8398 #ifdef __cplusplus 8399 extern "C" { 8400 #endif /* C++ */ 8401 __must_check uint32_t dot11f_unpack_ie_wmm_params( 8402 tpAniSirGlobal, 8403 uint8_t *, 8404 uint8_t, 8405 tDot11fIEWMMParams*, 8406 bool); 8407 8408 uint32_t dot11f_pack_ie_wmm_params( 8409 tpAniSirGlobal, 8410 tDot11fIEWMMParams *, 8411 uint8_t *, 8412 uint32_t, 8413 uint32_t*); 8414 8415 uint32_t dot11f_get_packed_ie_WMMParams( 8416 tpAniSirGlobal, 8417 tDot11fIEWMMParams *, 8418 uint32_t*); 8419 8420 #ifdef __cplusplus 8421 }; /* End extern "C". */ 8422 #endif /* C++ */ 8423 8424 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */ 8425 typedef struct sDot11fIEWPA { 8426 uint8_t present; 8427 uint16_t version /* Must be 1! */; 8428 /* field added to fix the bug in dot11fPackIEWPA */ 8429 uint8_t multicast_cipher_present; 8430 uint8_t multicast_cipher[4]; 8431 uint16_t unicast_cipher_count; 8432 uint8_t unicast_ciphers[4][4]; 8433 uint16_t auth_suite_count; 8434 uint8_t auth_suites[4][4]; 8435 uint16_t caps; 8436 } tDot11fIEWPA; 8437 8438 #define DOT11F_EID_WPA (221) 8439 8440 /* N.B. These #defines do *not* include the EID & length */ 8441 #define DOT11F_IE_WPA_MIN_LEN (6) 8442 8443 #define DOT11F_IE_WPA_MAX_LEN (48) 8444 8445 #ifdef __cplusplus 8446 extern "C" { 8447 #endif /* C++ */ 8448 __must_check uint32_t dot11f_unpack_ie_wpa( 8449 tpAniSirGlobal, 8450 uint8_t *, 8451 uint8_t, 8452 tDot11fIEWPA*, 8453 bool); 8454 8455 uint32_t dot11f_pack_ie_wpa( 8456 tpAniSirGlobal, 8457 tDot11fIEWPA *, 8458 uint8_t *, 8459 uint32_t, 8460 uint32_t*); 8461 8462 uint32_t dot11f_get_packed_iewpa( 8463 tpAniSirGlobal, 8464 tDot11fIEWPA *, 8465 uint32_t*); 8466 8467 #ifdef __cplusplus 8468 }; /* End extern "C". */ 8469 #endif /* C++ */ 8470 8471 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x01} */ 8472 typedef struct sDot11fIEWPAOpaque { 8473 uint8_t present; 8474 uint8_t num_data; 8475 uint8_t data[249]; 8476 } tDot11fIEWPAOpaque; 8477 8478 #define DOT11F_EID_WPAOPAQUE (221) 8479 8480 /* N.B. These #defines do *not* include the EID & length */ 8481 #define DOT11F_IE_WPAOPAQUE_MIN_LEN (6) 8482 8483 #define DOT11F_IE_WPAOPAQUE_MAX_LEN (253) 8484 8485 #ifdef __cplusplus 8486 extern "C" { 8487 #endif /* C++ */ 8488 __must_check uint32_t dot11f_unpack_ie_wpa_opaque( 8489 tpAniSirGlobal, 8490 uint8_t *, 8491 uint8_t, 8492 tDot11fIEWPAOpaque*, 8493 bool); 8494 8495 uint32_t dot11f_pack_ie_wpa_opaque( 8496 tpAniSirGlobal, 8497 tDot11fIEWPAOpaque *, 8498 uint8_t *, 8499 uint32_t, 8500 uint32_t*); 8501 8502 uint32_t dot11f_get_packed_iewpaOpaque( 8503 tpAniSirGlobal, 8504 tDot11fIEWPAOpaque *, 8505 uint32_t*); 8506 8507 #ifdef __cplusplus 8508 }; /* End extern "C". */ 8509 #endif /* C++ */ 8510 8511 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 8512 typedef struct sDot11fIEWSC { 8513 uint8_t present; 8514 tDot11fTLVVersion Version; 8515 tDot11fTLVWPSState WPSState; 8516 tDot11fTLVAPSetupLocked APSetupLocked; 8517 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods; 8518 tDot11fTLVUUID_E UUID_E; 8519 tDot11fTLVUUID_R UUID_R; 8520 tDot11fTLVRFBands RFBands; 8521 tDot11fTLVSelectedRegistrar SelectedRegistrar; 8522 tDot11fTLVConfigMethods ConfigMethods; 8523 tDot11fTLVAssociationState AssociationState; 8524 tDot11fTLVConfigurationError ConfigurationError; 8525 tDot11fTLVManufacturer Manufacturer; 8526 tDot11fTLVModelName ModelName; 8527 tDot11fTLVModelNumber ModelNumber; 8528 tDot11fTLVSerialNumber SerialNumber; 8529 tDot11fTLVDeviceName DeviceName; 8530 tDot11fTLVDevicePasswordID DevicePasswordID; 8531 tDot11fTLVPrimaryDeviceType PrimaryDeviceType; 8532 tDot11fTLVRequestType RequestType; 8533 tDot11fTLVResponseType ResponseType; 8534 tDot11fTLVVendorExtension VendorExtension; 8535 tDot11fTLVRequestDeviceType RequestDeviceType; 8536 } tDot11fIEWSC; 8537 8538 #define DOT11F_EID_WSC (221) 8539 8540 /* N.B. These #defines do *not* include the EID & length */ 8541 #define DOT11F_IE_WSC_MIN_LEN (4) 8542 8543 #define DOT11F_IE_WSC_MAX_LEN (366) 8544 8545 #ifdef __cplusplus 8546 extern "C" { 8547 #endif /* C++ */ 8548 __must_check uint32_t dot11f_unpack_ie_wsc( 8549 tpAniSirGlobal, 8550 uint8_t *, 8551 uint8_t, 8552 tDot11fIEWSC*, 8553 bool); 8554 8555 uint32_t dot11f_pack_ie_wsc( 8556 tpAniSirGlobal, 8557 tDot11fIEWSC *, 8558 uint8_t *, 8559 uint32_t, 8560 uint32_t*); 8561 8562 uint32_t dot11f_get_packed_iewsc( 8563 tpAniSirGlobal, 8564 tDot11fIEWSC *, 8565 uint32_t*); 8566 8567 #ifdef __cplusplus 8568 }; /* End extern "C". */ 8569 #endif /* C++ */ 8570 8571 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 8572 typedef struct sDot11fIEWscAssocReq { 8573 uint8_t present; 8574 tDot11fTLVVersion Version; 8575 tDot11fTLVRequestType RequestType; 8576 tDot11fTLVVendorExtension VendorExtension; 8577 } tDot11fIEWscAssocReq; 8578 8579 #define DOT11F_EID_WSCASSOCREQ (221) 8580 8581 /* N.B. These #defines do *not* include the EID & length */ 8582 #define DOT11F_IE_WSCASSOCREQ_MIN_LEN (4) 8583 8584 #define DOT11F_IE_WSCASSOCREQ_MAX_LEN (35) 8585 8586 #ifdef __cplusplus 8587 extern "C" { 8588 #endif /* C++ */ 8589 __must_check uint32_t dot11f_unpack_ie_wsc_assoc_req( 8590 tpAniSirGlobal, 8591 uint8_t *, 8592 uint8_t, 8593 tDot11fIEWscAssocReq*, 8594 bool); 8595 8596 uint32_t dot11f_pack_ie_wsc_assoc_req( 8597 tpAniSirGlobal, 8598 tDot11fIEWscAssocReq *, 8599 uint8_t *, 8600 uint32_t, 8601 uint32_t*); 8602 8603 uint32_t dot11f_get_packed_ie_wsc_assoc_req( 8604 tpAniSirGlobal, 8605 tDot11fIEWscAssocReq *, 8606 uint32_t*); 8607 8608 #ifdef __cplusplus 8609 }; /* End extern "C". */ 8610 #endif /* C++ */ 8611 8612 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 8613 typedef struct sDot11fIEWscAssocRes { 8614 uint8_t present; 8615 tDot11fTLVVersion Version; 8616 tDot11fTLVResponseType ResponseType; 8617 tDot11fTLVVendorExtension VendorExtension; 8618 } tDot11fIEWscAssocRes; 8619 8620 #define DOT11F_EID_WSCASSOCRES (221) 8621 8622 /* N.B. These #defines do *not* include the EID & length */ 8623 #define DOT11F_IE_WSCASSOCRES_MIN_LEN (4) 8624 8625 #define DOT11F_IE_WSCASSOCRES_MAX_LEN (35) 8626 8627 #ifdef __cplusplus 8628 extern "C" { 8629 #endif /* C++ */ 8630 __must_check uint32_t dot11f_unpack_ie_wsc_assoc_res( 8631 tpAniSirGlobal, 8632 uint8_t *, 8633 uint8_t, 8634 tDot11fIEWscAssocRes*, 8635 bool); 8636 8637 uint32_t dot11f_pack_ie_wsc_assoc_res( 8638 tpAniSirGlobal, 8639 tDot11fIEWscAssocRes *, 8640 uint8_t *, 8641 uint32_t, 8642 uint32_t*); 8643 8644 uint32_t dot11f_get_packed_ie_wsc_assoc_res( 8645 tpAniSirGlobal, 8646 tDot11fIEWscAssocRes *, 8647 uint32_t*); 8648 8649 #ifdef __cplusplus 8650 }; /* End extern "C". */ 8651 #endif /* C++ */ 8652 8653 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 8654 typedef struct sDot11fIEWscBeacon { 8655 uint8_t present; 8656 tDot11fTLVVersion Version; 8657 tDot11fTLVWPSState WPSState; 8658 tDot11fTLVAPSetupLocked APSetupLocked; 8659 tDot11fTLVSelectedRegistrar SelectedRegistrar; 8660 tDot11fTLVDevicePasswordID DevicePasswordID; 8661 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods; 8662 tDot11fTLVUUID_E UUID_E; 8663 tDot11fTLVRFBands RFBands; 8664 tDot11fTLVVendorExtension VendorExtension; 8665 } tDot11fIEWscBeacon; 8666 8667 #define DOT11F_EID_WSCBEACON (221) 8668 8669 /* N.B. These #defines do *not* include the EID & length */ 8670 #define DOT11F_IE_WSCBEACON_MIN_LEN (4) 8671 8672 #define DOT11F_IE_WSCBEACON_MAX_LEN (82) 8673 8674 #ifdef __cplusplus 8675 extern "C" { 8676 #endif /* C++ */ 8677 __must_check uint32_t dot11f_unpack_ie_wsc_beacon( 8678 tpAniSirGlobal, 8679 uint8_t *, 8680 uint8_t, 8681 tDot11fIEWscBeacon*, 8682 bool); 8683 8684 uint32_t dot11f_pack_ie_wsc_beacon( 8685 tpAniSirGlobal, 8686 tDot11fIEWscBeacon *, 8687 uint8_t *, 8688 uint32_t, 8689 uint32_t*); 8690 8691 uint32_t dot11f_get_packed_ie_wsc_beacon( 8692 tpAniSirGlobal, 8693 tDot11fIEWscBeacon *, 8694 uint32_t*); 8695 8696 #ifdef __cplusplus 8697 }; /* End extern "C". */ 8698 #endif /* C++ */ 8699 8700 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 8701 typedef struct sDot11fIEWscBeaconProbeRes { 8702 uint8_t present; 8703 tDot11fTLVVersion Version; 8704 tDot11fTLVWPSState WPSState; 8705 tDot11fTLVAPSetupLocked APSetupLocked; 8706 tDot11fTLVSelectedRegistrar SelectedRegistrar; 8707 tDot11fTLVDevicePasswordID DevicePasswordID; 8708 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods; 8709 tDot11fTLVResponseType ResponseType; 8710 tDot11fTLVUUID_E UUID_E; 8711 tDot11fTLVManufacturer Manufacturer; 8712 tDot11fTLVModelName ModelName; 8713 tDot11fTLVModelNumber ModelNumber; 8714 tDot11fTLVSerialNumber SerialNumber; 8715 tDot11fTLVPrimaryDeviceType PrimaryDeviceType; 8716 tDot11fTLVDeviceName DeviceName; 8717 tDot11fTLVConfigMethods ConfigMethods; 8718 tDot11fTLVRFBands RFBands; 8719 tDot11fTLVVendorExtension VendorExtension; 8720 } tDot11fIEWscBeaconProbeRes; 8721 8722 #define DOT11F_EID_WSCBEACONPROBERES (221) 8723 8724 /* N.B. These #defines do *not* include the EID & length */ 8725 #define DOT11F_IE_WSCBEACONPROBERES_MIN_LEN (4) 8726 8727 #define DOT11F_IE_WSCBEACONPROBERES_MAX_LEN (317) 8728 8729 #ifdef __cplusplus 8730 extern "C" { 8731 #endif /* C++ */ 8732 __must_check uint32_t dot11f_unpack_ie_wsc_beacon_probe_res( 8733 tpAniSirGlobal, 8734 uint8_t *, 8735 uint8_t, 8736 tDot11fIEWscBeaconProbeRes*, 8737 bool); 8738 8739 uint32_t dot11f_pack_ie_wsc_beacon_probe_res( 8740 tpAniSirGlobal, 8741 tDot11fIEWscBeaconProbeRes *, 8742 uint8_t *, 8743 uint32_t, 8744 uint32_t*); 8745 8746 uint32_t dot11f_get_packed_ie_wsc_beacon_probe_res( 8747 tpAniSirGlobal, 8748 tDot11fIEWscBeaconProbeRes *, 8749 uint32_t*); 8750 8751 #ifdef __cplusplus 8752 }; /* End extern "C". */ 8753 #endif /* C++ */ 8754 8755 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} */ 8756 typedef struct sDot11fIEWscIEOpaque { 8757 uint8_t present; 8758 uint8_t num_data; 8759 uint8_t data[249]; 8760 } tDot11fIEWscIEOpaque; 8761 8762 #define DOT11F_EID_WSCIEOPAQUE (221) 8763 8764 /* N.B. These #defines do *not* include the EID & length */ 8765 #define DOT11F_IE_WSCIEOPAQUE_MIN_LEN (6) 8766 8767 #define DOT11F_IE_WSCIEOPAQUE_MAX_LEN (253) 8768 8769 #ifdef __cplusplus 8770 extern "C" { 8771 #endif /* C++ */ 8772 __must_check uint32_t dot11f_unpack_ie_wsc_ie_opaque( 8773 tpAniSirGlobal, 8774 uint8_t *, 8775 uint8_t, 8776 tDot11fIEWscIEOpaque*, 8777 bool); 8778 8779 uint32_t dot11f_pack_ie_wsc_ie_opaque( 8780 tpAniSirGlobal, 8781 tDot11fIEWscIEOpaque *, 8782 uint8_t *, 8783 uint32_t, 8784 uint32_t*); 8785 8786 uint32_t dot11f_get_packed_ie_WscIEOpaque( 8787 tpAniSirGlobal, 8788 tDot11fIEWscIEOpaque *, 8789 uint32_t*); 8790 8791 #ifdef __cplusplus 8792 }; /* End extern "C". */ 8793 #endif /* C++ */ 8794 8795 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 8796 typedef struct sDot11fIEWscProbeReq { 8797 uint8_t present; 8798 tDot11fTLVVersion Version; 8799 tDot11fTLVRequestType RequestType; 8800 tDot11fTLVConfigMethods ConfigMethods; 8801 tDot11fTLVUUID_E UUID_E; 8802 tDot11fTLVPrimaryDeviceType PrimaryDeviceType; 8803 tDot11fTLVRFBands RFBands; 8804 tDot11fTLVAssociationState AssociationState; 8805 tDot11fTLVConfigurationError ConfigurationError; 8806 tDot11fTLVDevicePasswordID DevicePasswordID; 8807 tDot11fTLVManufacturer Manufacturer; 8808 tDot11fTLVModelName ModelName; 8809 tDot11fTLVModelNumber ModelNumber; 8810 tDot11fTLVDeviceName DeviceName; 8811 tDot11fTLVVendorExtension VendorExtension; 8812 tDot11fTLVRequestDeviceType RequestDeviceType; 8813 } tDot11fIEWscProbeReq; 8814 8815 #define DOT11F_EID_WSCPROBEREQ (221) 8816 8817 /* N.B. These #defines do *not* include the EID & length */ 8818 #define DOT11F_IE_WSCPROBEREQ_MIN_LEN (4) 8819 8820 #define DOT11F_IE_WSCPROBEREQ_MAX_LEN (284) 8821 8822 #ifdef __cplusplus 8823 extern "C" { 8824 #endif /* C++ */ 8825 __must_check uint32_t dot11f_unpack_ie_wsc_probe_req( 8826 tpAniSirGlobal, 8827 uint8_t *, 8828 uint8_t, 8829 tDot11fIEWscProbeReq*, 8830 bool); 8831 8832 uint32_t dot11f_pack_ie_wsc_probe_req( 8833 tpAniSirGlobal, 8834 tDot11fIEWscProbeReq *, 8835 uint8_t *, 8836 uint32_t, 8837 uint32_t*); 8838 8839 uint32_t dot11f_get_packed_ie_wsc_probe_req( 8840 tpAniSirGlobal, 8841 tDot11fIEWscProbeReq *, 8842 uint32_t*); 8843 8844 #ifdef __cplusplus 8845 }; /* End extern "C". */ 8846 #endif /* C++ */ 8847 8848 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 8849 typedef struct sDot11fIEWscProbeRes { 8850 uint8_t present; 8851 tDot11fTLVVersion Version; 8852 tDot11fTLVWPSState WPSState; 8853 tDot11fTLVAPSetupLocked APSetupLocked; 8854 tDot11fTLVSelectedRegistrar SelectedRegistrar; 8855 tDot11fTLVDevicePasswordID DevicePasswordID; 8856 tDot11fTLVSelectedRegistrarConfigMethods SelectedRegistrarConfigMethods; 8857 tDot11fTLVResponseType ResponseType; 8858 tDot11fTLVUUID_E UUID_E; 8859 tDot11fTLVManufacturer Manufacturer; 8860 tDot11fTLVModelName ModelName; 8861 tDot11fTLVModelNumber ModelNumber; 8862 tDot11fTLVSerialNumber SerialNumber; 8863 tDot11fTLVPrimaryDeviceType PrimaryDeviceType; 8864 tDot11fTLVDeviceName DeviceName; 8865 tDot11fTLVConfigMethods ConfigMethods; 8866 tDot11fTLVRFBands RFBands; 8867 tDot11fTLVVendorExtension VendorExtension; 8868 } tDot11fIEWscProbeRes; 8869 8870 #define DOT11F_EID_WSCPROBERES (221) 8871 8872 /* N.B. These #defines do *not* include the EID & length */ 8873 #define DOT11F_IE_WSCPROBERES_MIN_LEN (4) 8874 8875 #define DOT11F_IE_WSCPROBERES_MAX_LEN (317) 8876 8877 #ifdef __cplusplus 8878 extern "C" { 8879 #endif /* C++ */ 8880 __must_check uint32_t dot11f_unpack_ie_wsc_probe_res( 8881 tpAniSirGlobal, 8882 uint8_t *, 8883 uint8_t, 8884 tDot11fIEWscProbeRes*, 8885 bool); 8886 8887 uint32_t dot11f_pack_ie_wsc_probe_res( 8888 tpAniSirGlobal, 8889 tDot11fIEWscProbeRes *, 8890 uint8_t *, 8891 uint32_t, 8892 uint32_t*); 8893 8894 uint32_t dot11f_get_packed_ie_wsc_probe_res( 8895 tpAniSirGlobal, 8896 tDot11fIEWscProbeRes *, 8897 uint32_t*); 8898 8899 #ifdef __cplusplus 8900 }; /* End extern "C". */ 8901 #endif /* C++ */ 8902 8903 /* EID 221 (0xdd) {OUI 0x00, 0x50, 0xf2, 0x04} (Multi-IE) */ 8904 typedef struct sDot11fIEWscReassocRes { 8905 uint8_t present; 8906 tDot11fTLVVersion Version; 8907 tDot11fTLVResponseType ResponseType; 8908 tDot11fTLVVendorExtension VendorExtension; 8909 } tDot11fIEWscReassocRes; 8910 8911 #define DOT11F_EID_WSCREASSOCRES (221) 8912 8913 /* N.B. These #defines do *not* include the EID & length */ 8914 #define DOT11F_IE_WSCREASSOCRES_MIN_LEN (4) 8915 8916 #define DOT11F_IE_WSCREASSOCRES_MAX_LEN (35) 8917 8918 #ifdef __cplusplus 8919 extern "C" { 8920 #endif /* C++ */ 8921 __must_check uint32_t dot11f_unpack_ie_wsc_reassoc_res( 8922 tpAniSirGlobal, 8923 uint8_t *, 8924 uint8_t, 8925 tDot11fIEWscReassocRes*, 8926 bool); 8927 8928 uint32_t dot11f_pack_ie_wsc_reassoc_res( 8929 tpAniSirGlobal, 8930 tDot11fIEWscReassocRes *, 8931 uint8_t *, 8932 uint32_t, 8933 uint32_t*); 8934 8935 uint32_t dot11f_get_packed_ie_wsc_reassoc_res( 8936 tpAniSirGlobal, 8937 tDot11fIEWscReassocRes *, 8938 uint32_t*); 8939 8940 #ifdef __cplusplus 8941 }; /* End extern "C". */ 8942 #endif /* C++ */ 8943 8944 /* EID 159 (0x9f) */ 8945 typedef struct sDot11fIEaddba_extn_element { 8946 uint8_t present; 8947 uint8_t no_fragmentation:1; 8948 uint8_t he_frag_operation:2; 8949 uint8_t reserved:2; 8950 uint8_t extd_buff_size:3; 8951 } tDot11fIEaddba_extn_element; 8952 8953 #define DOT11F_EID_ADDBA_EXTN_ELEMENT (159) 8954 8955 /* N.B. These #defines do *not* include the EID & length */ 8956 #define DOT11F_IE_ADDBA_EXTN_ELEMENT_MIN_LEN (1) 8957 8958 #define DOT11F_IE_ADDBA_EXTN_ELEMENT_MAX_LEN (1) 8959 8960 #ifdef __cplusplus 8961 extern "C" { 8962 #endif /* C++ */ 8963 __must_check uint32_t dot11f_unpack_ie_addba_extn_element( 8964 tpAniSirGlobal, 8965 uint8_t *, 8966 uint8_t, 8967 tDot11fIEaddba_extn_element*, 8968 bool); 8969 8970 uint32_t dot11f_pack_ie_addba_extn_element( 8971 tpAniSirGlobal, 8972 tDot11fIEaddba_extn_element *, 8973 uint8_t *, 8974 uint32_t, 8975 uint32_t*); 8976 8977 uint32_t dot11f_get_packed_ie_addba_extn_element( 8978 tpAniSirGlobal, 8979 tDot11fIEaddba_extn_element *, 8980 uint32_t*); 8981 8982 #ifdef __cplusplus 8983 }; /* End extern "C". */ 8984 #endif /* C++ */ 8985 8986 /* EID 255 (0xff) Extended EID 42 (0x2a) */ 8987 typedef struct sDot11fIEbss_color_change { 8988 uint8_t present; 8989 uint8_t countdown; 8990 uint8_t new_color:6; 8991 uint8_t reserved:2; 8992 } tDot11fIEbss_color_change; 8993 8994 #define DOT11F_EID_BSS_COLOR_CHANGE (255) 8995 8996 /* N.B. These #defines do *not* include the EID & length */ 8997 #define DOT11F_IE_BSS_COLOR_CHANGE_MIN_LEN (2) 8998 8999 #define DOT11F_IE_BSS_COLOR_CHANGE_MAX_LEN (2) 9000 9001 #ifdef __cplusplus 9002 extern "C" { 9003 #endif /* C++ */ 9004 __must_check uint32_t dot11f_unpack_ie_bss_color_change( 9005 tpAniSirGlobal, 9006 uint8_t *, 9007 uint8_t, 9008 tDot11fIEbss_color_change*, 9009 bool); 9010 9011 uint32_t dot11f_pack_ie_bss_color_change( 9012 tpAniSirGlobal, 9013 tDot11fIEbss_color_change *, 9014 uint8_t *, 9015 uint32_t, 9016 uint32_t*); 9017 9018 uint32_t dot11f_get_packed_ie_bss_color_change( 9019 tpAniSirGlobal, 9020 tDot11fIEbss_color_change *, 9021 uint32_t*); 9022 9023 #ifdef __cplusplus 9024 }; /* End extern "C". */ 9025 #endif /* C++ */ 9026 9027 /* EID 90 (0x5a) */ 9028 typedef struct sDot11fIEbss_max_idle_period { 9029 uint8_t present; 9030 uint16_t max_idle_period; 9031 uint8_t prot_keep_alive_reqd:1; 9032 uint8_t reserved:7; 9033 } tDot11fIEbss_max_idle_period; 9034 9035 #define DOT11F_EID_BSS_MAX_IDLE_PERIOD (90) 9036 9037 /* N.B. These #defines do *not* include the EID & length */ 9038 #define DOT11F_IE_BSS_MAX_IDLE_PERIOD_MIN_LEN (3) 9039 9040 #define DOT11F_IE_BSS_MAX_IDLE_PERIOD_MAX_LEN (3) 9041 9042 #ifdef __cplusplus 9043 extern "C" { 9044 #endif /* C++ */ 9045 __must_check uint32_t dot11f_unpack_ie_bss_max_idle_period( 9046 tpAniSirGlobal, 9047 uint8_t *, 9048 uint8_t, 9049 tDot11fIEbss_max_idle_period*, 9050 bool); 9051 9052 uint32_t dot11f_pack_ie_bss_max_idle_period( 9053 tpAniSirGlobal, 9054 tDot11fIEbss_max_idle_period *, 9055 uint8_t *, 9056 uint32_t, 9057 uint32_t*); 9058 9059 uint32_t dot11f_get_packed_ie_bss_max_idle_period( 9060 tpAniSirGlobal, 9061 tDot11fIEbss_max_idle_period *, 9062 uint32_t*); 9063 9064 #ifdef __cplusplus 9065 }; /* End extern "C". */ 9066 #endif /* C++ */ 9067 9068 /* EID 255 (0xff) Extended EID 88 (0x58) */ 9069 typedef struct sDot11fIEdescriptor_element { 9070 uint8_t present; 9071 uint8_t request_type; 9072 uint16_t user_priority_control; 9073 uint32_t stream_timeout; 9074 tDot11fIEtclas_mask tclas_mask; 9075 tDot11fIEmscs_status mscs_status; 9076 } tDot11fIEdescriptor_element; 9077 9078 #define DOT11F_EID_DESCRIPTOR_ELEMENT (255) 9079 9080 /* N.B. These #defines do *not* include the EID & length */ 9081 #define DOT11F_IE_DESCRIPTOR_ELEMENT_MIN_LEN (7) 9082 9083 #define DOT11F_IE_DESCRIPTOR_ELEMENT_MAX_LEN (30) 9084 9085 #ifdef __cplusplus 9086 extern "C" { 9087 #endif /* C++ */ 9088 __must_check uint32_t dot11f_unpack_ie_descriptor_element( 9089 tpAniSirGlobal, 9090 uint8_t *, 9091 uint8_t, 9092 tDot11fIEdescriptor_element*, 9093 bool); 9094 9095 uint32_t dot11f_pack_ie_descriptor_element( 9096 tpAniSirGlobal, 9097 tDot11fIEdescriptor_element *, 9098 uint8_t *, 9099 uint32_t, 9100 uint32_t*); 9101 9102 uint32_t dot11f_get_packed_ie_descriptor_element( 9103 tpAniSirGlobal, 9104 tDot11fIEdescriptor_element *, 9105 uint32_t*); 9106 9107 #ifdef __cplusplus 9108 }; /* End extern "C". */ 9109 #endif /* C++ */ 9110 9111 /* EID 255 (0xff) Extended EID 32 (0x20) */ 9112 typedef struct sDot11fIEdh_parameter_element { 9113 uint8_t present; 9114 uint8_t group[2]; 9115 uint8_t num_public_key; 9116 uint8_t public_key[255]; 9117 } tDot11fIEdh_parameter_element; 9118 9119 #define DOT11F_EID_DH_PARAMETER_ELEMENT (255) 9120 9121 /* N.B. These #defines do *not* include the EID & length */ 9122 #define DOT11F_IE_DH_PARAMETER_ELEMENT_MIN_LEN (2) 9123 9124 #define DOT11F_IE_DH_PARAMETER_ELEMENT_MAX_LEN (257) 9125 9126 #ifdef __cplusplus 9127 extern "C" { 9128 #endif /* C++ */ 9129 __must_check uint32_t dot11f_unpack_ie_dh_parameter_element( 9130 tpAniSirGlobal, 9131 uint8_t *, 9132 uint8_t, 9133 tDot11fIEdh_parameter_element*, 9134 bool); 9135 9136 uint32_t dot11f_pack_ie_dh_parameter_element( 9137 tpAniSirGlobal, 9138 tDot11fIEdh_parameter_element *, 9139 uint8_t *, 9140 uint32_t, 9141 uint32_t*); 9142 9143 uint32_t dot11f_get_packed_ie_dh_parameter_element( 9144 tpAniSirGlobal, 9145 tDot11fIEdh_parameter_element *, 9146 uint32_t*); 9147 9148 #ifdef __cplusplus 9149 }; /* End extern "C". */ 9150 #endif /* C++ */ 9151 9152 /* EID 255 (0xff) Extended EID 108 (0x6c) */ 9153 typedef struct sDot11fIEeht_cap { 9154 uint8_t present; 9155 uint16_t epcs_pri_access:1; 9156 uint16_t eht_om_ctl:1; 9157 uint16_t triggered_txop_sharing_mode1:1; 9158 uint16_t triggered_txop_sharing_mode2:1; 9159 uint16_t restricted_twt:1; 9160 uint16_t scs_traffic_desc:1; 9161 uint16_t max_mpdu_len:2; 9162 uint16_t max_a_mpdu_len_exponent_ext:1; 9163 uint16_t eht_trs_support:1; 9164 uint16_t txop_return_support_txop_share_m2:1; 9165 uint16_t two_bqrs_support:1; 9166 uint16_t eht_link_adaptation_support:2; 9167 uint16_t reserved:2; 9168 uint32_t reserved2:1; 9169 uint32_t support_320mhz_6ghz:1; 9170 uint32_t ru_242tone_wt_20mhz:1; 9171 uint32_t ndp_4x_eht_ltf_3dot2_us_gi:1; 9172 uint32_t partial_bw_mu_mimo:1; 9173 uint32_t su_beamformer:1; 9174 uint32_t su_beamformee:1; 9175 uint32_t bfee_ss_le_80mhz:3; 9176 uint32_t bfee_ss_160mhz:3; 9177 uint32_t bfee_ss_320mhz:3; 9178 uint32_t num_sounding_dim_le_80mhz:3; 9179 uint32_t num_sounding_dim_160mhz:3; 9180 uint32_t num_sounding_dim_320mhz:3; 9181 uint32_t ng_16_su_feedback:1; 9182 uint32_t ng_16_mu_feedback:1; 9183 uint32_t cb_sz_4_2_su_feedback:1; 9184 uint32_t cb_sz_7_5_su_feedback:1; 9185 uint32_t trig_su_bforming_feedback:1; 9186 uint32_t trig_mu_bforming_partial_bw_feedback:1; 9187 uint32_t triggered_cqi_feedback:1; 9188 uint32_t partial_bw_dl_mu_mimo:1; 9189 uint32_t psr_based_sr:1; 9190 uint32_t power_boost_factor:1; 9191 uint32_t eht_mu_ppdu_4x_ltf_0_8_us_gi:1; 9192 uint32_t max_nc:4; 9193 uint32_t non_trig_cqi_feedback:1; 9194 uint32_t tx_1024_4096_qam_lt_242_tone_ru:1; 9195 uint32_t rx_1024_4096_qam_lt_242_tone_ru:1; 9196 uint32_t ppet_present:1; 9197 uint32_t common_nominal_pkt_padding:2; 9198 uint32_t max_num_eht_ltf:5; 9199 uint32_t mcs_15:4; 9200 uint32_t eht_dup_6ghz:1; 9201 uint32_t op_sta_rx_ndp_wider_bw_20mhz:1; 9202 uint32_t non_ofdma_ul_mu_mimo_le_80mhz:1; 9203 uint32_t non_ofdma_ul_mu_mimo_160mhz:1; 9204 uint32_t non_ofdma_ul_mu_mimo_320mhz:1; 9205 uint32_t mu_bformer_le_80mhz:1; 9206 uint32_t mu_bformer_160mhz:1; 9207 uint32_t mu_bformer_320mhz:1; 9208 uint32_t tb_sounding_feedback_rl:1; 9209 uint8_t rx_1k_qam_in_wider_bw_dl_ofdma:1; 9210 uint8_t rx_4k_qam_in_wider_bw_dl_ofdma:1; 9211 uint8_t limited_cap_support_20mhz:1; 9212 uint8_t triggered_mu_bf_full_bw_fb_and_dl_mumimo:1; 9213 uint8_t mru_support_20mhz:1; 9214 uint8_t reserved3:3; 9215 uint32_t bw_20_rx_max_nss_for_mcs_0_to_7:4; 9216 uint32_t bw_20_tx_max_nss_for_mcs_0_to_7:4; 9217 uint32_t bw_20_rx_max_nss_for_mcs_8_and_9:4; 9218 uint32_t bw_20_tx_max_nss_for_mcs_8_and_9:4; 9219 uint32_t bw_20_rx_max_nss_for_mcs_10_and_11:4; 9220 uint32_t bw_20_tx_max_nss_for_mcs_10_and_11:4; 9221 uint32_t bw_20_rx_max_nss_for_mcs_12_and_13:4; 9222 uint32_t bw_20_tx_max_nss_for_mcs_12_and_13:4; 9223 uint32_t bw_le_80_rx_max_nss_for_mcs_0_to_9:4; 9224 uint32_t bw_le_80_tx_max_nss_for_mcs_0_to_9:4; 9225 uint32_t bw_le_80_rx_max_nss_for_mcs_10_and_11:4; 9226 uint32_t bw_le_80_tx_max_nss_for_mcs_10_and_11:4; 9227 uint32_t bw_le_80_rx_max_nss_for_mcs_12_and_13:4; 9228 uint32_t bw_le_80_tx_max_nss_for_mcs_12_and_13:4; 9229 uint32_t bw_160_rx_max_nss_for_mcs_0_to_9:4; 9230 uint32_t bw_160_tx_max_nss_for_mcs_0_to_9:4; 9231 uint32_t bw_160_rx_max_nss_for_mcs_10_and_11:4; 9232 uint32_t bw_160_tx_max_nss_for_mcs_10_and_11:4; 9233 uint32_t bw_160_rx_max_nss_for_mcs_12_and_13:4; 9234 uint32_t bw_160_tx_max_nss_for_mcs_12_and_13:4; 9235 uint32_t bw_320_rx_max_nss_for_mcs_0_to_9:4; 9236 uint32_t bw_320_tx_max_nss_for_mcs_0_to_9:4; 9237 uint32_t bw_320_rx_max_nss_for_mcs_10_and_11:4; 9238 uint32_t bw_320_tx_max_nss_for_mcs_10_and_11:4; 9239 uint8_t bw_320_rx_max_nss_for_mcs_12_and_13:4; 9240 uint8_t bw_320_tx_max_nss_for_mcs_12_and_13:4; 9241 union { 9242 struct { 9243 uint8_t num_ppe_th; 9244 uint8_t ppe_th[62]; 9245 } ppe_threshold; /* ppet_present = 1 */ 9246 } ppet; 9247 } tDot11fIEeht_cap; 9248 9249 #define DOT11F_EID_EHT_CAP (255) 9250 9251 /* N.B. These #defines do *not* include the EID & length */ 9252 #define DOT11F_IE_EHT_CAP_MIN_LEN (24) 9253 9254 #define DOT11F_IE_EHT_CAP_MAX_LEN (86) 9255 9256 #ifdef __cplusplus 9257 extern "C" { 9258 #endif /* C++ */ 9259 __must_check uint32_t dot11f_unpack_ie_eht_cap( 9260 tpAniSirGlobal, 9261 uint8_t *, 9262 uint8_t, 9263 tDot11fIEeht_cap*, 9264 bool); 9265 9266 uint32_t dot11f_pack_ie_eht_cap( 9267 tpAniSirGlobal, 9268 tDot11fIEeht_cap *, 9269 uint8_t *, 9270 uint32_t, 9271 uint32_t*); 9272 9273 uint32_t dot11f_get_packed_ie_eht_cap( 9274 tpAniSirGlobal, 9275 tDot11fIEeht_cap *, 9276 uint32_t*); 9277 9278 #ifdef __cplusplus 9279 }; /* End extern "C". */ 9280 #endif /* C++ */ 9281 9282 /* EID 255 (0xff) Extended EID 106 (0x6a) */ 9283 typedef struct sDot11fIEeht_op { 9284 uint8_t present; 9285 uint8_t eht_op_information_present:1; 9286 uint8_t disabled_sub_chan_bitmap_present:1; 9287 uint8_t eht_default_pe_duration:1; 9288 uint8_t group_addr_bu_indication_limit:1; 9289 uint8_t group_addr_bu_indication_exponent:2; 9290 uint8_t reserved:2; 9291 uint32_t basic_rx_max_nss_for_mcs_0_to_7:4; 9292 uint32_t basic_tx_max_nss_for_mcs_0_to_7:4; 9293 uint32_t basic_rx_max_nss_for_mcs_8_and_9:4; 9294 uint32_t basic_tx_max_nss_for_mcs_8_and_9:4; 9295 uint32_t basic_rx_max_nss_for_mcs_10_and_11:4; 9296 uint32_t basic_tx_max_nss_for_mcs_10_and_11:4; 9297 uint32_t basic_rx_max_nss_for_mcs_12_and_13:4; 9298 uint32_t basic_tx_max_nss_for_mcs_12_and_13:4; 9299 uint8_t channel_width:3; 9300 uint8_t reserved_1:5; 9301 uint8_t ccfs0; 9302 uint8_t ccfs1; 9303 uint8_t disabled_sub_chan_bitmap[1][2]; 9304 } tDot11fIEeht_op; 9305 9306 #define DOT11F_EID_EHT_OP (255) 9307 9308 /* N.B. These #defines do *not* include the EID & length */ 9309 #define DOT11F_IE_EHT_OP_MIN_LEN (8) 9310 9311 #define DOT11F_IE_EHT_OP_MAX_LEN (10) 9312 9313 #ifdef __cplusplus 9314 extern "C" { 9315 #endif /* C++ */ 9316 __must_check uint32_t dot11f_unpack_ie_eht_op( 9317 tpAniSirGlobal, 9318 uint8_t *, 9319 uint8_t, 9320 tDot11fIEeht_op*, 9321 bool); 9322 9323 uint32_t dot11f_pack_ie_eht_op( 9324 tpAniSirGlobal, 9325 tDot11fIEeht_op *, 9326 uint8_t *, 9327 uint32_t, 9328 uint32_t*); 9329 9330 uint32_t dot11f_get_packed_ie_eht_op( 9331 tpAniSirGlobal, 9332 tDot11fIEeht_op *, 9333 uint32_t*); 9334 9335 #ifdef __cplusplus 9336 }; /* End extern "C". */ 9337 #endif /* C++ */ 9338 9339 /* EID 255 (0xff) Extended EID 11 (0x0b) */ 9340 typedef struct sDot11fIEesp_information { 9341 uint8_t present; 9342 uint8_t num_data; 9343 uint8_t data[96]; 9344 } tDot11fIEesp_information; 9345 9346 #define DOT11F_EID_ESP_INFORMATION (255) 9347 9348 /* N.B. These #defines do *not* include the EID & length */ 9349 #define DOT11F_IE_ESP_INFORMATION_MIN_LEN (0) 9350 9351 #define DOT11F_IE_ESP_INFORMATION_MAX_LEN (96) 9352 9353 #ifdef __cplusplus 9354 extern "C" { 9355 #endif /* C++ */ 9356 __must_check uint32_t dot11f_unpack_ie_esp_information( 9357 tpAniSirGlobal, 9358 uint8_t *, 9359 uint8_t, 9360 tDot11fIEesp_information*, 9361 bool); 9362 9363 uint32_t dot11f_pack_ie_esp_information( 9364 tpAniSirGlobal, 9365 tDot11fIEesp_information *, 9366 uint8_t *, 9367 uint32_t, 9368 uint32_t*); 9369 9370 uint32_t dot11f_get_packed_ie_esp_information( 9371 tpAniSirGlobal, 9372 tDot11fIEesp_information *, 9373 uint32_t*); 9374 9375 #ifdef __cplusplus 9376 }; /* End extern "C". */ 9377 #endif /* C++ */ 9378 9379 /* EID 60 (0x3c) */ 9380 typedef struct sDot11fIEext_chan_switch_ann { 9381 uint8_t present; 9382 uint8_t switch_mode; 9383 uint8_t new_reg_class; 9384 uint8_t new_channel; 9385 uint8_t switch_count; 9386 } tDot11fIEext_chan_switch_ann; 9387 9388 #define DOT11F_EID_EXT_CHAN_SWITCH_ANN (60) 9389 9390 /* N.B. These #defines do *not* include the EID & length */ 9391 #define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MIN_LEN (4) 9392 9393 #define DOT11F_IE_EXT_CHAN_SWITCH_ANN_MAX_LEN (4) 9394 9395 #ifdef __cplusplus 9396 extern "C" { 9397 #endif /* C++ */ 9398 __must_check uint32_t dot11f_unpack_ie_ext_chan_switch_ann( 9399 tpAniSirGlobal, 9400 uint8_t *, 9401 uint8_t, 9402 tDot11fIEext_chan_switch_ann*, 9403 bool); 9404 9405 uint32_t dot11f_pack_ie_ext_chan_switch_ann( 9406 tpAniSirGlobal, 9407 tDot11fIEext_chan_switch_ann *, 9408 uint8_t *, 9409 uint32_t, 9410 uint32_t*); 9411 9412 uint32_t dot11f_get_packed_ie_ext_chan_switch_ann( 9413 tpAniSirGlobal, 9414 tDot11fIEext_chan_switch_ann *, 9415 uint32_t*); 9416 9417 #ifdef __cplusplus 9418 }; /* End extern "C". */ 9419 #endif /* C++ */ 9420 9421 /* EID 255 (0xff) Extended EID 1 (0x01) */ 9422 typedef struct sDot11fIEfils_assoc_delay_info { 9423 uint8_t present; 9424 uint8_t assoc_delay_info; 9425 } tDot11fIEfils_assoc_delay_info; 9426 9427 #define DOT11F_EID_FILS_ASSOC_DELAY_INFO (255) 9428 9429 /* N.B. These #defines do *not* include the EID & length */ 9430 #define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MIN_LEN (1) 9431 9432 #define DOT11F_IE_FILS_ASSOC_DELAY_INFO_MAX_LEN (1) 9433 9434 #ifdef __cplusplus 9435 extern "C" { 9436 #endif /* C++ */ 9437 __must_check uint32_t dot11f_unpack_ie_fils_assoc_delay_info( 9438 tpAniSirGlobal, 9439 uint8_t *, 9440 uint8_t, 9441 tDot11fIEfils_assoc_delay_info*, 9442 bool); 9443 9444 uint32_t dot11f_pack_ie_fils_assoc_delay_info( 9445 tpAniSirGlobal, 9446 tDot11fIEfils_assoc_delay_info *, 9447 uint8_t *, 9448 uint32_t, 9449 uint32_t*); 9450 9451 uint32_t dot11f_get_packed_ie_fils_assoc_delay_info( 9452 tpAniSirGlobal, 9453 tDot11fIEfils_assoc_delay_info *, 9454 uint32_t*); 9455 9456 #ifdef __cplusplus 9457 }; /* End extern "C". */ 9458 #endif /* C++ */ 9459 9460 /* EID 255 (0xff) Extended EID 5 (0x05) */ 9461 typedef struct sDot11fIEfils_hlp_container { 9462 uint8_t present; 9463 uint8_t dest_mac[6]; 9464 uint8_t src_mac[6]; 9465 uint8_t num_hlp_packet; 9466 uint8_t hlp_packet[255]; 9467 } tDot11fIEfils_hlp_container; 9468 9469 #define DOT11F_EID_FILS_HLP_CONTAINER (255) 9470 9471 /* N.B. These #defines do *not* include the EID & length */ 9472 #define DOT11F_IE_FILS_HLP_CONTAINER_MIN_LEN (12) 9473 9474 #define DOT11F_IE_FILS_HLP_CONTAINER_MAX_LEN (267) 9475 9476 #ifdef __cplusplus 9477 extern "C" { 9478 #endif /* C++ */ 9479 __must_check uint32_t dot11f_unpack_ie_fils_hlp_container( 9480 tpAniSirGlobal, 9481 uint8_t *, 9482 uint8_t, 9483 tDot11fIEfils_hlp_container*, 9484 bool); 9485 9486 uint32_t dot11f_pack_ie_fils_hlp_container( 9487 tpAniSirGlobal, 9488 tDot11fIEfils_hlp_container *, 9489 uint8_t *, 9490 uint32_t, 9491 uint32_t*); 9492 9493 uint32_t dot11f_get_packed_ie_fils_hlp_container( 9494 tpAniSirGlobal, 9495 tDot11fIEfils_hlp_container *, 9496 uint32_t*); 9497 9498 #ifdef __cplusplus 9499 }; /* End extern "C". */ 9500 #endif /* C++ */ 9501 9502 /* EID 240 (0xf0) */ 9503 typedef struct sDot11fIEfils_indication { 9504 uint8_t present; 9505 uint16_t public_key_identifiers_cnt:3; 9506 uint16_t realm_identifiers_cnt:3; 9507 uint16_t is_ip_config_supported:1; 9508 uint16_t is_cache_id_present:1; 9509 uint16_t is_hessid_present:1; 9510 uint16_t is_fils_sk_auth_supported:1; 9511 uint16_t is_fils_sk_auth_pfs_supported:1; 9512 uint16_t is_pk_auth_supported:1; 9513 uint16_t reserved:4; 9514 uint8_t num_variable_data; 9515 uint8_t variable_data[255]; 9516 } tDot11fIEfils_indication; 9517 9518 #define DOT11F_EID_FILS_INDICATION (240) 9519 9520 /* N.B. These #defines do *not* include the EID & length */ 9521 #define DOT11F_IE_FILS_INDICATION_MIN_LEN (4) 9522 9523 #define DOT11F_IE_FILS_INDICATION_MAX_LEN (257) 9524 9525 #ifdef __cplusplus 9526 extern "C" { 9527 #endif /* C++ */ 9528 __must_check uint32_t dot11f_unpack_ie_fils_indication( 9529 tpAniSirGlobal, 9530 uint8_t *, 9531 uint8_t, 9532 tDot11fIEfils_indication*, 9533 bool); 9534 9535 uint32_t dot11f_pack_ie_fils_indication( 9536 tpAniSirGlobal, 9537 tDot11fIEfils_indication *, 9538 uint8_t *, 9539 uint32_t, 9540 uint32_t*); 9541 9542 uint32_t dot11f_get_packed_ie_fils_indication( 9543 tpAniSirGlobal, 9544 tDot11fIEfils_indication *, 9545 uint32_t*); 9546 9547 #ifdef __cplusplus 9548 }; /* End extern "C". */ 9549 #endif /* C++ */ 9550 9551 /* EID 255 (0xff) Extended EID 7 (0x07) */ 9552 typedef struct sDot11fIEfils_kde { 9553 uint8_t present; 9554 uint8_t key_rsc[8]; 9555 uint8_t num_kde_list; 9556 uint8_t kde_list[255]; 9557 } tDot11fIEfils_kde; 9558 9559 #define DOT11F_EID_FILS_KDE (255) 9560 9561 /* N.B. These #defines do *not* include the EID & length */ 9562 #define DOT11F_IE_FILS_KDE_MIN_LEN (8) 9563 9564 #define DOT11F_IE_FILS_KDE_MAX_LEN (263) 9565 9566 #ifdef __cplusplus 9567 extern "C" { 9568 #endif /* C++ */ 9569 __must_check uint32_t dot11f_unpack_ie_fils_kde( 9570 tpAniSirGlobal, 9571 uint8_t *, 9572 uint8_t, 9573 tDot11fIEfils_kde*, 9574 bool); 9575 9576 uint32_t dot11f_pack_ie_fils_kde( 9577 tpAniSirGlobal, 9578 tDot11fIEfils_kde *, 9579 uint8_t *, 9580 uint32_t, 9581 uint32_t*); 9582 9583 uint32_t dot11f_get_packed_ie_fils_kde( 9584 tpAniSirGlobal, 9585 tDot11fIEfils_kde *, 9586 uint32_t*); 9587 9588 #ifdef __cplusplus 9589 }; /* End extern "C". */ 9590 #endif /* C++ */ 9591 9592 /* EID 255 (0xff) Extended EID 3 (0x03) */ 9593 typedef struct sDot11fIEfils_key_confirmation { 9594 uint8_t present; 9595 uint8_t num_key_auth; 9596 uint8_t key_auth[255]; 9597 } tDot11fIEfils_key_confirmation; 9598 9599 #define DOT11F_EID_FILS_KEY_CONFIRMATION (255) 9600 9601 /* N.B. These #defines do *not* include the EID & length */ 9602 #define DOT11F_IE_FILS_KEY_CONFIRMATION_MIN_LEN (0) 9603 9604 #define DOT11F_IE_FILS_KEY_CONFIRMATION_MAX_LEN (255) 9605 9606 #ifdef __cplusplus 9607 extern "C" { 9608 #endif /* C++ */ 9609 __must_check uint32_t dot11f_unpack_ie_fils_key_confirmation( 9610 tpAniSirGlobal, 9611 uint8_t *, 9612 uint8_t, 9613 tDot11fIEfils_key_confirmation*, 9614 bool); 9615 9616 uint32_t dot11f_pack_ie_fils_key_confirmation( 9617 tpAniSirGlobal, 9618 tDot11fIEfils_key_confirmation *, 9619 uint8_t *, 9620 uint32_t, 9621 uint32_t*); 9622 9623 uint32_t dot11f_get_packed_ie_fils_key_confirmation( 9624 tpAniSirGlobal, 9625 tDot11fIEfils_key_confirmation *, 9626 uint32_t*); 9627 9628 #ifdef __cplusplus 9629 }; /* End extern "C". */ 9630 #endif /* C++ */ 9631 9632 /* EID 255 (0xff) Extended EID 13 (0x0d) */ 9633 typedef struct sDot11fIEfils_nonce { 9634 uint8_t present; 9635 uint8_t nonce[16]; 9636 } tDot11fIEfils_nonce; 9637 9638 #define DOT11F_EID_FILS_NONCE (255) 9639 9640 /* N.B. These #defines do *not* include the EID & length */ 9641 #define DOT11F_IE_FILS_NONCE_MIN_LEN (16) 9642 9643 #define DOT11F_IE_FILS_NONCE_MAX_LEN (16) 9644 9645 #ifdef __cplusplus 9646 extern "C" { 9647 #endif /* C++ */ 9648 __must_check uint32_t dot11f_unpack_ie_fils_nonce( 9649 tpAniSirGlobal, 9650 uint8_t *, 9651 uint8_t, 9652 tDot11fIEfils_nonce*, 9653 bool); 9654 9655 uint32_t dot11f_pack_ie_fils_nonce( 9656 tpAniSirGlobal, 9657 tDot11fIEfils_nonce *, 9658 uint8_t *, 9659 uint32_t, 9660 uint32_t*); 9661 9662 uint32_t dot11f_get_packed_ie_fils_nonce( 9663 tpAniSirGlobal, 9664 tDot11fIEfils_nonce *, 9665 uint32_t*); 9666 9667 #ifdef __cplusplus 9668 }; /* End extern "C". */ 9669 #endif /* C++ */ 9670 9671 /* EID 255 (0xff) Extended EID 12 (0x0c) */ 9672 typedef struct sDot11fIEfils_public_key { 9673 uint8_t present; 9674 uint8_t key_type; 9675 uint8_t num_public_key; 9676 uint8_t public_key[255]; 9677 } tDot11fIEfils_public_key; 9678 9679 #define DOT11F_EID_FILS_PUBLIC_KEY (255) 9680 9681 /* N.B. These #defines do *not* include the EID & length */ 9682 #define DOT11F_IE_FILS_PUBLIC_KEY_MIN_LEN (1) 9683 9684 #define DOT11F_IE_FILS_PUBLIC_KEY_MAX_LEN (256) 9685 9686 #ifdef __cplusplus 9687 extern "C" { 9688 #endif /* C++ */ 9689 __must_check uint32_t dot11f_unpack_ie_fils_public_key( 9690 tpAniSirGlobal, 9691 uint8_t *, 9692 uint8_t, 9693 tDot11fIEfils_public_key*, 9694 bool); 9695 9696 uint32_t dot11f_pack_ie_fils_public_key( 9697 tpAniSirGlobal, 9698 tDot11fIEfils_public_key *, 9699 uint8_t *, 9700 uint32_t, 9701 uint32_t*); 9702 9703 uint32_t dot11f_get_packed_ie_fils_public_key( 9704 tpAniSirGlobal, 9705 tDot11fIEfils_public_key *, 9706 uint32_t*); 9707 9708 #ifdef __cplusplus 9709 }; /* End extern "C". */ 9710 #endif /* C++ */ 9711 9712 /* EID 255 (0xff) Extended EID 4 (0x04) */ 9713 typedef struct sDot11fIEfils_session { 9714 uint8_t present; 9715 uint8_t session[8]; 9716 } tDot11fIEfils_session; 9717 9718 #define DOT11F_EID_FILS_SESSION (255) 9719 9720 /* N.B. These #defines do *not* include the EID & length */ 9721 #define DOT11F_IE_FILS_SESSION_MIN_LEN (8) 9722 9723 #define DOT11F_IE_FILS_SESSION_MAX_LEN (8) 9724 9725 #ifdef __cplusplus 9726 extern "C" { 9727 #endif /* C++ */ 9728 __must_check uint32_t dot11f_unpack_ie_fils_session( 9729 tpAniSirGlobal, 9730 uint8_t *, 9731 uint8_t, 9732 tDot11fIEfils_session*, 9733 bool); 9734 9735 uint32_t dot11f_pack_ie_fils_session( 9736 tpAniSirGlobal, 9737 tDot11fIEfils_session *, 9738 uint8_t *, 9739 uint32_t, 9740 uint32_t*); 9741 9742 uint32_t dot11f_get_packed_ie_fils_session( 9743 tpAniSirGlobal, 9744 tDot11fIEfils_session *, 9745 uint32_t*); 9746 9747 #ifdef __cplusplus 9748 }; /* End extern "C". */ 9749 #endif /* C++ */ 9750 9751 /* EID 255 (0xff) Extended EID 8 (0x08) */ 9752 typedef struct sDot11fIEfils_wrapped_data { 9753 uint8_t present; 9754 uint8_t num_wrapped_data; 9755 uint8_t wrapped_data[255]; 9756 } tDot11fIEfils_wrapped_data; 9757 9758 #define DOT11F_EID_FILS_WRAPPED_DATA (255) 9759 9760 /* N.B. These #defines do *not* include the EID & length */ 9761 #define DOT11F_IE_FILS_WRAPPED_DATA_MIN_LEN (0) 9762 9763 #define DOT11F_IE_FILS_WRAPPED_DATA_MAX_LEN (255) 9764 9765 #ifdef __cplusplus 9766 extern "C" { 9767 #endif /* C++ */ 9768 __must_check uint32_t dot11f_unpack_ie_fils_wrapped_data( 9769 tpAniSirGlobal, 9770 uint8_t *, 9771 uint8_t, 9772 tDot11fIEfils_wrapped_data*, 9773 bool); 9774 9775 uint32_t dot11f_pack_ie_fils_wrapped_data( 9776 tpAniSirGlobal, 9777 tDot11fIEfils_wrapped_data *, 9778 uint8_t *, 9779 uint32_t, 9780 uint32_t*); 9781 9782 uint32_t dot11f_get_packed_ie_fils_wrapped_data( 9783 tpAniSirGlobal, 9784 tDot11fIEfils_wrapped_data *, 9785 uint32_t*); 9786 9787 #ifdef __cplusplus 9788 }; /* End extern "C". */ 9789 #endif /* C++ */ 9790 9791 /* EID 242 (0xf2) */ 9792 typedef struct sDot11fIEfragment_ie { 9793 uint8_t present; 9794 uint8_t num_data; 9795 uint8_t data[255]; 9796 } tDot11fIEfragment_ie; 9797 9798 #define DOT11F_EID_FRAGMENT_IE (242) 9799 9800 /* N.B. These #defines do *not* include the EID & length */ 9801 #define DOT11F_IE_FRAGMENT_IE_MIN_LEN (0) 9802 9803 #define DOT11F_IE_FRAGMENT_IE_MAX_LEN (255) 9804 9805 #ifdef __cplusplus 9806 extern "C" { 9807 #endif /* C++ */ 9808 __must_check uint32_t dot11f_unpack_ie_fragment_ie( 9809 tpAniSirGlobal, 9810 uint8_t *, 9811 uint8_t, 9812 tDot11fIEfragment_ie*, 9813 bool); 9814 9815 uint32_t dot11f_pack_ie_fragment_ie( 9816 tpAniSirGlobal, 9817 tDot11fIEfragment_ie *, 9818 uint8_t *, 9819 uint32_t, 9820 uint32_t*); 9821 9822 uint32_t dot11f_get_packed_ie_fragment_ie( 9823 tpAniSirGlobal, 9824 tDot11fIEfragment_ie *, 9825 uint32_t*); 9826 9827 #ifdef __cplusplus 9828 }; /* End extern "C". */ 9829 #endif /* C++ */ 9830 9831 /* EID 255 (0xff) Extended EID 59 (0x3b) */ 9832 typedef struct sDot11fIEhe_6ghz_band_cap { 9833 uint8_t present; 9834 uint16_t min_mpdu_start_spacing:3; 9835 uint16_t max_ampdu_len_exp:3; 9836 uint16_t max_mpdu_len:3; 9837 uint16_t sm_pow_save:2; 9838 uint16_t rd_responder:1; 9839 uint16_t rx_ant_pattern_consistency:1; 9840 uint16_t tx_ant_pattern_consistency:1; 9841 uint16_t reserved:2; 9842 } tDot11fIEhe_6ghz_band_cap; 9843 9844 #define DOT11F_EID_HE_6GHZ_BAND_CAP (255) 9845 9846 /* N.B. These #defines do *not* include the EID & length */ 9847 #define DOT11F_IE_HE_6GHZ_BAND_CAP_MIN_LEN (2) 9848 9849 #define DOT11F_IE_HE_6GHZ_BAND_CAP_MAX_LEN (2) 9850 9851 #ifdef __cplusplus 9852 extern "C" { 9853 #endif /* C++ */ 9854 __must_check uint32_t dot11f_unpack_ie_he_6ghz_band_cap( 9855 tpAniSirGlobal, 9856 uint8_t *, 9857 uint8_t, 9858 tDot11fIEhe_6ghz_band_cap*, 9859 bool); 9860 9861 uint32_t dot11f_pack_ie_he_6ghz_band_cap( 9862 tpAniSirGlobal, 9863 tDot11fIEhe_6ghz_band_cap *, 9864 uint8_t *, 9865 uint32_t, 9866 uint32_t*); 9867 9868 uint32_t dot11f_get_packed_ie_he_6ghz_band_cap( 9869 tpAniSirGlobal, 9870 tDot11fIEhe_6ghz_band_cap *, 9871 uint32_t*); 9872 9873 #ifdef __cplusplus 9874 }; /* End extern "C". */ 9875 #endif /* C++ */ 9876 9877 /* EID 255 (0xff) Extended EID 35 (0x23) */ 9878 typedef struct sDot11fIEhe_cap { 9879 uint8_t present; 9880 uint32_t htc_he:1; 9881 uint32_t twt_request:1; 9882 uint32_t twt_responder:1; 9883 uint32_t fragmentation:2; 9884 uint32_t max_num_frag_msdu_amsdu_exp:3; 9885 uint32_t min_frag_size:2; 9886 uint32_t trigger_frm_mac_pad:2; 9887 uint32_t multi_tid_aggr_rx_supp:3; 9888 uint32_t he_link_adaptation:2; 9889 uint32_t all_ack:1; 9890 uint32_t trigd_rsp_sched:1; 9891 uint32_t a_bsr:1; 9892 uint32_t broadcast_twt:1; 9893 uint32_t ba_32bit_bitmap:1; 9894 uint32_t mu_cascade:1; 9895 uint32_t ack_enabled_multitid:1; 9896 uint32_t reserved:1; 9897 uint32_t omi_a_ctrl:1; 9898 uint32_t ofdma_ra:1; 9899 uint32_t max_ampdu_len_exp_ext:2; 9900 uint32_t amsdu_frag:1; 9901 uint32_t flex_twt_sched:1; 9902 uint32_t rx_ctrl_frame:1; 9903 uint16_t bsrp_ampdu_aggr:1; 9904 uint16_t qtp:1; 9905 uint16_t a_bqr:1; 9906 uint16_t spatial_reuse_param_rspder:1; 9907 uint16_t ndp_feedback_supp:1; 9908 uint16_t ops_supp:1; 9909 uint16_t amsdu_in_ampdu:1; 9910 uint16_t multi_tid_aggr_tx_supp:3; 9911 uint16_t he_sub_ch_sel_tx_supp:1; 9912 uint16_t ul_2x996_tone_ru_supp:1; 9913 uint16_t om_ctrl_ul_mu_data_dis_rx:1; 9914 uint16_t he_dynamic_smps:1; 9915 uint16_t punctured_sounding_supp:1; 9916 uint16_t ht_vht_trg_frm_rx_supp:1; 9917 uint32_t reserved2:1; 9918 uint32_t chan_width_0:1; 9919 uint32_t chan_width_1:1; 9920 uint32_t chan_width_2:1; 9921 uint32_t chan_width_3:1; 9922 uint32_t chan_width_4:1; 9923 uint32_t chan_width_5:1; 9924 uint32_t chan_width_6:1; 9925 uint32_t rx_pream_puncturing:4; 9926 uint32_t device_class:1; 9927 uint32_t ldpc_coding:1; 9928 uint32_t he_1x_ltf_800_gi_ppdu:1; 9929 uint32_t midamble_tx_rx_max_nsts:2; 9930 uint32_t he_4x_ltf_3200_gi_ndp:1; 9931 uint32_t tb_ppdu_tx_stbc_lt_80mhz:1; 9932 uint32_t rx_stbc_lt_80mhz:1; 9933 uint32_t doppler:2; 9934 uint32_t ul_mu:2; 9935 uint32_t dcm_enc_tx:3; 9936 uint32_t dcm_enc_rx:3; 9937 uint32_t ul_he_mu:1; 9938 uint32_t su_beamformer:1; 9939 uint32_t su_beamformee:1; 9940 uint32_t mu_beamformer:1; 9941 uint32_t bfee_sts_lt_80:3; 9942 uint32_t bfee_sts_gt_80:3; 9943 uint32_t num_sounding_lt_80:3; 9944 uint32_t num_sounding_gt_80:3; 9945 uint32_t su_feedback_tone16:1; 9946 uint32_t mu_feedback_tone16:1; 9947 uint32_t codebook_su:1; 9948 uint32_t codebook_mu:1; 9949 uint32_t beamforming_feedback:3; 9950 uint32_t he_er_su_ppdu:1; 9951 uint32_t dl_mu_mimo_part_bw:1; 9952 uint32_t ppet_present:1; 9953 uint32_t srp:1; 9954 uint32_t power_boost:1; 9955 uint32_t he_ltf_800_gi_4x:1; 9956 uint32_t max_nc:3; 9957 uint32_t tb_ppdu_tx_stbc_gt_80mhz:1; 9958 uint32_t rx_stbc_gt_80mhz:1; 9959 uint16_t er_he_ltf_800_gi_4x:1; 9960 uint16_t he_ppdu_20_in_40Mhz_2G:1; 9961 uint16_t he_ppdu_20_in_160_80p80Mhz:1; 9962 uint16_t he_ppdu_80_in_160_80p80Mhz:1; 9963 uint16_t er_1x_he_ltf_gi:1; 9964 uint16_t midamble_tx_rx_1x_he_ltf:1; 9965 uint16_t dcm_max_bw:2; 9966 uint16_t longer_than_16_he_sigb_ofdm_sym:1; 9967 uint16_t non_trig_cqi_feedback:1; 9968 uint16_t tx_1024_qam_lt_242_tone_ru:1; 9969 uint16_t rx_1024_qam_lt_242_tone_ru:1; 9970 uint16_t rx_full_bw_su_he_mu_compress_sigb:1; 9971 uint16_t rx_full_bw_su_he_mu_non_cmpr_sigb:1; 9972 uint16_t reserved3:2; 9973 uint8_t reserved4; 9974 uint16_t rx_he_mcs_map_lt_80; 9975 uint16_t tx_he_mcs_map_lt_80; 9976 uint8_t rx_he_mcs_map_160[1][2]; 9977 uint8_t tx_he_mcs_map_160[1][2]; 9978 uint8_t rx_he_mcs_map_80_80[1][2]; 9979 uint8_t tx_he_mcs_map_80_80[1][2]; 9980 union { 9981 struct { 9982 uint8_t num_ppe_th; 9983 uint8_t ppe_th[25]; 9984 } ppe_threshold; /* ppet_present = 1 */ 9985 } ppet; 9986 } tDot11fIEhe_cap; 9987 9988 #define DOT11F_EID_HE_CAP (255) 9989 9990 /* N.B. These #defines do *not* include the EID & length */ 9991 #define DOT11F_IE_HE_CAP_MIN_LEN (21) 9992 9993 #define DOT11F_IE_HE_CAP_MAX_LEN (54) 9994 9995 #ifdef __cplusplus 9996 extern "C" { 9997 #endif /* C++ */ 9998 __must_check uint32_t dot11f_unpack_ie_he_cap( 9999 tpAniSirGlobal, 10000 uint8_t *, 10001 uint8_t, 10002 tDot11fIEhe_cap*, 10003 bool); 10004 10005 uint32_t dot11f_pack_ie_he_cap( 10006 tpAniSirGlobal, 10007 tDot11fIEhe_cap *, 10008 uint8_t *, 10009 uint32_t, 10010 uint32_t*); 10011 10012 uint32_t dot11f_get_packed_ie_he_cap( 10013 tpAniSirGlobal, 10014 tDot11fIEhe_cap *, 10015 uint32_t*); 10016 10017 #ifdef __cplusplus 10018 }; /* End extern "C". */ 10019 #endif /* C++ */ 10020 10021 /* EID 255 (0xff) Extended EID 36 (0x24) */ 10022 typedef struct sDot11fIEhe_op { 10023 uint8_t present; 10024 uint16_t default_pe:3; 10025 uint16_t twt_required:1; 10026 uint16_t txop_rts_threshold:10; 10027 uint16_t vht_oper_present:1; 10028 uint16_t co_located_bss:1; 10029 uint8_t er_su_disable:1; 10030 uint8_t oper_info_6g_present:1; 10031 uint8_t reserved2:6; 10032 uint8_t bss_color:6; 10033 uint8_t partial_bss_col:1; 10034 uint8_t bss_col_disabled:1; 10035 uint8_t basic_mcs_nss[2]; 10036 union { 10037 struct { 10038 uint8_t chan_width; 10039 uint8_t center_freq_seg0; 10040 uint8_t center_freq_seg1; 10041 } info; /* vht_oper_present = 1 */ 10042 } vht_oper; 10043 union { 10044 struct { 10045 uint8_t data; 10046 } info; /* co_located_bss = 1 */ 10047 } maxbssid_ind; 10048 union { 10049 struct { 10050 uint8_t primary_ch; 10051 uint8_t ch_width:2; 10052 uint8_t dup_bcon:1; 10053 uint8_t reg_info:3; 10054 uint8_t reserved:2; 10055 uint8_t center_freq_seg0; 10056 uint8_t center_freq_seg1; 10057 uint8_t min_rate; 10058 } info; /* oper_info_6g_present = 1 */ 10059 } oper_info_6g; 10060 } tDot11fIEhe_op; 10061 10062 #define DOT11F_EID_HE_OP (255) 10063 10064 /* N.B. These #defines do *not* include the EID & length */ 10065 #define DOT11F_IE_HE_OP_MIN_LEN (6) 10066 10067 #define DOT11F_IE_HE_OP_MAX_LEN (15) 10068 10069 #ifdef __cplusplus 10070 extern "C" { 10071 #endif /* C++ */ 10072 __must_check uint32_t dot11f_unpack_ie_he_op( 10073 tpAniSirGlobal, 10074 uint8_t *, 10075 uint8_t, 10076 tDot11fIEhe_op*, 10077 bool); 10078 10079 uint32_t dot11f_pack_ie_he_op( 10080 tpAniSirGlobal, 10081 tDot11fIEhe_op *, 10082 uint8_t *, 10083 uint32_t, 10084 uint32_t*); 10085 10086 uint32_t dot11f_get_packed_ie_he_op( 10087 tpAniSirGlobal, 10088 tDot11fIEhe_op *, 10089 uint32_t*); 10090 10091 #ifdef __cplusplus 10092 }; /* End extern "C". */ 10093 #endif /* C++ */ 10094 10095 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x10} */ 10096 typedef struct sDot11fIEhs20vendor_ie { 10097 uint8_t present; 10098 uint8_t dgaf_dis:1; 10099 uint8_t hs_id_present:2; 10100 uint8_t reserved:1; 10101 uint8_t release_num:4; 10102 union { 10103 struct { 10104 uint16_t pps_mo_id; 10105 } pps_mo; /* hs_id_present = 1 */ 10106 struct { 10107 uint16_t anqp_domain_id; 10108 } anqp_domain; /* hs_id_present = 2 */ 10109 } hs_id; 10110 } tDot11fIEhs20vendor_ie; 10111 10112 #define DOT11F_EID_HS20VENDOR_IE (221) 10113 10114 /* N.B. These #defines do *not* include the EID & length */ 10115 #define DOT11F_IE_HS20VENDOR_IE_MIN_LEN (5) 10116 10117 #define DOT11F_IE_HS20VENDOR_IE_MAX_LEN (7) 10118 10119 #ifdef __cplusplus 10120 extern "C" { 10121 #endif /* C++ */ 10122 __must_check uint32_t dot11f_unpack_ie_hs20vendor_ie( 10123 tpAniSirGlobal, 10124 uint8_t *, 10125 uint8_t, 10126 tDot11fIEhs20vendor_ie*, 10127 bool); 10128 10129 uint32_t dot11f_pack_ie_hs20vendor_ie( 10130 tpAniSirGlobal, 10131 tDot11fIEhs20vendor_ie *, 10132 uint8_t *, 10133 uint32_t, 10134 uint32_t*); 10135 10136 uint32_t dot11f_get_packed_ie_hs20vendor_ie( 10137 tpAniSirGlobal, 10138 tDot11fIEhs20vendor_ie *, 10139 uint32_t*); 10140 10141 #ifdef __cplusplus 10142 }; /* End extern "C". */ 10143 #endif /* C++ */ 10144 10145 /* EID 72 (0x48) */ 10146 typedef struct sDot11fIEht2040_bss_coexistence { 10147 uint8_t present; 10148 uint8_t info_request:1; 10149 uint8_t forty_mhz_intolerant:1; 10150 uint8_t twenty_mhz_bsswidth_req:1; 10151 uint8_t obss_scan_exemption_req:1; 10152 uint8_t obss_scan_exemption_grant:1; 10153 uint8_t unused:3; 10154 } tDot11fIEht2040_bss_coexistence; 10155 10156 #define DOT11F_EID_HT2040_BSS_COEXISTENCE (72) 10157 10158 /* N.B. These #defines do *not* include the EID & length */ 10159 #define DOT11F_IE_HT2040_BSS_COEXISTENCE_MIN_LEN (1) 10160 10161 #define DOT11F_IE_HT2040_BSS_COEXISTENCE_MAX_LEN (1) 10162 10163 #ifdef __cplusplus 10164 extern "C" { 10165 #endif /* C++ */ 10166 __must_check uint32_t dot11f_unpack_ie_ht2040_bss_coexistence( 10167 tpAniSirGlobal, 10168 uint8_t *, 10169 uint8_t, 10170 tDot11fIEht2040_bss_coexistence*, 10171 bool); 10172 10173 uint32_t dot11f_pack_ie_ht2040_bss_coexistence( 10174 tpAniSirGlobal, 10175 tDot11fIEht2040_bss_coexistence *, 10176 uint8_t *, 10177 uint32_t, 10178 uint32_t*); 10179 10180 uint32_t dot11f_get_packed_ie_ht2040_bss_coexistence( 10181 tpAniSirGlobal, 10182 tDot11fIEht2040_bss_coexistence *, 10183 uint32_t*); 10184 10185 #ifdef __cplusplus 10186 }; /* End extern "C". */ 10187 #endif /* C++ */ 10188 10189 /* EID 73 (0x49) */ 10190 typedef struct sDot11fIEht2040_bss_intolerant_report { 10191 uint8_t present; 10192 uint8_t operating_class; 10193 uint8_t num_channel_list; 10194 uint8_t channel_list[50]; 10195 } tDot11fIEht2040_bss_intolerant_report; 10196 10197 #define DOT11F_EID_HT2040_BSS_INTOLERANT_REPORT (73) 10198 10199 /* N.B. These #defines do *not* include the EID & length */ 10200 #define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MIN_LEN (1) 10201 10202 #define DOT11F_IE_HT2040_BSS_INTOLERANT_REPORT_MAX_LEN (51) 10203 10204 #ifdef __cplusplus 10205 extern "C" { 10206 #endif /* C++ */ 10207 __must_check uint32_t dot11f_unpack_ie_ht2040_bss_intolerant_report( 10208 tpAniSirGlobal, 10209 uint8_t *, 10210 uint8_t, 10211 tDot11fIEht2040_bss_intolerant_report*, 10212 bool); 10213 10214 uint32_t dot11f_pack_ie_ht2040_bss_intolerant_report( 10215 tpAniSirGlobal, 10216 tDot11fIEht2040_bss_intolerant_report *, 10217 uint8_t *, 10218 uint32_t, 10219 uint32_t*); 10220 10221 uint32_t dot11f_get_packed_ie_ht2040_bss_intolerant_report( 10222 tpAniSirGlobal, 10223 tDot11fIEht2040_bss_intolerant_report *, 10224 uint32_t*); 10225 10226 #ifdef __cplusplus 10227 }; /* End extern "C". */ 10228 #endif /* C++ */ 10229 10230 /* EID 255 (0xff) Extended EID 52 (0x34) */ 10231 typedef struct sDot11fIEmax_chan_switch_time { 10232 uint8_t present; 10233 uint8_t switch_time[3]; 10234 } tDot11fIEmax_chan_switch_time; 10235 10236 #define DOT11F_EID_MAX_CHAN_SWITCH_TIME (255) 10237 10238 /* N.B. These #defines do *not* include the EID & length */ 10239 #define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MIN_LEN (3) 10240 10241 #define DOT11F_IE_MAX_CHAN_SWITCH_TIME_MAX_LEN (3) 10242 10243 #ifdef __cplusplus 10244 extern "C" { 10245 #endif /* C++ */ 10246 __must_check uint32_t dot11f_unpack_ie_max_chan_switch_time( 10247 tpAniSirGlobal, 10248 uint8_t *, 10249 uint8_t, 10250 tDot11fIEmax_chan_switch_time*, 10251 bool); 10252 10253 uint32_t dot11f_pack_ie_max_chan_switch_time( 10254 tpAniSirGlobal, 10255 tDot11fIEmax_chan_switch_time *, 10256 uint8_t *, 10257 uint32_t, 10258 uint32_t*); 10259 10260 uint32_t dot11f_get_packed_ie_max_chan_switch_time( 10261 tpAniSirGlobal, 10262 tDot11fIEmax_chan_switch_time *, 10263 uint32_t*); 10264 10265 #ifdef __cplusplus 10266 }; /* End extern "C". */ 10267 #endif /* C++ */ 10268 10269 /* EID 255 (0xff) Extended EID 107 (0x6b) */ 10270 typedef struct sDot11fIEmlo_ie { 10271 uint8_t present; 10272 uint8_t num_data; 10273 uint8_t data[255]; 10274 } tDot11fIEmlo_ie; 10275 10276 #define DOT11F_EID_MLO_IE (255) 10277 10278 /* N.B. These #defines do *not* include the EID & length */ 10279 #define DOT11F_IE_MLO_IE_MIN_LEN (9) 10280 10281 #define DOT11F_IE_MLO_IE_MAX_LEN (255) 10282 10283 #ifdef __cplusplus 10284 extern "C" { 10285 #endif /* C++ */ 10286 __must_check uint32_t dot11f_unpack_ie_mlo_ie( 10287 tpAniSirGlobal, 10288 uint8_t *, 10289 uint8_t, 10290 tDot11fIEmlo_ie*, 10291 bool); 10292 10293 uint32_t dot11f_pack_ie_mlo_ie( 10294 tpAniSirGlobal, 10295 tDot11fIEmlo_ie *, 10296 uint8_t *, 10297 uint32_t, 10298 uint32_t*); 10299 10300 uint32_t dot11f_get_packed_ie_mlo_ie( 10301 tpAniSirGlobal, 10302 tDot11fIEmlo_ie *, 10303 uint32_t*); 10304 10305 #ifdef __cplusplus 10306 }; /* End extern "C". */ 10307 #endif /* C++ */ 10308 10309 /* EID 255 (0xff) Extended EID 38 (0x26) */ 10310 typedef struct sDot11fIEmu_edca_param_set { 10311 uint8_t present; 10312 uint8_t qos; 10313 uint8_t acbe_aifsn:4; 10314 uint8_t acbe_acm:1; 10315 uint8_t acbe_aci:2; 10316 uint8_t unused1:1; 10317 uint8_t acbe_acwmin:4; 10318 uint8_t acbe_acwmax:4; 10319 uint8_t acbe_muedca_timer; 10320 uint8_t acbk_aifsn:4; 10321 uint8_t acbk_acm:1; 10322 uint8_t acbk_aci:2; 10323 uint8_t unused2:1; 10324 uint8_t acbk_acwmin:4; 10325 uint8_t acbk_acwmax:4; 10326 uint8_t acbk_muedca_timer; 10327 uint8_t acvi_aifsn:4; 10328 uint8_t acvi_acm:1; 10329 uint8_t acvi_aci:2; 10330 uint8_t unused3:1; 10331 uint8_t acvi_acwmin:4; 10332 uint8_t acvi_acwmax:4; 10333 uint8_t acvi_muedca_timer; 10334 uint8_t acvo_aifsn:4; 10335 uint8_t acvo_acm:1; 10336 uint8_t acvo_aci:2; 10337 uint8_t unused4:1; 10338 uint8_t acvo_acwmin:4; 10339 uint8_t acvo_acwmax:4; 10340 uint8_t acvo_muedca_timer; 10341 } tDot11fIEmu_edca_param_set; 10342 10343 #define DOT11F_EID_MU_EDCA_PARAM_SET (255) 10344 10345 /* N.B. These #defines do *not* include the EID & length */ 10346 #define DOT11F_IE_MU_EDCA_PARAM_SET_MIN_LEN (13) 10347 10348 #define DOT11F_IE_MU_EDCA_PARAM_SET_MAX_LEN (13) 10349 10350 #ifdef __cplusplus 10351 extern "C" { 10352 #endif /* C++ */ 10353 __must_check uint32_t dot11f_unpack_ie_mu_edca_param_set( 10354 tpAniSirGlobal, 10355 uint8_t *, 10356 uint8_t, 10357 tDot11fIEmu_edca_param_set*, 10358 bool); 10359 10360 uint32_t dot11f_pack_ie_mu_edca_param_set( 10361 tpAniSirGlobal, 10362 tDot11fIEmu_edca_param_set *, 10363 uint8_t *, 10364 uint32_t, 10365 uint32_t*); 10366 10367 uint32_t dot11f_get_packed_ie_mu_edca_param_set( 10368 tpAniSirGlobal, 10369 tDot11fIEmu_edca_param_set *, 10370 uint32_t*); 10371 10372 #ifdef __cplusplus 10373 }; /* End extern "C". */ 10374 #endif /* C++ */ 10375 10376 /* EID 255 (0xff) Extended EID 56 (0x38) */ 10377 typedef struct sDot11fIEnon_inheritance { 10378 uint8_t present; 10379 uint8_t num_data; 10380 uint8_t data[255]; 10381 } tDot11fIEnon_inheritance; 10382 10383 #define DOT11F_EID_NON_INHERITANCE (255) 10384 10385 /* N.B. These #defines do *not* include the EID & length */ 10386 #define DOT11F_IE_NON_INHERITANCE_MIN_LEN (0) 10387 10388 #define DOT11F_IE_NON_INHERITANCE_MAX_LEN (255) 10389 10390 #ifdef __cplusplus 10391 extern "C" { 10392 #endif /* C++ */ 10393 __must_check uint32_t dot11f_unpack_ie_non_inheritance( 10394 tpAniSirGlobal, 10395 uint8_t *, 10396 uint8_t, 10397 tDot11fIEnon_inheritance*, 10398 bool); 10399 10400 uint32_t dot11f_pack_ie_non_inheritance( 10401 tpAniSirGlobal, 10402 tDot11fIEnon_inheritance *, 10403 uint8_t *, 10404 uint32_t, 10405 uint32_t*); 10406 10407 uint32_t dot11f_get_packed_ie_non_inheritance( 10408 tpAniSirGlobal, 10409 tDot11fIEnon_inheritance *, 10410 uint32_t*); 10411 10412 #ifdef __cplusplus 10413 }; /* End extern "C". */ 10414 #endif /* C++ */ 10415 10416 /* EID 255 (0xff) Extended EID 54 (0x36) */ 10417 typedef struct sDot11fIEoci { 10418 uint8_t present; 10419 uint8_t op_class; 10420 uint8_t prim_ch_num; 10421 uint8_t freq_seg_1_ch_num; 10422 } tDot11fIEoci; 10423 10424 #define DOT11F_EID_OCI (255) 10425 10426 /* N.B. These #defines do *not* include the EID & length */ 10427 #define DOT11F_IE_OCI_MIN_LEN (3) 10428 10429 #define DOT11F_IE_OCI_MAX_LEN (3) 10430 10431 #ifdef __cplusplus 10432 extern "C" { 10433 #endif /* C++ */ 10434 __must_check uint32_t dot11f_unpack_ie_oci( 10435 tpAniSirGlobal, 10436 uint8_t *, 10437 uint8_t, 10438 tDot11fIEoci*, 10439 bool); 10440 10441 uint32_t dot11f_pack_ie_oci( 10442 tpAniSirGlobal, 10443 tDot11fIEoci *, 10444 uint8_t *, 10445 uint32_t, 10446 uint32_t*); 10447 10448 uint32_t dot11f_get_packed_ie_oci( 10449 tpAniSirGlobal, 10450 tDot11fIEoci *, 10451 uint32_t*); 10452 10453 #ifdef __cplusplus 10454 }; /* End extern "C". */ 10455 #endif /* C++ */ 10456 10457 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x12} */ 10458 typedef struct sDot11fIEosen_ie { 10459 uint8_t present; 10460 uint8_t num_data; 10461 uint8_t data[255]; 10462 } tDot11fIEosen_ie; 10463 10464 #define DOT11F_EID_OSEN_IE (221) 10465 10466 /* N.B. These #defines do *not* include the EID & length */ 10467 #define DOT11F_IE_OSEN_IE_MIN_LEN (4) 10468 10469 #define DOT11F_IE_OSEN_IE_MAX_LEN (259) 10470 10471 #ifdef __cplusplus 10472 extern "C" { 10473 #endif /* C++ */ 10474 __must_check uint32_t dot11f_unpack_ie_osen_ie( 10475 tpAniSirGlobal, 10476 uint8_t *, 10477 uint8_t, 10478 tDot11fIEosen_ie*, 10479 bool); 10480 10481 uint32_t dot11f_pack_ie_osen_ie( 10482 tpAniSirGlobal, 10483 tDot11fIEosen_ie *, 10484 uint8_t *, 10485 uint32_t, 10486 uint32_t*); 10487 10488 uint32_t dot11f_get_packed_ie_osen_ie( 10489 tpAniSirGlobal, 10490 tDot11fIEosen_ie *, 10491 uint32_t*); 10492 10493 #ifdef __cplusplus 10494 }; /* End extern "C". */ 10495 #endif /* C++ */ 10496 10497 /* EID 221 (0xdd) {OUI 0x8c, 0xfd, 0xf0, 0x01} (Multi-IE) */ 10498 typedef struct sDot11fIEqcn_ie { 10499 uint8_t present; 10500 tDot11fTLVqcn_version qcn_version; 10501 tDot11fTLVvht_mcs11_attr vht_mcs11_attr; 10502 tDot11fTLVhe_400ns_sgi_attr he_400ns_sgi_attr; 10503 tDot11fTLVhe_2xltf_160mhz_supp he_2xltf_160mhz_supp; 10504 tDot11fTLVhe_dl_ofdma_attr he_dl_ofdma_attr; 10505 tDot11fTLVtrans_reasonp_attr trans_reasonp_attr; 10506 tDot11fTLVtrans_rejectp_attr trans_rejectp_attr; 10507 tDot11fTLVhe_dl_mumimo_attr he_dl_mumimo_attr; 10508 tDot11fTLVhe_mcs13_attr he_mcs13_attr; 10509 tDot11fTLVedca_pifs_param_attr edca_pifs_param_attr; 10510 tDot11fTLVecsa_target_tsf_info_attr ecsa_target_tsf_info_attr; 10511 } tDot11fIEqcn_ie; 10512 10513 #define DOT11F_EID_QCN_IE (221) 10514 10515 /* N.B. These #defines do *not* include the EID & length */ 10516 #define DOT11F_IE_QCN_IE_MIN_LEN (4) 10517 10518 #define DOT11F_IE_QCN_IE_MAX_LEN (53) 10519 10520 #ifdef __cplusplus 10521 extern "C" { 10522 #endif /* C++ */ 10523 __must_check uint32_t dot11f_unpack_ie_qcn_ie( 10524 tpAniSirGlobal, 10525 uint8_t *, 10526 uint8_t, 10527 tDot11fIEqcn_ie*, 10528 bool); 10529 10530 uint32_t dot11f_pack_ie_qcn_ie( 10531 tpAniSirGlobal, 10532 tDot11fIEqcn_ie *, 10533 uint8_t *, 10534 uint32_t, 10535 uint32_t*); 10536 10537 uint32_t dot11f_get_packed_ie_qcn_ie( 10538 tpAniSirGlobal, 10539 tDot11fIEqcn_ie *, 10540 uint32_t*); 10541 10542 #ifdef __cplusplus 10543 }; /* End extern "C". */ 10544 #endif /* C++ */ 10545 10546 /* EID 201 (0xc9) */ 10547 typedef struct sDot11fIEreduced_neighbor_report { 10548 uint8_t present; 10549 uint16_t tbtt_type:2; 10550 uint16_t filtered_neighbor_ap:1; 10551 uint16_t reserved:1; 10552 uint16_t tbtt_info_count:4; 10553 uint16_t tbtt_info_len:8; 10554 uint8_t op_class; 10555 uint8_t channel_num; 10556 union { 10557 struct { 10558 uint8_t tbtt_offset; 10559 } tbtt_info_1; /* tbtt_info_len = 1 */ 10560 struct { 10561 uint8_t tbtt_offset; 10562 uint8_t bss_params; 10563 } tbtt_info_2; /* tbtt_info_len = 2 */ 10564 struct { 10565 uint8_t tbtt_offset; 10566 uint32_t short_ssid; 10567 } tbtt_info_5; /* tbtt_info_len = 5 */ 10568 struct { 10569 uint8_t tbtt_offset; 10570 uint32_t short_ssid; 10571 uint8_t bss_params; 10572 } tbtt_info_6; /* tbtt_info_len = 6 */ 10573 struct { 10574 uint8_t tbtt_offset; 10575 uint8_t bssid[6]; 10576 } tbtt_info_7; /* tbtt_info_len = 7 */ 10577 struct { 10578 uint8_t tbtt_offset; 10579 uint8_t bssid[6]; 10580 uint8_t bss_params; 10581 } tbtt_info_8; /* tbtt_info_len = 8 */ 10582 struct { 10583 uint8_t tbtt_offset; 10584 uint8_t bssid[6]; 10585 uint8_t bss_params; 10586 uint8_t psd_20mhz; 10587 } tbtt_info_9; /* tbtt_info_len = 9 */ 10588 struct { 10589 uint8_t tbtt_offset; 10590 uint8_t bssid[6]; 10591 uint32_t short_ssid; 10592 } tbtt_info_11; /* tbtt_info_len = 11 */ 10593 struct { 10594 uint8_t tbtt_offset; 10595 uint8_t bssid[6]; 10596 uint32_t short_ssid; 10597 uint8_t bss_params; 10598 } tbtt_info_12; /* tbtt_info_len = 12 */ 10599 struct { 10600 uint8_t tbtt_offset; 10601 uint8_t bssid[6]; 10602 uint32_t short_ssid; 10603 uint8_t bss_params; 10604 uint8_t psd_20mhz; 10605 } tbtt_info_13; /* tbtt_info_len = 13 */ 10606 struct { 10607 uint8_t tbtt_offset; 10608 uint8_t bssid[6]; 10609 uint32_t short_ssid; 10610 uint8_t bss_params; 10611 uint8_t psd_20mhz; 10612 uint8_t mld_id; 10613 uint16_t link_id:4; 10614 uint16_t bss_param_change_cnt:8; 10615 uint16_t all_updates_included:1; 10616 uint16_t reserved:3; 10617 } tbtt_info_16; /* tbtt_info_len = 16 */ 10618 } tbtt_info; 10619 } tDot11fIEreduced_neighbor_report; 10620 10621 #define DOT11F_EID_REDUCED_NEIGHBOR_REPORT (201) 10622 10623 /* N.B. These #defines do *not* include the EID & length */ 10624 #define DOT11F_IE_REDUCED_NEIGHBOR_REPORT_MIN_LEN (5) 10625 10626 #define DOT11F_IE_REDUCED_NEIGHBOR_REPORT_MAX_LEN (20) 10627 10628 #ifdef __cplusplus 10629 extern "C" { 10630 #endif /* C++ */ 10631 __must_check uint32_t dot11f_unpack_ie_reduced_neighbor_report( 10632 tpAniSirGlobal, 10633 uint8_t *, 10634 uint8_t, 10635 tDot11fIEreduced_neighbor_report*, 10636 bool); 10637 10638 uint32_t dot11f_pack_ie_reduced_neighbor_report( 10639 tpAniSirGlobal, 10640 tDot11fIEreduced_neighbor_report *, 10641 uint8_t *, 10642 uint32_t, 10643 uint32_t*); 10644 10645 uint32_t dot11f_get_packed_ie_reduced_neighbor_report( 10646 tpAniSirGlobal, 10647 tDot11fIEreduced_neighbor_report *, 10648 uint32_t*); 10649 10650 #ifdef __cplusplus 10651 }; /* End extern "C". */ 10652 #endif /* C++ */ 10653 10654 /* EID 221 (0xdd) {OUI 0x50, 0x6f, 0x9a, 0x1d} */ 10655 typedef struct sDot11fIEroaming_consortium_sel { 10656 uint8_t present; 10657 uint8_t num_data; 10658 uint8_t data[255]; 10659 } tDot11fIEroaming_consortium_sel; 10660 10661 #define DOT11F_EID_ROAMING_CONSORTIUM_SEL (221) 10662 10663 /* N.B. These #defines do *not* include the EID & length */ 10664 #define DOT11F_IE_ROAMING_CONSORTIUM_SEL_MIN_LEN (4) 10665 10666 #define DOT11F_IE_ROAMING_CONSORTIUM_SEL_MAX_LEN (259) 10667 10668 #ifdef __cplusplus 10669 extern "C" { 10670 #endif /* C++ */ 10671 __must_check uint32_t dot11f_unpack_ie_roaming_consortium_sel( 10672 tpAniSirGlobal, 10673 uint8_t *, 10674 uint8_t, 10675 tDot11fIEroaming_consortium_sel*, 10676 bool); 10677 10678 uint32_t dot11f_pack_ie_roaming_consortium_sel( 10679 tpAniSirGlobal, 10680 tDot11fIEroaming_consortium_sel *, 10681 uint8_t *, 10682 uint32_t, 10683 uint32_t*); 10684 10685 uint32_t dot11f_get_packed_ie_roaming_consortium_sel( 10686 tpAniSirGlobal, 10687 tDot11fIEroaming_consortium_sel *, 10688 uint32_t*); 10689 10690 #ifdef __cplusplus 10691 }; /* End extern "C". */ 10692 #endif /* C++ */ 10693 10694 /* EID 62 (0x3e) */ 10695 typedef struct sDot11fIEsec_chan_offset_ele { 10696 uint8_t present; 10697 uint8_t secondaryChannelOffset; 10698 } tDot11fIEsec_chan_offset_ele; 10699 10700 #define DOT11F_EID_SEC_CHAN_OFFSET_ELE (62) 10701 10702 /* N.B. These #defines do *not* include the EID & length */ 10703 #define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MIN_LEN (1) 10704 10705 #define DOT11F_IE_SEC_CHAN_OFFSET_ELE_MAX_LEN (1) 10706 10707 #ifdef __cplusplus 10708 extern "C" { 10709 #endif /* C++ */ 10710 __must_check uint32_t dot11f_unpack_ie_sec_chan_offset_ele( 10711 tpAniSirGlobal, 10712 uint8_t *, 10713 uint8_t, 10714 tDot11fIEsec_chan_offset_ele*, 10715 bool); 10716 10717 uint32_t dot11f_pack_ie_sec_chan_offset_ele( 10718 tpAniSirGlobal, 10719 tDot11fIEsec_chan_offset_ele *, 10720 uint8_t *, 10721 uint32_t, 10722 uint32_t*); 10723 10724 uint32_t dot11f_get_packed_ie_sec_chan_offset_ele( 10725 tpAniSirGlobal, 10726 tDot11fIEsec_chan_offset_ele *, 10727 uint32_t*); 10728 10729 #ifdef __cplusplus 10730 }; /* End extern "C". */ 10731 #endif /* C++ */ 10732 10733 /* EID 255 (0xff) Extended EID 39 (0x27) */ 10734 typedef struct sDot11fIEspatial_reuse { 10735 uint8_t present; 10736 uint8_t psr_disallow:1; 10737 uint8_t non_srg_pd_sr_disallow:1; 10738 uint8_t non_srg_offset_present:1; 10739 uint8_t srg_info_present:1; 10740 uint8_t sr_value15_allow:1; 10741 uint8_t reserved:3; 10742 union { 10743 struct { 10744 uint8_t non_srg_pd_max_offset; 10745 } info; /* non_srg_offset_present = 1 */ 10746 } non_srg_offset; 10747 union { 10748 struct { 10749 uint8_t srg_pd_min_offset; 10750 uint8_t srg_pd_max_offset; 10751 uint8_t srg_color[8]; 10752 uint8_t srg_partial_bssid[8]; 10753 } info; /* srg_info_present = 1 */ 10754 } srg_info; 10755 } tDot11fIEspatial_reuse; 10756 10757 #define DOT11F_EID_SPATIAL_REUSE (255) 10758 10759 /* N.B. These #defines do *not* include the EID & length */ 10760 #define DOT11F_IE_SPATIAL_REUSE_MIN_LEN (1) 10761 10762 #define DOT11F_IE_SPATIAL_REUSE_MAX_LEN (20) 10763 10764 #ifdef __cplusplus 10765 extern "C" { 10766 #endif /* C++ */ 10767 __must_check uint32_t dot11f_unpack_ie_spatial_reuse( 10768 tpAniSirGlobal, 10769 uint8_t *, 10770 uint8_t, 10771 tDot11fIEspatial_reuse*, 10772 bool); 10773 10774 uint32_t dot11f_pack_ie_spatial_reuse( 10775 tpAniSirGlobal, 10776 tDot11fIEspatial_reuse *, 10777 uint8_t *, 10778 uint32_t, 10779 uint32_t*); 10780 10781 uint32_t dot11f_get_packed_ie_spatial_reuse( 10782 tpAniSirGlobal, 10783 tDot11fIEspatial_reuse *, 10784 uint32_t*); 10785 10786 #ifdef __cplusplus 10787 }; /* End extern "C". */ 10788 #endif /* C++ */ 10789 10790 /* EID 255 (0xff) Extended EID 109 (0x6d) */ 10791 typedef struct sDot11fIEt2lm_ie { 10792 uint8_t present; 10793 uint8_t num_data; 10794 uint8_t data[255]; 10795 } tDot11fIEt2lm_ie; 10796 10797 #define DOT11F_EID_T2LM_IE (255) 10798 10799 /* N.B. These #defines do *not* include the EID & length */ 10800 #define DOT11F_IE_T2LM_IE_MIN_LEN (3) 10801 10802 #define DOT11F_IE_T2LM_IE_MAX_LEN (255) 10803 10804 #ifdef __cplusplus 10805 extern "C" { 10806 #endif /* C++ */ 10807 __must_check uint32_t dot11f_unpack_ie_t2lm_ie( 10808 tpAniSirGlobal, 10809 uint8_t *, 10810 uint8_t, 10811 tDot11fIEt2lm_ie*, 10812 bool); 10813 10814 uint32_t dot11f_pack_ie_t2lm_ie( 10815 tpAniSirGlobal, 10816 tDot11fIEt2lm_ie *, 10817 uint8_t *, 10818 uint32_t, 10819 uint32_t*); 10820 10821 uint32_t dot11f_get_packed_ie_t2lm_ie( 10822 tpAniSirGlobal, 10823 tDot11fIEt2lm_ie *, 10824 uint32_t*); 10825 10826 #ifdef __cplusplus 10827 }; /* End extern "C". */ 10828 #endif /* C++ */ 10829 10830 /* EID 221 (0xdd) {OUI 0x00, 0x90, 0x4c, 0x04} */ 10831 typedef struct sDot11fIEvendor_vht_ie { 10832 uint8_t present; 10833 uint8_t sub_type; 10834 tDot11fIEVHTCaps VHTCaps; 10835 tDot11fIEVHTOperation VHTOperation; 10836 } tDot11fIEvendor_vht_ie; 10837 10838 #define DOT11F_EID_VENDOR_VHT_IE (221) 10839 10840 /* N.B. These #defines do *not* include the EID & length */ 10841 #define DOT11F_IE_VENDOR_VHT_IE_MIN_LEN (5) 10842 10843 #define DOT11F_IE_VENDOR_VHT_IE_MAX_LEN (26) 10844 10845 #ifdef __cplusplus 10846 extern "C" { 10847 #endif /* C++ */ 10848 __must_check uint32_t dot11f_unpack_ie_vendor_vht_ie( 10849 tpAniSirGlobal, 10850 uint8_t *, 10851 uint8_t, 10852 tDot11fIEvendor_vht_ie*, 10853 bool); 10854 10855 uint32_t dot11f_pack_ie_vendor_vht_ie( 10856 tpAniSirGlobal, 10857 tDot11fIEvendor_vht_ie *, 10858 uint8_t *, 10859 uint32_t, 10860 uint32_t*); 10861 10862 uint32_t dot11f_get_packed_ie_vendor_vht_ie( 10863 tpAniSirGlobal, 10864 tDot11fIEvendor_vht_ie *, 10865 uint32_t*); 10866 10867 #ifdef __cplusplus 10868 }; /* End extern "C". */ 10869 #endif /* C++ */ 10870 /************************************************************************ 10871 * Frames 10872 **********************************************************************/ 10873 10874 typedef struct sDot11fAddTSRequest{ 10875 tDot11fFfCategory Category; 10876 tDot11fFfAction Action; 10877 tDot11fFfDialogToken DialogToken; 10878 tDot11fIETSPEC TSPEC; 10879 uint16_t num_TCLAS; 10880 tDot11fIETCLAS TCLAS[2]; 10881 tDot11fIETCLASSPROC TCLASSPROC; 10882 tDot11fIEWMMTSPEC WMMTSPEC; 10883 uint16_t num_WMMTCLAS; 10884 tDot11fIEWMMTCLAS WMMTCLAS[2]; 10885 tDot11fIEWMMTCLASPROC WMMTCLASPROC; 10886 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet; 10887 } tDot11fAddTSRequest; 10888 10889 #define DOT11F_ADDTSREQUEST (1) 10890 10891 #ifdef __cplusplus 10892 extern "C" { 10893 #endif /* C++ */ 10894 10895 uint32_t dot11f_unpack_add_ts_request(tpAniSirGlobal pCtx, 10896 uint8_t *pBuf, uint32_t nBuf, 10897 tDot11fAddTSRequest * pFrm, bool append_ie); 10898 uint32_t dot11f_pack_add_ts_request(tpAniSirGlobal pCtx, 10899 tDot11fAddTSRequest *pFrm, uint8_t *pBuf, 10900 uint32_t nBuf, uint32_t *pnConsumed); 10901 uint32_t dot11f_get_packed_add_ts_request_size(tpAniSirGlobal pCtx, 10902 tDot11fAddTSRequest *pFrm, 10903 uint32_t *pnNeeded); 10904 10905 #ifdef __cplusplus 10906 } /* End extern "C". */ 10907 #endif /* C++ */ 10908 10909 typedef struct sDot11fAddTSResponse{ 10910 tDot11fFfCategory Category; 10911 tDot11fFfAction Action; 10912 tDot11fFfDialogToken DialogToken; 10913 tDot11fFfStatus Status; 10914 tDot11fIETSDelay TSDelay; 10915 tDot11fIETSPEC TSPEC; 10916 uint16_t num_TCLAS; 10917 tDot11fIETCLAS TCLAS[2]; 10918 tDot11fIETCLASSPROC TCLASSPROC; 10919 tDot11fIESchedule Schedule; 10920 tDot11fIEWMMTSDelay WMMTSDelay; 10921 tDot11fIEWMMSchedule WMMSchedule; 10922 tDot11fIEWMMTSPEC WMMTSPEC; 10923 uint16_t num_WMMTCLAS; 10924 tDot11fIEWMMTCLAS WMMTCLAS[2]; 10925 tDot11fIEWMMTCLASPROC WMMTCLASPROC; 10926 tDot11fIEESETrafStrmMet ESETrafStrmMet; 10927 } tDot11fAddTSResponse; 10928 10929 #define DOT11F_ADDTSRESPONSE (2) 10930 10931 #ifdef __cplusplus 10932 extern "C" { 10933 #endif /* C++ */ 10934 10935 uint32_t dot11f_unpack_add_ts_response(tpAniSirGlobal pCtx, 10936 uint8_t *pBuf, uint32_t nBuf, 10937 tDot11fAddTSResponse * pFrm, bool append_ie); 10938 uint32_t dot11f_pack_add_ts_response(tpAniSirGlobal pCtx, 10939 tDot11fAddTSResponse *pFrm, uint8_t *pBuf, 10940 uint32_t nBuf, uint32_t *pnConsumed); 10941 uint32_t dot11f_get_packed_add_ts_response_size(tpAniSirGlobal pCtx, 10942 tDot11fAddTSResponse *pFrm, 10943 uint32_t *pnNeeded); 10944 10945 #ifdef __cplusplus 10946 } /* End extern "C". */ 10947 #endif /* C++ */ 10948 10949 typedef struct sDot11fAssocRequest{ 10950 tDot11fFfCapabilities Capabilities; 10951 tDot11fFfListenInterval ListenInterval; 10952 tDot11fIESSID SSID; 10953 tDot11fIESuppRates SuppRates; 10954 tDot11fIEExtSuppRates ExtSuppRates; 10955 tDot11fIEPowerCaps PowerCaps; 10956 tDot11fIESuppChannels SuppChannels; 10957 tDot11fIERSNOpaque RSNOpaque; 10958 tDot11fIEQOSCapsStation QOSCapsStation; 10959 tDot11fIERRMEnabledCap RRMEnabledCap; 10960 tDot11fIEMobilityDomain MobilityDomain; 10961 tDot11fIESuppOperatingClasses SuppOperatingClasses; 10962 tDot11fIEHTCaps HTCaps; 10963 tDot11fIEExtCap ExtCap; 10964 tDot11fIEVHTCaps VHTCaps; 10965 tDot11fIEOperatingMode OperatingMode; 10966 tDot11fIEfils_session fils_session; 10967 tDot11fIEfils_public_key fils_public_key; 10968 tDot11fIEfils_key_confirmation fils_key_confirmation; 10969 tDot11fIEfils_hlp_container fils_hlp_container; 10970 tDot11fIEbss_max_idle_period bss_max_idle_period; 10971 tDot11fIEFTInfo FTInfo; 10972 tDot11fIEhe_cap he_cap; 10973 tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; 10974 tDot11fIEWAPIOpaque WAPIOpaque; 10975 tDot11fIEWAPI WAPI; 10976 tDot11fIEQosMapSet QosMapSet; 10977 tDot11fIEfragment_ie fragment_ie; 10978 tDot11fIEdh_parameter_element dh_parameter_element; 10979 tDot11fIEeht_cap eht_cap; 10980 tDot11fIEmlo_ie mlo_ie; 10981 uint16_t num_t2lm_ie; 10982 tDot11fIEt2lm_ie t2lm_ie[2]; 10983 tDot11fIEWPAOpaque WPAOpaque; 10984 tDot11fIEWMMCaps WMMCaps; 10985 tDot11fIEWMMInfoStation WMMInfoStation; 10986 tDot11fIEWscIEOpaque WscIEOpaque; 10987 tDot11fIEESERadMgmtCap ESERadMgmtCap; 10988 tDot11fIEESEVersion ESEVersion; 10989 tDot11fIEP2PIEOpaque P2PIEOpaque; 10990 tDot11fIEWFDIEOpaque WFDIEOpaque; 10991 tDot11fIEvendor_vht_ie vendor_vht_ie; 10992 tDot11fIEhs20vendor_ie hs20vendor_ie; 10993 tDot11fIEqcn_ie qcn_ie; 10994 tDot11fIEosen_ie osen_ie; 10995 tDot11fIEroaming_consortium_sel roaming_consortium_sel; 10996 } tDot11fAssocRequest; 10997 10998 #define DOT11F_ASSOCREQUEST (3) 10999 11000 #ifdef __cplusplus 11001 extern "C" { 11002 #endif /* C++ */ 11003 11004 uint32_t dot11f_unpack_assoc_request(tpAniSirGlobal pCtx, 11005 uint8_t *pBuf, uint32_t nBuf, 11006 tDot11fAssocRequest * pFrm, bool append_ie); 11007 uint32_t dot11f_pack_assoc_request(tpAniSirGlobal pCtx, 11008 tDot11fAssocRequest *pFrm, uint8_t *pBuf, 11009 uint32_t nBuf, uint32_t *pnConsumed); 11010 uint32_t dot11f_get_packed_assoc_request_size(tpAniSirGlobal pCtx, 11011 tDot11fAssocRequest *pFrm, 11012 uint32_t *pnNeeded); 11013 11014 #ifdef __cplusplus 11015 } /* End extern "C". */ 11016 #endif /* C++ */ 11017 11018 typedef struct sDot11fAssocResponse{ 11019 tDot11fFfCapabilities Capabilities; 11020 tDot11fFfStatus Status; 11021 tDot11fFfAID AID; 11022 tDot11fIESuppRates SuppRates; 11023 tDot11fIEExtSuppRates ExtSuppRates; 11024 tDot11fIEEDCAParamSet EDCAParamSet; 11025 tDot11fIERCPIIE RCPIIE; 11026 tDot11fIERSNIIE RSNIIE; 11027 tDot11fIERRMEnabledCap RRMEnabledCap; 11028 tDot11fIEMobilityDomain MobilityDomain; 11029 tDot11fIEFTInfo FTInfo; 11030 tDot11fIETimeoutInterval TimeoutInterval; 11031 tDot11fIEHTCaps HTCaps; 11032 tDot11fIEHTInfo HTInfo; 11033 tDot11fIEOBSSScanParameters OBSSScanParameters; 11034 tDot11fIEExtCap ExtCap; 11035 tDot11fIEbss_max_idle_period bss_max_idle_period; 11036 tDot11fIEQosMapSet QosMapSet; 11037 tDot11fIEVHTCaps VHTCaps; 11038 tDot11fIEVHTOperation VHTOperation; 11039 tDot11fIEOperatingMode OperatingMode; 11040 tDot11fIEfils_session fils_session; 11041 tDot11fIEfils_public_key fils_public_key; 11042 tDot11fIEfils_key_confirmation fils_key_confirmation; 11043 tDot11fIEfils_hlp_container fils_hlp_container; 11044 tDot11fIEhe_cap he_cap; 11045 tDot11fIEhe_op he_op; 11046 tDot11fIEspatial_reuse spatial_reuse; 11047 tDot11fIEbss_color_change bss_color_change; 11048 tDot11fIEmu_edca_param_set mu_edca_param_set; 11049 tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; 11050 uint16_t num_RICDataDesc; 11051 tDot11fIERICDataDesc RICDataDesc[2]; 11052 tDot11fIEESETxmitPower ESETxmitPower; 11053 tDot11fIEfragment_ie fragment_ie; 11054 tDot11fIEfils_kde fils_kde; 11055 tDot11fIEeht_cap eht_cap; 11056 tDot11fIEeht_op eht_op; 11057 tDot11fIEmlo_ie mlo_ie; 11058 uint16_t num_t2lm_ie; 11059 tDot11fIEt2lm_ie t2lm_ie[2]; 11060 tDot11fIEWPA WPA; 11061 tDot11fIEWMMParams WMMParams; 11062 tDot11fIEWMMCaps WMMCaps; 11063 tDot11fIEESERadMgmtCap ESERadMgmtCap; 11064 tDot11fIEESETrafStrmMet ESETrafStrmMet; 11065 uint16_t num_WMMTSPEC; 11066 tDot11fIEWMMTSPEC WMMTSPEC[4]; 11067 tDot11fIEWscAssocRes WscAssocRes; 11068 tDot11fIEP2PAssocRes P2PAssocRes; 11069 tDot11fIEvendor_vht_ie vendor_vht_ie; 11070 tDot11fIEqcn_ie qcn_ie; 11071 tDot11fIEMBO_IE MBO_IE; 11072 tDot11fIEreduced_neighbor_report reduced_neighbor_report; 11073 } tDot11fAssocResponse; 11074 11075 #define DOT11F_ASSOCRESPONSE (4) 11076 11077 #ifdef __cplusplus 11078 extern "C" { 11079 #endif /* C++ */ 11080 11081 uint32_t dot11f_unpack_assoc_response(tpAniSirGlobal pCtx, 11082 uint8_t *pBuf, uint32_t nBuf, 11083 tDot11fAssocResponse * pFrm, bool append_ie); 11084 uint32_t dot11f_pack_assoc_response(tpAniSirGlobal pCtx, 11085 tDot11fAssocResponse *pFrm, uint8_t *pBuf, 11086 uint32_t nBuf, uint32_t *pnConsumed); 11087 uint32_t dot11f_get_packed_assoc_response_size(tpAniSirGlobal pCtx, 11088 tDot11fAssocResponse *pFrm, 11089 uint32_t *pnNeeded); 11090 11091 #ifdef __cplusplus 11092 } /* End extern "C". */ 11093 #endif /* C++ */ 11094 11095 typedef struct sDot11fAuthentication{ 11096 tDot11fFfAuthAlgo AuthAlgo; 11097 tDot11fFfAuthSeqNo AuthSeqNo; 11098 tDot11fFfStatus Status; 11099 tDot11fIEChallengeText ChallengeText; 11100 tDot11fIERSNOpaque RSNOpaque; 11101 tDot11fIEMobilityDomain MobilityDomain; 11102 tDot11fIEFTInfo FTInfo; 11103 tDot11fIETimeoutInterval TimeoutInterval; 11104 uint16_t num_RICDataDesc; 11105 tDot11fIERICDataDesc RICDataDesc[2]; 11106 tDot11fIEfils_nonce fils_nonce; 11107 tDot11fIEfils_session fils_session; 11108 tDot11fIEfils_wrapped_data fils_wrapped_data; 11109 tDot11fIEfils_assoc_delay_info fils_assoc_delay_info; 11110 tDot11fIEmlo_ie mlo_ie; 11111 } tDot11fAuthentication; 11112 11113 #define DOT11F_AUTHENTICATION (5) 11114 11115 #ifdef __cplusplus 11116 extern "C" { 11117 #endif /* C++ */ 11118 11119 uint32_t dot11f_unpack_authentication(tpAniSirGlobal pCtx, 11120 uint8_t *pBuf, uint32_t nBuf, 11121 tDot11fAuthentication * pFrm, bool append_ie); 11122 uint32_t dot11f_pack_authentication(tpAniSirGlobal pCtx, 11123 tDot11fAuthentication *pFrm, uint8_t *pBuf, 11124 uint32_t nBuf, uint32_t *pnConsumed); 11125 uint32_t dot11f_get_packed_authentication_size(tpAniSirGlobal pCtx, 11126 tDot11fAuthentication *pFrm, 11127 uint32_t *pnNeeded); 11128 11129 #ifdef __cplusplus 11130 } /* End extern "C". */ 11131 #endif /* C++ */ 11132 11133 typedef struct sDot11fBeacon{ 11134 tDot11fFfTimeStamp TimeStamp; 11135 tDot11fFfBeaconInterval BeaconInterval; 11136 tDot11fFfCapabilities Capabilities; 11137 tDot11fIESSID SSID; 11138 tDot11fIESuppRates SuppRates; 11139 tDot11fIEFHParamSet FHParamSet; 11140 tDot11fIEDSParams DSParams; 11141 tDot11fIECFParams CFParams; 11142 tDot11fIETIM TIM; 11143 tDot11fIECountry Country; 11144 tDot11fIEFHParams FHParams; 11145 tDot11fIEFHPattTable FHPattTable; 11146 tDot11fIEPowerConstraints PowerConstraints; 11147 tDot11fIEChanSwitchAnn ChanSwitchAnn; 11148 tDot11fIEQuiet Quiet; 11149 tDot11fIETPCReport TPCReport; 11150 tDot11fIEERPInfo ERPInfo; 11151 tDot11fIEExtSuppRates ExtSuppRates; 11152 tDot11fIERSN RSN; 11153 tDot11fIEQBSSLoad QBSSLoad; 11154 tDot11fIEEDCAParamSet EDCAParamSet; 11155 tDot11fIEQOSCapsAp QOSCapsAp; 11156 tDot11fIEAPChannelReport APChannelReport; 11157 tDot11fIERRMEnabledCap RRMEnabledCap; 11158 tDot11fIEMobilityDomain MobilityDomain; 11159 tDot11fIEext_chan_switch_ann ext_chan_switch_ann; 11160 tDot11fIESuppOperatingClasses SuppOperatingClasses; 11161 tDot11fIEHTCaps HTCaps; 11162 tDot11fIEHTInfo HTInfo; 11163 tDot11fIEOBSSScanParameters OBSSScanParameters; 11164 tDot11fIEExtCap ExtCap; 11165 tDot11fIEVHTCaps VHTCaps; 11166 tDot11fIEVHTOperation VHTOperation; 11167 uint16_t num_transmit_power_env; 11168 tDot11fIEtransmit_power_env transmit_power_env[8]; 11169 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper; 11170 tDot11fIEVHTExtBssLoad VHTExtBssLoad; 11171 tDot11fIEOperatingMode OperatingMode; 11172 tDot11fIEfils_indication fils_indication; 11173 tDot11fIEmax_chan_switch_time max_chan_switch_time; 11174 tDot11fIEesp_information esp_information; 11175 tDot11fIEhe_cap he_cap; 11176 tDot11fIEhe_op he_op; 11177 tDot11fIEspatial_reuse spatial_reuse; 11178 tDot11fIEbss_color_change bss_color_change; 11179 tDot11fIEmu_edca_param_set mu_edca_param_set; 11180 tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; 11181 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele; 11182 tDot11fIEWAPI WAPI; 11183 tDot11fIEESETxmitPower ESETxmitPower; 11184 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 11185 tDot11fIEeht_cap eht_cap; 11186 tDot11fIEeht_op eht_op; 11187 tDot11fIEmlo_ie mlo_ie; 11188 uint16_t num_t2lm_ie; 11189 tDot11fIEt2lm_ie t2lm_ie[2]; 11190 tDot11fIEWPA WPA; 11191 tDot11fIEWMMInfoAp WMMInfoAp; 11192 tDot11fIEWMMParams WMMParams; 11193 tDot11fIEWMMCaps WMMCaps; 11194 tDot11fIEESEVersion ESEVersion; 11195 tDot11fIEESERadMgmtCap ESERadMgmtCap; 11196 tDot11fIEESETrafStrmMet ESETrafStrmMet; 11197 tDot11fIEWscBeacon WscBeacon; 11198 tDot11fIEP2PBeacon P2PBeacon; 11199 tDot11fIEVendor1IE Vendor1IE; 11200 tDot11fIEvendor_vht_ie vendor_vht_ie; 11201 tDot11fIEVendor3IE Vendor3IE; 11202 tDot11fIEhs20vendor_ie hs20vendor_ie; 11203 tDot11fIEQComVendorIE QComVendorIE; 11204 tDot11fIEMBO_IE MBO_IE; 11205 tDot11fIEqcn_ie qcn_ie; 11206 tDot11fIEreduced_neighbor_report reduced_neighbor_report; 11207 } tDot11fBeacon; 11208 11209 #define DOT11F_BEACON (6) 11210 11211 #ifdef __cplusplus 11212 extern "C" { 11213 #endif /* C++ */ 11214 11215 uint32_t dot11f_unpack_beacon(tpAniSirGlobal pCtx, 11216 uint8_t *pBuf, uint32_t nBuf, 11217 tDot11fBeacon * pFrm, bool append_ie); 11218 uint32_t dot11f_pack_beacon(tpAniSirGlobal pCtx, 11219 tDot11fBeacon *pFrm, uint8_t *pBuf, 11220 uint32_t nBuf, uint32_t *pnConsumed); 11221 uint32_t dot11f_get_packed_beacon_size(tpAniSirGlobal pCtx, 11222 tDot11fBeacon *pFrm, 11223 uint32_t *pnNeeded); 11224 11225 #ifdef __cplusplus 11226 } /* End extern "C". */ 11227 #endif /* C++ */ 11228 11229 typedef struct sDot11fBeacon1{ 11230 tDot11fFfTimeStamp TimeStamp; 11231 tDot11fFfBeaconInterval BeaconInterval; 11232 tDot11fFfCapabilities Capabilities; 11233 tDot11fIESSID SSID; 11234 tDot11fIESuppRates SuppRates; 11235 tDot11fIEDSParams DSParams; 11236 } tDot11fBeacon1; 11237 11238 #define DOT11F_BEACON1 (7) 11239 11240 #ifdef __cplusplus 11241 extern "C" { 11242 #endif /* C++ */ 11243 11244 uint32_t dot11f_unpack_beacon1(tpAniSirGlobal pCtx, 11245 uint8_t *pBuf, uint32_t nBuf, 11246 tDot11fBeacon1 * pFrm, bool append_ie); 11247 uint32_t dot11f_pack_beacon1(tpAniSirGlobal pCtx, 11248 tDot11fBeacon1 *pFrm, uint8_t *pBuf, 11249 uint32_t nBuf, uint32_t *pnConsumed); 11250 uint32_t dot11f_get_packed_beacon1_size(tpAniSirGlobal pCtx, 11251 tDot11fBeacon1 *pFrm, 11252 uint32_t *pnNeeded); 11253 11254 #ifdef __cplusplus 11255 } /* End extern "C". */ 11256 #endif /* C++ */ 11257 11258 typedef struct sDot11fBeacon2{ 11259 tDot11fIECountry Country; 11260 tDot11fIEPowerConstraints PowerConstraints; 11261 tDot11fIEChanSwitchAnn ChanSwitchAnn; 11262 tDot11fIEQuiet Quiet; 11263 tDot11fIETPCReport TPCReport; 11264 tDot11fIEERPInfo ERPInfo; 11265 tDot11fIEExtSuppRates ExtSuppRates; 11266 tDot11fIERSNOpaque RSNOpaque; 11267 tDot11fIEEDCAParamSet EDCAParamSet; 11268 tDot11fIEAPChannelReport APChannelReport; 11269 tDot11fIERRMEnabledCap RRMEnabledCap; 11270 tDot11fIEMobilityDomain MobilityDomain; 11271 tDot11fIEext_chan_switch_ann ext_chan_switch_ann; 11272 tDot11fIESuppOperatingClasses SuppOperatingClasses; 11273 tDot11fIEHTCaps HTCaps; 11274 tDot11fIEHTInfo HTInfo; 11275 tDot11fIEOBSSScanParameters OBSSScanParameters; 11276 tDot11fIEExtCap ExtCap; 11277 tDot11fIEVHTCaps VHTCaps; 11278 tDot11fIEVHTOperation VHTOperation; 11279 uint16_t num_transmit_power_env; 11280 tDot11fIEtransmit_power_env transmit_power_env[8]; 11281 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper; 11282 tDot11fIEVHTExtBssLoad VHTExtBssLoad; 11283 tDot11fIEOperatingMode OperatingMode; 11284 tDot11fIEfils_indication fils_indication; 11285 tDot11fIEmax_chan_switch_time max_chan_switch_time; 11286 tDot11fIEesp_information esp_information; 11287 tDot11fIEhe_cap he_cap; 11288 tDot11fIEhe_op he_op; 11289 tDot11fIEspatial_reuse spatial_reuse; 11290 tDot11fIEbss_color_change bss_color_change; 11291 tDot11fIEmu_edca_param_set mu_edca_param_set; 11292 tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; 11293 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele; 11294 tDot11fIEWAPI WAPI; 11295 tDot11fIEESETxmitPower ESETxmitPower; 11296 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 11297 tDot11fIEeht_cap eht_cap; 11298 tDot11fIEeht_op eht_op; 11299 tDot11fIEmlo_ie mlo_ie; 11300 uint16_t num_t2lm_ie; 11301 tDot11fIEt2lm_ie t2lm_ie[2]; 11302 tDot11fIEWPA WPA; 11303 tDot11fIEWMMInfoAp WMMInfoAp; 11304 tDot11fIEWMMParams WMMParams; 11305 tDot11fIEWMMCaps WMMCaps; 11306 tDot11fIEESERadMgmtCap ESERadMgmtCap; 11307 tDot11fIEESETrafStrmMet ESETrafStrmMet; 11308 tDot11fIEWscBeacon WscBeacon; 11309 tDot11fIEP2PBeacon P2PBeacon; 11310 tDot11fIEVendor1IE Vendor1IE; 11311 tDot11fIEvendor_vht_ie vendor_vht_ie; 11312 tDot11fIEVendor3IE Vendor3IE; 11313 tDot11fIEhs20vendor_ie hs20vendor_ie; 11314 tDot11fIEQComVendorIE QComVendorIE; 11315 tDot11fIEESEVersion ESEVersion; 11316 tDot11fIEqcn_ie qcn_ie; 11317 tDot11fIEreduced_neighbor_report reduced_neighbor_report; 11318 } tDot11fBeacon2; 11319 11320 #define DOT11F_BEACON2 (8) 11321 11322 #ifdef __cplusplus 11323 extern "C" { 11324 #endif /* C++ */ 11325 11326 uint32_t dot11f_unpack_beacon2(tpAniSirGlobal pCtx, 11327 uint8_t *pBuf, uint32_t nBuf, 11328 tDot11fBeacon2 * pFrm, bool append_ie); 11329 uint32_t dot11f_pack_beacon2(tpAniSirGlobal pCtx, 11330 tDot11fBeacon2 *pFrm, uint8_t *pBuf, 11331 uint32_t nBuf, uint32_t *pnConsumed); 11332 uint32_t dot11f_get_packed_beacon2_size(tpAniSirGlobal pCtx, 11333 tDot11fBeacon2 *pFrm, 11334 uint32_t *pnNeeded); 11335 11336 #ifdef __cplusplus 11337 } /* End extern "C". */ 11338 #endif /* C++ */ 11339 11340 typedef struct sDot11fBeaconIEs{ 11341 tDot11fIESSID SSID; 11342 tDot11fIESuppRates SuppRates; 11343 tDot11fIEFHParamSet FHParamSet; 11344 tDot11fIEDSParams DSParams; 11345 tDot11fIECFParams CFParams; 11346 tDot11fIETIM TIM; 11347 tDot11fIECountry Country; 11348 tDot11fIEFHParams FHParams; 11349 tDot11fIEFHPattTable FHPattTable; 11350 tDot11fIEPowerConstraints PowerConstraints; 11351 tDot11fIEChanSwitchAnn ChanSwitchAnn; 11352 tDot11fIEQuiet Quiet; 11353 tDot11fIETPCReport TPCReport; 11354 tDot11fIEERPInfo ERPInfo; 11355 tDot11fIEExtSuppRates ExtSuppRates; 11356 tDot11fIERSN RSN; 11357 tDot11fIEQBSSLoad QBSSLoad; 11358 tDot11fIEEDCAParamSet EDCAParamSet; 11359 tDot11fIEQOSCapsAp QOSCapsAp; 11360 tDot11fIEAPChannelReport APChannelReport; 11361 tDot11fIERRMEnabledCap RRMEnabledCap; 11362 tDot11fIEMobilityDomain MobilityDomain; 11363 tDot11fIEext_chan_switch_ann ext_chan_switch_ann; 11364 tDot11fIESuppOperatingClasses SuppOperatingClasses; 11365 tDot11fIEHTCaps HTCaps; 11366 tDot11fIEHTInfo HTInfo; 11367 tDot11fIEOBSSScanParameters OBSSScanParameters; 11368 tDot11fIEExtCap ExtCap; 11369 tDot11fIEVHTCaps VHTCaps; 11370 tDot11fIEVHTOperation VHTOperation; 11371 uint16_t num_transmit_power_env; 11372 tDot11fIEtransmit_power_env transmit_power_env[8]; 11373 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper; 11374 tDot11fIEVHTExtBssLoad VHTExtBssLoad; 11375 tDot11fIEOperatingMode OperatingMode; 11376 tDot11fIEfils_indication fils_indication; 11377 tDot11fIEmax_chan_switch_time max_chan_switch_time; 11378 tDot11fIEesp_information esp_information; 11379 tDot11fIEhe_cap he_cap; 11380 tDot11fIEhe_op he_op; 11381 tDot11fIEspatial_reuse spatial_reuse; 11382 tDot11fIEbss_color_change bss_color_change; 11383 tDot11fIEmu_edca_param_set mu_edca_param_set; 11384 tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; 11385 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele; 11386 tDot11fIEWAPI WAPI; 11387 tDot11fIEESETxmitPower ESETxmitPower; 11388 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 11389 tDot11fIEeht_cap eht_cap; 11390 tDot11fIEeht_op eht_op; 11391 tDot11fIEmlo_ie mlo_ie; 11392 uint16_t num_t2lm_ie; 11393 tDot11fIEt2lm_ie t2lm_ie[2]; 11394 tDot11fIEWPA WPA; 11395 tDot11fIEWMMInfoAp WMMInfoAp; 11396 tDot11fIEWMMParams WMMParams; 11397 tDot11fIEWMMCaps WMMCaps; 11398 tDot11fIEESEVersion ESEVersion; 11399 tDot11fIEESERadMgmtCap ESERadMgmtCap; 11400 tDot11fIEESETrafStrmMet ESETrafStrmMet; 11401 tDot11fIEWscBeaconProbeRes WscBeaconProbeRes; 11402 tDot11fIEP2PBeaconProbeRes P2PBeaconProbeRes; 11403 tDot11fIEVendor1IE Vendor1IE; 11404 tDot11fIEvendor_vht_ie vendor_vht_ie; 11405 tDot11fIEVendor3IE Vendor3IE; 11406 tDot11fIEhs20vendor_ie hs20vendor_ie; 11407 tDot11fIEQComVendorIE QComVendorIE; 11408 tDot11fIEMBO_IE MBO_IE; 11409 tDot11fIEqcn_ie qcn_ie; 11410 tDot11fIEreduced_neighbor_report reduced_neighbor_report; 11411 } tDot11fBeaconIEs; 11412 11413 #define DOT11F_BEACONIES (9) 11414 11415 #ifdef __cplusplus 11416 extern "C" { 11417 #endif /* C++ */ 11418 11419 uint32_t dot11f_unpack_beacon_i_es(tpAniSirGlobal pCtx, 11420 uint8_t *pBuf, uint32_t nBuf, 11421 tDot11fBeaconIEs * pFrm, bool append_ie); 11422 uint32_t dot11f_pack_beacon_i_es(tpAniSirGlobal pCtx, 11423 tDot11fBeaconIEs *pFrm, uint8_t *pBuf, 11424 uint32_t nBuf, uint32_t *pnConsumed); 11425 uint32_t dot11f_get_packed_beacon_i_es_size(tpAniSirGlobal pCtx, 11426 tDot11fBeaconIEs *pFrm, 11427 uint32_t *pnNeeded); 11428 11429 #ifdef __cplusplus 11430 } /* End extern "C". */ 11431 #endif /* C++ */ 11432 11433 typedef struct sDot11fChannelSwitch{ 11434 tDot11fFfCategory Category; 11435 tDot11fFfAction Action; 11436 tDot11fIEChanSwitchAnn ChanSwitchAnn; 11437 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele; 11438 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 11439 } tDot11fChannelSwitch; 11440 11441 #define DOT11F_CHANNELSWITCH (10) 11442 11443 #ifdef __cplusplus 11444 extern "C" { 11445 #endif /* C++ */ 11446 11447 uint32_t dot11f_unpack_channel_switch(tpAniSirGlobal pCtx, 11448 uint8_t *pBuf, uint32_t nBuf, 11449 tDot11fChannelSwitch * pFrm, bool append_ie); 11450 uint32_t dot11f_pack_channel_switch(tpAniSirGlobal pCtx, 11451 tDot11fChannelSwitch *pFrm, uint8_t *pBuf, 11452 uint32_t nBuf, uint32_t *pnConsumed); 11453 uint32_t dot11f_get_packed_channel_switch_size(tpAniSirGlobal pCtx, 11454 tDot11fChannelSwitch *pFrm, 11455 uint32_t *pnNeeded); 11456 11457 #ifdef __cplusplus 11458 } /* End extern "C". */ 11459 #endif /* C++ */ 11460 11461 typedef struct sDot11fDeAuth{ 11462 tDot11fFfReason Reason; 11463 tDot11fIEP2PDeAuth P2PDeAuth; 11464 } tDot11fDeAuth; 11465 11466 #define DOT11F_DEAUTH (11) 11467 11468 #ifdef __cplusplus 11469 extern "C" { 11470 #endif /* C++ */ 11471 11472 uint32_t dot11f_unpack_de_auth(tpAniSirGlobal pCtx, 11473 uint8_t *pBuf, uint32_t nBuf, 11474 tDot11fDeAuth * pFrm, bool append_ie); 11475 uint32_t dot11f_pack_de_auth(tpAniSirGlobal pCtx, 11476 tDot11fDeAuth *pFrm, uint8_t *pBuf, 11477 uint32_t nBuf, uint32_t *pnConsumed); 11478 uint32_t dot11f_get_packed_de_auth_size(tpAniSirGlobal pCtx, 11479 tDot11fDeAuth *pFrm, 11480 uint32_t *pnNeeded); 11481 11482 #ifdef __cplusplus 11483 } /* End extern "C". */ 11484 #endif /* C++ */ 11485 11486 typedef struct sDot11fDelTS{ 11487 tDot11fFfCategory Category; 11488 tDot11fFfAction Action; 11489 tDot11fFfTSInfo TSInfo; 11490 tDot11fFfReason Reason; 11491 } tDot11fDelTS; 11492 11493 #define DOT11F_DELTS (12) 11494 11495 #ifdef __cplusplus 11496 extern "C" { 11497 #endif /* C++ */ 11498 11499 uint32_t dot11f_unpack_del_ts(tpAniSirGlobal pCtx, 11500 uint8_t *pBuf, uint32_t nBuf, 11501 tDot11fDelTS * pFrm, bool append_ie); 11502 uint32_t dot11f_pack_del_ts(tpAniSirGlobal pCtx, 11503 tDot11fDelTS *pFrm, uint8_t *pBuf, 11504 uint32_t nBuf, uint32_t *pnConsumed); 11505 uint32_t dot11f_get_packed_del_ts_size(tpAniSirGlobal pCtx, 11506 tDot11fDelTS *pFrm, 11507 uint32_t *pnNeeded); 11508 11509 #ifdef __cplusplus 11510 } /* End extern "C". */ 11511 #endif /* C++ */ 11512 11513 typedef struct sDot11fDisassociation{ 11514 tDot11fFfReason Reason; 11515 tDot11fIEP2PDisAssoc P2PDisAssoc; 11516 } tDot11fDisassociation; 11517 11518 #define DOT11F_DISASSOCIATION (13) 11519 11520 #ifdef __cplusplus 11521 extern "C" { 11522 #endif /* C++ */ 11523 11524 uint32_t dot11f_unpack_disassociation(tpAniSirGlobal pCtx, 11525 uint8_t *pBuf, uint32_t nBuf, 11526 tDot11fDisassociation * pFrm, bool append_ie); 11527 uint32_t dot11f_pack_disassociation(tpAniSirGlobal pCtx, 11528 tDot11fDisassociation *pFrm, uint8_t *pBuf, 11529 uint32_t nBuf, uint32_t *pnConsumed); 11530 uint32_t dot11f_get_packed_disassociation_size(tpAniSirGlobal pCtx, 11531 tDot11fDisassociation *pFrm, 11532 uint32_t *pnNeeded); 11533 11534 #ifdef __cplusplus 11535 } /* End extern "C". */ 11536 #endif /* C++ */ 11537 11538 typedef struct sDot11fLinkMeasurementReport{ 11539 tDot11fFfCategory Category; 11540 tDot11fFfAction Action; 11541 tDot11fFfDialogToken DialogToken; 11542 tDot11fFfTPCEleID TPCEleID; 11543 tDot11fFfTPCEleLen TPCEleLen; 11544 tDot11fFfTxPower TxPower; 11545 tDot11fFfLinkMargin LinkMargin; 11546 tDot11fFfRxAntennaId RxAntennaId; 11547 tDot11fFfTxAntennaId TxAntennaId; 11548 tDot11fFfRCPI RCPI; 11549 tDot11fFfRSNI RSNI; 11550 } tDot11fLinkMeasurementReport; 11551 11552 #define DOT11F_LINKMEASUREMENTREPORT (14) 11553 11554 #ifdef __cplusplus 11555 extern "C" { 11556 #endif /* C++ */ 11557 11558 uint32_t dot11f_unpack_link_measurement_report(tpAniSirGlobal pCtx, 11559 uint8_t *pBuf, uint32_t nBuf, 11560 tDot11fLinkMeasurementReport * pFrm, bool append_ie); 11561 uint32_t dot11f_pack_link_measurement_report(tpAniSirGlobal pCtx, 11562 tDot11fLinkMeasurementReport *pFrm, uint8_t *pBuf, 11563 uint32_t nBuf, uint32_t *pnConsumed); 11564 uint32_t dot11f_get_packed_link_measurement_report_size(tpAniSirGlobal pCtx, 11565 tDot11fLinkMeasurementReport *pFrm, 11566 uint32_t *pnNeeded); 11567 11568 #ifdef __cplusplus 11569 } /* End extern "C". */ 11570 #endif /* C++ */ 11571 11572 typedef struct sDot11fLinkMeasurementRequest{ 11573 tDot11fFfCategory Category; 11574 tDot11fFfAction Action; 11575 tDot11fFfDialogToken DialogToken; 11576 tDot11fFfTxPower TxPower; 11577 tDot11fFfMaxTxPower MaxTxPower; 11578 } tDot11fLinkMeasurementRequest; 11579 11580 #define DOT11F_LINKMEASUREMENTREQUEST (15) 11581 11582 #ifdef __cplusplus 11583 extern "C" { 11584 #endif /* C++ */ 11585 11586 uint32_t dot11f_unpack_link_measurement_request(tpAniSirGlobal pCtx, 11587 uint8_t *pBuf, uint32_t nBuf, 11588 tDot11fLinkMeasurementRequest * pFrm, bool append_ie); 11589 uint32_t dot11f_pack_link_measurement_request(tpAniSirGlobal pCtx, 11590 tDot11fLinkMeasurementRequest *pFrm, uint8_t *pBuf, 11591 uint32_t nBuf, uint32_t *pnConsumed); 11592 uint32_t dot11f_get_packed_link_measurement_request_size(tpAniSirGlobal pCtx, 11593 tDot11fLinkMeasurementRequest *pFrm, 11594 uint32_t *pnNeeded); 11595 11596 #ifdef __cplusplus 11597 } /* End extern "C". */ 11598 #endif /* C++ */ 11599 11600 typedef struct sDot11fMeasurementReport{ 11601 tDot11fFfCategory Category; 11602 tDot11fFfAction Action; 11603 tDot11fFfDialogToken DialogToken; 11604 tDot11fIEMeasurementReport MeasurementReport; 11605 } tDot11fMeasurementReport; 11606 11607 #define DOT11F_MEASUREMENTREPORT (16) 11608 11609 #ifdef __cplusplus 11610 extern "C" { 11611 #endif /* C++ */ 11612 11613 uint32_t dot11f_unpack_measurement_report(tpAniSirGlobal pCtx, 11614 uint8_t *pBuf, uint32_t nBuf, 11615 tDot11fMeasurementReport * pFrm, bool append_ie); 11616 uint32_t dot11f_pack_measurement_report(tpAniSirGlobal pCtx, 11617 tDot11fMeasurementReport *pFrm, uint8_t *pBuf, 11618 uint32_t nBuf, uint32_t *pnConsumed); 11619 uint32_t dot11f_get_packed_measurement_report_size(tpAniSirGlobal pCtx, 11620 tDot11fMeasurementReport *pFrm, 11621 uint32_t *pnNeeded); 11622 11623 #ifdef __cplusplus 11624 } /* End extern "C". */ 11625 #endif /* C++ */ 11626 11627 typedef struct sDot11fMeasurementRequest{ 11628 tDot11fFfCategory Category; 11629 tDot11fFfAction Action; 11630 tDot11fFfDialogToken DialogToken; 11631 uint16_t num_MeasurementRequest; 11632 tDot11fIEMeasurementRequest MeasurementRequest[4]; 11633 } tDot11fMeasurementRequest; 11634 11635 #define DOT11F_MEASUREMENTREQUEST (17) 11636 11637 #ifdef __cplusplus 11638 extern "C" { 11639 #endif /* C++ */ 11640 11641 uint32_t dot11f_unpack_measurement_request(tpAniSirGlobal pCtx, 11642 uint8_t *pBuf, uint32_t nBuf, 11643 tDot11fMeasurementRequest * pFrm, bool append_ie); 11644 uint32_t dot11f_pack_measurement_request(tpAniSirGlobal pCtx, 11645 tDot11fMeasurementRequest *pFrm, uint8_t *pBuf, 11646 uint32_t nBuf, uint32_t *pnConsumed); 11647 uint32_t dot11f_get_packed_measurement_request_size(tpAniSirGlobal pCtx, 11648 tDot11fMeasurementRequest *pFrm, 11649 uint32_t *pnNeeded); 11650 11651 #ifdef __cplusplus 11652 } /* End extern "C". */ 11653 #endif /* C++ */ 11654 11655 typedef struct sDot11fNeighborReportRequest{ 11656 tDot11fFfCategory Category; 11657 tDot11fFfAction Action; 11658 tDot11fFfDialogToken DialogToken; 11659 tDot11fIESSID SSID; 11660 } tDot11fNeighborReportRequest; 11661 11662 #define DOT11F_NEIGHBORREPORTREQUEST (18) 11663 11664 #ifdef __cplusplus 11665 extern "C" { 11666 #endif /* C++ */ 11667 11668 uint32_t dot11f_unpack_neighbor_report_request(tpAniSirGlobal pCtx, 11669 uint8_t *pBuf, uint32_t nBuf, 11670 tDot11fNeighborReportRequest * pFrm, bool append_ie); 11671 uint32_t dot11f_pack_neighbor_report_request(tpAniSirGlobal pCtx, 11672 tDot11fNeighborReportRequest *pFrm, uint8_t *pBuf, 11673 uint32_t nBuf, uint32_t *pnConsumed); 11674 uint32_t dot11f_get_packed_neighbor_report_request_size(tpAniSirGlobal pCtx, 11675 tDot11fNeighborReportRequest *pFrm, 11676 uint32_t *pnNeeded); 11677 11678 #ifdef __cplusplus 11679 } /* End extern "C". */ 11680 #endif /* C++ */ 11681 11682 typedef struct sDot11fNeighborReportResponse{ 11683 tDot11fFfCategory Category; 11684 tDot11fFfAction Action; 11685 tDot11fFfDialogToken DialogToken; 11686 uint16_t num_NeighborReport; 11687 tDot11fIENeighborReport NeighborReport[15]; 11688 } tDot11fNeighborReportResponse; 11689 11690 #define DOT11F_NEIGHBORREPORTRESPONSE (19) 11691 11692 #ifdef __cplusplus 11693 extern "C" { 11694 #endif /* C++ */ 11695 11696 uint32_t dot11f_unpack_neighbor_report_response(tpAniSirGlobal pCtx, 11697 uint8_t *pBuf, uint32_t nBuf, 11698 tDot11fNeighborReportResponse * pFrm, bool append_ie); 11699 uint32_t dot11f_pack_neighbor_report_response(tpAniSirGlobal pCtx, 11700 tDot11fNeighborReportResponse *pFrm, uint8_t *pBuf, 11701 uint32_t nBuf, uint32_t *pnConsumed); 11702 uint32_t dot11f_get_packed_neighbor_report_response_size(tpAniSirGlobal pCtx, 11703 tDot11fNeighborReportResponse *pFrm, 11704 uint32_t *pnNeeded); 11705 11706 #ifdef __cplusplus 11707 } /* End extern "C". */ 11708 #endif /* C++ */ 11709 11710 typedef struct sDot11fOperatingMode{ 11711 tDot11fFfCategory Category; 11712 tDot11fFfAction Action; 11713 tDot11fFfOperatingMode OperatingMode; 11714 } tDot11fOperatingMode; 11715 11716 #define DOT11F_OPERATINGMODE (20) 11717 11718 #ifdef __cplusplus 11719 extern "C" { 11720 #endif /* C++ */ 11721 11722 uint32_t dot11f_unpack_operating_mode(tpAniSirGlobal pCtx, 11723 uint8_t *pBuf, uint32_t nBuf, 11724 tDot11fOperatingMode * pFrm, bool append_ie); 11725 uint32_t dot11f_pack_operating_mode(tpAniSirGlobal pCtx, 11726 tDot11fOperatingMode *pFrm, uint8_t *pBuf, 11727 uint32_t nBuf, uint32_t *pnConsumed); 11728 uint32_t dot11f_get_packed_operating_mode_size(tpAniSirGlobal pCtx, 11729 tDot11fOperatingMode *pFrm, 11730 uint32_t *pnNeeded); 11731 11732 #ifdef __cplusplus 11733 } /* End extern "C". */ 11734 #endif /* C++ */ 11735 11736 typedef struct sDot11fProbeRequest{ 11737 tDot11fIESSID SSID; 11738 tDot11fIESuppRates SuppRates; 11739 tDot11fIERequestedInfo RequestedInfo; 11740 tDot11fIEExtSuppRates ExtSuppRates; 11741 tDot11fIEDSParams DSParams; 11742 tDot11fIEHTCaps HTCaps; 11743 tDot11fIEExtCap ExtCap; 11744 tDot11fIEVHTCaps VHTCaps; 11745 tDot11fIEhe_cap he_cap; 11746 tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; 11747 tDot11fIEeht_cap eht_cap; 11748 tDot11fIEmlo_ie mlo_ie; 11749 tDot11fIEWscProbeReq WscProbeReq; 11750 tDot11fIEWFATPC WFATPC; 11751 tDot11fIEP2PProbeReq P2PProbeReq; 11752 tDot11fIEqcn_ie qcn_ie; 11753 } tDot11fProbeRequest; 11754 11755 #define DOT11F_PROBEREQUEST (21) 11756 11757 #ifdef __cplusplus 11758 extern "C" { 11759 #endif /* C++ */ 11760 11761 uint32_t dot11f_unpack_probe_request(tpAniSirGlobal pCtx, 11762 uint8_t *pBuf, uint32_t nBuf, 11763 tDot11fProbeRequest * pFrm, bool append_ie); 11764 uint32_t dot11f_pack_probe_request(tpAniSirGlobal pCtx, 11765 tDot11fProbeRequest *pFrm, uint8_t *pBuf, 11766 uint32_t nBuf, uint32_t *pnConsumed); 11767 uint32_t dot11f_get_packed_probe_request_size(tpAniSirGlobal pCtx, 11768 tDot11fProbeRequest *pFrm, 11769 uint32_t *pnNeeded); 11770 11771 #ifdef __cplusplus 11772 } /* End extern "C". */ 11773 #endif /* C++ */ 11774 11775 typedef struct sDot11fProbeResponse{ 11776 tDot11fFfTimeStamp TimeStamp; 11777 tDot11fFfBeaconInterval BeaconInterval; 11778 tDot11fFfCapabilities Capabilities; 11779 tDot11fIESSID SSID; 11780 tDot11fIESuppRates SuppRates; 11781 tDot11fIEFHParamSet FHParamSet; 11782 tDot11fIEDSParams DSParams; 11783 tDot11fIECFParams CFParams; 11784 tDot11fIECountry Country; 11785 tDot11fIEFHParams FHParams; 11786 tDot11fIEFHPattTable FHPattTable; 11787 tDot11fIEPowerConstraints PowerConstraints; 11788 tDot11fIEChanSwitchAnn ChanSwitchAnn; 11789 tDot11fIEQuiet Quiet; 11790 tDot11fIETPCReport TPCReport; 11791 tDot11fIEERPInfo ERPInfo; 11792 tDot11fIEExtSuppRates ExtSuppRates; 11793 tDot11fIERSNOpaque RSNOpaque; 11794 tDot11fIEQBSSLoad QBSSLoad; 11795 tDot11fIEEDCAParamSet EDCAParamSet; 11796 tDot11fIERRMEnabledCap RRMEnabledCap; 11797 tDot11fIEAPChannelReport APChannelReport; 11798 tDot11fIEMobilityDomain MobilityDomain; 11799 tDot11fIEext_chan_switch_ann ext_chan_switch_ann; 11800 tDot11fIESuppOperatingClasses SuppOperatingClasses; 11801 tDot11fIEHTCaps HTCaps; 11802 tDot11fIEHTInfo HTInfo; 11803 tDot11fIEOBSSScanParameters OBSSScanParameters; 11804 tDot11fIEExtCap ExtCap; 11805 tDot11fIEVHTCaps VHTCaps; 11806 tDot11fIEVHTOperation VHTOperation; 11807 uint16_t num_transmit_power_env; 11808 tDot11fIEtransmit_power_env transmit_power_env[8]; 11809 tDot11fIEChannelSwitchWrapper ChannelSwitchWrapper; 11810 tDot11fIEVHTExtBssLoad VHTExtBssLoad; 11811 tDot11fIEfils_indication fils_indication; 11812 tDot11fIEmax_chan_switch_time max_chan_switch_time; 11813 tDot11fIEesp_information esp_information; 11814 tDot11fIEhe_cap he_cap; 11815 tDot11fIEhe_op he_op; 11816 tDot11fIEspatial_reuse spatial_reuse; 11817 tDot11fIEbss_color_change bss_color_change; 11818 tDot11fIEmu_edca_param_set mu_edca_param_set; 11819 tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; 11820 tDot11fIEsec_chan_offset_ele sec_chan_offset_ele; 11821 tDot11fIEWAPI WAPI; 11822 tDot11fIEESETxmitPower ESETxmitPower; 11823 tDot11fIEeht_cap eht_cap; 11824 tDot11fIEeht_op eht_op; 11825 tDot11fIEmlo_ie mlo_ie; 11826 uint16_t num_t2lm_ie; 11827 tDot11fIEt2lm_ie t2lm_ie[2]; 11828 tDot11fIEWPA WPA; 11829 tDot11fIEWMMInfoAp WMMInfoAp; 11830 tDot11fIEWMMParams WMMParams; 11831 tDot11fIEWMMCaps WMMCaps; 11832 tDot11fIEESEVersion ESEVersion; 11833 tDot11fIEESERadMgmtCap ESERadMgmtCap; 11834 tDot11fIEESETrafStrmMet ESETrafStrmMet; 11835 tDot11fIEWscProbeRes WscProbeRes; 11836 tDot11fIEP2PProbeRes P2PProbeRes; 11837 tDot11fIEVendor1IE Vendor1IE; 11838 tDot11fIEvendor_vht_ie vendor_vht_ie; 11839 tDot11fIEVendor3IE Vendor3IE; 11840 tDot11fIEhs20vendor_ie hs20vendor_ie; 11841 tDot11fIEQComVendorIE QComVendorIE; 11842 tDot11fIEMBO_IE MBO_IE; 11843 tDot11fIEqcn_ie qcn_ie; 11844 tDot11fIEreduced_neighbor_report reduced_neighbor_report; 11845 } tDot11fProbeResponse; 11846 11847 #define DOT11F_PROBERESPONSE (22) 11848 11849 #ifdef __cplusplus 11850 extern "C" { 11851 #endif /* C++ */ 11852 11853 uint32_t dot11f_unpack_probe_response(tpAniSirGlobal pCtx, 11854 uint8_t *pBuf, uint32_t nBuf, 11855 tDot11fProbeResponse * pFrm, bool append_ie); 11856 uint32_t dot11f_pack_probe_response(tpAniSirGlobal pCtx, 11857 tDot11fProbeResponse *pFrm, uint8_t *pBuf, 11858 uint32_t nBuf, uint32_t *pnConsumed); 11859 uint32_t dot11f_get_packed_probe_response_size(tpAniSirGlobal pCtx, 11860 tDot11fProbeResponse *pFrm, 11861 uint32_t *pnNeeded); 11862 11863 #ifdef __cplusplus 11864 } /* End extern "C". */ 11865 #endif /* C++ */ 11866 11867 typedef struct sDot11fQosMapConfigure{ 11868 tDot11fFfCategory Category; 11869 tDot11fFfAction Action; 11870 tDot11fIEQosMapSet QosMapSet; 11871 } tDot11fQosMapConfigure; 11872 11873 #define DOT11F_QOSMAPCONFIGURE (23) 11874 11875 #ifdef __cplusplus 11876 extern "C" { 11877 #endif /* C++ */ 11878 11879 uint32_t dot11f_unpack_qos_map_configure(tpAniSirGlobal pCtx, 11880 uint8_t *pBuf, uint32_t nBuf, 11881 tDot11fQosMapConfigure * pFrm, bool append_ie); 11882 uint32_t dot11f_pack_qos_map_configure(tpAniSirGlobal pCtx, 11883 tDot11fQosMapConfigure *pFrm, uint8_t *pBuf, 11884 uint32_t nBuf, uint32_t *pnConsumed); 11885 uint32_t dot11f_get_packed_qos_map_configure_size(tpAniSirGlobal pCtx, 11886 tDot11fQosMapConfigure *pFrm, 11887 uint32_t *pnNeeded); 11888 11889 #ifdef __cplusplus 11890 } /* End extern "C". */ 11891 #endif /* C++ */ 11892 11893 typedef struct sDot11fRadioMeasurementReport{ 11894 tDot11fFfCategory Category; 11895 tDot11fFfAction Action; 11896 tDot11fFfDialogToken DialogToken; 11897 uint16_t num_MeasurementReport; 11898 tDot11fIEMeasurementReport MeasurementReport[1]; 11899 } tDot11fRadioMeasurementReport; 11900 11901 #define DOT11F_RADIOMEASUREMENTREPORT (24) 11902 11903 #ifdef __cplusplus 11904 extern "C" { 11905 #endif /* C++ */ 11906 11907 uint32_t dot11f_unpack_radio_measurement_report(tpAniSirGlobal pCtx, 11908 uint8_t *pBuf, uint32_t nBuf, 11909 tDot11fRadioMeasurementReport * pFrm, bool append_ie); 11910 uint32_t dot11f_pack_radio_measurement_report(tpAniSirGlobal pCtx, 11911 tDot11fRadioMeasurementReport *pFrm, uint8_t *pBuf, 11912 uint32_t nBuf, uint32_t *pnConsumed); 11913 uint32_t dot11f_get_packed_radio_measurement_report_size(tpAniSirGlobal pCtx, 11914 tDot11fRadioMeasurementReport *pFrm, 11915 uint32_t *pnNeeded); 11916 11917 #ifdef __cplusplus 11918 } /* End extern "C". */ 11919 #endif /* C++ */ 11920 11921 typedef struct sDot11fRadioMeasurementRequest{ 11922 tDot11fFfCategory Category; 11923 tDot11fFfAction Action; 11924 tDot11fFfDialogToken DialogToken; 11925 tDot11fFfNumOfRepetitions NumOfRepetitions; 11926 uint16_t num_MeasurementRequest; 11927 tDot11fIEMeasurementRequest MeasurementRequest[5]; 11928 } tDot11fRadioMeasurementRequest; 11929 11930 #define DOT11F_RADIOMEASUREMENTREQUEST (25) 11931 11932 #ifdef __cplusplus 11933 extern "C" { 11934 #endif /* C++ */ 11935 11936 uint32_t dot11f_unpack_radio_measurement_request(tpAniSirGlobal pCtx, 11937 uint8_t *pBuf, uint32_t nBuf, 11938 tDot11fRadioMeasurementRequest * pFrm, bool append_ie); 11939 uint32_t dot11f_pack_radio_measurement_request(tpAniSirGlobal pCtx, 11940 tDot11fRadioMeasurementRequest *pFrm, uint8_t *pBuf, 11941 uint32_t nBuf, uint32_t *pnConsumed); 11942 uint32_t dot11f_get_packed_radio_measurement_request_size(tpAniSirGlobal pCtx, 11943 tDot11fRadioMeasurementRequest *pFrm, 11944 uint32_t *pnNeeded); 11945 11946 #ifdef __cplusplus 11947 } /* End extern "C". */ 11948 #endif /* C++ */ 11949 11950 typedef struct sDot11fReAssocRequest{ 11951 tDot11fFfCapabilities Capabilities; 11952 tDot11fFfListenInterval ListenInterval; 11953 tDot11fFfCurrentAPAddress CurrentAPAddress; 11954 tDot11fIESSID SSID; 11955 tDot11fIESuppRates SuppRates; 11956 tDot11fIEExtSuppRates ExtSuppRates; 11957 tDot11fIEPowerCaps PowerCaps; 11958 tDot11fIESuppChannels SuppChannels; 11959 tDot11fIERSNOpaque RSNOpaque; 11960 tDot11fIEQOSCapsStation QOSCapsStation; 11961 tDot11fIERRMEnabledCap RRMEnabledCap; 11962 tDot11fIEMobilityDomain MobilityDomain; 11963 tDot11fIEFTInfo FTInfo; 11964 uint16_t num_RICDataDesc; 11965 tDot11fIERICDataDesc RICDataDesc[2]; 11966 tDot11fIESuppOperatingClasses SuppOperatingClasses; 11967 tDot11fIEHTCaps HTCaps; 11968 tDot11fIEExtCap ExtCap; 11969 tDot11fIEVHTCaps VHTCaps; 11970 tDot11fIEOperatingMode OperatingMode; 11971 tDot11fIEbss_max_idle_period bss_max_idle_period; 11972 tDot11fIEhe_cap he_cap; 11973 tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; 11974 tDot11fIEWAPIOpaque WAPIOpaque; 11975 tDot11fIEWAPI WAPI; 11976 tDot11fIEQosMapSet QosMapSet; 11977 tDot11fIEESECckmOpaque ESECckmOpaque; 11978 tDot11fIEeht_cap eht_cap; 11979 tDot11fIEmlo_ie mlo_ie; 11980 uint16_t num_t2lm_ie; 11981 tDot11fIEt2lm_ie t2lm_ie[2]; 11982 tDot11fIEWPAOpaque WPAOpaque; 11983 tDot11fIEWMMCaps WMMCaps; 11984 tDot11fIEWMMInfoStation WMMInfoStation; 11985 tDot11fIEWscIEOpaque WscIEOpaque; 11986 tDot11fIEESERadMgmtCap ESERadMgmtCap; 11987 tDot11fIEESEVersion ESEVersion; 11988 uint16_t num_WMMTSPEC; 11989 tDot11fIEWMMTSPEC WMMTSPEC[4]; 11990 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet; 11991 tDot11fIEP2PIEOpaque P2PIEOpaque; 11992 tDot11fIEWFDIEOpaque WFDIEOpaque; 11993 tDot11fIEvendor_vht_ie vendor_vht_ie; 11994 tDot11fIEhs20vendor_ie hs20vendor_ie; 11995 } tDot11fReAssocRequest; 11996 11997 #define DOT11F_REASSOCREQUEST (26) 11998 11999 #ifdef __cplusplus 12000 extern "C" { 12001 #endif /* C++ */ 12002 12003 uint32_t dot11f_unpack_re_assoc_request(tpAniSirGlobal pCtx, 12004 uint8_t *pBuf, uint32_t nBuf, 12005 tDot11fReAssocRequest * pFrm, bool append_ie); 12006 uint32_t dot11f_pack_re_assoc_request(tpAniSirGlobal pCtx, 12007 tDot11fReAssocRequest *pFrm, uint8_t *pBuf, 12008 uint32_t nBuf, uint32_t *pnConsumed); 12009 uint32_t dot11f_get_packed_re_assoc_request_size(tpAniSirGlobal pCtx, 12010 tDot11fReAssocRequest *pFrm, 12011 uint32_t *pnNeeded); 12012 12013 #ifdef __cplusplus 12014 } /* End extern "C". */ 12015 #endif /* C++ */ 12016 12017 typedef struct sDot11fReAssocResponse{ 12018 tDot11fFfCapabilities Capabilities; 12019 tDot11fFfStatus Status; 12020 tDot11fFfAID AID; 12021 tDot11fIESuppRates SuppRates; 12022 tDot11fIEExtSuppRates ExtSuppRates; 12023 tDot11fIEEDCAParamSet EDCAParamSet; 12024 tDot11fIERCPIIE RCPIIE; 12025 tDot11fIERSNIIE RSNIIE; 12026 tDot11fIERRMEnabledCap RRMEnabledCap; 12027 tDot11fIERSNOpaque RSNOpaque; 12028 tDot11fIEMobilityDomain MobilityDomain; 12029 tDot11fIEFTInfo FTInfo; 12030 uint16_t num_RICDataDesc; 12031 tDot11fIERICDataDesc RICDataDesc[2]; 12032 tDot11fIETimeoutInterval TimeoutInterval; 12033 tDot11fIEHTCaps HTCaps; 12034 tDot11fIEHTInfo HTInfo; 12035 tDot11fIEOBSSScanParameters OBSSScanParameters; 12036 tDot11fIEExtCap ExtCap; 12037 tDot11fIEbss_max_idle_period bss_max_idle_period; 12038 tDot11fIEVHTCaps VHTCaps; 12039 tDot11fIEVHTOperation VHTOperation; 12040 tDot11fIEOperatingMode OperatingMode; 12041 tDot11fIEhe_cap he_cap; 12042 tDot11fIEhe_op he_op; 12043 tDot11fIEspatial_reuse spatial_reuse; 12044 tDot11fIEbss_color_change bss_color_change; 12045 tDot11fIEmu_edca_param_set mu_edca_param_set; 12046 tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; 12047 tDot11fIEQosMapSet QosMapSet; 12048 tDot11fIEESETxmitPower ESETxmitPower; 12049 tDot11fIEeht_cap eht_cap; 12050 tDot11fIEeht_op eht_op; 12051 tDot11fIEmlo_ie mlo_ie; 12052 uint16_t num_t2lm_ie; 12053 tDot11fIEt2lm_ie t2lm_ie[2]; 12054 tDot11fIEWPA WPA; 12055 tDot11fIEWMMParams WMMParams; 12056 tDot11fIEESERadMgmtCap ESERadMgmtCap; 12057 tDot11fIEESETrafStrmMet ESETrafStrmMet; 12058 uint16_t num_WMMTSPEC; 12059 tDot11fIEWMMTSPEC WMMTSPEC[4]; 12060 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet; 12061 tDot11fIEWscReassocRes WscReassocRes; 12062 tDot11fIEP2PAssocRes P2PAssocRes; 12063 tDot11fIEvendor_vht_ie vendor_vht_ie; 12064 tDot11fIEMBO_IE MBO_IE; 12065 tDot11fIEreduced_neighbor_report reduced_neighbor_report; 12066 } tDot11fReAssocResponse; 12067 12068 #define DOT11F_REASSOCRESPONSE (27) 12069 12070 #ifdef __cplusplus 12071 extern "C" { 12072 #endif /* C++ */ 12073 12074 uint32_t dot11f_unpack_re_assoc_response(tpAniSirGlobal pCtx, 12075 uint8_t *pBuf, uint32_t nBuf, 12076 tDot11fReAssocResponse * pFrm, bool append_ie); 12077 uint32_t dot11f_pack_re_assoc_response(tpAniSirGlobal pCtx, 12078 tDot11fReAssocResponse *pFrm, uint8_t *pBuf, 12079 uint32_t nBuf, uint32_t *pnConsumed); 12080 uint32_t dot11f_get_packed_re_assoc_response_size(tpAniSirGlobal pCtx, 12081 tDot11fReAssocResponse *pFrm, 12082 uint32_t *pnNeeded); 12083 12084 #ifdef __cplusplus 12085 } /* End extern "C". */ 12086 #endif /* C++ */ 12087 12088 typedef struct sDot11fSMPowerSave{ 12089 tDot11fFfCategory Category; 12090 tDot11fFfAction Action; 12091 tDot11fFfSMPowerModeSet SMPowerModeSet; 12092 } tDot11fSMPowerSave; 12093 12094 #define DOT11F_SMPOWERSAVE (28) 12095 12096 #ifdef __cplusplus 12097 extern "C" { 12098 #endif /* C++ */ 12099 12100 uint32_t dot11f_unpack_sm_power_save(tpAniSirGlobal pCtx, 12101 uint8_t *pBuf, uint32_t nBuf, 12102 tDot11fSMPowerSave * pFrm, bool append_ie); 12103 uint32_t dot11f_pack_sm_power_save(tpAniSirGlobal pCtx, 12104 tDot11fSMPowerSave *pFrm, uint8_t *pBuf, 12105 uint32_t nBuf, uint32_t *pnConsumed); 12106 uint32_t dot11f_get_packed_sm_power_save_size(tpAniSirGlobal pCtx, 12107 tDot11fSMPowerSave *pFrm, 12108 uint32_t *pnNeeded); 12109 12110 #ifdef __cplusplus 12111 } /* End extern "C". */ 12112 #endif /* C++ */ 12113 12114 typedef struct sDot11fSaQueryReq{ 12115 tDot11fFfCategory Category; 12116 tDot11fFfAction Action; 12117 tDot11fFfTransactionId TransactionId; 12118 tDot11fIEoci oci; 12119 } tDot11fSaQueryReq; 12120 12121 #define DOT11F_SAQUERYREQ (29) 12122 12123 #ifdef __cplusplus 12124 extern "C" { 12125 #endif /* C++ */ 12126 12127 uint32_t dot11f_unpack_sa_query_req(tpAniSirGlobal pCtx, 12128 uint8_t *pBuf, uint32_t nBuf, 12129 tDot11fSaQueryReq * pFrm, bool append_ie); 12130 uint32_t dot11f_pack_sa_query_req(tpAniSirGlobal pCtx, 12131 tDot11fSaQueryReq *pFrm, uint8_t *pBuf, 12132 uint32_t nBuf, uint32_t *pnConsumed); 12133 uint32_t dot11f_get_packed_sa_query_req_size(tpAniSirGlobal pCtx, 12134 tDot11fSaQueryReq *pFrm, 12135 uint32_t *pnNeeded); 12136 12137 #ifdef __cplusplus 12138 } /* End extern "C". */ 12139 #endif /* C++ */ 12140 12141 typedef struct sDot11fSaQueryRsp{ 12142 tDot11fFfCategory Category; 12143 tDot11fFfAction Action; 12144 tDot11fFfTransactionId TransactionId; 12145 tDot11fIEoci oci; 12146 } tDot11fSaQueryRsp; 12147 12148 #define DOT11F_SAQUERYRSP (30) 12149 12150 #ifdef __cplusplus 12151 extern "C" { 12152 #endif /* C++ */ 12153 12154 uint32_t dot11f_unpack_sa_query_rsp(tpAniSirGlobal pCtx, 12155 uint8_t *pBuf, uint32_t nBuf, 12156 tDot11fSaQueryRsp * pFrm, bool append_ie); 12157 uint32_t dot11f_pack_sa_query_rsp(tpAniSirGlobal pCtx, 12158 tDot11fSaQueryRsp *pFrm, uint8_t *pBuf, 12159 uint32_t nBuf, uint32_t *pnConsumed); 12160 uint32_t dot11f_get_packed_sa_query_rsp_size(tpAniSirGlobal pCtx, 12161 tDot11fSaQueryRsp *pFrm, 12162 uint32_t *pnNeeded); 12163 12164 #ifdef __cplusplus 12165 } /* End extern "C". */ 12166 #endif /* C++ */ 12167 12168 typedef struct sDot11fTDLSDisReq{ 12169 tDot11fFfCategory Category; 12170 tDot11fFfAction Action; 12171 tDot11fFfDialogToken DialogToken; 12172 tDot11fIELinkIdentifier LinkIdentifier; 12173 } tDot11fTDLSDisReq; 12174 12175 #define DOT11F_TDLSDISREQ (31) 12176 12177 #ifdef __cplusplus 12178 extern "C" { 12179 #endif /* C++ */ 12180 12181 uint32_t dot11f_unpack_tdls_dis_req(tpAniSirGlobal pCtx, 12182 uint8_t *pBuf, uint32_t nBuf, 12183 tDot11fTDLSDisReq * pFrm, bool append_ie); 12184 uint32_t dot11f_pack_tdls_dis_req(tpAniSirGlobal pCtx, 12185 tDot11fTDLSDisReq *pFrm, uint8_t *pBuf, 12186 uint32_t nBuf, uint32_t *pnConsumed); 12187 uint32_t dot11f_get_packed_tdls_dis_req_size(tpAniSirGlobal pCtx, 12188 tDot11fTDLSDisReq *pFrm, 12189 uint32_t *pnNeeded); 12190 12191 #ifdef __cplusplus 12192 } /* End extern "C". */ 12193 #endif /* C++ */ 12194 12195 typedef struct sDot11fTDLSDisRsp{ 12196 tDot11fFfCategory Category; 12197 tDot11fFfAction Action; 12198 tDot11fFfDialogToken DialogToken; 12199 tDot11fFfCapabilities Capabilities; 12200 tDot11fIESuppRates SuppRates; 12201 tDot11fIEExtSuppRates ExtSuppRates; 12202 tDot11fIESuppChannels SuppChannels; 12203 tDot11fIESuppOperatingClasses SuppOperatingClasses; 12204 tDot11fIERSN RSN; 12205 tDot11fIEExtCap ExtCap; 12206 tDot11fIEFTInfo FTInfo; 12207 tDot11fIETimeoutInterval TimeoutInterval; 12208 tDot11fIERICData RICData; 12209 tDot11fIEHTCaps HTCaps; 12210 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence; 12211 tDot11fIELinkIdentifier LinkIdentifier; 12212 tDot11fIEVHTCaps VHTCaps; 12213 tDot11fIEhe_cap he_cap; 12214 } tDot11fTDLSDisRsp; 12215 12216 #define DOT11F_TDLSDISRSP (32) 12217 12218 #ifdef __cplusplus 12219 extern "C" { 12220 #endif /* C++ */ 12221 12222 uint32_t dot11f_unpack_tdls_dis_rsp(tpAniSirGlobal pCtx, 12223 uint8_t *pBuf, uint32_t nBuf, 12224 tDot11fTDLSDisRsp * pFrm, bool append_ie); 12225 uint32_t dot11f_pack_tdls_dis_rsp(tpAniSirGlobal pCtx, 12226 tDot11fTDLSDisRsp *pFrm, uint8_t *pBuf, 12227 uint32_t nBuf, uint32_t *pnConsumed); 12228 uint32_t dot11f_get_packed_tdls_dis_rsp_size(tpAniSirGlobal pCtx, 12229 tDot11fTDLSDisRsp *pFrm, 12230 uint32_t *pnNeeded); 12231 12232 #ifdef __cplusplus 12233 } /* End extern "C". */ 12234 #endif /* C++ */ 12235 12236 typedef struct sDot11fTDLSPeerTrafficInd{ 12237 tDot11fFfCategory Category; 12238 tDot11fFfAction Action; 12239 tDot11fFfDialogToken DialogToken; 12240 tDot11fIELinkIdentifier LinkIdentifier; 12241 tDot11fIEPTIControl PTIControl; 12242 tDot11fIEPUBufferStatus PUBufferStatus; 12243 } tDot11fTDLSPeerTrafficInd; 12244 12245 #define DOT11F_TDLSPEERTRAFFICIND (33) 12246 12247 #ifdef __cplusplus 12248 extern "C" { 12249 #endif /* C++ */ 12250 12251 uint32_t dot11f_unpack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx, 12252 uint8_t *pBuf, uint32_t nBuf, 12253 tDot11fTDLSPeerTrafficInd * pFrm, bool append_ie); 12254 uint32_t dot11f_pack_tdls_peer_traffic_ind(tpAniSirGlobal pCtx, 12255 tDot11fTDLSPeerTrafficInd *pFrm, uint8_t *pBuf, 12256 uint32_t nBuf, uint32_t *pnConsumed); 12257 uint32_t dot11f_get_packed_tdls_peer_traffic_ind_size(tpAniSirGlobal pCtx, 12258 tDot11fTDLSPeerTrafficInd *pFrm, 12259 uint32_t *pnNeeded); 12260 12261 #ifdef __cplusplus 12262 } /* End extern "C". */ 12263 #endif /* C++ */ 12264 12265 typedef struct sDot11fTDLSPeerTrafficRsp{ 12266 tDot11fFfCategory Category; 12267 tDot11fFfAction Action; 12268 tDot11fFfDialogToken DialogToken; 12269 tDot11fIELinkIdentifier LinkIdentifier; 12270 } tDot11fTDLSPeerTrafficRsp; 12271 12272 #define DOT11F_TDLSPEERTRAFFICRSP (34) 12273 12274 #ifdef __cplusplus 12275 extern "C" { 12276 #endif /* C++ */ 12277 12278 uint32_t dot11f_unpack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx, 12279 uint8_t *pBuf, uint32_t nBuf, 12280 tDot11fTDLSPeerTrafficRsp * pFrm, bool append_ie); 12281 uint32_t dot11f_pack_tdls_peer_traffic_rsp(tpAniSirGlobal pCtx, 12282 tDot11fTDLSPeerTrafficRsp *pFrm, uint8_t *pBuf, 12283 uint32_t nBuf, uint32_t *pnConsumed); 12284 uint32_t dot11f_get_packed_tdls_peer_traffic_rsp_size(tpAniSirGlobal pCtx, 12285 tDot11fTDLSPeerTrafficRsp *pFrm, 12286 uint32_t *pnNeeded); 12287 12288 #ifdef __cplusplus 12289 } /* End extern "C". */ 12290 #endif /* C++ */ 12291 12292 typedef struct sDot11fTDLSSetupCnf{ 12293 tDot11fFfCategory Category; 12294 tDot11fFfAction Action; 12295 tDot11fFfStatus Status; 12296 tDot11fFfDialogToken DialogToken; 12297 tDot11fIERSN RSN; 12298 tDot11fIEEDCAParamSet EDCAParamSet; 12299 tDot11fIEFTInfo FTInfo; 12300 tDot11fIETimeoutInterval TimeoutInterval; 12301 tDot11fIEHTInfo HTInfo; 12302 tDot11fIELinkIdentifier LinkIdentifier; 12303 tDot11fIEWMMParams WMMParams; 12304 tDot11fIEVHTOperation VHTOperation; 12305 tDot11fIEOperatingMode OperatingMode; 12306 tDot11fIEhe_op he_op; 12307 } tDot11fTDLSSetupCnf; 12308 12309 #define DOT11F_TDLSSETUPCNF (35) 12310 12311 #ifdef __cplusplus 12312 extern "C" { 12313 #endif /* C++ */ 12314 12315 uint32_t dot11f_unpack_tdls_setup_cnf(tpAniSirGlobal pCtx, 12316 uint8_t *pBuf, uint32_t nBuf, 12317 tDot11fTDLSSetupCnf * pFrm, bool append_ie); 12318 uint32_t dot11f_pack_tdls_setup_cnf(tpAniSirGlobal pCtx, 12319 tDot11fTDLSSetupCnf *pFrm, uint8_t *pBuf, 12320 uint32_t nBuf, uint32_t *pnConsumed); 12321 uint32_t dot11f_get_packed_tdls_setup_cnf_size(tpAniSirGlobal pCtx, 12322 tDot11fTDLSSetupCnf *pFrm, 12323 uint32_t *pnNeeded); 12324 12325 #ifdef __cplusplus 12326 } /* End extern "C". */ 12327 #endif /* C++ */ 12328 12329 typedef struct sDot11fTDLSSetupReq{ 12330 tDot11fFfCategory Category; 12331 tDot11fFfAction Action; 12332 tDot11fFfDialogToken DialogToken; 12333 tDot11fFfCapabilities Capabilities; 12334 tDot11fIESuppRates SuppRates; 12335 tDot11fIECountry Country; 12336 tDot11fIEExtSuppRates ExtSuppRates; 12337 tDot11fIESuppChannels SuppChannels; 12338 tDot11fIERSN RSN; 12339 tDot11fIEExtCap ExtCap; 12340 tDot11fIESuppOperatingClasses SuppOperatingClasses; 12341 tDot11fIEQOSCapsStation QOSCapsStation; 12342 tDot11fIEFTInfo FTInfo; 12343 tDot11fIETimeoutInterval TimeoutInterval; 12344 tDot11fIERICData RICData; 12345 tDot11fIEHTCaps HTCaps; 12346 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence; 12347 tDot11fIELinkIdentifier LinkIdentifier; 12348 tDot11fIEWMMInfoStation WMMInfoStation; 12349 tDot11fIEAID AID; 12350 tDot11fIEVHTCaps VHTCaps; 12351 tDot11fIEhe_cap he_cap; 12352 tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; 12353 } tDot11fTDLSSetupReq; 12354 12355 #define DOT11F_TDLSSETUPREQ (36) 12356 12357 #ifdef __cplusplus 12358 extern "C" { 12359 #endif /* C++ */ 12360 12361 uint32_t dot11f_unpack_tdls_setup_req(tpAniSirGlobal pCtx, 12362 uint8_t *pBuf, uint32_t nBuf, 12363 tDot11fTDLSSetupReq * pFrm, bool append_ie); 12364 uint32_t dot11f_pack_tdls_setup_req(tpAniSirGlobal pCtx, 12365 tDot11fTDLSSetupReq *pFrm, uint8_t *pBuf, 12366 uint32_t nBuf, uint32_t *pnConsumed); 12367 uint32_t dot11f_get_packed_tdls_setup_req_size(tpAniSirGlobal pCtx, 12368 tDot11fTDLSSetupReq *pFrm, 12369 uint32_t *pnNeeded); 12370 12371 #ifdef __cplusplus 12372 } /* End extern "C". */ 12373 #endif /* C++ */ 12374 12375 typedef struct sDot11fTDLSSetupRsp{ 12376 tDot11fFfCategory Category; 12377 tDot11fFfAction Action; 12378 tDot11fFfStatus Status; 12379 tDot11fFfDialogToken DialogToken; 12380 tDot11fFfCapabilities Capabilities; 12381 tDot11fIESuppRates SuppRates; 12382 tDot11fIECountry Country; 12383 tDot11fIEExtSuppRates ExtSuppRates; 12384 tDot11fIESuppChannels SuppChannels; 12385 tDot11fIERSN RSN; 12386 tDot11fIEExtCap ExtCap; 12387 tDot11fIESuppOperatingClasses SuppOperatingClasses; 12388 tDot11fIEQOSCapsStation QOSCapsStation; 12389 tDot11fIEFTInfo FTInfo; 12390 tDot11fIETimeoutInterval TimeoutInterval; 12391 tDot11fIERICData RICData; 12392 tDot11fIEHTCaps HTCaps; 12393 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence; 12394 tDot11fIELinkIdentifier LinkIdentifier; 12395 tDot11fIEWMMInfoStation WMMInfoStation; 12396 tDot11fIEAID AID; 12397 tDot11fIEVHTCaps VHTCaps; 12398 tDot11fIEOperatingMode OperatingMode; 12399 tDot11fIEhe_cap he_cap; 12400 tDot11fIEhe_6ghz_band_cap he_6ghz_band_cap; 12401 } tDot11fTDLSSetupRsp; 12402 12403 #define DOT11F_TDLSSETUPRSP (37) 12404 12405 #ifdef __cplusplus 12406 extern "C" { 12407 #endif /* C++ */ 12408 12409 uint32_t dot11f_unpack_tdls_setup_rsp(tpAniSirGlobal pCtx, 12410 uint8_t *pBuf, uint32_t nBuf, 12411 tDot11fTDLSSetupRsp * pFrm, bool append_ie); 12412 uint32_t dot11f_pack_tdls_setup_rsp(tpAniSirGlobal pCtx, 12413 tDot11fTDLSSetupRsp *pFrm, uint8_t *pBuf, 12414 uint32_t nBuf, uint32_t *pnConsumed); 12415 uint32_t dot11f_get_packed_tdls_setup_rsp_size(tpAniSirGlobal pCtx, 12416 tDot11fTDLSSetupRsp *pFrm, 12417 uint32_t *pnNeeded); 12418 12419 #ifdef __cplusplus 12420 } /* End extern "C". */ 12421 #endif /* C++ */ 12422 12423 typedef struct sDot11fTDLSTeardown{ 12424 tDot11fFfCategory Category; 12425 tDot11fFfAction Action; 12426 tDot11fFfReason Reason; 12427 tDot11fIEFTInfo FTInfo; 12428 tDot11fIELinkIdentifier LinkIdentifier; 12429 } tDot11fTDLSTeardown; 12430 12431 #define DOT11F_TDLSTEARDOWN (38) 12432 12433 #ifdef __cplusplus 12434 extern "C" { 12435 #endif /* C++ */ 12436 12437 uint32_t dot11f_unpack_tdls_teardown(tpAniSirGlobal pCtx, 12438 uint8_t *pBuf, uint32_t nBuf, 12439 tDot11fTDLSTeardown * pFrm, bool append_ie); 12440 uint32_t dot11f_pack_tdls_teardown(tpAniSirGlobal pCtx, 12441 tDot11fTDLSTeardown *pFrm, uint8_t *pBuf, 12442 uint32_t nBuf, uint32_t *pnConsumed); 12443 uint32_t dot11f_get_packed_tdls_teardown_size(tpAniSirGlobal pCtx, 12444 tDot11fTDLSTeardown *pFrm, 12445 uint32_t *pnNeeded); 12446 12447 #ifdef __cplusplus 12448 } /* End extern "C". */ 12449 #endif /* C++ */ 12450 12451 typedef struct sDot11fTPCReport{ 12452 tDot11fFfCategory Category; 12453 tDot11fFfAction Action; 12454 tDot11fFfDialogToken DialogToken; 12455 tDot11fIETPCReport TPCReport; 12456 } tDot11fTPCReport; 12457 12458 #define DOT11F_TPCREPORT (39) 12459 12460 #ifdef __cplusplus 12461 extern "C" { 12462 #endif /* C++ */ 12463 12464 uint32_t dot11f_unpack_tpc_report(tpAniSirGlobal pCtx, 12465 uint8_t *pBuf, uint32_t nBuf, 12466 tDot11fTPCReport * pFrm, bool append_ie); 12467 uint32_t dot11f_pack_tpc_report(tpAniSirGlobal pCtx, 12468 tDot11fTPCReport *pFrm, uint8_t *pBuf, 12469 uint32_t nBuf, uint32_t *pnConsumed); 12470 uint32_t dot11f_get_packed_tpc_report_size(tpAniSirGlobal pCtx, 12471 tDot11fTPCReport *pFrm, 12472 uint32_t *pnNeeded); 12473 12474 #ifdef __cplusplus 12475 } /* End extern "C". */ 12476 #endif /* C++ */ 12477 12478 typedef struct sDot11fTPCRequest{ 12479 tDot11fFfCategory Category; 12480 tDot11fFfAction Action; 12481 tDot11fFfDialogToken DialogToken; 12482 tDot11fIETPCRequest TPCRequest; 12483 } tDot11fTPCRequest; 12484 12485 #define DOT11F_TPCREQUEST (40) 12486 12487 #ifdef __cplusplus 12488 extern "C" { 12489 #endif /* C++ */ 12490 12491 uint32_t dot11f_unpack_tpc_request(tpAniSirGlobal pCtx, 12492 uint8_t *pBuf, uint32_t nBuf, 12493 tDot11fTPCRequest * pFrm, bool append_ie); 12494 uint32_t dot11f_pack_tpc_request(tpAniSirGlobal pCtx, 12495 tDot11fTPCRequest *pFrm, uint8_t *pBuf, 12496 uint32_t nBuf, uint32_t *pnConsumed); 12497 uint32_t dot11f_get_packed_tpc_request_size(tpAniSirGlobal pCtx, 12498 tDot11fTPCRequest *pFrm, 12499 uint32_t *pnNeeded); 12500 12501 #ifdef __cplusplus 12502 } /* End extern "C". */ 12503 #endif /* C++ */ 12504 12505 typedef struct sDot11fTimingAdvertisementFrame{ 12506 tDot11fFfTimeStamp TimeStamp; 12507 tDot11fFfCapabilities Capabilities; 12508 tDot11fIECountry Country; 12509 tDot11fIEPowerConstraints PowerConstraints; 12510 tDot11fIETimeAdvertisement TimeAdvertisement; 12511 tDot11fIEExtCap ExtCap; 12512 tDot11fIEVendor1IE Vendor1IE; 12513 tDot11fIEVendor3IE Vendor3IE; 12514 } tDot11fTimingAdvertisementFrame; 12515 12516 #define DOT11F_TIMINGADVERTISEMENTFRAME (41) 12517 12518 #ifdef __cplusplus 12519 extern "C" { 12520 #endif /* C++ */ 12521 12522 uint32_t dot11f_unpack_timing_advertisement_frame(tpAniSirGlobal pCtx, 12523 uint8_t *pBuf, uint32_t nBuf, 12524 tDot11fTimingAdvertisementFrame * pFrm, bool append_ie); 12525 uint32_t dot11f_pack_timing_advertisement_frame(tpAniSirGlobal pCtx, 12526 tDot11fTimingAdvertisementFrame *pFrm, uint8_t *pBuf, 12527 uint32_t nBuf, uint32_t *pnConsumed); 12528 uint32_t dot11f_get_packed_timing_advertisement_frame_size(tpAniSirGlobal pCtx, 12529 tDot11fTimingAdvertisementFrame *pFrm, 12530 uint32_t *pnNeeded); 12531 12532 #ifdef __cplusplus 12533 } /* End extern "C". */ 12534 #endif /* C++ */ 12535 12536 typedef struct sDot11fVHTGidManagementActionFrame{ 12537 tDot11fFfCategory Category; 12538 tDot11fFfAction Action; 12539 tDot11fFfVhtMembershipStatusArray VhtMembershipStatusArray; 12540 tDot11fFfVhtUserPositionArray VhtUserPositionArray; 12541 } tDot11fVHTGidManagementActionFrame; 12542 12543 #define DOT11F_VHTGIDMANAGEMENTACTIONFRAME (42) 12544 12545 #ifdef __cplusplus 12546 extern "C" { 12547 #endif /* C++ */ 12548 12549 uint32_t dot11f_unpack_vht_gid_management_action_frame(tpAniSirGlobal pCtx, 12550 uint8_t *pBuf, uint32_t nBuf, 12551 tDot11fVHTGidManagementActionFrame * pFrm, bool append_ie); 12552 uint32_t dot11f_pack_vht_gid_management_action_frame(tpAniSirGlobal pCtx, 12553 tDot11fVHTGidManagementActionFrame *pFrm, uint8_t *pBuf, 12554 uint32_t nBuf, uint32_t *pnConsumed); 12555 uint32_t dot11f_get_packed_vht_gid_management_action_frame_size(tpAniSirGlobal pCtx, 12556 tDot11fVHTGidManagementActionFrame *pFrm, 12557 uint32_t *pnNeeded); 12558 12559 #ifdef __cplusplus 12560 } /* End extern "C". */ 12561 #endif /* C++ */ 12562 12563 typedef struct sDot11fWMMAddTSRequest{ 12564 tDot11fFfCategory Category; 12565 tDot11fFfAction Action; 12566 tDot11fFfDialogToken DialogToken; 12567 tDot11fFfStatusCode StatusCode; 12568 tDot11fIEWMMTSPEC WMMTSPEC; 12569 tDot11fIEESETrafStrmRateSet ESETrafStrmRateSet; 12570 } tDot11fWMMAddTSRequest; 12571 12572 #define DOT11F_WMMADDTSREQUEST (43) 12573 12574 #ifdef __cplusplus 12575 extern "C" { 12576 #endif /* C++ */ 12577 12578 uint32_t dot11f_unpack_wmm_add_ts_request(tpAniSirGlobal pCtx, 12579 uint8_t *pBuf, uint32_t nBuf, 12580 tDot11fWMMAddTSRequest * pFrm, bool append_ie); 12581 uint32_t dot11f_pack_wmm_add_ts_request(tpAniSirGlobal pCtx, 12582 tDot11fWMMAddTSRequest *pFrm, uint8_t *pBuf, 12583 uint32_t nBuf, uint32_t *pnConsumed); 12584 uint32_t dot11f_get_packed_wmm_add_ts_request_size(tpAniSirGlobal pCtx, 12585 tDot11fWMMAddTSRequest *pFrm, 12586 uint32_t *pnNeeded); 12587 12588 #ifdef __cplusplus 12589 } /* End extern "C". */ 12590 #endif /* C++ */ 12591 12592 typedef struct sDot11fWMMAddTSResponse{ 12593 tDot11fFfCategory Category; 12594 tDot11fFfAction Action; 12595 tDot11fFfDialogToken DialogToken; 12596 tDot11fFfStatusCode StatusCode; 12597 tDot11fIEWMMTSPEC WMMTSPEC; 12598 tDot11fIEESETrafStrmMet ESETrafStrmMet; 12599 } tDot11fWMMAddTSResponse; 12600 12601 #define DOT11F_WMMADDTSRESPONSE (44) 12602 12603 #ifdef __cplusplus 12604 extern "C" { 12605 #endif /* C++ */ 12606 12607 uint32_t dot11f_unpack_wmm_add_ts_response(tpAniSirGlobal pCtx, 12608 uint8_t *pBuf, uint32_t nBuf, 12609 tDot11fWMMAddTSResponse * pFrm, bool append_ie); 12610 uint32_t dot11f_pack_wmm_add_ts_response(tpAniSirGlobal pCtx, 12611 tDot11fWMMAddTSResponse *pFrm, uint8_t *pBuf, 12612 uint32_t nBuf, uint32_t *pnConsumed); 12613 uint32_t dot11f_get_packed_wmm_add_ts_response_size(tpAniSirGlobal pCtx, 12614 tDot11fWMMAddTSResponse *pFrm, 12615 uint32_t *pnNeeded); 12616 12617 #ifdef __cplusplus 12618 } /* End extern "C". */ 12619 #endif /* C++ */ 12620 12621 typedef struct sDot11fWMMDelTS{ 12622 tDot11fFfCategory Category; 12623 tDot11fFfAction Action; 12624 tDot11fFfDialogToken DialogToken; 12625 tDot11fFfStatusCode StatusCode; 12626 tDot11fIEWMMTSPEC WMMTSPEC; 12627 } tDot11fWMMDelTS; 12628 12629 #define DOT11F_WMMDELTS (45) 12630 12631 #ifdef __cplusplus 12632 extern "C" { 12633 #endif /* C++ */ 12634 12635 uint32_t dot11f_unpack_wmm_del_ts(tpAniSirGlobal pCtx, 12636 uint8_t *pBuf, uint32_t nBuf, 12637 tDot11fWMMDelTS * pFrm, bool append_ie); 12638 uint32_t dot11f_pack_wmm_del_ts(tpAniSirGlobal pCtx, 12639 tDot11fWMMDelTS *pFrm, uint8_t *pBuf, 12640 uint32_t nBuf, uint32_t *pnConsumed); 12641 uint32_t dot11f_get_packed_wmm_del_ts_size(tpAniSirGlobal pCtx, 12642 tDot11fWMMDelTS *pFrm, 12643 uint32_t *pnNeeded); 12644 12645 #ifdef __cplusplus 12646 } /* End extern "C". */ 12647 #endif /* C++ */ 12648 12649 typedef struct sDot11faddba_req{ 12650 tDot11fFfCategory Category; 12651 tDot11fFfAction Action; 12652 tDot11fFfDialogToken DialogToken; 12653 tDot11fFfaddba_param_set addba_param_set; 12654 tDot11fFfba_timeout ba_timeout; 12655 tDot11fFfba_start_seq_ctrl ba_start_seq_ctrl; 12656 tDot11fIEaddba_extn_element addba_extn_element; 12657 } tDot11faddba_req; 12658 12659 #define DOT11F_ADDBA_REQ (46) 12660 12661 #ifdef __cplusplus 12662 extern "C" { 12663 #endif /* C++ */ 12664 12665 uint32_t dot11f_unpack_addba_req(tpAniSirGlobal pCtx, 12666 uint8_t *pBuf, uint32_t nBuf, 12667 tDot11faddba_req * pFrm, bool append_ie); 12668 uint32_t dot11f_pack_addba_req(tpAniSirGlobal pCtx, 12669 tDot11faddba_req *pFrm, uint8_t *pBuf, 12670 uint32_t nBuf, uint32_t *pnConsumed); 12671 uint32_t dot11f_get_packed_addba_req_size(tpAniSirGlobal pCtx, 12672 tDot11faddba_req *pFrm, 12673 uint32_t *pnNeeded); 12674 12675 #ifdef __cplusplus 12676 } /* End extern "C". */ 12677 #endif /* C++ */ 12678 12679 typedef struct sDot11faddba_rsp{ 12680 tDot11fFfCategory Category; 12681 tDot11fFfAction Action; 12682 tDot11fFfDialogToken DialogToken; 12683 tDot11fFfStatus Status; 12684 tDot11fFfaddba_param_set addba_param_set; 12685 tDot11fFfba_timeout ba_timeout; 12686 tDot11fIEaddba_extn_element addba_extn_element; 12687 } tDot11faddba_rsp; 12688 12689 #define DOT11F_ADDBA_RSP (47) 12690 12691 #ifdef __cplusplus 12692 extern "C" { 12693 #endif /* C++ */ 12694 12695 uint32_t dot11f_unpack_addba_rsp(tpAniSirGlobal pCtx, 12696 uint8_t *pBuf, uint32_t nBuf, 12697 tDot11faddba_rsp * pFrm, bool append_ie); 12698 uint32_t dot11f_pack_addba_rsp(tpAniSirGlobal pCtx, 12699 tDot11faddba_rsp *pFrm, uint8_t *pBuf, 12700 uint32_t nBuf, uint32_t *pnConsumed); 12701 uint32_t dot11f_get_packed_addba_rsp_size(tpAniSirGlobal pCtx, 12702 tDot11faddba_rsp *pFrm, 12703 uint32_t *pnNeeded); 12704 12705 #ifdef __cplusplus 12706 } /* End extern "C". */ 12707 #endif /* C++ */ 12708 12709 typedef struct sDot11fdelba_req{ 12710 tDot11fFfCategory Category; 12711 tDot11fFfAction Action; 12712 tDot11fFfdelba_param_set delba_param_set; 12713 tDot11fFfReason Reason; 12714 } tDot11fdelba_req; 12715 12716 #define DOT11F_DELBA_REQ (48) 12717 12718 #ifdef __cplusplus 12719 extern "C" { 12720 #endif /* C++ */ 12721 12722 uint32_t dot11f_unpack_delba_req(tpAniSirGlobal pCtx, 12723 uint8_t *pBuf, uint32_t nBuf, 12724 tDot11fdelba_req * pFrm, bool append_ie); 12725 uint32_t dot11f_pack_delba_req(tpAniSirGlobal pCtx, 12726 tDot11fdelba_req *pFrm, uint8_t *pBuf, 12727 uint32_t nBuf, uint32_t *pnConsumed); 12728 uint32_t dot11f_get_packed_delba_req_size(tpAniSirGlobal pCtx, 12729 tDot11fdelba_req *pFrm, 12730 uint32_t *pnNeeded); 12731 12732 #ifdef __cplusplus 12733 } /* End extern "C". */ 12734 #endif /* C++ */ 12735 12736 typedef struct sDot11fepcs_neg_req{ 12737 tDot11fFfCategory Category; 12738 tDot11fFfAction Action; 12739 tDot11fFfDialogToken DialogToken; 12740 } tDot11fepcs_neg_req; 12741 12742 #define DOT11F_EPCS_NEG_REQ (49) 12743 12744 #ifdef __cplusplus 12745 extern "C" { 12746 #endif /* C++ */ 12747 12748 uint32_t dot11f_unpack_epcs_neg_req(tpAniSirGlobal pCtx, 12749 uint8_t *pBuf, uint32_t nBuf, 12750 tDot11fepcs_neg_req * pFrm, bool append_ie); 12751 uint32_t dot11f_pack_epcs_neg_req(tpAniSirGlobal pCtx, 12752 tDot11fepcs_neg_req *pFrm, uint8_t *pBuf, 12753 uint32_t nBuf, uint32_t *pnConsumed); 12754 uint32_t dot11f_get_packed_epcs_neg_reqSize(tpAniSirGlobal pCtx, 12755 tDot11fepcs_neg_req *pFrm, 12756 uint32_t *pnNeeded); 12757 12758 #ifdef __cplusplus 12759 } /* End extern "C". */ 12760 #endif /* C++ */ 12761 12762 typedef struct sDot11fepcs_neg_rsp{ 12763 tDot11fFfCategory Category; 12764 tDot11fFfAction Action; 12765 tDot11fFfDialogToken DialogToken; 12766 tDot11fFfStatus Status; 12767 } tDot11fepcs_neg_rsp; 12768 12769 #define DOT11F_EPCS_NEG_RSP (50) 12770 12771 #ifdef __cplusplus 12772 extern "C" { 12773 #endif /* C++ */ 12774 12775 uint32_t dot11f_unpack_epcs_neg_rsp(tpAniSirGlobal pCtx, 12776 uint8_t *pBuf, uint32_t nBuf, 12777 tDot11fepcs_neg_rsp * pFrm, bool append_ie); 12778 uint32_t dot11f_pack_epcs_neg_rsp(tpAniSirGlobal pCtx, 12779 tDot11fepcs_neg_rsp *pFrm, uint8_t *pBuf, 12780 uint32_t nBuf, uint32_t *pnConsumed); 12781 uint32_t dot11f_get_packed_epcs_neg_rspSize(tpAniSirGlobal pCtx, 12782 tDot11fepcs_neg_rsp *pFrm, 12783 uint32_t *pnNeeded); 12784 12785 #ifdef __cplusplus 12786 } /* End extern "C". */ 12787 #endif /* C++ */ 12788 12789 typedef struct sDot11fepcs_teardown{ 12790 tDot11fFfCategory Category; 12791 tDot11fFfAction Action; 12792 } tDot11fepcs_teardown; 12793 12794 #define DOT11F_EPCS_TEARDOWN (51) 12795 12796 #ifdef __cplusplus 12797 extern "C" { 12798 #endif /* C++ */ 12799 12800 uint32_t dot11f_unpack_epcs_teardown(tpAniSirGlobal pCtx, 12801 uint8_t *pBuf, uint32_t nBuf, 12802 tDot11fepcs_teardown * pFrm, bool append_ie); 12803 uint32_t dot11f_pack_epcs_teardown(tpAniSirGlobal pCtx, 12804 tDot11fepcs_teardown *pFrm, uint8_t *pBuf, 12805 uint32_t nBuf, uint32_t *pnConsumed); 12806 uint32_t dot11f_get_packed_epcs_teardownSize(tpAniSirGlobal pCtx, 12807 tDot11fepcs_teardown *pFrm, 12808 uint32_t *pnNeeded); 12809 12810 #ifdef __cplusplus 12811 } /* End extern "C". */ 12812 #endif /* C++ */ 12813 12814 typedef struct sDot11fext_channel_switch_action_frame{ 12815 tDot11fFfCategory Category; 12816 tDot11fFfAction Action; 12817 tDot11fFfext_chan_switch_ann_action ext_chan_switch_ann_action; 12818 tDot11fIEWiderBWChanSwitchAnn WiderBWChanSwitchAnn; 12819 tDot11fIEqcn_ie qcn_ie; 12820 tDot11fIEbw_ind_element bw_ind_element; 12821 } tDot11fext_channel_switch_action_frame; 12822 12823 #define DOT11F_EXT_CHANNEL_SWITCH_ACTION_FRAME (52) 12824 12825 #ifdef __cplusplus 12826 extern "C" { 12827 #endif /* C++ */ 12828 12829 uint32_t dot11f_unpack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx, 12830 uint8_t *pBuf, uint32_t nBuf, 12831 tDot11fext_channel_switch_action_frame * pFrm, bool append_ie); 12832 uint32_t dot11f_pack_ext_channel_switch_action_frame(tpAniSirGlobal pCtx, 12833 tDot11fext_channel_switch_action_frame *pFrm, uint8_t *pBuf, 12834 uint32_t nBuf, uint32_t *pnConsumed); 12835 uint32_t dot11f_get_packed_ext_channel_switch_action_frame_size(tpAniSirGlobal pCtx, 12836 tDot11fext_channel_switch_action_frame *pFrm, 12837 uint32_t *pnNeeded); 12838 12839 #ifdef __cplusplus 12840 } /* End extern "C". */ 12841 #endif /* C++ */ 12842 12843 typedef struct sDot11fht2040_bss_coexistence_mgmt_action_frame{ 12844 tDot11fFfCategory Category; 12845 tDot11fFfAction Action; 12846 tDot11fIEht2040_bss_coexistence ht2040_bss_coexistence; 12847 tDot11fIEht2040_bss_intolerant_report ht2040_bss_intolerant_report; 12848 } tDot11fht2040_bss_coexistence_mgmt_action_frame; 12849 12850 #define DOT11F_HT2040_BSS_COEXISTENCE_MGMT_ACTION_FRAME (53) 12851 12852 #ifdef __cplusplus 12853 extern "C" { 12854 #endif /* C++ */ 12855 12856 uint32_t dot11f_unpack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx, 12857 uint8_t *pBuf, uint32_t nBuf, 12858 tDot11fht2040_bss_coexistence_mgmt_action_frame * pFrm, bool append_ie); 12859 uint32_t dot11f_pack_ht2040_bss_coexistence_mgmt_action_frame(tpAniSirGlobal pCtx, 12860 tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm, uint8_t *pBuf, 12861 uint32_t nBuf, uint32_t *pnConsumed); 12862 uint32_t dot11f_get_packed_ht2040_bss_coexistence_mgmt_action_frameSize(tpAniSirGlobal pCtx, 12863 tDot11fht2040_bss_coexistence_mgmt_action_frame *pFrm, 12864 uint32_t *pnNeeded); 12865 12866 #ifdef __cplusplus 12867 } /* End extern "C". */ 12868 #endif /* C++ */ 12869 12870 typedef struct sDot11fmscs_request_action_frame{ 12871 tDot11fFfCategory Category; 12872 tDot11fFfAction Action; 12873 tDot11fFfDialogToken DialogToken; 12874 tDot11fIEdescriptor_element descriptor_element; 12875 } tDot11fmscs_request_action_frame; 12876 12877 #define DOT11F_MSCS_REQUEST_ACTION_FRAME (54) 12878 12879 #ifdef __cplusplus 12880 extern "C" { 12881 #endif /* C++ */ 12882 12883 uint32_t dot11f_unpack_mscs_request_action_frame(tpAniSirGlobal pCtx, 12884 uint8_t *pBuf, uint32_t nBuf, 12885 tDot11fmscs_request_action_frame * pFrm, bool append_ie); 12886 uint32_t dot11f_pack_mscs_request_action_frame(tpAniSirGlobal pCtx, 12887 tDot11fmscs_request_action_frame *pFrm, uint8_t *pBuf, 12888 uint32_t nBuf, uint32_t *pnConsumed); 12889 uint32_t dot11f_get_packed_mscs_request_action_frameSize(tpAniSirGlobal pCtx, 12890 tDot11fmscs_request_action_frame *pFrm, 12891 uint32_t *pnNeeded); 12892 12893 #ifdef __cplusplus 12894 } /* End extern "C". */ 12895 #endif /* C++ */ 12896 12897 typedef struct sDot11fp2p_oper_chan_change_confirm{ 12898 tDot11fFfCategory Category; 12899 tDot11fFfp2p_action_oui p2p_action_oui; 12900 tDot11fFfp2p_action_subtype p2p_action_subtype; 12901 tDot11fFfDialogToken DialogToken; 12902 tDot11fIEHTCaps HTCaps; 12903 tDot11fIEVHTCaps VHTCaps; 12904 tDot11fIEOperatingMode OperatingMode; 12905 } tDot11fp2p_oper_chan_change_confirm; 12906 12907 #define DOT11F_P2P_OPER_CHAN_CHANGE_CONFIRM (55) 12908 12909 #ifdef __cplusplus 12910 extern "C" { 12911 #endif /* C++ */ 12912 12913 uint32_t dot11f_unpack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx, 12914 uint8_t *pBuf, uint32_t nBuf, 12915 tDot11fp2p_oper_chan_change_confirm * pFrm, bool append_ie); 12916 uint32_t dot11f_pack_p2p_oper_chan_change_confirm(tpAniSirGlobal pCtx, 12917 tDot11fp2p_oper_chan_change_confirm *pFrm, uint8_t *pBuf, 12918 uint32_t nBuf, uint32_t *pnConsumed); 12919 uint32_t dot11f_get_packed_p2p_oper_chan_change_confirmSize(tpAniSirGlobal pCtx, 12920 tDot11fp2p_oper_chan_change_confirm *pFrm, 12921 uint32_t *pnNeeded); 12922 12923 #ifdef __cplusplus 12924 } /* End extern "C". */ 12925 #endif /* C++ */ 12926 12927 typedef struct sDot11ft2lm_neg_req{ 12928 tDot11fFfCategory Category; 12929 tDot11fFfAction Action; 12930 tDot11fFfDialogToken DialogToken; 12931 uint16_t num_t2lm_ie; 12932 tDot11fIEt2lm_ie t2lm_ie[2]; 12933 } tDot11ft2lm_neg_req; 12934 12935 #define DOT11F_T2LM_NEG_REQ (56) 12936 12937 #ifdef __cplusplus 12938 extern "C" { 12939 #endif /* C++ */ 12940 12941 uint32_t dot11f_unpack_t2lm_neg_req(tpAniSirGlobal pCtx, 12942 uint8_t *pBuf, uint32_t nBuf, 12943 tDot11ft2lm_neg_req * pFrm, bool append_ie); 12944 uint32_t dot11f_pack_t2lm_neg_req(tpAniSirGlobal pCtx, 12945 tDot11ft2lm_neg_req *pFrm, uint8_t *pBuf, 12946 uint32_t nBuf, uint32_t *pnConsumed); 12947 uint32_t dot11f_get_packed_t2lm_neg_reqSize(tpAniSirGlobal pCtx, 12948 tDot11ft2lm_neg_req *pFrm, 12949 uint32_t *pnNeeded); 12950 12951 #ifdef __cplusplus 12952 } /* End extern "C". */ 12953 #endif /* C++ */ 12954 12955 typedef struct sDot11ft2lm_neg_rsp{ 12956 tDot11fFfCategory Category; 12957 tDot11fFfAction Action; 12958 tDot11fFfDialogToken DialogToken; 12959 tDot11fFfStatus Status; 12960 } tDot11ft2lm_neg_rsp; 12961 12962 #define DOT11F_T2LM_NEG_RSP (57) 12963 12964 #ifdef __cplusplus 12965 extern "C" { 12966 #endif /* C++ */ 12967 12968 uint32_t dot11f_unpack_t2lm_neg_rsp(tpAniSirGlobal pCtx, 12969 uint8_t *pBuf, uint32_t nBuf, 12970 tDot11ft2lm_neg_rsp * pFrm, bool append_ie); 12971 uint32_t dot11f_pack_t2lm_neg_rsp(tpAniSirGlobal pCtx, 12972 tDot11ft2lm_neg_rsp *pFrm, uint8_t *pBuf, 12973 uint32_t nBuf, uint32_t *pnConsumed); 12974 uint32_t dot11f_get_packed_t2lm_neg_rspSize(tpAniSirGlobal pCtx, 12975 tDot11ft2lm_neg_rsp *pFrm, 12976 uint32_t *pnNeeded); 12977 12978 #ifdef __cplusplus 12979 } /* End extern "C". */ 12980 #endif /* C++ */ 12981 12982 typedef struct sDot11ft2lm_teardown{ 12983 tDot11fFfCategory Category; 12984 tDot11fFfAction Action; 12985 } tDot11ft2lm_teardown; 12986 12987 #define DOT11F_T2LM_TEARDOWN (58) 12988 12989 #ifdef __cplusplus 12990 extern "C" { 12991 #endif /* C++ */ 12992 12993 uint32_t dot11f_unpack_t2lm_teardown(tpAniSirGlobal pCtx, 12994 uint8_t *pBuf, uint32_t nBuf, 12995 tDot11ft2lm_teardown * pFrm, bool append_ie); 12996 uint32_t dot11f_pack_t2lm_teardown(tpAniSirGlobal pCtx, 12997 tDot11ft2lm_teardown *pFrm, uint8_t *pBuf, 12998 uint32_t nBuf, uint32_t *pnConsumed); 12999 uint32_t dot11f_get_packed_t2lm_teardownSize(tpAniSirGlobal pCtx, 13000 tDot11ft2lm_teardown *pFrm, 13001 uint32_t *pnNeeded); 13002 13003 #ifdef __cplusplus 13004 } /* End extern "C". */ 13005 #endif /* C++ */ 13006 13007 typedef struct sDot11fvendor_action_frame{ 13008 tDot11fFfCategory Category; 13009 tDot11fFfvendor_oui vendor_oui; 13010 tDot11fFfvendor_action_subtype vendor_action_subtype; 13011 } tDot11fvendor_action_frame; 13012 13013 #define DOT11F_VENDOR_ACTION_FRAME (59) 13014 13015 #ifdef __cplusplus 13016 extern "C" { 13017 #endif /* C++ */ 13018 13019 uint32_t dot11f_unpack_vendor_action_frame(tpAniSirGlobal pCtx, 13020 uint8_t *pBuf, uint32_t nBuf, 13021 tDot11fvendor_action_frame * pFrm, bool append_ie); 13022 uint32_t dot11f_pack_vendor_action_frame(tpAniSirGlobal pCtx, 13023 tDot11fvendor_action_frame *pFrm, uint8_t *pBuf, 13024 uint32_t nBuf, uint32_t *pnConsumed); 13025 uint32_t dot11f_get_packed_vendor_action_frameSize(tpAniSirGlobal pCtx, 13026 tDot11fvendor_action_frame *pFrm, 13027 uint32_t *pnNeeded); 13028 13029 #ifdef __cplusplus 13030 } /* End extern "C". */ 13031 #endif /* C++ */ 13032 13033 #endif /* DOT11F_H */ 13034