projects
/
openwrt
/
svn-archive
/
archive.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ffdba4e
)
add function for enabling/disabling radio in wlcompat
author
Felix Fietkau
<nbd@openwrt.org>
Wed, 1 Jun 2005 15:12:20 +0000
(15:12 +0000)
committer
Felix Fietkau
<nbd@openwrt.org>
Wed, 1 Jun 2005 15:12:20 +0000
(15:12 +0000)
SVN-Revision: 1129
openwrt/target/linux/package/wlcompat/wlcompat.c
patch
|
blob
|
history
diff --git
a/openwrt/target/linux/package/wlcompat/wlcompat.c
b/openwrt/target/linux/package/wlcompat/wlcompat.c
index e39fe6889a19f1a80514ca6ffec015b751bc0f3e..e3d42f5cbee129f965fea1ca2a487477e75bf2bb 100644
(file)
--- a/
openwrt/target/linux/package/wlcompat/wlcompat.c
+++ b/
openwrt/target/linux/package/wlcompat/wlcompat.c
@@
-384,30
+384,44
@@
static int wlcompat_ioctl(struct net_device *dev,
}
case SIOCGIWTXPOW:
{
}
case SIOCGIWTXPOW:
{
+ int radio;
+
+ if (wl_ioctl(dev, WLC_GET_RADIO, &radio, sizeof(int)) < 0)
+ return -EINVAL;
+
if (wl_get_val(dev, "qtxpower", &(wrqu->txpower.value), sizeof(int)) < 0)
return -EINVAL;
wrqu->txpower.value &= ~WL_TXPWR_OVERRIDE;
wrqu->txpower.fixed = 0;
if (wl_get_val(dev, "qtxpower", &(wrqu->txpower.value), sizeof(int)) < 0)
return -EINVAL;
wrqu->txpower.value &= ~WL_TXPWR_OVERRIDE;
wrqu->txpower.fixed = 0;
- wrqu->txpower.disabled =
0
;
+ wrqu->txpower.disabled =
radio
;
wrqu->txpower.flags = IW_TXPOW_MWATT;
break;
}
case SIOCSIWTXPOW:
{
wrqu->txpower.flags = IW_TXPOW_MWATT;
break;
}
case SIOCSIWTXPOW:
{
- int override;
-
- if (wl_get_val(dev, "qtxpower", &override, sizeof(int)) < 0)
+ /* This is weird: WLC_SET_RADIO with 1 as argument disables the radio */
+ int radio = wrqu->txpower.disabled;
+
+ if (wl_ioctl(dev, WLC_SET_RADIO, &radio, sizeof(int)) < 0)
return -EINVAL;
return -EINVAL;
- wrqu->txpower.value |= override & WL_TXPWR_OVERRIDE;
-
- if (wrqu->txpower.flags != IW_TXPOW_MWATT)
- return -EINVAL;
+ if (!wrqu->txpower.disabled) {
+ int override;
- if (wl_set_val(dev, "qtxpower", &wrqu->txpower.value, sizeof(int)) < 0)
- return -EINVAL;
+ if (wl_get_val(dev, "qtxpower", &override, sizeof(int)) < 0)
+ return -EINVAL;
+
+ wrqu->txpower.value |= override & WL_TXPWR_OVERRIDE;
+
+ if (wrqu->txpower.flags != IW_TXPOW_MWATT)
+ return -EINVAL;
+
+ if (wl_set_val(dev, "qtxpower", &wrqu->txpower.value, sizeof(int)) < 0)
+ return -EINVAL;
+
+ }
}
case SIOCGIWENCODE:
{
}
case SIOCGIWENCODE:
{