void MlmeADDBAAction(int param_1,byte *param_2)
{
int iVar1;
char *pcVar2;
uint uVar3;
undefined4 local_58;
undefined4 local_54;
undefined1 auStack_50 [8];
undefined1 auStack_48 [24];
undefined4 local_30;
uint local_2c;
uint local_28;
local_58 = 0;
memset(auStack_48,0,0x21) //possible issue identified - semgrep
iVar1 = MlmeAddBAReqSanity(param_1,param_2,*(undefined4 *)(param_2 + 0x648),auStack_50);
if (iVar1 == 0) {
return;
}
if (0x1e < (byte)(*param_2 - 1)) {
return;
}
iVar1 = os_alloc_mem(param_1,&local_58,0x640);
if (iVar1 == 0) {
if (*(short *)(param_1 + ((uint)*param_2 * 0x510 + (uint)param_2[10] + 0x2e9b4) * 2 + 6) != 0) {
iVar1 = (uint)*(byte *)((uint)*param_2 * 0xa20 + param_1 + 0x5cf69) * 0x1140 + param_1 +
0x51ac;
ActHeaderInit(param_1,auStack_48,param_2 + 1,iVar1,iVar1);
uVar3 = (uint)*(ushort *)
(param_1 + ((uint)*param_2 * 0x510 + (uint)param_2[10] + 0x2e9d8) * 2 + 4);
local_28 = local_28 & 0xffffff00 | (uVar3 << 0x14) >> 0x18;
local_30._3_1_ =
(byte)(((param_2[10] & 0xf) << 0x1a) >> 0x18) | 2 |
(byte)(((uint)param_2[7] << 0x1e) >> 0x18);
local_2c = (uint)CONCAT21(*(undefined2 *)(param_2 + 8),param_2[7] >> 2) | uVar3 << 0x1c;
local_30._0_3_ = CONCAT12(param_2[0xb],3);
MakeOutgoingFrame(local_58,&local_54,0x21,auStack_48,0xffffffff);
MiniportMMRequest(param_1,*(byte *)((int)&MapUserPriorityToAccessCategory + (uint)param_2[10])
& 0x7f | 0x80,local_58,local_54);
os_free_mem(param_1,local_58);
if (RTDebugLevel < 3) {
return;
}
printk("BA - Send ADDBA request. StartSeq = %x, FrameLen = %ld. BufSize = %d\n",
(local_28 & 0xff) << 4 | local_2c >> 0x1c,local_54,
(local_2c & 0xff) << 2 | local_30 >> 0x1e);
return;
}
os_free_mem(param_1,local_58);
if (RTDebugLevel == 0) {
return;
}
pcVar2 = "BA - MlmeADDBAAction() can\'t find BAOriEntry \n";
}
else {
if (RTDebugLevel < 3) {
return;
}
pcVar2 = "BA - MlmeADDBAAction() allocate memory failed \n";
}
printk(pcVar2);
return;
}