📄 intprismioctl.c
字号:
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, <v); 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, <v); /* 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 + -