Staging: rt3070: remove dead QOS_DLS_SUPPORT code
authorBartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Sun, 26 Apr 2009 14:05:12 +0000 (16:05 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 19 Jun 2009 18:00:44 +0000 (11:00 -0700)
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
19 files changed:
drivers/staging/rt3070/common/action.c
drivers/staging/rt3070/common/cmm_data.c
drivers/staging/rt3070/common/cmm_info.c
drivers/staging/rt3070/common/cmm_sanity.c
drivers/staging/rt3070/common/mlme.c
drivers/staging/rt3070/common/rtusb_io.c
drivers/staging/rt3070/mlme.h
drivers/staging/rt3070/oid.h
drivers/staging/rt3070/rt_linux.c
drivers/staging/rt3070/rt_linux.h
drivers/staging/rt3070/rt_main_dev.c
drivers/staging/rt3070/rt_profile.c
drivers/staging/rt3070/rtmp.h
drivers/staging/rt3070/rtmp_def.h
drivers/staging/rt3070/sta/assoc.c
drivers/staging/rt3070/sta/connect.c
drivers/staging/rt3070/sta/dls.c [deleted file]
drivers/staging/rt3070/sta/rtmp_data.c
drivers/staging/rt3070/sta_ioctl.c

index 1597d7a..b7a4032 100644 (file)
@@ -72,9 +72,6 @@ VOID ActionStateMachineInit(
        StateMachineSetAction(S, ACT_IDLE, MT2_PEER_QOS_CATE, (STATE_MACHINE_FUNC)PeerQOSAction);
 
        StateMachineSetAction(S, ACT_IDLE, MT2_PEER_DLS_CATE, (STATE_MACHINE_FUNC)ReservedAction);
-#ifdef QOS_DLS_SUPPORT
-               StateMachineSetAction(S, ACT_IDLE, MT2_PEER_DLS_CATE, (STATE_MACHINE_FUNC)PeerDLSAction);
-#endif // QOS_DLS_SUPPORT //
 
 #ifdef DOT11_N_SUPPORT
        StateMachineSetAction(S, ACT_IDLE, MT2_PEER_BA_CATE, (STATE_MACHINE_FUNC)PeerBAAction);
@@ -291,39 +288,6 @@ VOID PeerQOSAction(
 {
 }
 
-#ifdef QOS_DLS_SUPPORT
-VOID PeerDLSAction(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem)
-{
-       UCHAR   Action = Elem->Msg[LENGTH_802_11+1];
-
-       switch(Action)
-       {
-               case ACTION_DLS_REQUEST:
-#ifdef CONFIG_STA_SUPPORT
-                       IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
-                       PeerDlsReqAction(pAd, Elem);
-#endif // CONFIG_STA_SUPPORT //
-                       break;
-
-               case ACTION_DLS_RESPONSE:
-#ifdef CONFIG_STA_SUPPORT
-                       IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
-                       PeerDlsRspAction(pAd, Elem);
-#endif // CONFIG_STA_SUPPORT //
-                       break;
-
-               case ACTION_DLS_TEARDOWN:
-#ifdef CONFIG_STA_SUPPORT
-                       IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
-                       PeerDlsTearDownAction(pAd, Elem);
-#endif // CONFIG_STA_SUPPORT //
-                       break;
-       }
-}
-#endif // QOS_DLS_SUPPORT //
-
 #ifdef DOT11_N_SUPPORT
 VOID PeerBAAction(
        IN PRTMP_ADAPTER pAd,
index a658ac1..93503b5 100644 (file)
@@ -1249,15 +1249,6 @@ VOID RTMPWriteTxWI_Data(
        pTxWI->ACK              = TX_BLK_TEST_FLAG(pTxBlk, fTX_bAckRequired);
        pTxWI->txop             = pTxBlk->FrameGap;
 
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-       if (pMacEntry &&
-               (pAd->StaCfg.BssType == BSS_INFRA) &&
-               (pMacEntry->ValidAsDls == TRUE))
-               pTxWI->WirelessCliID = BSSID_WCID;
-       else
-#endif // QOS_DLS_SUPPORT //
-#endif // CONFIG_STA_SUPPORT //
                pTxWI->WirelessCliID            = pTxBlk->Wcid;
 
        pTxWI->MPDUtotalByteCount       = pTxBlk->MpduHeaderLen + pTxBlk->SrcBufLen;
@@ -1876,11 +1867,6 @@ MAC_TABLE_ENTRY *MacTableInsertEntry(
                        (pAd->MacTab.Content[i].ValidAsWDS == FALSE) &&
                        (pAd->MacTab.Content[i].ValidAsApCli== FALSE) &&
                        (pAd->MacTab.Content[i].ValidAsMesh == FALSE)
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-                       && (pAd->MacTab.Content[i].ValidAsDls == FALSE)
-#endif // QOS_DLS_SUPPORT //
-#endif // CONFIG_STA_SUPPORT //
                        )
                {
                        pEntry = &pAd->MacTab.Content[i];
@@ -1892,20 +1878,6 @@ MAC_TABLE_ENTRY *MacTableInsertEntry(
                                pEntry->PairwiseKey.KeyLen = 0;
                                pEntry->PairwiseKey.CipherAlg = CIPHER_NONE;
                        }
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-                       if (apidx >= MIN_NET_DEVICE_FOR_DLS)
-                       {
-                               pEntry->ValidAsCLI = FALSE;
-                               pEntry->ValidAsWDS = FALSE;
-                               pEntry->ValidAsApCli = FALSE;
-                               pEntry->ValidAsMesh = FALSE;
-                               pEntry->ValidAsDls = TRUE;
-                               pEntry->isCached = FALSE;
-                       }
-                       else
-#endif // QOS_DLS_SUPPORT //
-#endif // CONFIG_STA_SUPPORT //
                        {
 
 #ifdef CONFIG_STA_SUPPORT
@@ -1934,12 +1906,6 @@ MAC_TABLE_ENTRY *MacTableInsertEntry(
                                pEntry->apidx = (apidx - MIN_NET_DEVICE_FOR_APCLI);
                        else if (pEntry->ValidAsWDS)
                                pEntry->apidx = (apidx - MIN_NET_DEVICE_FOR_WDS);
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-                       else if (pEntry->ValidAsDls)
-                               pEntry->apidx = (apidx - MIN_NET_DEVICE_FOR_DLS);
-#endif // QOS_DLS_SUPPORT //
-#endif // CONFIG_STA_SUPPORT //
                        else
                                pEntry->apidx = apidx;
 
@@ -1958,13 +1924,6 @@ MAC_TABLE_ENTRY *MacTableInsertEntry(
                        pEntry->GTKState = REKEY_NEGOTIATING;
                        pEntry->PairwiseKey.KeyLen = 0;
                        pEntry->PairwiseKey.CipherAlg = CIPHER_NONE;
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-                       if (pEntry->ValidAsDls == TRUE)
-                               pEntry->PortSecured = WPA_802_1X_PORT_SECURED;
-                       else
-#endif //QOS_DLS_SUPPORT
-#endif // CONFIG_STA_SUPPORT //
                        pEntry->PortSecured = WPA_802_1X_PORT_NOT_SECURED;
                        pEntry->PMKID_CacheIdx = ENTRY_NOT_FOUND;
                        COPY_MAC_ADDR(pEntry->Addr, pAddr);
@@ -2039,11 +1998,6 @@ BOOLEAN MacTableDeleteEntry(
        pEntry = &pAd->MacTab.Content[wcid];
 
        if (pEntry && (pEntry->ValidAsCLI || pEntry->ValidAsApCli || pEntry->ValidAsWDS || pEntry->ValidAsMesh
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-               || pEntry->ValidAsDls
-#endif // QOS_DLS_SUPPORT //
-#endif // CONFIG_STA_SUPPORT //
                ))
        {
                if (MAC_ADDR_EQUAL(pEntry->Addr, pAddr))
index c514c90..7344d39 100644 (file)
@@ -1715,11 +1715,6 @@ VOID     RTMPAddWcidAttributeEntry(
                                Wcid = pEntry->Aid;
                        else if (pEntry && INFRA_ON(pAd))
                        {
-#ifdef QOS_DLS_SUPPORT
-                               if (pEntry->ValidAsDls == TRUE)
-                                       Wcid = pEntry->Aid;
-                               else
-#endif // QOS_DLS_SUPPORT //
                                Wcid = BSSID_WCID;
                        }
                        else
@@ -1736,14 +1731,6 @@ VOID     RTMPAddWcidAttributeEntry(
        {
                if (pEntry && pEntry->ValidAsMesh)
                        WCIDAttri = (CipherAlg<<1) | PAIRWISEKEYTABLE;
-#ifdef QOS_DLS_SUPPORT
-               else if ((pEntry) && (pEntry->ValidAsDls) &&
-                                       ((CipherAlg == CIPHER_TKIP) ||
-                                       (CipherAlg == CIPHER_TKIP_NO_MIC) ||
-                                       (CipherAlg == CIPHER_AES) ||
-                                       (CipherAlg == CIPHER_NONE)))
-                       WCIDAttri = (CipherAlg<<1) | PAIRWISEKEYTABLE;
-#endif // QOS_DLS_SUPPORT //
                else
                        WCIDAttri = (CipherAlg<<1) | SHAREDKEYTABLE;
        }
index 6118df8..ce36c27 100644 (file)
@@ -1380,290 +1380,3 @@ BOOLEAN PeerWpaMessageSanity(
        return TRUE;
 
 }
-
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-BOOLEAN MlmeDlsReqSanity(
-       IN PRTMP_ADAPTER pAd,
-    IN VOID *Msg,
-    IN ULONG MsgLen,
-    OUT PRT_802_11_DLS *pDLS,
-    OUT PUSHORT pReason)
-{
-       MLME_DLS_REQ_STRUCT *pInfo;
-
-    pInfo = (MLME_DLS_REQ_STRUCT *)Msg;
-
-       *pDLS = pInfo->pDLS;
-       *pReason = pInfo->Reason;
-
-       return TRUE;
-}
-#endif // QOS_DLS_SUPPORT //
-#endif // CONFIG_STA_SUPPORT //
-
-#ifdef QOS_DLS_SUPPORT
-BOOLEAN PeerDlsReqSanity(
-    IN PRTMP_ADAPTER pAd,
-    IN VOID *Msg,
-    IN ULONG MsgLen,
-    OUT PUCHAR pDA,
-    OUT PUCHAR pSA,
-    OUT USHORT *pCapabilityInfo,
-    OUT USHORT *pDlsTimeout,
-    OUT UCHAR *pRatesLen,
-    OUT UCHAR Rates[],
-       OUT UCHAR *pHtCapabilityLen,
-    OUT HT_CAPABILITY_IE *pHtCapability)
-{
-       CHAR            *Ptr;
-    PFRAME_802_11      Fr = (PFRAME_802_11)Msg;
-       PEID_STRUCT  eid_ptr;
-
-    // to prevent caller from using garbage output value
-    *pCapabilityInfo   = 0;
-    *pDlsTimeout       = 0;
-       *pHtCapabilityLen = 0;
-
-    Ptr = Fr->Octet;
-
-       // offset to destination MAC address (Category and Action field)
-    Ptr += 2;
-
-    // get DA from payload and advance the pointer
-    NdisMoveMemory(pDA, Ptr, MAC_ADDR_LEN);
-    Ptr += MAC_ADDR_LEN;
-
-    // get SA from payload and advance the pointer
-    NdisMoveMemory(pSA, Ptr, MAC_ADDR_LEN);
-    Ptr += MAC_ADDR_LEN;
-
-    // get capability info from payload and advance the pointer
-    NdisMoveMemory(pCapabilityInfo, Ptr, 2);
-    Ptr += 2;
-
-    // get capability info from payload and advance the pointer
-    NdisMoveMemory(pDlsTimeout, Ptr, 2);
-    Ptr += 2;
-
-       // Category and Action field + DA + SA + capability + Timeout
-       eid_ptr = (PEID_STRUCT) &Fr->Octet[18];
-
-       while (((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((UCHAR*)Fr + MsgLen))
-       {
-               switch(eid_ptr->Eid)
-               {
-                       case IE_SUPP_RATES:
-                if ((eid_ptr->Len <= MAX_LEN_OF_SUPPORTED_RATES) && (eid_ptr->Len > 0))
-                {
-                    NdisMoveMemory(Rates, eid_ptr->Octet, eid_ptr->Len);
-                    DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsReqSanity - IE_SUPP_RATES., Len=%d. Rates[0]=%x\n",eid_ptr->Len, Rates[0]));
-                    DBGPRINT(RT_DEBUG_TRACE, ("Rates[1]=%x %x %x %x %x %x %x\n", Rates[1], Rates[2], Rates[3], Rates[4], Rates[5], Rates[6], Rates[7]));
-                    *pRatesLen = eid_ptr->Len;
-                }
-                else
-                {
-                    *pRatesLen = 8;
-                                       Rates[0] = 0x82;
-                                       Rates[1] = 0x84;
-                                       Rates[2] = 0x8b;
-                                       Rates[3] = 0x96;
-                                       Rates[4] = 0x12;
-                                       Rates[5] = 0x24;
-                                       Rates[6] = 0x48;
-                                       Rates[7] = 0x6c;
-                    DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsReqSanity - wrong IE_SUPP_RATES., Len=%d\n",eid_ptr->Len));
-                }
-                               break;
-
-                       case IE_EXT_SUPP_RATES:
-                if (eid_ptr->Len + *pRatesLen <= MAX_LEN_OF_SUPPORTED_RATES)
-                {
-                    NdisMoveMemory(&Rates[*pRatesLen], eid_ptr->Octet, eid_ptr->Len);
-                    *pRatesLen = (*pRatesLen) + eid_ptr->Len;
-                }
-                else
-                {
-                    NdisMoveMemory(&Rates[*pRatesLen], eid_ptr->Octet, MAX_LEN_OF_SUPPORTED_RATES - (*pRatesLen));
-                    *pRatesLen = MAX_LEN_OF_SUPPORTED_RATES;
-                }
-                               break;
-
-                       case IE_HT_CAP:
-                               if (eid_ptr->Len >= sizeof(HT_CAPABILITY_IE))
-                               {
-                                       NdisMoveMemory(pHtCapability, eid_ptr->Octet, sizeof(HT_CAPABILITY_IE));
-
-                                       *(USHORT *)(&pHtCapability->HtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->HtCapInfo));
-                                       *(USHORT *)(&pHtCapability->ExtHtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->ExtHtCapInfo));
-                                       *pHtCapabilityLen = sizeof(HT_CAPABILITY_IE);
-
-                                       DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsReqSanity - IE_HT_CAP\n"));
-                               }
-                               else
-                               {
-                                       DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsReqSanity - wrong IE_HT_CAP.eid_ptr->Len = %d\n", eid_ptr->Len));
-                               }
-                               break;
-
-                       default:
-                               break;
-               }
-
-               eid_ptr = (PEID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len);
-       }
-
-    return TRUE;
-}
-
-BOOLEAN PeerDlsRspSanity(
-    IN PRTMP_ADAPTER pAd,
-    IN VOID *Msg,
-    IN ULONG MsgLen,
-    OUT PUCHAR pDA,
-    OUT PUCHAR pSA,
-    OUT USHORT *pCapabilityInfo,
-    OUT USHORT *pStatus,
-    OUT UCHAR *pRatesLen,
-    OUT UCHAR Rates[],
-    OUT UCHAR *pHtCapabilityLen,
-    OUT HT_CAPABILITY_IE *pHtCapability)
-{
-    CHAR            *Ptr;
-    PFRAME_802_11      Fr = (PFRAME_802_11)Msg;
-       PEID_STRUCT  eid_ptr;
-
-    // to prevent caller from using garbage output value
-    *pStatus           = 0;
-    *pCapabilityInfo   = 0;
-       *pHtCapabilityLen = 0;
-
-    Ptr = Fr->Octet;
-
-       // offset to destination MAC address (Category and Action field)
-    Ptr += 2;
-
-       // get status code from payload and advance the pointer
-    NdisMoveMemory(pStatus, Ptr, 2);
-    Ptr += 2;
-
-    // get DA from payload and advance the pointer
-    NdisMoveMemory(pDA, Ptr, MAC_ADDR_LEN);
-    Ptr += MAC_ADDR_LEN;
-
-    // get SA from payload and advance the pointer
-    NdisMoveMemory(pSA, Ptr, MAC_ADDR_LEN);
-    Ptr += MAC_ADDR_LEN;
-
-       if (pStatus == 0)
-       {
-           // get capability info from payload and advance the pointer
-           NdisMoveMemory(pCapabilityInfo, Ptr, 2);
-           Ptr += 2;
-       }
-
-       // Category and Action field + status code + DA + SA + capability
-       eid_ptr = (PEID_STRUCT) &Fr->Octet[18];
-
-       while (((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((UCHAR*)Fr + MsgLen))
-       {
-               switch(eid_ptr->Eid)
-               {
-                       case IE_SUPP_RATES:
-                if ((eid_ptr->Len <= MAX_LEN_OF_SUPPORTED_RATES) && (eid_ptr->Len > 0))
-                {
-                    NdisMoveMemory(Rates, eid_ptr->Octet, eid_ptr->Len);
-                    DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsRspSanity - IE_SUPP_RATES., Len=%d. Rates[0]=%x\n",eid_ptr->Len, Rates[0]));
-                    DBGPRINT(RT_DEBUG_TRACE, ("Rates[1]=%x %x %x %x %x %x %x\n", Rates[1], Rates[2], Rates[3], Rates[4], Rates[5], Rates[6], Rates[7]));
-                    *pRatesLen = eid_ptr->Len;
-                }
-                else
-                {
-                    *pRatesLen = 8;
-                                       Rates[0] = 0x82;
-                                       Rates[1] = 0x84;
-                                       Rates[2] = 0x8b;
-                                       Rates[3] = 0x96;
-                                       Rates[4] = 0x12;
-                                       Rates[5] = 0x24;
-                                       Rates[6] = 0x48;
-                                       Rates[7] = 0x6c;
-                    DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsRspSanity - wrong IE_SUPP_RATES., Len=%d\n",eid_ptr->Len));
-                }
-                               break;
-
-                       case IE_EXT_SUPP_RATES:
-                if (eid_ptr->Len + *pRatesLen <= MAX_LEN_OF_SUPPORTED_RATES)
-                {
-                    NdisMoveMemory(&Rates[*pRatesLen], eid_ptr->Octet, eid_ptr->Len);
-                    *pRatesLen = (*pRatesLen) + eid_ptr->Len;
-                }
-                else
-                {
-                    NdisMoveMemory(&Rates[*pRatesLen], eid_ptr->Octet, MAX_LEN_OF_SUPPORTED_RATES - (*pRatesLen));
-                    *pRatesLen = MAX_LEN_OF_SUPPORTED_RATES;
-                }
-                               break;
-
-                       case IE_HT_CAP:
-                               if (eid_ptr->Len >= sizeof(HT_CAPABILITY_IE))
-                               {
-                                       NdisMoveMemory(pHtCapability, eid_ptr->Octet, sizeof(HT_CAPABILITY_IE));
-
-                                       *(USHORT *)(&pHtCapability->HtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->HtCapInfo));
-                                       *(USHORT *)(&pHtCapability->ExtHtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->ExtHtCapInfo));
-                                       *pHtCapabilityLen = sizeof(HT_CAPABILITY_IE);
-
-                                       DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsRspSanity - IE_HT_CAP\n"));
-                               }
-                               else
-                               {
-                                       DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsRspSanity - wrong IE_HT_CAP.eid_ptr->Len = %d\n", eid_ptr->Len));
-                               }
-                               break;
-
-                       default:
-                               break;
-               }
-
-               eid_ptr = (PEID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len);
-       }
-
-    return TRUE;
-}
-
-BOOLEAN PeerDlsTearDownSanity(
-    IN PRTMP_ADAPTER pAd,
-    IN VOID *Msg,
-    IN ULONG MsgLen,
-    OUT PUCHAR pDA,
-    OUT PUCHAR pSA,
-    OUT USHORT *pReason)
-{
-    CHAR            *Ptr;
-    PFRAME_802_11      Fr = (PFRAME_802_11)Msg;
-
-    // to prevent caller from using garbage output value
-    *pReason   = 0;
-
-    Ptr = Fr->Octet;
-
-       // offset to destination MAC address (Category and Action field)
-    Ptr += 2;
-
-    // get DA from payload and advance the pointer
-    NdisMoveMemory(pDA, Ptr, MAC_ADDR_LEN);
-    Ptr += MAC_ADDR_LEN;
-
-    // get SA from payload and advance the pointer
-    NdisMoveMemory(pSA, Ptr, MAC_ADDR_LEN);
-    Ptr += MAC_ADDR_LEN;
-
-       // get reason code from payload and advance the pointer
-    NdisMoveMemory(pReason, Ptr, 2);
-    Ptr += 2;
-
-    return TRUE;
-}
-#endif // QOS_DLS_SUPPORT //
-
index 537b157..a33a069 100644 (file)
@@ -511,11 +511,6 @@ NDIS_STATUS MlmeInit(
                        WpaPskStateMachineInit(pAd, &pAd->Mlme.WpaPskMachine, pAd->Mlme.WpaPskFunc);
                        AironetStateMachineInit(pAd, &pAd->Mlme.AironetMachine, pAd->Mlme.AironetFunc);
 
-#ifdef QOS_DLS_SUPPORT
-                       DlsStateMachineInit(pAd, &pAd->Mlme.DlsMachine, pAd->Mlme.DlsFunc);
-#endif // QOS_DLS_SUPPORT //
-
-
                        // Since we are using switch/case to implement it, the init is different from the above
                        // state machine init
                        MlmeCntlInit(pAd, &pAd->Mlme.CntlMachine, NULL);
@@ -635,12 +630,6 @@ VOID MlmeHandler(
                                case AIRONET_STATE_MACHINE:
                                        StateMachinePerformAction(pAd, &pAd->Mlme.AironetMachine, Elem);
                                        break;
-
-#ifdef QOS_DLS_SUPPORT
-                               case DLS_STATE_MACHINE:
-                                       StateMachinePerformAction(pAd, &pAd->Mlme.DlsMachine, Elem);
-                                       break;
-#endif // QOS_DLS_SUPPORT //
 #endif // CONFIG_STA_SUPPORT //
 
                                case ACTION_STATE_MACHINE:
@@ -702,9 +691,6 @@ VOID MlmeHalt(
 #ifdef CONFIG_STA_SUPPORT
        IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
        {
-#ifdef QOS_DLS_SUPPORT
-               UCHAR           i;
-#endif // QOS_DLS_SUPPORT //
                // Cancel pending timers
                RTMPCancelTimer(&pAd->MlmeAux.AssocTimer,               &Cancelled);
                RTMPCancelTimer(&pAd->MlmeAux.ReassocTimer,             &Cancelled);
@@ -712,13 +698,6 @@ VOID MlmeHalt(
                RTMPCancelTimer(&pAd->MlmeAux.AuthTimer,                &Cancelled);
                RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer,              &Cancelled);
                RTMPCancelTimer(&pAd->MlmeAux.ScanTimer,                &Cancelled);
-
-#ifdef QOS_DLS_SUPPORT
-               for (i=0; i<MAX_NUM_OF_DLS_ENTRY; i++)
-               {
-                       RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &Cancelled);
-               }
-#endif // QOS_DLS_SUPPORT //
        }
 #endif // CONFIG_STA_SUPPORT //
 
@@ -1048,11 +1027,6 @@ VOID STAMlmePeriodicExec(
 
        if (INFRA_ON(pAd))
        {
-#ifdef QOS_DLS_SUPPORT
-               // Check DLS time out, then tear down those session
-               RTMPCheckDLSTimeOut(pAd);
-#endif // QOS_DLS_SUPPORT //
-
                // Is PSM bit consistent with user power management policy?
                // This is the only place that will set PSM bit ON.
                if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
@@ -4896,9 +4870,6 @@ VOID      MlmeRestartStateMachine(
 #ifdef CONFIG_STA_SUPPORT
        IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
        {
-#ifdef QOS_DLS_SUPPORT
-               UCHAR i;
-#endif // QOS_DLS_SUPPORT //
                // Cancel all timer events
                // Be careful to cancel new added timer
                RTMPCancelTimer(&pAd->MlmeAux.AssocTimer,         &Cancelled);
@@ -4907,13 +4878,6 @@ VOID     MlmeRestartStateMachine(
                RTMPCancelTimer(&pAd->MlmeAux.AuthTimer,           &Cancelled);
                RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer,         &Cancelled);
                RTMPCancelTimer(&pAd->MlmeAux.ScanTimer,           &Cancelled);
-
-#ifdef QOS_DLS_SUPPORT
-               for (i=0; i<MAX_NUM_OF_DLS_ENTRY; i++)
-               {
-                       RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &Cancelled);
-               }
-#endif // QOS_DLS_SUPPORT //
        }
 #endif // CONFIG_STA_SUPPORT //
 
@@ -4934,9 +4898,6 @@ VOID      MlmeRestartStateMachine(
                pAd->Mlme.AuthRspMachine.CurrState = AUTH_RSP_IDLE;
                pAd->Mlme.SyncMachine.CurrState    = SYNC_IDLE;
                pAd->Mlme.ActMachine.CurrState    = ACT_IDLE;
-#ifdef QOS_DLS_SUPPORT
-               pAd->Mlme.DlsMachine.CurrState    = DLS_IDLE;
-#endif // QOS_DLS_SUPPORT //
        }
 #endif // CONFIG_STA_SUPPORT //
 
index 01153b7..d21a830 100644 (file)
@@ -1673,15 +1673,6 @@ VOID CMDHandler(
 
                                        pEntry = (PMAC_TABLE_ENTRY)(pData);
 
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-                                       KeyIdx = 0;
-                                       CipherAlg = pEntry->PairwiseKey.CipherAlg;
-                                       ApIdx = BSS0;
-#endif // QOS_DLS_SUPPORT //
-#endif // CONFIG_STA_SUPPORT //
-
-
                                                RTMPAddWcidAttributeEntry(
                                                                                  pAd,
                                                                                  ApIdx,
index f1bda4f..e84325e 100644 (file)
@@ -1342,29 +1342,6 @@ typedef struct _MLME_START_REQ_STRUCT {
     UCHAR       SsidLen;
 } MLME_START_REQ_STRUCT, *PMLME_START_REQ_STRUCT;
 
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-// structure for DLS
-typedef struct _RT_802_11_DLS {
-       USHORT                                          TimeOut;                // Use to time out while slience, unit: second , set by UI
-       USHORT                                          CountDownTimer; // Use to time out while slience,unit: second , used by driver only
-       NDIS_802_11_MAC_ADDRESS         MacAddr;                // set by UI
-       UCHAR                                           Status;                 // 0: none , 1: wait STAkey, 2: finish DLS setup , set by driver only
-       BOOLEAN                                         Valid;                  // 1: valid , 0: invalid , set by UI, use to setup or tear down DLS link
-       RALINK_TIMER_STRUCT                     Timer;                  // Use to time out while handshake
-       USHORT                                          Sequence;
-       USHORT                                          MacTabMatchWCID;        // ASIC
-       BOOLEAN                                         bHTCap;
-       PVOID                                           pAd;
-} RT_802_11_DLS, *PRT_802_11_DLS;
-
-typedef struct _MLME_DLS_REQ_STRUCT {
-    PRT_802_11_DLS     pDLS;
-    USHORT                     Reason;
-} MLME_DLS_REQ_STRUCT, *PMLME_DLS_REQ_STRUCT;
-#endif // QOS_DLS_SUPPORT //
-#endif // CONFIG_STA_SUPPORT //
-
 typedef struct PACKED {
     UCHAR   Eid;
     UCHAR   Len;
index 63437a9..8337456 100644 (file)
@@ -683,9 +683,6 @@ enum {
 #endif // RT2870 //
     RAIO_OFF = 10,
     RAIO_ON = 11,
-#ifdef QOS_DLS_SUPPORT
-       SHOW_DLS_ENTRY_INFO = 19,
-#endif // QOS_DLS_SUPPORT //
        SHOW_CFG_VALUE = 20,
 };
 
@@ -990,29 +987,6 @@ typedef struct _RT_LLTD_ASSOICATION_TABLE {
 #endif // LLTD_SUPPORT //
 
 #ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-//rt2860, kathy 2007-0118
-// structure for DLS
-typedef struct _RT_802_11_DLS_UI {
-       USHORT                                          TimeOut;                // unit: second , set by UI
-       USHORT                                          CountDownTimer; // unit: second , used by driver only
-       NDIS_802_11_MAC_ADDRESS         MacAddr;                // set by UI
-       UCHAR                                           Status;                 // 0: none , 1: wait STAkey, 2: finish DLS setup , set by driver only
-       BOOLEAN                                         Valid;                  // 1: valid , 0: invalid , set by UI, use to setup or tear down DLS link
-} RT_802_11_DLS_UI, *PRT_802_11_DLS_UI;
-
-typedef struct _RT_802_11_DLS_INFO {
-       RT_802_11_DLS_UI        Entry[MAX_NUMBER_OF_DLS_ENTRY];
-       UCHAR                           num;
-} RT_802_11_DLS_INFO, *PRT_802_11_DLS_INFO;
-
-typedef enum _RT_802_11_DLS_MODE {
-    DLS_NONE,
-    DLS_WAIT_KEY,
-    DLS_FINISH
-} RT_802_11_DLS_MODE;
-#endif // QOS_DLS_SUPPORT //
-
 #ifdef WPA_SUPPLICANT_SUPPORT
 #ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
 #define        RT_ASSOC_EVENT_FLAG                         0x0101
index f785a9a..252c63a 100644 (file)
@@ -52,9 +52,6 @@ BUILD_TIMER_FUNCTION(LeapAuthTimeout);
 #endif
 BUILD_TIMER_FUNCTION(StaQuickResponeForRateUpExec);
 BUILD_TIMER_FUNCTION(WpaDisassocApAndBlockAssoc);
-#ifdef QOS_DLS_SUPPORT
-BUILD_TIMER_FUNCTION(DlsTimeoutAction);
-#endif // QOS_DLS_SUPPORT //
 #endif // CONFIG_STA_SUPPORT //
 
 
index e863892..a18c416 100644 (file)
@@ -529,10 +529,6 @@ DECLARE_TIMER_FUNCTION(StaQuickResponeForRateUpExec);
 DECLARE_TIMER_FUNCTION(WpaDisassocApAndBlockAssoc);
 DECLARE_TIMER_FUNCTION(PsPollWakeExec);
 DECLARE_TIMER_FUNCTION(RadioOnExec);
-
-#ifdef QOS_DLS_SUPPORT
-DECLARE_TIMER_FUNCTION(DlsTimeoutAction);
-#endif // QOS_DLS_SUPPORT //
 #endif // CONFIG_STA_SUPPORT //
 
 void RTMP_GetCurrentSystemTime(LARGE_INTEGER *time);
index b73b1ff..cf645c2 100644 (file)
@@ -217,37 +217,6 @@ int rt28xx_close(IN PNET_DEV dev)
                    AsicForceWakeup(pAd, TRUE);
         }
 
-#ifdef QOS_DLS_SUPPORT
-               // send DLS-TEAR_DOWN message,
-               if (pAd->CommonCfg.bDLSCapable)
-               {
-                       UCHAR i;
-
-                       // tear down local dls table entry
-                       for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
-                       {
-                               if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
-                               {
-                                       RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
-                                       pAd->StaCfg.DLSEntry[i].Status  = DLS_NONE;
-                                       pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                               }
-                       }
-
-                       // tear down peer dls table entry
-                       for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
-                       {
-                               if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
-                               {
-                                       RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
-                                       pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
-                                       pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                               }
-                       }
-                       RT28XX_MLME_HANDLER(pAd);
-               }
-#endif // QOS_DLS_SUPPORT //
-
                if (INFRA_ON(pAd) &&
                        (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)))
                {
index 46865c1..a89f3fe 100644 (file)
@@ -821,23 +821,6 @@ static void rtmp_read_sta_wmm_parms_from_file(IN  PRTMP_ADAPTER pAd, char *tmpbu
                DBGPRINT(RT_DEBUG_TRACE, ("WmmCapable=%d\n", pAd->CommonCfg.bWmmCapable));
        }
 
-#ifdef QOS_DLS_SUPPORT
-       //DLSCapable
-       if(RTMPGetKeyParameter("DLSCapable", tmpbuf, 32, buffer))
-       {
-               if(simple_strtol(tmpbuf, 0, 10) != 0)  //Enable
-               {
-                       pAd->CommonCfg.bDLSCapable = TRUE;
-               }
-               else //Disable
-               {
-                       pAd->CommonCfg.bDLSCapable = FALSE;
-               }
-
-               DBGPRINT(RT_DEBUG_TRACE, ("bDLSCapable=%d\n", pAd->CommonCfg.bDLSCapable));
-       }
-#endif // QOS_DLS_SUPPORT //
-
        //AckPolicy for AC_BK, AC_BE, AC_VI, AC_VO
        if(RTMPGetKeyParameter("AckPolicy", tmpbuf, 32, buffer))
        {
index 7e83079..7842ac0 100644 (file)
@@ -1324,15 +1324,6 @@ typedef struct _MLME_STRUCT {
        // Action
        STATE_MACHINE           ActMachine;
 
-
-#ifdef QOS_DLS_SUPPORT
-       STATE_MACHINE                   DlsMachine;
-       STATE_MACHINE_FUNC      DlsFunc[DLS_FUNC_SIZE];
-#endif // QOS_DLS_SUPPORT //
-
-
-
-
        ULONG                   ChannelQuality;  // 0..100, Channel Quality Indication for Roaming
        ULONG                   Now32;           // latch the value of NdisGetSystemUpTime()
        ULONG                   LastSendNULLpsmTime;
@@ -2126,10 +2117,6 @@ typedef struct _STA_ADMIN_CONFIG {
        UCHAR                   DtimCount;      // 0.. DtimPeriod-1
        UCHAR                   DtimPeriod;     // default = 3
 
-#ifdef QOS_DLS_SUPPORT
-       RT_802_11_DLS           DLSEntry[MAX_NUM_OF_DLS_ENTRY];
-       UCHAR                           DlsReplayCounter[8];
-#endif // QOS_DLS_SUPPORT //
        ////////////////////////////////////////////////////////////////////////////////////////
        // This is only for WHQL test.
        BOOLEAN                         WhqlTest;
@@ -2301,14 +2288,6 @@ typedef struct _MAC_TABLE_ENTRY {
        UCHAR           TxRateUpPenalty;      // extra # of second penalty due to last unstable condition
 //====================================================
 
-
-
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-       UINT                    MatchDlsEntryIdx; // indicate the index in pAd->StaCfg.DLSEntry
-#endif // QOS_DLS_SUPPORT //
-#endif // CONFIG_STA_SUPPORT //
-
        BOOLEAN         fNoisyEnvironment;
        BOOLEAN                 fLastSecAccordingRSSI;
        UCHAR           LastSecTxRateChangeAction; // 0: no change, 1:rate UP, 2:rate down
@@ -3732,22 +3711,6 @@ VOID PeerQOSAction(
     IN PRTMP_ADAPTER pAd,
     IN MLME_QUEUE_ELEM *Elem);
 
-#ifdef QOS_DLS_SUPPORT
-VOID PeerDLSAction(
-    IN PRTMP_ADAPTER pAd,
-    IN MLME_QUEUE_ELEM *Elem);
-#endif // QOS_DLS_SUPPORT //
-
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-VOID DlsParmFill(
-       IN PRTMP_ADAPTER pAd,
-       IN OUT MLME_DLS_REQ_STRUCT *pDlsReq,
-       IN PRT_802_11_DLS pDls,
-       IN USHORT reason);
-#endif // QOS_DLS_SUPPORT //
-#endif // CONFIG_STA_SUPPORT //
-
 #ifdef DOT11_N_SUPPORT
 VOID RECBATimerTimeout(
     IN PVOID SystemSpecific1,
@@ -4679,142 +4642,6 @@ VOID PeerAuthSimpleRspGenAndSend(
 // Private routines in dls.c
 //
 
-#ifdef CONFIG_STA_SUPPORT
-#ifdef QOS_DLS_SUPPORT
-void DlsStateMachineInit(
-    IN PRTMP_ADAPTER pAd,
-    IN STATE_MACHINE *Sm,
-    OUT STATE_MACHINE_FUNC Trans[]);
-
-VOID MlmeDlsReqAction(
-    IN PRTMP_ADAPTER pAd,
-    IN MLME_QUEUE_ELEM *Elem);
-
-VOID PeerDlsReqAction(
-    IN PRTMP_ADAPTER   pAd,
-    IN MLME_QUEUE_ELEM *Elem);
-
-VOID PeerDlsRspAction(
-    IN PRTMP_ADAPTER   pAd,
-    IN MLME_QUEUE_ELEM *Elem);
-
-VOID MlmeDlsTearDownAction(
-    IN PRTMP_ADAPTER pAd,
-    IN MLME_QUEUE_ELEM *Elem);
-
-VOID PeerDlsTearDownAction(
-    IN PRTMP_ADAPTER   pAd,
-    IN MLME_QUEUE_ELEM *Elem);
-
-VOID RTMPCheckDLSTimeOut(
-       IN PRTMP_ADAPTER        pAd);
-
-BOOLEAN RTMPRcvFrameDLSCheck(
-       IN PRTMP_ADAPTER        pAd,
-       IN PHEADER_802_11       pHeader,
-       IN ULONG                        Len,
-       IN PRT28XX_RXD_STRUC    pRxD);
-
-INT    RTMPCheckDLSFrame(
-       IN      PRTMP_ADAPTER   pAd,
-       IN  PUCHAR          pDA);
-
-VOID RTMPSendDLSTearDownFrame(
-       IN      PRTMP_ADAPTER   pAd,
-       IN  PUCHAR          pDA);
-
-NDIS_STATUS RTMPSendSTAKeyRequest(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  pDA);
-
-NDIS_STATUS RTMPSendSTAKeyHandShake(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  pDA);
-
-VOID DlsTimeoutAction(
-       IN PVOID SystemSpecific1,
-       IN PVOID FunctionContext,
-       IN PVOID SystemSpecific2,
-       IN PVOID SystemSpecific3);
-
-BOOLEAN MlmeDlsReqSanity(
-       IN PRTMP_ADAPTER pAd,
-    IN VOID *Msg,
-    IN ULONG MsgLen,
-    OUT PRT_802_11_DLS *pDLS,
-    OUT PUSHORT pReason);
-
-INT Set_DlsEntryInfo_Display_Proc(
-       IN PRTMP_ADAPTER pAd,
-       IN PUCHAR arg);
-
-MAC_TABLE_ENTRY *MacTableInsertDlsEntry(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  PUCHAR      pAddr,
-       IN  UINT        DlsEntryIdx);
-
-BOOLEAN MacTableDeleteDlsEntry(
-       IN PRTMP_ADAPTER pAd,
-       IN USHORT wcid,
-       IN PUCHAR pAddr);
-
-MAC_TABLE_ENTRY *DlsEntryTableLookup(
-       IN PRTMP_ADAPTER pAd,
-       IN PUCHAR       pAddr,
-       IN BOOLEAN      bResetIdelCount);
-
-MAC_TABLE_ENTRY *DlsEntryTableLookupByWcid(
-       IN PRTMP_ADAPTER pAd,
-       IN UCHAR        wcid,
-       IN PUCHAR       pAddr,
-       IN BOOLEAN      bResetIdelCount);
-
-INT    Set_DlsAddEntry_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  arg);
-
-INT    Set_DlsTearDownEntry_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  arg);
-#endif // QOS_DLS_SUPPORT //
-#endif // CONFIG_STA_SUPPORT //
-
-#ifdef QOS_DLS_SUPPORT
-BOOLEAN PeerDlsReqSanity(
-    IN PRTMP_ADAPTER pAd,
-    IN VOID *Msg,
-    IN ULONG MsgLen,
-    OUT PUCHAR pDA,
-    OUT PUCHAR pSA,
-    OUT USHORT *pCapabilityInfo,
-    OUT USHORT *pDlsTimeout,
-    OUT UCHAR *pRatesLen,
-    OUT UCHAR Rates[],
-    OUT UCHAR *pHtCapabilityLen,
-    OUT HT_CAPABILITY_IE *pHtCapability);
-
-BOOLEAN PeerDlsRspSanity(
-    IN PRTMP_ADAPTER pAd,
-    IN VOID *Msg,
-    IN ULONG MsgLen,
-    OUT PUCHAR pDA,
-    OUT PUCHAR pSA,
-    OUT USHORT *pCapabilityInfo,
-    OUT USHORT *pStatus,
-    OUT UCHAR *pRatesLen,
-    OUT UCHAR Rates[],
-    OUT UCHAR *pHtCapabilityLen,
-    OUT HT_CAPABILITY_IE *pHtCapability);
-
-BOOLEAN PeerDlsTearDownSanity(
-    IN PRTMP_ADAPTER pAd,
-    IN VOID *Msg,
-    IN ULONG MsgLen,
-    OUT PUCHAR pDA,
-    OUT PUCHAR pSA,
-    OUT USHORT *pReason);
-#endif // QOS_DLS_SUPPORT //
-
 //========================================
 
 VOID SyncStateMachineInit(
@@ -4919,12 +4746,6 @@ VOID CntlWaitAssocProc(
        IN  PRTMP_ADAPTER   pAd,
        IN  MLME_QUEUE_ELEM *Elem);
 
-#ifdef QOS_DLS_SUPPORT
-VOID CntlOidDLSSetupProc(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem);
-#endif // QOS_DLS_SUPPORT //
-
 VOID LinkUp(
        IN  PRTMP_ADAPTER   pAd,
        IN  UCHAR BssType);
index 06f1d3f..6ba241b 100644 (file)
 
 
 
-#ifdef QOS_DLS_SUPPORT
-#define DLS_STATE_MACHINE               26
-#endif // QOS_DLS_SUPPORT //
-
 //
 // STA's CONTROL/CONNECT state machine: states, events, total function #
 //
index 5c33a89..8113b00 100644 (file)
@@ -948,36 +948,6 @@ VOID MlmeDisassocReqAction(
        ULONG                 Timeout = 0;
        USHORT                Status;
 
-#ifdef QOS_DLS_SUPPORT
-       // send DLS-TEAR_DOWN message,
-       if (pAd->CommonCfg.bDLSCapable)
-       {
-               UCHAR i;
-
-               // tear down local dls table entry
-               for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
-               {
-                       if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
-                       {
-                               RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
-                               pAd->StaCfg.DLSEntry[i].Status  = DLS_NONE;
-                               pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                       }
-               }
-
-               // tear down peer dls table entry
-               for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
-               {
-                       if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
-                       {
-                               RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
-                               pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
-                               pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                       }
-               }
-       }
-#endif // QOS_DLS_SUPPORT //
-
        // skip sanity check
        pDisassocReq = (PMLME_DISASSOC_REQ_STRUCT)(Elem->Msg);
 
index f4aeee5..d2bc22f 100644 (file)
@@ -288,12 +288,6 @@ VOID CntlIdleProc(
             WpaMicFailureReportFrame(pAd, Elem);
             break;
 
-#ifdef QOS_DLS_SUPPORT
-               case RT_OID_802_11_SET_DLS_PARAM:
-                       CntlOidDLSSetupProc(pAd, Elem);
-                       break;
-#endif // QOS_DLS_SUPPORT //
-
                default:
                        DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Illegal message in CntlIdleProc(MsgType=%ld)\n",Elem->MsgType));
                        break;
@@ -687,113 +681,6 @@ VOID CntlMlmeRoamingProc(
        IterateOnBssTab(pAd);
 }
 
-#ifdef QOS_DLS_SUPPORT
-/*
-       ==========================================================================
-       Description:
-
-       IRQL = DISPATCH_LEVEL
-
-       ==========================================================================
-*/
-VOID CntlOidDLSSetupProc(
-       IN PRTMP_ADAPTER pAd,
-       IN MLME_QUEUE_ELEM *Elem)
-{
-       PRT_802_11_DLS          pDLS = (PRT_802_11_DLS)Elem->Msg;
-       MLME_DLS_REQ_STRUCT     MlmeDlsReq;
-       INT                                     i;
-       USHORT                          reason = REASON_UNSPECIFY;
-
-       DBGPRINT(RT_DEBUG_TRACE,("CNTL - (OID set %02x:%02x:%02x:%02x:%02x:%02x with Valid=%d, Status=%d, TimeOut=%d, CountDownTimer=%d)\n",
-               pDLS->MacAddr[0], pDLS->MacAddr[1], pDLS->MacAddr[2], pDLS->MacAddr[3], pDLS->MacAddr[4], pDLS->MacAddr[5],
-               pDLS->Valid, pDLS->Status, pDLS->TimeOut, pDLS->CountDownTimer));
-
-       if (!pAd->CommonCfg.bDLSCapable)
-               return;
-
-       // DLS will not be supported when Adhoc mode
-       if (INFRA_ON(pAd))
-       {
-               for (i = 0; i < MAX_NUM_OF_DLS_ENTRY; i++)
-               {
-                       if (pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) &&
-                               (pDLS->TimeOut == pAd->StaCfg.DLSEntry[i].TimeOut) && MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
-                       {
-                               // 1. Same setting, just drop it
-                               DBGPRINT(RT_DEBUG_TRACE,("CNTL - setting unchanged\n"));
-                               break;
-                       }
-                       else if (!pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) &&
-                               MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
-                       {
-                               // 2. Disable DLS link case, just tear down DLS link
-                               reason = REASON_QOS_UNWANTED_MECHANISM;
-                               pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                               pAd->StaCfg.DLSEntry[i].Status  = DLS_NONE;
-                               DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
-                               MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-                               DBGPRINT(RT_DEBUG_TRACE,("CNTL - start tear down procedure\n"));
-                               break;
-                       }
-                       else if ((i < MAX_NUM_OF_DLS_ENTRY) && pDLS->Valid && !pAd->StaCfg.DLSEntry[i].Valid)
-                       {
-                               // 3. Enable case, start DLS setup procedure
-                               NdisMoveMemory(&pAd->StaCfg.DLSEntry[i], pDLS, sizeof(RT_802_11_DLS_UI));
-
-                               //Update countdown timer
-                               pAd->StaCfg.DLSEntry[i].CountDownTimer = pAd->StaCfg.DLSEntry[i].TimeOut;
-                               DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
-                               MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-                               DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS setup case\n"));
-                               break;
-                       }
-                       else if ((i < MAX_NUM_OF_DLS_ENTRY) && pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid &&
-                               (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) && !MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
-                       {
-                               // 4. update mac case, tear down old DLS and setup new DLS
-                               reason = REASON_QOS_UNWANTED_MECHANISM;
-                               pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                               pAd->StaCfg.DLSEntry[i].Status  = DLS_NONE;
-                               DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
-                               MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-                               NdisMoveMemory(&pAd->StaCfg.DLSEntry[i], pDLS, sizeof(RT_802_11_DLS_UI));
-                               DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
-                               MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-                               DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS tear down and restart case\n"));
-                               break;
-                       }
-                       else if (pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid &&
-                               MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr) && (pAd->StaCfg.DLSEntry[i].TimeOut != pDLS->TimeOut))
-                       {
-                               // 5. update timeout case, start DLS setup procedure (no tear down)
-                               pAd->StaCfg.DLSEntry[i].TimeOut = pDLS->TimeOut;
-                               //Update countdown timer
-                               pAd->StaCfg.DLSEntry[i].CountDownTimer = pAd->StaCfg.DLSEntry[i].TimeOut;
-                               DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
-                               MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-                               DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS update timeout case\n"));
-                               break;
-                       }
-                       else if (pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid &&
-                               (pAd->StaCfg.DLSEntry[i].Status != DLS_FINISH) && MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
-                       {
-                               // 6. re-setup case, start DLS setup procedure (no tear down)
-                               DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
-                               MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-                               DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS retry setup procedure\n"));
-                               break;
-                       }
-                       else
-                       {
-                               DBGPRINT(RT_DEBUG_WARN,("CNTL - DLS not changed in entry - %d - Valid=%d, Status=%d, TimeOut=%d\n",
-                                       i, pAd->StaCfg.DLSEntry[i].Valid, pAd->StaCfg.DLSEntry[i].Status, pAd->StaCfg.DLSEntry[i].TimeOut));
-                       }
-               }
-       }
-}
-#endif // QOS_DLS_SUPPORT //
-
 /*
        ==========================================================================
        Description:
@@ -2027,33 +1914,6 @@ VOID LinkDown(
        {
                DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK DOWN 2!!!\n"));
 
-#ifdef QOS_DLS_SUPPORT
-               // DLS tear down frame must be sent before link down
-               // send DLS-TEAR_DOWN message
-               if (pAd->CommonCfg.bDLSCapable)
-               {
-                       // tear down local dls table entry
-                       for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
-                       {
-                               if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
-                               {
-                                       pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
-                                       RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
-                               }
-                       }
-
-                       // tear down peer dls table entry
-                       for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
-                       {
-                               if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status ==  DLS_FINISH))
-                               {
-                                       pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
-                                       RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
-                               }
-                       }
-               }
-#endif // QOS_DLS_SUPPORT //
-
                OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_INFRA_ON);
                OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);
 
@@ -2152,11 +2012,6 @@ VOID LinkDown(
                pAd->StaCfg.WpaState = SS_START;
                // Clear Replay counter
                NdisZeroMemory(pAd->StaCfg.ReplayCounter, 8);
-
-#ifdef QOS_DLS_SUPPORT
-               if (pAd->CommonCfg.bDLSCapable)
-                       NdisZeroMemory(pAd->StaCfg.DlsReplayCounter, 8);
-#endif // QOS_DLS_SUPPORT //
        }
 
 
@@ -2476,26 +2331,6 @@ VOID ScanParmFill(
        ScanReq->ScanType = ScanType;
 }
 
-#ifdef QOS_DLS_SUPPORT
-/*
-       ==========================================================================
-       Description:
-
-       IRQL = DISPATCH_LEVEL
-
-       ==========================================================================
-*/
-VOID DlsParmFill(
-       IN PRTMP_ADAPTER pAd,
-       IN OUT MLME_DLS_REQ_STRUCT *pDlsReq,
-       IN PRT_802_11_DLS pDls,
-       IN USHORT reason)
-{
-       pDlsReq->pDLS = pDls;
-       pDlsReq->Reason = reason;
-}
-#endif // QOS_DLS_SUPPORT //
-
 /*
        ==========================================================================
        Description:
diff --git a/drivers/staging/rt3070/sta/dls.c b/drivers/staging/rt3070/sta/dls.c
deleted file mode 100644 (file)
index 8bcd413..0000000
+++ /dev/null
@@ -1,2170 +0,0 @@
-/*
- *************************************************************************
- * Ralink Tech Inc.
- * 5F., No.36, Taiyuan St., Jhubei City,
- * Hsinchu County 302,
- * Taiwan, R.O.C.
- *
- * (c) Copyright 2002-2007, Ralink Technology, Inc.
- *
- * This program is free software; you can redistribute it and/or modify  *
- * it under the terms of the GNU General Public License as published by  *
- * the Free Software Foundation; either version 2 of the License, or     *
- * (at your option) any later version.                                   *
- *                                                                       *
- * This program is distributed in the hope that it will be useful,       *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- * GNU General Public License for more details.                          *
- *                                                                       *
- * You should have received a copy of the GNU General Public License     *
- * along with this program; if not, write to the                         *
- * Free Software Foundation, Inc.,                                       *
- * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
- *                                                                       *
- *************************************************************************
-
-    Module Name:
-    dls.c
-
-    Abstract:
-    Handle WMM-DLS state machine
-
-    Revision History:
-    Who         When          What
-    --------    ----------    ----------------------------------------------
-    Rory Chen   02-14-2006
-       Arvin Tai       06-03-2008        Modified for RT28xx
- */
-
-#include "../rt_config.h"
-
-/*
-    ==========================================================================
-    Description:
-        dls state machine init, including state transition and timer init
-    Parameters:
-        Sm - pointer to the dls state machine
-    Note:
-        The state machine looks like this
-
-                            DLS_IDLE
-    MT2_MLME_DLS_REQUEST   MlmeDlsReqAction
-    MT2_PEER_DLS_REQUEST   PeerDlsReqAction
-    MT2_PEER_DLS_RESPONSE  PeerDlsRspAction
-    MT2_MLME_DLS_TEARDOWN  MlmeTearDownAction
-    MT2_PEER_DLS_TEARDOWN  PeerTearDownAction
-
-       IRQL = PASSIVE_LEVEL
-
-    ==========================================================================
- */
-void DlsStateMachineInit(
-    IN PRTMP_ADAPTER pAd,
-    IN STATE_MACHINE *Sm,
-    OUT STATE_MACHINE_FUNC Trans[])
-{
-       UCHAR   i;
-
-    StateMachineInit(Sm, (STATE_MACHINE_FUNC*)Trans, MAX_DLS_STATE, MAX_DLS_MSG, (STATE_MACHINE_FUNC)Drop, DLS_IDLE, DLS_MACHINE_BASE);
-
-    // the first column
-    StateMachineSetAction(Sm, DLS_IDLE, MT2_MLME_DLS_REQ, (STATE_MACHINE_FUNC)MlmeDlsReqAction);
-    StateMachineSetAction(Sm, DLS_IDLE, MT2_PEER_DLS_REQ, (STATE_MACHINE_FUNC)PeerDlsReqAction);
-    StateMachineSetAction(Sm, DLS_IDLE, MT2_PEER_DLS_RSP, (STATE_MACHINE_FUNC)PeerDlsRspAction);
-    StateMachineSetAction(Sm, DLS_IDLE, MT2_MLME_DLS_TEAR_DOWN, (STATE_MACHINE_FUNC)MlmeDlsTearDownAction);
-    StateMachineSetAction(Sm, DLS_IDLE, MT2_PEER_DLS_TEAR_DOWN, (STATE_MACHINE_FUNC)PeerDlsTearDownAction);
-
-       for (i=0; i<MAX_NUM_OF_DLS_ENTRY; i++)
-       {
-               pAd->StaCfg.DLSEntry[i].pAd = pAd;
-               RTMPInitTimer(pAd, &pAd->StaCfg.DLSEntry[i].Timer, GET_TIMER_FUNCTION(DlsTimeoutAction), pAd, FALSE);
-       }
-}
-
-/*
-    ==========================================================================
-    Description:
-
-       IRQL = DISPATCH_LEVEL
-
-    ==========================================================================
- */
-VOID MlmeDlsReqAction(
-    IN PRTMP_ADAPTER pAd,
-    IN MLME_QUEUE_ELEM *Elem)
-{
-       PUCHAR                  pOutBuffer = NULL;
-       NDIS_STATUS             NStatus;
-       ULONG                   FrameLen = 0;
-       HEADER_802_11   DlsReqHdr;
-       PRT_802_11_DLS  pDLS = NULL;
-       UCHAR                   Category = CATEGORY_DLS;
-       UCHAR                   Action = ACTION_DLS_REQUEST;
-       ULONG                   tmp;
-       USHORT                  reason;
-       ULONG                   Timeout;
-       BOOLEAN                 TimerCancelled;
-
-       if(!MlmeDlsReqSanity(pAd, Elem->Msg, Elem->MsgLen, &pDLS, &reason))
-               return;
-
-       DBGPRINT(RT_DEBUG_TRACE,("DLS - MlmeDlsReqAction() \n"));
-
-       NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
-       if (NStatus != NDIS_STATUS_SUCCESS)
-       {
-               DBGPRINT(RT_DEBUG_ERROR,("DLS - MlmeDlsReqAction() allocate memory failed \n"));
-               return;
-       }
-
-       ActHeaderInit(pAd, &DlsReqHdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
-
-       // Build basic frame first
-       MakeOutgoingFrame(pOutBuffer,                           &FrameLen,
-                                       sizeof(HEADER_802_11),          &DlsReqHdr,
-                                       1,                                                      &Category,
-                                       1,                                                      &Action,
-                                       6,                                                      &pDLS->MacAddr,
-                                       6,                                                      pAd->CurrentAddress,
-                                       2,                                                      &pAd->StaActive.CapabilityInfo,
-                                       2,                                                      &pDLS->TimeOut,
-                                       1,                                                      &SupRateIe,
-                                       1,                                                      &pAd->MlmeAux.SupRateLen,
-                                       pAd->MlmeAux.SupRateLen,        pAd->MlmeAux.SupRate,
-                                       END_OF_ARGS);
-
-       if (pAd->MlmeAux.ExtRateLen != 0)
-       {
-               MakeOutgoingFrame(pOutBuffer + FrameLen,        &tmp,
-                                                 1,                                            &ExtRateIe,
-                                                 1,                                            &pAd->MlmeAux.ExtRateLen,
-                                                 pAd->MlmeAux.ExtRateLen,      pAd->MlmeAux.ExtRate,
-                                                 END_OF_ARGS);
-               FrameLen += tmp;
-       }
-
-#ifdef DOT11_N_SUPPORT
-       if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
-       {
-               UCHAR HtLen;
-
-#ifdef RT_BIG_ENDIAN
-               HT_CAPABILITY_IE HtCapabilityTmp;
-#endif
-
-               // add HT Capability IE
-               HtLen = sizeof(HT_CAPABILITY_IE);
-#ifndef RT_BIG_ENDIAN
-               MakeOutgoingFrame(pOutBuffer + FrameLen,        &tmp,
-                                                       1,                                              &HtCapIe,
-                                                       1,                                              &HtLen,
-                                                       HtLen,                                  &pAd->CommonCfg.HtCapability,
-                                                       END_OF_ARGS);
-#else
-               NdisMoveMemory(&HtCapabilityTmp, &pAd->CommonCfg.HtCapability, HtLen);
-                                                       *(USHORT *)(&HtCapabilityTmp.HtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.HtCapInfo));
-                                                       *(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo));
-
-               MakeOutgoingFrame(pOutBuffer + FrameLen,        &tmp,
-                                                       1,                                              &HtCapIe,
-                                                       1,                                              &HtLen,
-                                                       HtLen,                                  &HtCapabilityTmp,
-                                                       END_OF_ARGS);
-#endif
-               FrameLen = FrameLen + tmp;
-       }
-#endif // DOT11_N_SUPPORT //
-
-       RTMPCancelTimer(&pDLS->Timer, &TimerCancelled);
-       Timeout = DLS_TIMEOUT;
-       RTMPSetTimer(&pDLS->Timer, Timeout);
-
-       MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
-       MlmeFreeMemory(pAd, pOutBuffer);
-}
-
-/*
-    ==========================================================================
-    Description:
-
-       IRQL = DISPATCH_LEVEL
-
-    ==========================================================================
- */
-VOID PeerDlsReqAction(
-    IN PRTMP_ADAPTER pAd,
-    IN MLME_QUEUE_ELEM *Elem)
-{
-       PUCHAR                  pOutBuffer = NULL;
-       NDIS_STATUS             NStatus;
-       ULONG                   FrameLen = 0;
-       USHORT                  StatusCode = MLME_SUCCESS;
-       HEADER_802_11   DlsRspHdr;
-       UCHAR                   Category = CATEGORY_DLS;
-       UCHAR                   Action = ACTION_DLS_RESPONSE;
-       ULONG                   tmp;
-       USHORT                  CapabilityInfo;
-       UCHAR                   DA[MAC_ADDR_LEN], SA[MAC_ADDR_LEN];
-       USHORT                  DLSTimeOut;
-       SHORT                   i;
-       ULONG                   Timeout;
-       BOOLEAN                 TimerCancelled;
-       PRT_802_11_DLS  pDLS = NULL;
-       UCHAR                   MaxSupportedRateIn500Kbps = 0;
-    UCHAR                      SupportedRatesLen;
-    UCHAR                      SupportedRates[MAX_LEN_OF_SUPPORTED_RATES];
-       UCHAR                   HtCapabilityLen;
-       HT_CAPABILITY_IE        HtCapability;
-
-       if (!PeerDlsReqSanity(pAd, Elem->Msg, Elem->MsgLen, DA, SA, &CapabilityInfo, &DLSTimeOut,
-                                                       &SupportedRatesLen, &SupportedRates[0], &HtCapabilityLen, &HtCapability))
-               return;
-
-    // supported rates array may not be sorted. sort it and find the maximum rate
-    for (i = 0; i < SupportedRatesLen; i++)
-    {
-        if (MaxSupportedRateIn500Kbps < (SupportedRates[i] & 0x7f))
-            MaxSupportedRateIn500Kbps = SupportedRates[i] & 0x7f;
-    }
-
-       DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsReqAction() from %02x:%02x:%02x:%02x:%02x:%02x\n", SA[0], SA[1], SA[2], SA[3], SA[4], SA[5]));
-
-       NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
-       if (NStatus != NDIS_STATUS_SUCCESS)
-       {
-               DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsReqAction() allocate memory failed \n"));
-               return;
-       }
-
-       if (!INFRA_ON(pAd))
-       {
-               StatusCode = MLME_REQUEST_DECLINED;
-       }
-       else if (!pAd->CommonCfg.bWmmCapable)
-       {
-               StatusCode = MLME_DEST_STA_IS_NOT_A_QSTA;
-       }
-       else if (!pAd->CommonCfg.bDLSCapable)
-       {
-               StatusCode = MLME_REQUEST_DECLINED;
-       }
-       else
-       {
-               // find table to update parameters
-               for (i = (MAX_NUM_OF_DLS_ENTRY-1); i >= 0; i--)
-               {
-                       if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(SA, pAd->StaCfg.DLSEntry[i].MacAddr))
-                       {
-                               if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-                                       pAd->StaCfg.DLSEntry[i].Status = DLS_WAIT_KEY;
-                               else
-                               {
-                                       RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
-                                       pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
-                               }
-
-                               pAd->StaCfg.DLSEntry[i].Sequence = 0;
-                               pAd->StaCfg.DLSEntry[i].TimeOut = DLSTimeOut;
-                               pAd->StaCfg.DLSEntry[i].CountDownTimer = DLSTimeOut;
-                               if (HtCapabilityLen != 0)
-                                       pAd->StaCfg.DLSEntry[i].bHTCap = TRUE;
-                               else
-                                       pAd->StaCfg.DLSEntry[i].bHTCap = FALSE;
-                               pDLS = &pAd->StaCfg.DLSEntry[i];
-                               break;
-                       }
-               }
-
-               // can not find in table, create a new one
-               if (i < 0)
-               {
-                       DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsReqAction() can not find same entry \n"));
-                       for (i=(MAX_NUM_OF_DLS_ENTRY - 1); i >= MAX_NUM_OF_INIT_DLS_ENTRY; i--)
-                       {
-                               if (!pAd->StaCfg.DLSEntry[i].Valid)
-                               {
-                                       MAC_TABLE_ENTRY *pEntry;
-                                       UCHAR MaxSupportedRate = RATE_11;
-
-                                       if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-                                       {
-                                               pAd->StaCfg.DLSEntry[i].Status = DLS_WAIT_KEY;
-                                       }
-                                       else
-                                       {
-                                               RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
-                                               pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
-                                       }
-
-                                       pAd->StaCfg.DLSEntry[i].Sequence = 0;
-                                       pAd->StaCfg.DLSEntry[i].Valid = TRUE;
-                                       pAd->StaCfg.DLSEntry[i].TimeOut = DLSTimeOut;
-                                       pAd->StaCfg.DLSEntry[i].CountDownTimer = DLSTimeOut;
-                                       NdisMoveMemory(pAd->StaCfg.DLSEntry[i].MacAddr, SA, MAC_ADDR_LEN);
-                                       if (HtCapabilityLen != 0)
-                                               pAd->StaCfg.DLSEntry[i].bHTCap = TRUE;
-                                       else
-                                               pAd->StaCfg.DLSEntry[i].bHTCap = FALSE;
-                                       pDLS = &pAd->StaCfg.DLSEntry[i];
-                                       pEntry = MacTableInsertDlsEntry(pAd, SA, i);
-
-                                       switch (MaxSupportedRateIn500Kbps)
-                                       {
-                                               case 108: MaxSupportedRate = RATE_54;   break;
-                                               case 96:  MaxSupportedRate = RATE_48;   break;
-                                               case 72:  MaxSupportedRate = RATE_36;   break;
-                                               case 48:  MaxSupportedRate = RATE_24;   break;
-                                               case 36:  MaxSupportedRate = RATE_18;   break;
-                                               case 24:  MaxSupportedRate = RATE_12;   break;
-                                               case 18:  MaxSupportedRate = RATE_9;    break;
-                                               case 12:  MaxSupportedRate = RATE_6;    break;
-                                               case 22:  MaxSupportedRate = RATE_11;   break;
-                                               case 11:  MaxSupportedRate = RATE_5_5;  break;
-                                               case 4:   MaxSupportedRate = RATE_2;    break;
-                                               case 2:   MaxSupportedRate = RATE_1;    break;
-                                               default:  MaxSupportedRate = RATE_11;   break;
-                                       }
-
-                                       pEntry->MaxSupportedRate = min(pAd->CommonCfg.MaxTxRate, MaxSupportedRate);
-
-                                       if (pEntry->MaxSupportedRate < RATE_FIRST_OFDM_RATE)
-                                       {
-                                               pEntry->MaxHTPhyMode.field.MODE = MODE_CCK;
-                                               pEntry->MaxHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
-                                               pEntry->MinHTPhyMode.field.MODE = MODE_CCK;
-                                               pEntry->MinHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
-                                               pEntry->HTPhyMode.field.MODE = MODE_CCK;
-                                               pEntry->HTPhyMode.field.MCS = pEntry->MaxSupportedRate;
-                                       }
-                                       else
-                                       {
-                                               pEntry->MaxHTPhyMode.field.MODE = MODE_OFDM;
-                                               pEntry->MaxHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
-                                               pEntry->MinHTPhyMode.field.MODE = MODE_OFDM;
-                                               pEntry->MinHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
-                                               pEntry->HTPhyMode.field.MODE = MODE_OFDM;
-                                               pEntry->HTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
-                                       }
-
-                                       pEntry->MaxHTPhyMode.field.BW = BW_20;
-                                       pEntry->MinHTPhyMode.field.BW = BW_20;
-
-#ifdef DOT11_N_SUPPORT
-                                       pEntry->HTCapability.MCSSet[0] = 0;
-                                       pEntry->HTCapability.MCSSet[1] = 0;
-
-                                       // If this Entry supports 802.11n, upgrade to HT rate.
-                                       if ((HtCapabilityLen != 0) && (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
-                                       {
-                                               UCHAR   j, bitmask; //k,bitmask;
-                                               CHAR    ii;
-
-                                               if ((HtCapability.HtCapInfo.GF) && (pAd->CommonCfg.DesiredHtPhy.GF))
-                                               {
-                                                       pEntry->MaxHTPhyMode.field.MODE = MODE_HTGREENFIELD;
-                                               }
-                                               else
-                                               {
-                                                       pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
-                                                       pAd->MacTab.fAnyStationNonGF = TRUE;
-                                                       pAd->CommonCfg.AddHTInfo.AddHtInfo2.NonGfPresent = 1;
-                                               }
-
-                                               if ((HtCapability.HtCapInfo.ChannelWidth) && (pAd->CommonCfg.DesiredHtPhy.ChannelWidth))
-                                               {
-                                                       pEntry->MaxHTPhyMode.field.BW= BW_40;
-                                                       pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor40)&(HtCapability.HtCapInfo.ShortGIfor40));
-                                               }
-                                               else
-                                               {
-                                                       pEntry->MaxHTPhyMode.field.BW = BW_20;
-                                                       pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor20)&(HtCapability.HtCapInfo.ShortGIfor20));
-                                                       pAd->MacTab.fAnyStation20Only = TRUE;
-                                               }
-
-                                               // find max fixed rate
-                                               for (ii=15; ii>=0; ii--)
-                                               {
-                                                       j = ii/8;
-                                                       bitmask = (1<<(ii-(j*8)));
-                                                       if ( (pAd->StaCfg.DesiredHtPhyInfo.MCSSet[j]&bitmask) && (HtCapability.MCSSet[j]&bitmask))
-                                                       {
-                                                               pEntry->MaxHTPhyMode.field.MCS = ii;
-                                                               break;
-                                                       }
-                                                       if (ii==0)
-                                                               break;
-                                               }
-
-
-                                               if (pAd->StaCfg.DesiredTransmitSetting.field.MCS != MCS_AUTO)
-                                               {
-
-                                                       printk("@@@ pAd->CommonCfg.RegTransmitSetting.field.MCS = %d\n",
-                                                               pAd->StaCfg.DesiredTransmitSetting.field.MCS);
-                                                       if (pAd->StaCfg.DesiredTransmitSetting.field.MCS == 32)
-                                                       {
-                                                               // Fix MCS as HT Duplicated Mode
-                                                               pEntry->MaxHTPhyMode.field.BW = 1;
-                                                               pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
-                                                               pEntry->MaxHTPhyMode.field.STBC = 0;
-                                                               pEntry->MaxHTPhyMode.field.ShortGI = 0;
-                                                               pEntry->MaxHTPhyMode.field.MCS = 32;
-                                                       }
-                                                       else if (pEntry->MaxHTPhyMode.field.MCS > pAd->StaCfg.HTPhyMode.field.MCS)
-                                                       {
-                                                               // STA supports fixed MCS
-                                                               pEntry->MaxHTPhyMode.field.MCS = pAd->StaCfg.HTPhyMode.field.MCS;
-                                                       }
-                                               }
-
-                                               pEntry->MaxHTPhyMode.field.STBC = (HtCapability.HtCapInfo.RxSTBC & (pAd->CommonCfg.DesiredHtPhy.TxSTBC));
-                                               pEntry->MpduDensity = HtCapability.HtCapParm.MpduDensity;
-                                               pEntry->MaxRAmpduFactor = HtCapability.HtCapParm.MaxRAmpduFactor;
-                                               pEntry->MmpsMode = (UCHAR)HtCapability.HtCapInfo.MimoPs;
-                                               pEntry->AMsduSize = (UCHAR)HtCapability.HtCapInfo.AMsduSize;
-                                               pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
-
-                                               if (HtCapability.HtCapInfo.ShortGIfor20)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI20_CAPABLE);
-                                               if (HtCapability.HtCapInfo.ShortGIfor40)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI40_CAPABLE);
-                                               if (HtCapability.HtCapInfo.TxSTBC)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_TxSTBC_CAPABLE);
-                                               if (HtCapability.HtCapInfo.RxSTBC)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RxSTBC_CAPABLE);
-                                               if (HtCapability.ExtHtCapInfo.PlusHTC)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_HTC_CAPABLE);
-                                               if (pAd->CommonCfg.bRdg && HtCapability.ExtHtCapInfo.RDGSupport)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RDG_CAPABLE);
-                                               if (HtCapability.ExtHtCapInfo.MCSFeedback == 0x03)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_MCSFEEDBACK_CAPABLE);
-
-                                               NdisMoveMemory(&pEntry->HTCapability, &HtCapability, sizeof(HT_CAPABILITY_IE));
-                                       }
-#endif // DOT11_N_SUPPORT //
-
-                                       pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
-                                       pEntry->CurrTxRate = pEntry->MaxSupportedRate;
-                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE);
-
-                                       if (pAd->StaCfg.bAutoTxRateSwitch == TRUE)
-                                       {
-                                               PUCHAR pTable;
-                                               UCHAR TableSize = 0;
-
-                                               MlmeSelectTxRateTable(pAd, pEntry, &pTable, &TableSize, &pEntry->CurrTxRateIndex);
-                                               pEntry->bAutoTxRateSwitch = TRUE;
-                                       }
-                                       else
-                                       {
-                                               pEntry->HTPhyMode.field.MODE    = pAd->StaCfg.HTPhyMode.field.MODE;
-                                               pEntry->HTPhyMode.field.MCS     = pAd->StaCfg.HTPhyMode.field.MCS;
-                                               pEntry->bAutoTxRateSwitch = FALSE;
-
-                                               RTMPUpdateLegacyTxSetting((UCHAR)pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode, pEntry);
-                                       }
-                                       pEntry->RateLen = SupportedRatesLen;
-
-                                       break;
-                               }
-                       }
-               }
-               StatusCode = MLME_SUCCESS;
-
-               // can not find in table, create a new one
-               if (i < 0)
-               {
-                       StatusCode = MLME_QOS_UNSPECIFY;
-                       DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsReqAction() DLSEntry table full(only can support %d DLS session) \n", MAX_NUM_OF_DLS_ENTRY - MAX_NUM_OF_INIT_DLS_ENTRY));
-               }
-               else
-               {
-                       DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsReqAction() use entry(%d) %02x:%02x:%02x:%02x:%02x:%02x\n",
-                               i, SA[0], SA[1], SA[2], SA[3], SA[4], SA[5]));
-               }
-       }
-
-       ActHeaderInit(pAd, &DlsRspHdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
-
-       // Build basic frame first
-       if (StatusCode == MLME_SUCCESS)
-       {
-               MakeOutgoingFrame(pOutBuffer,                           &FrameLen,
-                                               sizeof(HEADER_802_11),          &DlsRspHdr,
-                                               1,                                                      &Category,
-                                               1,                                                      &Action,
-                                               2,                                                      &StatusCode,
-                                               6,                                                      SA,
-                                               6,                                                      pAd->CurrentAddress,
-                                               2,                                                      &pAd->StaActive.CapabilityInfo,
-                                               1,                                                      &SupRateIe,
-                                               1,                                                      &pAd->MlmeAux.SupRateLen,
-                                               pAd->MlmeAux.SupRateLen,        pAd->MlmeAux.SupRate,
-                                               END_OF_ARGS);
-
-               if (pAd->MlmeAux.ExtRateLen != 0)
-               {
-                       MakeOutgoingFrame(pOutBuffer + FrameLen,        &tmp,
-                                                         1,                                            &ExtRateIe,
-                                                         1,                                            &pAd->MlmeAux.ExtRateLen,
-                                                         pAd->MlmeAux.ExtRateLen,      pAd->MlmeAux.ExtRate,
-                                                         END_OF_ARGS);
-                       FrameLen += tmp;
-               }
-
-#ifdef DOT11_N_SUPPORT
-               if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
-               {
-                       UCHAR HtLen;
-
-#ifdef RT_BIG_ENDIAN
-                       HT_CAPABILITY_IE HtCapabilityTmp;
-#endif
-
-                       // add HT Capability IE
-                       HtLen = sizeof(HT_CAPABILITY_IE);
-#ifndef RT_BIG_ENDIAN
-                       MakeOutgoingFrame(pOutBuffer + FrameLen,        &tmp,
-                                                               1,                                              &HtCapIe,
-                                                               1,                                              &HtLen,
-                                                               HtLen,                                  &pAd->CommonCfg.HtCapability,
-                                                               END_OF_ARGS);
-#else
-                       NdisMoveMemory(&HtCapabilityTmp, &pAd->CommonCfg.HtCapability, HtLen);
-                                                               *(USHORT *)(&HtCapabilityTmp.HtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.HtCapInfo));
-                                                               *(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo));
-
-                       MakeOutgoingFrame(pOutBuffer + FrameLen,        &tmp,
-                                                               1,                                              &HtCapIe,
-                                                               1,                                              &HtLen,
-                                                               HtLen,                                  &HtCapabilityTmp,
-                                                               END_OF_ARGS);
-#endif
-                       FrameLen = FrameLen + tmp;
-               }
-#endif // DOT11_N_SUPPORT //
-
-               if (pDLS && (pDLS->Status != DLS_FINISH))
-               {
-                       RTMPCancelTimer(&pDLS->Timer, &TimerCancelled);
-                       Timeout = DLS_TIMEOUT;
-                       RTMPSetTimer(&pDLS->Timer, Timeout);
-               }
-       }
-       else
-       {
-               MakeOutgoingFrame(pOutBuffer,                           &FrameLen,
-                                               sizeof(HEADER_802_11),          &DlsRspHdr,
-                                               1,                                                      &Category,
-                                               1,                                                      &Action,
-                                               2,                                                      &StatusCode,
-                                               6,                                                      SA,
-                                               6,                                                      pAd->CurrentAddress,
-                                               END_OF_ARGS);
-       }
-
-       MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
-       MlmeFreeMemory(pAd, pOutBuffer);
-}
-
-/*
-    ==========================================================================
-    Description:
-
-       IRQL = DISPATCH_LEVEL
-
-    ==========================================================================
- */
-VOID PeerDlsRspAction(
-    IN PRTMP_ADAPTER pAd,
-    IN MLME_QUEUE_ELEM *Elem)
-{
-       USHORT          CapabilityInfo;
-       UCHAR           DA[MAC_ADDR_LEN], SA[MAC_ADDR_LEN];
-       USHORT          StatusCode;
-       SHORT           i;
-       BOOLEAN         TimerCancelled;
-       UCHAR           MaxSupportedRateIn500Kbps = 0;
-    UCHAR              SupportedRatesLen;
-    UCHAR              SupportedRates[MAX_LEN_OF_SUPPORTED_RATES];
-       UCHAR           HtCapabilityLen;
-       HT_CAPABILITY_IE        HtCapability;
-
-       if (!pAd->CommonCfg.bDLSCapable)
-               return;
-
-       if (!INFRA_ON(pAd))
-               return;
-
-       if (!PeerDlsRspSanity(pAd, Elem->Msg, Elem->MsgLen, DA, SA, &CapabilityInfo, &StatusCode,
-                                                       &SupportedRatesLen, &SupportedRates[0], &HtCapabilityLen, &HtCapability))
-               return;
-
-    // supported rates array may not be sorted. sort it and find the maximum rate
-    for (i=0; i<SupportedRatesLen; i++)
-    {
-        if (MaxSupportedRateIn500Kbps < (SupportedRates[i] & 0x7f))
-            MaxSupportedRateIn500Kbps = SupportedRates[i] & 0x7f;
-    }
-
-       DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsRspAction() from %02x:%02x:%02x:%02x:%02x:%02x with StatusCode=%d, CapabilityInfo=0x%x\n",
-               SA[0], SA[1], SA[2], SA[3], SA[4], SA[5], StatusCode, CapabilityInfo));
-
-       for (i = 0; i < MAX_NUM_OF_INIT_DLS_ENTRY; i++)
-       {
-               if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(SA, pAd->StaCfg.DLSEntry[i].MacAddr))
-               {
-                       if (StatusCode == MLME_SUCCESS)
-                       {
-                               MAC_TABLE_ENTRY *pEntry;
-                               UCHAR MaxSupportedRate = RATE_11;
-
-                               pEntry = MacTableInsertDlsEntry(pAd, SA, i);
-
-                               switch (MaxSupportedRateIn500Kbps)
-                               {
-                                       case 108: MaxSupportedRate = RATE_54;   break;
-                                       case 96:  MaxSupportedRate = RATE_48;   break;
-                                       case 72:  MaxSupportedRate = RATE_36;   break;
-                                       case 48:  MaxSupportedRate = RATE_24;   break;
-                                       case 36:  MaxSupportedRate = RATE_18;   break;
-                                       case 24:  MaxSupportedRate = RATE_12;   break;
-                                       case 18:  MaxSupportedRate = RATE_9;    break;
-                                       case 12:  MaxSupportedRate = RATE_6;    break;
-                                       case 22:  MaxSupportedRate = RATE_11;   break;
-                                       case 11:  MaxSupportedRate = RATE_5_5;  break;
-                                       case 4:   MaxSupportedRate = RATE_2;    break;
-                                       case 2:   MaxSupportedRate = RATE_1;    break;
-                                       default:  MaxSupportedRate = RATE_11;   break;
-                               }
-
-                               pEntry->MaxSupportedRate = min(pAd->CommonCfg.MaxTxRate, MaxSupportedRate);
-
-                               if (pEntry->MaxSupportedRate < RATE_FIRST_OFDM_RATE)
-                               {
-                                       pEntry->MaxHTPhyMode.field.MODE = MODE_CCK;
-                                       pEntry->MaxHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
-                                       pEntry->MinHTPhyMode.field.MODE = MODE_CCK;
-                                       pEntry->MinHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
-                                       pEntry->HTPhyMode.field.MODE = MODE_CCK;
-                                       pEntry->HTPhyMode.field.MCS = pEntry->MaxSupportedRate;
-                               }
-                               else
-                               {
-                                       pEntry->MaxHTPhyMode.field.MODE = MODE_OFDM;
-                                       pEntry->MaxHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
-                                       pEntry->MinHTPhyMode.field.MODE = MODE_OFDM;
-                                       pEntry->MinHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
-                                       pEntry->HTPhyMode.field.MODE = MODE_OFDM;
-                                       pEntry->HTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
-                               }
-
-                               pEntry->MaxHTPhyMode.field.BW = BW_20;
-                               pEntry->MinHTPhyMode.field.BW = BW_20;
-
-#ifdef DOT11_N_SUPPORT
-                               pEntry->HTCapability.MCSSet[0] = 0;
-                               pEntry->HTCapability.MCSSet[1] = 0;
-
-                               // If this Entry supports 802.11n, upgrade to HT rate.
-                               if ((HtCapabilityLen != 0) && (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
-                               {
-                                       UCHAR   j, bitmask; //k,bitmask;
-                                       CHAR    ii;
-
-                                       if ((HtCapability.HtCapInfo.GF) && (pAd->CommonCfg.DesiredHtPhy.GF))
-                                       {
-                                               pEntry->MaxHTPhyMode.field.MODE = MODE_HTGREENFIELD;
-                                       }
-                                       else
-                                       {
-                                               pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
-                                               pAd->MacTab.fAnyStationNonGF = TRUE;
-                                               pAd->CommonCfg.AddHTInfo.AddHtInfo2.NonGfPresent = 1;
-                                       }
-
-                                       if ((HtCapability.HtCapInfo.ChannelWidth) && (pAd->CommonCfg.DesiredHtPhy.ChannelWidth))
-                                       {
-                                               pEntry->MaxHTPhyMode.field.BW= BW_40;
-                                               pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor40)&(HtCapability.HtCapInfo.ShortGIfor40));
-                                       }
-                                       else
-                                       {
-                                               pEntry->MaxHTPhyMode.field.BW = BW_20;
-                                               pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor20)&(HtCapability.HtCapInfo.ShortGIfor20));
-                                               pAd->MacTab.fAnyStation20Only = TRUE;
-                                       }
-
-                                       // find max fixed rate
-                                       for (ii=15; ii>=0; ii--)
-                                       {
-                                               j = ii/8;
-                                               bitmask = (1<<(ii-(j*8)));
-                                               if ( (pAd->StaCfg.DesiredHtPhyInfo.MCSSet[j]&bitmask) && (HtCapability.MCSSet[j]&bitmask))
-                                               {
-                                                       pEntry->MaxHTPhyMode.field.MCS = ii;
-                                                       break;
-                                               }
-                                               if (ii==0)
-                                                       break;
-                                       }
-
-                                       if (pAd->StaCfg.DesiredTransmitSetting.field.MCS != MCS_AUTO)
-                                       {
-                                               if (pAd->StaCfg.DesiredTransmitSetting.field.MCS == 32)
-                                               {
-                                                       // Fix MCS as HT Duplicated Mode
-                                                       pEntry->MaxHTPhyMode.field.BW = 1;
-                                                       pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
-                                                       pEntry->MaxHTPhyMode.field.STBC = 0;
-                                                       pEntry->MaxHTPhyMode.field.ShortGI = 0;
-                                                       pEntry->MaxHTPhyMode.field.MCS = 32;
-                                               }
-                                               else if (pEntry->MaxHTPhyMode.field.MCS > pAd->StaCfg.HTPhyMode.field.MCS)
-                                               {
-                                                       // STA supports fixed MCS
-                                                       pEntry->MaxHTPhyMode.field.MCS = pAd->StaCfg.HTPhyMode.field.MCS;
-                                               }
-                                       }
-
-                                       pEntry->MaxHTPhyMode.field.STBC = (HtCapability.HtCapInfo.RxSTBC & (pAd->CommonCfg.DesiredHtPhy.TxSTBC));
-                                       pEntry->MpduDensity = HtCapability.HtCapParm.MpduDensity;
-                                       pEntry->MaxRAmpduFactor = HtCapability.HtCapParm.MaxRAmpduFactor;
-                                       pEntry->MmpsMode = (UCHAR)HtCapability.HtCapInfo.MimoPs;
-                                       pEntry->AMsduSize = (UCHAR)HtCapability.HtCapInfo.AMsduSize;
-                                       pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
-
-                                       if (HtCapability.HtCapInfo.ShortGIfor20)
-                                               CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI20_CAPABLE);
-                                       if (HtCapability.HtCapInfo.ShortGIfor40)
-                                               CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI40_CAPABLE);
-                                       if (HtCapability.HtCapInfo.TxSTBC)
-                                               CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_TxSTBC_CAPABLE);
-                                       if (HtCapability.HtCapInfo.RxSTBC)
-                                               CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RxSTBC_CAPABLE);
-                                       if (HtCapability.ExtHtCapInfo.PlusHTC)
-                                               CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_HTC_CAPABLE);
-                                       if (pAd->CommonCfg.bRdg && HtCapability.ExtHtCapInfo.RDGSupport)
-                                               CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RDG_CAPABLE);
-                                       if (HtCapability.ExtHtCapInfo.MCSFeedback == 0x03)
-                                               CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_MCSFEEDBACK_CAPABLE);
-
-                                       NdisMoveMemory(&pEntry->HTCapability, &HtCapability, sizeof(HT_CAPABILITY_IE));
-                               }
-#endif // DOT11_N_SUPPORT //
-                               pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
-                               pEntry->CurrTxRate = pEntry->MaxSupportedRate;
-                               CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE);
-
-                               if (pAd->StaCfg.bAutoTxRateSwitch == TRUE)
-                               {
-                                       PUCHAR pTable;
-                                       UCHAR TableSize = 0;
-
-                                       MlmeSelectTxRateTable(pAd, pEntry, &pTable, &TableSize, &pEntry->CurrTxRateIndex);
-                                       pEntry->bAutoTxRateSwitch = TRUE;
-                               }
-                               else
-                               {
-                                       pEntry->HTPhyMode.field.MODE    = pAd->StaCfg.HTPhyMode.field.MODE;
-                                       pEntry->HTPhyMode.field.MCS     = pAd->StaCfg.HTPhyMode.field.MCS;
-                                       pEntry->bAutoTxRateSwitch = FALSE;
-
-                                       RTMPUpdateLegacyTxSetting((UCHAR)pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode, pEntry);
-                               }
-                               pEntry->RateLen = SupportedRatesLen;
-
-                               if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-                               {
-                                       // If support WPA or WPA2, start STAKey hand shake,
-                                       // If failed hand shake, just tear down peer DLS
-                                       if (RTMPSendSTAKeyRequest(pAd, pAd->StaCfg.DLSEntry[i].MacAddr) != NDIS_STATUS_SUCCESS)
-                                       {
-                                               MLME_DLS_REQ_STRUCT     MlmeDlsReq;
-                                               USHORT                          reason = REASON_QOS_CIPHER_NOT_SUPPORT;
-
-                                               DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
-                                               MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-                                               pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
-                                               pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                                               DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsRspAction failed when call RTMPSendSTAKeyRequest \n"));
-                                       }
-                                       else
-                                       {
-                                               pAd->StaCfg.DLSEntry[i].Status = DLS_WAIT_KEY;
-                                               DBGPRINT(RT_DEBUG_TRACE,("DLS - waiting for STAKey handshake procedure\n"));
-                                       }
-                               }
-                               else
-                               {
-                                       RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
-                                       pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
-                                       DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsRspAction() from %02x:%02x:%02x:%02x:%02x:%02x Succeed with WEP or no security\n", SA[0], SA[1], SA[2], SA[3], SA[4], SA[5]));
-                               }
-
-                               //initialize seq no for DLS frames.
-                               pAd->StaCfg.DLSEntry[i].Sequence = 0;
-                               if (HtCapabilityLen != 0)
-                                       pAd->StaCfg.DLSEntry[i].bHTCap = TRUE;
-                               else
-                                       pAd->StaCfg.DLSEntry[i].bHTCap = FALSE;
-                       }
-                       else
-                       {
-                               // DLS setup procedure failed.
-                               pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
-                               pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                               RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
-                               DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsRspAction failed with StatusCode=%d \n", StatusCode));
-                       }
-               }
-       }
-
-       if (i >= MAX_NUM_OF_INIT_DLS_ENTRY)
-       {
-               DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsRspAction() update timeout value \n"));
-               for (i=(MAX_NUM_OF_DLS_ENTRY-1); i>=MAX_NUM_OF_INIT_DLS_ENTRY; i--)
-               {
-                       if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(SA, pAd->StaCfg.DLSEntry[i].MacAddr))
-                       {
-                               if (StatusCode == MLME_SUCCESS)
-                               {
-                                       MAC_TABLE_ENTRY *pEntry;
-                                       UCHAR MaxSupportedRate = RATE_11;
-
-                                       pEntry = MacTableInsertDlsEntry(pAd, SA, i);
-
-                                       switch (MaxSupportedRateIn500Kbps)
-                                       {
-                                               case 108: MaxSupportedRate = RATE_54;   break;
-                                               case 96:  MaxSupportedRate = RATE_48;   break;
-                                               case 72:  MaxSupportedRate = RATE_36;   break;
-                                               case 48:  MaxSupportedRate = RATE_24;   break;
-                                               case 36:  MaxSupportedRate = RATE_18;   break;
-                                               case 24:  MaxSupportedRate = RATE_12;   break;
-                                               case 18:  MaxSupportedRate = RATE_9;    break;
-                                               case 12:  MaxSupportedRate = RATE_6;    break;
-                                               case 22:  MaxSupportedRate = RATE_11;   break;
-                                               case 11:  MaxSupportedRate = RATE_5_5;  break;
-                                               case 4:   MaxSupportedRate = RATE_2;    break;
-                                               case 2:   MaxSupportedRate = RATE_1;    break;
-                                               default:  MaxSupportedRate = RATE_11;   break;
-                                       }
-
-                                       pEntry->MaxSupportedRate = min(pAd->CommonCfg.MaxTxRate, MaxSupportedRate);
-
-                                       if (pEntry->MaxSupportedRate < RATE_FIRST_OFDM_RATE)
-                                       {
-                                               pEntry->MaxHTPhyMode.field.MODE = MODE_CCK;
-                                               pEntry->MaxHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
-                                               pEntry->MinHTPhyMode.field.MODE = MODE_CCK;
-                                               pEntry->MinHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
-                                               pEntry->HTPhyMode.field.MODE = MODE_CCK;
-                                               pEntry->HTPhyMode.field.MCS = pEntry->MaxSupportedRate;
-                                       }
-                                       else
-                                       {
-                                               pEntry->MaxHTPhyMode.field.MODE = MODE_OFDM;
-                                               pEntry->MaxHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
-                                               pEntry->MinHTPhyMode.field.MODE = MODE_OFDM;
-                                               pEntry->MinHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
-                                               pEntry->HTPhyMode.field.MODE = MODE_OFDM;
-                                               pEntry->HTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
-                                       }
-
-                                       pEntry->MaxHTPhyMode.field.BW = BW_20;
-                                       pEntry->MinHTPhyMode.field.BW = BW_20;
-
-#ifdef DOT11_N_SUPPORT
-                                       pEntry->HTCapability.MCSSet[0] = 0;
-                                       pEntry->HTCapability.MCSSet[1] = 0;
-
-                                       // If this Entry supports 802.11n, upgrade to HT rate.
-                                       if ((HtCapabilityLen != 0) && (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
-                                       {
-                                               UCHAR   j, bitmask; //k,bitmask;
-                                               CHAR    ii;
-
-                                               if ((HtCapability.HtCapInfo.GF) && (pAd->CommonCfg.DesiredHtPhy.GF))
-                                               {
-                                                       pEntry->MaxHTPhyMode.field.MODE = MODE_HTGREENFIELD;
-                                               }
-                                               else
-                                               {
-                                                       pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
-                                                       pAd->MacTab.fAnyStationNonGF = TRUE;
-                                                       pAd->CommonCfg.AddHTInfo.AddHtInfo2.NonGfPresent = 1;
-                                               }
-
-                                               if ((HtCapability.HtCapInfo.ChannelWidth) && (pAd->CommonCfg.DesiredHtPhy.ChannelWidth))
-                                               {
-                                                       pEntry->MaxHTPhyMode.field.BW= BW_40;
-                                                       pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor40)&(HtCapability.HtCapInfo.ShortGIfor40));
-                                               }
-                                               else
-                                               {
-                                                       pEntry->MaxHTPhyMode.field.BW = BW_20;
-                                                       pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor20)&(HtCapability.HtCapInfo.ShortGIfor20));
-                                                       pAd->MacTab.fAnyStation20Only = TRUE;
-                                               }
-
-                                               // find max fixed rate
-                                               for (ii=15; ii>=0; ii--)
-                                               {
-                                                       j = ii/8;
-                                                       bitmask = (1<<(ii-(j*8)));
-                                                       if ( (pAd->StaCfg.DesiredHtPhyInfo.MCSSet[j]&bitmask) && (HtCapability.MCSSet[j]&bitmask))
-                                                       {
-                                                               pEntry->MaxHTPhyMode.field.MCS = ii;
-                                                               break;
-                                                       }
-                                                       if (ii==0)
-                                                               break;
-                                               }
-
-                                               if (pAd->StaCfg.DesiredTransmitSetting.field.MCS != MCS_AUTO)
-                                               {
-                                                       printk("@@@ pAd->CommonCfg.RegTransmitSetting.field.MCS = %d\n",
-                                                               pAd->StaCfg.DesiredTransmitSetting.field.MCS);
-                                                       if (pAd->StaCfg.DesiredTransmitSetting.field.MCS == 32)
-                                                       {
-                                                               // Fix MCS as HT Duplicated Mode
-                                                               pEntry->MaxHTPhyMode.field.BW = 1;
-                                                               pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
-                                                               pEntry->MaxHTPhyMode.field.STBC = 0;
-                                                               pEntry->MaxHTPhyMode.field.ShortGI = 0;
-                                                               pEntry->MaxHTPhyMode.field.MCS = 32;
-                                                       }
-                                                       else if (pEntry->MaxHTPhyMode.field.MCS > pAd->StaCfg.HTPhyMode.field.MCS)
-                                                       {
-                                                               // STA supports fixed MCS
-                                                               pEntry->MaxHTPhyMode.field.MCS = pAd->StaCfg.HTPhyMode.field.MCS;
-                                                       }
-                                               }
-
-                                               pEntry->MaxHTPhyMode.field.STBC = (HtCapability.HtCapInfo.RxSTBC & (pAd->CommonCfg.DesiredHtPhy.TxSTBC));
-                                               pEntry->MpduDensity = HtCapability.HtCapParm.MpduDensity;
-                                               pEntry->MaxRAmpduFactor = HtCapability.HtCapParm.MaxRAmpduFactor;
-                                               pEntry->MmpsMode = (UCHAR)HtCapability.HtCapInfo.MimoPs;
-                                               pEntry->AMsduSize = (UCHAR)HtCapability.HtCapInfo.AMsduSize;
-                                               pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
-
-                                               if (HtCapability.HtCapInfo.ShortGIfor20)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI20_CAPABLE);
-                                               if (HtCapability.HtCapInfo.ShortGIfor40)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI40_CAPABLE);
-                                               if (HtCapability.HtCapInfo.TxSTBC)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_TxSTBC_CAPABLE);
-                                               if (HtCapability.HtCapInfo.RxSTBC)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RxSTBC_CAPABLE);
-                                               if (HtCapability.ExtHtCapInfo.PlusHTC)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_HTC_CAPABLE);
-                                               if (pAd->CommonCfg.bRdg && HtCapability.ExtHtCapInfo.RDGSupport)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RDG_CAPABLE);
-                                               if (HtCapability.ExtHtCapInfo.MCSFeedback == 0x03)
-                                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_MCSFEEDBACK_CAPABLE);
-
-                                               NdisMoveMemory(&pEntry->HTCapability, &HtCapability, sizeof(HT_CAPABILITY_IE));
-                                       }
-#endif // DOT11_N_SUPPORT //
-
-                                       pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
-                                       pEntry->CurrTxRate = pEntry->MaxSupportedRate;
-                                       CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE);
-
-                                       if (pAd->StaCfg.bAutoTxRateSwitch == TRUE)
-                                       {
-                                               PUCHAR pTable;
-                                               UCHAR TableSize = 0;
-
-                                               MlmeSelectTxRateTable(pAd, pEntry, &pTable, &TableSize, &pEntry->CurrTxRateIndex);
-                                               pEntry->bAutoTxRateSwitch = TRUE;
-                                       }
-                                       else
-                                       {
-                                               pEntry->HTPhyMode.field.MODE    = pAd->StaCfg.HTPhyMode.field.MODE;
-                                               pEntry->HTPhyMode.field.MCS     = pAd->StaCfg.HTPhyMode.field.MCS;
-                                               pEntry->bAutoTxRateSwitch = FALSE;
-
-                                               RTMPUpdateLegacyTxSetting((UCHAR)pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode, pEntry);
-                                       }
-                                       pEntry->RateLen = SupportedRatesLen;
-
-                                       if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
-                                       {
-                                               // If support WPA or WPA2, start STAKey hand shake,
-                                               // If failed hand shake, just tear down peer DLS
-                                               if (RTMPSendSTAKeyRequest(pAd, pAd->StaCfg.DLSEntry[i].MacAddr) != NDIS_STATUS_SUCCESS)
-                                               {
-                                                       MLME_DLS_REQ_STRUCT     MlmeDlsReq;
-                                                       USHORT                          reason = REASON_QOS_CIPHER_NOT_SUPPORT;
-
-                                                       DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
-                                                       MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-                                                       pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
-                                                       pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                                                       DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsRspAction failed when call RTMPSendSTAKeyRequest \n"));
-                                               }
-                                               else
-                                               {
-                                                       pAd->StaCfg.DLSEntry[i].Status = DLS_WAIT_KEY;
-                                                       DBGPRINT(RT_DEBUG_TRACE,("DLS - waiting for STAKey handshake procedure\n"));
-                                               }
-                                       }
-                                       else
-                                       {
-                                               RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
-                                               pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
-                                               DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsRspAction() from %02x:%02x:%02x:%02x:%02x:%02x Succeed with WEP or no security\n", SA[0], SA[1], SA[2], SA[3], SA[4], SA[5]));
-                                       }
-                                       pAd->StaCfg.DLSEntry[i].Sequence = 0;
-                                       if (HtCapabilityLen != 0)
-                                               pAd->StaCfg.DLSEntry[i].bHTCap = TRUE;
-                                       else
-                                               pAd->StaCfg.DLSEntry[i].bHTCap = FALSE;
-                               }
-                               else
-                               {
-                                       // DLS setup procedure failed.
-                                       pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
-                                       pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                                       RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
-                                       DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsRspAction failed with StatusCode=%d \n", StatusCode));
-                               }
-                       }
-               }
-       }
-}
-
-/*
-    ==========================================================================
-    Description:
-
-       IRQL = DISPATCH_LEVEL
-
-    ==========================================================================
- */
-VOID MlmeDlsTearDownAction(
-    IN PRTMP_ADAPTER pAd,
-    IN MLME_QUEUE_ELEM *Elem)
-{
-       PUCHAR                  pOutBuffer = NULL;
-       NDIS_STATUS             NStatus;
-       ULONG                   FrameLen = 0;
-       UCHAR                   Category = CATEGORY_DLS;
-       UCHAR                   Action = ACTION_DLS_TEARDOWN;
-       USHORT                  ReasonCode = REASON_QOS_UNSPECIFY;
-       HEADER_802_11   DlsTearDownHdr;
-       PRT_802_11_DLS  pDLS;
-       BOOLEAN                 TimerCancelled;
-       UCHAR                   i;
-
-       if(!MlmeDlsReqSanity(pAd, Elem->Msg, Elem->MsgLen, &pDLS, &ReasonCode))
-               return;
-
-       DBGPRINT(RT_DEBUG_TRACE,("DLS - MlmeDlsTearDownAction() with ReasonCode=%d \n", ReasonCode));
-
-       NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
-       if (NStatus != NDIS_STATUS_SUCCESS)
-       {
-               DBGPRINT(RT_DEBUG_ERROR,("DLS - MlmeDlsTearDownAction() allocate memory failed \n"));
-               return;
-       }
-
-       ActHeaderInit(pAd, &DlsTearDownHdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
-
-       // Build basic frame first
-       MakeOutgoingFrame(pOutBuffer,                           &FrameLen,
-                                       sizeof(HEADER_802_11),          &DlsTearDownHdr,
-                                       1,                                                      &Category,
-                                       1,                                                      &Action,
-                                       6,                                                      &pDLS->MacAddr,
-                                       6,                                                      pAd->CurrentAddress,
-                                       2,                                                      &ReasonCode,
-                                       END_OF_ARGS);
-
-       MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
-       MlmeFreeMemory(pAd, pOutBuffer);
-       RTMPCancelTimer(&pDLS->Timer, &TimerCancelled);
-
-       // Remove key in local dls table entry
-       for (i = 0; i < MAX_NUM_OF_INIT_DLS_ENTRY; i++)
-       {
-               if (MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
-               {
-                       MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
-               }
-       }
-
-       // clear peer dls table entry
-       for (i = MAX_NUM_OF_INIT_DLS_ENTRY; i < MAX_NUM_OF_DLS_ENTRY; i++)
-       {
-               if (MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
-               {
-                       pAd->StaCfg.DLSEntry[i].Status  = DLS_NONE;
-                       pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                       RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
-                       MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
-               }
-       }
-}
-
-/*
-    ==========================================================================
-    Description:
-
-       IRQL = DISPATCH_LEVEL
-
-    ==========================================================================
- */
-VOID PeerDlsTearDownAction(
-    IN PRTMP_ADAPTER pAd,
-    IN MLME_QUEUE_ELEM *Elem)
-{
-       UCHAR                   DA[MAC_ADDR_LEN], SA[MAC_ADDR_LEN];
-       USHORT                  ReasonCode;
-       UINT                    i;
-       BOOLEAN                 TimerCancelled;
-
-       if (!pAd->CommonCfg.bDLSCapable)
-               return;
-
-       if (!INFRA_ON(pAd))
-               return;
-
-       if (!PeerDlsTearDownSanity(pAd, Elem->Msg, Elem->MsgLen, DA, SA, &ReasonCode))
-               return;
-
-       DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsTearDownAction() from %02x:%02x:%02x:%02x:%02x:%02x with ReasonCode=%d\n", SA[0], SA[1], SA[2], SA[3], SA[4], SA[5], ReasonCode));
-
-       // clear local dls table entry
-       for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
-       {
-               if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(SA, pAd->StaCfg.DLSEntry[i].MacAddr))
-               {
-                       pAd->StaCfg.DLSEntry[i].Status  = DLS_NONE;
-                       pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                       RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
-                       //AsicDelWcidTab(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID);
-                       //AsicRemovePairwiseKeyEntry(pAd, BSS0, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID);
-                       MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
-               }
-       }
-
-       // clear peer dls table entry
-       for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
-       {
-               if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(SA, pAd->StaCfg.DLSEntry[i].MacAddr))
-               {
-                       pAd->StaCfg.DLSEntry[i].Status  = DLS_NONE;
-                       pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                       RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
-                       //AsicDelWcidTab(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID);
-                       //AsicRemovePairwiseKeyEntry(pAd, BSS0, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID);
-                       MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
-               }
-       }
-}
-
-/*
-    ==========================================================================
-    Description:
-
-       IRQL = DISPATCH_LEVEL
-
-    ==========================================================================
- */
-VOID RTMPCheckDLSTimeOut(
-       IN PRTMP_ADAPTER        pAd)
-{
-       ULONG                           i;
-       MLME_DLS_REQ_STRUCT     MlmeDlsReq;
-       USHORT                          reason = REASON_QOS_UNSPECIFY;
-
-       if (! pAd->CommonCfg.bDLSCapable)
-               return;
-
-       if (! INFRA_ON(pAd))
-               return;
-
-       // If timeout value is equaled to zero, it means always not be timeout.
-
-       // update local dls table entry
-       for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
-       {
-               if ((pAd->StaCfg.DLSEntry[i].Valid) && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
-                       && (pAd->StaCfg.DLSEntry[i].TimeOut != 0))
-               {
-                       pAd->StaCfg.DLSEntry[i].CountDownTimer --;
-
-                       if (pAd->StaCfg.DLSEntry[i].CountDownTimer == 0)
-                       {
-                               reason = REASON_QOS_REQUEST_TIMEOUT;
-                               pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                               pAd->StaCfg.DLSEntry[i].Status  = DLS_NONE;
-                               DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
-                               MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-                       }
-               }
-       }
-
-       // update peer dls table entry
-       for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
-       {
-               if ((pAd->StaCfg.DLSEntry[i].Valid) && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
-                       && (pAd->StaCfg.DLSEntry[i].TimeOut != 0))
-               {
-                       pAd->StaCfg.DLSEntry[i].CountDownTimer --;
-
-                       if (pAd->StaCfg.DLSEntry[i].CountDownTimer == 0)
-                       {
-                               reason = REASON_QOS_REQUEST_TIMEOUT;
-                               pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                               pAd->StaCfg.DLSEntry[i].Status  = DLS_NONE;
-                               DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
-                               MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-                       }
-               }
-       }
-}
-
-/*
-    ==========================================================================
-    Description:
-
-       IRQL = DISPATCH_LEVEL
-
-    ==========================================================================
- */
-BOOLEAN RTMPRcvFrameDLSCheck(
-       IN PRTMP_ADAPTER        pAd,
-       IN PHEADER_802_11       pHeader,
-       IN ULONG                        Len,
-       IN PRT28XX_RXD_STRUC    pRxD)
-{
-       ULONG                   i;
-       BOOLEAN                 bFindEntry = FALSE;
-       BOOLEAN                 bSTAKeyFrame = FALSE;
-       PEAPOL_PACKET   pEap;
-       PUCHAR                  pProto, pAddr = NULL;
-       PUCHAR                  pSTAKey = NULL;
-       UCHAR                   ZeroReplay[LEN_KEY_DESC_REPLAY];
-       UCHAR                   Mic[16], OldMic[16];
-       UCHAR                   digest[80];
-       UCHAR                   DlsPTK[80];
-       UCHAR                   temp[64];
-       BOOLEAN                 TimerCancelled;
-       CIPHER_KEY              PairwiseKey;
-
-
-       if (! pAd->CommonCfg.bDLSCapable)
-               return bSTAKeyFrame;
-
-       if (! INFRA_ON(pAd))
-               return bSTAKeyFrame;
-
-       if (! (pHeader->FC.SubType & 0x08))
-               return bSTAKeyFrame;
-
-       if (Len < LENGTH_802_11 + 6 + 2 + 2)
-               return bSTAKeyFrame;
-
-       pProto  = (PUCHAR)pHeader + LENGTH_802_11 + 2 + 6;      // QOS Control field , 0xAA 0xAA 0xAA 0x00 0x00 0x00
-       pAddr   = pHeader->Addr2;
-
-       // L2PAD bit on will pad 2 bytes at LLC
-       if (pRxD->L2PAD)
-       {
-               pProto += 2;
-       }
-
-       if (RTMPEqualMemory(EAPOL, pProto, 2) && (pAd->StaCfg.AuthMode >=  Ndis802_11AuthModeWPA))
-       {
-               pEap = (PEAPOL_PACKET) (pProto + 2);
-
-               DBGPRINT(RT_DEBUG_TRACE,("DLS - Sniff Len=%ld, DataLen=%d, KeyMic=%d, Install=%d, KeyAck=%d, Secure=%d, EKD_DL=%d, Error=%d, Request=%d\n", Len,
-                                                                                    (LENGTH_802_11 + 6 + 2 + 2 + sizeof(EAPOL_PACKET) - MAX_LEN_OF_RSNIE + 16),
-                                                                                    pEap->KeyDesc.KeyInfo.KeyMic,
-                                                                                    pEap->KeyDesc.KeyInfo.Install,
-                                                                                    pEap->KeyDesc.KeyInfo.KeyAck,
-                                                                                    pEap->KeyDesc.KeyInfo.Secure,
-                                                                                    pEap->KeyDesc.KeyInfo.EKD_DL,
-                                                                                    pEap->KeyDesc.KeyInfo.Error,
-                                                                                    pEap->KeyDesc.KeyInfo.Request));
-
-               if ((Len >= (LENGTH_802_11 + 6 + 2 + 2 + sizeof(EAPOL_PACKET) - MAX_LEN_OF_RSNIE + 16)) && pEap->KeyDesc.KeyInfo.KeyMic
-                       && pEap->KeyDesc.KeyInfo.Install && pEap->KeyDesc.KeyInfo.KeyAck && pEap->KeyDesc.KeyInfo.Secure
-                       && pEap->KeyDesc.KeyInfo.EKD_DL && !pEap->KeyDesc.KeyInfo.Error && !pEap->KeyDesc.KeyInfo.Request)
-               {
-                       // First validate replay counter, only accept message with larger replay counter
-                       // Let equal pass, some AP start with all zero replay counter
-                       NdisZeroMemory(ZeroReplay, LEN_KEY_DESC_REPLAY);
-                       if ((RTMPCompareMemory(pEap->KeyDesc.ReplayCounter, pAd->StaCfg.ReplayCounter, LEN_KEY_DESC_REPLAY) != 1) &&
-                               (RTMPCompareMemory(pEap->KeyDesc.ReplayCounter, ZeroReplay, LEN_KEY_DESC_REPLAY) != 0))
-                               return bSTAKeyFrame;
-
-                       //RTMPMoveMemory(pAd->StaCfg.ReplayCounter, pEap->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);
-                       RTMPMoveMemory(pAd->StaCfg.DlsReplayCounter, pEap->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);
-                       DBGPRINT(RT_DEBUG_TRACE,("DLS - Sniff replay counter (%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x) Len=%ld, KeyDataLen=%d\n",
-                               pAd->StaCfg.ReplayCounter[0], pAd->StaCfg.ReplayCounter[1], pAd->StaCfg.ReplayCounter[2],
-                               pAd->StaCfg.ReplayCounter[3], pAd->StaCfg.ReplayCounter[4],     pAd->StaCfg.ReplayCounter[5],
-                               pAd->StaCfg.ReplayCounter[6], pAd->StaCfg.ReplayCounter[7], Len, pEap->KeyDesc.KeyData[1]));
-
-                       // put these code segment to get the replay counter
-                       if (pAd->StaCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED)
-                               return bSTAKeyFrame;
-
-                       // Check MIC value
-                       // Save the MIC and replace with zero
-                       // use proprietary PTK
-                       NdisZeroMemory(temp, 64);
-                       NdisMoveMemory(temp, "IEEE802.11 WIRELESS ACCESS POINT", 32);
-                       WpaCountPTK(pAd, temp, temp, pAd->CommonCfg.Bssid, temp, pAd->CurrentAddress, DlsPTK, LEN_PTK);
-
-                       NdisMoveMemory(OldMic, pEap->KeyDesc.KeyMic, LEN_KEY_DESC_MIC);
-                       NdisZeroMemory(pEap->KeyDesc.KeyMic, LEN_KEY_DESC_MIC);
-                       if (pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled)
-                       {
-                               // AES
-                               HMAC_SHA1((PUCHAR) pEap, pEap->Body_Len[1] + 4, DlsPTK, LEN_EAP_MICK, digest);
-                               NdisMoveMemory(Mic,     digest, LEN_KEY_DESC_MIC);
-                       }
-                       else
-                       {
-                               hmac_md5(DlsPTK, LEN_EAP_MICK, (PUCHAR) pEap, pEap->Body_Len[1] + 4, Mic);
-                       }
-
-                       if (!NdisEqualMemory(OldMic, Mic, LEN_KEY_DESC_MIC))
-                       {
-                               DBGPRINT(RT_DEBUG_ERROR, ("MIC Different in Msg1 of STAKey handshake! \n"));
-                               return bSTAKeyFrame;
-                       }
-                       else
-                               DBGPRINT(RT_DEBUG_TRACE, ("MIC VALID in Msg1 of STAKey handshake! \n"));
-#if 1
-                       if ((pEap->KeyDesc.KeyData[0] == 0xDD) && (pEap->KeyDesc.KeyData[2] == 0x00) && (pEap->KeyDesc.KeyData[3] == 0x0C)
-                               && (pEap->KeyDesc.KeyData[4] == 0x43) && (pEap->KeyDesc.KeyData[5] == 0x02))
-                       {
-                               pAddr                   = pEap->KeyDesc.KeyData + 8;            // Tpe(1), Len(1), OUI(3), DataType(1), Reserved(2)
-                               pSTAKey                 = pEap->KeyDesc.KeyData + 14;   // Tpe(1), Len(1), OUI(3), DataType(1), Reserved(2), STAKey_Mac_Addr(6)
-
-                               DBGPRINT(RT_DEBUG_TRACE,("DLS - Receive STAKey Message-1 from %02x:%02x:%02x:%02x:%02x:%02x Len=%ld, KeyDataLen=%d\n",
-                                       pAddr[0], pAddr[1], pAddr[2], pAddr[3], pAddr[4], pAddr[5], Len, pEap->KeyDesc.KeyData[1]));
-
-                               bSTAKeyFrame = TRUE;
-                       }
-#else
-                       if ((pEap->KeyDesc.KeyData[0] == 0xDD) && (pEap->KeyDesc.KeyData[2] == 0x00) && (pEap->KeyDesc.KeyData[3] == 0x0F)
-                               && (pEap->KeyDesc.KeyData[4] == 0xAC) && (pEap->KeyDesc.KeyData[5] == 0x02))
-                       {
-                               pAddr                   = pEap->KeyDesc.KeyData + 8;            // Tpe(1), Len(1), OUI(3), DataType(1), Reserved(2)
-                               pSTAKey                 = pEap->KeyDesc.KeyData + 14;   // Tpe(1), Len(1), OUI(3), DataType(1), Reserved(2), STAKey_Mac_Addr(6)
-
-                               DBGPRINT(RT_DEBUG_TRACE,("DLS - Receive STAKey Message-1 from %02x:%02x:%02x:%02x:%02x:%02x Len=%d, KeyDataLen=%d\n",
-                                       pAddr[0], pAddr[1], pAddr[2], pAddr[3], pAddr[4], pAddr[5], Len, pEap->KeyDesc.KeyData[1]));
-
-                               bSTAKeyFrame = TRUE;
-                       }
-#endif
-
-               }
-               else if (Len >= (LENGTH_802_11 + 6 + 2 + 2 + sizeof(EAPOL_PACKET) - MAX_LEN_OF_RSNIE))
-               {
-                       RTMPMoveMemory(pAd->StaCfg.DlsReplayCounter, pEap->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);
-                       DBGPRINT(RT_DEBUG_TRACE,("DLS - Sniff replay counter 2(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x) Len=%ld, KeyDataLen=%d\n",
-                               pAd->StaCfg.ReplayCounter[0], pAd->StaCfg.ReplayCounter[1], pAd->StaCfg.ReplayCounter[2],
-                               pAd->StaCfg.ReplayCounter[3], pAd->StaCfg.ReplayCounter[4],     pAd->StaCfg.ReplayCounter[5],
-                               pAd->StaCfg.ReplayCounter[6], pAd->StaCfg.ReplayCounter[7], Len, pEap->KeyDesc.KeyData[1]));
-
-               }
-       }
-
-       // If timeout value is equaled to zero, it means always not be timeout.
-       // update local dls table entry
-       for (i= 0; i < MAX_NUM_OF_INIT_DLS_ENTRY; i++)
-       {
-               if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(pAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
-               {
-                       if (bSTAKeyFrame)
-                       {
-                               PMAC_TABLE_ENTRY pEntry;
-
-                               // STAKey frame, add pairwise key table
-                               pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
-                               RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
-
-                               PairwiseKey.KeyLen = LEN_TKIP_EK;
-                               NdisMoveMemory(PairwiseKey.Key, &pSTAKey[0], LEN_TKIP_EK);
-                               NdisMoveMemory(PairwiseKey.TxMic, &pSTAKey[16], LEN_TKIP_RXMICK);
-                               NdisMoveMemory(PairwiseKey.RxMic, &pSTAKey[24], LEN_TKIP_TXMICK);
-
-                               PairwiseKey.CipherAlg = pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].CipherAlg;
-
-                               pEntry = DlsEntryTableLookup(pAd, pAd->StaCfg.DLSEntry[i].MacAddr, TRUE);
-                               //AsicAddKeyEntry(pAd, (USHORT)(i + 2), BSS0, 0, &PairwiseKey, TRUE, TRUE);     // reserve 0 for multicast, 1 for unicast
-                               //AsicUpdateRxWCIDTable(pAd, (USHORT)(i + 2), pAddr);
-                               // Add Pair-wise key to Asic
-#ifdef RT2870
-//Benson modified for USB interface, avoid in interrupt when write key, 20080724 -->
-                                {
-                                        RT_ADD_PAIRWISE_KEY_ENTRY KeyInfo;
-                                        COPY_MAC_ADDR(KeyInfo.MacAddr,pAd->StaCfg.DLSEntry[i].MacAddr);
-                                        KeyInfo.MacTabMatchWCID=pAd->StaCfg.DLSEntry[i].MacTabMatchWCID;
-                                        NdisMoveMemory(&KeyInfo.CipherKey,  &PairwiseKey,sizeof(CIPHER_KEY));
-                                        RTUSBEnqueueInternalCmd(pAd, RT_CMD_SET_KEY_TABLE, &KeyInfo, sizeof(RT_ADD_PAIRWISE_KEY_ENTRY));
-                                }
-                                {
-                                        PMAC_TABLE_ENTRY pDLSEntry;
-                                        pDLSEntry = DlsEntryTableLookup(pAd, pAd->StaCfg.DLSEntry[i].MacAddr, TRUE);
-                                        pDLSEntry->PairwiseKey.CipherAlg=PairwiseKey.CipherAlg;
-                                        RTUSBEnqueueInternalCmd(pAd, RT_CMD_SET_RX_WCID_TABLE, pDLSEntry, sizeof(MAC_TABLE_ENTRY));
-                                }
-//Benson modified for USB interface, avoid in interrupt when write key, 20080724 <--
-#endif // RT2870 //
-                               NdisMoveMemory(&pEntry->PairwiseKey, &PairwiseKey, sizeof(CIPHER_KEY));
-                               DBGPRINT(RT_DEBUG_TRACE,("DLS - Receive STAKey Message-1 (Peer STA MAC Address STAKey) \n"));
-
-                               RTMPSendSTAKeyHandShake(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
-
-                               DBGPRINT(RT_DEBUG_TRACE,("DLS - Finish STAKey handshake procedure (Initiator side)\n"));
-                       }
-                       else
-                       {
-                               // Data frame, update timeout value
-                               if (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
-                               {
-                                       pAd->StaCfg.DLSEntry[i].CountDownTimer = pAd->StaCfg.DLSEntry[i].TimeOut;
-                                       //AsicUpdateRxWCIDTable(pAd, (USHORT)(i + 2), pAddr);
-                               }
-                       }
-
-                       bFindEntry = TRUE;
-               }
-       }
-
-       // update peer dls table entry
-       for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
-       {
-               if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(pAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
-               {
-                       if (bSTAKeyFrame)
-                       {
-                               PMAC_TABLE_ENTRY pEntry = NULL;
-
-                               // STAKey frame, add pairwise key table, and send STAkey Msg-2
-                               pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
-                               RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
-
-                               PairwiseKey.KeyLen = LEN_TKIP_EK;
-                               NdisMoveMemory(PairwiseKey.Key, &pSTAKey[0], LEN_TKIP_EK);
-                               NdisMoveMemory(PairwiseKey.TxMic, &pSTAKey[16], LEN_TKIP_RXMICK);
-                               NdisMoveMemory(PairwiseKey.RxMic, &pSTAKey[24], LEN_TKIP_TXMICK);
-
-                               PairwiseKey.CipherAlg = pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].CipherAlg;
-
-                               pEntry = DlsEntryTableLookup(pAd, pAd->StaCfg.DLSEntry[i].MacAddr, TRUE);
-                               //AsicAddKeyEntry(pAd, (USHORT)(i + 2), BSS0, 0, &PairwiseKey, TRUE, TRUE);     // reserve 0 for multicast, 1 for unicast
-                               //AsicUpdateRxWCIDTable(pAd, (USHORT)(i + 2), pAddr);
-                               // Add Pair-wise key to Asic
-#ifdef RT2870
-//Benson modified for USB interface, avoid in interrupt when write key, 20080724 -->
-                                {
-                                        RT_ADD_PAIRWISE_KEY_ENTRY KeyInfo;
-                                        COPY_MAC_ADDR(KeyInfo.MacAddr,pAd->StaCfg.DLSEntry[i].MacAddr);
-                                        KeyInfo.MacTabMatchWCID=pAd->StaCfg.DLSEntry[i].MacTabMatchWCID;
-                                        NdisMoveMemory(&KeyInfo.CipherKey,  &PairwiseKey,sizeof(CIPHER_KEY));
-                                        RTUSBEnqueueInternalCmd(pAd, RT_CMD_SET_KEY_TABLE, &KeyInfo, sizeof(RT_ADD_PAIRWISE_KEY_ENTRY));
-                                }
-                                {
-                                        PMAC_TABLE_ENTRY pDLSEntry;
-                                        pDLSEntry = DlsEntryTableLookup(pAd, pAd->StaCfg.DLSEntry[i].MacAddr, TRUE);
-                                        pDLSEntry->PairwiseKey.CipherAlg=PairwiseKey.CipherAlg;
-                                        RTUSBEnqueueInternalCmd(pAd, RT_CMD_SET_RX_WCID_TABLE, pDLSEntry, sizeof(MAC_TABLE_ENTRY));
-                                }
-//Benson modified for USB interface, avoid in interrupt when write key, 20080724 <--
-#endif // RT2870 //
-                               NdisMoveMemory(&pEntry->PairwiseKey, &PairwiseKey, sizeof(CIPHER_KEY));
-                               DBGPRINT(RT_DEBUG_TRACE,("DLS - Receive STAKey Message-1 (Initiator STA MAC Address STAKey)\n"));
-
-                               // If support WPA or WPA2, start STAKey hand shake,
-                               // If failed hand shake, just tear down peer DLS
-                               if (RTMPSendSTAKeyHandShake(pAd, pAddr) != NDIS_STATUS_SUCCESS)
-                               {
-                                       MLME_DLS_REQ_STRUCT     MlmeDlsReq;
-                                       USHORT                          reason = REASON_QOS_CIPHER_NOT_SUPPORT;
-
-                                       pAd->StaCfg.DLSEntry[i].Valid   = FALSE;
-                                       pAd->StaCfg.DLSEntry[i].Status  = DLS_NONE;
-                                       DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
-                                       MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-                               }
-                               else
-                               {
-                                       DBGPRINT(RT_DEBUG_TRACE,("DLS - Finish STAKey handshake procedure (Peer side)\n"));
-                               }
-                       }
-                       else
-                       {
-                               // Data frame, update timeout value
-                               if (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
-                               {
-                                       pAd->StaCfg.DLSEntry[i].CountDownTimer = pAd->StaCfg.DLSEntry[i].TimeOut;
-                               }
-                       }
-
-                       bFindEntry = TRUE;
-               }
-       }
-
-
-       return bSTAKeyFrame;
-}
-
-/*
-       ========================================================================
-
-       Routine Description:
-               Check if the frame can be sent through DLS direct link interface
-
-       Arguments:
-               pAd             Pointer to adapter
-
-       Return Value:
-               DLS entry index
-
-       Note:
-
-       ========================================================================
-*/
-INT    RTMPCheckDLSFrame(
-       IN      PRTMP_ADAPTER   pAd,
-       IN  PUCHAR          pDA)
-{
-       INT rval = -1;
-       INT     i;
-
-       if (!pAd->CommonCfg.bDLSCapable)
-               return rval;
-
-       if (!INFRA_ON(pAd))
-               return rval;
-
-       do{
-               // check local dls table entry
-               for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
-               {
-                       if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) &&
-                               MAC_ADDR_EQUAL(pDA, pAd->StaCfg.DLSEntry[i].MacAddr))
-                       {
-                               rval = i;
-                               break;
-                       }
-               }
-
-               // check peer dls table entry
-               for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
-               {
-                       if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) &&
-                               MAC_ADDR_EQUAL(pDA, pAd->StaCfg.DLSEntry[i].MacAddr))
-                       {
-                               rval = i;
-                               break;
-                       }
-               }
-       } while (FALSE);
-
-       return rval;
-}
-
-/*
-    ==========================================================================
-    Description:
-
-       IRQL = DISPATCH_LEVEL
-
-    ==========================================================================
- */
-VOID RTMPSendDLSTearDownFrame(
-       IN      PRTMP_ADAPTER   pAd,
-       IN  PUCHAR          pDA)
-{
-       PUCHAR                  pOutBuffer = NULL;
-       NDIS_STATUS             NStatus;
-       HEADER_802_11   DlsTearDownHdr;
-       ULONG                   FrameLen = 0;
-       USHORT                  Reason = REASON_QOS_QSTA_LEAVING_QBSS;
-       UCHAR                   Category = CATEGORY_DLS;
-       UCHAR                   Action = ACTION_DLS_TEARDOWN;
-       UCHAR                   i = 0;
-
-       if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS) ||
-               RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS))
-               return;
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Send DLS TearDown Frame \n"));
-
-       NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
-       if (NStatus != NDIS_STATUS_SUCCESS)
-       {
-               DBGPRINT(RT_DEBUG_ERROR,("ASSOC - RTMPSendDLSTearDownFrame() allocate memory failed \n"));
-               return;
-       }
-
-       ActHeaderInit(pAd, &DlsTearDownHdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
-       MakeOutgoingFrame(pOutBuffer,                           &FrameLen,
-                                       sizeof(HEADER_802_11),          &DlsTearDownHdr,
-                                       1,                                                      &Category,
-                                       1,                                                      &Action,
-                                       6,                                                      pDA,
-                                       6,                                                      pAd->CurrentAddress,
-                                       2,                                                      &Reason,
-                                       END_OF_ARGS);
-
-       MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
-       MlmeFreeMemory(pAd, pOutBuffer);
-
-       // Remove key in local dls table entry
-       for (i = 0; i < MAX_NUM_OF_INIT_DLS_ENTRY; i++)
-       {
-               if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
-                       && MAC_ADDR_EQUAL(pDA, pAd->StaCfg.DLSEntry[i].MacAddr))
-               {
-                       MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
-               }
-       }
-
-       // Remove key in peer dls table entry
-       for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
-       {
-               if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
-                       && MAC_ADDR_EQUAL(pDA, pAd->StaCfg.DLSEntry[i].MacAddr))
-               {
-                       MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
-               }
-       }
-
-       DBGPRINT(RT_DEBUG_TRACE, ("Send DLS TearDown Frame and remove key in (i=%d) \n", i));
-}
-
-/*
-    ==========================================================================
-    Description:
-
-       IRQL = DISPATCH_LEVEL
-
-    ==========================================================================
- */
-NDIS_STATUS RTMPSendSTAKeyRequest(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  pDA)
-{
-       UCHAR                           Header802_3[14];
-       NDIS_STATUS                     NStatus;
-       ULONG                           FrameLen = 0;
-       EAPOL_PACKET            Packet;
-       UCHAR                           Mic[16];
-       UCHAR                           digest[80];
-       PUCHAR                          pOutBuffer = NULL;
-       PNDIS_PACKET            pNdisPacket;
-       UCHAR                           temp[64];
-       UCHAR                           DlsPTK[80];
-
-       DBGPRINT(RT_DEBUG_TRACE,("DLS - RTMPSendSTAKeyRequest() to %02x:%02x:%02x:%02x:%02x:%02x\n", pDA[0], pDA[1], pDA[2], pDA[3], pDA[4], pDA[5]));
-
-       pAd->Sequence ++;
-       MAKE_802_3_HEADER(Header802_3, pAd->CommonCfg.Bssid, pAd->CurrentAddress, EAPOL);
-
-       // Zero message body
-       NdisZeroMemory(&Packet, sizeof(Packet));
-       Packet.ProVer = EAPOL_VER;
-       Packet.ProType    = EAPOLKey;
-       Packet.Body_Len[1]  = sizeof(KEY_DESCRIPTER) - MAX_LEN_OF_RSNIE + 6 + MAC_ADDR_LEN;             // data field contain KDE andPeer MAC address
-
-       // STAKey Message is as EAPOL-Key(1,1,0,0,G/0,0,0, MIC, 0,Peer MAC KDE)
-       if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK))
-    {
-        Packet.KeyDesc.Type = WPA1_KEY_DESC;
-    }
-    else if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
-    {
-        Packet.KeyDesc.Type = WPA2_KEY_DESC;
-    }
-
-       // Key descriptor version
-       Packet.KeyDesc.KeyInfo.KeyDescVer =
-               (((pAd->StaCfg.PairCipher == Ndis802_11Encryption3Enabled) || (pAd->StaCfg.GroupCipher == Ndis802_11Encryption3Enabled)) ? (DESC_TYPE_AES) : (DESC_TYPE_TKIP));
-
-       Packet.KeyDesc.KeyInfo.KeyMic   = 1;
-       Packet.KeyDesc.KeyInfo.Secure   = 1;
-       Packet.KeyDesc.KeyInfo.Request  = 1;
-
-       Packet.KeyDesc.KeyDataLen[1]    = 12;
-
-       // use our own OUI to distinguish proprietary with standard.
-       Packet.KeyDesc.KeyData[0]               = 0xDD;
-       Packet.KeyDesc.KeyData[1]               = 0x0A;
-       Packet.KeyDesc.KeyData[2]               = 0x00;
-       Packet.KeyDesc.KeyData[3]               = 0x0C;
-       Packet.KeyDesc.KeyData[4]               = 0x43;
-       Packet.KeyDesc.KeyData[5]               = 0x03;
-       NdisMoveMemory(&Packet.KeyDesc.KeyData[6], pDA, MAC_ADDR_LEN);
-
-       NdisMoveMemory(Packet.KeyDesc.ReplayCounter, pAd->StaCfg.DlsReplayCounter, LEN_KEY_DESC_REPLAY);
-
-       // Allocate buffer for transmitting message
-       NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);
-       if (NStatus     != NDIS_STATUS_SUCCESS)
-               return NStatus;
-
-       // Prepare EAPOL frame for MIC calculation
-       // Be careful, only EAPOL frame is counted for MIC calculation
-       MakeOutgoingFrame(pOutBuffer,           &FrameLen,
-                             Packet.Body_Len[1] + 4,    &Packet,
-                             END_OF_ARGS);
-
-       // use proprietary PTK
-       NdisZeroMemory(temp, 64);
-       NdisMoveMemory(temp, "IEEE802.11 WIRELESS ACCESS POINT", 32);
-       WpaCountPTK(pAd, temp, temp, pAd->CommonCfg.Bssid, temp, pAd->CurrentAddress, DlsPTK, LEN_PTK);
-
-       // calculate MIC
-       if (pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled)
-       {
-               // AES
-               NdisZeroMemory(digest,  sizeof(digest));
-               HMAC_SHA1(pOutBuffer, FrameLen, DlsPTK, LEN_EAP_MICK, digest);
-               NdisMoveMemory(Packet.KeyDesc.KeyMic, digest, LEN_KEY_DESC_MIC);
-       }
-       else
-       {
-               NdisZeroMemory(Mic,     sizeof(Mic));
-               hmac_md5(DlsPTK, LEN_EAP_MICK, pOutBuffer, FrameLen, Mic);
-               NdisMoveMemory(Packet.KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC);
-       }
-
-       MakeOutgoingFrame(pOutBuffer,           &FrameLen,
-                         sizeof(Header802_3),  Header802_3,
-                             Packet.Body_Len[1] + 4,   &Packet,
-                             END_OF_ARGS);
-
-       NStatus = RTMPAllocateNdisPacket(pAd, &pNdisPacket, NULL, 0, pOutBuffer, FrameLen);
-       if (NStatus == NDIS_STATUS_SUCCESS)
-       {
-               RTMP_SET_PACKET_WCID(pNdisPacket, BSSID_WCID);
-               STASendPacket(pAd, pNdisPacket);
-               RTMPDeQueuePacket(pAd, FALSE, NUM_OF_TX_RING, MAX_TX_PROCESS);
-       }
-
-       MlmeFreeMemory(pAd, pOutBuffer);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("RTMPSendSTAKeyRequest- Send STAKey request (NStatus=%x, FrameLen=%ld)\n", NStatus, FrameLen));
-
-       return NStatus;
-}
-
-/*
-    ==========================================================================
-    Description:
-
-       IRQL = DISPATCH_LEVEL
-
-    ==========================================================================
- */
-NDIS_STATUS RTMPSendSTAKeyHandShake(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  pDA)
-{
-       UCHAR                           Header802_3[14];
-       NDIS_STATUS                     NStatus;
-       ULONG                           FrameLen = 0;
-       EAPOL_PACKET            Packet;
-       UCHAR                           Mic[16];
-       UCHAR                           digest[80];
-       PUCHAR                          pOutBuffer = NULL;
-       PNDIS_PACKET            pNdisPacket;
-       UCHAR                           temp[64];
-       UCHAR                           DlsPTK[80];                     // Due to dirver can not get PTK, use proprietary PTK
-
-       DBGPRINT(RT_DEBUG_TRACE,("DLS - RTMPSendSTAKeyHandShake() to %02x:%02x:%02x:%02x:%02x:%02x\n", pDA[0], pDA[1], pDA[2], pDA[3], pDA[4], pDA[5]));
-
-       pAd->Sequence ++;
-       MAKE_802_3_HEADER(Header802_3, pAd->CommonCfg.Bssid, pAd->CurrentAddress, EAPOL);
-
-       // Zero message body
-       NdisZeroMemory(&Packet, sizeof(Packet));
-       Packet.ProVer = EAPOL_VER;
-       Packet.ProType    = EAPOLKey;
-       Packet.Body_Len[1]  = sizeof(KEY_DESCRIPTER) - MAX_LEN_OF_RSNIE + 6 + MAC_ADDR_LEN;             // data field contain KDE and Peer MAC address
-
-       // STAKey Message is as EAPOL-Key(1,1,0,0,G/0,0,0, MIC, 0,Peer MAC KDE)
-       if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK))
-    {
-        Packet.KeyDesc.Type = WPA1_KEY_DESC;
-    }
-    else if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
-    {
-        Packet.KeyDesc.Type = WPA2_KEY_DESC;
-    }
-
-       // Key descriptor version
-       Packet.KeyDesc.KeyInfo.KeyDescVer =
-               (((pAd->StaCfg.PairCipher == Ndis802_11Encryption3Enabled) || (pAd->StaCfg.GroupCipher == Ndis802_11Encryption3Enabled)) ? (DESC_TYPE_AES) : (DESC_TYPE_TKIP));
-
-       Packet.KeyDesc.KeyInfo.KeyMic   = 1;
-       Packet.KeyDesc.KeyInfo.Secure   = 1;
-
-       Packet.KeyDesc.KeyDataLen[1]    = 12;
-
-       // use our own OUI to distinguish proprietary with standard.
-       Packet.KeyDesc.KeyData[0]               = 0xDD;
-       Packet.KeyDesc.KeyData[1]               = 0x0A;
-       Packet.KeyDesc.KeyData[2]               = 0x00;
-       Packet.KeyDesc.KeyData[3]               = 0x0C;
-       Packet.KeyDesc.KeyData[4]               = 0x43;
-       Packet.KeyDesc.KeyData[5]               = 0x03;
-       NdisMoveMemory(&Packet.KeyDesc.KeyData[6], pDA, MAC_ADDR_LEN);
-
-       NdisMoveMemory(Packet.KeyDesc.ReplayCounter, pAd->StaCfg.DlsReplayCounter, LEN_KEY_DESC_REPLAY);
-
-       // Allocate buffer for transmitting message
-       NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);
-       if (NStatus     != NDIS_STATUS_SUCCESS)
-               return NStatus;
-
-       // Prepare EAPOL frame for MIC calculation
-       // Be careful, only EAPOL frame is counted for MIC calculation
-       MakeOutgoingFrame(pOutBuffer,           &FrameLen,
-                             Packet.Body_Len[1] + 4,    &Packet,
-                             END_OF_ARGS);
-
-       // use proprietary PTK
-       NdisZeroMemory(temp, 64);
-       NdisMoveMemory(temp, "IEEE802.11 WIRELESS ACCESS POINT", 32);
-       WpaCountPTK(pAd, temp, temp, pAd->CommonCfg.Bssid, temp, pAd->CurrentAddress, DlsPTK, LEN_PTK);
-
-       // calculate MIC
-       if (pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled)
-       {
-               // AES
-               NdisZeroMemory(digest,  sizeof(digest));
-               HMAC_SHA1(pOutBuffer, FrameLen, DlsPTK, LEN_EAP_MICK, digest);
-               NdisMoveMemory(Packet.KeyDesc.KeyMic, digest, LEN_KEY_DESC_MIC);
-       }
-       else
-       {
-               NdisZeroMemory(Mic,     sizeof(Mic));
-               hmac_md5(DlsPTK, LEN_EAP_MICK, pOutBuffer, FrameLen, Mic);
-               NdisMoveMemory(Packet.KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC);
-       }
-
-       MakeOutgoingFrame(pOutBuffer,           &FrameLen,
-                         sizeof(Header802_3),  Header802_3,
-                             Packet.Body_Len[1] + 4,   &Packet,
-                             END_OF_ARGS);
-
-       NStatus = RTMPAllocateNdisPacket(pAd, &pNdisPacket, NULL, 0, pOutBuffer, FrameLen);
-       if (NStatus == NDIS_STATUS_SUCCESS)
-       {
-               RTMP_SET_PACKET_WCID(pNdisPacket, BSSID_WCID);
-               STASendPacket(pAd, pNdisPacket);
-               RTMPDeQueuePacket(pAd, FALSE, NUM_OF_TX_RING, MAX_TX_PROCESS);
-       }
-
-       MlmeFreeMemory(pAd, pOutBuffer);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("RTMPSendSTAKeyHandShake- Send STAKey Message-2 (NStatus=%x, FrameLen=%ld)\n", NStatus, FrameLen));
-
-       return NStatus;
-}
-
-VOID DlsTimeoutAction(
-       IN PVOID SystemSpecific1,
-       IN PVOID FunctionContext,
-       IN PVOID SystemSpecific2,
-       IN PVOID SystemSpecific3)
-{
-       MLME_DLS_REQ_STRUCT             MlmeDlsReq;
-       USHORT                                  reason;
-       PRT_802_11_DLS                  pDLS = (PRT_802_11_DLS)FunctionContext;
-       PRTMP_ADAPTER                   pAd = pDLS->pAd;
-
-       DBGPRINT(RT_DEBUG_TRACE, ("DlsTimeout - Tear down DLS links (%02x:%02x:%02x:%02x:%02x:%02x)\n",
-               pDLS->MacAddr[0], pDLS->MacAddr[1], pDLS->MacAddr[2], pDLS->MacAddr[3], pDLS->MacAddr[4], pDLS->MacAddr[5]));
-
-       if ((pDLS) && (pDLS->Valid))
-       {
-               reason                  = REASON_QOS_REQUEST_TIMEOUT;
-               pDLS->Valid             = FALSE;
-               pDLS->Status    = DLS_NONE;
-               DlsParmFill(pAd, &MlmeDlsReq, pDLS, reason);
-               MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq);
-               RT28XX_MLME_HANDLER(pAd);
-       }
-}
-
-/*
-================================================================
-Description : because DLS and CLI share the same WCID table in ASIC.
-Mesh entry also insert to pAd->MacTab.content[].  Such is marked as ValidAsDls = TRUE.
-Also fills the pairwise key.
-Because front MAX_AID_BA entries have direct mapping to BAEntry, which is only used as CLI. So we insert Dls
-from index MAX_AID_BA.
-================================================================
-*/
-MAC_TABLE_ENTRY *MacTableInsertDlsEntry(
-       IN  PRTMP_ADAPTER   pAd,
-       IN  PUCHAR      pAddr,
-       IN  UINT        DlsEntryIdx)
-{
-       PMAC_TABLE_ENTRY pEntry = NULL;
-
-       DBGPRINT(RT_DEBUG_TRACE, ("====> MacTableInsertDlsEntry\n"));
-       // if FULL, return
-       if (pAd->MacTab.Size >= MAX_LEN_OF_MAC_TABLE)
-               return NULL;
-
-       do
-       {
-               if((pEntry = DlsEntryTableLookup(pAd, pAddr, TRUE)) != NULL)
-                       break;
-
-               // allocate one MAC entry
-               pEntry = MacTableInsertEntry(pAd, pAddr, DlsEntryIdx + MIN_NET_DEVICE_FOR_DLS, TRUE);
-               if (pEntry)
-               {
-                       pAd->StaCfg.DLSEntry[DlsEntryIdx].MacTabMatchWCID = pEntry->Aid;
-                       pEntry->MatchDlsEntryIdx = DlsEntryIdx;
-                       pEntry->AuthMode = pAd->StaCfg.AuthMode;
-                       pEntry->WepStatus = pAd->StaCfg.WepStatus;
-
-                       DBGPRINT(RT_DEBUG_TRACE, ("MacTableInsertDlsEntry - allocate entry #%d, Total= %d\n",pEntry->Aid, pAd->MacTab.Size));
-
-                       // If legacy WEP is used, set pair-wise cipherAlg into WCID attribute table for this entry
-                       if ((pEntry->ValidAsDls) && (pEntry->WepStatus == Ndis802_11WEPEnabled))
-                       {
-                               UCHAR KeyIdx = 0;
-                               UCHAR CipherAlg = 0;
-
-                               KeyIdx  = pAd->StaCfg.DefaultKeyId;
-
-                               CipherAlg       = pAd->SharedKey[BSS0][KeyIdx].CipherAlg;
-
-                               RTMPAddWcidAttributeEntry(pAd,
-                                                                                       BSS0,
-                                                                                       pAd->StaCfg.DefaultKeyId,
-                                                                                       pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].CipherAlg,
-                                                                                       pEntry);
-                       }
-
-                       break;
-               }
-       } while(FALSE);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("<==== MacTableInsertDlsEntry\n"));
-
-       return pEntry;
-}
-
-
-/*
-       ==========================================================================
-       Description:
-               Delete all Mesh Entry in pAd->MacTab
-       ==========================================================================
- */
-BOOLEAN MacTableDeleteDlsEntry(
-       IN PRTMP_ADAPTER pAd,
-       IN USHORT wcid,
-       IN PUCHAR pAddr)
-{
-       DBGPRINT(RT_DEBUG_TRACE, ("====> MacTableDeleteDlsEntry\n"));
-
-       if (!VALID_WCID(wcid))
-               return FALSE;
-
-       MacTableDeleteEntry(pAd, wcid, pAddr);
-
-       DBGPRINT(RT_DEBUG_TRACE, ("<==== MacTableDeleteDlsEntry\n"));
-
-       return TRUE;
-}
-
-MAC_TABLE_ENTRY *DlsEntryTableLookup(
-       IN PRTMP_ADAPTER pAd,
-       IN PUCHAR       pAddr,
-       IN BOOLEAN      bResetIdelCount)
-{
-       ULONG HashIdx;
-       MAC_TABLE_ENTRY *pEntry = NULL;
-
-       RTMP_SEM_LOCK(&pAd->MacTabLock);
-       HashIdx = MAC_ADDR_HASH_INDEX(pAddr);
-       pEntry = pAd->MacTab.Hash[HashIdx];
-
-       while (pEntry)
-       {
-               if ((pEntry->ValidAsDls == TRUE)
-                       && MAC_ADDR_EQUAL(pEntry->Addr, pAddr))
-               {
-                       if(bResetIdelCount)
-                               pEntry->NoDataIdleCount = 0;
-                       break;
-               }
-               else
-                       pEntry = pEntry->pNext;
-       }
-
-       RTMP_SEM_UNLOCK(&pAd->MacTabLock);
-       return pEntry;
-}
-
-MAC_TABLE_ENTRY *DlsEntryTableLookupByWcid(
-       IN PRTMP_ADAPTER pAd,
-       IN UCHAR        wcid,
-       IN PUCHAR       pAddr,
-       IN BOOLEAN      bResetIdelCount)
-{
-       ULONG DLsIndex;
-       PMAC_TABLE_ENTRY pCurEntry = NULL;
-       PMAC_TABLE_ENTRY pEntry = NULL;
-
-       if (!VALID_WCID(wcid))
-               return NULL;
-
-       RTMP_SEM_LOCK(&pAd->MacTabLock);
-
-       do
-       {
-               pCurEntry = &pAd->MacTab.Content[wcid];
-
-               DLsIndex = 0xff;
-               if ((pCurEntry) && (pCurEntry->ValidAsDls== TRUE))
-               {
-                       DLsIndex = pCurEntry->MatchDlsEntryIdx;
-               }
-
-               if (DLsIndex == 0xff)
-                       break;
-
-               if (MAC_ADDR_EQUAL(pCurEntry->Addr, pAddr))
-               {
-                       if(bResetIdelCount)
-                               pCurEntry->NoDataIdleCount = 0;
-                       pEntry = pCurEntry;
-                       break;
-               }
-       } while(FALSE);
-
-       RTMP_SEM_UNLOCK(&pAd->MacTabLock);
-
-       return pEntry;
-}
-
-INT Set_DlsEntryInfo_Display_Proc(
-       IN PRTMP_ADAPTER pAd,
-       IN PUCHAR arg)
-{
-       INT i;
-
-       printk("\n%-19s%-8s\n", "MAC", "TIMEOUT\n");
-       for (i=0; i<MAX_NUM_OF_DLS_ENTRY; i++)
-       {
-               if ((pAd->StaCfg.DLSEntry[i].Valid) && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
-               {
-                       printk("%02x:%02x:%02x:%02x:%02x:%02x  ",
-                               pAd->StaCfg.DLSEntry[i].MacAddr[0], pAd->StaCfg.DLSEntry[i].MacAddr[1], pAd->StaCfg.DLSEntry[i].MacAddr[2],
-                               pAd->StaCfg.DLSEntry[i].MacAddr[3], pAd->StaCfg.DLSEntry[i].MacAddr[4], pAd->StaCfg.DLSEntry[i].MacAddr[5]);
-                       printk("%-8d\n", pAd->StaCfg.DLSEntry[i].TimeOut);
-               }
-       }
-
-       return TRUE;
-}
-
-INT    Set_DlsAddEntry_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  arg)
-{
-    UCHAR      mac[MAC_ADDR_LEN];
-       USHORT  Timeout;
-       char *token, sepValue[] = ":", DASH = '-';
-       INT i;
-    RT_802_11_DLS      Dls;
-
-    if(strlen(arg) < 19)  //Mac address acceptable format 01:02:03:04:05:06 length 17 plus the "-" and timeout value in decimal format.
-               return FALSE;
-
-       token = strchr(arg, DASH);
-       if ((token != NULL) && (strlen(token)>1))
-       {
-               Timeout = simple_strtol((token+1), 0, 10);
-
-               *token = '\0';
-               for (i = 0, token = rstrtok(arg, &sepValue[0]); token; token = rstrtok(NULL, &sepValue[0]), i++)
-               {
-                       if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1))))
-                               return FALSE;
-                       AtoH(token, (PUCHAR)(&mac[i]), 1);
-               }
-               if(i != 6)
-                       return FALSE;
-
-           printk("\n%02x:%02x:%02x:%02x:%02x:%02x-%d", mac[0], mac[1],
-                  mac[2], mac[3], mac[4], mac[5], (int)Timeout);
-
-               NdisZeroMemory(&Dls, sizeof(RT_802_11_DLS));
-               Dls.TimeOut = Timeout;
-               COPY_MAC_ADDR(Dls.MacAddr, mac);
-               Dls.Valid = 1;
-
-               MlmeEnqueue(pAd,
-                                       MLME_CNTL_STATE_MACHINE,
-                                       RT_OID_802_11_SET_DLS_PARAM,
-                                       sizeof(RT_802_11_DLS),
-                                       &Dls);
-
-               return TRUE;
-       }
-
-       return FALSE;
-
-}
-
-INT    Set_DlsTearDownEntry_Proc(
-       IN      PRTMP_ADAPTER   pAd,
-       IN      PUCHAR                  arg)
-{
-       UCHAR                   macAddr[MAC_ADDR_LEN];
-       CHAR                    *value;
-       INT                             i;
-       RT_802_11_DLS   Dls;
-
-       if(strlen(arg) != 17)  //Mac address acceptable format 01:02:03:04:05:06 length 17
-               return FALSE;
-
-       for (i=0, value = rstrtok(arg,":"); value; value = rstrtok(NULL,":"))
-       {
-               if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) )
-                       return FALSE;  //Invalid
-
-               AtoH(value, &macAddr[i++], 2);
-       }
-
-       printk("\n%02x:%02x:%02x:%02x:%02x:%02x", macAddr[0], macAddr[1],
-                  macAddr[2], macAddr[3], macAddr[4], macAddr[5]);
-
-       NdisZeroMemory(&Dls, sizeof(RT_802_11_DLS));
-       COPY_MAC_ADDR(Dls.MacAddr, macAddr);
-       Dls.Valid = 0;
-
-       MlmeEnqueue(pAd,
-                               MLME_CNTL_STATE_MACHINE,
-                               RT_OID_802_11_SET_DLS_PARAM,
-                               sizeof(RT_802_11_DLS),
-                               &Dls);
-
-       return TRUE;
-}
-
index 8112c20..68add1f 100644 (file)
@@ -183,9 +183,6 @@ VOID STARxDataFrameAnnounce(
                        // ARALINK
                        CmmRxRalinkFrameIndicate(pAd, pEntry, pRxBlk, FromWhichBSSID);
                }
