typedef struct GNU_PACKED _RXINFO_STRUC {
UINT32 BA:1;
UINT32 DATA:1;
UINT32 NULLDATA:1;
UINT32 FRAG:1;
UINT32 U2M:1; // 1: this RX frame is unicast to me
UINT32 Mcast:1; // 1: this is a multicast frame
UINT32 Bcast:1; // 1: this is a broadcast frame
UINT32 MyBss:1; // 1: this frame belongs to the same BSSID
UINT32 Crc:1; // 1: CRC error
UINT32 IcvErr:1;
UINT32 MicErr:1;
UINT32 AMSDU:1; // rx with 802.3 header, not 802.11 header.
UINT32 HTC:1;
UINT32 RSSI:1;
UINT32 L2PAD:1;
UINT32 AMPDU:1; // To be moved
UINT32 Decrypted:1;
UINT32 Bssidx3:1;
UINT32 WapiKeyId:1;
UINT32 PaddingLen:3;
UINT32 Resrv:6;
UINT32 TcpChksumPass:1;
UINT32 IpChksumPass:1;
UINT32 TcpChksumErr:1;
UINT32 IpChksumErr:1;
} RXINFO_STRUC, *PRXINFO_STRUC;
BOOLEAN STARxDoneInterruptHandle(
pBD_t pBufDesc)
{
PHEADER_802_11 pHeader;
RX_BLK RxCell;
PRXWI_STRUC pRxWI;
NDIS_STATUS Status;
PRXINFO_STRUC pRxINFO;
PUCHAR pBuff;
BYTE* p=0;
if (pBufDesc- Length = sizeof(HEADER_802_11) +RXINFO_SIZE +RXWI_SIZE){ // invalid packet length
DBGPRINT(RT_DEBUG_TRACE,( len=%d\n , pBufDesc- Length));
Printf_High( invalid packet length,time:%d\n ,kal_get_systime());
return FALSE;
}
/* RX_FCEINFO*/
/* RXINFO */
/* RXWI */
/* Payload */
/* check MIC error by pRxD attribute */
/* single frame MIC is calculated by HW */
pBuff = (PUCHAR)pBufDesc- pBuf;
pRxINFO = (PRXINFO_STRUC)(pBuff);
pRxWI = (PRXWI_STRUC) (pBuff +RXINFO_SIZE);
pHeader = (PHEADER_802_11) (pBuff +RXINFO_SIZE +RXWI_SIZE);
StorePhyMode(pRxWI- PHYMode);
。。。。。。
我想问问各位专家那个RXINFO和RXWI都是什么呀,802.11 Mac帧结构也没有提到有这些东西。
