Skip to contentSkip to conversation

introduce WEXT scan capabilities

PATCH In review Dan Williams 4 participants 5 messages Dec 12, 2007

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 introduce WEXT scan capabilities

Introduce scan capabilities to WEXT so that userspace can do intelligent things with scan behavior such as handling hidden SSIDs more gracefully. If the driver reports a specific scan capability, the driver must respect the options specified in the iw_scan_req structure when handling the SIOCSIWSCAN call, unless it's mode or state does not allow it to do so, in which case it must return an error.

This version switches to Dave Kilroy's suggestion of claiming unused padding space for the scan_capa field.

drivers/net/wireless/hostap/hostap_ioctl.c +3 -0
index d8f5efc..3a57d48 100644
@@ -1089,6 +1089,9 @@ static int prism2_ioctl_giwrange(struct net_device *dev,
 	range->enc_capa = IW_ENC_CAPA_WPA | IW_ENC_CAPA_WPA2 |
 		IW_ENC_CAPA_CIPHER_TKIP | IW_ENC_CAPA_CIPHER_CCMP;
 
+	if (local->sta_fw_ver >= PRISM2_FW_VER(1,3,1))
+		range->scan_capa = IW_SCAN_CAPA_ESSID;
+
 	return 0;
 }
 
drivers/net/wireless/ipw2200.c +2 -0
index 54f44e5..e30ad24 100644
@@ -8901,6 +8901,8 @@ static int ipw_wx_get_range(struct net_device *dev,
 	range->enc_capa = IW_ENC_CAPA_WPA | IW_ENC_CAPA_WPA2 |
 		IW_ENC_CAPA_CIPHER_TKIP | IW_ENC_CAPA_CIPHER_CCMP;
 
+	range->scan_capa = IW_SCAN_CAPA_ESSID | IW_SCAN_CAPA_TYPE;
+
 	IPW_DEBUG_WX("GET Range\n");
 	return 0;
 }
include/linux/wireless.h +13 -0
index 0987aa7..74e84ca 100644
@@ -541,6 +541,16 @@
 /* Maximum size of returned data */
 #define IW_SCAN_MAX_DATA	4096	/* In bytes */
 
+/* Scan capability flags - in (struct iw_range *)->scan_capa */
+#define IW_SCAN_CAPA_NONE		0x00
+#define IW_SCAN_CAPA_ESSID		0x01
+#define IW_SCAN_CAPA_BSSID		0x02
+#define IW_SCAN_CAPA_CHANNEL	0x04
+#define IW_SCAN_CAPA_MODE		0x08
+#define IW_SCAN_CAPA_RATE		0x10
+#define IW_SCAN_CAPA_TYPE		0x20
+#define IW_SCAN_CAPA_TIME		0x40
+
 /* Max number of char in custom event - use multiple of them if needed */
 #define IW_CUSTOM_MAX		256	/* In bytes */
 
@@ -963,6 +973,9 @@ struct	iw_range
 	__u16		old_num_channels;
 	__u8		old_num_frequency;
 
+	/* Scan capabilities */
+	__u8		scan_capa; 	/* IW_SCAN_CAPA_* bit field */
+
 	/* Wireless event capability bitmasks */
 	__u32		event_capa[6];
 
net/mac80211/ieee80211_ioctl.c +2 -0
index 646e2f2..0c52ed8 100644
@@ -218,6 +218,8 @@ static int ieee80211_ioctl_giwrange(struct net_device *dev,
 	IW_EVENT_CAPA_SET(range->event_capa, SIOCGIWAP);
 	IW_EVENT_CAPA_SET(range->event_capa, SIOCGIWSCAN);
 
+	range->scan_capa |= IW_SCAN_CAPA_ESSID;
+
 	return 0;
 }
 
#1 lore raw

From: Dan Williams <[email protected]>
Date: Wed, 12 Dec 2007 10:25:07 -0500

Quoted 11 lines

Introduce scan capabilities to WEXT so that userspace can do intelligent things with scan behavior such as handling hidden SSIDs more gracefully. If the driver reports a specific scan capability, the driver must respect the options specified in the iw_scan_req structure when handling the SIOCSIWSCAN call, unless it's mode or state does not allow it to do so, in which case it must return an error.

This version switches to Dave Kilroy's suggestion of claiming unused padding space for the scan_capa field.

Ok, I'm fine with this.

#2 lore raw
In reply to Dan Williams
Quoted 6 lines · Dan Williams
include/linux/wireless.h +0 -0
@@ -541,6 +541,16 @@
 /* Maximum size of returned data */
 #define IW_SCAN_MAX_DATA       4096    /* In bytes */
 

include/linux/wireless.h line 553

Quoted 10 lines
include/linux/wireless.h +10 -0
+/* Scan capability flags - in (struct iw_range *)->scan_capa */
+#define IW_SCAN_CAPA_NONE              0x00
+#define IW_SCAN_CAPA_ESSID             0x01
+#define IW_SCAN_CAPA_BSSID             0x02
+#define IW_SCAN_CAPA_CHANNEL   0x04
+#define IW_SCAN_CAPA_MODE              0x08
+#define IW_SCAN_CAPA_RATE              0x10
+#define IW_SCAN_CAPA_TYPE              0x20
+#define IW_SCAN_CAPA_TIME              0x40
+

Oh well... Would you mind putting this on enum and kerneldoc'ing them? I'm not sure what some of these would imply capabilities for.

Luis

maintainer
#3 lore raw
Quoted 3 lines

Oh well... Would you mind putting this on enum and kerneldoc'ing them? I'm not sure what some of these would imply capabilities for.

kerneldoc isn't very useful on that file and nobody's going to convert all the comments there any more.

johannes

maintainer
#4 lore raw
In reply to Dan Williams
Quoted 11 lines · Dan Williams

Introduce scan capabilities to WEXT so that userspace can do intelligent things with scan behavior such as handling hidden SSIDs more gracefully. If the driver reports a specific scan capability, the driver must respect the options specified in the iw_scan_req structure when handling the SIOCSIWSCAN call, unless it's mode or state does not allow it to do so, in which case it must return an error.

This version switches to Dave Kilroy's suggestion of claiming unused padding space for the scan_capa field.

Looks ok to me.

johannes