[CUWiN-Dev] Atheros rx sensitivity bug

David Young dyoung at pobox.com
Tue Feb 5 16:58:51 CST 2008


On Mon, Feb 04, 2008 at 04:52:23PM -0800, Jeongkeun Lee wrote:
> Hi,
> 
> It seems like that current atheros driver & HAL used in cuwin have
> some bugs with the rx sensitivity. When operating with OFDM phy and
> non-Sta mode (ad-hoc mode), the rx sensitivity is abnormally high and it
> severely reduces the communication range and degrades performance.
> 
> In my cuwin0.6.0+soekris+cm9 testbed, at least 20dB SNR is required to
> receive 1000-byte size packets with 90% or higher reception ratio. Phy
> rate is fixed at 802.11a 6Mbps and we tested on clear 11a channels
> after scanning them to ensure that they are interference-free.
> Assuming -95dBm noise level, 20dB SNR is -75dBm which is much higher
> than the expected -88 dBm sensitivity level from the card
> manufacturers. (source: http://metrix.net/datasheets/CM9.pdf)
> 
> This has been the hottest bug for debate in madwifi community for last
> few months.
> http://madwifi.org/ticket/705

I am just curious, but does this bug also affect 802.11b and 802.11g?
I think that would probably explain a lot!

> I have applied the bug fix from madwifi : turning off ANI (ambient
> noise immunity) according to
> http://madwifi.org/attachment/ticket/705/ani_sensitity_fix.diff
> 
> Because of the variable name differences in madwifi and netbsd driver,
> I revised the madwifi code as follows:
> ---------------------------------------------------------------------
> /usr/src/cuwin-0.6.0-netbsd-src/sys/dev/ic/ath.c
> ---------------------------------------------------------------------
> if (ic->ic_opmode != IEEE80211_M_STA)
> {
>         /* Turn off ANI (ambient noise immunity) in other modes than station
>          * because it causes receive sensitivity problems in OFDM modulations.
>          */
>         if (ath_hal_getcapability(ah, HAL_CAP_INTMIT,0, NULL) == HAL_OK)
>                ath_hal_setcapability(ah, HAL_CAP_INTMIT, 1, 0, NULL);
> }
> ---------------------------------------------------------------------
> 
> 
> As HAL_CAP_INTMIT was not defined in the original netbsd hal code, I also
> added its declaration into :

I am using newer NetBSD code that actually does define this constant.

I think that you cannot use that constant because it is not supported
by the much older version of the Atheros HAL that you use.  In fact,
I think that if you change the code above to the following, then you
may see the kernel print 'HAL_CAP_INTMIT not supported?'.

if (ic->ic_opmode != IEEE80211_M_STA)
{
	/* Turn off ANI (ambient noise immunity) in other modes than station
	 * because it causes receive sensitivity problems in OFDM modulations.
	 */
	if (ath_hal_getcapability(ah, HAL_CAP_INTMIT,0, NULL) == HAL_OK)
		ath_hal_setcapability(ah, HAL_CAP_INTMIT, 1, 0, NULL);
	else
		printf("HAL_CAP_INTMIT not supported?\n");
}

I am going to try to produce a new snapshot of sources, soon.

Dave

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


More information about the CU-Wireless-Dev mailing list