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