60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- a/ath/if_ath.c
 | |
| +++ b/ath/if_ath.c
 | |
| @@ -10473,11 +10473,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);
 | |
|  }
 | |
|  
 | |
| @@ -11028,6 +11028,7 @@ enum {
 | |
|  	ATH_DEBUG,
 | |
|  	ATH_TXANTENNA,
 | |
|  	ATH_RXANTENNA,
 | |
| +	ATH_POWEROFFSET,
 | |
|  	ATH_DIVERSITY,
 | |
|  	ATH_TXINTRPERIOD,
 | |
|  	ATH_FFTXQMIN,
 | |
| @@ -11308,6 +11309,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:
 | |
| @@ -11475,6 +11479,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;
 | |
| @@ -11616,6 +11623,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,
 | 
