Re: NetworkManager and IPW2100



On Sun, 24 Oct 2004, Ryan Skadberg wrote:
> My assumption is that it is an IPW2100 issue, but I wanted to make
> sure no one else has this working first.
> 
> The next question would be, how is NetworkManager checking signal
> strength?  And then, what does it expect to get?  I'd like to go to
> the IPW2100 developers and see if I can get them to fix this ASAP.

Ryan,

NetworkManager uses the iw_get_stats/iw_get_range combo, like most other 
applications that do signal strength for the current connection (old GNOME 
wireless applet, netapplet).

	has_range = (iw_get_range_info (iwlib_socket, nm_device_get_iface 
(dev), &range) >= 0);
	if (iw_get_stats (iwlib_socket, nm_device_get_iface (dev), &stats, 
&range, has_range) == 0)
	{
		/* Update our max quality while we're at it */
		dev->options.wireless.max_quality = range.max_qual.level;
		dev->options.wireless.noise = stats.qual.noise;
		percent = nm_wireless_qual_to_percent (dev, 
&(stats.qual));
	}

What your problem appears to be is that the ipw2100 drivers _dont_ 
_support_ the SIOCGIWSTATS ioctl(), which NetworkManager really wants.  I 
appears there is fallback code in iwlib (from wireless-tools) to read from 
/proc, but that' won't necessarily do the right thing.  The driver should 
really support SIOCGIWSTATS, not just SIOCGIWRANGE.

ipw2100.c:
static iw_handler ipw2100_wx_handlers[] = 
{
...
        NULL,                     /* SIOCGIWSTATS */
...
};

In any case, can you do 'cat /proc/net/wireless' and post the results to 
the list here?

Thanks!
Dan



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]