Skip to content

Commit

Permalink
staging: vt6656: rf.c additional power.
Browse files Browse the repository at this point in the history
Provides extra power on weak RSSI.

The values orginate from the vendors driver.

It is applied later in RFbRawSetPower to simplify and check that it doesn't
exceed the max power.

Vendor driver VT6656_Linux_src_v1.21.03_x86_11.04.zip
http://www.viaembedded.com/servlet/downloadSvl?id=1890&download_file_id=14704
This is GPL-licensed code.

vendors code
...
if (pDevice->byRFType == RF_VT3226D0) {
	if (lRSSI == 0){
		lAdditionalPower = 7;
	}
	else if ((lRSSI < -60) && (lRSSI >= -65)){
		lAdditionalPower = 5;
		//lAdditionalPower = 9;
	}
	else if ((lRSSI < -65) && (lRSSI >= -70)){
		lAdditionalPower = 7;
		//lAdditionalPower = 9;
	}
	else if ((lRSSI < -70) && (lRSSI >= -80)){
		lAdditionalPower = 9;
		}
	else if (lRSSI < -80) {
		lAdditionalPower = 9;
	}
}
else {
	if (lRSSI == 0){
		lAdditionalPower = 7;
	}
	else if ((lRSSI < -70) && (lRSSI >= -75)){
		lAdditionalPower = 5;
	}
	else if ((lRSSI < -75) && (lRSSI >= -80)){
			lAdditionalPower = 7;
		}
		else if (lRSSI < -80) {
			lAdditionalPower = 9;
		}
	}

...

Signed-off-by: Malcolm Priestley <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
Malcolm Priestley authored and gregkh committed May 18, 2014
1 parent e03e1e3 commit f53d9f1
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
30 changes: 30 additions & 0 deletions drivers/staging/vt6656/rf.c
Original file line number Diff line number Diff line change
Expand Up @@ -769,6 +769,32 @@ int RFbSetPower(struct vnt_private *priv, u32 rate, u32 channel)
return ret;
}

static u8 vnt_rf_addpower(struct vnt_private *priv)
{
s32 rssi = -priv->uCurrRSSI;

if (!rssi)
return 7;

if (priv->byRFType == RF_VT3226D0) {
if (rssi < -70)
return 9;
else if (rssi < -65)
return 7;
else if (rssi < -60)
return 5;
} else {
if (rssi < -80)
return 9;
else if (rssi < -75)
return 7;
else if (rssi < -70)
return 5;
}

return 0;
}

/*
* Description: Set Tx power
*
Expand All @@ -788,6 +814,10 @@ int RFbRawSetPower(struct vnt_private *priv, u8 power, u32 rate)
u32 power_setting = 0;
int ret = true;

power += vnt_rf_addpower(priv);
if (power > VNT_RF_MAX_POWER)
power = VNT_RF_MAX_POWER;

if (priv->byCurPwr == power)
return true;

Expand Down
2 changes: 2 additions & 0 deletions drivers/staging/vt6656/rf.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@
#define RF_EMU 0x80
#define RF_MASK 0x7F

#define VNT_RF_MAX_POWER 0x3f

extern const u8 RFaby11aChannelIndex[200];

int IFRFbWriteEmbedded(struct vnt_private *, u32 dwData);
Expand Down

0 comments on commit f53d9f1

Please sign in to comment.