Staging: rt3070: remove dead DOT11N_DRAFT3 code

Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Bartlomiej Zolnierkiewicz 2009-04-26 16:05:33 +02:00 committed by Greg Kroah-Hartman
parent 4ad3198c5b
commit 03ddd40f14
13 changed files with 1 additions and 862 deletions

View File

@ -159,9 +159,6 @@ USHORT APBuildAssociation(
IN UCHAR *pRSNLen,
IN BOOLEAN bWmmCapable,
IN ULONG RalinkIe,
#ifdef DOT11N_DRAFT3
IN EXT_CAP_INFO_ELEMENT ExtCapInfo,
#endif // DOT11N_DRAFT3 //
IN HT_CAPABILITY_IE *pHtCapability,
IN UCHAR HtCapabilityLen,
OUT USHORT *pAid);
@ -294,11 +291,6 @@ VOID SupportRate(
BOOLEAN ApScanRunning(
IN PRTMP_ADAPTER pAd);
#ifdef DOT11N_DRAFT3
VOID APOverlappingBSSScan(
IN RTMP_ADAPTER *pAd);
#endif // DOT11N_DRAFT3 //
// ap_wpa.c
VOID APWpaStateMachineInit(
@ -491,9 +483,6 @@ BOOLEAN PeerAssocReqCmmSanity(
OUT UCHAR *pRSNLen,
OUT BOOLEAN *pbWmmCapable,
OUT ULONG *pRalinkIe,
#ifdef DOT11N_DRAFT3
OUT EXT_CAP_INFO_ELEMENT *pExtCapInfo,
#endif // DOT11N_DRAFT3 //
OUT UCHAR *pHtCapabilityLen,
OUT HT_CAPABILITY_IE *pHtCapability);

View File

@ -308,321 +308,14 @@ VOID PeerBAAction(
break;
}
}
#ifdef DOT11N_DRAFT3
#ifdef CONFIG_STA_SUPPORT
VOID StaPublicAction(
IN PRTMP_ADAPTER pAd,
IN UCHAR Bss2040Coexist)
{
BSS_2040_COEXIST_IE BssCoexist;
MLME_SCAN_REQ_STRUCT ScanReq;
BssCoexist.word = Bss2040Coexist;
// AP asks Station to return a 20/40 BSS Coexistence mgmt frame. So we first starts a scan, then send back 20/40 BSS Coexistence mgmt frame
if ((BssCoexist.field.InfoReq == 1) && (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SCAN_2040)))
{
// Clear record first. After scan , will update those bit and send back to transmiter.
pAd->CommonCfg.BSSCoexist2040.field.InfoReq = 1;
pAd->CommonCfg.BSSCoexist2040.field.Intolerant40 = 0;
pAd->CommonCfg.BSSCoexist2040.field.BSS20WidthReq = 0;
// Fill out stuff for scan request
ScanParmFill(pAd, &ScanReq, ZeroSsid, 0, BSS_ANY, SCAN_2040_BSS_COEXIST);
MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq);
pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN;
}
}
/*
Description : Build Intolerant Channel Rerpot from Trigger event table.
return : how many bytes copied.
*/
ULONG BuildIntolerantChannelRep(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pDest)
{
ULONG FrameLen = 0;
ULONG ReadOffset = 0;
UCHAR i;
UCHAR LastRegClass = 0xff;
PUCHAR pLen;
for ( i = 0;i < MAX_TRIGGER_EVENT;i++)
{
if (pAd->CommonCfg.TriggerEventTab.EventA[i].bValid == TRUE)
{
if (pAd->CommonCfg.TriggerEventTab.EventA[i].RegClass == LastRegClass)
{
*(pDest + ReadOffset) = (UCHAR)pAd->CommonCfg.TriggerEventTab.EventA[i].Channel;
*pLen++;
ReadOffset++;
FrameLen++;
}
else
{
*(pDest + ReadOffset) = IE_2040_BSS_INTOLERANT_REPORT; // IE
*(pDest + ReadOffset + 1) = 2; // Len = RegClass byte + channel byte.
pLen = pDest + ReadOffset + 1;
LastRegClass = pAd->CommonCfg.TriggerEventTab.EventA[i].RegClass;
*(pDest + ReadOffset + 2) = LastRegClass; // Len = RegClass byte + channel byte.
*(pDest + ReadOffset + 3) = (UCHAR)pAd->CommonCfg.TriggerEventTab.EventA[i].Channel;
FrameLen += 4;
ReadOffset += 4;
}
}
}
return FrameLen;
}
/*
Description : Send 20/40 BSS Coexistence Action frame If one trigger event is triggered.
*/
VOID Send2040CoexistAction(
IN PRTMP_ADAPTER pAd,
IN UCHAR Wcid,
IN BOOLEAN bAddIntolerantCha)
{
PUCHAR pOutBuffer = NULL;
NDIS_STATUS NStatus;
FRAME_ACTION_HDR Frame;
ULONG FrameLen;
ULONG IntolerantChaRepLen;
IntolerantChaRepLen = 0;
NStatus = MlmeAllocateMemory(pAd, &pOutBuffer); //Get an unused nonpaged memory
if(NStatus != NDIS_STATUS_SUCCESS)
{
DBGPRINT(RT_DEBUG_ERROR,("ACT - Send2040CoexistAction() allocate memory failed \n"));
return;
}
ActHeaderInit(pAd, &Frame.Hdr, pAd->MacTab.Content[Wcid].Addr, pAd->CommonCfg.Bssid);
Frame.Category = CATEGORY_PUBLIC;
Frame.Action = ACTION_BSS_2040_COEXIST;
MakeOutgoingFrame(pOutBuffer, &FrameLen,
sizeof(FRAME_ACTION_HDR), &Frame,
END_OF_ARGS);
*(pOutBuffer + FrameLen) = pAd->CommonCfg.BSSCoexist2040.word;
FrameLen++;
if (bAddIntolerantCha == TRUE)
IntolerantChaRepLen = BuildIntolerantChannelRep(pAd, pOutBuffer + FrameLen);
MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen + IntolerantChaRepLen);
DBGPRINT(RT_DEBUG_ERROR,("ACT - Send2040CoexistAction( BSSCoexist2040 = 0x%x ) \n", pAd->CommonCfg.BSSCoexist2040.word));
}
/*
==========================================================================
Description:
After scan, Update 20/40 BSS Coexistence IE and send out.
According to 802.11n D3.03 11.14.10
Parameters:
==========================================================================
*/
VOID Update2040CoexistFrameAndNotify(
IN PRTMP_ADAPTER pAd,
IN UCHAR Wcid,
IN BOOLEAN bAddIntolerantCha)
{
BSS_2040_COEXIST_IE OldValue;
OldValue.word = pAd->CommonCfg.BSSCoexist2040.word;
if ((pAd->CommonCfg.TriggerEventTab.EventANo > 0) || (pAd->CommonCfg.TriggerEventTab.EventBCountDown > 0))
pAd->CommonCfg.BSSCoexist2040.field.BSS20WidthReq = 1;
// Need to check !!!!
// How STA will set Intolerant40 if implementation dependent. Now we don't set this bit first.!!!!!
// So Only check BSS20WidthReq change.
if (OldValue.field.BSS20WidthReq != pAd->CommonCfg.BSSCoexist2040.field.BSS20WidthReq)
{
Send2040CoexistAction(pAd, Wcid, bAddIntolerantCha);
}
}
#endif // CONFIG_STA_SUPPORT //
BOOLEAN ChannelSwitchSanityCheck(
IN PRTMP_ADAPTER pAd,
IN UCHAR Wcid,
IN UCHAR NewChannel,
IN UCHAR Secondary)
{
UCHAR i;
if (Wcid >= MAX_LEN_OF_MAC_TABLE)
return FALSE;
if ((NewChannel > 7) && (Secondary == 1))
return FALSE;
if ((NewChannel < 5) && (Secondary == 3))
return FALSE;
// 0. Check if new channel is in the channellist.
for (i = 0;i < pAd->ChannelListNum;i++)
{
if (pAd->ChannelList[i].Channel == NewChannel)
{
break;
}
}
if (i == pAd->ChannelListNum)
return FALSE;
return TRUE;
}
VOID ChannelSwitchAction(
IN PRTMP_ADAPTER pAd,
IN UCHAR Wcid,
IN UCHAR NewChannel,
IN UCHAR Secondary)
{
UCHAR BBPValue = 0;
ULONG MACValue;
DBGPRINT(RT_DEBUG_TRACE,("SPECTRUM - ChannelSwitchAction(NewChannel = %d , Secondary = %d) \n", NewChannel, Secondary));
if (ChannelSwitchSanityCheck(pAd, Wcid, NewChannel, Secondary) == FALSE)
return;
// 1. Switches to BW = 20.
if (Secondary == 0)
{
RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
BBPValue&= (~0x18);
RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
if (pAd->MACVersion == 0x28600100)
{
RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x16);
RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x08);
RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x11);
DBGPRINT(RT_DEBUG_TRACE, ("!!!rt2860C !!! \n" ));
}
pAd->CommonCfg.BBPCurrentBW = BW_20;
pAd->CommonCfg.Channel = NewChannel;
pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
AsicSwitchChannel(pAd, pAd->CommonCfg.Channel,FALSE);
AsicLockChannel(pAd, pAd->CommonCfg.Channel);
pAd->MacTab.Content[Wcid].HTPhyMode.field.BW = 0;
DBGPRINT(RT_DEBUG_TRACE, ("!!!20MHz !!! \n" ));
}
// 1. Switches to BW = 40 And Station supports BW = 40.
else if (((Secondary == 1) || (Secondary == 3)) && (pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth == 1))
{
pAd->CommonCfg.Channel = NewChannel;
if (Secondary == 1)
{
// Secondary above.
pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel + 2;
RTMP_IO_READ32(pAd, TX_BAND_CFG, &MACValue);
MACValue &= 0xfe;
RTMP_IO_WRITE32(pAd, TX_BAND_CFG, MACValue);
RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
BBPValue&= (~0x18);
BBPValue|= (0x10);
RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BBPValue);
BBPValue&= (~0x20);
RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BBPValue);
DBGPRINT(RT_DEBUG_TRACE, ("!!!40MHz Lower LINK UP !!! Control Channel at Below. Central = %d \n", pAd->CommonCfg.CentralChannel ));
}
else
{
// Secondary below.
pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel - 2;
RTMP_IO_READ32(pAd, TX_BAND_CFG, &MACValue);
MACValue &= 0xfe;
MACValue |= 0x1;
RTMP_IO_WRITE32(pAd, TX_BAND_CFG, MACValue);
RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
BBPValue&= (~0x18);
BBPValue|= (0x10);
RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BBPValue);
BBPValue&= (~0x20);
BBPValue|= (0x20);
RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BBPValue);
DBGPRINT(RT_DEBUG_TRACE, ("!!!40MHz Upper LINK UP !!! Control Channel at UpperCentral = %d \n", pAd->CommonCfg.CentralChannel ));
}
pAd->CommonCfg.BBPCurrentBW = BW_40;
AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
pAd->MacTab.Content[Wcid].HTPhyMode.field.BW = 1;
}
}
#endif // DOT11N_DRAFT3 //
#endif // DOT11_N_SUPPORT //
VOID PeerPublicAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem)
{
#ifdef DOT11N_DRAFT3
UCHAR Action = Elem->Msg[LENGTH_802_11+1];
#endif // DOT11N_DRAFT3 //
if (Elem->Wcid >= MAX_LEN_OF_MAC_TABLE)
return;
#ifdef DOT11N_DRAFT3
switch(Action)
{
case ACTION_BSS_2040_COEXIST: // Format defined in IEEE 7.4.7a.1 in 11n Draf3.03
{
//UCHAR BssCoexist;
BSS_2040_COEXIST_ELEMENT *pCoexistInfo;
BSS_2040_COEXIST_IE *pBssCoexistIe;
BSS_2040_INTOLERANT_CH_REPORT *pIntolerantReport = NULL;
if (Elem->MsgLen <= (LENGTH_802_11 + sizeof(BSS_2040_COEXIST_ELEMENT)) )
{
DBGPRINT(RT_DEBUG_ERROR, ("ACTION - 20/40 BSS Coexistence Management Frame length too short! len = %ld!\n", Elem->MsgLen));
break;
}
DBGPRINT(RT_DEBUG_TRACE, ("ACTION - 20/40 BSS Coexistence Management action----> \n"));
hex_dump("CoexistenceMgmtFrame", Elem->Msg, Elem->MsgLen);
pCoexistInfo = (BSS_2040_COEXIST_ELEMENT *) &Elem->Msg[LENGTH_802_11+2];
//hex_dump("CoexistInfo", (PUCHAR)pCoexistInfo, sizeof(BSS_2040_COEXIST_ELEMENT));
if (Elem->MsgLen >= (LENGTH_802_11 + sizeof(BSS_2040_COEXIST_ELEMENT) + sizeof(BSS_2040_INTOLERANT_CH_REPORT)))
{
pIntolerantReport = (BSS_2040_INTOLERANT_CH_REPORT *)((PUCHAR)pCoexistInfo + sizeof(BSS_2040_COEXIST_ELEMENT));
}
//hex_dump("IntolerantReport ", (PUCHAR)pIntolerantReport, sizeof(BSS_2040_INTOLERANT_CH_REPORT));
pBssCoexistIe = (BSS_2040_COEXIST_IE *)(&pCoexistInfo->BssCoexistIe);
#ifdef CONFIG_STA_SUPPORT
IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
{
if (INFRA_ON(pAd))
{
StaPublicAction(pAd, pCoexistInfo);
}
}
#endif // CONFIG_STA_SUPPORT //
}
break;
}
#endif // DOT11N_DRAFT3 //
}
@ -701,51 +394,6 @@ static VOID respond_ht_information_exchange_action(
MlmeFreeMemory(pAd, pOutBuffer);
}
#ifdef DOT11N_DRAFT3
VOID SendNotifyBWActionFrame(
IN PRTMP_ADAPTER pAd,
IN UCHAR Wcid,
IN UCHAR apidx)
{
PUCHAR pOutBuffer = NULL;
NDIS_STATUS NStatus;
FRAME_ACTION_HDR Frame;
ULONG FrameLen;
PUCHAR pAddr1;
NStatus = MlmeAllocateMemory(pAd, &pOutBuffer); //Get an unused nonpaged memory
if(NStatus != NDIS_STATUS_SUCCESS)
{
DBGPRINT(RT_DEBUG_ERROR,("ACT - SendNotifyBWAction() allocate memory failed \n"));
return;
}
if (Wcid == MCAST_WCID)
pAddr1 = &BROADCAST_ADDR[0];
else
pAddr1 = pAd->MacTab.Content[Wcid].Addr;
ActHeaderInit(pAd, &Frame.Hdr, pAddr1, pAd->ApCfg.MBSSID[apidx].Bssid, pAd->ApCfg.MBSSID[apidx].Bssid);
Frame.Category = CATEGORY_HT;
Frame.Action = NOTIFY_BW_ACTION;
MakeOutgoingFrame(pOutBuffer, &FrameLen,
sizeof(FRAME_ACTION_HDR), &Frame,
END_OF_ARGS);
*(pOutBuffer + FrameLen) = pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth;
FrameLen++;
MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
DBGPRINT(RT_DEBUG_TRACE,("ACT - SendNotifyBWAction(NotifyBW= %d)!\n", pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth));
}
#endif // DOT11N_DRAFT3 //
VOID PeerHTAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem)

