aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2003-07-28 03:28:31 (GMT)
committerJouni Malinen <j@w1.fi>2003-07-28 03:28:31 (GMT)
commit5d44a2b5af0f1e8aef9cd1cf5516d1114abaf713 (patch)
tree20efa3950d24d41c6d01143bbd85d55fe62fa2fd
parentabb687cfd928da33dbdad1865bcd10c9cd24eb67 (diff)
downloadhostap-history-5d44a2b5af0f1e8aef9cd1cf5516d1114abaf713.zip
hostap-history-5d44a2b5af0f1e8aef9cd1cf5516d1114abaf713.tar.gz
hostap-history-5d44a2b5af0f1e8aef9cd1cf5516d1114abaf713.tar.bz2
Experimental algorithm in the driver did not include any feedback from the
measured TX power and could allow TX power values that cause interference or signal quality issues; now only txpower 'off' and 'auto' are allowed. TX power controlling will be returned after proper algorithm using feedback loop has been implemented.
-rw-r--r--ChangeLog6
-rw-r--r--driver/modules/hostap_ioctl.c21
2 files changed, 27 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ff7346f..5c93a8f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -37,6 +37,12 @@ ChangeLog for Host AP driver for Intersil Prism2/2.5/3
README file for more information)
* process beacon frames in kernel driver even when hostapd is used
(this updates AP tables and allows automatic WDS link generation)
+ * removed TX power controlling (iwconfig txpower) since the
+ experimental algorithm in the driver did not include any feedback
+ from the measured TX power and could allow TX power values that cause
+ interference or signal quality issues; now only txpower 'off' and
+ 'auto' are allowed. TX power controlling will be returned after
+ proper algorithm using feedback loop has been implemented.
2003-05-18 - v0.0.3
* redesigned RADIUS client implementation
diff --git a/driver/modules/hostap_ioctl.c b/driver/modules/hostap_ioctl.c
index bf378f1..0f240cc 100644
--- a/driver/modules/hostap_ioctl.c
+++ b/driver/modules/hostap_ioctl.c
@@ -1304,6 +1304,15 @@ static int prism2_ioctl_giwretry(struct net_device *dev,
#if WIRELESS_EXT > 9
+
+/* Note! This TX power controlling is experimental and should not be used in
+ * production use. It just sets raw power register and does not use any kind of
+ * feedback information from the measured TX power (CR58). This is now
+ * commented out to make sure that it is not used by accident. TX power
+ * configuration will be enabled again after proper algorithm using feedback
+ * has been implemented. */
+
+#ifdef RAW_TXPOWER_SETTING
/* Map HFA386x's CR31 to and from dBm with some sort of ad hoc mapping..
* This version assumes following mapping:
* CR31 is 7-bit value with -64 to +63 range.
@@ -1340,6 +1349,7 @@ static u16 prism2_txpower_dBm_to_hfa386x(int val)
return (unsigned char) tmp;
}
+#endif /* RAW_TXPOWER_SETTING */
static int prism2_ioctl_siwtxpow(struct net_device *dev,
@@ -1347,7 +1357,9 @@ static int prism2_ioctl_siwtxpow(struct net_device *dev,
struct iw_param *rrq, char *extra)
{
local_info_t *local = (local_info_t *) dev->priv;
+#ifdef RAW_TXPOWER_SETTING
char *tmp;
+#endif
u16 val;
int ret = 0;
@@ -1373,6 +1385,7 @@ static int prism2_ioctl_siwtxpow(struct net_device *dev,
local->txpower_type = PRISM2_TXPOWER_UNKNOWN;
}
+#ifdef RAW_TXPOWER_SETTING
if (!rrq->fixed && local->txpower_type != PRISM2_TXPOWER_AUTO) {
printk(KERN_DEBUG "Setting ALC on\n");
val = HFA384X_TEST_CFG_BIT_ALC;
@@ -1408,6 +1421,10 @@ static int prism2_ioctl_siwtxpow(struct net_device *dev,
if (local->func->cmd(dev, HFA384X_CMDCODE_WRITEMIF,
HFA386X_CR_MANUAL_TX_POWER, &val, NULL))
ret = -EOPNOTSUPP;
+#else /* RAW_TXPOWER_SETTING */
+ if (rrq->fixed)
+ ret = -EOPNOTSUPP;
+#endif /* RAW_TXPOWER_SETTING */
return ret;
}
@@ -1416,6 +1433,7 @@ static int prism2_ioctl_giwtxpow(struct net_device *dev,
struct iw_request_info *info,
struct iw_param *rrq, char *extra)
{
+#ifdef RAW_TXPOWER_SETTING
local_info_t *local = (local_info_t *) dev->priv;
u16 resp0;
@@ -1443,6 +1461,9 @@ static int prism2_ioctl_giwtxpow(struct net_device *dev,
local->txpower_type);
}
return 0;
+#else /* RAW_TXPOWER_SETTING */
+ return -EOPNOTSUPP;
+#endif /* RAW_TXPOWER_SETTING */
}
#endif /* WIRELESS_EXT > 9 */