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

📄 intprismioctl.c

📁 vworks 下wlan的实现代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                    case WLAN_1_MBIT:                        rate = 1;                        break;                    case WLAN_2_MBIT:                        rate = 2;                        break;                    case WLAN_1_MBIT | WLAN_2_MBIT | WLAN_5_MBIT|WLAN_11_MBIT:                        rate = 3;                        break;                    case WLAN_5_MBIT:                        rate = 4;                        break;                    case WLAN_11_MBIT:                        rate = 5;                        break;                    case WLAN_1_MBIT | WLAN_2_MBIT:                        rate = 6;                        break;                    case WLAN_1_MBIT | WLAN_2_MBIT | WLAN_5_MBIT:                        rate = 7;                        break;                    default:                        /* If it's a rate that we don't have a direct                        translation, then select auto-rate fallback                         1-11Mbps */                        rate = 3;                        break;                   }                }            else                {                rate = (INT32)data;                }            status = intPrismRIDWordWrite (pWlanDev, WLAN_RID_TX_RATE,                                        rate);            intPrismReset(pWlanDev);            break;        case EIOCGPWRMAN:            if (data != NULL)                {                param  = intPrismRIDWordRead(pWlanDev, WLAN_RID_PM_ENABLED);                if (param == 0)                    {                    *(UINT16*)data = WLAN_PMANAGE_DISABLED;                    }                else                    {                    *(UINT16*)data = WLAN_PMANAGE_ENABLED;                    }                }            else                {                WLAN_DEBUG(DEBUG_ERROR, ("WLAN: PwrMan returns %04x\n",                          intPrismRIDWordRead(pWlanDev, WLAN_RID_PM_ENABLED)));                }            break;        case EIOCSPWRMAN:            if (pWlanDev->cardType == WLAN_CARDTYPE_3COM)                {                WLAN_DEBUG(DEBUG_ERROR, ("WLAN: PWR MAN not supported on "                                         "3Com\n"));                status = ERROR;                }            else                {                if ((INT32)data == WLAN_PMANAGE_ENABLED)                    {                    status = intPrismRIDWordWrite (pWlanDev, WLAN_RID_PM_ENABLED,                                                   (UINT16)TRUE);                    }                else if ((INT32)data == WLAN_PMANAGE_DISABLED)                    {                    status = intPrismRIDWordWrite (pWlanDev, WLAN_RID_PM_ENABLED,                                                   (UINT16)FALSE);                    }                else                    {                    WLAN_DEBUG(DEBUG_ERROR, ("WLAN: Invalid setting for power"                                             " management!!\n"));                    status = ERROR;                    }                }            status |= intPrismReset (pWlanDev);            break;        case EIOCGCOMMQUAL:            ltv.type = WLAN_RID_COMMQUAL;            intPrismLTVRead(pWlanDev, &ltv);            if (data != NULL)                {                *(UINT16 *)data = ltv.data[0];                }            else                {                WLAN_DEBUG(DEBUG_ERROR, ("WLAN: comm qual returns %04x\n",                                          ltv.data[0]));                }            break;        case EIOCSPROMISC:            status = intPrismRIDWordWrite(pWlanDev, WLAN_RID_PROMISC,                                           (UINT16)(INT32)data);            intPrismReset(pWlanDev);            break;        case EIOCGCARDTYPE:            if (data != NULL)                {                *(UINT16*)data = pWlanDev->cardType;                }            else                {                WLAN_DEBUG(DEBUG_ERROR, ("intPrismManage: card type is %d\n",                                         pWlanDev->cardType));                }            break;        case EIOCGWEPAVAIL:            if (pWlanDev->cardType == WLAN_CARDTYPE_3COM)                {                if (data != NULL)                    {                    if (intPrismRIDWordRead(pWlanDev,THREECOM_RID_WEP_SUPPORT)                         ==0)                        {                        *(UINT16*)data = 0;                        }                    else                        {                        *(UINT16*)data = 1;                        }                    }                else                    {                    WLAN_DEBUG(DEBUG_ERROR, ("intPrismManage: WEP is %s "                                             "available\n",                                             (intPrismRIDWordRead(pWlanDev,                                               THREECOM_RID_WEP_SUPPORT)                                              !=0)?"":"NOT"));                    }                }            else                {                if (data != NULL)                    {                    *(UINT16*)data = intPrismRIDWordRead(pWlanDev,                                                          WLAN_RID_WEP_AVAIL);                    }                else                    {                    WLAN_DEBUG(DEBUG_ERROR, ("intPrismManage: WEP is %s "                                             "available\n",                                             (intPrismRIDWordRead(pWlanDev,                                               WLAN_RID_WEP_AVAIL)                                              ==1)?"":"NOT"));                    }                }            break;        case EIOCGWEPSTATUS:                        switch (pWlanDev->cardType)                {                case WLAN_CARDTYPE_WAVELAN:                    ltv.type = WVLAN_RID_ENCRYPTION;                    break;                case WLAN_CARDTYPE_INTERSIL_2:                case WLAN_CARDTYPE_INTERSIL_2_5:                case WLAN_CARDTYPE_INTERSIL_3:                case WLAN_CARDTYPE_3COM:                    ltv.type = INTERSIL_RID_WEP_FLAGS;                    break;                default:                    WLAN_DEBUG(DEBUG_ERROR, ("EIOCGWEPSTATUS: Unknown card"                                             " type\n"));                    break;                }            status = intPrismLTVRead(pWlanDev, &ltv);            /* To make the wavelan and intersil results the same, mask off             bit 0 which will be a boolean (0/1) value indicating if WEP is             enabled or not for both cards */            if (data != NULL)                {                *(UINT16*)data = ltv.data[0] & 0x1;                }            else                {                WLAN_DEBUG(DEBUG_ERROR, ("intPrismManage: WEP is %s enabled\n",                                         ((ltv.data[0] & 0x01)==0)?"NOT":""));                }            break;        case EIOCSWEP:            if (pWlanDev->oneXMode == 1)                {                WLAN_DEBUG(DEBUG_ERROR, ("intPrismIoctl: EIOCSWEP: WEP cannot"                                         " be enabled or disabled while 802."                                         "1x mode is enabled. \n"));                status = ERROR;                break;                }                        switch(pWlanDev->cardType)                {                case WLAN_CARDTYPE_WAVELAN:                    status = intPrismRIDWordWrite(pWlanDev,WVLAN_RID_ENCRYPTION,                                                  (UINT16)(INT32)data);                    break;                case WLAN_CARDTYPE_INTERSIL_2:                case WLAN_CARDTYPE_INTERSIL_2_5:                case WLAN_CARDTYPE_INTERSIL_3:                case WLAN_CARDTYPE_3COM:                    if ((UINT16)(INT32)data == WLAN_WEP_ENABLED)                        {                        status = intPrismRIDWordWrite(pWlanDev,                                                      INTERSIL_RID_WEP_FLAGS,                                                       0x0003);                        }                    else                        {                        status = intPrismRIDWordWrite(pWlanDev,                                                      INTERSIL_RID_WEP_FLAGS,                                                       0x0000);                        }                    break;                default:                    WLAN_DEBUG(DEBUG_ERROR, ("EIOCSWEP: Unknown card"                                             " type\n"));                    break;                }            intPrismReset(pWlanDev);            break;        case EIOCSWEPKEY0:            status = intPrismWepKeyAdd(pWlanDev, 0, (UINT8*)data);            if (pWlanDev->oneXMode != ONEX_MODE_ENABLED)                {                status |= intPrismReset(pWlanDev);                }            break;        case EIOCSWEPKEY1:            status = intPrismWepKeyAdd(pWlanDev, 1, (UINT8*)data);            if (pWlanDev->oneXMode != ONEX_MODE_ENABLED)                {                status |= intPrismReset(pWlanDev);                }            break;        case EIOCSWEPKEY2:            status = intPrismWepKeyAdd(pWlanDev, 2, (UINT8*)data);            if (pWlanDev->oneXMode != ONEX_MODE_ENABLED)                {                status |= intPrismReset(pWlanDev);                }            break;        case EIOCSWEPKEY3:            status = intPrismWepKeyAdd(pWlanDev, 3, (UINT8*)data);            if (pWlanDev->oneXMode != ONEX_MODE_ENABLED)                {                status |= intPrismReset(pWlanDev);                }            break;        case EIOCSWEPDEFAULTKEY:            pWlanDev->defaultKey = (UINT16)(UINT32)data;            pWlanDev->broadcastKey = (UINT16)(UINT32)data;            switch(pWlanDev->cardType)                {                case WLAN_CARDTYPE_WAVELAN:                    status = intPrismRIDWordWrite(pWlanDev,                                                   WVLAN_RID_TX_CRYPT_KEY,                                                  (UINT16)(INT32)data);                    break;                case WLAN_CARDTYPE_INTERSIL_2:                case WLAN_CARDTYPE_INTERSIL_2_5:                case WLAN_CARDTYPE_INTERSIL_3:                case WLAN_CARDTYPE_3COM:                    status = intPrismRIDWordWrite(pWlanDev,                                               INTERSIL_RID_WEP_DEFAULT_KEY_ID,                                               (UINT16)(INT32)data);                    break;                default:                    WLAN_DEBUG(DEBUG_ERROR, ("EIOCSWEPDEFAULTKEY: Unknown card"                                             " type\n"));                    break;                }                        if (pWlanDev->oneXMode != ONEX_MODE_ENABLED)                {                status |= intPrismReset(pWlanDev);                }            break;        case EIOCGMODE:            /* get the card mode from the device struct */            if (data == NULL)                {                WLAN_DEBUG(DEBUG_ERROR, ("intPrismIoctl: NULL data in "                                         "EIOCGMODE\n"));                break;                }            *(UINT16*)data = pWlanDev->cardMode;            break;        case EIOCSAPMODE:            /*                If the card is not in Tertiary AP Mode, attempt to bring it into               such a state.  Upon successful enabling of Tert. AP Mode,                pWlanDev->cardMode will be WLAN_CARDMODE_TERT_AP            */            if (pWlanDev->cardMode != WLAN_CARDMODE_TERT_AP)                 {                

⌨️ 快捷键说明

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