• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/rt2860/sta/

Lines Matching refs:pAd

53 void SyncStateMachineInit(struct rt_rtmp_adapter *pAd,
99 RTMPInitTimer(pAd, &pAd->MlmeAux.BeaconTimer,
100 GET_TIMER_FUNCTION(BeaconTimeout), pAd, FALSE);
101 RTMPInitTimer(pAd, &pAd->MlmeAux.ScanTimer,
102 GET_TIMER_FUNCTION(ScanTimeout), pAd, FALSE);
118 struct rt_rtmp_adapter *pAd = (struct rt_rtmp_adapter *)FunctionContext;
124 if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS))
127 if ((pAd->CommonCfg.BBPCurrentBW == BW_40)
130 AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
131 AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
132 RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
135 RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
138 pAd->CommonCfg.CentralChannel, pAd->ScanTab.BssNr));
141 MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_BEACON_TIMEOUT, 0, NULL);
142 RTMP_MLME_HANDLER(pAd);
158 struct rt_rtmp_adapter *pAd = (struct rt_rtmp_adapter *)FunctionContext;
162 if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS))
165 if (MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_SCAN_TIMEOUT, 0, NULL)) {
166 RTMP_MLME_HANDLER(pAd);
169 pAd->MlmeAux.Channel = 0;
170 ScanNextChannel(pAd);
171 if (pAd->CommonCfg.bWirelessEvent) {
172 RTMPSendWirelessEvent(pAd,
174 pAd->MacTab.Content[BSSID_WCID].
186 void MlmeScanReqAction(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
198 if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_START_UP)) {
204 pAd->StaCfg.ScanCnt++;
207 if ((OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_PCIE_DEVICE)) &&
208 (IDLE_ON(pAd)) &&
209 (pAd->StaCfg.bRadio == TRUE) &&
210 (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF))) {
211 if (pAd->StaCfg.PSControl.field.EnableNewPS == FALSE) {
212 AsicSendCommandToMcu(pAd, 0x31, PowerWakeCID, 0x00,
214 AsicCheckCommanOk(pAd, PowerWakeCID);
215 RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF);
219 RT28xxPciAsicRadioOn(pAd, GUI_IDLE_POWER_SAVE);
225 if (MlmeScanReqSanity(pAd,
233 RTMPSuspendMsduTransmission(pAd);
240 if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED)
241 && (INFRA_ON(pAd))) {
242 NStatus = MlmeAllocateMemory(pAd, (void *)& pOutBuffer);
245 MgtMacHeaderInit(pAd, pHdr80211,
247 pAd->CommonCfg.Bssid,
248 pAd->CommonCfg.Bssid);
254 MiniportMMRequest(pAd, 0, pOutBuffer,
258 MlmeFreeMemory(pAd, pOutBuffer);
264 pAd->StaCfg.LastScanTime = Now;
266 RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer, &TimerCancelled);
267 RTMPCancelTimer(&pAd->MlmeAux.ScanTimer, &TimerCancelled);
270 pAd->MlmeAux.BssType = BssType;
271 pAd->MlmeAux.ScanType = ScanType;
272 pAd->MlmeAux.SsidLen = SsidLen;
273 NdisZeroMemory(pAd->MlmeAux.Ssid, MAX_LEN_OF_SSID);
274 NdisMoveMemory(pAd->MlmeAux.Ssid, Ssid, SsidLen);
277 pAd->MlmeAux.Channel = FirstChannel(pAd);
280 RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
282 RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
284 ScanNextChannel(pAd);
287 pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
289 MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_SCAN_CONF, 2,
300 void MlmeJoinReqAction(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
321 if ((OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_PCIE_DEVICE)) &&
322 (IDLE_ON(pAd)) &&
323 (pAd->StaCfg.bRadio == TRUE) &&
324 (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF))) {
325 RT28xxPciAsicRadioOn(pAd, GUI_IDLE_POWER_SAVE);
330 RTMPCancelTimer(&pAd->MlmeAux.ScanTimer, &TimerCancelled);
331 RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer, &TimerCancelled);
333 pBss = &pAd->MlmeAux.SsidBssTab.BssEntry[pInfo->BssIdx];
336 COPY_MAC_ADDR(pAd->MlmeAux.Bssid, pBss->Bssid);
340 RTMPZeroMemory(pAd->MlmeAux.Ssid, MAX_LEN_OF_SSID);
341 NdisMoveMemory(pAd->MlmeAux.Ssid, pBss->Ssid, pBss->SsidLen);
342 pAd->MlmeAux.SsidLen = pBss->SsidLen;
345 pAd->MlmeAux.BssType = pBss->BssType;
346 pAd->MlmeAux.Channel = pBss->Channel;
347 pAd->MlmeAux.CentralChannel = pBss->CentralChannel;
350 RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
352 RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
357 AsicSwitchChannel(pAd, pAd->MlmeAux.Channel, FALSE);
358 AsicLockChannel(pAd, pAd->MlmeAux.Channel);
359 RTMPSetTimer(&pAd->MlmeAux.BeaconTimer, JOIN_TIMEOUT);
362 if (((pAd->CommonCfg.bIEEE80211H == 1) &&
363 (pAd->MlmeAux.Channel > 14) &&
364 RadarChannelCheck(pAd, pAd->MlmeAux.Channel))
375 NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);
377 if (pAd->MlmeAux.Channel <= 14) {
378 pSupRate = pAd->CommonCfg.SupRate;
379 SupRateLen = pAd->CommonCfg.SupRateLen;
380 pExtRate = pAd->CommonCfg.ExtRate;
381 ExtRateLen = pAd->CommonCfg.ExtRateLen;
391 if (pAd->MlmeAux.BssType == BSS_INFRA)
392 MgtMacHeaderInit(pAd, &Hdr80211,
394 pAd->MlmeAux.Bssid,
395 pAd->MlmeAux.Bssid);
397 MgtMacHeaderInit(pAd, &Hdr80211,
405 1, &pAd->MlmeAux.SsidLen,
406 pAd->MlmeAux.SsidLen,
407 pAd->MlmeAux.Ssid, 1, &SupRateIe, 1,
421 MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
422 MlmeFreeMemory(pAd, pOutBuffer);
431 pAd->Mlme.SyncMachine.CurrState = JOIN_WAIT_BEACON;
440 void MlmeStartReqAction(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
459 (pAd, Elem->Msg, Elem->MsgLen, (char *)Ssid, &SsidLen)) {
461 RTMPCancelTimer(&pAd->MlmeAux.ScanTimer, &TimerCancelled);
462 RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer, &TimerCancelled);
469 pAd->MlmeAux.BssType = BSS_ADHOC;
470 NdisMoveMemory(pAd->MlmeAux.Ssid, Ssid, SsidLen);
471 pAd->MlmeAux.SsidLen = SsidLen;
474 MacAddrRandomBssid(pAd, pAd->MlmeAux.Bssid);
479 (pAd->StaCfg.WepStatus == Ndis802_11Encryption1Enabled)
480 || (pAd->StaCfg.WepStatus == Ndis802_11Encryption2Enabled)
481 || (pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled);
482 pAd->MlmeAux.CapabilityInfo =
484 (pAd->CommonCfg.TxPreamble ==
486 pAd->MlmeAux.BeaconPeriod = pAd->CommonCfg.BeaconPeriod;
487 pAd->MlmeAux.AtimWin = pAd->StaCfg.AtimWin;
488 pAd->MlmeAux.Channel = pAd->CommonCfg.Channel;
490 pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
491 pAd->MlmeAux.CentralChannel = pAd->CommonCfg.CentralChannel;
493 pAd->MlmeAux.SupRateLen = pAd->CommonCfg.SupRateLen;
494 NdisMoveMemory(pAd->MlmeAux.SupRate, pAd->CommonCfg.SupRate,
496 RTMPCheckRates(pAd, pAd->MlmeAux.SupRate,
497 &pAd->MlmeAux.SupRateLen);
498 pAd->MlmeAux.ExtRateLen = pAd->CommonCfg.ExtRateLen;
499 NdisMoveMemory(pAd->MlmeAux.ExtRate, pAd->CommonCfg.ExtRate,
501 RTMPCheckRates(pAd, pAd->MlmeAux.ExtRate,
502 &pAd->MlmeAux.ExtRateLen);
504 if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) {
505 RTMPUpdateHTIE(&pAd->CommonCfg.DesiredHtPhy,
506 &pAd->StaCfg.DesiredHtPhyInfo.MCSSet[0],
507 &pAd->MlmeAux.HtCapability,
508 &pAd->MlmeAux.AddHtInfo);
509 pAd->MlmeAux.HtCapabilityLen = sizeof(struct rt_ht_capability_ie);
510 /* Not turn pAd->StaActive.SupportedHtPhy.bHtEnable = TRUE here. */
512 ("SYNC -pAd->StaActive.SupportedHtPhy.bHtEnable = TRUE\n"));
514 pAd->MlmeAux.HtCapabilityLen = 0;
515 pAd->StaActive.SupportedPhyInfo.bHtEnable = FALSE;
516 NdisZeroMemory(&pAd->StaActive.SupportedPhyInfo.
520 NdisZeroMemory(&pAd->MlmeAux.APEdcaParm, sizeof(struct rt_edca_parm));
521 NdisZeroMemory(&pAd->MlmeAux.APQbssLoad,
523 NdisZeroMemory(&pAd->MlmeAux.APQosCapability,
526 AsicSwitchChannel(pAd, pAd->MlmeAux.Channel, FALSE);
527 AsicLockChannel(pAd, pAd->MlmeAux.Channel);
531 pAd->MlmeAux.Channel, pAd->MlmeAux.SupRateLen,
532 pAd->MlmeAux.ExtRateLen));
534 pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
536 MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_START_CONF, 2,
540 pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
542 MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_START_CONF, 2,
553 void PeerBeaconAtScanAction(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
590 if (PeerBeaconAndProbeRspSanity(pAd,
630 Idx = BssTableSearch(&pAd->ScanTab, Bssid, Channel);
632 Rssi = pAd->ScanTab.BssEntry[Idx].Rssi;
635 RTMPMaxRssi(pAd, ConvertToRssi(pAd, Elem->Rssi0, RSSI_0),
636 ConvertToRssi(pAd, Elem->Rssi1, RSSI_1),
637 ConvertToRssi(pAd, Elem->Rssi2, RSSI_2));
643 BssTableSetEntry(pAd, &pAd->ScanTab, Bssid, (char *)Ssid,
653 NdisMoveMemory(pAd->ScanTab.BssEntry[Idx].PTSF,
655 NdisMoveMemory(&pAd->ScanTab.BssEntry[Idx].TTSF[0],
657 NdisMoveMemory(&pAd->ScanTab.BssEntry[Idx].TTSF[4],
671 void PeerBeaconAtJoinAction(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
709 if (PeerBeaconAndProbeRspSanity(pAd,
748 && (pAd->CommonCfg.PhyMode == PHY_11G)
758 if (MAC_ADDR_EQUAL(pAd->MlmeAux.Bssid, Bssid)) {
762 RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer,
766 pAd->StaCfg.RssiSample.LastRssi0 =
767 ConvertToRssi(pAd, Elem->Rssi0, RSSI_0);
768 pAd->StaCfg.RssiSample.LastRssi1 =
769 ConvertToRssi(pAd, Elem->Rssi1, RSSI_1);
770 pAd->StaCfg.RssiSample.LastRssi2 =
771 ConvertToRssi(pAd, Elem->Rssi2, RSSI_2);
772 pAd->StaCfg.RssiSample.AvgRssi0 =
773 pAd->StaCfg.RssiSample.LastRssi0;
774 pAd->StaCfg.RssiSample.AvgRssi0X8 =
775 pAd->StaCfg.RssiSample.AvgRssi0 << 3;
776 pAd->StaCfg.RssiSample.AvgRssi1 =
777 pAd->StaCfg.RssiSample.LastRssi1;
778 pAd->StaCfg.RssiSample.AvgRssi1X8 =
779 pAd->StaCfg.RssiSample.AvgRssi1 << 3;
780 pAd->StaCfg.RssiSample.AvgRssi2 =
781 pAd->StaCfg.RssiSample.LastRssi2;
782 pAd->StaCfg.RssiSample.AvgRssi2X8 =
783 pAd->StaCfg.RssiSample.AvgRssi2 << 3;
789 if (pAd->MlmeAux.SsidLen == 0) {
790 NdisMoveMemory(pAd->MlmeAux.Ssid, Ssid,
792 pAd->MlmeAux.SsidLen = SsidLen;
795 BssSsidTableSearch(&pAd->ScanTab, Bssid,
796 pAd->MlmeAux.Ssid,
797 pAd->MlmeAux.SsidLen,
803 RTMPMaxRssi(pAd,
804 ConvertToRssi(pAd,
808 ConvertToRssi(pAd,
812 ConvertToRssi(pAd,
817 BssTableSetEntry(pAd, &pAd->ScanTab,
841 NdisMoveMemory(pAd->ScanTab.
846 NdisMoveMemory(&pAd->ScanTab.
851 NdisMoveMemory(&pAd->ScanTab.
857 pAd->ScanTab.BssEntry[Idx].
865 pAd->ScanTab.BssEntry[Idx].
869 NdisMoveMemory(pAd->MlmeAux.Bssid, Bssid, MAC_ADDR_LEN);
870 pAd->MlmeAux.CapabilityInfo =
872 pAd->MlmeAux.BssType = BssType;
873 pAd->MlmeAux.BeaconPeriod = BeaconPeriod;
874 pAd->MlmeAux.Channel = Channel;
875 pAd->MlmeAux.AtimWin = AtimWin;
876 pAd->MlmeAux.CfpPeriod = Cf.CfpPeriod;
877 pAd->MlmeAux.CfpMaxDuration = Cf.CfpMaxDuration;
878 pAd->MlmeAux.APRalinkIe = RalinkIe;
882 pAd->MlmeAux.SupRateLen = SupRateLen;
883 NdisMoveMemory(pAd->MlmeAux.SupRate, SupRate,
885 RTMPCheckRates(pAd, pAd->MlmeAux.SupRate,
886 &pAd->MlmeAux.SupRateLen);
887 pAd->MlmeAux.ExtRateLen = ExtRateLen;
888 NdisMoveMemory(pAd->MlmeAux.ExtRate, ExtRate,
890 RTMPCheckRates(pAd, pAd->MlmeAux.ExtRate,
891 &pAd->MlmeAux.ExtRateLen);
893 NdisZeroMemory(pAd->StaActive.SupportedPhyInfo.MCSSet,
896 if (((pAd->StaCfg.WepStatus != Ndis802_11WEPEnabled)
897 && (pAd->StaCfg.WepStatus !=
899 || (pAd->CommonCfg.HT_DisallowTKIP == FALSE)) {
903 pAd->MlmeAux.NewExtChannelOffset = NewExtChannelOffset;
904 pAd->MlmeAux.HtCapabilityLen = HtCapabilityLen;
906 RTMPZeroMemory(&pAd->MlmeAux.HtCapability,
910 && ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED)
912 RTMPMoveMemory(&pAd->MlmeAux.AddHtInfo,
916 NdisMoveMemory(pAd->StaActive.SupportedPhyInfo.
918 pAd->MlmeAux.NewExtChannelOffset =
920 pAd->MlmeAux.HtCapabilityLen = SIZE_HT_CAP_IE;
921 pAd->StaActive.SupportedPhyInfo.bHtEnable =
924 pAd->StaActive.SupportedPhyInfo.
926 RTMPCheckHt(pAd, BSSID_WCID, &HtCapability,
931 pAd->StaActive.SupportedHtPhy.
933 pAd->StaActive.SupportedHtPhy.
956 if (pAd->MlmeAux.CentralChannel !=
962 pAd->MlmeAux.
976 pAd->MlmeAux.CentralChannel =
977 pAd->MlmeAux.Channel;
979 pAd->StaActive.SupportedPhyInfo.bHtEnable =
981 pAd->MlmeAux.NewExtChannelOffset = 0xff;
982 RTMPZeroMemory(&pAd->MlmeAux.HtCapability,
984 pAd->MlmeAux.HtCapabilityLen = 0;
985 RTMPZeroMemory(&pAd->MlmeAux.AddHtInfo,
989 RTMPUpdateMlmeRate(pAd);
992 if ((pAd->CommonCfg.bWmmCapable)
993 || (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED)
995 NdisMoveMemory(&pAd->MlmeAux.APEdcaParm,
997 NdisMoveMemory(&pAd->MlmeAux.APQbssLoad,
1000 NdisMoveMemory(&pAd->MlmeAux.APQosCapability,
1004 NdisZeroMemory(&pAd->MlmeAux.APEdcaParm,
1006 NdisZeroMemory(&pAd->MlmeAux.APQbssLoad,
1008 NdisZeroMemory(&pAd->MlmeAux.APQosCapability,
1014 pAd->MlmeAux.SupRateLen,
1015 pAd->MlmeAux.ExtRateLen));
1019 ChangeToCellPowerLimit(pAd,
1022 pAd->CommonCfg.TxPowerPercentage =
1023 pAd->CommonCfg.TxPowerDefault;
1025 pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
1027 MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_JOIN_CONF,
1044 void PeerBeacon(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
1074 if (!(INFRA_ON(pAd) || ADHOC_ON(pAd)
1084 if (PeerBeaconAndProbeRspSanity(pAd,
1125 RTMPMaxRssi(pAd, ConvertToRssi(pAd, Elem->Rssi0, RSSI_0),
1126 ConvertToRssi(pAd, Elem->Rssi1, RSSI_1),
1127 ConvertToRssi(pAd, Elem->Rssi2, RSSI_2));
1130 MAC_ADDR_EQUAL(Bssid, pAd->CommonCfg.Bssid) ? TRUE : FALSE;
1132 SSID_EQUAL(Ssid, SsidLen, pAd->CommonCfg.Ssid,
1133 pAd->CommonCfg.SsidLen) ? TRUE : FALSE;
1140 if (pAd->Mlme.CntlMachine.CurrState == CNTL_WAIT_DISASSOC)
1153 Bssidx = BssTableSearch(&pAd->ScanTab, Bssid, Channel);
1157 BssTableSetEntry(pAd, &pAd->ScanTab, Bssid, Ssid,
1171 NdisMoveMemory(pAd->ScanTab.BssEntry[Bssidx].PTSF,
1173 NdisMoveMemory(&pAd->ScanTab.BssEntry[Bssidx].TTSF[0],
1175 NdisMoveMemory(&pAd->ScanTab.BssEntry[Bssidx].TTSF[4],
1180 if ((pAd->CommonCfg.bIEEE80211H == 1) && (NewChannel != 0)
1184 AsicSwitchChannel(pAd, 1, FALSE);
1185 AsicLockChannel(pAd, 1);
1186 LinkDown(pAd, FALSE);
1187 MlmeQueueInit(&pAd->Mlme.Queue);
1188 BssTableInit(&pAd->ScanTab);
1192 for (index = 0; index < pAd->ChannelListNum; index++) {
1193 if (pAd->ChannelList[index].Channel ==
1195 pAd->ScanTab.BssEntry[Bssidx].Channel =
1197 pAd->CommonCfg.Channel = NewChannel;
1198 AsicSwitchChannel(pAd,
1199 pAd->CommonCfg.
1201 AsicLockChannel(pAd,
1202 pAd->CommonCfg.Channel);
1210 if (index >= pAd->ChannelListNum) {
1211 DBGPRINT_ERR(("PeerBeacon(can not find New Channel=%d in ChannelList[%d]\n", pAd->CommonCfg.Channel, pAd->ChannelListNum));
1216 if ((!is_my_bssid) && ADHOC_ON(pAd)) {
1220 if (pAd->StaCfg.WepStatus !=
1221 pAd->ScanTab.BssEntry[Bssidx].WepStatus) {
1226 if (Bssid[i] > pAd->CommonCfg.Bssid[i]) {
1232 AsicDisableSync(pAd);
1233 COPY_MAC_ADDR(pAd->CommonCfg.Bssid,
1235 AsicSetBssid(pAd, pAd->CommonCfg.Bssid);
1236 MakeIbssBeacon(pAd); /* re-build BEACON frame */
1237 AsicEnableIbssSync(pAd); /* copy BEACON frame to on-chip memory */
1240 } else if (Bssid[i] < pAd->CommonCfg.Bssid[i])
1246 pBss = &pAd->ScanTab.BssEntry[Bssidx];
1256 pAd->StaCfg.DtimCount = DtimCount;
1257 pAd->StaCfg.DtimPeriod = DtimPeriod;
1258 pAd->StaCfg.LastBeaconRxTime = Now;
1264 Update_Rssi_Sample(pAd, &pAd->StaCfg.RssiSample, &RxWI);
1270 ChangeToCellPowerLimit(pAd,
1277 pAd->CommonCfg.TxPowerPercentage =
1278 pAd->CommonCfg.TxPowerDefault;
1281 if (ADHOC_ON(pAd) && (CAP_IS_IBSS_ON(CapabilityInfo))) {
1302 pEntry = MacTableLookup(pAd, Addr2);
1306 if ((ADHOC_ON(pAd)
1316 MacTableInsertEntry(pAd,
1321 if (StaAddMacTableEntry(pAd,
1337 idx = pAd->StaCfg.DefaultKeyId;
1338 RTMP_STA_SECURITY_INFO_ADD(pAd,
1350 (pAd, fOP_STATUS_MEDIA_STATE_CONNECTED)) {
1351 OPSTATUS_SET_FLAG(pAd,
1354 pAd->IndicateMediaState =
1356 RTMP_IndicateMediaState(pAd);
1357 pAd->ExtraInfo = GENERAL_LINK_UP;
1358 AsicSetBssid(pAd, pAd->CommonCfg.Bssid);
1365 BssTableSearch(&pAd->ScanTab, Bssid,
1369 BssTableSetEntry(pAd,
1370 &pAd->
1404 if (INFRA_ON(pAd)) {
1412 /*bUseShortSlot = pAd->CommonCfg.bUseShortSlotTime && CAP_IS_SHORT_SLOT(CapabilityInfo); */
1416 OPSTATUS_TEST_FLAG(pAd,
1418 AsicSetSlotTime(pAd, bUseShortSlot);
1420 bUseBGProtection = (pAd->CommonCfg.UseBGProtection == 1) || /* always use */
1421 ((pAd->CommonCfg.UseBGProtection == 0)
1424 if (pAd->CommonCfg.Channel > 14) /* always no BG protection in A-band. falsely happened when switching A/G band to a dual-band AP */
1428 OPSTATUS_TEST_FLAG(pAd,
1432 OPSTATUS_SET_FLAG(pAd,
1434 AsicUpdateProtect(pAd,
1435 pAd->MlmeAux.
1445 (pAd->MlmeAux.
1451 OPSTATUS_CLEAR_FLAG(pAd,
1453 AsicUpdateProtect(pAd,
1454 pAd->MlmeAux.
1464 (pAd->MlmeAux.
1478 pAd->MlmeAux.AddHtInfo.AddHtInfo2.
1481 pAd->MlmeAux.AddHtInfo.AddHtInfo2.
1483 pAd->MlmeAux.AddHtInfo.AddHtInfo2.
1486 pAd->MlmeAux.AddHtInfo.AddHtInfo2.
1489 if (pAd->MlmeAux.AddHtInfo.AddHtInfo2.
1491 AsicUpdateProtect(pAd,
1492 pAd->MlmeAux.
1499 AsicUpdateProtect(pAd,
1500 pAd->MlmeAux.
1509 pAd->MlmeAux.AddHtInfo.
1514 (pAd, fOP_STATUS_SHORT_PREAMBLE_INUSED)
1516 MlmeSetTxPreamble(pAd,
1523 (pAd, fOP_STATUS_WMM_INUSED)
1526 pAd->CommonCfg.APEdcaParm.
1530 pAd->CommonCfg.APEdcaParm.
1533 AsicSetEdcaParm(pAd, &EdcaParm);
1536 NdisMoveMemory(&pAd->CommonCfg.APQbssLoad,
1539 NdisMoveMemory(&pAd->CommonCfg.APQosCapability,
1544 if ((INFRA_ON(pAd) && (pAd->StaCfg.Psm == PWR_SAVE))
1545 || (pAd->CommonCfg.bAPSDForcePowerSave)) {
1555 (pAd, fOP_STATUS_PCIE_DEVICE)) {
1557 if (pAd->Antenna.field.RxPath >
1560 (pAd, BBP_R3,
1561 pAd->StaCfg.BBPR3);
1565 if (pAd->CommonCfg.bAPSDCapable
1566 && pAd->CommonCfg.APEdcaParm.
1568 && pAd->CommonCfg.bAPSDAC_BE
1569 && pAd->CommonCfg.bAPSDAC_BK
1570 && pAd->CommonCfg.bAPSDAC_VI
1571 && pAd->CommonCfg.bAPSDAC_VO) {
1572 pAd->CommonCfg.
1576 RTMP_PS_POLL_ENQUEUE(pAd);
1578 && OPSTATUS_TEST_FLAG(pAd,
1583 (pAd, fOP_STATUS_PCIE_DEVICE)) {
1584 if (pAd->Antenna.field.RxPath >
1587 (pAd, BBP_R3,
1588 pAd->StaCfg.BBPR3);
1592 if ((pAd->TxSwQueue[QID_AC_BK].Number != 0)
1593 || (pAd->TxSwQueue[QID_AC_BE].Number !=
1595 || (pAd->TxSwQueue[QID_AC_VI].Number !=
1597 || (pAd->TxSwQueue[QID_AC_VO].Number !=
1601 (pAd, QID_AC_BK, TX_RING_SIZE - 1,
1605 (pAd, QID_AC_BE, TX_RING_SIZE - 1,
1609 (pAd, QID_AC_VI, TX_RING_SIZE - 1,
1613 (pAd, QID_AC_VO, TX_RING_SIZE - 1,
1617 (pAd, QID_MGMT, MGMT_RING_SIZE - 1,
1624 (pAd, fOP_STATUS_PCIE_DEVICE)) {
1625 if (pAd->Antenna.field.RxPath >
1628 (pAd, BBP_R3,
1629 pAd->StaCfg.BBPR3);
1633 if ((pAd->CommonCfg.
1635 || (pAd->CommonCfg.
1637 || (pAd->CommonCfg.
1639 || (pAd->CommonCfg.
1669 pAd->StaCfg.
1672 (pAd,
1680 (pAd, fOP_STATUS_DOZE)) {
1682 pAd->
1687 (pAd,
1688 pAd->
1706 void PeerProbeReqAction(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
1723 if (!ADHOC_ON(pAd))
1727 (pAd, Elem->Msg, Elem->MsgLen, Addr2, Ssid, &SsidLen)) {
1729 || SSID_EQUAL(Ssid, SsidLen, pAd->CommonCfg.Ssid,
1730 pAd->CommonCfg.SsidLen)) {
1732 NStatus = MlmeAllocateMemory(pAd, &pOutBuffer); /*Get an unused nonpaged memory */
1736 /*pAd->StaCfg.AtimWin = 0; // ?????? */
1739 (pAd->StaCfg.WepStatus ==
1741 || (pAd->StaCfg.WepStatus ==
1743 || (pAd->StaCfg.WepStatus ==
1747 (pAd->CommonCfg.TxPreamble ==
1753 2, &pAd->CommonCfg.BeaconPeriod,
1756 1, &pAd->CommonCfg.SsidLen,
1757 pAd->CommonCfg.SsidLen,
1758 pAd->CommonCfg.Ssid, 1, &SupRateIe, 1,
1759 &pAd->StaActive.SupRateLen,
1760 pAd->StaActive.SupRateLen,
1761 pAd->StaActive.SupRate, 1, &DsIe, 1,
1762 &DsLen, 1, &pAd->CommonCfg.Channel, 1,
1764 &pAd->StaActive.AtimWin, END_OF_ARGS);
1766 if (pAd->StaActive.ExtRateLen) {
1771 1, &pAd->StaActive.ExtRateLen,
1772 pAd->StaActive.ExtRateLen,
1773 &pAd->StaActive.ExtRate,
1778 if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone) {
1782 1, &pAd->StaCfg.RSNIE_Len,
1783 pAd->StaCfg.RSNIE_Len,
1784 pAd->StaCfg.RSN_IE,
1789 if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) {
1792 HtLen = sizeof(pAd->CommonCfg.HtCapability);
1793 AddHtLen = sizeof(pAd->CommonCfg.AddHTInfo);
1796 if (pAd->bBroadComHT == TRUE) {
1800 pAd->MlmeAux.
1802 &pAd->MlmeAux.
1811 &pAd->CommonCfg.
1817 &pAd->CommonCfg.
1823 &pAd->CommonCfg.
1830 MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
1831 MlmeFreeMemory(pAd, pOutBuffer);
1836 void BeaconTimeoutAtJoinAction(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
1840 pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
1842 MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_JOIN_CONF, 2, &Status);
1851 void ScanTimeoutAction(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
1853 pAd->MlmeAux.Channel = NextChannel(pAd, pAd->MlmeAux.Channel);
1856 if ((pAd->MlmeAux.ScanType == SCAN_CISCO_ACTIVE) ||
1857 (pAd->MlmeAux.ScanType == SCAN_CISCO_PASSIVE) ||
1858 (pAd->MlmeAux.ScanType == SCAN_CISCO_NOISE) ||
1859 (pAd->MlmeAux.ScanType == SCAN_CISCO_CHANNEL_LOAD))
1860 pAd->MlmeAux.Channel = 0;
1862 /* this routine will stop if pAd->MlmeAux.Channel == 0 */
1863 ScanNextChannel(pAd);
1871 void InvalidStateWhenScan(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
1876 pAd->Mlme.SyncMachine.CurrState));
1877 pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
1879 MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_SCAN_CONF, 2, &Status);
1887 void InvalidStateWhenJoin(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
1892 pAd->Mlme.SyncMachine.CurrState));
1893 pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
1895 MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_JOIN_CONF, 2, &Status);
1903 void InvalidStateWhenStart(struct rt_rtmp_adapter *pAd, struct rt_mlme_queue_elem *Elem)
1908 pAd->Mlme.SyncMachine.CurrState));
1909 pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
1911 MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_START_CONF, 2, &Status);
1922 void EnqueuePsPoll(struct rt_rtmp_adapter *pAd)
1925 if (pAd->StaCfg.WindowsPowerMode == Ndis802_11PowerModeLegacy_PSP)
1926 pAd->PsPollFrame.FC.PwrMgmt = PWR_SAVE;
1927 MiniportMMRequest(pAd, 0, (u8 *)& pAd->PsPollFrame,
1936 void EnqueueProbeRequest(struct rt_rtmp_adapter *pAd)
1945 NState = MlmeAllocateMemory(pAd, &pOutBuffer); /*Get an unused nonpaged memory */
1947 MgtMacHeaderInit(pAd, &Hdr80211, SUBTYPE_PROBE_REQ, 0,
1954 1, &pAd->CommonCfg.SsidLen,
1955 pAd->CommonCfg.SsidLen, pAd->CommonCfg.Ssid,
1957 1, &pAd->StaActive.SupRateLen,
1958 pAd->StaActive.SupRateLen,
1959 pAd->StaActive.SupRate, END_OF_ARGS);
1960 MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
1961 MlmeFreeMemory(pAd, pOutBuffer);
1966 BOOLEAN ScanRunning(struct rt_rtmp_adapter *pAd)
1968 return (pAd->Mlme.SyncMachine.CurrState == SCAN_LISTEN) ? TRUE : FALSE;