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:
parent
4ad3198c5b
commit
03ddd40f14
@ -159,9 +159,6 @@ USHORT APBuildAssociation(
|
|||||||
IN UCHAR *pRSNLen,
|
IN UCHAR *pRSNLen,
|
||||||
IN BOOLEAN bWmmCapable,
|
IN BOOLEAN bWmmCapable,
|
||||||
IN ULONG RalinkIe,
|
IN ULONG RalinkIe,
|
||||||
#ifdef DOT11N_DRAFT3
|
|
||||||
IN EXT_CAP_INFO_ELEMENT ExtCapInfo,
|
|
||||||
#endif // DOT11N_DRAFT3 //
|
|
||||||
IN HT_CAPABILITY_IE *pHtCapability,
|
IN HT_CAPABILITY_IE *pHtCapability,
|
||||||
IN UCHAR HtCapabilityLen,
|
IN UCHAR HtCapabilityLen,
|
||||||
OUT USHORT *pAid);
|
OUT USHORT *pAid);
|
||||||
@ -294,11 +291,6 @@ VOID SupportRate(
|
|||||||
BOOLEAN ApScanRunning(
|
BOOLEAN ApScanRunning(
|
||||||
IN PRTMP_ADAPTER pAd);
|
IN PRTMP_ADAPTER pAd);
|
||||||
|
|
||||||
#ifdef DOT11N_DRAFT3
|
|
||||||
VOID APOverlappingBSSScan(
|
|
||||||
IN RTMP_ADAPTER *pAd);
|
|
||||||
#endif // DOT11N_DRAFT3 //
|
|
||||||
|
|
||||||
// ap_wpa.c
|
// ap_wpa.c
|
||||||
|
|
||||||
VOID APWpaStateMachineInit(
|
VOID APWpaStateMachineInit(
|
||||||
@ -491,9 +483,6 @@ BOOLEAN PeerAssocReqCmmSanity(
|
|||||||
OUT UCHAR *pRSNLen,
|
OUT UCHAR *pRSNLen,
|
||||||
OUT BOOLEAN *pbWmmCapable,
|
OUT BOOLEAN *pbWmmCapable,
|
||||||
OUT ULONG *pRalinkIe,
|
OUT ULONG *pRalinkIe,
|
||||||
#ifdef DOT11N_DRAFT3
|
|
||||||
OUT EXT_CAP_INFO_ELEMENT *pExtCapInfo,
|
|
||||||
#endif // DOT11N_DRAFT3 //
|
|
||||||
OUT UCHAR *pHtCapabilityLen,
|
OUT UCHAR *pHtCapabilityLen,
|
||||||
OUT HT_CAPABILITY_IE *pHtCapability);
|
OUT HT_CAPABILITY_IE *pHtCapability);
|
||||||
|
|
||||||
|
@ -308,321 +308,14 @@ VOID PeerBAAction(
|
|||||||
break;
|
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 //
|
#endif // DOT11_N_SUPPORT //
|
||||||
|
|
||||||
VOID PeerPublicAction(
|
VOID PeerPublicAction(
|
||||||
IN PRTMP_ADAPTER pAd,
|
IN PRTMP_ADAPTER pAd,
|
||||||
IN MLME_QUEUE_ELEM *Elem)
|
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)
|
if (Elem->Wcid >= MAX_LEN_OF_MAC_TABLE)
|
||||||
return;
|
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);
|
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(
|
VOID PeerHTAction(
|
||||||
IN PRTMP_ADAPTER pAd,
|
IN PRTMP_ADAPTER pAd,
|
||||||
IN MLME_QUEUE_ELEM *Elem)
|
IN MLME_QUEUE_ELEM *Elem)
|
||||||
|
@ -1174,10 +1174,6 @@ VOID RTMPWriteTxWI(
|
|||||||
|
|
||||||
// If CCK or OFDM, BW must be 20
|
// If CCK or OFDM, BW must be 20
|
||||||
pTxWI->BW = (pTransmit->field.MODE <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW);
|
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->MCS = pTransmit->field.MCS;
|
||||||
pTxWI->PHYMODE = pTransmit->field.MODE;
|
pTxWI->PHYMODE = pTransmit->field.MODE;
|
||||||
@ -1257,10 +1253,6 @@ VOID RTMPWriteTxWI_Data(
|
|||||||
// If CCK or OFDM, BW must be 20
|
// If CCK or OFDM, BW must be 20
|
||||||
pTxWI->BW = (pTransmit->field.MODE <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW);
|
pTxWI->BW = (pTransmit->field.MODE <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW);
|
||||||
#ifdef DOT11_N_SUPPORT
|
#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);
|
pTxWI->AMPDU = ((pTxBlk->TxFrameType == TX_AMPDU_FRAME) ? TRUE : FALSE);
|
||||||
|
|
||||||
// John tune the performace with Intel Client in 20 MHz performance
|
// 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->AMPDU = ((pMacEntry->NoBADataCountDown == 0) ? TRUE: FALSE);
|
||||||
pTxWI->MIMOps = 0;
|
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)
|
if (pAd->CommonCfg.bMIMOPSEnable)
|
||||||
{
|
{
|
||||||
// MIMO Power Save Mode
|
// MIMO Power Save Mode
|
||||||
|
@ -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:
|
Description:
|
||||||
|
@ -639,21 +639,6 @@ VOID ScanNextChannel(
|
|||||||
#endif // RT_BIG_ENDIAN //
|
#endif // RT_BIG_ENDIAN //
|
||||||
}
|
}
|
||||||
FrameLen += Tmp;
|
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 //
|
#endif // DOT11_N_SUPPORT //
|
||||||
|
|
||||||
|
@ -346,9 +346,6 @@ UCHAR ExtRateIe = IE_EXT_SUPP_RATES;
|
|||||||
UCHAR HtCapIe = IE_HT_CAP;
|
UCHAR HtCapIe = IE_HT_CAP;
|
||||||
UCHAR AddHtInfoIe = IE_ADD_HT;
|
UCHAR AddHtInfoIe = IE_ADD_HT;
|
||||||
UCHAR NewExtChanIe = IE_SECONDARY_CH_OFFSET;
|
UCHAR NewExtChanIe = IE_SECONDARY_CH_OFFSET;
|
||||||
#ifdef DOT11N_DRAFT3
|
|
||||||
UCHAR ExtHtCapIe = IE_EXT_CAPABILITY;
|
|
||||||
#endif // DOT11N_DRAFT3 //
|
|
||||||
#endif // DOT11_N_SUPPORT //
|
#endif // DOT11_N_SUPPORT //
|
||||||
UCHAR ErpIe = IE_ERP;
|
UCHAR ErpIe = IE_ERP;
|
||||||
UCHAR DsIe = IE_DS_PARM;
|
UCHAR DsIe = IE_DS_PARM;
|
||||||
@ -1208,14 +1205,6 @@ SKIP_AUTO_SCAN_CONN:
|
|||||||
}
|
}
|
||||||
#endif // DOT11_N_SUPPORT //
|
#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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3792,111 +3781,6 @@ ULONG BssTableSetEntry(
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_STA_SUPPORT
|
#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
|
// IRQL = DISPATCH_LEVEL
|
||||||
VOID BssTableSsidSort(
|
VOID BssTableSsidSort(
|
||||||
IN PRTMP_ADAPTER pAd,
|
IN PRTMP_ADAPTER pAd,
|
||||||
|
@ -3305,17 +3305,6 @@ VOID UserCfgInit(
|
|||||||
pAd->bBroadComHT = FALSE;
|
pAd->bBroadComHT = FALSE;
|
||||||
pAd->CommonCfg.bRdg = 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));
|
NdisZeroMemory(&pAd->CommonCfg.AddHTInfo, sizeof(pAd->CommonCfg.AddHTInfo));
|
||||||
pAd->CommonCfg.BACapability.field.MMPSmode = MMPS_ENABLE;
|
pAd->CommonCfg.BACapability.field.MMPSmode = MMPS_ENABLE;
|
||||||
pAd->CommonCfg.BACapability.field.MpduDensity = 0;
|
pAd->CommonCfg.BACapability.field.MpduDensity = 0;
|
||||||
|
@ -1734,28 +1734,6 @@ VOID PeerSpectrumAction(
|
|||||||
|
|
||||||
case SPEC_CHANNEL_SWITCH:
|
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);
|
PeerChSwAnnAction(pAd, Elem);
|
||||||
break;
|
break;
|
||||||
|
@ -134,10 +134,6 @@
|
|||||||
#define SCAN_CISCO_CHANNEL_LOAD 23 // Single channel passive scan for channel load collection
|
#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
|
#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 BSS_TABLE_EMPTY(x) ((x).BssNr == 0)
|
||||||
#define MAC_ADDR_IS_GROUP(Addr) (((Addr[0]) & 0x01))
|
#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])
|
#define MAC_ADDR_HASH(Addr) (Addr[0] ^ Addr[1] ^ Addr[2] ^ Addr[3] ^ Addr[4] ^ Addr[5])
|
||||||
|
@ -240,9 +240,6 @@ extern UCHAR ExtRateIe;
|
|||||||
extern UCHAR HtCapIe;
|
extern UCHAR HtCapIe;
|
||||||
extern UCHAR AddHtInfoIe;
|
extern UCHAR AddHtInfoIe;
|
||||||
extern UCHAR NewExtChanIe;
|
extern UCHAR NewExtChanIe;
|
||||||
#ifdef DOT11N_DRAFT3
|
|
||||||
extern UCHAR ExtHtCapIe;
|
|
||||||
#endif // DOT11N_DRAFT3 //
|
|
||||||
#endif // DOT11_N_SUPPORT //
|
#endif // DOT11_N_SUPPORT //
|
||||||
|
|
||||||
extern UCHAR ErpIe;
|
extern UCHAR ErpIe;
|
||||||
@ -1278,9 +1275,6 @@ typedef struct _BBP_R66_TUNING {
|
|||||||
typedef struct _CHANNEL_TX_POWER {
|
typedef struct _CHANNEL_TX_POWER {
|
||||||
USHORT RemainingTimeForUse; //unit: sec
|
USHORT RemainingTimeForUse; //unit: sec
|
||||||
UCHAR Channel;
|
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 Power;
|
||||||
CHAR Power2;
|
CHAR Power2;
|
||||||
UCHAR MaxTxPwr;
|
UCHAR MaxTxPwr;
|
||||||
@ -1726,17 +1720,6 @@ typedef struct _MULTISSID_STRUCT {
|
|||||||
UCHAR BcnBufIdx;
|
UCHAR BcnBufIdx;
|
||||||
} MULTISSID_STRUCT, *PMULTISSID_STRUCT;
|
} 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
|
// configuration common to OPMODE_AP as well as OPMODE_STA
|
||||||
typedef struct _COMMON_CONFIG {
|
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.
|
//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
|
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 bHTProtect;
|
||||||
BOOLEAN bMIMOPSEnable;
|
BOOLEAN bMIMOPSEnable;
|
||||||
BOOLEAN bBADecline;
|
BOOLEAN bBADecline;
|
||||||
@ -2308,10 +2264,6 @@ typedef struct _MAC_TABLE_ENTRY {
|
|||||||
UCHAR MmpsMode; // MIMO power save more.
|
UCHAR MmpsMode; // MIMO power save more.
|
||||||
|
|
||||||
HT_CAPABILITY_IE HTCapability;
|
HT_CAPABILITY_IE HTCapability;
|
||||||
|
|
||||||
#ifdef DOT11N_DRAFT3
|
|
||||||
UCHAR BSS2040CoexistenceMgmtSupport;
|
|
||||||
#endif // DOT11N_DRAFT3 //
|
|
||||||
#endif // DOT11_N_SUPPORT //
|
#endif // DOT11_N_SUPPORT //
|
||||||
|
|
||||||
BOOLEAN bAutoTxRateSwitch;
|
BOOLEAN bAutoTxRateSwitch;
|
||||||
@ -3629,46 +3581,6 @@ VOID SendPSMPAction(
|
|||||||
IN UCHAR Wcid,
|
IN UCHAR Wcid,
|
||||||
IN UCHAR Psmp);
|
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(
|
VOID PeerRMAction(
|
||||||
IN PRTMP_ADAPTER pAd,
|
IN PRTMP_ADAPTER pAd,
|
||||||
IN MLME_QUEUE_ELEM *Elem);
|
IN MLME_QUEUE_ELEM *Elem);
|
||||||
@ -4350,30 +4262,6 @@ VOID BATableInsertEntry(
|
|||||||
IN UCHAR BAWinSize,
|
IN UCHAR BAWinSize,
|
||||||
IN UCHAR OriginatorStatus,
|
IN UCHAR OriginatorStatus,
|
||||||
IN BOOLEAN IsRecipient);
|
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 //
|
#endif // DOT11_N_SUPPORT //
|
||||||
|
|
||||||
VOID BssTableSsidSort(
|
VOID BssTableSsidSort(
|
||||||
@ -5563,13 +5451,6 @@ CHAR ConvertToRssi(
|
|||||||
IN CHAR Rssi,
|
IN CHAR Rssi,
|
||||||
IN UCHAR RssiNumber);
|
IN UCHAR RssiNumber);
|
||||||
|
|
||||||
|
|
||||||
#ifdef DOT11N_DRAFT3
|
|
||||||
VOID BuildEffectedChannelList(
|
|
||||||
IN PRTMP_ADAPTER pAd);
|
|
||||||
#endif // DOT11N_DRAFT3 //
|
|
||||||
|
|
||||||
|
|
||||||
VOID APAsicEvaluateRxAnt(
|
VOID APAsicEvaluateRxAnt(
|
||||||
IN PRTMP_ADAPTER pAd);
|
IN PRTMP_ADAPTER pAd);
|
||||||
|
|
||||||
|
@ -213,10 +213,6 @@
|
|||||||
#define fOP_STATUS_WAKEUP_NOW 0x00008000
|
#define fOP_STATUS_WAKEUP_NOW 0x00008000
|
||||||
#define fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE 0x00020000
|
#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 CCKSETPROTECT 0x1
|
||||||
#define OFDMSETPROTECT 0x2
|
#define OFDMSETPROTECT 0x2
|
||||||
#define MM20SETPROTECT 0x4
|
#define MM20SETPROTECT 0x4
|
||||||
@ -241,10 +237,6 @@
|
|||||||
#define fCLIENT_STATUS_MCSFEEDBACK_CAPABLE 0x00000400
|
#define fCLIENT_STATUS_MCSFEEDBACK_CAPABLE 0x00000400
|
||||||
#define fCLIENT_STATUS_APSD_CAPABLE 0x00000800 /* UAPSD STATION */
|
#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
|
#define fCLIENT_STATUS_RALINK_CHIPSET 0x00100000
|
||||||
//
|
//
|
||||||
// STA configuration flags
|
// STA configuration flags
|
||||||
|
@ -178,13 +178,6 @@ VOID MlmeCntlMachinePerformAction(
|
|||||||
pAd->bLedOnScanning = FALSE;
|
pAd->bLedOnScanning = FALSE;
|
||||||
RTMPSetLED(pAd, pAd->LedStatus);
|
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;
|
break;
|
||||||
|
|
||||||
@ -1781,16 +1774,6 @@ VOID LinkUp(
|
|||||||
}
|
}
|
||||||
|
|
||||||
RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS);
|
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.bCurrentAtheros = FALSE;
|
||||||
pAd->CommonCfg.IOTestParm.bNowAtherosBurstOn = 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_IO_WRITE32(pAd, MAX_LEN_CFG, 0x1fff);
|
||||||
RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS);
|
RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS);
|
||||||
|
|
||||||
|
@ -634,16 +634,7 @@ VOID PeerBeaconAtScanAction(
|
|||||||
&CfParm, AtimWin, CapabilityInfo, SupRate, SupRateLen, ExtRate, ExtRateLen, &HtCapability,
|
&CfParm, AtimWin, CapabilityInfo, SupRate, SupRateLen, ExtRate, ExtRateLen, &HtCapability,
|
||||||
&AddHtInfo, HtCapabilityLen, AddHtInfoLen, NewExtChannelOffset, Channel, Rssi, TimeStamp, CkipFlag,
|
&AddHtInfo, HtCapabilityLen, AddHtInfoLen, NewExtChannelOffset, Channel, Rssi, TimeStamp, CkipFlag,
|
||||||
&EdcaParm, &QosCapability, &QbssLoad, LenVIE, pVIE);
|
&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)
|
if (Idx != BSS_NOT_FOUND)
|
||||||
{
|
{
|
||||||
NdisMoveMemory(pAd->ScanTab.BssEntry[Idx].PTSF, &Elem->Msg[24], 4);
|
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(
|
BOOLEAN ScanRunning(
|
||||||
IN PRTMP_ADAPTER pAd)
|
IN PRTMP_ADAPTER pAd)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user