⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wcmd.c

📁 VIA VT6656 USB linux source code.
💻 C
📖 第 1 页 / 共 4 页
字号:
            break;                            case WLAN_CMD_SSID_START:                    if (pDevice->bRadioOff == TRUE) {                s_bCommandComplete(pDevice);                spin_unlock_irq(&pDevice->lock);                return;            }//20080131-03,<Add> by Mike Liu	#ifdef Adhoc_STA            memcpy(pMgmt->abyAdHocSSID,pMgmt->abyDesireSSID,                              ((PWLAN_IE_SSID)pMgmt->abyDesireSSID)->len + WLAN_IEHDR_LEN);	#endif            pItemSSID = (PWLAN_IE_SSID)pMgmt->abyDesireSSID;            pItemSSIDCurr = (PWLAN_IE_SSID)pMgmt->abyCurrSSID;            DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" cmd: desire ssid = %s\n", pItemSSID->abySSID);                            DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" cmd: curr ssid = %s\n", pItemSSIDCurr->abySSID);                                      if (pMgmt->eCurrState == WMAC_STATE_ASSOC) {                DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" Cmd pMgmt->eCurrState == WMAC_STATE_ASSOC\n");                DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pItemSSID->len =%d\n",pItemSSID->len);                      DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" pItemSSIDCurr->len = %d\n",pItemSSIDCurr->len);                DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" desire ssid = %s\n", pItemSSID->abySSID);                                DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" curr ssid = %s\n", pItemSSIDCurr->abySSID);            }                                                                if ((pMgmt->eCurrState == WMAC_STATE_ASSOC) ||                ((pMgmt->eCurrMode == WMAC_MODE_IBSS_STA)&& (pMgmt->eCurrState == WMAC_STATE_JOINTED))) {                 if (pItemSSID->len == pItemSSIDCurr->len) {                    if (memcmp(pItemSSID->abySSID, pItemSSIDCurr->abySSID, pItemSSID->len) == 0) {                        s_bCommandComplete(pDevice);                        spin_unlock_irq(&pDevice->lock);                        return;                    }                }                netif_stop_queue(pDevice->dev);                pDevice->bLinkPass = FALSE;                ControlvMaskByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_PAPEDELAY,LEDSTS_STS,LEDSTS_SLOW);            }                                                      // set initial state            pMgmt->eCurrState = WMAC_STATE_IDLE;            pMgmt->eCurrMode = WMAC_MODE_STANDBY;            PSvDisablePowerSaving((HANDLE)pDevice);            BSSvClearNodeDBTable(pDevice, 0);            vMgrJoinBSSBegin((HANDLE)pDevice, &Status);                    // if Infra mode            if ((pMgmt->eCurrMode == WMAC_MODE_ESS_STA) && (pMgmt->eCurrState == WMAC_STATE_JOINTED)) {//DavidWangif ( (pMgmt->Cisco_cckm)&&(pDevice->bIsRoaming == TRUE) )         {       DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" Cisco roaming....\n");           pDevice->eCommandState = WLAN_ASSOCIATE_WAIT;           pMgmt->eCurrState = WMAC_STATE_ASSOC;            if ((pDevice->bWPADevEnable) && (pDevice->skb != NULL)) {             wpahdr = (viawget_wpa_header *)pDevice->skb->data;             wpahdr->type = VIAWGET_CCKM_ROAM_MSG;             wpahdr->resp_ie_len = 0;             wpahdr->req_ie_len = 0;             skb_put(pDevice->skb, sizeof(viawget_wpa_header));             pDevice->skb->dev = pDevice->wpadev;#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)                pDevice->skb->mac_header = pDevice->skb->data;#else                pDevice->skb->mac.raw = pDevice->skb->data;#endif                  pDevice->skb->pkt_type = PACKET_HOST;             pDevice->skb->protocol = htons(ETH_P_802_2);             memset(pDevice->skb->cb, 0, sizeof(pDevice->skb->cb));             netif_rx(pDevice->skb);            pDevice->skb = dev_alloc_skb((int)pDevice->rx_buf_sz);               }           s_bCommandComplete(pDevice);             break;            }                // Call mgr to begin the deauthentication                 // reason = (3) beacuse sta has left ESS                 if (pMgmt->eCurrState>= WMAC_STATE_AUTH) {                    vMgrDeAuthenBeginSta((HANDLE)pDevice, pMgmt, pMgmt->abyCurrBSSID, (3), &Status);                }                    // Call mgr to begin the authentication                 vMgrAuthenBeginSta((HANDLE)pDevice, pMgmt, &Status);                if (Status == CMD_STATUS_SUCCESS) {                    pDevice->eCommandState = WLAN_AUTHENTICATE_WAIT;                    vCommandTimerWait((HANDLE)pDevice, AUTHENTICATE_TIMEOUT);                    spin_unlock_irq(&pDevice->lock);                                        DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" Set eCommandState = WLAN_AUTHENTICATE_WAIT\n");                    return;                }            }            // if Adhoc mode                    else if (pMgmt->eCurrMode == WMAC_MODE_IBSS_STA) {                if (pMgmt->eCurrState == WMAC_STATE_JOINTED) {                     if (netif_queue_stopped(pDevice->dev)){                        netif_wake_queue(pDevice->dev);                    }                    pDevice->bLinkPass = TRUE;                    ControlvMaskByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_PAPEDELAY,LEDSTS_STS,LEDSTS_INTER);                    pMgmt->sNodeDBTable[0].bActive = TRUE;                    pMgmt->sNodeDBTable[0].uInActiveCount = 0;                }                else {                    // start own IBSS                    DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "CreateOwn IBSS by CurrMode = IBSS_STA \n");                    vMgrCreateOwnIBSS((HANDLE)pDevice, &Status);                    if (Status != CMD_STATUS_SUCCESS){                        DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO " WLAN_CMD_IBSS_CREATE fail ! \n");                    };                    BSSvAddMulticastNode(pDevice);                }                s_bClearBSSID_SCAN(pDevice);                            }            // if SSID not found             else if (pMgmt->eCurrMode == WMAC_MODE_STANDBY) {                if (pMgmt->eConfigMode == WMAC_CONFIG_IBSS_STA ||                     pMgmt->eConfigMode == WMAC_CONFIG_AUTO) {                    // start own IBSS                    DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "CreateOwn IBSS by CurrMode = STANDBY \n");                    vMgrCreateOwnIBSS((HANDLE)pDevice, &Status);                    if (Status != CMD_STATUS_SUCCESS){                        DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO" WLAN_CMD_IBSS_CREATE fail ! \n");                    };                    BSSvAddMulticastNode(pDevice);                    s_bClearBSSID_SCAN(pDevice);/*                                        pDevice->bLinkPass = TRUE;                    ControlvMaskByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_PAPEDELAY,LEDSTS_STS,LEDSTS_INTER);                    if (netif_queue_stopped(pDevice->dev)){                        netif_wake_queue(pDevice->dev);                    }                    s_bClearBSSID_SCAN(pDevice);                                        */                                    }                else {                    DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Disconnect SSID none\n");                }                                                             }            s_bCommandComplete(pDevice);            break;                    case WLAN_AUTHENTICATE_WAIT :            DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"eCommandState == WLAN_AUTHENTICATE_WAIT\n");            if (pMgmt->eCurrState == WMAC_STATE_AUTH) {                // Call mgr to begin the association                 DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"eCurrState == WMAC_STATE_AUTH\n");                vMgrAssocBeginSta((HANDLE)pDevice, pMgmt, &Status);                if (Status == CMD_STATUS_SUCCESS) {                    DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"eCommandState = WLAN_ASSOCIATE_WAIT\n");                    pDevice->eCommandState = WLAN_ASSOCIATE_WAIT;                    vCommandTimerWait((HANDLE)pDevice, ASSOCIATE_TIMEOUT);                    spin_unlock_irq(&pDevice->lock);                                        return;                }            }            s_bCommandComplete(pDevice);                        break;                    case WLAN_ASSOCIATE_WAIT :            if (pMgmt->eCurrState == WMAC_STATE_ASSOC) {                DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"eCurrState == WMAC_STATE_ASSOC\n");                 if (pDevice->ePSMode != WMAC_POWER_CAM) {                    PSvEnablePowerSaving((HANDLE)pDevice, pMgmt->wListenInterval);                }/*                                if (pMgmt->eAuthenMode >= WMAC_AUTH_WPA) {                    KeybRemoveAllKey(pDevice, &(pDevice->sKey), pDevice->abyBSSID);                }                */                                pDevice->bLinkPass = TRUE;                ControlvMaskByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_PAPEDELAY,LEDSTS_STS,LEDSTS_INTER);                s_bClearBSSID_SCAN(pDevice);                if (netif_queue_stopped(pDevice->dev)){                    netif_wake_queue(pDevice->dev);                }                                                	//2007-0115-07<Add>by MikeLiu	     #ifdef TxInSleep		 if(pDevice->IsTxDataTrigger != FALSE)   {    //TxDataTimer is not triggered at the first time                     // printk("Re-initial TxDataTimer****\n");		    del_timer(&pDevice->sTimerTxData);                      init_timer(&pDevice->sTimerTxData);                      pDevice->sTimerTxData.data = (ULONG)pDevice;                      pDevice->sTimerTxData.function = (TimerFunction)BSSvSecondTxData;                      pDevice->sTimerTxData.expires = RUN_AT(10*HZ);      //10s callback                      pDevice->fTxDataInSleep = FALSE;                       pDevice->nTxDataTimeCout = 0;		 }		 else {		   // printk("mike:-->First time triger TimerTxData InSleep\n");		 }		pDevice->IsTxDataTrigger = TRUE;                add_timer(&pDevice->sTimerTxData);             #endif			             }            s_bCommandComplete(pDevice);                        break;                    case WLAN_CMD_AP_MODE_START :            DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"eCommandState == WLAN_CMD_AP_MODE_START\n");                                if (pMgmt->eConfigMode == WMAC_CONFIG_AP) {                del_timer(&pMgmt->sTimerSecondCallback);                                 pMgmt->eCurrState = WMAC_STATE_IDLE;                pMgmt->eCurrMode = WMAC_MODE_STANDBY;                                pDevice->bLinkPass = FALSE;                ControlvMaskByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_PAPEDELAY,LEDSTS_STS,LEDSTS_SLOW);                if (pDevice->bEnableHostWEP == TRUE)                     BSSvClearNodeDBTable(pDevice, 1);                else                    BSSvClearNodeDBTable(pDevice, 0);                                     pDevice->uAssocCount = 0;                pMgmt->eCurrState = WMAC_STATE_IDLE;                pDevice->bFixRate = FALSE;                                vMgrCreateOwnIBSS((HANDLE)pDevice, &Status);                if (Status != CMD_STATUS_SUCCESS){                    DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO " vMgrCreateOwnIBSS fail ! \n");                };                // alway turn off unicast bit                MACvRegBitsOff(pDevice, MAC_REG_RCR, RCR_UNICAST);                pDevice->byRxMode &= ~RCR_UNICAST;                DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "wcmd: rx_mode = %x\n", pDevice->byRxMode );                BSSvAddMulticastNode(pDevice);                if (netif_queue_stopped(pDevice->dev)){                    netif_wake_queue(pDevice->dev);                }                pDevice->bLinkPass = TRUE;                 ControlvMaskByte(pDevice,MESSAGE_REQUEST_MACREG,MAC_REG_PAPEDELAY,LEDSTS_STS,LEDSTS_INTER);                add_timer(&pMgmt->sTimerSecondCallback);             }                                             s_bCommandComplete(pDevice);                        break;                                case WLAN_CMD_TX_PSPACKET_START :            // DTIM Multicast tx            if (pMgmt->sNodeDBTable[0].bRxPSPoll) {                while ((skb = skb_dequeue(&pMgmt->sNodeDBTable[0].sTxPSQueue)) != NULL) {                    if (skb_queue_empty(&pMgmt->sNodeDBTable[0].sTxPSQueue)) {                        pMgmt->abyPSTxMap[0] &= ~byMask[0];                        pDevice->bMoreData = FALSE;                    }                    else {                        pDevice->bMoreData = TRUE;                    }                    if (nsDMA_tx_packet(pDevice, TYPE_AC0DMA, skb) != 0) {                        DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Multicast ps tx fail \n");                    }                    pMgmt->sNodeDBTable[0].wEnQueueCnt--;                }            };                                    // PS nodes tx            for (ii = 1; ii < (MAX_NODE_NUM + 1); ii++) {                if (pMgmt->sNodeDBTable[ii].bActive &&                    pMgmt->sNodeDBTable[ii].bRxPSPoll) {                    DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Index=%d Enqueu Cnt= %d\n",                                ii, pMgmt->sNodeDBTable[ii].wEnQueueCnt);                        while ((skb = skb_dequeue(&pMgmt->sNodeDBTable[ii].sTxPSQueue)) != NULL) {                        if (skb_queue_empty(&pMgmt->sNodeDBTable[ii].sTxPSQueue)) {                            // clear tx map                            pMgmt->abyPSTxMap[pMgmt->sNodeDBTable[ii].wAID >> 3] &=                                    ~byMask[pMgmt->sNodeDBTable[ii].wAID & 7];                            pDevice->bMoreData = FALSE;                        }                        else {                            pDevice->bMoreData = TRUE;                        }                        if (nsDMA_tx_packet(pDevice, TYPE_AC0DMA, skb) != 0) {                            DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "sta ps tx fail \n");                        }                                                pMgmt->sNodeDBTable[ii].wEnQueueCnt--;                        // check if sta ps enable, wait next pspoll                        // if sta ps disable, send all pending buffers.                        if (pMgmt->sNodeDBTable[ii].bPSEnable)                            break;                    }                    if (skb_queue_empty(&pMgmt->sNodeDBTable[ii].sTxPSQueue)) {                        // clear tx map                        pMgmt->abyPSTxMap[pMgmt->sNodeDBTable[ii].wAID >> 3] &=                                     ~byMask[pMgmt->sNodeDBTable[ii].wAID & 7];                        DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO "Index=%d PS queue clear \n", ii);                    }                                        pMgmt->sNodeDBTable[ii].bRxPSPoll = FALSE;                }                }            s_bCommandComplete(pDevice);                        break;                    case WLAN_CMD_RADIO_START:                    DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"eCommandState == WLAN_CMD_RADIO_START\n");                                    if (pDevice->bRadioCmd == TRUE)                CARDbRadioPowerOn(pDevice);            else                CARDbRadioPowerOff(pDevice);            s_bCommandComplete(pDevice);            break;                    case WLAN_CMD_CHANGE_BBSENSITIVITY_START:                    pDevice->bStopDataPkt = TRUE;            pDevice->byBBVGACurrent = pDevice->byBBVGANew;            BBvSetVGAGainOffset(pDevice, pDevice->byBBVGACurrent);            DBG_PRT(MSG_LEVEL_DEBUG, KERN_INFO"Change sensitivity pDevice->byBBVGACurrent = %x\n", pDevice->byBBVGACurrent);            pDevice->bStopDataPkt = FALSE;                        

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -