diff --git a/core/rtw_mp.c b/core/rtw_mp.c index 7137dae..dc3cf26 100644 --- a/core/rtw_mp.c +++ b/core/rtw_mp.c @@ -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;