Scale ratio by 11 to get rid of floating point math in CCK_generator

pull/149/head
Yichao Yu 4 years ago
parent 92827948f1
commit 7c797ecf35
No known key found for this signature in database
GPG Key ID: 07F45E2A1937DD32

@ -3139,11 +3139,11 @@ void CCK_generator(
PRT_PMAC_PKT_INFO pPMacPktInfo
)
{
double ratio = 0;
UINT ratio11 = 0;
bool crc16_in[32] = {0}, crc16_out[16] = {0};
bool LengthExtBit;
double LengthExact;
double LengthPSDU;
UINT LengthExact11;
UINT LengthPSDU;
UCHAR i;
UINT PacketLength = pPMacTxInfo->PacketLength;
@ -3155,41 +3155,41 @@ void CCK_generator(
switch (pPMacPktInfo->MCS) {
case 0:
pPMacTxInfo->SignalField = 0xA;
ratio = 8;
ratio11 = 88;
/*CRC16_in(1,0:7)=[0 1 0 1 0 0 0 0]*/
crc16_in[1] = crc16_in[3] = 1;
break;
case 1:
pPMacTxInfo->SignalField = 0x14;
ratio = 4;
ratio11 = 44;
/*CRC16_in(1,0:7)=[0 0 1 0 1 0 0 0];*/
crc16_in[2] = crc16_in[4] = 1;
break;
case 2:
pPMacTxInfo->SignalField = 0x37;
ratio = 8.0 / 5.5;
ratio11 = 16;
/*CRC16_in(1,0:7)=[1 1 1 0 1 1 0 0];*/
crc16_in[0] = crc16_in[1] = crc16_in[2] = crc16_in[4] = crc16_in[5] = 1;
break;
case 3:
pPMacTxInfo->SignalField = 0x6E;
ratio = 8.0 / 11.0;
ratio11 = 8;
/*CRC16_in(1,0:7)=[0 1 1 1 0 1 1 0];*/
crc16_in[1] = crc16_in[2] = crc16_in[3] = crc16_in[5] = crc16_in[6] = 1;
break;
}
LengthExact = PacketLength * ratio;
LengthPSDU = ceil(LengthExact);
LengthExact11 = PacketLength * ratio11;
LengthPSDU = ceil_divide(LengthExact11, 11);
if ((pPMacPktInfo->MCS == 3) &&
((LengthPSDU - LengthExact) >= 0.727 || (LengthPSDU - LengthExact) <= -0.727))
(LengthPSDU * 11 >= 8 + LengthExact11 || LengthPSDU * 11 + 8 <= LengthExact11))
LengthExtBit = 1;
else
LengthExtBit = 0;
pPMacTxInfo->LENGTH = (UINT)LengthPSDU;
pPMacTxInfo->LENGTH = LengthPSDU;
/* CRC16_in(1,16:31) = LengthPSDU[0:15]*/
for (i = 0; i < 16; i++)
crc16_in[i + 16] = (pPMacTxInfo->LENGTH >> i) & 0x1;

Loading…
Cancel
Save