Exemplo n.º 1
0
/*
 * 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;
}
Exemplo n.º 2
0
/*
 * 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;
}
Exemplo n.º 3
0
/*
 * 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;
}
Exemplo n.º 4
0
/*
 * 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;
}
Exemplo n.º 5
0
/*
 * 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;
}