Jouni Malinen wrote : > > On Fri, Mar 24, 2006 at 10:57:22AM -0500, Dan Williams wrote: > > > <hidden> this is something that ieee80211 does that's completely wrong. > > Drivers need to report the _exact_ ESSID from the air in their scan > > results. It's up to the user space app to deal with ESSID length of 0. > > I agree that "<hidden>" should not be used, but this is bit more complex > than just reporting zero-length SSID.
The Wireless Extension API has the notion of "absent" ESSID as opposed to zero-length ESSID. Maybe we could use that ? The patch would look like (totally untested) : --- net/ieee80211/ieee80211_wx.c 2006-03-24 10:43:04.000000000 -0500 +++ net/ieee80211/ieee80211_wx.c 2006-03-24 10:53:27.000000000 -0500 @@ -64,8 +64,8 @@ iwe.cmd = SIOCGIWESSID; iwe.u.data.flags = 1; if (network->flags & NETWORK_EMPTY_ESSID) { - iwe.u.data.length = sizeof("<hidden>"); - start = iwe_stream_add_point(start, stop, &iwe, "<hidden>"); + iwe.u.data.flags = 1; /* Hidden ESSID */ + iwe.u.data.length = 0; + start = iwe_stream_add_point(start, stop, &iwe, ""); } else { iwe.u.data.length = min(network->ssid_len, (u8) 32); start = iwe_stream_add_point(start, stop, &iwe, network->ssid); If you want, I can change the source of iwlist.c to mention 'hidden' explicitely. The other suggestions all look good to me... > By the way, can we try to start > getting rid of calling this ESSID; it's SSID and ESSID never made it to > the IEEE 802.11 standard. I've seen time where people said SSID when referring to the BSSID, so I just wanted the terminology to be without ambiguity. James Ketrenos wrote : > > Since the scan results are supposed to report networks found; the first > agreement we need to make between user space and the kernel is how we > define a 'network', and how do we determine when a network has been > updated? [...] > Currently ieee80211 does not differentiate between probe responses and > beacons for collecting network data. To "fix" the problem we have now, > ieee80211 needs to be changed to be able to distinguish between probe > respones and beacons, and update all networks that match channel and MAC > when a beacon is received (regardless of SSID) and update a specific > network if the frame is a probe response. The problem of trying to keep probe response for longer period of time is that they may no longer be valid. As you roam around, things need to timeout/expire because they are no longer reachable. But, before going into deep technical discussions, we may want to remind us what is the goal of this API. The goal is to present the user a list of potential networks that can be used by him, in the case he doesn't want to associate with a specific network. Not all associations need it, it's a convenience feature for finding open networks. The network that don't send beacon do so to cloak themselves, i.e. they don't want random joe to access them. If they don't want to advertise themselves, the user don't really need to know about them, therefore it's acceptable to not show them in a scan result. If the user know about this network via other means, he can still associate with it by entering manually the ESSID. And you you really want to know the exhaustive list of networks around, please use kismet. The only thing debatable is about the current associated network, in case it's cloaked. This network has already been discovered (we are associated with it), therefore the user does not really require to see it in scan results, however it would be nice for completness. > Ideally user space should just register to receive all beacons and probe > responses from the network device and do all the parsing and network > management We may get there one day, but it will take time. That would be the most simple and efficient API. Note that some old hardware would not allow that. Have fun... Jean - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html