/* * Description: Set Tx power * * Parameters: * In: * iobase - I/O base address * dwRFPowerTable - RF Tx Power Setting * Out: * none * * Return Value: true if succeeded; false if failed. * */ bool RFbSetPower( struct vnt_private *priv, unsigned int rate, u16 uCH ) { bool ret = true; unsigned char byPwr = 0; unsigned char byDec = 0; if (priv->dwDiagRefCount != 0) return true; if ((uCH < 1) || (uCH > CB_MAX_CHANNEL)) return false; switch (rate) { case RATE_1M: case RATE_2M: case RATE_5M: case RATE_11M: if (uCH > CB_MAX_CHANNEL_24G) return false; byPwr = priv->abyCCKPwrTbl[uCH]; break; case RATE_6M: case RATE_9M: case RATE_12M: case RATE_18M: byPwr = priv->abyOFDMPwrTbl[uCH]; if (priv->byRFType == RF_UW2452) byDec = byPwr + 14; else byDec = byPwr + 10; if (byDec >= priv->byMaxPwrLevel) byDec = priv->byMaxPwrLevel-1; byPwr = byDec; break; case RATE_24M: case RATE_36M: case RATE_48M: case RATE_54M: byPwr = priv->abyOFDMPwrTbl[uCH]; break; } if (priv->byCurPwr == byPwr) return true; ret = RFbRawSetPower(priv, byPwr, rate); if (ret) priv->byCurPwr = byPwr; return ret; }
/* * Description: Set Tx power * * Parameters: * In: * dwIoBase - I/O base address * dwRFPowerTable - RF Tx Power Setting * Out: * none * * Return Value: TRUE if succeeded; FALSE if failed. * */ BOOL RFbSetPower ( PSDevice pDevice, unsigned int uRATE, unsigned int uCH ) { BOOL bResult = TRUE; BYTE byPwr = pDevice->byCCKPwr; if (pDevice->dwDiagRefCount != 0) { return TRUE; } if (uCH == 0) return -EINVAL; switch (uRATE) { case RATE_1M: case RATE_2M: case RATE_5M: case RATE_11M: byPwr = pDevice->abyCCKPwrTbl[uCH-1]; break; case RATE_6M: case RATE_9M: case RATE_18M: case RATE_24M: case RATE_36M: case RATE_48M: case RATE_54M: if (uCH > CB_MAX_CHANNEL_24G) { byPwr = pDevice->abyOFDMAPwrTbl[uCH-15]; } else { byPwr = pDevice->abyOFDMPwrTbl[uCH-1]; } break; } bResult = RFbRawSetPower(pDevice, byPwr, uRATE); return bResult; }
/* * Description: Set Tx power * * Parameters: * In: * dwIoBase - I/O base address * dwRFPowerTable - RF Tx Power Setting * Out: * none * * Return Value: TRUE if succeeded; FALSE if failed. * */ int RFbSetPower(struct vnt_private *pDevice, u32 uRATE, u32 uCH) { int bResult = TRUE; u8 byPwr = pDevice->byCCKPwr; if (pDevice->dwDiagRefCount) return TRUE; if (uCH == 0) return -EINVAL; switch (uRATE) { case RATE_1M: case RATE_2M: case RATE_5M: case RATE_11M: byPwr = pDevice->abyCCKPwrTbl[uCH-1]; break; case RATE_6M: case RATE_9M: case RATE_18M: case RATE_24M: case RATE_36M: case RATE_48M: case RATE_54M: if (uCH > CB_MAX_CHANNEL_24G) { byPwr = pDevice->abyOFDMAPwrTbl[uCH-15]; } else { byPwr = pDevice->abyOFDMPwrTbl[uCH-1]; } break; } bResult = RFbRawSetPower(pDevice, byPwr, uRATE); return bResult; }
/* * Description: Set Tx power * * Parameters: * In: * dwIoBase - I/O base address * dwRFPowerTable - RF Tx Power Setting * Out: * none * * Return Value: TRUE if succeeded; FALSE if failed. * */ BOOL RFbSetPower ( IN PSDevice pDevice, IN UINT uRATE, IN UINT uCH ) { BOOL bResult = TRUE; BYTE byPwr = 0; BYTE byDec = 0; BYTE byPwrdBm = 0; if (pDevice->dwDiagRefCount != 0) { return TRUE; } if ((uCH < 1) || (uCH > CB_MAX_CHANNEL)) { return FALSE; } switch (uRATE) { case RATE_1M: case RATE_2M: case RATE_5M: case RATE_11M: byPwr = pDevice->abyCCKPwrTbl[uCH]; byPwrdBm = pDevice->abyCCKDefaultPwr[uCH]; //PLICE_DEBUG-> //byPwr+=5; //PLICE_DEBUG <- //printk("Rate <11:byPwr is %d\n",byPwr); break; case RATE_6M: case RATE_9M: case RATE_18M: byPwr = pDevice->abyOFDMPwrTbl[uCH]; if (pDevice->byRFType == RF_UW2452) { byDec = byPwr + 14; } else { byDec = byPwr + 10; } if (byDec >= pDevice->byMaxPwrLevel) { byDec = pDevice->byMaxPwrLevel-1; } if (pDevice->byRFType == RF_UW2452) { byPwrdBm = byDec - byPwr; byPwrdBm /= 3; } else { byPwrdBm = byDec - byPwr; byPwrdBm >>= 1; } byPwrdBm += pDevice->abyOFDMDefaultPwr[uCH]; byPwr = byDec; //PLICE_DEBUG-> //byPwr+=5; //PLICE_DEBUG<- //printk("Rate <24:byPwr is %d\n",byPwr); break; case RATE_24M: case RATE_36M: case RATE_48M: case RATE_54M: byPwr = pDevice->abyOFDMPwrTbl[uCH]; byPwrdBm = pDevice->abyOFDMDefaultPwr[uCH]; //PLICE_DEBUG-> //byPwr+=5; //PLICE_DEBUG<- //printk("Rate < 54:byPwr is %d\n",byPwr); break; } #if 0 // 802.11h TPC if (pDevice->bLinkPass == TRUE) { // do not over local constraint if (byPwrdBm > pDevice->abyLocalPwr[uCH]) { pDevice->byCurPwrdBm = pDevice->abyLocalPwr[uCH]; byDec = byPwrdBm - pDevice->abyLocalPwr[uCH]; if (pDevice->byRFType == RF_UW2452) { byDec *= 3; } else { byDec <<= 1; } if (byPwr > byDec) { byPwr -= byDec; } else { byPwr = 0; } } else { pDevice->byCurPwrdBm = byPwrdBm; } } else { // do not over regulatory constraint if (byPwrdBm > pDevice->abyRegPwr[uCH]) { pDevice->byCurPwrdBm = pDevice->abyRegPwr[uCH]; byDec = byPwrdBm - pDevice->abyRegPwr[uCH]; if (pDevice->byRFType == RF_UW2452) { byDec *= 3; } else { byDec <<= 1; } if (byPwr > byDec) { byPwr -= byDec; } else { byPwr = 0; } } else { pDevice->byCurPwrdBm = byPwrdBm; } } #endif // if (pDevice->byLocalID <= REV_ID_VT3253_B1) { if (pDevice->byCurPwr == byPwr) { return TRUE; } bResult = RFbRawSetPower(pDevice, byPwr, uRATE); // } if (bResult == TRUE) { pDevice->byCurPwr = byPwr; } return bResult; }
/* * Description: Set Tx power * * Parameters: * In: * dwIoBase - I/O base address * dwRFPowerTable - RF Tx Power Setting * Out: * none * * Return Value: true if succeeded; false if failed. * */ bool RFbSetPower( PSDevice pDevice, unsigned int uRATE, unsigned int uCH ) { bool bResult = true; unsigned char byPwr = 0; unsigned char byDec = 0; unsigned char byPwrdBm = 0; if (pDevice->dwDiagRefCount != 0) { return true; } if ((uCH < 1) || (uCH > CB_MAX_CHANNEL)) { return false; } switch (uRATE) { case RATE_1M: case RATE_2M: case RATE_5M: case RATE_11M: byPwr = pDevice->abyCCKPwrTbl[uCH]; byPwrdBm = pDevice->abyCCKDefaultPwr[uCH]; //PLICE_DEBUG-> //byPwr+=5; //PLICE_DEBUG <- break; case RATE_6M: case RATE_9M: case RATE_18M: byPwr = pDevice->abyOFDMPwrTbl[uCH]; if (pDevice->byRFType == RF_UW2452) { byDec = byPwr + 14; } else { byDec = byPwr + 10; } if (byDec >= pDevice->byMaxPwrLevel) { byDec = pDevice->byMaxPwrLevel-1; } if (pDevice->byRFType == RF_UW2452) { byPwrdBm = byDec - byPwr; byPwrdBm /= 3; } else { byPwrdBm = byDec - byPwr; byPwrdBm >>= 1; } byPwrdBm += pDevice->abyOFDMDefaultPwr[uCH]; byPwr = byDec; //PLICE_DEBUG-> //byPwr+=5; //PLICE_DEBUG<- break; case RATE_24M: case RATE_36M: case RATE_48M: case RATE_54M: byPwr = pDevice->abyOFDMPwrTbl[uCH]; byPwrdBm = pDevice->abyOFDMDefaultPwr[uCH]; //PLICE_DEBUG-> //byPwr+=5; //PLICE_DEBUG<- break; } if (pDevice->byCurPwr == byPwr) { return true; } bResult = RFbRawSetPower(pDevice, byPwr, uRATE); if (bResult == true) { pDevice->byCurPwr = byPwr; } return bResult; }