Beispiel #1
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 vnt_rf_setpower(struct vnt_private *priv, u32 rate, u32 channel)
{
    int ret = true;
    u8 power = priv->byCCKPwr;

    if (channel == 0)
        return -EINVAL;

    switch (rate) {
    case RATE_1M:
    case RATE_2M:
    case RATE_5M:
    case RATE_11M:
        power = priv->abyCCKPwrTbl[channel-1];
        break;
    case RATE_6M:
    case RATE_9M:
    case RATE_18M:
    case RATE_24M:
    case RATE_36M:
    case RATE_48M:
    case RATE_54M:
        if (channel > CB_MAX_CHANNEL_24G)
            power = priv->abyOFDMAPwrTbl[channel-15];
        else
            power = priv->abyOFDMPwrTbl[channel-1];
        break;
    }

    ret = vnt_rf_set_txpower(priv, power, rate);

    return ret;
}
Beispiel #2
0
/* Set Tx power by rate and channel number */
int vnt_rf_setpower(struct vnt_private *priv, u32 rate, u32 channel)
{
	u8 power = priv->cck_pwr;

	if (channel == 0)
		return -EINVAL;

	switch (rate) {
	case RATE_1M:
	case RATE_2M:
	case RATE_5M:
	case RATE_11M:
		channel--;

		if (channel < sizeof(priv->cck_pwr_tbl))
			power = priv->cck_pwr_tbl[channel];
		break;
	case RATE_6M:
	case RATE_9M:
	case RATE_12M:
	case RATE_18M:
	case RATE_24M:
	case RATE_36M:
	case RATE_48M:
	case RATE_54M:
		if (channel > CB_MAX_CHANNEL_24G)
			power = priv->ofdm_a_pwr_tbl[channel-15];
		else
			power = priv->ofdm_pwr_tbl[channel-1];
		break;
	}

	return vnt_rf_set_txpower(priv, power, rate);
}