-#ifdef QOS_DLS_SUPPORT
-               RX_BLK_CLEAR_FLAG(pRxBlk, fRX_DLS);
-#endif // QOS_DLS_SUPPORT //
        }
        else
        {
@@ -291,14 +288,6 @@ VOID STAHandleRxDataFrame(
                        return;
                }
 
-#ifdef QOS_DLS_SUPPORT
-               //if ((pHeader->FC.FrDs == 0) && (pHeader->FC.ToDs == 0))
-               if (RTMPRcvFrameDLSCheck(pAd, pHeader, pRxWI->MPDUtotalByteCount, pRxD))
-               {
-                       return;
-               }
-#endif // QOS_DLS_SUPPORT //
-
                // Drop not my BSS frames
                if (pRxD->MyBss == 0)
                {
@@ -357,10 +346,7 @@ VOID STAHandleRxDataFrame(
                }
 
            // Drop not my BSS frame (we can not only check the MyBss bit in RxD)
-#ifdef QOS_DLS_SUPPORT
-           if (!pAd->CommonCfg.bDLSCapable)
-           {
-#endif // QOS_DLS_SUPPORT //
+
                if (INFRA_ON(pAd))
                {
                        // Infrastructure mode, check address 2 for BSSID
@@ -383,9 +369,6 @@ VOID STAHandleRxDataFrame(
                                return;
                        }
                }
-#ifdef QOS_DLS_SUPPORT
-           }
-#endif // QOS_DLS_SUPPORT //
 
                //
                // find pEntry
@@ -406,11 +389,6 @@ VOID STAHandleRxDataFrame(
                if (INFRA_ON(pAd))
                {
                        RX_BLK_SET_FLAG(pRxBlk, fRX_INFRA);
-#ifdef QOS_DLS_SUPPORT
-                       if ((pHeader->FC.FrDs == 0) && (pHeader->FC.ToDs == 0))
-                               RX_BLK_SET_FLAG(pRxBlk, fRX_DLS);
-                       else
-#endif // QOS_DLS_SUPPORT //
                        ASSERT(pRxWI->WirelessCliID == BSSID_WCID);
                }
 
@@ -524,18 +502,6 @@ VOID STAHandleRxDataFrame(
        {
                pAd->LastRxRate = (USHORT)((pRxWI->MCS) + (pRxWI->BW <<7) + (pRxWI->ShortGI <<8)+ (pRxWI->PHYMODE <<14)) ;
 
-
-#ifdef QOS_DLS_SUPPORT
-        if (RX_BLK_TEST_FLAG(pRxBlk, fRX_DLS))
-               {
-                       MAC_TABLE_ENTRY *pDlsEntry = NULL;
-
-                       pDlsEntry = DlsEntryTableLookupByWcid(pAd, pRxWI->WirelessCliID, pHeader->Addr2, TRUE);
-                                                                                                       if(pDlsEntry)
-                       Update_Rssi_Sample(pAd, &pDlsEntry->RssiSample, pRxWI);
-               }
-               else
-#endif // QOS_DLS_SUPPORT //
                if (ADHOC_ON(pAd))
                {
                        pEntry = MacTableLookup(pAd, pHeader->Addr2);
@@ -885,17 +851,6 @@ VOID STASendPackets(
                        {
                                // Record that orignal packet source is from NDIS layer,so that
                                // later on driver knows how to release this NDIS PACKET
-#ifdef QOS_DLS_SUPPORT
-                               MAC_TABLE_ENTRY *pEntry;
-                               PUCHAR pSrcBufVA = GET_OS_PKT_DATAPTR(pPacket);
-
-                               pEntry = MacTableLookup(pAd, pSrcBufVA);
-                               if (pEntry && (pEntry->ValidAsDls == TRUE))
-                               {
-                                       RTMP_SET_PACKET_WCID(pPacket, pEntry->Aid);
-                               }
-                               else
-#endif // QOS_DLS_SUPPORT //
                                RTMP_SET_PACKET_WCID(pPacket, 0); // this field is useless when in STA mode
                                RTMP_SET_PACKET_SOURCE(pPacket, PKTSRC_NDIS);
                                NDIS_SET_PACKET_STATUS(pPacket, NDIS_STATUS_PENDING);
@@ -978,18 +933,6 @@ NDIS_STATUS STASendPacket(
        {
                if(INFRA_ON(pAd))
                {
-#ifdef QOS_DLS_SUPPORT
-                       USHORT  tmpWcid;
-
-                       tmpWcid = RTMP_GET_PACKET_WCID(pPacket);
-                       if (VALID_WCID(tmpWcid) &&
-                               (pAd->MacTab.Content[tmpWcid].ValidAsDls== TRUE))
-                       {
-                               pEntry = &pAd->MacTab.Content[tmpWcid];
-                               Rate = pAd->MacTab.Content[tmpWcid].CurrTxRate;
-                       }
-                       else
-#endif // QOS_DLS_SUPPORT //
                        {
                        pEntry = &pAd->MacTab.Content[BSSID_WCID];
                        RTMP_SET_PACKET_WCID(pPacket, BSSID_WCID);
@@ -1471,12 +1414,7 @@ VOID STABuildCommon802_11Header(
        IN  PRTMP_ADAPTER   pAd,
        IN  TX_BLK          *pTxBlk)
 {
-
        HEADER_802_11   *pHeader_802_11;
-#ifdef QOS_DLS_SUPPORT
-       BOOLEAN bDLSFrame = FALSE;
-       INT     DlsEntryIndex = 0;
-#endif // QOS_DLS_SUPPORT //
 
        //
        // MAKE A COMMON 802.11 HEADER
@@ -1493,19 +1431,6 @@ VOID STABuildCommon802_11Header(
        pHeader_802_11->FC.Type = BTYPE_DATA;
        pHeader_802_11->FC.SubType = ((TX_BLK_TEST_FLAG(pTxBlk, fTX_bWMM)) ? SUBTYPE_QDATA : SUBTYPE_DATA);
 
-#ifdef QOS_DLS_SUPPORT
-       if (INFRA_ON(pAd))
-       {
-               // Check if the frame can be sent through DLS direct link interface
-               // If packet can be sent through DLS, then force aggregation disable. (Hard to determine peer STA's capability)
-               DlsEntryIndex = RTMPCheckDLSFrame(pAd, pTxBlk->pSrcBufHeader);
-               if (DlsEntryIndex >= 0)
-                       bDLSFrame = TRUE;
-               else
-                       bDLSFrame = FALSE;
-       }
-#endif // QOS_DLS_SUPPORT //
-
     if (pTxBlk->pMacEntry)
        {
                if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bForceNonQoS))
@@ -1515,14 +1440,6 @@ VOID STABuildCommon802_11Header(
                }
                else
                {
-#ifdef QOS_DLS_SUPPORT
-                       if (bDLSFrame)
-                       {
-                               pHeader_802_11->Sequence = pAd->StaCfg.DLSEntry[DlsEntryIndex].Sequence;
-                               pAd->StaCfg.DLSEntry[DlsEntryIndex].Sequence = (pAd->StaCfg.DLSEntry[DlsEntryIndex].Sequence+1) & MAXSEQ;
-                       }
-                       else
-#endif // QOS_DLS_SUPPORT //
                        {
            pHeader_802_11->Sequence = pTxBlk->pMacEntry->TxSeq[pTxBlk->UserPriority];
            pTxBlk->pMacEntry->TxSeq[pTxBlk->UserPriority] = (pTxBlk->pMacEntry->TxSeq[pTxBlk->UserPriority]+1) & MAXSEQ;
@@ -1542,16 +1459,6 @@ VOID STABuildCommon802_11Header(
        {
                if (INFRA_ON(pAd))
                {
-#ifdef QOS_DLS_SUPPORT
-                       if (bDLSFrame)
-                       {
-                               COPY_MAC_ADDR(pHeader_802_11->Addr1, pTxBlk->pSrcBufHeader);
-                               COPY_MAC_ADDR(pHeader_802_11->Addr2, pAd->CurrentAddress);
-                               COPY_MAC_ADDR(pHeader_802_11->Addr3, pAd->CommonCfg.Bssid);
-                               pHeader_802_11->FC.ToDs = 0;
-                       }
-                       else
-#endif // QOS_DLS_SUPPORT //
                        {
                        COPY_MAC_ADDR(pHeader_802_11->Addr1, pAd->CommonCfg.Bssid);
                        COPY_MAC_ADDR(pHeader_802_11->Addr2, pAd->CurrentAddress);
@@ -1607,29 +1514,7 @@ VOID STABuildCache802_11Header(
     pMacEntry->TxSeq[pTxBlk->UserPriority] = (pMacEntry->TxSeq[pTxBlk->UserPriority]+1) & MAXSEQ;
 
        {
-               // Check if the frame can be sent through DLS direct link interface
-               // If packet can be sent through DLS, then force aggregation disable. (Hard to determine peer STA's capability)
-#ifdef QOS_DLS_SUPPORT
-               BOOLEAN bDLSFrame = FALSE;
-               INT     DlsEntryIndex = 0;
-
-               DlsEntryIndex = RTMPCheckDLSFrame(pAd, pTxBlk->pSrcBufHeader);
-               if (DlsEntryIndex >= 0)
-                       bDLSFrame = TRUE;
-               else
-                       bDLSFrame = FALSE;
-#endif // QOS_DLS_SUPPORT //
-
                // The addr3 of normal packet send from DS is Dest Mac address.
-#ifdef QOS_DLS_SUPPORT
-               if (bDLSFrame)
-               {
-                       COPY_MAC_ADDR(pHeader80211->Addr1, pTxBlk->pSrcBufHeader);
-                       COPY_MAC_ADDR(pHeader80211->Addr3, pAd->CommonCfg.Bssid);
-                       pHeader80211->FC.ToDs = 0;
-               }
-               else
-#endif // QOS_DLS_SUPPORT //
                if (ADHOC_ON(pAd))
                        COPY_MAC_ADDR(pHeader80211->Addr3, pAd->CommonCfg.Bssid);
                else
index 1495ff3..c7b2070 100644 (file)
@@ -85,10 +85,6 @@ struct iw_priv_args privtab[] = {
          0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "radio_off" },
        { RAIO_ON,
          0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "radio_on" },
-#ifdef QOS_DLS_SUPPORT
-       { SHOW_DLS_ENTRY_INFO,
-         0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "dlsentryinfo" },
-#endif // QOS_DLS_SUPPORT //
        { SHOW_CFG_VALUE,
          IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "show" },
 /* --- sub-ioctls relations --- */
@@ -289,10 +285,6 @@ static struct {
     {"TGnWifiTest",                 Set_TGnWifiTest_Proc},
     {"ForceGF",                                        Set_ForceGF_Proc},
 #endif // DOT11_N_SUPPORT //
-#ifdef QOS_DLS_SUPPORT
-       {"DlsAddEntry",                                 Set_DlsAddEntry_Proc},
-       {"DlsTearDownEntry",                    Set_DlsTearDownEntry_Proc},
-#endif // QOS_DLS_SUPPORT //
        {"LongRetry",                           Set_LongRetryLimit_Proc},
        {"ShortRetry",                          Set_ShortRetryLimit_Proc},
 #ifdef EXT_BUILD_CHANNEL_LIST
@@ -2057,16 +2049,6 @@ rt_private_show(struct net_device *dev, struct iw_request_info *info,
             wrq->length = strlen(extra) + 1; // 1: size of '\0'
             break;
 
-
-#ifdef QOS_DLS_SUPPORT
-               case SHOW_DLS_ENTRY_INFO:
-                       {
-                               Set_DlsEntryInfo_Display_Proc(pAd, NULL);
-                               wrq->length = 0; // 1: size of '\0'
-                       }
-                       break;
-#endif // QOS_DLS_SUPPORT //
-
                case SHOW_CFG_VALUE:
                        {
                                Status = RTMPShowCfgValue(pAd, wrq->pointer, extra);
@@ -3813,62 +3795,7 @@ INT RTMPSetInformation(
                                DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_SET_APSD_PSM (bAPSDForcePowerSave:%d)\n", pAdapter->CommonCfg.bAPSDForcePowerSave));
                        }
                        break;
-#ifdef QOS_DLS_SUPPORT
-               case RT_OID_802_11_SET_DLS:
-                       if (wrq->u.data.length != sizeof(ULONG))
-                               Status = -EINVAL;
-                       else
-                       {
-                               BOOLEAN oldvalue = pAdapter->CommonCfg.bDLSCapable;
-                               Status = copy_from_user(&pAdapter->CommonCfg.bDLSCapable, wrq->u.data.pointer, wrq->u.data.length);
-                               if (oldvalue && !pAdapter->CommonCfg.bDLSCapable)
-                               {
-                                       int     i;
-                                       // tear down local dls table entry
-                                       for     (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
-                                       {
-                                               if (pAdapter->StaCfg.DLSEntry[i].Valid && (pAdapter->StaCfg.DLSEntry[i].Status == DLS_FINISH))
-                                               {
-                                                       pAdapter->StaCfg.DLSEntry[i].Status     = DLS_NONE;
-                                                       pAdapter->StaCfg.DLSEntry[i].Valid      = FALSE;
-                                                       RTMPSendDLSTearDownFrame(pAdapter, pAdapter->StaCfg.DLSEntry[i].MacAddr);
-                                               }
-                                       }
-
-                                       // tear down peer dls table     entry
-                                       for     (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
-                                       {
-                                               if (pAdapter->StaCfg.DLSEntry[i].Valid && (pAdapter->StaCfg.DLSEntry[i].Status == DLS_FINISH))
-                                               {
-                                                       pAdapter->StaCfg.DLSEntry[i].Status     = DLS_NONE;
-                                                       pAdapter->StaCfg.DLSEntry[i].Valid      = FALSE;
-                                                       RTMPSendDLSTearDownFrame(pAdapter, pAdapter->StaCfg.DLSEntry[i].MacAddr);
-                                               }
-                                       }
-                               }
-
-                               DBGPRINT(RT_DEBUG_TRACE,("Set::RT_OID_802_11_SET_DLS (=%d)\n", pAdapter->CommonCfg.bDLSCapable));
-                       }
-                       break;
-
-               case RT_OID_802_11_SET_DLS_PARAM:
-                       if (wrq->u.data.length  != sizeof(RT_802_11_DLS_UI))
-                               Status = -EINVAL;
-                       else
-                       {
-                               RT_802_11_DLS   Dls;
 
-                               NdisZeroMemory(&Dls, sizeof(RT_802_11_DLS));
-                               RTMPMoveMemory(&Dls, wrq->u.data.pointer, sizeof(RT_802_11_DLS_UI));
-                               MlmeEnqueue(pAdapter,
-                                                       MLME_CNTL_STATE_MACHINE,
-                                                       RT_OID_802_11_SET_DLS_PARAM,
-                                                       sizeof(RT_802_11_DLS),
-                                                       &Dls);
-                               DBGPRINT(RT_DEBUG_TRACE,("Set::RT_OID_802_11_SET_DLS_PARAM \n"));
-                       }
-                       break;
-#endif // QOS_DLS_SUPPORT //
                case RT_OID_802_11_SET_WMM:
                        if (wrq->u.data.length  != sizeof(BOOLEAN))
                                Status = -EINVAL;
@@ -5203,35 +5130,6 @@ INT RTMPQueryInformation(
                        DBGPRINT(RT_DEBUG_TRACE, ("Status=%d\n", Status));
                        break;
 
-
-#ifdef QOS_DLS_SUPPORT
-               case RT_OID_802_11_QUERY_DLS:
-                       wrq->u.data.length = sizeof(BOOLEAN);
-                       Status = copy_to_user(wrq->u.data.pointer, &pAdapter->CommonCfg.bDLSCapable, wrq->u.data.length);
-                       DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_DLS(=%d)\n", pAdapter->CommonCfg.bDLSCapable));
-                       break;
-
-               case RT_OID_802_11_QUERY_DLS_PARAM:
-                       {
-                               PRT_802_11_DLS_INFO     pDlsInfo = kmalloc(sizeof(RT_802_11_DLS_INFO), GFP_ATOMIC);
-                               if (pDlsInfo == NULL)
-                                       break;
-
-                               for (i=0; i<MAX_NUM_OF_DLS_ENTRY; i++)
-                               {
-                                       RTMPMoveMemory(&pDlsInfo->Entry[i], &pAdapter->StaCfg.DLSEntry[i], sizeof(RT_802_11_DLS_UI));
-                               }
-
-                               pDlsInfo->num = MAX_NUM_OF_DLS_ENTRY;
-                               wrq->u.data.length = sizeof(RT_802_11_DLS_INFO);
-                               Status = copy_to_user(wrq->u.data.pointer, pDlsInfo, wrq->u.data.length);
-                               DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_DLS_PARAM\n"));
-
-                               if (pDlsInfo)
-                                       kfree(pDlsInfo);
-                       }
-                       break;
-#endif // QOS_DLS_SUPPORT //
         default:
             DBGPRINT(RT_DEBUG_TRACE, ("Query::unknown IOCTL's subcmd = 0x%08x\n", cmd));
             Status = -EOPNOTSUPP;