diff options
-rw-r--r-- | drivers/staging/otus/80211core/ccmd.c | 2982 |
1 files changed, 1443 insertions, 1539 deletions
diff --git a/drivers/staging/otus/80211core/ccmd.c b/drivers/staging/otus/80211core/ccmd.c index 47997797367..83dd8ba1328 100644 --- a/drivers/staging/otus/80211core/ccmd.c +++ b/drivers/staging/otus/80211core/ccmd.c @@ -27,1019 +27,941 @@ #include "../hal/hpreg.h" -u16_t zfWlanReset(zdev_t* dev); -u32_t zfUpdateRxRate(zdev_t* dev); +u16_t zfWlanReset(zdev_t *dev); +u32_t zfUpdateRxRate(zdev_t *dev); extern void zfiUsbRecv(zdev_t *dev, zbuf_t *buf); -extern void zfiUsbRegIn(zdev_t* dev, u32_t* rsp, u16_t rspLen); -extern void zfiUsbOutComplete(zdev_t* dev, zbuf_t *buf, u8_t status, u8_t *hdr); -extern void zfiUsbRegOutComplete(zdev_t* dev); -extern u16_t zfHpReinit(zdev_t* dev, u32_t frequency); +extern void zfiUsbRegIn(zdev_t *dev, u32_t *rsp, u16_t rspLen); +extern void zfiUsbOutComplete(zdev_t *dev, zbuf_t *buf, u8_t status, u8_t *hdr); +extern void zfiUsbRegOutComplete(zdev_t *dev); +extern u16_t zfHpReinit(zdev_t *dev, u32_t frequency); /* Get size (byte) of driver core global data structure. */ /* This size will be used by driver wrapper to allocate */ /* a memory space for driver core to store global variables */ -u16_t zfiGlobalDataSize(zdev_t* dev) +u16_t zfiGlobalDataSize(zdev_t *dev) { - u32_t ret; - ret = (sizeof(struct zsWlanDev)); - zm_assert((ret>>16) == 0); - return (u16_t)ret; + u32_t ret; + ret = (sizeof(struct zsWlanDev)); + zm_assert((ret>>16) == 0); + return (u16_t)ret; } /* Initialize WLAN hardware and software, resource will be allocated */ /* for WLAN operation, must be called first before other function. */ -extern u16_t zfiWlanOpen(zdev_t* dev, struct zsCbFuncTbl* cbFuncTbl) +extern u16_t zfiWlanOpen(zdev_t *dev, struct zsCbFuncTbl *cbFuncTbl) { - //u16_t ret; - //u32_t i; - //u8_t* ch; - //u8_t bPassive; - u32_t devSize; - struct zfCbUsbFuncTbl cbUsbFuncTbl; - zmw_get_wlan_dev(dev); + /* u16_t ret; + u32_t i; + u8_t* ch; + u8_t bPassive; + */ + u32_t devSize; + struct zfCbUsbFuncTbl cbUsbFuncTbl; + zmw_get_wlan_dev(dev); - zm_debug_msg0("start"); + zm_debug_msg0("start"); - devSize = sizeof(struct zsWlanDev); - /* Zeroize zsWlanDev struct */ - zfZeroMemory((u8_t*)wd, (u16_t)devSize); + devSize = sizeof(struct zsWlanDev); + /* Zeroize zsWlanDev struct */ + zfZeroMemory((u8_t *)wd, (u16_t)devSize); #ifdef ZM_ENABLE_AGGREGATION - zfAggInit(dev); + zfAggInit(dev); #endif - zfCwmInit(dev); - - wd->commTally.RateCtrlTxMPDU = 0; - wd->commTally.RateCtrlBAFail = 0; - wd->preambleTypeInUsed = ZM_PREAMBLE_TYPE_SHORT; - - if (cbFuncTbl == NULL) - { - /* zfcbRecvEth() is mandatory */ - zm_assert(0); - } - else - { - if (cbFuncTbl->zfcbRecvEth == NULL) - { - /* zfcbRecvEth() is mandatory */ - zm_assert(0); - } - wd->zfcbAuthNotify = cbFuncTbl->zfcbAuthNotify; - wd->zfcbAuthNotify = cbFuncTbl->zfcbAuthNotify; - wd->zfcbAsocNotify = cbFuncTbl->zfcbAsocNotify; - wd->zfcbDisAsocNotify = cbFuncTbl->zfcbDisAsocNotify; - wd->zfcbApConnectNotify = cbFuncTbl->zfcbApConnectNotify; - wd->zfcbConnectNotify = cbFuncTbl->zfcbConnectNotify; - wd->zfcbScanNotify = cbFuncTbl->zfcbScanNotify; - wd->zfcbMicFailureNotify = cbFuncTbl->zfcbMicFailureNotify; - wd->zfcbApMicFailureNotify = cbFuncTbl->zfcbApMicFailureNotify; - wd->zfcbIbssPartnerNotify = cbFuncTbl->zfcbIbssPartnerNotify; - wd->zfcbMacAddressNotify = cbFuncTbl->zfcbMacAddressNotify; - wd->zfcbSendCompleteIndication = cbFuncTbl->zfcbSendCompleteIndication; - wd->zfcbRecvEth = cbFuncTbl->zfcbRecvEth; - wd->zfcbRestoreBufData = cbFuncTbl->zfcbRestoreBufData; - wd->zfcbRecv80211 = cbFuncTbl->zfcbRecv80211; + zfCwmInit(dev); + + wd->commTally.RateCtrlTxMPDU = 0; + wd->commTally.RateCtrlBAFail = 0; + wd->preambleTypeInUsed = ZM_PREAMBLE_TYPE_SHORT; + + if (cbFuncTbl == NULL) { + /* zfcbRecvEth() is mandatory */ + zm_assert(0); + } else { + if (cbFuncTbl->zfcbRecvEth == NULL) { + /* zfcbRecvEth() is mandatory */ + zm_assert(0); + } + wd->zfcbAuthNotify = cbFuncTbl->zfcbAuthNotify; + wd->zfcbAuthNotify = cbFuncTbl->zfcbAuthNotify; + wd->zfcbAsocNotify = cbFuncTbl->zfcbAsocNotify; + wd->zfcbDisAsocNotify = cbFuncTbl->zfcbDisAsocNotify; + wd->zfcbApConnectNotify = cbFuncTbl->zfcbApConnectNotify; + wd->zfcbConnectNotify = cbFuncTbl->zfcbConnectNotify; + wd->zfcbScanNotify = cbFuncTbl->zfcbScanNotify; + wd->zfcbMicFailureNotify = cbFuncTbl->zfcbMicFailureNotify; + wd->zfcbApMicFailureNotify = cbFuncTbl->zfcbApMicFailureNotify; + wd->zfcbIbssPartnerNotify = cbFuncTbl->zfcbIbssPartnerNotify; + wd->zfcbMacAddressNotify = cbFuncTbl->zfcbMacAddressNotify; + wd->zfcbSendCompleteIndication = + cbFuncTbl->zfcbSendCompleteIndication; + wd->zfcbRecvEth = cbFuncTbl->zfcbRecvEth; + wd->zfcbRestoreBufData = cbFuncTbl->zfcbRestoreBufData; + wd->zfcbRecv80211 = cbFuncTbl->zfcbRecv80211; #ifdef ZM_ENABLE_CENC - wd->zfcbCencAsocNotify = cbFuncTbl->zfcbCencAsocNotify; -#endif //ZM_ENABLE_CENC - wd->zfcbClassifyTxPacket = cbFuncTbl->zfcbClassifyTxPacket; - wd->zfcbHwWatchDogNotify = cbFuncTbl->zfcbHwWatchDogNotify; - } - - //add by honda 0330 - cbUsbFuncTbl.zfcbUsbRecv = zfiUsbRecv; - cbUsbFuncTbl.zfcbUsbRegIn = zfiUsbRegIn; - cbUsbFuncTbl.zfcbUsbOutComplete = zfiUsbOutComplete; - cbUsbFuncTbl.zfcbUsbRegOutComplete = zfiUsbRegOutComplete; - zfwUsbRegisterCallBack(dev, &cbUsbFuncTbl); - /* Init OWN MAC address */ - wd->macAddr[0] = 0x8000; - wd->macAddr[1] = 0x0000; - wd->macAddr[2] = 0x0000; - - wd->regulationTable.regionCode = 0xffff; - - zfHpInit(dev, wd->frequency); - - /* init region code */ - //wd->regulationTable.regionCode = NULL1_WORLD; //Only 2.4g RegCode - //zfHpGetRegulationTablefromRegionCode(dev, NULL1_WORLD); - //zfiWlanSetDot11DMode(dev , 1); // Enable 802.11d - /* Get the first channel */ - //wd->frequency = zfChGetFirstChannel(dev, &bPassive); + wd->zfcbCencAsocNotify = cbFuncTbl->zfcbCencAsocNotify; +#endif /* ZM_ENABLE_CENC */ + wd->zfcbClassifyTxPacket = cbFuncTbl->zfcbClassifyTxPacket; + wd->zfcbHwWatchDogNotify = cbFuncTbl->zfcbHwWatchDogNotify; + } + + /* add by honda 0330 */ + cbUsbFuncTbl.zfcbUsbRecv = zfiUsbRecv; + cbUsbFuncTbl.zfcbUsbRegIn = zfiUsbRegIn; + cbUsbFuncTbl.zfcbUsbOutComplete = zfiUsbOutComplete; + cbUsbFuncTbl.zfcbUsbRegOutComplete = zfiUsbRegOutComplete; + zfwUsbRegisterCallBack(dev, &cbUsbFuncTbl); + /* Init OWN MAC address */ + wd->macAddr[0] = 0x8000; + wd->macAddr[1] = 0x0000; + wd->macAddr[2] = 0x0000; + + wd->regulationTable.regionCode = 0xffff; + + zfHpInit(dev, wd->frequency); + + /* init region code */ + /* wd->regulationTable.regionCode = NULL1_WORLD; //Only 2.4g RegCode */ + /* zfHpGetRegulationTablefromRegionCode(dev, NULL1_WORLD); */ + /* zfiWlanSetDot11DMode(dev , 1); //Enable 802.11d */ + /* Get the first channel */ + /* wd->frequency = zfChGetFirstChannel(dev, &bPassive); */ #ifdef ZM_AP_DEBUG - //wd->frequency = 2437; + /* wd->frequency = 2437; */ #endif - //STA mode - wd->sta.mTxRate = 0x0; - wd->sta.uTxRate = 0x3; - wd->sta.mmTxRate = 0x0; - wd->sta.adapterState = ZM_STA_STATE_DISCONNECT; - wd->sta.capability[0] = 0x01; - wd->sta.capability[1] = 0x00; - - wd->sta.preambleTypeHT = 0; - wd->sta.htCtrlBandwidth = 0; - wd->sta.htCtrlSTBC = 0; - wd->sta.htCtrlSG = 0; - wd->sta.defaultTA = 0; - //wd->sta.activescanTickPerChannel = ZM_TIME_ACTIVE_SCAN/ZM_MS_PER_TICK; + /* STA mode */ + wd->sta.mTxRate = 0x0; + wd->sta.uTxRate = 0x3; + wd->sta.mmTxRate = 0x0; + wd->sta.adapterState = ZM_STA_STATE_DISCONNECT; + wd->sta.capability[0] = 0x01; + wd->sta.capability[1] = 0x00; + + wd->sta.preambleTypeHT = 0; + wd->sta.htCtrlBandwidth = 0; + wd->sta.htCtrlSTBC = 0; + wd->sta.htCtrlSG = 0; + wd->sta.defaultTA = 0; + /*wd->sta.activescanTickPerChannel = + *ZM_TIME_ACTIVE_SCAN/ZM_MS_PER_TICK; + */ { u8_t Dur = ZM_TIME_ACTIVE_SCAN; zfwGetActiveScanDur(dev, &Dur); - wd->sta.activescanTickPerChannel = Dur/ZM_MS_PER_TICK; + wd->sta.activescanTickPerChannel = Dur / ZM_MS_PER_TICK; } - wd->sta.passiveScanTickPerChannel = ZM_TIME_PASSIVE_SCAN/ZM_MS_PER_TICK; - wd->sta.bAutoReconnect = TRUE; - wd->sta.dropUnencryptedPkts = FALSE; + wd->sta.passiveScanTickPerChannel = ZM_TIME_PASSIVE_SCAN/ZM_MS_PER_TICK; + wd->sta.bAutoReconnect = TRUE; + wd->sta.dropUnencryptedPkts = FALSE; - /* set default to bypass all multicast packet for linux, window XP would set 0 by wrapper initialization */ + /* set default to bypass all multicast packet for linux, + * window XP would set 0 by wrapper initialization + */ wd->sta.bAllMulticast = 1; - /* Initial the RIFS Status / RIFS-like frame count / RIFS count */ - wd->sta.rifsState = ZM_RIFS_STATE_DETECTING; - wd->sta.rifsLikeFrameCnt = 0; - wd->sta.rifsCount = 0; - - wd->sta.osRxFilter = 0; - wd->sta.bSafeMode = 0; - - //Common - zfResetSupportRate(dev, ZM_DEFAULT_SUPPORT_RATE_DISCONNECT); - wd->beaconInterval = 100; - wd->rtsThreshold = 2346; - wd->fragThreshold = 32767; - wd->wlanMode = ZM_MODE_INFRASTRUCTURE; - wd->txMCS = 0xff; //AUTO - wd->dtim = 1; - //wd->txMT = 1; //OFDM - wd->tick = 1; - wd->maxTxPower2 = 0xff; - wd->maxTxPower5 = 0xff; - wd->supportMode = 0xffffffff; - wd->ws.adhocMode = ZM_ADHOCBAND_G; - wd->ws.autoSetFrequency = 0xff; - - //AP mode - //wd->bgMode = wd->ws.bgMode; - wd->ap.ssidLen[0] = 6; - wd->ap.ssid[0][0] = 'Z'; - wd->ap.ssid[0][1] = 'D'; - wd->ap.ssid[0][2] = '1'; - wd->ap.ssid[0][3] = '2'; - wd->ap.ssid[0][4] = '2'; - wd->ap.ssid[0][5] = '1'; - - // Init the country iso name as NA - wd->ws.countryIsoName[0] = 0; - wd->ws.countryIsoName[1] = 0; - wd->ws.countryIsoName[2] = '\0'; + /* Initial the RIFS Status / RIFS-like frame count / RIFS count */ + wd->sta.rifsState = ZM_RIFS_STATE_DETECTING; + wd->sta.rifsLikeFrameCnt = 0; + wd->sta.rifsCount = 0; + + wd->sta.osRxFilter = 0; + wd->sta.bSafeMode = 0; + + /* Common */ + zfResetSupportRate(dev, ZM_DEFAULT_SUPPORT_RATE_DISCONNECT); + wd->beaconInterval = 100; + wd->rtsThreshold = 2346; + wd->fragThreshold = 32767; + wd->wlanMode = ZM_MODE_INFRASTRUCTURE; + wd->txMCS = 0xff; /* AUTO */ + wd->dtim = 1; + /* wd->txMT = 1; *//*OFDM */ + wd->tick = 1; + wd->maxTxPower2 = 0xff; + wd->maxTxPower5 = 0xff; + wd->supportMode = 0xffffffff; + wd->ws.adhocMode = ZM_ADHOCBAND_G; + wd->ws.autoSetFrequency = 0xff; + + /* AP mode */ + /* wd->bgMode = wd->ws.bgMode; */ + wd->ap.ssidLen[0] = 6; + wd->ap.ssid[0][0] = 'Z'; + wd->ap.ssid[0][1] = 'D'; + wd->ap.ssid[0][2] = '1'; + wd->ap.ssid[0][3] = '2'; + wd->ap.ssid[0][4] = '2'; + wd->ap.ssid[0][5] = '1'; + + /* Init the country iso name as NA */ + wd->ws.countryIsoName[0] = 0; + wd->ws.countryIsoName[1] = 0; + wd->ws.countryIsoName[2] = '\0'; /* init fragmentation is disabled */ - //zfiWlanSetFragThreshold(dev, 0); + /* zfiWlanSetFragThreshold(dev, 0); */ /* airopeek : swSniffer 1=>on 0=>off */ wd->swSniffer = 0; - wd->XLinkMode = 0; + wd->XLinkMode = 0; -// jhlee HT 0 + /* jhlee HT 0 */ #if 1 - /* AP Mode*/ - /* Init HT Capability Info */ - wd->ap.HTCap.Data.ElementID = ZM_WLAN_EID_HT_CAPABILITY; - wd->ap.HTCap.Data.Length = 26; - //wd->ap.HTCap.Data.SupChannelWidthSet = 0; - //wd->ap.HTCap.Data.MIMOPowerSave = 3; - //wd->ap.HTCap.Data.ShortGIfor40MHz = 0; - //wd->ap.HTCap.Data.ShortGIfor20MHz = 0; - //wd->ap.HTCap.Data.DSSSandCCKin40MHz = 0; - wd->ap.HTCap.Data.AMPDUParam |= HTCAP_MaxRxAMPDU3; - wd->ap.HTCap.Data.MCSSet[0] = 0xFF; // MCS 0 ~ 7 - wd->ap.HTCap.Data.MCSSet[1] = 0xFF; // MCS 8 ~ 15 - - /* Init Extended HT Capability Info */ - wd->ap.ExtHTCap.Data.ElementID = ZM_WLAN_EID_EXTENDED_HT_CAPABILITY; - wd->ap.ExtHTCap.Data.Length = 22; - wd->ap.ExtHTCap.Data.ControlChannel = 6; - //wd->ap.ExtHTCap.Data.ExtChannelOffset = 3; - wd->ap.ExtHTCap.Data.ChannelInfo |= ExtHtCap_RecomTxWidthSet; - //wd->ap.ExtHTCap.Data.RIFSMode = 1; - wd->ap.ExtHTCap.Data.OperatingInfo |= 1; - - /* STA Mode*/ - /* Init HT Capability Info */ - wd->sta.HTCap.Data.ElementID = ZM_WLAN_EID_HT_CAPABILITY; - wd->sta.HTCap.Data.Length = 26; - - /* Test with 5G-AP : 7603 */ - //wd->sta.HTCap.Data.SupChannelWidthSet = 1; - wd->sta.HTCap.Data.HtCapInfo |= HTCAP_SMEnabled; - wd->sta.HTCap.Data.HtCapInfo |= HTCAP_SupChannelWidthSet; - wd->sta.HTCap.Data.HtCapInfo |= HTCAP_ShortGIfor40MHz; - wd->sta.HTCap.Data.HtCapInfo |= HTCAP_DSSSandCCKin40MHz; + /* AP Mode*/ + /* Init HT Capability Info */ + wd->ap.HTCap.Data.ElementID = ZM_WLAN_EID_HT_CAPABILITY; + wd->ap.HTCap.Data.Length = 26; + /*wd->ap.HTCap.Data.SupChannelWidthSet = 0; + wd->ap.HTCap.Data.MIMOPowerSave = 3; + wd->ap.HTCap.Data.ShortGIfor40MHz = 0; + wd->ap.HTCap.Data.ShortGIfor20MHz = 0; + wd->ap.HTCap.Data.DSSSandCCKin40MHz = 0; + */ + wd->ap.HTCap.Data.AMPDUParam |= HTCAP_MaxRxAMPDU3; + wd->ap.HTCap.Data.MCSSet[0] = 0xFF; /* MCS 0 ~ 7 */ + wd->ap.HTCap.Data.MCSSet[1] = 0xFF; /* MCS 8 ~ 15 */ + + /* Init Extended HT Capability Info */ + wd->ap.ExtHTCap.Data.ElementID = ZM_WLAN_EID_EXTENDED_HT_CAPABILITY; + wd->ap.ExtHTCap.Data.Length = 22; + wd->ap.ExtHTCap.Data.ControlChannel = 6; + /* wd->ap.ExtHTCap.Data.ExtChannelOffset = 3; */ + wd->ap.ExtHTCap.Data.ChannelInfo |= ExtHtCap_RecomTxWidthSet; + /* wd->ap.ExtHTCap.Data.RIFSMode = 1; */ + wd->ap.ExtHTCap.Data.OperatingInfo |= 1; + + /* STA Mode*/ + /* Init HT Capability Info */ + wd->sta.HTCap.Data.ElementID = ZM_WLAN_EID_HT_CAPABILITY; + wd->sta.HTCap.Data.Length = 26; + + /* Test with 5G-AP : 7603 */ + /* wd->sta.HTCap.Data.SupChannelWidthSet = 1; */ + wd->sta.HTCap.Data.HtCapInfo |= HTCAP_SMEnabled; + wd->sta.HTCap.Data.HtCapInfo |= HTCAP_SupChannelWidthSet; + wd->sta.HTCap.Data.HtCapInfo |= HTCAP_ShortGIfor40MHz; + wd->sta.HTCap.Data.HtCapInfo |= HTCAP_DSSSandCCKin40MHz; #ifndef ZM_DISABLE_AMSDU8K_SUPPORT - wd->sta.HTCap.Data.HtCapInfo |= HTCAP_MaxAMSDULength; + wd->sta.HTCap.Data.HtCapInfo |= HTCAP_MaxAMSDULength; #endif - //wd->sta.HTCap.Data.MIMOPowerSave = 0; - //wd->sta.HTCap.Data.ShortGIfor40MHz = 0; - //wd->sta.HTCap.Data.ShortGIfor20MHz = 0; - //wd->sta.HTCap.Data.DSSSandCCKin40MHz = 0; - wd->sta.HTCap.Data.AMPDUParam |= HTCAP_MaxRxAMPDU3; - wd->sta.HTCap.Data.MCSSet[0] = 0xFF; // MCS 0 ~ 7 - wd->sta.HTCap.Data.MCSSet[1] = 0xFF; // MCS 8 ~ 15 - wd->sta.HTCap.Data.PCO |= HTCAP_TransmissionTime3; - //wd->sta.HTCap.Data.TransmissionTime = 0; - /* Init Extended HT Capability Info */ - wd->sta.ExtHTCap.Data.ElementID = ZM_WLAN_EID_EXTENDED_HT_CAPABILITY; - wd->sta.ExtHTCap.Data.Length = 22; - wd->sta.ExtHTCap.Data.ControlChannel = 6; - - //wd->sta.ExtHTCap.Data.ExtChannelOffset |= 3; - wd->sta.ExtHTCap.Data.ChannelInfo |= ExtHtCap_ExtChannelOffsetBelow; - - //wd->sta.ExtHTCap.Data.RecomTxWidthSet = 1; - //wd->sta.ExtHTCap.Data.RIFSMode = 1; - wd->sta.ExtHTCap.Data.OperatingInfo |= 1; + /*wd->sta.HTCap.Data.MIMOPowerSave = 0; + wd->sta.HTCap.Data.ShortGIfor40MHz = 0; + wd->sta.HTCap.Data.ShortGIfor20MHz = 0; + wd->sta.HTCap.Data.DSSSandCCKin40MHz = 0; + */ + wd->sta.HTCap.Data.AMPDUParam |= HTCAP_MaxRxAMPDU3; + wd->sta.HTCap.Data.MCSSet[0] = 0xFF; /* MCS 0 ~ 7 */ + wd->sta.HTCap.Data.MCSSet[1] = 0xFF; /* MCS 8 ~ 15 */ + wd->sta.HTCap.Data.PCO |= HTCAP_TransmissionTime3; + /* wd->sta.HTCap.Data.TransmissionTime = 0; */ + /* Init Extended HT Capability Info */ + wd->sta.ExtHTCap.Data.ElementID = ZM_WLAN_EID_EXTENDED_HT_CAPABILITY; + wd->sta.ExtHTCap.Data.Length = 22; + wd->sta.ExtHTCap.Data.ControlChannel = 6; + + /* wd->sta.ExtHTCap.Data.ExtChannelOffset |= 3; */ + wd->sta.ExtHTCap.Data.ChannelInfo |= ExtHtCap_ExtChannelOffsetBelow; + + /* wd->sta.ExtHTCap.Data.RecomTxWidthSet = 1; */ + /* wd->sta.ExtHTCap.Data.RIFSMode = 1; */ + wd->sta.ExtHTCap.Data.OperatingInfo |= 1; #endif #if 0 - /* WME test code */ - wd->ap.qosMode[0] = 1; + /* WME test code */ + wd->ap.qosMode[0] = 1; #endif - wd->ledStruct.ledMode[0] = 0x2221; - wd->ledStruct.ledMode[1] = 0x2221; + wd->ledStruct.ledMode[0] = 0x2221; + wd->ledStruct.ledMode[1] = 0x2221; - zfTimerInit(dev); + zfTimerInit(dev); - ZM_PERFORMANCE_INIT(dev); + ZM_PERFORMANCE_INIT(dev); - zfBssInfoCreate(dev); - zfScanMgrInit(dev); - zfPowerSavingMgrInit(dev); + zfBssInfoCreate(dev); + zfScanMgrInit(dev); + zfPowerSavingMgrInit(dev); #if 0 - /* Test code */ - { - u32_t key[4] = {0xffffffff, 0xff, 0, 0}; - u16_t addr[3] = {0x8000, 0x01ab, 0x0000}; - //zfSetKey(dev, 0, 0, ZM_WEP64, addr, key); - //zfSetKey(dev, 0, 0, ZM_AES, addr, key); - //zfSetKey(dev, 64, 0, 1, wd->macAddr, key); - } + /* Test code */ + { + u32_t key[4] = {0xffffffff, 0xff, 0, 0}; + u16_t addr[3] = {0x8000, 0x01ab, 0x0000}; + /*zfSetKey(dev, 0, 0, ZM_WEP64, addr, key); + zfSetKey(dev, 0, 0, ZM_AES, addr, key); + zfSetKey(dev, 64, 0, 1, wd->macAddr, key); + */ + } #endif - // WME settings - wd->ws.staWmeEnabled = 1; // Enable WME by default - #define ZM_UAPSD_Q_SIZE 32 //2^N - wd->ap.uapsdQ = zfQueueCreate(dev, ZM_UAPSD_Q_SIZE); - zm_assert(wd->ap.uapsdQ != NULL); - wd->sta.uapsdQ = zfQueueCreate(dev, ZM_UAPSD_Q_SIZE); - zm_assert(wd->sta.uapsdQ != NULL); + /* WME settings */ + wd->ws.staWmeEnabled = 1; /* Enable WME by default */ +#define ZM_UAPSD_Q_SIZE 32 /* 2^N */ + wd->ap.uapsdQ = zfQueueCreate(dev, ZM_UAPSD_Q_SIZE); + zm_assert(wd->ap.uapsdQ != NULL); + wd->sta.uapsdQ = zfQueueCreate(dev, ZM_UAPSD_Q_SIZE); + zm_assert(wd->sta.uapsdQ != NULL); - //zfHpInit(dev, wd->frequency); + /* zfHpInit(dev, wd->frequency); */ - /* MAC address */ - //zfHpSetMacAddress(dev, wd->macAddr, 0); - zfHpGetMacAddress(dev); + /* MAC address */ + /* zfHpSetMacAddress(dev, wd->macAddr, 0); */ + zfHpGetMacAddress(dev); - zfCoreSetFrequency(dev, wd->frequency); + zfCoreSetFrequency(dev, wd->frequency); #if ZM_PCI_LOOP_BACK == 1 - zfwWriteReg(dev, ZM_REG_PCI_CONTROL, 6); + zfwWriteReg(dev, ZM_REG_PCI_CONTROL, 6); #endif /* #if ZM_PCI_LOOP_BACK == 1 */ - //zfiWlanSetDot11DMode(dev , 1); // Enable 802.11d - //zfiWlanSetDot11HDFSMode(dev , 1); // Enable 802.11h DFS - wd->sta.DFSEnable = 1; - wd->sta.capability[1] |= ZM_BIT_0; + /* zfiWlanSetDot11DMode(dev , 1); // Enable 802.11d */ + /* zfiWlanSetDot11HDFSMode(dev , 1); // Enable 802.11h DFS */ + wd->sta.DFSEnable = 1; + wd->sta.capability[1] |= ZM_BIT_0; - //zfiWlanSetFrequency(dev, 5260000, TRUE); - //zfiWlanSetAniMode(dev , 1); // Enable ANI + /* zfiWlanSetFrequency(dev, 5260000, TRUE); */ + /* zfiWlanSetAniMode(dev , 1); // Enable ANI */ - /* Trgger Rx DMA */ - zfHpStartRecv(dev); + /* Trgger Rx DMA */ + zfHpStartRecv(dev); - zm_debug_msg0("end"); + zm_debug_msg0("end"); - return 0; + return 0; } /* WLAN hardware will be shutdown and all resource will be release */ -u16_t zfiWlanClose(zdev_t* dev) +u16_t zfiWlanClose(zdev_t *dev) { - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - zm_msg0_init(ZM_LV_0, "enter"); + zm_msg0_init(ZM_LV_0, "enter"); - wd->state = ZM_WLAN_STATE_CLOSEDED; + wd->state = ZM_WLAN_STATE_CLOSEDED; - //zfiWlanDisable(dev, 1); - zfWlanReset(dev); + /* zfiWlanDisable(dev, 1); */ + zfWlanReset(dev); - zfHpStopRecv(dev); + zfHpStopRecv(dev); - /* Disable MAC */ - /* Disable PHY */ - /* Disable RF */ + /* Disable MAC */ + /* Disable PHY */ + /* Disable RF */ - zfHpRelease(dev); + zfHpRelease(dev); - zfQueueDestroy(dev, wd->ap.uapsdQ); - zfQueueDestroy(dev, wd->sta.uapsdQ); + zfQueueDestroy(dev, wd->ap.uapsdQ); + zfQueueDestroy(dev, wd->sta.uapsdQ); - zfBssInfoDestroy(dev); + zfBssInfoDestroy(dev); #ifdef ZM_ENABLE_AGGREGATION - /* add by honda */ - zfAggRxFreeBuf(dev, 1); //1 for release structure memory - /* end of add by honda */ + /* add by honda */ + zfAggRxFreeBuf(dev, 1); /* 1 for release structure memory */ + /* end of add by honda */ #endif - zm_msg0_init(ZM_LV_0, "exit"); + zm_msg0_init(ZM_LV_0, "exit"); - return 0; + return 0; } -void zfGetWrapperSetting(zdev_t* dev) +void zfGetWrapperSetting(zdev_t *dev) { - u8_t bPassive; - u16_t vapId = 0; + u8_t bPassive; + u16_t vapId = 0; - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - zmw_declare_for_critical_section(); + zmw_declare_for_critical_section(); #if 0 - if ( (wd->ws.countryIsoName[0] != 0) - || (wd->ws.countryIsoName[1] != 0) - || (wd->ws.countryIsoName[2] != '\0') ) - { - zfHpGetRegulationTablefromRegionCode( - dev, - zfHpGetRegionCodeFromIsoName(dev, wd->ws.countryIsoName) ); - } + if ((wd->ws.countryIsoName[0] != 0) + || (wd->ws.countryIsoName[1] != 0) + || (wd->ws.countryIsoName[2] != '\0')) { + zfHpGetRegulationTablefromRegionCode(dev, + zfHpGetRegionCodeFromIsoName(dev, wd->ws.countryIsoName)); + } #endif - zmw_enter_critical_section(dev); - - wd->wlanMode = wd->ws.wlanMode; - - /* set channel */ - if ( wd->ws.frequency ) - { - wd->frequency = wd->ws.frequency; - wd->ws.frequency = 0; - } - else - { - wd->frequency = zfChGetFirstChannel(dev, &bPassive); - - if ( wd->wlanMode == ZM_MODE_IBSS ) - { - if (wd->ws.adhocMode == ZM_ADHOCBAND_A) - { - wd->frequency = ZM_CH_A_36; - } - else - { - wd->frequency = ZM_CH_G_6; - } - } - } + zmw_enter_critical_section(dev); + + wd->wlanMode = wd->ws.wlanMode; + + /* set channel */ + if (wd->ws.frequency) { + wd->frequency = wd->ws.frequency; + wd->ws.frequency = 0; + } else { + wd->frequency = zfChGetFirstChannel(dev, &bPassive); + + if (wd->wlanMode == ZM_MODE_IBSS) { + if (wd->ws.adhocMode == ZM_ADHOCBAND_A) + wd->frequency = ZM_CH_A_36; + else + wd->frequency = ZM_CH_G_6; + } + } #ifdef ZM_AP_DEBUG - /* honda add for debug, 2437 channel 6, 2452 channel 9 */ - wd->frequency = 2437; - /* end of add by honda */ + /* honda add for debug, 2437 channel 6, 2452 channel 9 */ + wd->frequency = 2437; + /* end of add by honda */ #endif - /* set preamble type */ - switch (wd->ws.preambleType) - { - case ZM_PREAMBLE_TYPE_AUTO: - case ZM_PREAMBLE_TYPE_SHORT: - case ZM_PREAMBLE_TYPE_LONG: - wd->preambleType = wd->ws.preambleType; - break; - default: - wd->preambleType = ZM_PREAMBLE_TYPE_SHORT; - break; - } - wd->ws.preambleType = 0; - - if ( wd->wlanMode == ZM_MODE_AP ) - { - vapId = zfwGetVapId(dev); - - if (vapId == 0xffff) - { - wd->ap.authAlgo[0] = wd->ws.authMode; - wd->ap.encryMode[0] = wd->ws.encryMode; - } - else - { - wd->ap.authAlgo[vapId + 1] = wd->ws.authMode; - wd->ap.encryMode[vapId + 1] = wd->ws.encryMode; - } - wd->ws.authMode = 0; - wd->ws.encryMode = ZM_NO_WEP; - - /* Get beaconInterval from WrapperSetting */ - if ((wd->ws.beaconInterval >= 20) && (wd->ws.beaconInterval <= 1000)) - { - wd->beaconInterval = wd->ws.beaconInterval; - } - else - { - wd->beaconInterval = 100; //100ms - } - - if (wd->ws.dtim > 0) - { - wd->dtim = wd->ws.dtim; - } - else - { - wd->dtim = 1; - } - - wd->ap.qosMode = wd->ws.apWmeEnabled & 0x1; - wd->ap.uapsdEnabled = (wd->ws.apWmeEnabled & 0x2) >> 1; - } - else - { - wd->sta.authMode = wd->ws.authMode; - wd->sta.currentAuthMode = wd->ws.authMode; - wd->sta.wepStatus = wd->ws.wepStatus; - - if ( wd->ws.beaconInterval ) - { - wd->beaconInterval = wd->ws.beaconInterval; - } - else - { - wd->beaconInterval = 0x64; - } - - if ( wd->wlanMode == ZM_MODE_IBSS ) - { - /* 1. Set default channel 6 (2437MHz) */ -// wd->frequency = 2437; - - /* 2. Otus support 802.11g Mode */ - if ((wd->ws.adhocMode == ZM_ADHOCBAND_G) || - (wd->ws.adhocMode == ZM_ADHOCBAND_BG) || - (wd->ws.adhocMode == ZM_ADHOCBAND_ABG) ) { - wd->wfc.bIbssGMode = 1; - } else { - wd->wfc.bIbssGMode = 0; - } - - /* 3. set short preamble */ - //wd->sta.preambleType = ZM_PREAMBLE_TYPE_SHORT ; - } - - /* set ATIM window */ - if ( wd->ws.atimWindow ) - { - wd->sta.atimWindow = wd->ws.atimWindow; - } - else - { - //wd->sta.atimWindow = 0x0a; - wd->sta.atimWindow = 0; - } - - //wd->sta.connectingHiddenAP = 1;//wd->ws.connectingHiddenAP; - wd->sta.dropUnencryptedPkts = wd->ws.dropUnencryptedPkts; - wd->sta.ibssJoinOnly = wd->ws.ibssJoinOnly; - - if ( wd->ws.bDesiredBssid ) - { - zfMemoryCopy(wd->sta.desiredBssid, wd->ws.desiredBssid, 6); - wd->sta.bDesiredBssid = TRUE; - wd->ws.bDesiredBssid = FALSE; - } - else - { - wd->sta.bDesiredBssid = FALSE; - } - - /* check ssid */ - if ( wd->ws.ssidLen != 0 ) - { - if ( (!zfMemoryIsEqual(wd->ws.ssid, wd->sta.ssid, - wd->sta.ssidLen))|| - (wd->ws.ssidLen != wd->sta.ssidLen)|| - (wd->sta.authMode == ZM_AUTH_MODE_WPA)|| - (wd->sta.authMode == ZM_AUTH_MODE_WPAPSK) || - (wd->ws.staWmeQosInfo!= 0) ) - { - /*if u-APSD test(set QosInfo), clear connectByReasso to do association (not reassociation)*/ - wd->sta.connectByReasso = FALSE; - wd->sta.failCntOfReasso = 0; - wd->sta.pmkidInfo.bssidCount = 0; - - wd->sta.ssidLen = wd->ws.ssidLen; - zfMemoryCopy(wd->sta.ssid, wd->ws.ssid, wd->sta.ssidLen); - - if ( wd->sta.ssidLen < 32 ) - { - wd->sta.ssid[wd->sta.ssidLen] = 0; - } - } - } - else - { /* ANY BSS */ - wd->sta.ssid[0] = 0; - wd->sta.ssidLen = 0; - } - - wd->sta.wmeEnabled = wd->ws.staWmeEnabled; - wd->sta.wmeQosInfo = wd->ws.staWmeQosInfo; - - } - - zmw_leave_critical_section(dev); + /* set preamble type */ + switch (wd->ws.preambleType) { + case ZM_PREAMBLE_TYPE_AUTO: + case ZM_PREAMBLE_TYPE_SHORT: + case ZM_PREAMBLE_TYPE_LONG: + wd->preambleType = wd->ws.preambleType; + break; + default: + wd->preambleType = ZM_PREAMBLE_TYPE_SHORT; + break; + } + wd->ws.preambleType = 0; + + if (wd->wlanMode == ZM_MODE_AP) { + vapId = zfwGetVapId(dev); + + if (vapId == 0xffff) { + wd->ap.authAlgo[0] = wd->ws.authMode; + wd->ap.encryMode[0] = wd->ws.encryMode; + } else { + wd->ap.authAlgo[vapId + 1] = wd->ws.authMode; + wd->ap.encryMode[vapId + 1] = wd->ws.encryMode; + } + wd->ws.authMode = 0; + wd->ws.encryMode = ZM_NO_WEP; + + /* Get beaconInterval from WrapperSetting */ + if ((wd->ws.beaconInterval >= 20) && + (wd->ws.beaconInterval <= 1000)) + wd->beaconInterval = wd->ws.beaconInterval; + else + wd->beaconInterval = 100; /* 100ms */ + + if (wd->ws.dtim > 0) + wd->dtim = wd->ws.dtim; + else + wd->dtim = 1; + + + wd->ap.qosMode = wd->ws.apWmeEnabled & 0x1; + wd->ap.uapsdEnabled = (wd->ws.apWmeEnabled & 0x2) >> 1; + } else { + wd->sta.authMode = wd->ws.authMode; + wd->sta.currentAuthMode = wd->ws.authMode; + wd->sta.wepStatus = wd->ws.wepStatus; + + if (wd->ws.beaconInterval) + wd->beaconInterval = wd->ws.beaconInterval; + else + wd->beaconInterval = 0x64; + + if (wd->wlanMode == ZM_MODE_IBSS) { + /* 1. Set default channel 6 (2437MHz) */ + /* wd->frequency = 2437; */ + + /* 2. Otus support 802.11g Mode */ + if ((wd->ws.adhocMode == ZM_ADHOCBAND_G) || + (wd->ws.adhocMode == ZM_ADHOCBAND_BG) || + (wd->ws.adhocMode == ZM_ADHOCBAND_ABG)) + wd->wfc.bIbssGMode = 1; + else + wd->wfc.bIbssGMode = 0; + + /* 3. set short preamble */ + /* wd->sta.preambleType = ZM_PREAMBLE_TYPE_SHORT; */ + } + + /* set ATIM window */ + if (wd->ws.atimWindow) + wd->sta.atimWindow = wd->ws.atimWindow; + else { + /* wd->sta.atimWindow = 0x0a; */ + wd->sta.atimWindow = 0; + } + + /* wd->sta.connectingHiddenAP = 1; + wd->ws.connectingHiddenAP; + */ + wd->sta.dropUnencryptedPkts = wd->ws.dropUnencryptedPkts; + wd->sta.ibssJoinOnly = wd->ws.ibssJoinOnly; + + if (wd->ws.bDesiredBssid) { + zfMemoryCopy(wd->sta.desiredBssid, + wd->ws.desiredBssid, 6); + wd->sta.bDesiredBssid = TRUE; + wd->ws.bDesiredBssid = FALSE; + } else + wd->sta.bDesiredBssid = FALSE; + + /* check ssid */ + if (wd->ws.ssidLen != 0) { + if ((!zfMemoryIsEqual(wd->ws.ssid, wd->sta.ssid, + wd->sta.ssidLen)) || + (wd->ws.ssidLen != wd->sta.ssidLen) || + (wd->sta.authMode == ZM_AUTH_MODE_WPA) || + (wd->sta.authMode == ZM_AUTH_MODE_WPAPSK) || + (wd->ws.staWmeQosInfo != 0)) { + /* if u-APSD test(set QosInfo), clear + connectByReasso to do association + (not reassociation) + */ + wd->sta.connectByReasso = FALSE; + wd->sta.failCntOfReasso = 0; + wd->sta.pmkidInfo.bssidCount = 0; + + wd->sta.ssidLen = wd->ws.ssidLen; + zfMemoryCopy(wd->sta.ssid, wd->ws.ssid, + wd->sta.ssidLen); + + if (wd->sta.ssidLen < 32) + wd->sta.ssid[wd->sta.ssidLen] = 0; + } + } else { + /* ANY BSS */ + wd->sta.ssid[0] = 0; + wd->sta.ssidLen = 0; + } + + wd->sta.wmeEnabled = wd->ws.staWmeEnabled; + wd->sta.wmeQosInfo = wd->ws.staWmeQosInfo; + + } + + zmw_leave_critical_section(dev); } -u16_t zfWlanEnable(zdev_t* dev) +u16_t zfWlanEnable(zdev_t *dev) { - u8_t bssid[6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; - u16_t i; - - zmw_get_wlan_dev(dev); - - zmw_declare_for_critical_section(); - - if ( wd->wlanMode == ZM_MODE_UNKNOWN ) - { - zm_debug_msg0("Unknown Mode...Skip..."); - return 0; - } - - if (wd->wlanMode == ZM_MODE_AP) - { - u16_t vapId; - - vapId = zfwGetVapId(dev); - - if (vapId == 0xffff) - { - /* AP mode */ - zfApInitStaTbl(dev); - - /* AP default parameters */ - wd->bRate = 0xf; - wd->gRate = 0xff; - wd->bRateBasic = 0xf; - wd->gRateBasic = 0x0; - //wd->beaconInterval = 100; - wd->ap.apBitmap = 1; - wd->ap.beaconCounter = 0; - //wd->ap.vapNumber = 1; //mark by ygwei for Vap - - wd->ap.hideSsid[0] = 0; - wd->ap.staAgingTimeSec = 10*60; - wd->ap.staProbingTimeSec = 60; - - for (i=0; i<ZM_MAX_AP_SUPPORT; i++) - { - wd->ap.bcmcHead[i] = wd->ap.bcmcTail[i] = 0; - } - - //wd->ap.uniHead = wd->ap.uniTail = 0; - - /* load AP parameters */ - wd->bRateBasic = wd->ws.bRateBasic; - wd->gRateBasic = wd->ws.gRateBasic; - wd->bgMode = wd->ws.bgMode; - if ((wd->ws.ssidLen <= 32) && (wd->ws.ssidLen != 0)) - { - wd->ap.ssidLen[0] = wd->ws.ssidLen; - for(i=0; i<wd->ws.ssidLen; i++) - { - wd->ap.ssid[0][i] = wd->ws.ssid[i]; - } - wd->ws.ssidLen = 0; // Reset Wrapper Variable - } - - if (wd->ap.encryMode[0] == 0) - { - wd->ap.capab[0] = 0x001; - } - else - { - wd->ap.capab[0] = 0x011; - } - /* set Short Slot Time bit if not 11b */ - if (wd->ap.wlanType[0] != ZM_WLAN_TYPE_PURE_B) - { - wd->ap.capab[0] |= 0x400; - } - - // wd->ap.vapNumber = 1; // mark by ygwei for Vap Test - } - else - { + u8_t bssid[6] = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; + u16_t i; + + zmw_get_wlan_dev(dev); + + zmw_declare_for_critical_section(); + + if (wd->wlanMode == ZM_MODE_UNKNOWN) { + zm_debug_msg0("Unknown Mode...Skip..."); + return 0; + } + + if (wd->wlanMode == ZM_MODE_AP) { + u16_t vapId; + + vapId = zfwGetVapId(dev); + + if (vapId == 0xffff) { + /* AP mode */ + zfApInitStaTbl(dev); + + /* AP default parameters */ + wd->bRate = 0xf; + wd->gRate = 0xff; + wd->bRateBasic = 0xf; + wd->gRateBasic = 0x0; + /* wd->beaconInterval = 100; */ + wd->ap.apBitmap = 1; + wd->ap.beaconCounter = 0; + /* wd->ap.vapNumber = 1; //mark by ygwei for Vap */ + + wd->ap.hideSsid[0] = 0; + wd->ap.staAgingTimeSec = 10*60; + wd->ap.staProbingTimeSec = 60; + + for (i = 0; i < ZM_MAX_AP_SUPPORT; i++) + wd->ap.bcmcHead[i] = wd->ap.bcmcTail[i] = 0; + + /* wd->ap.uniHead = wd->ap.uniTail = 0; */ + + /* load AP parameters */ + wd->bRateBasic = wd->ws.bRateBasic; + wd->gRateBasic = wd->ws.gRateBasic; + wd->bgMode = wd->ws.bgMode; + if ((wd->ws.ssidLen <= 32) && (wd->ws.ssidLen != 0)) { + wd->ap.ssidLen[0] = wd->ws.ssidLen; + for (i = 0; i < wd->ws.ssidLen; i++) + wd->ap.ssid[0][i] = wd->ws.ssid[i]; + wd->ws.ssidLen = 0; /* Reset Wrapper Variable */ + } + + if (wd->ap.encryMode[0] == 0) + wd->ap.capab[0] = 0x001; + else + wd->ap.capab[0] = 0x011; + /* set Short Slot Time bit if not 11b */ + if (wd->ap.wlanType[0] != ZM_WLAN_TYPE_PURE_B) + wd->ap.capab[0] |= 0x400; + + /* wd->ap.vapNumber = 1; //mark by ygwei for Vap Test */ + } else { #if 0 - /* VAP Test Code */ - wd->ap.apBitmap = 0x3; - wd->ap.capab[1] = 0x401; - wd->ap.ssidLen[1] = 4; - wd->ap.ssid[1][0] = 'v'; - wd->ap.ssid[1][1] = 'a'; - wd->ap.ssid[1][2] = 'p'; - wd->ap.ssid[1][3] = '1'; - wd->ap.authAlgo[1] = wd->ws.authMode; - wd->ap.encryMode[1] = wd->ws.encryMode; - wd->ap.vapNumber = 2; + /* VAP Test Code */ + wd->ap.apBitmap = 0x3; + wd->ap.capab[1] = 0x401; + wd->ap.ssidLen[1] = 4; + wd->ap.ssid[1][0] = 'v'; + wd->ap.ssid[1][1] = 'a'; + wd->ap.ssid[1][2] = 'p'; + wd->ap.ssid[1][3] = '1'; + wd->ap.authAlgo[1] = wd->ws.authMode; + wd->ap.encryMode[1] = wd->ws.encryMode; + wd->ap.vapNumber = 2; #else - /* VAP Test Code */ - wd->ap.apBitmap = 0x1 | (0x01 << (vapId+1)); - - if ((wd->ws.ssidLen <= 32) && (wd->ws.ssidLen != 0)) - { - wd->ap.ssidLen[vapId+1] = wd->ws.ssidLen; - for(i=0; i<wd->ws.ssidLen; i++) - { - wd->ap.ssid[vapId+1][i] = wd->ws.ssid[i]; - } - wd->ws.ssidLen = 0; // Reset Wrapper Variable - } - - if (wd->ap.encryMode[vapId+1] == 0) - { - wd->ap.capab[vapId+1] = 0x401; - } - else - { - wd->ap.capab[vapId+1] = 0x411; - } - - wd->ap.authAlgo[vapId+1] = wd->ws.authMode; - wd->ap.encryMode[vapId+1] = wd->ws.encryMode; - - /* Need to be modified when VAP is used */ - //wd->ap.vapNumber = 2; + /* VAP Test Code */ + wd->ap.apBitmap = 0x1 | (0x01 << (vapId+1)); + + if ((wd->ws.ssidLen <= 32) && (wd->ws.ssidLen != 0)) { + wd->ap.ssidLen[vapId+1] = wd->ws.ssidLen; + for (i = 0; i < wd->ws.ssidLen; i++) + wd->ap.ssid[vapId+1][i] = + wd->ws.ssid[i]; + wd->ws.ssidLen = 0; /* Reset Wrapper Variable */ + } + + if (wd->ap.encryMode[vapId+1] == 0) + wd->ap.capab[vapId+1] = 0x401; + else + wd->ap.capab[vapId+1] = 0x411; + + wd->ap.authAlgo[vapId+1] = wd->ws.authMode; + wd->ap.encryMode[vapId+1] = wd->ws.encryMode; + + /* Need to be modified when VAP is used */ + /* wd->ap.vapNumber = 2; */ #endif - } - - wd->ap.vapNumber++; - - zfCoreSetFrequency(dev, wd->frequency); - - zfInitMacApMode(dev); - - /* Disable protection mode */ - zfApSetProtectionMode(dev, 0); - - zfApSendBeacon(dev); - } /*if (wd->wlanMode == ZM_MODE_AP) */ - else - { - zfScanMgrScanStop(dev, ZM_SCAN_MGR_SCAN_INTERNAL); - zfScanMgrScanStop(dev, ZM_SCAN_MGR_SCAN_EXTERNAL); - - zmw_enter_critical_section(dev); - wd->sta.oppositeCount = 0; /* reset opposite count */ - //wd->sta.bAutoReconnect = wd->sta.bAutoReconnectEnabled; - //wd->sta.scanWithSSID = 0; - zfStaInitOppositeInfo(dev); - zmw_leave_critical_section(dev); - - zfStaResetStatus(dev, 0); - - if ( (wd->sta.cmDisallowSsidLength != 0)&& - (wd->sta.ssidLen == wd->sta.cmDisallowSsidLength)&& - (zfMemoryIsEqual(wd->sta.ssid, wd->sta.cmDisallowSsid, - wd->sta.ssidLen)) && - (wd->sta.wepStatus == ZM_ENCRYPTION_TKIP)) - { /* countermeasures */ - zm_debug_msg0("countermeasures disallow association"); - - } - else - { - switch( wd->wlanMode ) - { - case ZM_MODE_IBSS: - /* some registers may be set here */ - if ( wd->sta.authMode == ZM_AUTH_MODE_WPA2PSK ) - { - zfHpSetApStaMode(dev, ZM_HAL_80211_MODE_IBSS_WPA2PSK); - } - else - { - zfHpSetApStaMode(dev, ZM_HAL_80211_MODE_IBSS_GENERAL); - } - - zm_msg0_mm(ZM_LV_0, "ZM_MODE_IBSS"); - zfIbssConnectNetwork(dev); - break; - - case ZM_MODE_INFRASTRUCTURE: - /* some registers may be set here */ - zfHpSetApStaMode(dev, ZM_HAL_80211_MODE_STA); - - zfInfraConnectNetwork(dev); - break; - - case ZM_MODE_PSEUDO: - /* some registers may be set here */ - zfHpSetApStaMode(dev, ZM_HAL_80211_MODE_STA); - - zfUpdateBssid(dev, bssid); - zfCoreSetFrequency(dev, wd->frequency); - break; - - default: - break; - } - } - - } - - - //if ( (wd->wlanMode != ZM_MODE_INFRASTRUCTURE)&& - // (wd->wlanMode != ZM_MODE_AP) ) - if ( wd->wlanMode == ZM_MODE_PSEUDO ) - { - /* Reset Wlan status */ - zfWlanReset(dev); - - if (wd->zfcbConnectNotify != NULL) - { - wd->zfcbConnectNotify(dev, ZM_STATUS_MEDIA_CONNECT, wd->sta.bssid); - } - zfChangeAdapterState(dev, ZM_STA_STATE_CONNECTED); - } - - - if(wd->wlanMode == ZM_MODE_AP) - { - if (wd->zfcbConnectNotify != NULL) - { - wd->zfcbConnectNotify(dev, ZM_STATUS_MEDIA_CONNECT, wd->sta.bssid); - } - //zfChangeAdapterState(dev, ZM_STA_STATE_CONNECTED); - } - - // Assign default Tx Rate - if ( wd->sta.EnableHT ) - { + } + + wd->ap.vapNumber++; + + zfCoreSetFrequency(dev, wd->frequency); + + zfInitMacApMode(dev); + + /* Disable protection mode */ + zfApSetProtectionMode(dev, 0); + + zfApSendBeacon(dev); + } else { /*if (wd->wlanMode == ZM_MODE_AP) */ + + zfScanMgrScanStop(dev, ZM_SCAN_MGR_SCAN_INTERNAL); + zfScanMgrScanStop(dev, ZM_SCAN_MGR_SCAN_EXTERNAL); + + zmw_enter_critical_section(dev); + wd->sta.oppositeCount = 0; /* reset opposite count */ + /* wd->sta.bAutoReconnect = wd->sta.bAutoReconnectEnabled; */ + /* wd->sta.scanWithSSID = 0; */ + zfStaInitOppositeInfo(dev); + zmw_leave_critical_section(dev); + + zfStaResetStatus(dev, 0); + + if ((wd->sta.cmDisallowSsidLength != 0) && + (wd->sta.ssidLen == wd->sta.cmDisallowSsidLength) && + (zfMemoryIsEqual(wd->sta.ssid, wd->sta.cmDisallowSsid, + wd->sta.ssidLen)) && + (wd->sta.wepStatus == ZM_ENCRYPTION_TKIP)) {/*countermeasures*/ + zm_debug_msg0("countermeasures disallow association"); + } else { + switch (wd->wlanMode) { + case ZM_MODE_IBSS: + /* some registers may be set here */ + if (wd->sta.authMode == ZM_AUTH_MODE_WPA2PSK) + zfHpSetApStaMode(dev, + ZM_HAL_80211_MODE_IBSS_WPA2PSK); + else + zfHpSetApStaMode(dev, + ZM_HAL_80211_MODE_IBSS_GENERAL); + + zm_msg0_mm(ZM_LV_0, "ZM_MODE_IBSS"); + zfIbssConnectNetwork(dev); + break; + + case ZM_MODE_INFRASTRUCTURE: + /* some registers may be set here */ + zfHpSetApStaMode(dev, ZM_HAL_80211_MODE_STA); + + zfInfraConnectNetwork(dev); + break; + + case ZM_MODE_PSEUDO: + /* some registers may be set here */ + zfHpSetApStaMode(dev, ZM_HAL_80211_MODE_STA); + + zfUpdateBssid(dev, bssid); + zfCoreSetFrequency(dev, wd->frequency); + break; + + default: + break; + } + } + + } + + + /* if ((wd->wlanMode != ZM_MODE_INFRASTRUCTURE) && + (wd->wlanMode != ZM_MODE_AP)) + */ + if (wd->wlanMode == ZM_MODE_PSEUDO) { + /* Reset Wlan status */ + zfWlanReset(dev); + + if (wd->zfcbConnectNotify != NULL) + wd->zfcbConnectNotify(dev, ZM_STATUS_MEDIA_CONNECT, + wd->sta.bssid); + zfChangeAdapterState(dev, ZM_STA_STATE_CONNECTED); + } + + + if (wd->wlanMode == ZM_MODE_AP) { + if (wd->zfcbConnectNotify != NULL) + wd->zfcbConnectNotify(dev, ZM_STATUS_MEDIA_CONNECT, + wd->sta.bssid); + /* zfChangeAdapterState(dev, ZM_STA_STATE_CONNECTED); */ + } + + /* Assign default Tx Rate */ + if (wd->sta.EnableHT) { u32_t oneTxStreamCap; - oneTxStreamCap = (zfHpCapability(dev) & ZM_HP_CAP_11N_ONE_TX_STREAM); - if(oneTxStreamCap) + oneTxStreamCap = (zfHpCapability(dev) & + ZM_HP_CAP_11N_ONE_TX_STREAM); + if (oneTxStreamCap) wd->CurrentTxRateKbps = 135000; else wd->CurrentTxRateKbps = 270000; - wd->CurrentRxRateKbps = 270000; - } - else - { - wd->CurrentTxRateKbps = 54000; - wd->CurrentRxRateKbps = 54000; - } + wd->CurrentRxRateKbps = 270000; + } else { + wd->CurrentTxRateKbps = 54000; + wd->CurrentRxRateKbps = 54000; + } - wd->state = ZM_WLAN_STATE_ENABLED; + wd->state = ZM_WLAN_STATE_ENABLED; - return 0; + return 0; } /* Enable/disable Wlan operation */ -u16_t zfiWlanEnable(zdev_t* dev) +u16_t zfiWlanEnable(zdev_t *dev) { - u16_t ret; + u16_t ret; - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - zm_msg0_mm(ZM_LV_1, "Enable Wlan"); + zm_msg0_mm(ZM_LV_1, "Enable Wlan"); - zfGetWrapperSetting(dev); + zfGetWrapperSetting(dev); - zfZeroMemory((u8_t*) &wd->trafTally, sizeof(struct zsTrafTally)); + zfZeroMemory((u8_t *) &wd->trafTally, sizeof(struct zsTrafTally)); + + /* Reset cmMicFailureCount to 0 for new association request */ + if (wd->sta.cmMicFailureCount == 1) { + zfTimerCancel(dev, ZM_EVENT_CM_TIMER); + wd->sta.cmMicFailureCount = 0; + } - // Reset cmMicFailureCount to 0 for new association request - if ( wd->sta.cmMicFailureCount == 1 ) - { - zfTimerCancel(dev, ZM_EVENT_CM_TIMER); - wd->sta.cmMicFailureCount = 0; - } + zfFlushVtxq(dev); + if ((wd->queueFlushed & 0x10) != 0) + zfHpUsbReset(dev); - zfFlushVtxq(dev); - if ((wd->queueFlushed & 0x10) != 0) - { - zfHpUsbReset(dev); - } - ret = zfWlanEnable(dev); + ret = zfWlanEnable(dev); - return ret; + return ret; } /* Add a flag named ResetKeyCache to show if KeyCache should be cleared. for hostapd in AP mode, if driver receives iwconfig ioctl - after setting group key, it shouldn't clear KeyCache. */ -u16_t zfiWlanDisable(zdev_t* dev, u8_t ResetKeyCache) + after setting group key, it shouldn't clear KeyCache. +*/ +u16_t zfiWlanDisable(zdev_t *dev, u8_t ResetKeyCache) { - u16_t i; - u8_t isConnected; + u16_t i; + u8_t isConnected; - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); #ifdef ZM_ENABLE_IBSS_WPA2PSK - zmw_declare_for_critical_section(); + zmw_declare_for_critical_section(); #endif - wd->state = ZM_WLAN_STATE_DISABLED; - - zm_msg0_mm(ZM_LV_1, "Disable Wlan"); - - if ( wd->wlanMode != ZM_MODE_AP ) - { - isConnected = zfStaIsConnected(dev); - - if ( (wd->wlanMode == ZM_MODE_INFRASTRUCTURE)&& - (wd->sta.currentAuthMode != ZM_AUTH_MODE_WPA2) ) - { - /* send deauthentication frame */ - if (isConnected) - { - //zfiWlanDeauth(dev, NULL, 0); - zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_DEAUTH, wd->sta.bssid, 3, 0, 0); - //zmw_debug_msg0("send a Deauth frame!"); - } - } - - // Remove all the connected peer stations - if ( wd->wlanMode == ZM_MODE_IBSS ) - { - wd->sta.ibssBssIsCreator = 0; - zfTimerCancel(dev, ZM_EVENT_IBSS_MONITOR); - zfStaIbssMonitoring(dev, 1); - } + wd->state = ZM_WLAN_STATE_DISABLED; + + zm_msg0_mm(ZM_LV_1, "Disable Wlan"); + + if (wd->wlanMode != ZM_MODE_AP) { + isConnected = zfStaIsConnected(dev); + + if ((wd->wlanMode == ZM_MODE_INFRASTRUCTURE) && + (wd->sta.currentAuthMode != ZM_AUTH_MODE_WPA2)) { + /* send deauthentication frame */ + if (isConnected) { + /* zfiWlanDeauth(dev, NULL, 0); */ + zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_DEAUTH, + wd->sta.bssid, 3, 0, 0); + /* zmw_debug_msg0("send a Deauth frame!"); */ + } + } + + /* Remove all the connected peer stations */ + if (wd->wlanMode == ZM_MODE_IBSS) { + wd->sta.ibssBssIsCreator = 0; + zfTimerCancel(dev, ZM_EVENT_IBSS_MONITOR); + zfStaIbssMonitoring(dev, 1); + } #ifdef ZM_ENABLE_IBSS_WPA2PSK - zmw_enter_critical_section(dev); - wd->sta.ibssWpa2Psk = 0; - zmw_leave_critical_section(dev); + zmw_enter_critical_section(dev); + wd->sta.ibssWpa2Psk = 0; + zmw_leave_critical_section(dev); #endif - wd->sta.wpaState = ZM_STA_WPA_STATE_INIT; - - /* reset connect timeout counter */ - wd->sta.connectTimeoutCount = 0; - - /* reset connectState to None */ - wd->sta.connectState = ZM_STA_CONN_STATE_NONE; - - /* reset leap enable variable */ - wd->sta.leapEnabled = 0; - - /* Disable the RIFS Status / RIFS-like frame count / RIFS count */ - if( wd->sta.rifsState == ZM_RIFS_STATE_DETECTED ) - zfHpDisableRifs(dev); - wd->sta.rifsState = ZM_RIFS_STATE_DETECTING; - wd->sta.rifsLikeFrameCnt = 0; - wd->sta.rifsCount = 0; - - wd->sta.osRxFilter = 0; - wd->sta.bSafeMode = 0; - - zfChangeAdapterState(dev, ZM_STA_STATE_DISCONNECT); - if (ResetKeyCache) - zfHpResetKeyCache(dev); - - if (isConnected) - { - if (wd->zfcbConnectNotify != NULL) - { - wd->zfcbConnectNotify(dev, ZM_STATUS_MEDIA_CONNECTION_DISABLED, wd->sta.bssid); - } - } - else - { - if (wd->zfcbConnectNotify != NULL) - { - wd->zfcbConnectNotify(dev, ZM_STATUS_MEDIA_DISABLED, wd->sta.bssid); - } - } - } - else //if (wd->wlanMode == ZM_MODE_AP) - { - for (i=0; i<ZM_MAX_STA_SUPPORT; i++) - { - /* send deauthentication frame */ - if (wd->ap.staTable[i].valid == 1) - { - /* Reason : Sending station is leaving */ - zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_DEAUTH, - wd->ap.staTable[i].addr, 3, 0, 0); - } - } - - if (ResetKeyCache) - zfHpResetKeyCache(dev); - - wd->ap.vapNumber--; - } - - /* stop beacon */ - zfHpDisableBeacon(dev); - - /* Flush VTxQ and MmQ */ - zfFlushVtxq(dev); - /* Flush AP PS queues */ - zfApFlushBufferedPsFrame(dev); - /* Free buffer in defragment list*/ - zfAgingDefragList(dev, 1); - - #ifdef ZM_ENABLE_AGGREGATION - /* add by honda */ - zfAggRxFreeBuf(dev, 0); //1 for release structure memory - /* end of add by honda */ - #endif - - // Clear the information for the peer stations of IBSS or AP of Station mode - zfZeroMemory((u8_t*)wd->sta.oppositeInfo, sizeof(struct zsOppositeInfo) * ZM_MAX_OPPOSITE_COUNT); - - /* Turn off Software WEP/TKIP */ - if (wd->sta.SWEncryptEnable != 0) - { - zm_debug_msg0("Disable software encryption"); - zfStaDisableSWEncryption(dev); - } - - /* Improve WEP/TKIP performace with HT AP, detail information please look bug#32495 */ - //zfHpSetTTSIFSTime(dev, 0x8); - - return 0; -} + wd->sta.wpaState = ZM_STA_WPA_STATE_INIT; + + /* reset connect timeout counter */ + wd->sta.connectTimeoutCount = 0; + + /* reset connectState to None */ + wd->sta.connectState = ZM_STA_CONN_STATE_NONE; + + /* reset leap enable variable */ + wd->sta.leapEnabled = 0; + + /* Disable the RIFS Status/RIFS-like frame count/RIFS count */ + if (wd->sta.rifsState == ZM_RIFS_STATE_DETECTED) + zfHpDisableRifs(dev); + wd->sta.rifsState = ZM_RIFS_STATE_DETECTING; + wd->sta.rifsLikeFrameCnt = 0; + wd->sta.rifsCount = 0; + + wd->sta.osRxFilter = 0; + wd->sta.bSafeMode = 0; + + zfChangeAdapterState(dev, ZM_STA_STATE_DISCONNECT); + if (ResetKeyCache) + zfHpResetKeyCache(dev); + + if (isConnected) { + if (wd->zfcbConnectNotify != NULL) + wd->zfcbConnectNotify(dev, + ZM_STATUS_MEDIA_CONNECTION_DISABLED, + wd->sta.bssid); + } else { + if (wd->zfcbConnectNotify != NULL) + wd->zfcbConnectNotify(dev, + ZM_STATUS_MEDIA_DISABLED, wd->sta.bssid); + } + } else { /* if (wd->wlanMode == ZM_MODE_AP) */ + for (i = 0; i < ZM_MAX_STA_SUPPORT; i++) { + /* send deauthentication frame */ + if (wd->ap.staTable[i].valid == 1) { + /* Reason : Sending station is leaving */ + zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_DEAUTH, + wd->ap.staTable[i].addr, 3, 0, 0); + } + } + + if (ResetKeyCache) + zfHpResetKeyCache(dev); + + wd->ap.vapNumber--; + } -u16_t zfiWlanSuspend(zdev_t* dev) -{ - zmw_get_wlan_dev(dev); - zmw_declare_for_critical_section(); + /* stop beacon */ + zfHpDisableBeacon(dev); + + /* Flush VTxQ and MmQ */ + zfFlushVtxq(dev); + /* Flush AP PS queues */ + zfApFlushBufferedPsFrame(dev); + /* Free buffer in defragment list*/ + zfAgingDefragList(dev, 1); + +#ifdef ZM_ENABLE_AGGREGATION + /* add by honda */ + zfAggRxFreeBuf(dev, 0); /* 1 for release structure memory */ + /* end of add by honda */ +#endif + + /* Clear the information for the peer stations + of IBSS or AP of Station mode + */ + zfZeroMemory((u8_t *)wd->sta.oppositeInfo, + sizeof(struct zsOppositeInfo) * ZM_MAX_OPPOSITE_COUNT); - // Change the HAL state to init so that any packet can't be transmitted between - // resume & HAL reinit. This would cause the chip hang issue in OTUS. - zmw_enter_critical_section(dev); - wd->halState = ZM_HAL_STATE_INIT; - zmw_leave_critical_section(dev); + /* Turn off Software WEP/TKIP */ + if (wd->sta.SWEncryptEnable != 0) { + zm_debug_msg0("Disable software encryption"); + zfStaDisableSWEncryption(dev); + } + + /* Improve WEP/TKIP performace with HT AP, + detail information please look bug#32495 */ + /* zfHpSetTTSIFSTime(dev, 0x8); */ + + return 0; +} - return 0; +u16_t zfiWlanSuspend(zdev_t *dev) +{ + zmw_get_wlan_dev(dev); + zmw_declare_for_critical_section(); + + /* Change the HAL state to init so that any packet + can't be transmitted between resume & HAL reinit. + This would cause the chip hang issue in OTUS. + */ + zmw_enter_critical_section(dev); + wd->halState = ZM_HAL_STATE_INIT; + zmw_leave_critical_section(dev); + + return 0; } -u16_t zfiWlanResume(zdev_t* dev, u8_t doReconn) +u16_t zfiWlanResume(zdev_t *dev, u8_t doReconn) { - u16_t ret; - zmw_get_wlan_dev(dev); - zmw_declare_for_critical_section(); - - /* Redownload firmware, Reinit MAC,PHY,RF */ - zfHpReinit(dev, wd->frequency); - - //Set channel according to AP's configuration - zfCoreSetFrequencyExV2(dev, wd->frequency, wd->BandWidth40, - wd->ExtOffset, NULL, 1); - - zfHpSetMacAddress(dev, wd->macAddr, 0); - - /* Start Rx */ - zfHpStartRecv(dev); - - zfFlushVtxq(dev); - - if ( wd->wlanMode != ZM_MODE_INFRASTRUCTURE && - wd->wlanMode != ZM_MODE_IBSS ) - { - return 1; - } - - zm_msg0_mm(ZM_LV_1, "Resume Wlan"); - if ( (zfStaIsConnected(dev)) || (zfStaIsConnecting(dev)) ) - { - if (doReconn == 1) - { - zm_msg0_mm(ZM_LV_1, "Re-connect..."); - zmw_enter_critical_section(dev); - wd->sta.connectByReasso = FALSE; - zmw_leave_critical_section(dev); - - zfWlanEnable(dev); - } - else if (doReconn == 0) - { - zfHpSetRollCallTable(dev); - } - } - - ret = 0; - - return ret; + u16_t ret; + zmw_get_wlan_dev(dev); + zmw_declare_for_critical_section(); + + /* Redownload firmware, Reinit MAC,PHY,RF */ + zfHpReinit(dev, wd->frequency); + + /* Set channel according to AP's configuration */ + zfCoreSetFrequencyExV2(dev, wd->frequency, wd->BandWidth40, + wd->ExtOffset, NULL, 1); + + zfHpSetMacAddress(dev, wd->macAddr, 0); + + /* Start Rx */ + zfHpStartRecv(dev); + + zfFlushVtxq(dev); + + if (wd->wlanMode != ZM_MODE_INFRASTRUCTURE && + wd->wlanMode != ZM_MODE_IBSS) + return 1; + + zm_msg0_mm(ZM_LV_1, "Resume Wlan"); + if ((zfStaIsConnected(dev)) || (zfStaIsConnecting(dev))) { + if (doReconn == 1) { + zm_msg0_mm(ZM_LV_1, "Re-connect..."); + zmw_enter_critical_section(dev); + wd->sta.connectByReasso = FALSE; + zmw_leave_critical_section(dev); + + zfWlanEnable(dev); + } else if (doReconn == 0) + zfHpSetRollCallTable(dev); + } + + ret = 0; + + return ret; } /************************************************************************/ @@ -1057,235 +979,227 @@ u16_t zfiWlanResume(zdev_t* dev, u8_t doReconn) /* Stephen Chen Atheros Communications, INC. 2007.1 */ /* */ /************************************************************************/ -void zfiWlanFlushAllQueuedBuffers(zdev_t* dev) +void zfiWlanFlushAllQueuedBuffers(zdev_t *dev) { - /* Flush VTxQ and MmQ */ - zfFlushVtxq(dev); - /* Flush AP PS queues */ - zfApFlushBufferedPsFrame(dev); - /* Free buffer in defragment list*/ - zfAgingDefragList(dev, 1); + /* Flush VTxQ and MmQ */ + zfFlushVtxq(dev); + /* Flush AP PS queues */ + zfApFlushBufferedPsFrame(dev); + /* Free buffer in defragment list*/ + zfAgingDefragList(dev, 1); } /* Do WLAN site survey */ -u16_t zfiWlanScan(zdev_t* dev) +u16_t zfiWlanScan(zdev_t *dev) { - u16_t ret = 1; - zmw_get_wlan_dev(dev); - - zm_debug_msg0(""); - - zmw_declare_for_critical_section(); - - zmw_enter_critical_section(dev); - - if (wd->wlanMode == ZM_MODE_AP) - { - wd->heartBeatNotification |= ZM_BSSID_LIST_SCAN; - wd->sta.scanFrequency = 0; - //wd->sta.pUpdateBssList->bssCount = 0; - ret = 0; - } - else - { - #if 0 - if ( !zfStaBlockWlanScan(dev) ) - { - zm_debug_msg0("scan request"); - //zfTimerSchedule(dev, ZM_EVENT_SCAN, ZM_TICK_ZERO); - ret = 0; - goto start_scan; - } - #else - goto start_scan; - #endif - } - - zmw_leave_critical_section(dev); - - return ret; + u16_t ret = 1; + zmw_get_wlan_dev(dev); + + zm_debug_msg0(""); + + zmw_declare_for_critical_section(); + + zmw_enter_critical_section(dev); + + if (wd->wlanMode == ZM_MODE_AP) { + wd->heartBeatNotification |= ZM_BSSID_LIST_SCAN; + wd->sta.scanFrequency = 0; + /* wd->sta.pUpdateBssList->bssCount = 0; */ + ret = 0; + } else { +#if 0 + if (!zfStaBlockWlanScan(dev)) { + zm_debug_msg0("scan request"); + /*zfTimerSchedule(dev, ZM_EVENT_SCAN, ZM_TICK_ZERO);*/ + ret = 0; + goto start_scan; + } +#else + goto start_scan; +#endif + } + + zmw_leave_critical_section(dev); + + return ret; start_scan: - zmw_leave_critical_section(dev); + zmw_leave_critical_section(dev); - if(wd->ledStruct.LEDCtrlFlagFromReg & ZM_LED_CTRL_FLAG_ALPHA) // flag for Alpha - wd->ledStruct.LEDCtrlFlag |= ZM_LED_CTRL_FLAG_ALPHA; + if (wd->ledStruct.LEDCtrlFlagFromReg & ZM_LED_CTRL_FLAG_ALPHA) { + /* flag for Alpha */ + wd->ledStruct.LEDCtrlFlag |= ZM_LED_CTRL_FLAG_ALPHA; + } - ret = zfScanMgrScanStart(dev, ZM_SCAN_MGR_SCAN_EXTERNAL); + ret = zfScanMgrScanStart(dev, ZM_SCAN_MGR_SCAN_EXTERNAL); - zm_debug_msg1("ret = ", ret); + zm_debug_msg1("ret = ", ret); - return ret; + return ret; } -/* rate */ -/* 0 : AUTO */ -/* 1 : CCK 1M */ -/* 2 : CCK 2M */ -/* 3 : CCK 5.5M */ -/* 4 : CCK 11M */ -/* 5 : OFDM 6M */ -/* 6 : OFDM 9M */ -/* 7 : OFDM 12M */ -/* 8 : OFDM 18M */ -/* 9 : OFDM 24M */ -/* 10 : OFDM 36M */ -/* 11 : OFDM 48M */ -/* 12 : OFDM 54M */ -/* 13 : MCS 0 */ -/* 28 : MCS 15 */ +/* rate */ +/* 0 : AUTO */ +/* 1 : CCK 1M */ +/* 2 : CCK 2M */ +/* 3 : CCK 5.5M */ +/* 4 : CCK 11M */ +/* 5 : OFDM 6M */ +/* 6 : OFDM 9M */ +/* 7 : OFDM 12M */ +/* 8 : OFDM 18M */ +/* 9 : OFDM 24M */ +/* 10 : OFDM 36M */ +/* 11 : OFDM 48M */ +/* 12 : OFDM 54M */ +/* 13 : MCS 0 */ +/* 28 : MCS 15 */ u16_t zcRateToMCS[] = {0xff, 0, 1, 2, 3, 0xb, 0xf, 0xa, 0xe, 0x9, 0xd, 0x8, 0xc}; u16_t zcRateToMT[] = {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1}; -u16_t zfiWlanSetTxRate(zdev_t* dev, u16_t rate) -{ // jhlee HT 0 - zmw_get_wlan_dev(dev); - - if (rate <=12) - { - wd->txMCS = zcRateToMCS[rate]; - wd->txMT = zcRateToMT[rate]; - return ZM_SUCCESS; - } - else if ((rate<=28)||(rate==13+32)) - { - wd->txMCS = rate - 12 - 1; - wd->txMT = 2; - return ZM_SUCCESS; - } - - return ZM_ERR_INVALID_TX_RATE; +u16_t zfiWlanSetTxRate(zdev_t *dev, u16_t rate) +{ + /* jhlee HT 0 */ + zmw_get_wlan_dev(dev); + + if (rate <= 12) { + wd->txMCS = zcRateToMCS[rate]; + wd->txMT = zcRateToMT[rate]; + return ZM_SUCCESS; + } else if ((rate <= 28) || (rate == 13 + 32)) { + wd->txMCS = rate - 12 - 1; + wd->txMT = 2; + return ZM_SUCCESS; + } + + return ZM_ERR_INVALID_TX_RATE; } const u32_t zcRateIdToKbps40M[] = - { - 1000, 2000, 5500, 11000, /* 1M, 2M, 5M, 11M , 0 1 2 3*/ - 6000, 9000, 12000, 18000, /* 6M 9M 12M 18M , 4 5 6 7*/ - 24000, 36000, 48000, 54000, /* 24M 36M 48M 54M , 8 9 10 11*/ - 13500, 27000, 40500, 54000, /* MCS0 MCS1 MCS2 MCS3 , 12 13 14 15*/ - 81000, 108000, 121500, 135000, /* MCS4 MCS5 MCS6 MCS7 , 16 17 18 19*/ - 27000, 54000, 81000, 108000, /* MCS8 MCS9 MCS10 MCS11 , 20 21 22 23*/ - 162000, 216000, 243000, 270000, /* MCS12 MCS13 MCS14 MCS15 , 24 25 26 27*/ - 270000, 300000, 150000 /* MCS14SG, MCS15SG, MCS7SG , 28 29 30*/ - }; +{ + 1000, 2000, 5500, 11000, /* 1M, 2M, 5M, 11M , 0 1 2 3 */ + 6000, 9000, 12000, 18000, /* 6M 9M 12M 18M , 4 5 6 7 */ + 24000, 36000, 48000, 54000, /* 24M 36M 48M 54M , 8 9 10 11 */ + 13500, 27000, 40500, 54000, /* MCS0 MCS1 MCS2 MCS3 , 12 13 14 15 */ + 81000, 108000, 121500, 135000, /* MCS4 MCS5 MCS6 MCS7 , 16 17 18 19 */ + 27000, 54000, 81000, 108000, /* MCS8 MCS9 MCS10 MCS11 , 20 21 22 23 */ + 162000, 216000, 243000, 270000, /*MCS12 MCS13 MCS14 MCS15, 24 25 26 27*/ + 270000, 300000, 150000 /* MCS14SG, MCS15SG, MCS7SG , 28 29 30 */ +}; const u32_t zcRateIdToKbps20M[] = - { - 1000, 2000, 5500, 11000, /* 1M, 2M, 5M, 11M , 0 1 2 3*/ - 6000, 9000, 12000, 18000, /* 6M 9M 12M 18M , 4 5 6 7*/ - 24000, 36000, 48000, 54000, /* 24M 36M 48M 54M , 8 9 10 11*/ - 6500, 13000, 19500, 26000, /* MCS0 MCS1 MCS2 MCS3 , 12 13 14 15*/ - 39000, 52000, 58500, 65000, /* MCS4 MCS5 MCS6 MCS7 , 16 17 18 19*/ - 13000, 26000, 39000, 52000, /* MCS8 MCS9 MCS10 MCS11 , 20 21 22 23*/ - 78000, 104000, 117000, 130000, /* MCS12 MCS13 MCS14 MCS15 , 24 25 26 27*/ - 130000, 144400, 72200 /* MCS14SG, MCS15SG, MSG7SG , 28 29 30*/ - }; - -u32_t zfiWlanQueryTxRate(zdev_t* dev) { - u8_t rateId = 0xff; - zmw_get_wlan_dev(dev); - zmw_declare_for_critical_section(); - - /* If Tx rate had not been trained, return maximum Tx rate instead */ - if ((wd->wlanMode == ZM_MODE_INFRASTRUCTURE) && (zfStaIsConnected(dev))) - { - zmw_enter_critical_section(dev); - //Not in fixed rate mode - if (wd->txMCS == 0xff) - { - if ((wd->sta.oppositeInfo[0].rcCell.flag & ZM_RC_TRAINED_BIT) == 0) - { - rateId = wd->sta.oppositeInfo[0].rcCell.operationRateSet[wd->sta.oppositeInfo[0].rcCell.operationRateCount-1]; - } - else - { - rateId = wd->sta.oppositeInfo[0].rcCell.operationRateSet[wd->sta.oppositeInfo[0].rcCell.currentRateIndex]; - } - } - zmw_leave_critical_section(dev); - } - if (rateId != 0xff) - { - if (wd->sta.htCtrlBandwidth) - { - return zcRateIdToKbps40M[rateId]; - } - else - { - return zcRateIdToKbps20M[rateId]; - } - } - else - { - return wd->CurrentTxRateKbps; - } + 1000, 2000, 5500, 11000, /* 1M, 2M, 5M, 11M , 0 1 2 3 */ + 6000, 9000, 12000, 18000, /* 6M 9M 12M 18M , 4 5 6 7 */ + 24000, 36000, 48000, 54000, /* 24M 36M 48M 54M , 8 9 10 11 */ + 6500, 13000, 19500, 26000, /* MCS0 MCS1 MCS2 MCS3 , 12 13 14 15 */ + 39000, 52000, 58500, 65000, /* MCS4 MCS5 MCS6 MCS7 , 16 17 18 19 */ + 13000, 26000, 39000, 52000, /* MCS8 MCS9 MCS10 MCS11 , 20 21 22 23 */ + 78000, 104000, 117000, 130000, /* MCS12 MCS13 MCS14 MCS15, 24 25 26 27*/ + 130000, 144400, 72200 /* MCS14SG, MCS15SG, MSG7SG , 28 29 30 */ +}; + +u32_t zfiWlanQueryTxRate(zdev_t *dev) +{ + u8_t rateId = 0xff; + zmw_get_wlan_dev(dev); + zmw_declare_for_critical_section(); + + /* If Tx rate had not been trained, return maximum Tx rate instead */ + if ((wd->wlanMode == ZM_MODE_INFRASTRUCTURE) && + (zfStaIsConnected(dev))) { + zmw_enter_critical_section(dev); + /* Not in fixed rate mode */ + if (wd->txMCS == 0xff) { + if ((wd->sta.oppositeInfo[0].rcCell.flag & + ZM_RC_TRAINED_BIT) == 0) + rateId = wd->sta.oppositeInfo[0].rcCell. \ + operationRateSet[wd->sta.oppositeInfo[0]. \ + rcCell.operationRateCount-1]; + else + rateId = wd->sta.oppositeInfo[0].rcCell. \ + operationRateSet[wd->sta.oppositeInfo[0]. \ + rcCell.currentRateIndex]; + } + zmw_leave_critical_section(dev); + } + + if (rateId != 0xff) { + if (wd->sta.htCtrlBandwidth) + return zcRateIdToKbps40M[rateId]; + else + return zcRateIdToKbps20M[rateId]; + } else + return wd->CurrentTxRateKbps; } -void zfWlanUpdateRxRate(zdev_t* dev, struct zsAdditionInfo* addInfo) +void zfWlanUpdateRxRate(zdev_t *dev, struct zsAdditionInfo *addInfo) { - u32_t rxRateKbps; - zmw_get_wlan_dev(dev); - //zm_msg1_mm(ZM_LV_0, "addInfo->Tail.Data.RxMacStatus =", addInfo->Tail.Data.RxMacStatus & 0x03); - - /* b5~b4: MPDU indication. */ - /* 00: Single MPDU. */ - /* 10: First MPDU of A-MPDU. */ - /* 11: Middle MPDU of A-MPDU. */ - /* 01: Last MPDU of A-MPDU. */ - /* Only First MPDU and Single MPDU have PLCP header */ - /* First MPDU : (mpduInd & 0x30) == 0x00 */ - /* Single MPDU : (mpduInd & 0x30) == 0x20 */ - if ((addInfo->Tail.Data.RxMacStatus & 0x10) == 0) - { - /* Modulation type */ - wd->modulationType = addInfo->Tail.Data.RxMacStatus & 0x03; - switch(wd->modulationType) - { - case 0x0: wd->rateField = addInfo->PlcpHeader[0] & 0xff; //CCK mode - wd->rxInfo = 0; - break; - case 0x1: wd->rateField = addInfo->PlcpHeader[0] & 0x0f; //Legacy-OFDM mode - wd->rxInfo = 0; - break; - case 0x2: wd->rateField = addInfo->PlcpHeader[3]; //HT-OFDM mode - wd->rxInfo = addInfo->PlcpHeader[6]; - break; - default: break; - } - - rxRateKbps = zfUpdateRxRate(dev); - if (wd->CurrentRxRateUpdated == 1) - { - if (rxRateKbps > wd->CurrentRxRateKbps) - { - wd->CurrentRxRateKbps = rxRateKbps; - } - } - else - { - wd->CurrentRxRateKbps = rxRateKbps; - wd->CurrentRxRateUpdated = 1; - } - } + u32_t rxRateKbps; + zmw_get_wlan_dev(dev); + /* zm_msg1_mm(ZM_LV_0, "addInfo->Tail.Data.RxMacStatus =", + * addInfo->Tail.Data.RxMacStatus & 0x03); + */ + + /* b5~b4: MPDU indication. */ + /* 00: Single MPDU. */ + /* 10: First MPDU of A-MPDU. */ + /* 11: Middle MPDU of A-MPDU. */ + /* 01: Last MPDU of A-MPDU. */ + /* Only First MPDU and Single MPDU have PLCP header */ + /* First MPDU : (mpduInd & 0x30) == 0x00 */ + /* Single MPDU : (mpduInd & 0x30) == 0x20 */ + if ((addInfo->Tail.Data.RxMacStatus & 0x10) == 0) { + /* Modulation type */ + wd->modulationType = addInfo->Tail.Data.RxMacStatus & 0x03; + switch (wd->modulationType) { + /* CCK mode */ + case 0x0: + wd->rateField = addInfo->PlcpHeader[0] & 0xff; + wd->rxInfo = 0; + break; + /* Legacy-OFDM mode */ + case 0x1: + wd->rateField = addInfo->PlcpHeader[0] & 0x0f; + wd->rxInfo = 0; + break; + /* HT-OFDM mode */ + case 0x2: + wd->rateField = addInfo->PlcpHeader[3]; + wd->rxInfo = addInfo->PlcpHeader[6]; + break; + default: + break; + } + + rxRateKbps = zfUpdateRxRate(dev); + if (wd->CurrentRxRateUpdated == 1) { + if (rxRateKbps > wd->CurrentRxRateKbps) + wd->CurrentRxRateKbps = rxRateKbps; + } else { + wd->CurrentRxRateKbps = rxRateKbps; + wd->CurrentRxRateUpdated = 1; + } + } } + #if 0 u16_t zcIndextoRateBG[16] = {1000, 2000, 5500, 11000, 0, 0, 0, 0, 48000, - 24000, 12000, 6000, 54000, 36000, 18000, 9000}; + 24000, 12000, 6000, 54000, 36000, 18000, 9000}; u32_t zcIndextoRateN20L[16] = {6500, 13000, 19500, 26000, 39000, 52000, 58500, - 65000, 13000, 26000, 39000, 52000, 78000, 104000, - 117000, 130000}; + 65000, 13000, 26000, 39000, 52000, 78000, 104000, + 117000, 130000}; u32_t zcIndextoRateN20S[16] = {7200, 14400, 21700, 28900, 43300, 57800, 65000, - 72200, 14400, 28900, 43300, 57800, 86700, 115600, - 130000, 144400}; -u32_t zcIndextoRateN40L[16] = {13500, 27000, 40500, 54000, 81000, 108000, 121500, - 135000, 27000, 54000, 81000, 108000, 162000, 216000, - 243000, 270000}; -u32_t zcIndextoRateN40S[16] = {15000, 30000, 45000, 60000, 90000, 120000, 135000, - 150000, 30000, 60000, 90000, 120000, 180000, 240000, - 270000, 300000}; + 72200, 14400, 28900, 43300, 57800, 86700, 115600, + 130000, 144400}; +u32_t zcIndextoRateN40L[16] = {13500, 27000, 40500, 54000, 81000, 108000, + 121500, 135000, 27000, 54000, 81000, 108000, + 162000, 216000, 243000, 270000}; +u32_t zcIndextoRateN40S[16] = {15000, 30000, 45000, 60000, 90000, 120000, + 135000, 150000, 30000, 60000, 90000, 120000, + 180000, 240000, 270000, 300000}; #endif extern u16_t zcIndextoRateBG[16]; @@ -1294,568 +1208,558 @@ extern u32_t zcIndextoRateN20S[16]; extern u32_t zcIndextoRateN40L[16]; extern u32_t zcIndextoRateN40S[16]; -u32_t zfiWlanQueryRxRate(zdev_t* dev) +u32_t zfiWlanQueryRxRate(zdev_t *dev) { - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - wd->CurrentRxRateUpdated = 0; - return wd->CurrentRxRateKbps; + wd->CurrentRxRateUpdated = 0; + return wd->CurrentRxRateKbps; } -u32_t zfUpdateRxRate(zdev_t* dev) +u32_t zfUpdateRxRate(zdev_t *dev) { - u8_t mcs, bandwidth; - u32_t rxRateKbps = 130000; - zmw_get_wlan_dev(dev); - - switch (wd->modulationType) - { - case 0x0: //CCK mode - switch (wd->rateField) - { - case 0x0a: rxRateKbps = 1000; - break; - case 0x14: rxRateKbps = 2000; - - case 0x37: rxRateKbps = 5500; - break; - case 0x6e: rxRateKbps = 11000; - break; - default: - break; - } - break; - case 0x1: //Legacy-OFDM mode - if (wd->rateField <= 15) - { - rxRateKbps = zcIndextoRateBG[wd->rateField]; - } - break; - case 0x2: //HT-OFDM mode - mcs = wd->rateField & 0x7F; - bandwidth = wd->rateField & 0x80; - if (mcs <= 15) - { - if (bandwidth != 0) - { - if((wd->rxInfo & 0x80) != 0) - { - /* Short GI 40 MHz MIMO Rate */ - rxRateKbps = zcIndextoRateN40S[mcs]; - } - else - { - /* Long GI 40 MHz MIMO Rate */ - rxRateKbps = zcIndextoRateN40L[mcs]; - } - } - else - { - if((wd->rxInfo & 0x80) != 0) - { - /* Short GI 20 MHz MIMO Rate */ - rxRateKbps = zcIndextoRateN20S[mcs]; - } - else - { - /* Long GI 20 MHz MIMO Rate */ - rxRateKbps = zcIndextoRateN20L[mcs]; - } - } - } - break; - default: - break; - } - //zm_msg1_mm(ZM_LV_0, "wd->CurrentRxRateKbps=", wd->CurrentRxRateKbps); - - // ToDo: use bandwith field to define 40MB - return rxRateKbps; + u8_t mcs, bandwidth; + u32_t rxRateKbps = 130000; + zmw_get_wlan_dev(dev); + + switch (wd->modulationType) { + /* CCK mode */ + case 0x0: + switch (wd->rateField) { + case 0x0a: + rxRateKbps = 1000; + break; + case 0x14: + rxRateKbps = 2000; + + case 0x37: + rxRateKbps = 5500; + break; + case 0x6e: + rxRateKbps = 11000; + break; + default: + break; + } + break; + /* Legacy-OFDM mode */ + case 0x1: + if (wd->rateField <= 15) + rxRateKbps = zcIndextoRateBG[wd->rateField]; + break; + /* HT-OFDM mode */ + case 0x2: + mcs = wd->rateField & 0x7F; + bandwidth = wd->rateField & 0x80; + if (mcs <= 15) { + if (bandwidth != 0) { + if ((wd->rxInfo & 0x80) != 0) { + /* Short GI 40 MHz MIMO Rate */ + rxRateKbps = zcIndextoRateN40S[mcs]; + } else { + /* Long GI 40 MHz MIMO Rate */ + rxRateKbps = zcIndextoRateN40L[mcs]; + } + } else { + if ((wd->rxInfo & 0x80) != 0) { + /* Short GI 20 MHz MIMO Rate */ + rxRateKbps = zcIndextoRateN20S[mcs]; + } else { + /* Long GI 20 MHz MIMO Rate */ + rxRateKbps = zcIndextoRateN20L[mcs]; + } + } + } + break; + default: + break; + } + /* zm_msg1_mm(ZM_LV_0, "wd->CurrentRxRateKbps=", + wd->CurrentRxRateKbps); + */ + + /* ToDo: use bandwith field to define 40MB */ + return rxRateKbps; } /* Get WLAN stastics */ -u16_t zfiWlanGetStatistics(zdev_t* dev) +u16_t zfiWlanGetStatistics(zdev_t *dev) { - /* Return link statistics */ - return 0; + /* Return link statistics */ + return 0; } -u16_t zfiWlanReset(zdev_t* dev) +u16_t zfiWlanReset(zdev_t *dev) { - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - wd->state = ZM_WLAN_STATE_DISABLED; + wd->state = ZM_WLAN_STATE_DISABLED; - return zfWlanReset(dev); + return zfWlanReset(dev); } /* Reset WLAN */ -u16_t zfWlanReset(zdev_t* dev) +u16_t zfWlanReset(zdev_t *dev) { - u8_t isConnected; - zmw_get_wlan_dev(dev); - - zmw_declare_for_critical_section(); - - zm_debug_msg0("zfWlanReset"); - - isConnected = zfStaIsConnected(dev); - - //if ( wd->wlanMode != ZM_MODE_AP ) - { - if ( (wd->wlanMode == ZM_MODE_INFRASTRUCTURE)&& - (wd->sta.currentAuthMode != ZM_AUTH_MODE_WPA2) ) - { - /* send deauthentication frame */ - if (isConnected) - { - //zfiWlanDeauth(dev, NULL, 0); - zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_DEAUTH, wd->sta.bssid, 3, 0, 0); - //zmw_debug_msg0("send a Deauth frame!"); - } - } - } - - zfChangeAdapterState(dev, ZM_STA_STATE_DISCONNECT); - zfHpResetKeyCache(dev); - - if (isConnected) - { - //zfiWlanDisable(dev); - if (wd->zfcbConnectNotify != NULL) - { - wd->zfcbConnectNotify(dev, ZM_STATUS_MEDIA_CONNECTION_RESET, wd->sta.bssid); - } - } - else - { - if (wd->zfcbConnectNotify != NULL) - { - wd->zfcbConnectNotify(dev, ZM_STATUS_MEDIA_RESET, wd->sta.bssid); - } - } - - /* stop beacon */ - zfHpDisableBeacon(dev); - - /* Free buffer in defragment list*/ - zfAgingDefragList(dev, 1); - - /* Flush VTxQ and MmQ */ - zfFlushVtxq(dev); - - #ifdef ZM_ENABLE_AGGREGATION - /* add by honda */ - zfAggRxFreeBuf(dev, 0); //1 for release structure memory - /* end of add by honda */ - #endif - - zfStaRefreshBlockList(dev, 1); - - zmw_enter_critical_section(dev); - - zfTimerCancel(dev, ZM_EVENT_IBSS_MONITOR); - zfTimerCancel(dev, ZM_EVENT_CM_BLOCK_TIMER); - zfTimerCancel(dev, ZM_EVENT_CM_DISCONNECT); - - wd->sta.connectState = ZM_STA_CONN_STATE_NONE; - wd->sta.connectByReasso = FALSE; - wd->sta.cmDisallowSsidLength = 0; - wd->sta.bAutoReconnect = 0; - wd->sta.InternalScanReq = 0; - wd->sta.encryMode = ZM_NO_WEP; - wd->sta.wepStatus = ZM_ENCRYPTION_WEP_DISABLED; - wd->sta.wpaState = ZM_STA_WPA_STATE_INIT; - wd->sta.cmMicFailureCount = 0; - wd->sta.ibssBssIsCreator = 0; + u8_t isConnected; + zmw_get_wlan_dev(dev); + + zmw_declare_for_critical_section(); + + zm_debug_msg0("zfWlanReset"); + + isConnected = zfStaIsConnected(dev); + + /* if ( wd->wlanMode != ZM_MODE_AP ) */ + { + if ((wd->wlanMode == ZM_MODE_INFRASTRUCTURE) && + (wd->sta.currentAuthMode != ZM_AUTH_MODE_WPA2)) { + /* send deauthentication frame */ + if (isConnected) { + /* zfiWlanDeauth(dev, NULL, 0); */ + zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_DEAUTH, + wd->sta.bssid, 3, 0, 0); + /* zmw_debug_msg0("send a Deauth frame!"); */ + } + } + } + + zfChangeAdapterState(dev, ZM_STA_STATE_DISCONNECT); + zfHpResetKeyCache(dev); + + if (isConnected) { + /* zfiWlanDisable(dev); */ + if (wd->zfcbConnectNotify != NULL) + wd->zfcbConnectNotify(dev, + ZM_STATUS_MEDIA_CONNECTION_RESET, wd->sta.bssid); + } else { + if (wd->zfcbConnectNotify != NULL) + wd->zfcbConnectNotify(dev, ZM_STATUS_MEDIA_RESET, + wd->sta.bssid); + } + + /* stop beacon */ + zfHpDisableBeacon(dev); + + /* Free buffer in defragment list*/ + zfAgingDefragList(dev, 1); + + /* Flush VTxQ and MmQ */ + zfFlushVtxq(dev); + +#ifdef ZM_ENABLE_AGGREGATION + /* add by honda */ + zfAggRxFreeBuf(dev, 0); /* 1 for release structure memory */ + /* end of add by honda */ +#endif + + zfStaRefreshBlockList(dev, 1); + + zmw_enter_critical_section(dev); + + zfTimerCancel(dev, ZM_EVENT_IBSS_MONITOR); + zfTimerCancel(dev, ZM_EVENT_CM_BLOCK_TIMER); + zfTimerCancel(dev, ZM_EVENT_CM_DISCONNECT); + + wd->sta.connectState = ZM_STA_CONN_STATE_NONE; + wd->sta.connectByReasso = FALSE; + wd->sta.cmDisallowSsidLength = 0; + wd->sta.bAutoReconnect = 0; + wd->sta.InternalScanReq = 0; + wd->sta.encryMode = ZM_NO_WEP; + wd->sta.wepStatus = ZM_ENCRYPTION_WEP_DISABLED; + wd->sta.wpaState = ZM_STA_WPA_STATE_INIT; + wd->sta.cmMicFailureCount = 0; + wd->sta.ibssBssIsCreator = 0; #ifdef ZM_ENABLE_IBSS_WPA2PSK - wd->sta.ibssWpa2Psk = 0; + wd->sta.ibssWpa2Psk = 0; #endif - /* reset connect timeout counter */ - wd->sta.connectTimeoutCount = 0; - - /* reset leap enable variable */ - wd->sta.leapEnabled = 0; - - /* Reset the RIFS Status / RIFS-like frame count / RIFS count */ - if( wd->sta.rifsState == ZM_RIFS_STATE_DETECTED ) - zfHpDisableRifs(dev); - wd->sta.rifsState = ZM_RIFS_STATE_DETECTING; - wd->sta.rifsLikeFrameCnt = 0; - wd->sta.rifsCount = 0; - - wd->sta.osRxFilter = 0; - wd->sta.bSafeMode = 0; - - // Clear the information for the peer stations of IBSS or AP of Station mode - zfZeroMemory((u8_t*)wd->sta.oppositeInfo, sizeof(struct zsOppositeInfo) * ZM_MAX_OPPOSITE_COUNT); - - zmw_leave_critical_section(dev); - - zfScanMgrScanStop(dev, ZM_SCAN_MGR_SCAN_INTERNAL); - zfScanMgrScanStop(dev, ZM_SCAN_MGR_SCAN_EXTERNAL); - - /* Turn off Software WEP/TKIP */ - if (wd->sta.SWEncryptEnable != 0) - { - zm_debug_msg0("Disable software encryption"); - zfStaDisableSWEncryption(dev); - } - - /* Improve WEP/TKIP performace with HT AP, detail information please look bug#32495 */ - //zfHpSetTTSIFSTime(dev, 0x8); - - /* Keep Pseudo mode */ - if ( wd->wlanMode != ZM_MODE_PSEUDO ) - { - wd->wlanMode = ZM_MODE_INFRASTRUCTURE; - } - return 0; + /* reset connect timeout counter */ + wd->sta.connectTimeoutCount = 0; + + /* reset leap enable variable */ + wd->sta.leapEnabled = 0; + + /* Reset the RIFS Status / RIFS-like frame count / RIFS count */ + if (wd->sta.rifsState == ZM_RIFS_STATE_DETECTED) + zfHpDisableRifs(dev); + wd->sta.rifsState = ZM_RIFS_STATE_DETECTING; + wd->sta.rifsLikeFrameCnt = 0; + wd->sta.rifsCount = 0; + + wd->sta.osRxFilter = 0; + wd->sta.bSafeMode = 0; + + /* Clear the information for the peer + stations of IBSS or AP of Station mode + */ + zfZeroMemory((u8_t *)wd->sta.oppositeInfo, + sizeof(struct zsOppositeInfo) * ZM_MAX_OPPOSITE_COUNT); + + zmw_leave_critical_section(dev); + + zfScanMgrScanStop(dev, ZM_SCAN_MGR_SCAN_INTERNAL); + zfScanMgrScanStop(dev, ZM_SCAN_MGR_SCAN_EXTERNAL); + + /* Turn off Software WEP/TKIP */ + if (wd->sta.SWEncryptEnable != 0) { + zm_debug_msg0("Disable software encryption"); + zfStaDisableSWEncryption(dev); + } + + /* Improve WEP/TKIP performace with HT AP, + detail information please look bug#32495 + */ + /* zfHpSetTTSIFSTime(dev, 0x8); */ + + /* Keep Pseudo mode */ + if (wd->wlanMode != ZM_MODE_PSEUDO) + wd->wlanMode = ZM_MODE_INFRASTRUCTURE; + + return 0; } /* Deauthenticate a STA */ -u16_t zfiWlanDeauth(zdev_t* dev, u16_t* macAddr, u16_t reason) +u16_t zfiWlanDeauth(zdev_t *dev, u16_t *macAddr, u16_t reason) { - zmw_get_wlan_dev(dev); - - if ( wd->wlanMode == ZM_MODE_AP ) - { - //u16_t id; - - /* - * we will reset all key in zfHpResetKeyCache() when call - * zfiWlanDisable(), if we want to reset PairwiseKey for each sta, - * need to use a nullAddr to let keyindex not match. - * otherwise hardware will still find PairwiseKey when AP change - * encryption mode from WPA to WEP - */ - - /* - if ((id = zfApFindSta(dev, macAddr)) != 0xffff) - { - u32_t key[8]; - u16_t nullAddr[3] = { 0x0, 0x0, 0x0 }; - - if (wd->ap.staTable[i].encryMode != ZM_NO_WEP) - { - zfHpSetApPairwiseKey(dev, nullAddr, - ZM_NO_WEP, &key[0], &key[4], i+1); - } - //zfHpSetApPairwiseKey(dev, (u16_t *)macAddr, - // ZM_NO_WEP, &key[0], &key[4], id+1); - wd->ap.staTable[id].encryMode = ZM_NO_WEP; - wd->ap.staTable[id].keyIdx = 0xff; - } - */ - - zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_DEAUTH, macAddr, reason, 0, 0); - } - else - { - zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_DEAUTH, wd->sta.bssid, 3, 0, 0); - } - - /* Issue DEAUTH command to FW */ - return 0; + zmw_get_wlan_dev(dev); + + if (wd->wlanMode == ZM_MODE_AP) { + /* u16_t id; */ + + /* + * we will reset all key in zfHpResetKeyCache() when call + * zfiWlanDisable(), if we want to reset PairwiseKey for each + * sta, need to use a nullAddr to let keyindex not match. + * otherwise hardware will still find PairwiseKey when AP change + * encryption mode from WPA to WEP + */ + + /* + if ((id = zfApFindSta(dev, macAddr)) != 0xffff) + { + u32_t key[8]; + u16_t nullAddr[3] = { 0x0, 0x0, 0x0 }; + + if (wd->ap.staTable[i].encryMode != ZM_NO_WEP) + { + zfHpSetApPairwiseKey(dev, nullAddr, + ZM_NO_WEP, &key[0], &key[4], i+1); + } + //zfHpSetApPairwiseKey(dev, (u16_t *)macAddr, + // ZM_NO_WEP, &key[0], &key[4], id+1); + wd->ap.staTable[id].encryMode = ZM_NO_WEP; + wd->ap.staTable[id].keyIdx = 0xff; + } + */ + + zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_DEAUTH, macAddr, + reason, 0, 0); + } else + zfSendMmFrame(dev, ZM_WLAN_FRAME_TYPE_DEAUTH, + wd->sta.bssid, 3, 0, 0); + + /* Issue DEAUTH command to FW */ + return 0; } /* XP packet filter feature : */ -/* 1=>enable: All multicast address packets, not just the ones enumerated in the multicast address list. */ +/* 1=>enable: All multicast address packets, not just the ones */ +/* enumerated in the multicast address list. */ /* 0=>disable */ -void zfiWlanSetAllMulticast(zdev_t* dev, u32_t setting) +void zfiWlanSetAllMulticast(zdev_t *dev, u32_t setting) { - zmw_get_wlan_dev(dev); - zm_msg1_mm(ZM_LV_0, "sta.bAllMulticast = ", setting); - wd->sta.bAllMulticast = (u8_t)setting; + zmw_get_wlan_dev(dev); + zm_msg1_mm(ZM_LV_0, "sta.bAllMulticast = ", setting); + wd->sta.bAllMulticast = (u8_t)setting; } /* HT configure API */ -void zfiWlanSetHTCtrl(zdev_t* dev, u32_t *setting, u32_t forceTxTPC) +void zfiWlanSetHTCtrl(zdev_t *dev, u32_t *setting, u32_t forceTxTPC) { - zmw_get_wlan_dev(dev); - - wd->preambleType = (u8_t)setting[0]; - wd->sta.preambleTypeHT = (u8_t)setting[1]; - wd->sta.htCtrlBandwidth = (u8_t)setting[2]; - wd->sta.htCtrlSTBC = (u8_t)setting[3]; - wd->sta.htCtrlSG = (u8_t)setting[4]; - wd->sta.defaultTA = (u8_t)setting[5]; - wd->enableAggregation = (u8_t)setting[6]; - wd->enableWDS = (u8_t)setting[7]; - - wd->forceTxTPC = forceTxTPC; + zmw_get_wlan_dev(dev); + + wd->preambleType = (u8_t)setting[0]; + wd->sta.preambleTypeHT = (u8_t)setting[1]; + wd->sta.htCtrlBandwidth = (u8_t)setting[2]; + wd->sta.htCtrlSTBC = (u8_t)setting[3]; + wd->sta.htCtrlSG = (u8_t)setting[4]; + wd->sta.defaultTA = (u8_t)setting[5]; + wd->enableAggregation = (u8_t)setting[6]; + wd->enableWDS = (u8_t)setting[7]; + + wd->forceTxTPC = forceTxTPC; } /* FB50 in OS XP, RD private test code */ -void zfiWlanQueryHTCtrl(zdev_t* dev, u32_t *setting, u32_t *forceTxTPC) +void zfiWlanQueryHTCtrl(zdev_t *dev, u32_t *setting, u32_t *forceTxTPC) { - zmw_get_wlan_dev(dev); - - setting[0] = wd->preambleType; - setting[1] = wd->sta.preambleTypeHT; - setting[2] = wd->sta.htCtrlBandwidth; - setting[3] = wd->sta.htCtrlSTBC; - setting[4] = wd->sta.htCtrlSG; - setting[5] = wd->sta.defaultTA; - setting[6] = wd->enableAggregation; - setting[7] = wd->enableWDS; - - *forceTxTPC = wd->forceTxTPC; + zmw_get_wlan_dev(dev); + + setting[0] = wd->preambleType; + setting[1] = wd->sta.preambleTypeHT; + setting[2] = wd->sta.htCtrlBandwidth; + setting[3] = wd->sta.htCtrlSTBC; + setting[4] = wd->sta.htCtrlSG; + setting[5] = wd->sta.defaultTA; + setting[6] = wd->enableAggregation; + setting[7] = wd->enableWDS; + + *forceTxTPC = wd->forceTxTPC; } -void zfiWlanDbg(zdev_t* dev, u8_t setting) +void zfiWlanDbg(zdev_t *dev, u8_t setting) { - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - wd->enableHALDbgInfo = setting; + wd->enableHALDbgInfo = setting; } /* FB50 in OS XP, RD private test code */ -void zfiWlanSetRxPacketDump(zdev_t* dev, u32_t setting) +void zfiWlanSetRxPacketDump(zdev_t *dev, u32_t setting) { - zmw_get_wlan_dev(dev); - if (setting) - { - wd->rxPacketDump = 1; /* enable */ - } - else - { - wd->rxPacketDump = 0; /* disable */ - } + zmw_get_wlan_dev(dev); + if (setting) + wd->rxPacketDump = 1; /* enable */ + else + wd->rxPacketDump = 0; /* disable */ } /* FB50 in OS XP, RD private test code */ /* Tally */ -void zfiWlanResetTally(zdev_t* dev) +void zfiWlanResetTally(zdev_t *dev) { - zmw_get_wlan_dev(dev); - - zmw_declare_for_critical_section(); - - zmw_enter_critical_section(dev); - - wd->commTally.txUnicastFrm = 0; //txUnicastFrames - wd->commTally.txMulticastFrm = 0; //txMulticastFrames - wd->commTally.txUnicastOctets = 0; //txUniOctets byte size - wd->commTally.txMulticastOctets = 0; //txMultiOctets byte size - wd->commTally.txFrmUpperNDIS = 0; - wd->commTally.txFrmDrvMgt = 0; - wd->commTally.RetryFailCnt = 0; - wd->commTally.Hw_TotalTxFrm = 0; //Hardware total Tx Frame - wd->commTally.Hw_RetryCnt = 0; //txMultipleRetriesFrames - wd->commTally.Hw_UnderrunCnt = 0;// - wd->commTally.DriverRxFrmCnt = 0;// - wd->commTally.rxUnicastFrm = 0; //rxUnicastFrames - wd->commTally.rxMulticastFrm = 0; //rxMulticastFrames - wd->commTally.NotifyNDISRxFrmCnt = 0;// - wd->commTally.rxUnicastOctets = 0; //rxUniOctets byte size - wd->commTally.rxMulticastOctets = 0; //rxMultiOctets byte size - wd->commTally.DriverDiscardedFrm = 0;// Discard by ValidateFrame - wd->commTally.LessThanDataMinLen = 0;// - wd->commTally.GreaterThanMaxLen = 0;// - wd->commTally.DriverDiscardedFrmCauseByMulticastList = 0; - wd->commTally.DriverDiscardedFrmCauseByFrmCtrl = 0; - wd->commTally.rxNeedFrgFrm = 0; // need more frg frm - wd->commTally.DriverRxMgtFrmCnt = 0; - wd->commTally.rxBroadcastFrm = 0; //Receive broadcast frame count - wd->commTally.rxBroadcastOctets = 0; //Receive broadcast frame byte size - wd->commTally.Hw_TotalRxFrm = 0;// - wd->commTally.Hw_CRC16Cnt = 0; //rxPLCPCRCErrCnt - wd->commTally.Hw_CRC32Cnt = 0; //rxCRC32ErrCnt - wd->commTally.Hw_DecrypErr_UNI = 0;// - wd->commTally.Hw_DecrypErr_Mul = 0;// - wd->commTally.Hw_RxFIFOOverrun = 0;// - wd->commTally.Hw_RxTimeOut = 0; - wd->commTally.LossAP = 0;// - - wd->commTally.Tx_MPDU = 0; - wd->commTally.BA_Fail = 0; - wd->commTally.Hw_Tx_AMPDU = 0; - wd->commTally.Hw_Tx_MPDU = 0; - - wd->commTally.txQosDropCount[0] = 0; - wd->commTally.txQosDropCount[1] = 0; - wd->commTally.txQosDropCount[2] = 0; - wd->commTally.txQosDropCount[3] = 0; - wd->commTally.txQosDropCount[4] = 0; - - wd->commTally.Hw_RxMPDU = 0; - wd->commTally.Hw_RxDropMPDU = 0; - wd->commTally.Hw_RxDelMPDU = 0; - - wd->commTally.Hw_RxPhyMiscError = 0; - wd->commTally.Hw_RxPhyXRError = 0; - wd->commTally.Hw_RxPhyOFDMError = 0; - wd->commTally.Hw_RxPhyCCKError = 0; - wd->commTally.Hw_RxPhyHTError = 0; - wd->commTally.Hw_RxPhyTotalCount = 0; - -#if (defined(GCCK) && defined(OFDM)) - wd->commTally.rx11bDataFrame = 0; - wd->commTally.rxOFDMDataFrame = 0; + zmw_get_wlan_dev(dev); + + zmw_declare_for_critical_section(); + + zmw_enter_critical_section(dev); + + wd->commTally.txUnicastFrm = 0; /* txUnicastFrames */ + wd->commTally.txMulticastFrm = 0; /* txMulticastFrames */ + wd->commTally.txUnicastOctets = 0; /* txUniOctets byte size */ + wd->commTally.txMulticastOctets = 0; /* txMultiOctets byte size */ + wd->commTally.txFrmUpperNDIS = 0; + wd->commTally.txFrmDrvMgt = 0; + wd->commTally.RetryFailCnt = 0; + wd->commTally.Hw_TotalTxFrm = 0; /* Hardware total Tx Frame */ + wd->commTally.Hw_RetryCnt = 0; /* txMultipleRetriesFrames */ + wd->commTally.Hw_UnderrunCnt = 0; + wd->commTally.DriverRxFrmCnt = 0; + wd->commTally.rxUnicastFrm = 0; /* rxUnicastFrames */ + wd->commTally.rxMulticastFrm = 0; /* rxMulticastFrames */ + wd->commTally.NotifyNDISRxFrmCnt = 0; + wd->commTally.rxUnicastOctets = 0; /* rxUniOctets byte size */ + wd->commTally.rxMulticastOctets = 0; /* rxMultiOctets byte size */ + wd->commTally.DriverDiscardedFrm = 0; /* Discard by ValidateFrame */ + wd->commTally.LessThanDataMinLen = 0; + wd->commTally.GreaterThanMaxLen = 0; + wd->commTally.DriverDiscardedFrmCauseByMulticastList = 0; + wd->commTally.DriverDiscardedFrmCauseByFrmCtrl = 0; + wd->commTally.rxNeedFrgFrm = 0; /* need more frg frm */ + wd->commTally.DriverRxMgtFrmCnt = 0; + wd->commTally.rxBroadcastFrm = 0;/* Receive broadcast frame count */ + wd->commTally.rxBroadcastOctets = 0;/*Receive broadcast framebyte size*/ + wd->commTally.Hw_TotalRxFrm = 0; + wd->commTally.Hw_CRC16Cnt = 0; /* rxPLCPCRCErrCnt */ + wd->commTally.Hw_CRC32Cnt = 0; /* rxCRC32ErrCnt */ + wd->commTally.Hw_DecrypErr_UNI = 0; + wd->commTally.Hw_DecrypErr_Mul = 0; + wd->commTally.Hw_RxFIFOOverrun = 0; + wd->commTally.Hw_RxTimeOut = 0; + wd->commTally.LossAP = 0; + + wd->commTally.Tx_MPDU = 0; + wd->commTally.BA_Fail = 0; + wd->commTally.Hw_Tx_AMPDU = 0; + wd->commTally.Hw_Tx_MPDU = 0; + + wd->commTally.txQosDropCount[0] = 0; + wd->commTally.txQosDropCount[1] = 0; + wd->commTally.txQosDropCount[2] = 0; + wd->commTally.txQosDropCount[3] = 0; + wd->commTally.txQosDropCount[4] = 0; + + wd->commTally.Hw_RxMPDU = 0; + wd->commTally.Hw_RxDropMPDU = 0; + wd->commTally.Hw_RxDelMPDU = 0; + + wd->commTally.Hw_RxPhyMiscError = 0; + wd->commTally.Hw_RxPhyXRError = 0; + wd->commTally.Hw_RxPhyOFDMError = 0; + wd->commTally.Hw_RxPhyCCKError = 0; + wd->commTally.Hw_RxPhyHTError = 0; + wd->commTally.Hw_RxPhyTotalCount = 0; + +#if (defined(GCCK) && defined(OFDM)) + wd->commTally.rx11bDataFrame = 0; + wd->commTally.rxOFDMDataFrame = 0; #endif - zmw_leave_critical_section(dev); + zmw_leave_critical_section(dev); } /* FB50 in OS XP, RD private test code */ -void zfiWlanQueryTally(zdev_t* dev, struct zsCommTally *tally) +void zfiWlanQueryTally(zdev_t *dev, struct zsCommTally *tally) { - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - zmw_declare_for_critical_section(); + zmw_declare_for_critical_section(); - zmw_enter_critical_section(dev); - zfMemoryCopy((u8_t*)tally, (u8_t*)&wd->commTally, sizeof(struct zsCommTally)); - zmw_leave_critical_section(dev); + zmw_enter_critical_section(dev); + zfMemoryCopy((u8_t *)tally, (u8_t *)&wd->commTally, + sizeof(struct zsCommTally)); + zmw_leave_critical_section(dev); } -void zfiWlanQueryTrafTally(zdev_t* dev, struct zsTrafTally *tally) + +void zfiWlanQueryTrafTally(zdev_t *dev, struct zsTrafTally *tally) { - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - zmw_declare_for_critical_section(); + zmw_declare_for_critical_section(); - zmw_enter_critical_section(dev); - zfMemoryCopy((u8_t*)tally, (u8_t*)&wd->trafTally, sizeof(struct zsTrafTally)); - zmw_leave_critical_section(dev); + zmw_enter_critical_section(dev); + zfMemoryCopy((u8_t *)tally, (u8_t *)&wd->trafTally, + sizeof(struct zsTrafTally)); + zmw_leave_critical_section(dev); } -void zfiWlanQueryMonHalRxInfo(zdev_t* dev, struct zsMonHalRxInfo *monHalRxInfo) +void zfiWlanQueryMonHalRxInfo(zdev_t *dev, struct zsMonHalRxInfo *monHalRxInfo) { - zfHpQueryMonHalRxInfo(dev, (u8_t *)monHalRxInfo); + zfHpQueryMonHalRxInfo(dev, (u8_t *)monHalRxInfo); } /* parse the modeMDKEnable to DrvCore */ -void zfiDKEnable(zdev_t* dev, u32_t enable) +void zfiDKEnable(zdev_t *dev, u32_t enable) { - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - wd->modeMDKEnable = enable; - zm_debug_msg1("modeMDKEnable = ", wd->modeMDKEnable); + wd->modeMDKEnable = enable; + zm_debug_msg1("modeMDKEnable = ", wd->modeMDKEnable); } /* airoPeek */ -u32_t zfiWlanQueryPacketTypePromiscuous(zdev_t* dev) +u32_t zfiWlanQueryPacketTypePromiscuous(zdev_t *dev) { - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - return wd->swSniffer; + return wd->swSniffer; } /* airoPeek */ -void zfiWlanSetPacketTypePromiscuous(zdev_t* dev, u32_t setValue) +void zfiWlanSetPacketTypePromiscuous(zdev_t *dev, u32_t setValue) { - zmw_get_wlan_dev(dev); - - wd->swSniffer = setValue; - zm_msg1_mm(ZM_LV_0, "wd->swSniffer ", wd->swSniffer); - if (setValue) - { - /* write register for sniffer mode */ - zfHpSetSnifferMode(dev, 1); - zm_msg0_mm(ZM_LV_1, "enalbe sniffer mode"); - } - else - { - zfHpSetSnifferMode(dev, 0); - zm_msg0_mm(ZM_LV_0, "disalbe sniffer mode"); - } + zmw_get_wlan_dev(dev); + + wd->swSniffer = setValue; + zm_msg1_mm(ZM_LV_0, "wd->swSniffer ", wd->swSniffer); + if (setValue) { + /* write register for sniffer mode */ + zfHpSetSnifferMode(dev, 1); + zm_msg0_mm(ZM_LV_1, "enalbe sniffer mode"); + } else { + zfHpSetSnifferMode(dev, 0); + zm_msg0_mm(ZM_LV_0, "disalbe sniffer mode"); + } } -void zfiWlanSetXLinkMode(zdev_t* dev, u32_t setValue) +void zfiWlanSetXLinkMode(zdev_t *dev, u32_t setValue) { - zmw_get_wlan_dev(dev); - - wd->XLinkMode = setValue; - if (setValue) - { - /* write register for sniffer mode */ - zfHpSetSnifferMode(dev, 1); - } - else - { - zfHpSetSnifferMode(dev, 0); - } + zmw_get_wlan_dev(dev); + + wd->XLinkMode = setValue; + if (setValue) { + /* write register for sniffer mode */ + zfHpSetSnifferMode(dev, 1); + } else + zfHpSetSnifferMode(dev, 0); } -extern void zfStaChannelManagement(zdev_t* dev, u8_t scan); -void zfiSetChannelManagement(zdev_t* dev, u32_t setting) +extern void zfStaChannelManagement(zdev_t *dev, u8_t scan); + +void zfiSetChannelManagement(zdev_t *dev, u32_t setting) { - zmw_get_wlan_dev(dev); - - switch (setting) - { - case 1: - wd->sta.EnableHT = 1; - wd->BandWidth40 = 1; - wd->ExtOffset = 1; - break; - case 3: - wd->sta.EnableHT = 1; - wd->BandWidth40 = 1; - wd->ExtOffset = 3; - break; - case 0: - wd->sta.EnableHT = 1; - wd->BandWidth40 = 0; - wd->ExtOffset = 0; - break; - default: - wd->BandWidth40 = 0; - wd->ExtOffset = 0; - break; - - } - zfCoreSetFrequencyEx(dev, wd->frequency, wd->BandWidth40, - wd->ExtOffset, NULL); + zmw_get_wlan_dev(dev); + + switch (setting) { + case 1: + wd->sta.EnableHT = 1; + wd->BandWidth40 = 1; + wd->ExtOffset = 1; + break; + case 3: + wd->sta.EnableHT = 1; + wd->BandWidth40 = 1; + wd->ExtOffset = 3; + break; + case 0: + wd->sta.EnableHT = 1; + wd->BandWidth40 = 0; + wd->ExtOffset = 0; + break; + default: + wd->BandWidth40 = 0; + wd->ExtOffset = 0; + break; + } + + zfCoreSetFrequencyEx(dev, wd->frequency, wd->BandWidth40, + wd->ExtOffset, NULL); } -void zfiSetRifs(zdev_t* dev, u16_t setting) +void zfiSetRifs(zdev_t *dev, u16_t setting) { - zmw_get_wlan_dev(dev); - - wd->sta.ie.HtInfo.ChannelInfo |= ExtHtCap_RIFSMode; - wd->sta.EnableHT = 1; - switch (setting) - { - case 0: - wd->sta.HT2040 = 0; -// zfHpSetRifs(dev, 1, 0, (wd->sta.currentFrequency < 3000)? 1:0); - break; - case 1: - wd->sta.HT2040 = 1; -// zfHpSetRifs(dev, 1, 1, (wd->sta.currentFrequency < 3000)? 1:0); - break; - default: - wd->sta.HT2040 = 0; -// zfHpSetRifs(dev, 1, 0, (wd->sta.currentFrequency < 3000)? 1:0); - break; - } + zmw_get_wlan_dev(dev); + + wd->sta.ie.HtInfo.ChannelInfo |= ExtHtCap_RIFSMode; + wd->sta.EnableHT = 1; + + switch (setting) { + case 0: + wd->sta.HT2040 = 0; + /* zfHpSetRifs(dev, 1, 0, + * (wd->sta.currentFrequency < 3000)? 1:0); + */ + break; + case 1: + wd->sta.HT2040 = 1; + /* zfHpSetRifs(dev, 1, 1, + * (wd->sta.currentFrequency < 3000)? 1:0); + */ + break; + default: + wd->sta.HT2040 = 0; + /* zfHpSetRifs(dev, 1, 0, + * (wd->sta.currentFrequency < 3000)? 1:0); + */ + break; + } } -void zfiCheckRifs(zdev_t* dev) +void zfiCheckRifs(zdev_t *dev) { - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - if(wd->sta.ie.HtInfo.ChannelInfo & ExtHtCap_RIFSMode) - { -// zfHpSetRifs(dev, wd->sta.EnableHT, wd->sta.HT2040, (wd->sta.currentFrequency < 3000)? 1:0); - } + if (wd->sta.ie.HtInfo.ChannelInfo & ExtHtCap_RIFSMode) + ; + /* zfHpSetRifs(dev, wd->sta.EnableHT, wd->sta.HT2040, + * (wd->sta.currentFrequency < 3000)? 1:0); + */ } -void zfiSetReorder(zdev_t* dev, u16_t value) +void zfiSetReorder(zdev_t *dev, u16_t value) { - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - wd->reorder = value; + wd->reorder = value; } -void zfiSetSeqDebug(zdev_t* dev, u16_t value) +void zfiSetSeqDebug(zdev_t *dev, u16_t value) { - zmw_get_wlan_dev(dev); + zmw_get_wlan_dev(dev); - wd->seq_debug = value; + wd->seq_debug = value; } |