Subject: Re: 802.11 Transmit power control
To: None <tech-net@NetBSD.org>
From: David Young <dyoung@pobox.com>
List: tech-net
Date: 10/31/2004 12:43:03
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.

Dave

-- 
David Young             OJC Technologies
dyoung@ojctech.com      Urbana, IL * (217) 278-3933