View File

@ -1174,10 +1174,6 @@ VOID RTMPWriteTxWI(
// If CCK or OFDM, BW must be 20
pTxWI->BW = (pTransmit->field.MODE <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW);
#ifdef DOT11N_DRAFT3
if (pTxWI->BW)
pTxWI->BW = (pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth == 0) ? (BW_20) : (pTransmit->field.BW);
#endif // DOT11N_DRAFT3 //
pTxWI->MCS = pTransmit->field.MCS;
pTxWI->PHYMODE = pTransmit->field.MODE;
@ -1257,10 +1253,6 @@ VOID RTMPWriteTxWI_Data(
// If CCK or OFDM, BW must be 20
pTxWI->BW = (pTransmit->field.MODE <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW);
#ifdef DOT11_N_SUPPORT
#ifdef DOT11N_DRAFT3
if (pTxWI->BW)
pTxWI->BW = (pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth == 0) ? (BW_20) : (pTransmit->field.BW);
#endif // DOT11N_DRAFT3 //
pTxWI->AMPDU = ((pTxBlk->TxFrameType == TX_AMPDU_FRAME) ? TRUE : FALSE);
// John tune the performace with Intel Client in 20 MHz performance
@ -1371,11 +1363,6 @@ VOID RTMPWriteTxWI_Cache(
pTxWI->AMPDU = ((pMacEntry->NoBADataCountDown == 0) ? TRUE: FALSE);
pTxWI->MIMOps = 0;
#ifdef DOT11N_DRAFT3
if (pTxWI->BW)
pTxWI->BW = (pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth == 0) ? (BW_20) : (pTransmit->field.BW);
#endif // DOT11N_DRAFT3 //
if (pAd->CommonCfg.bMIMOPSEnable)
{
// MIMO Power Save Mode

View File

@ -786,76 +786,6 @@ BOOLEAN PeerBeaconAndProbeRspSanity(
}
#ifdef DOT11N_DRAFT3
/*
==========================================================================
Description:
MLME message sanity check for some IE addressed in 802.11n d3.03.
Return:
TRUE if all parameters are OK, FALSE otherwise
IRQL = DISPATCH_LEVEL
==========================================================================
*/
BOOLEAN PeerBeaconAndProbeRspSanity2(
IN PRTMP_ADAPTER pAd,
IN VOID *Msg,
IN ULONG MsgLen,
OUT UCHAR *RegClass)
{
CHAR *Ptr;
PFRAME_802_11 pFrame;
PEID_STRUCT pEid;
ULONG Length = 0;
pFrame = (PFRAME_802_11)Msg;
*RegClass = 0;
Ptr = pFrame->Octet;
Length += LENGTH_802_11;
// get timestamp from payload and advance the pointer
Ptr += TIMESTAMP_LEN;
Length += TIMESTAMP_LEN;
// get beacon interval from payload and advance the pointer
Ptr += 2;
Length += 2;
// get capability info from payload and advance the pointer
Ptr += 2;
Length += 2;
pEid = (PEID_STRUCT) Ptr;
// get variable fields from payload and advance the pointer
while ((Length + 2 + pEid->Len) <= MsgLen)
{
switch(pEid->Eid)
{
case IE_SUPP_REG_CLASS:
if(pEid->Len > 0)
{
*RegClass = *pEid->Octet;
}
else
{
DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAndProbeRspSanity - wrong IE_SSID (len=%d)\n",pEid->Len));
return FALSE;
}
break;
}
Length = Length + 2 + pEid->Len; // Eid[1] + Len[1]+ content[Len]
pEid = (PEID_STRUCT)((UCHAR*)pEid + 2 + pEid->Len);
}
return TRUE;
}
#endif // DOT11N_DRAFT3 //
/*
==========================================================================
Description:

View File

@ -639,21 +639,6 @@ VOID ScanNextChannel(
#endif // RT_BIG_ENDIAN //
}
FrameLen += Tmp;
#ifdef DOT11N_DRAFT3
if (pAd->CommonCfg.BACapability.field.b2040CoexistScanSup == 1)
{
ULONG Tmp;
HtLen = 1;
MakeOutgoingFrame(pOutBuffer + FrameLen, &Tmp,
1, &ExtHtCapIe,
1, &HtLen,
1, &pAd->CommonCfg.BSSCoexist2040.word,
END_OF_ARGS);
FrameLen += Tmp;
}
#endif // DOT11N_DRAFT3 //
}
#endif // DOT11_N_SUPPORT //

View File

@ -346,9 +346,6 @@ UCHAR ExtRateIe = IE_EXT_SUPP_RATES;
UCHAR HtCapIe = IE_HT_CAP;
UCHAR AddHtInfoIe = IE_ADD_HT;
UCHAR NewExtChanIe = IE_SECONDARY_CH_OFFSET;
#ifdef DOT11N_DRAFT3
UCHAR ExtHtCapIe = IE_EXT_CAPABILITY;
#endif // DOT11N_DRAFT3 //
#endif // DOT11_N_SUPPORT //
UCHAR ErpIe = IE_ERP;
UCHAR DsIe = IE_DS_PARM;
@ -1208,14 +1205,6 @@ SKIP_AUTO_SCAN_CONN:
}
#endif // DOT11_N_SUPPORT //
#ifdef DOT11_N_SUPPORT
#ifdef DOT11N_DRAFT3
if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SCAN_2040))
TriEventCounterMaintenance(pAd);
#endif // DOT11N_DRAFT3 //
#endif // DOT11_N_SUPPORT //
return;
}
@ -3792,111 +3781,6 @@ ULONG BssTableSetEntry(
}
#ifdef CONFIG_STA_SUPPORT
#ifdef DOT11_N_SUPPORT
#ifdef DOT11N_DRAFT3
VOID TriEventInit(
IN PRTMP_ADAPTER pAd)
{
UCHAR i;
for (i = 0;i < MAX_TRIGGER_EVENT;i++)
pAd->CommonCfg.TriggerEventTab.EventA[i].bValid = FALSE;
pAd->CommonCfg.TriggerEventTab.EventANo = 0;
pAd->CommonCfg.TriggerEventTab.EventBCountDown = 0;
}
ULONG TriEventTableSetEntry(
IN PRTMP_ADAPTER pAd,
OUT TRIGGER_EVENT_TAB *Tab,
IN PUCHAR pBssid,
IN HT_CAPABILITY_IE *pHtCapability,
IN UCHAR HtCapabilityLen,
IN UCHAR RegClass,
IN UCHAR ChannelNo)
{
// Event A
if (HtCapabilityLen == 0)
{
if (Tab->EventANo < MAX_TRIGGER_EVENT)
{
RTMPMoveMemory(Tab->EventA[Tab->EventANo].BSSID, pBssid, 6);
Tab->EventA[Tab->EventANo].bValid = TRUE;
Tab->EventA[Tab->EventANo].Channel = ChannelNo;
Tab->EventA[Tab->EventANo].CDCounter = pAd->CommonCfg.Dot11BssWidthChanTranDelay;
if (RegClass != 0)
{
// Beacon has Regulatory class IE. So use beacon's
Tab->EventA[Tab->EventANo].RegClass = RegClass;
}
else
{
// Use Station's Regulatory class instead.
if (pAd->StaActive.SupportedHtPhy.bHtEnable == TRUE)
{
if (pAd->CommonCfg.CentralChannel > pAd->CommonCfg.Channel)
{
Tab->EventA[Tab->EventANo].RegClass = 32;
}
else if (pAd->CommonCfg.CentralChannel < pAd->CommonCfg.Channel)
Tab->EventA[Tab->EventANo].RegClass = 33;
}
else
Tab->EventA[Tab->EventANo].RegClass = ??;
}
Tab->EventANo ++;
}
}
else if (pHtCapability->HtCapInfo.Intolerant40)
{
Tab->EventBCountDown = pAd->CommonCfg.Dot11BssWidthChanTranDelay;
}
}
/*
========================================================================
Routine Description:
Trigger Event table Maintainence called once every second.
Arguments:
// IRQL = DISPATCH_LEVEL
========================================================================
*/
VOID TriEventCounterMaintenance(
IN PRTMP_ADAPTER pAd)
{
UCHAR i;
BOOLEAN bNotify = FALSE;
for (i = 0;i < MAX_TRIGGER_EVENT;i++)
{
if (pAd->CommonCfg.TriggerEventTab.EventA[i].bValid && (pAd->CommonCfg.TriggerEventTab.EventA[i].CDCounter > 0))
{
pAd->CommonCfg.TriggerEventTab.EventA[i].CDCounter--;
if (pAd->CommonCfg.TriggerEventTab.EventA[i].CDCounter == 0)
{
pAd->CommonCfg.TriggerEventTab.EventA[i].bValid = FALSE;
pAd->CommonCfg.TriggerEventTab.EventANo --;
// Need to send 20/40 Coexistence Notify frame if has status change.
bNotify = TRUE;
}
}
}
if (pAd->CommonCfg.TriggerEventTab.EventBCountDown > 0)
{
pAd->CommonCfg.TriggerEventTab.EventBCountDown--;
if (pAd->CommonCfg.TriggerEventTab.EventBCountDown == 0)
bNotify = TRUE;
}
if (bNotify == TRUE)
Update2040CoexistFrameAndNotify(pAd, BSSID_WCID, TRUE);
}
#endif // DOT11N_DRAFT3 //
#endif // DOT11_N_SUPPORT //
// IRQL = DISPATCH_LEVEL
VOID BssTableSsidSort(
IN PRTMP_ADAPTER pAd,

View File

@ -3305,17 +3305,6 @@ VOID UserCfgInit(
pAd->bBroadComHT = FALSE;
pAd->CommonCfg.bRdg = FALSE;
#ifdef DOT11N_DRAFT3
pAd->CommonCfg.Dot11OBssScanPassiveDwell = dot11OBSSScanPassiveDwell; // Unit : TU. 5~1000
pAd->CommonCfg.Dot11OBssScanActiveDwell = dot11OBSSScanActiveDwell; // Unit : TU. 10~1000
pAd->CommonCfg.Dot11BssWidthTriggerScanInt = dot11BSSWidthTriggerScanInterval; // Unit : Second
pAd->CommonCfg.Dot11OBssScanPassiveTotalPerChannel = dot11OBSSScanPassiveTotalPerChannel; // Unit : TU. 200~10000
pAd->CommonCfg.Dot11OBssScanActiveTotalPerChannel = dot11OBSSScanActiveTotalPerChannel; // Unit : TU. 20~10000
pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor = dot11BSSWidthChannelTransactionDelayFactor;
pAd->CommonCfg.Dot11OBssScanActivityThre = dot11BSSScanActivityThreshold; // Unit : percentage
pAd->CommonCfg.Dot11BssWidthChanTranDelay = (pAd->CommonCfg.Dot11BssWidthTriggerScanInt * pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor);
#endif // DOT11N_DRAFT3 //
NdisZeroMemory(&pAd->CommonCfg.AddHTInfo, sizeof(pAd->CommonCfg.AddHTInfo));
pAd->CommonCfg.BACapability.field.MMPSmode = MMPS_ENABLE;
pAd->CommonCfg.BACapability.field.MpduDensity = 0;

View File

@ -1734,28 +1734,6 @@ VOID PeerSpectrumAction(
case SPEC_CHANNEL_SWITCH:
{
#ifdef DOT11N_DRAFT3
SEC_CHA_OFFSET_IE Secondary;
CHA_SWITCH_ANNOUNCE_IE ChannelSwitch;
// 802.11h only has Channel Switch Announcement IE.
RTMPMoveMemory(&ChannelSwitch, &Elem->Msg[LENGTH_802_11+4], sizeof (CHA_SWITCH_ANNOUNCE_IE));
// 802.11n D3.03 adds secondary channel offset element in the end.
if (Elem->MsgLen == (LENGTH_802_11 + 2 + sizeof (CHA_SWITCH_ANNOUNCE_IE) + sizeof (SEC_CHA_OFFSET_IE)))
{
RTMPMoveMemory(&Secondary, &Elem->Msg[LENGTH_802_11+9], sizeof (SEC_CHA_OFFSET_IE));
}
else
{
Secondary.SecondaryChannelOffset = 0;
}
if ((Elem->Msg[LENGTH_802_11+2] == IE_CHANNEL_SWITCH_ANNOUNCEMENT) && (Elem->Msg[LENGTH_802_11+3] == 3))
{
ChannelSwitchAction(pAd, Elem->Wcid, ChannelSwitch.NewChannel, Secondary.SecondaryChannelOffset);
}
#endif // DOT11N_DRAFT3 //
}
PeerChSwAnnAction(pAd, Elem);
break;

View File

@ -134,10 +134,6 @@
#define SCAN_CISCO_CHANNEL_LOAD 23 // Single channel passive scan for channel load collection
#define FAST_SCAN_ACTIVE 24 // scan with probe request, and wait beacon and probe response
#ifdef DOT11N_DRAFT3
#define SCAN_2040_BSS_COEXIST 26
#endif // DOT11N_DRAFT3 //
//#define BSS_TABLE_EMPTY(x) ((x).BssNr == 0)
#define MAC_ADDR_IS_GROUP(Addr) (((Addr[0]) & 0x01))
#define MAC_ADDR_HASH(Addr) (Addr[0] ^ Addr[1] ^ Addr[2] ^ Addr[3] ^ Addr[4] ^ Addr[5])

View File

@ -240,9 +240,6 @@ extern UCHAR ExtRateIe;
extern UCHAR HtCapIe;
extern UCHAR AddHtInfoIe;
extern UCHAR NewExtChanIe;
#ifdef DOT11N_DRAFT3
extern UCHAR ExtHtCapIe;
#endif // DOT11N_DRAFT3 //
#endif // DOT11_N_SUPPORT //
extern UCHAR ErpIe;
@ -1278,9 +1275,6 @@ typedef struct _BBP_R66_TUNING {
typedef struct _CHANNEL_TX_POWER {
USHORT RemainingTimeForUse; //unit: sec
UCHAR Channel;
#ifdef DOT11N_DRAFT3
BOOLEAN bEffectedChannel; // For BW 40 operating in 2.4GHz , the "effected channel" is the channel that is covered in 40Mhz.
#endif // DOT11N_DRAFT3 //
CHAR Power;
CHAR Power2;
UCHAR MaxTxPwr;
@ -1726,17 +1720,6 @@ typedef struct _MULTISSID_STRUCT {
UCHAR BcnBufIdx;
} MULTISSID_STRUCT, *PMULTISSID_STRUCT;
#ifdef DOT11N_DRAFT3
typedef enum _BSS2040COEXIST_FLAG{
BSS_2040_COEXIST_DISABLE = 0,
BSS_2040_COEXIST_TIMER_FIRED = 1,
BSS_2040_COEXIST_INFO_SYNC = 2,
BSS_2040_COEXIST_INFO_NOTIFY = 4,
}BSS2040COEXIST_FLAG;
#endif // DOT11N_DRAFT3 //
// configuration common to OPMODE_AP as well as OPMODE_STA
typedef struct _COMMON_CONFIG {
@ -1853,33 +1836,6 @@ typedef struct _COMMON_CONFIG {
//This IE is included in channel switch ammouncement frames 7.4.1.5, beacons, probe Rsp.
NEW_EXT_CHAN_IE NewExtChanOffset; //7.3.2.20A, 1 if extension channel is above the control channel, 3 if below, 0 if not present
#ifdef DOT11N_DRAFT3
UCHAR Bss2040CoexistFlag; // bit 0: bBssCoexistTimerRunning, bit 1: NeedSyncAddHtInfo.
RALINK_TIMER_STRUCT Bss2040CoexistTimer;
//This IE is used for 20/40 BSS Coexistence.
BSS_2040_COEXIST_IE BSS2040CoexistInfo;
// ====== 11n D3.0 =======================>
USHORT Dot11OBssScanPassiveDwell; // Unit : TU. 5~1000
USHORT Dot11OBssScanActiveDwell; // Unit : TU. 10~1000
USHORT Dot11BssWidthTriggerScanInt; // Unit : Second
USHORT Dot11OBssScanPassiveTotalPerChannel; // Unit : TU. 200~10000
USHORT Dot11OBssScanActiveTotalPerChannel; // Unit : TU. 20~10000
USHORT Dot11BssWidthChanTranDelayFactor;
USHORT Dot11OBssScanActivityThre; // Unit : percentage
ULONG Dot11BssWidthChanTranDelay; // multiple of (Dot11BssWidthTriggerScanInt * Dot11BssWidthChanTranDelayFactor)
ULONG CountDownCtr; // CountDown Counter from (Dot11BssWidthTriggerScanInt * Dot11BssWidthChanTranDelayFactor)
NDIS_SPIN_LOCK TriggerEventTabLock;
BSS_2040_COEXIST_IE LastBSSCoexist2040;
BSS_2040_COEXIST_IE BSSCoexist2040;
TRIGGER_EVENT_TAB TriggerEventTab;
UCHAR ChannelListIdx;
// <====== 11n D3.0 =======================
BOOLEAN bOverlapScanning;
#endif // DOT11N_DRAFT3 //
BOOLEAN bHTProtect;
BOOLEAN bMIMOPSEnable;
BOOLEAN bBADecline;
@ -2308,10 +2264,6 @@ typedef struct _MAC_TABLE_ENTRY {
UCHAR MmpsMode; // MIMO power save more.
HT_CAPABILITY_IE HTCapability;
#ifdef DOT11N_DRAFT3
UCHAR BSS2040CoexistenceMgmtSupport;
#endif // DOT11N_DRAFT3 //
#endif // DOT11_N_SUPPORT //
BOOLEAN bAutoTxRateSwitch;
@ -3629,46 +3581,6 @@ VOID SendPSMPAction(
IN UCHAR Wcid,
IN UCHAR Psmp);
#ifdef DOT11N_DRAFT3
VOID SendBSS2040CoexistMgmtAction(
IN PRTMP_ADAPTER pAd,
IN UCHAR Wcid,
IN UCHAR apidx,
IN UCHAR InfoReq);
VOID SendNotifyBWActionFrame(
IN PRTMP_ADAPTER pAd,
IN UCHAR Wcid,
IN UCHAR apidx);
BOOLEAN ChannelSwitchSanityCheck(
IN PRTMP_ADAPTER pAd,
IN UCHAR Wcid,
IN UCHAR NewChannel,
IN UCHAR Secondary);
VOID ChannelSwitchAction(
IN PRTMP_ADAPTER pAd,
IN UCHAR Wcid,
IN UCHAR Channel,
IN UCHAR Secondary);
ULONG BuildIntolerantChannelRep(
IN PRTMP_ADAPTER pAd,
IN PUCHAR pDest);
VOID Update2040CoexistFrameAndNotify(
IN PRTMP_ADAPTER pAd,
IN UCHAR Wcid,
IN BOOLEAN bAddIntolerantCha);
VOID Send2040CoexistAction(
IN PRTMP_ADAPTER pAd,
IN UCHAR Wcid,
IN BOOLEAN bAddIntolerantCha);
#endif // DOT11N_DRAFT3 //
VOID PeerRMAction(
IN PRTMP_ADAPTER pAd,
IN MLME_QUEUE_ELEM *Elem);
@ -4350,30 +4262,6 @@ VOID BATableInsertEntry(
IN UCHAR BAWinSize,
IN UCHAR OriginatorStatus,
IN BOOLEAN IsRecipient);
#ifdef DOT11N_DRAFT3
VOID Bss2040CoexistTimeOut(
IN PVOID SystemSpecific1,
IN PVOID FunctionContext,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3);
VOID TriEventInit(
IN PRTMP_ADAPTER pAd);
ULONG TriEventTableSetEntry(
IN PRTMP_ADAPTER pAd,
OUT TRIGGER_EVENT_TAB *Tab,
IN PUCHAR pBssid,
IN HT_CAPABILITY_IE *pHtCapability,
IN UCHAR HtCapabilityLen,
IN UCHAR RegClass,
IN UCHAR ChannelNo);
VOID TriEventCounterMaintenance(
IN PRTMP_ADAPTER pAd);
#endif // DOT11N_DRAFT3 //
#endif // DOT11_N_SUPPORT //
VOID BssTableSsidSort(
@ -5563,13 +5451,6 @@ CHAR ConvertToRssi(
IN CHAR Rssi,
IN UCHAR RssiNumber);
#ifdef DOT11N_DRAFT3
VOID BuildEffectedChannelList(
IN PRTMP_ADAPTER pAd);
#endif // DOT11N_DRAFT3 //
VOID APAsicEvaluateRxAnt(
IN PRTMP_ADAPTER pAd);

View File

@ -213,10 +213,6 @@
#define fOP_STATUS_WAKEUP_NOW 0x00008000
#define fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE 0x00020000
#ifdef DOT11N_DRAFT3
#define fOP_STATUS_SCAN_2040 0x00040000
#endif // DOT11N_DRAFT3 //
#define CCKSETPROTECT 0x1
#define OFDMSETPROTECT 0x2
#define MM20SETPROTECT 0x4
@ -241,10 +237,6 @@
#define fCLIENT_STATUS_MCSFEEDBACK_CAPABLE 0x00000400
#define fCLIENT_STATUS_APSD_CAPABLE 0x00000800 /* UAPSD STATION */
#ifdef DOT11N_DRAFT3
#define fCLIENT_STATUS_BSSCOEXIST_CAPABLE 0x00001000
#endif // DOT11N_DRAFT3 //
#define fCLIENT_STATUS_RALINK_CHIPSET 0x00100000
//
// STA configuration flags

View File

@ -178,13 +178,6 @@ VOID MlmeCntlMachinePerformAction(
pAd->bLedOnScanning = FALSE;
RTMPSetLED(pAd, pAd->LedStatus);
}
#ifdef DOT11N_DRAFT3
// AP sent a 2040Coexistence mgmt frame, then station perform a scan, and then send back the respone.
if (pAd->CommonCfg.BSSCoexist2040.field.InfoReq == 1)
{
Update2040CoexistFrameAndNotify(pAd, BSSID_WCID, TRUE);
}
#endif // DOT11N_DRAFT3 //
}
break;
@ -1781,16 +1774,6 @@ VOID LinkUp(
}
RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS);
#ifdef DOT11_N_SUPPORT
#ifdef DOT11N_DRAFT3
if ((pAd->CommonCfg.BACapability.field.b2040CoexistScanSup) && (pAd->CommonCfg.Channel <= 11))
{
OPSTATUS_SET_FLAG(pAd, fOP_STATUS_SCAN_2040);
BuildEffectedChannelList(pAd);
}
#endif // DOT11N_DRAFT3 //
#endif // DOT11_N_SUPPORT //
}
/*
@ -2048,18 +2031,6 @@ VOID LinkDown(
pAd->CommonCfg.IOTestParm.bCurrentAtheros = FALSE;
pAd->CommonCfg.IOTestParm.bNowAtherosBurstOn = FALSE;
#ifdef DOT11_N_SUPPORT
#ifdef DOT11N_DRAFT3
OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_SCAN_2040);
pAd->CommonCfg.BSSCoexist2040.word = 0;
TriEventInit(pAd);
for (i = 0; i < (pAd->ChannelListNum - 1); i++)
{
pAd->ChannelList[i].bEffectedChannel = FALSE;
}
#endif // DOT11N_DRAFT3 //
#endif // DOT11_N_SUPPORT //
RTMP_IO_WRITE32(pAd, MAX_LEN_CFG, 0x1fff);
RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS);

View File

@ -634,16 +634,7 @@ VOID PeerBeaconAtScanAction(
&CfParm, AtimWin, CapabilityInfo, SupRate, SupRateLen, ExtRate, ExtRateLen, &HtCapability,
&AddHtInfo, HtCapabilityLen, AddHtInfoLen, NewExtChannelOffset, Channel, Rssi, TimeStamp, CkipFlag,
&EdcaParm, &QosCapability, &QbssLoad, LenVIE, pVIE);
#ifdef DOT11_N_SUPPORT
#ifdef DOT11N_DRAFT3
if (pAd->ChannelList[pAd->CommonCfg.ChannelListIdx].bEffectedChannel == TRUE)
{
UCHAR RegClass;
PeerBeaconAndProbeRspSanity2(pAd, Elem->Msg, Elem->MsgLen, &RegClass);
TriEventTableSetEntry(pAd, &pAd->CommonCfg.TriggerEventTab, Bssid, &HtCapability, HtCapabilityLen, RegClass, Channel);
}
#endif // DOT11N_DRAFT3 //
#endif // DOT11_N_SUPPORT //
if (Idx != BSS_NOT_FOUND)
{
NdisMoveMemory(pAd->ScanTab.BssEntry[Idx].PTSF, &Elem->Msg[24], 4);
@ -1621,88 +1612,6 @@ VOID EnqueueProbeRequest(
}
#ifdef DOT11_N_SUPPORT
#ifdef DOT11N_DRAFT3
VOID BuildEffectedChannelList(
IN PRTMP_ADAPTER pAd)
{
UCHAR EChannel[11];
UCHAR i, j, k;
UCHAR UpperChannel = 0, LowerChannel = 0;
RTMPZeroMemory(EChannel, 11);
i = 0;
// Find upper channel and lower channel.
if (pAd->CommonCfg.CentralChannel < pAd->CommonCfg.Channel)
{
UpperChannel = pAd->CommonCfg.Channel;
LowerChannel = pAd->CommonCfg.CentralChannel;
}
else if (pAd->CommonCfg.CentralChannel > pAd->CommonCfg.Channel)
{
UpperChannel = pAd->CommonCfg.CentralChannel;
LowerChannel = pAd->CommonCfg.Channel;
}
else
{
return;
}
// Record channels that is below lower channel..
if (LowerChannel > 1)
{
EChannel[0] = LowerChannel - 1;
i = 1;
if (LowerChannel > 2)
{
EChannel[1] = LowerChannel - 2;
i = 2;
if (LowerChannel > 3)
{
EChannel[2] = LowerChannel - 3;
i = 3;
}
}
}
// Record channels that is between lower channel and upper channel.
for (k = LowerChannel;k < UpperChannel;k++)
{
EChannel[i] = k;
i++;
}
// Record channels that is above upper channel..
if (LowerChannel < 11)
{
EChannel[i] = UpperChannel + 1;
i++;
if (LowerChannel < 10)
{
EChannel[i] = LowerChannel + 2;
i++;
if (LowerChannel < 9)
{
EChannel[i] = LowerChannel + 3;
i++;
}
}
}
//
for (j = 0;j < i;j++)
{
for (k = 0;k < pAd->ChannelListNum;k++)
{
if (pAd->ChannelList[k].Channel == EChannel[j])
{
pAd->ChannelList[k].bEffectedChannel = TRUE;
DBGPRINT(RT_DEBUG_TRACE,(" EffectedChannel( =%d)\n", EChannel[j]));
break;
}
}
}
}
#endif // DOT11N_DRAFT3 //
#endif // DOT11_N_SUPPORT //
BOOLEAN ScanRunning(
IN PRTMP_ADAPTER pAd)
{