void MlmeDELBAAction(int param_1,byte *param_2)
{
byte bVar1;
int iVar2;
char *pcVar3;
undefined4 local_58;
undefined4 local_54;
undefined4 local_50;
undefined1 auStack_4c [16];
uint local_3c;
undefined1 auStack_38 [24];
uint local_20;
undefined2 local_1c;
local_58 = 0;
local_54 = 0;
memset(auStack_38,0,0x1e) //possible issue identified - semgrep
if (2 < RTDebugLevel) {
printk("==> MlmeDELBAAction(), Initiator(%d) \n",param_2[8]);
}
iVar2 = MlmeDelBAReqSanity(param_1,param_2,*(undefined4 *)(param_2 + 0x648));
if (iVar2 == 0) {
return;
}
if (0x1e < (byte)(*param_2 - 1)) {
return;
}
iVar2 = os_alloc_mem(param_1,&local_58,0x640);
if (iVar2 == 0) {
iVar2 = os_alloc_mem(param_1,&local_54,0x640);
if (iVar2 == 0) {
BarHeaderInit(param_1,auStack_4c,param_1 + (uint)*param_2 * 0xa20 + 0x5d190,
(uint)*(byte *)(param_1 + (uint)*param_2 * 0xa20 + 0x5cf69) * 0x1140 + param_1 +
0x51ac);
local_3c = local_3c & 0xffd |
(uint)*(ushort *)
(param_1 + ((uint)*param_2 * 0x510 + (uint)param_2[7] + 0x2e9d8) * 2 + 4) <<
0x14 | (param_2[7] & 0xf) << 0xc | 5;
MakeOutgoingFrame(local_54,&local_50,0x14,auStack_4c,0xffffffff);
MiniportMMRequest(param_1,0,local_54,local_50);
os_free_mem(param_1,local_54);
if (RTDebugLevel < 3) {
bVar1 = *param_2;
}
else {
printk("BA - MlmeDELBAAction() . Send BAR to refresh peer reordering buffer \n");
bVar1 = *param_2;
}
local_50 = 0;
iVar2 = (uint)*(byte *)(param_1 + (uint)bVar1 * 0xa20 + 0x5cf69) * 0x1140 + param_1 + 0x51ac;
ActHeaderInit(param_1,auStack_38,param_1 + (uint)bVar1 * 0xa20 + 0x5d190,iVar2,iVar2);
local_20 = CONCAT22(local_20._2_2_,0x203);
local_20 = local_20 & 0x7ffffff | (param_2[8] & 1) << 0x1b | (uint)param_2[7] << 0x1c;
local_1c = 0x27;
MakeOutgoingFrame(local_58,&local_50,0x1e,auStack_38,0xffffffff);
MiniportMMRequest(param_1,0,local_58,local_50);
os_free_mem(param_1,local_58);
if (RTDebugLevel < 3) {
return;
}
printk("BA - MlmeDELBAAction() . 3 DELBA sent. Initiator(%d)\n",param_2[8]);
return;
}
os_free_mem(param_1,local_58);
if (RTDebugLevel == 0) {
return;
}
pcVar3 = "BA - MlmeDELBAAction() allocate memory failed 2. \n";
}
else {
if (RTDebugLevel == 0) {
return;
}
pcVar3 = "BA - MlmeDELBAAction() allocate memory failed 1. \n";
}
printk(pcVar3);
return;
}