Search Linux Wireless

Re: [RFC PATCH] introduce WEXT scan capabilities

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

 



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 */
 };
 
 /*
-
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

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux