1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-12-05 04:23:08 +02:00
openwrt-xburst/package/madwifi/patches/438-poweroffset_sysctl.patch
nbd cbcac8031c madwifi: if a txpower value below the poweroffset is requested, set the internal txpower to 0db
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16234 3c298f89-4303-0410-b956-a3cf2f4a3e73
2009-05-31 14:45:04 +00:00

60 lines
1.7 KiB
Diff

--- a/ath/if_ath.c
+++ b/ath/if_ath.c
@@ -10474,11 +10474,11 @@ set_node_txpower(void *arg, struct ieee8
* XXX: this function needs some locking to avoid being called
* twice/interrupted. Returns the value actually stored. */
static u_int32_t
-ath_set_clamped_maxtxpower(struct ath_softc *sc,
- u_int32_t new_clamped_maxtxpower)
+ath_set_clamped_maxtxpower(struct ath_softc *sc, u_int32_t new_txpwr)
{
- new_clamped_maxtxpower -= sc->sc_poweroffset;
- (void)ath_hal_settxpowlimit(sc->sc_ah, new_clamped_maxtxpower);
+ new_txpwr = ((new_txpwr < sc->sc_poweroffset) ? 0 :
+ new_txpwr - sc->sc_poweroffset);
+ (void)ath_hal_settxpowlimit(sc->sc_ah, new_txpwr);
return ath_get_clamped_maxtxpower(sc);
}
@@ -11029,6 +11029,7 @@ enum {
ATH_DEBUG,
ATH_TXANTENNA,
ATH_RXANTENNA,
+ ATH_POWEROFFSET,
ATH_DIVERSITY,
ATH_TXINTRPERIOD,
ATH_FFTXQMIN,
@@ -11309,6 +11310,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl
ath_debug_global = (val & ATH_DEBUG_GLOBAL);
#endif
break;
+ case ATH_POWEROFFSET:
+ sc->sc_poweroffset = val;
+ break;
case ATH_TXANTENNA:
/*
* antenna can be:
@@ -11476,6 +11480,9 @@ ATH_SYSCTL_DECL(ath_sysctl_halparam, ctl
case ATH_DEBUG:
val = sc->sc_debug | ath_debug_global;
break;
+ case ATH_POWEROFFSET:
+ val = sc->sc_poweroffset;
+ break;
case ATH_TXANTENNA:
val = sc->sc_txantenna;
break;
@@ -11617,6 +11624,12 @@ static const ctl_table ath_sysctl_templa
},
#endif
{ .ctl_name = CTL_AUTO,
+ .procname = "poweroffset",
+ .mode = 0644,
+ .proc_handler = ath_sysctl_halparam,
+ .extra2 = (void *)ATH_POWEROFFSET,
+ },
+ { .ctl_name = CTL_AUTO,
.procname = "txantenna",
.mode = 0644,
.proc_handler = ath_sysctl_halparam,