On Thu, 2007-12-06 at 11:11 -0800, Jean Tourrilhes wrote: > On Thu, Dec 06, 2007 at 06:28:39AM -0500, Dan Williams wrote: > > See the previous thread about fixing the ap_scan mess. I think Jean's > > correct in asserting that we need more bits for scan capability. > > > > This patch introduces scan capability bits for WEXT; hopefully cfg80211 > > can also pick up equivalent functionality. Capability bits are provided > > for all the current options that may be passed to drivers in the > > iw_scan_req structure. It can be assumed that if the driver reports the > > scan capability, that the driver respects the options specified in the > > iw_scan_req structure when performing the scan. > > > > Clients can use logic like (cribbed from wpa_supplicant's driver_wext.c) > > this to figure out whether or not the capability bits are supported: > > > > struct iwreq iwr; > > struct iw_range *range; > > > > <set up iwr/range for request> > > > > if (ioctl(drv->ioctl_sock, SIOCGIWRANGE, &iwr) == 0) { > > u8 minlen = ((char *) &range->scan_capa) - (char *) range + sizeof(range->scan_capa); > > > > if (iwr.u.data.length >= minlen) { > > /* SCAN_CAPA is supported */ > > } > > } > > > > Jean; what do you think? > > Actually, I like your new proposal. I told you there was a > gotcha, you need to add some padding to not screw up userspace. Note > that we have already some padding in that structure (look at 'old_*'), > so it's not the first time we do that. > Basically, it should look like the patch below... > > Regards, > > Jean > > Signed-off-by: Jean Tourrilhes <jt@xxxxxxxxxx> > > --- linux/include/linux/wireless.d1.h 2007-12-06 11:04:16.000000000 -0800 > +++ linux/include/linux/wireless.h 2007-12-06 11:06:26.000000000 -0800 > @@ -1040,6 +1040,16 @@ struct iw_range > * because each entry contain its channel index */ > > __u32 enc_capa; /* IW_ENC_CAPA_* bit field */ > + > + /* Do *NOT* use those fields, they are just used as padding to get > + * proper alignement with user space */ > + __s32 min_pms; > + __s32 max_pms; > + __u16 pms_flags; > + __s32 modul_capa; > + __u32 bitrate_capa; > + > + __u32 scan_capa; /* IW_SCAN_CAPA_* bit field */ > }; Can you explain a bit more about this patch? Also, if nobody is supposed to use these fields, shouldn't their names be 'reserved' or something like that? Thanks, Dan - To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html