diff options
| author | karlf <[email protected]> | 2016-08-11 13:28:13 -0700 |
|---|---|---|
| committer | karlf <[email protected]> | 2016-08-11 13:28:13 -0700 |
| commit | 96eb96dfb613e4c745db6bd1f53a92fe7e2290fc (patch) | |
| tree | ad5f3ede5cbcd6b598677ce41bcf8318471bdd92 /network/wlan/WDI/COMMON/Defrag.c | |
| parent | 687b274aa38fd05c8c26e3068932121876d7f745 (diff) | |
Updated for "Windows 10 Anniversary Update" (Version 1607)
Diffstat (limited to 'network/wlan/WDI/COMMON/Defrag.c')
| -rw-r--r-- | network/wlan/WDI/COMMON/Defrag.c | 375 |
1 files changed, 0 insertions, 375 deletions
diff --git a/network/wlan/WDI/COMMON/Defrag.c b/network/wlan/WDI/COMMON/Defrag.c deleted file mode 100644 index 0de12e5d..00000000 --- a/network/wlan/WDI/COMMON/Defrag.c +++ /dev/null @@ -1,375 +0,0 @@ -#include "Mp_Precomp.h" - - -#if WPP_SOFTWARE_TRACE -#include "DeFrag.tmh" -#endif - -VOID -DefragInitialize( - PADAPTER Adapter - ) -{ - DefragInit(Adapter->DefragArray, MAX_DEFRAG_PEER); -} - -VOID -DefragReset( - PADAPTER Adapter - ) -{ - u2Byte i; - - for(i=0;i<MAX_DEFRAG_PEER;i++) - { - if(Adapter->DefragArray[i].bUsed) - { - DefragEntryFree(&Adapter->DefragArray[i], Adapter); - } - } -} - -PRT_RFD -DefragAddRFD( - PADAPTER Adapter, - PRT_RFD pRfd, - pu1Byte pSenderAddr, - u1Byte TID, - u2Byte SeqNum, - u1Byte FragNum, - BOOLEAN bMoreFrag, - BOOLEAN bEncrypted - ) -{ - /* - * Note: Call this function when - * 1. More frag is set - * 2. Fragment number is not zero - * The RFD passed in will be queued or freed after this function call. - * ICV should be removed before this function. - * - * Return: NULL, if no MSDU is complete - * RFD list, if one MSDU is complete - * - */ - - PRT_RFD pRetRfd=NULL; - PDEFRAG_ENTRY pEntry; - u2Byte EncryptionOverhead=0; - OCTET_STRING frame; - u1Byte QosCtrlLen = 0; // Added by Annie, 2006-01-09. - u1Byte HTCLen = 0; - PMGNT_INFO pMgntInfo = &Adapter->MgntInfo; - - if( pRfd->Status.bIsQosData ) - { - QosCtrlLen = sQoSCtlLng; - } - if( pRfd->Status.bContainHTC) - HTCLen = sHTCLng; - - if(FragNum==0) - { // First frag, find a vacancy entry - pEntry=DefragFindFreeEntry(Adapter->DefragArray, MAX_DEFRAG_PEER); - - if(pEntry==NULL) - { - // No free entry, do age function and try again - DefragAge( - Adapter->DefragArray, - MAX_DEFRAG_PEER, - PlatformGetCurrentTime(), - Adapter); - - pEntry=DefragFindFreeEntry(Adapter->DefragArray, MAX_DEFRAG_PEER); - } - - if(pEntry==NULL) - { - // If we stall can not get a free entry, knock out the least rescent used (LRU) - // entry to find one. 2006.07.25, by shien chang - DefragFreeLRUEntry(Adapter->DefragArray, - MAX_DEFRAG_PEER, - Adapter); - - pEntry=DefragFindFreeEntry(Adapter->DefragArray, MAX_DEFRAG_PEER); - - RT_ASSERT(pEntry!=NULL, ("DefragAddRFD(): pEntry should not be NULL.\n")); - - } - - DefragEntrySetRFD( - pEntry, - pRfd, - pSenderAddr, - TID, - SeqNum, - FragNum); - - } - else - { // 2~ frag - pEntry=DefragSearch( - Adapter->DefragArray, - MAX_DEFRAG_PEER, - pSenderAddr, - TID, - SeqNum, - FragNum); - - if(pEntry==NULL) - { - pRfd->bReturnDirectly = TRUE; - ReturnRFDList(Adapter, pRfd); - RT_ASSERT(Adapter->NumIdleRfd <= Adapter->NumRfd, ("DefragAddRFD(): Adapter->NumIdleRfd(%ld)\n", Adapter->NumIdleRfd)); - } - else - { - if(bEncrypted && !pMgntInfo->SafeModeEnabled) - { - FillOctetString(frame, pRfd->Buffer.VirtualAddress + pRfd->FragOffset, pRfd->FragLength); - SecGetEncryptionOverhead( - Adapter, - &EncryptionOverhead, - NULL, - NULL, - NULL, - TRUE, - MacAddr_isMulticast(Frame_pDaddr(frame))); - } - //2 Remove header and MPDU head overhead (ex. IV) - MAKE_RFD_OFFSET_AT_FRONT(pRfd, sMacHdrLng + QosCtrlLen + HTCLen + EncryptionOverhead) // Add QosCtrlLen; Modified by Annie, 2006-01-09. - - DefragEntryAddRFD(pEntry, pRfd, FragNum); - if(!bMoreFrag) - { //2 This MSDU is complete, return it - pRetRfd=pEntry->pRfdHead; - pEntry->bUsed=FALSE; - } - } - } - return pRetRfd; -} - - -/* - * Note: Following functions should not be called outside Defrag.c - * -*/ -VOID -DefragInit( - PDEFRAG_ENTRY pDefragArray, - u2Byte Size - ) -{ - u2Byte i; - - for(i=0;i<Size;i++) - { - pDefragArray[i].bUsed=FALSE; - } -} - -PDEFRAG_ENTRY -DefragSearch( - PDEFRAG_ENTRY pDefragArray, - u2Byte Size, - pu1Byte pSenderAddr, - u1Byte TID, - u2Byte SeqNum, - u1Byte FragNum - ) -{ - u2Byte i; - - for(i=0;i<Size;i++) - { - if(!pDefragArray[i].bUsed) - continue; - - if( SeqNum == pDefragArray[i].SeqNum && - FragNum == (pDefragArray[i].LastFragNum+1) && - TID == pDefragArray[i].TID && - eqMacAddr(pSenderAddr, pDefragArray[i].SenderAddr) - ) - { - return &pDefragArray[i]; - } - } - - return NULL; -} - -VOID -DefragRemoveOldest( - PADAPTER Adapter - ) -{ - u2Byte i; - u2Byte Oldest_Frag = MAX_DEFRAG_PEER; - PDEFRAG_ENTRY pDefragArray = Adapter->DefragArray; - - for(i=0; i<MAX_DEFRAG_PEER; i++) - { - if(!pDefragArray[i].bUsed) - continue; - - if(Oldest_Frag == MAX_DEFRAG_PEER) - { - Oldest_Frag = i; - continue; - } - - if( pDefragArray[Oldest_Frag].usMaxLifeTimeStamp > pDefragArray[i].usMaxLifeTimeStamp ) - { - Oldest_Frag = i; - } - } - - if( Oldest_Frag != MAX_DEFRAG_PEER ) - DefragEntryFree(&pDefragArray[Oldest_Frag], Adapter); -} - -PDEFRAG_ENTRY -DefragFindFreeEntry( - PDEFRAG_ENTRY pDefragArray, - u2Byte Size - ) -{ - u2Byte i; - - for(i=0;i<Size;i++) - { - if(!pDefragArray[i].bUsed) - return &pDefragArray[i]; - } - - return NULL; -} - -VOID -DefragAge( - PDEFRAG_ENTRY pDefragArray, - u2Byte Size, - u8Byte usCurrentTime, - PADAPTER Adapter - ) -{ - u2Byte i; - - for(i=0;i<Size;i++) - { - if(!pDefragArray[i].bUsed) - continue; - - if(usCurrentTime > pDefragArray[i].usMaxLifeTimeStamp) - DefragEntryFree(&pDefragArray[i], Adapter); - } -} - -VOID -DefragEntrySetRFD( - PDEFRAG_ENTRY pEntry, - PRT_RFD pRfd, - pu1Byte pSenderAddr, - u1Byte TID, - u2Byte SeqNum, - u1Byte FragNum - ) -{ - RT_ASSERT(FragNum==0, ("DefragEntrySetRFD() with nonzero FragNum !!\n")); - - pEntry->bUsed=TRUE; - cpMacAddr(pEntry->SenderAddr, pSenderAddr); - pEntry->TID=TID; - pEntry->SeqNum=SeqNum; - pEntry->LastFragNum=FragNum; - pEntry->usLastArriveTimeStamp=PlatformGetCurrentTime(); - pEntry->usMaxLifeTimeStamp=pEntry->usLastArriveTimeStamp + MaxDefragLifeTime; - pEntry->pRfdHead=pRfd; - pEntry->pRfdTail=pRfd; -} - -VOID -DefragEntryAddRFD( - PDEFRAG_ENTRY pEntry, - PRT_RFD pRfd, - u1Byte FragNum - ) -{ - RT_ASSERT(FragNum==(pEntry->LastFragNum+1), ("DefragEntryAddRFD() with wrong FragNum !!\n")); - - pEntry->LastFragNum=FragNum; - - // Increment fragment counter - pEntry->pRfdHead->nTotalFrag++; - - // Add packet length - pEntry->pRfdHead->PacketLength+=pRfd->FragLength; - - // Update arrival time - pEntry->usLastArriveTimeStamp=PlatformGetCurrentTime(); - - // Insert to tail - pEntry->pRfdTail->NextRfd=pRfd; - pEntry->pRfdTail=pRfd; -} - -VOID -DefragEntryFree( - PDEFRAG_ENTRY pEntry, - PADAPTER Adapter - ) -{ - ReturnRFDList(Adapter, (PRT_RFD)pEntry->pRfdHead); - pEntry->bUsed=FALSE; -} - -VOID -DefragRecycleRFD( - PADAPTER Adapter - ) -{ - // There may be many ways to recycle RFDs. - // Now we only free the LRU RFDs in DefragArray. 2006.07.25, by shien chang. - PADAPTER pAdapter; - pAdapter = GetDefaultAdapter(Adapter); - DefragFreeLRUEntry(pAdapter->DefragArray, MAX_DEFRAG_PEER, pAdapter); -} - -VOID -DefragFreeLRUEntry( - PDEFRAG_ENTRY pDefragArray, - u2Byte Size, - PADAPTER Adapter - ) -{ - u2Byte i, target=Size; - PDEFRAG_ENTRY pEntry; - - for (i=0; i<Size; i++) - { - if (pDefragArray[i].bUsed) - { - target=i; - break; - } - } - - if (target != Size) - { - for (i=target+1; i<Size; i++) - { - if (!pDefragArray[i].bUsed) - continue; - - if (pDefragArray[i].usLastArriveTimeStamp < pDefragArray[target].usLastArriveTimeStamp) - target = i; - } - - pEntry = &pDefragArray[target]; - ReturnRFDList(Adapter, (PRT_RFD)pEntry->pRfdHead); - - pEntry->bUsed=FALSE; - } -} |
