Subject: Re: 802.11 Transmit power control
To: David Young <dyoung@pobox.com>
From: Dheeraj Reddy <dheeraj@ece.gatech.edu>
List: tech-net
Date: 10/31/2004 13:57:22
On Sun, Oct 31, 2004 at 12:43:03PM -0600, David Young wrote:

> On Sun, Oct 31, 2004 at 01:21:07PM -0500, Dheeraj Reddy wrote:
> > Hello all,
> > 
> > I am attaching essentially barebones of the transmit power control API
> > (David Young's email to the list in Feb of last year) and a simple
> > implementation for that on the aironet driver. This includes the patch
> > I sent yesterday to just get the aironet card working (currently it is
> > broken in current and in 2.0)
> > 
> > Can someone please comment ? suggestions/brickbats
> 
> Dheeraj,
> 
> Great!
> 
> My API put too much functionality in the kernel.  FreeBSD has a vastly
> simpler API, IEEE80211_IOC_TXPOWER, which now I prefer, except with
> these semantics:
> 
> 1 lowest power setting is 0
> 
> 2 the highest power setting is hardware-dependent; whichever
>   highest setting the hardware meaningfully supports
> 
> 3 if the ioctl passes a setting that is higher than the maximum, the
>   hardware clamps the setting and returns the clamped value
> 
> 4 settings are *unitless*; if it matters, you may keep calibrate your
>   card and keep the calibration values in userland; maybe ifconfig
>   should render some assistance
> 
> 5 settings are *not* scaled before they're written to the hardware
>   (this is important: witness the confusion that scaling leads to in
>   when audio drivers scale volume settings)
> 
> One thing that is missing is an API for finding out the maximum allowable
> power setting in each channel, since it *will* vary.  This can wait.
> It probably belongs in a general-purpose "get channel information" ioctl.
> 
> If you will change your patch to the IEEE80211_IOC_TXPOWER-style API,
> I will commit it.

David,

  Are you implying that i get the 'struct ieee80211req ' based IO control from
FreeBSD or just simplify/shrink the 'struct ieee80211_tpc ' to just pass a
power setting and just do sanity check in the kernel ?

dheeraj