diff options
| author | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-02-07 11:28:21 +0000 | 
|---|---|---|
| committer | nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-02-07 11:28:21 +0000 | 
| commit | 99eff05981e1e052ec58657e60d7d19eddb92884 (patch) | |
| tree | 74be17d7f9362374712fc0cb3e0c6d0fb4d66e03 | |
| parent | d8db515de0a58dd4ef09d52519d1df2c260a65f9 (diff) | |
iw: update to version 3.3, sync with latest nl80211.h changes
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30347 3c298f89-4303-0410-b956-a3cf2f4a3e73
| -rw-r--r-- | package/iw/Makefile | 8 | ||||
| -rw-r--r-- | package/iw/patches/001-nl80211_h_sync.patch | 274 | ||||
| -rw-r--r-- | package/iw/patches/100-rx_rate.patch | 10 | ||||
| -rw-r--r-- | package/iw/patches/110-ibss_ht.patch | 113 | ||||
| -rw-r--r-- | package/iw/patches/110-per_chain_signal_strength.patch (renamed from package/iw/patches/120-per_chain_signal_strength.patch) | 8 | ||||
| -rw-r--r-- | package/iw/patches/120-tdls_peer_indentation.patch | 11 | ||||
| -rw-r--r-- | package/iw/patches/130-fix_txpower.patch | 11 | 
7 files changed, 73 insertions, 362 deletions
| diff --git a/package/iw/Makefile b/package/iw/Makefile index 159d69a10..f758631a7 100644 --- a/package/iw/Makefile +++ b/package/iw/Makefile @@ -8,13 +8,12 @@  include $(TOPDIR)/rules.mk  PKG_NAME:=iw -PKG_VERSION:=3.1 -PKG_RELEASE:=2 +PKG_VERSION:=3.3 +PKG_RELEASE:=1  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2  PKG_SOURCE_URL:=http://wireless.kernel.org/download/iw/ -PKG_MD5SUM:=2b63438a12b7dc481140cb9a69c86e4a -PKG_BUILD_DEPENDS:=mac80211 +PKG_MD5SUM:=146ad14cdeb39fb88b21efdbb28787d1  include $(INCLUDE_DIR)/package.mk @@ -35,7 +34,6 @@ endef  TARGET_CPPFLAGS:= \  	-I$(STAGING_DIR)/usr/include/libnl-tiny \ -	-I$(STAGING_DIR)/usr/include/mac80211 \  	$(TARGET_CPPFLAGS) \  	-DCONFIG_LIBNL20 \  	-D_GNU_SOURCE diff --git a/package/iw/patches/001-nl80211_h_sync.patch b/package/iw/patches/001-nl80211_h_sync.patch index 1c425273a..544df9dff 100644 --- a/package/iw/patches/001-nl80211_h_sync.patch +++ b/package/iw/patches/001-nl80211_h_sync.patch @@ -1,251 +1,77 @@  --- a/nl80211.h  +++ b/nl80211.h -@@ -6,7 +6,7 @@ -  * Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net> -  * Copyright 2008 Michael Wu <flamingice@sourmilk.net> -  * Copyright 2008 Luis Carlos Cobo <luisca@cozybit.com> -- * Copyright 2008 Michael Buesch <mb@bu3sch.de> -+ * Copyright 2008 Michael Buesch <m@bues.ch> -  * Copyright 2008, 2009 Luis R. Rodriguez <lrodriguez@atheros.com> -  * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com> -  * Copyright 2008 Colin McCabe <colin@cozybit.com> -@@ -161,6 +161,13 @@ -  * @NL80211_CMD_SET_BEACON: set the beacon on an access point interface -  *	using the %NL80211_ATTR_BEACON_INTERVAL, %NL80211_ATTR_DTIM_PERIOD, -  *	%NL80211_ATTR_BEACON_HEAD and %NL80211_ATTR_BEACON_TAIL attributes. -+ *	Following attributes are provided for drivers that generate full Beacon -+ *	and Probe Response frames internally: %NL80211_ATTR_SSID, -+ *	%NL80211_ATTR_HIDDEN_SSID, %NL80211_ATTR_CIPHERS_PAIRWISE, -+ *	%NL80211_ATTR_CIPHER_GROUP, %NL80211_ATTR_WPA_VERSIONS, -+ *	%NL80211_ATTR_AKM_SUITES, %NL80211_ATTR_PRIVACY, -+ *	%NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_IE, %NL80211_ATTR_IE_PROBE_RESP, -+ *	%NL80211_ATTR_IE_ASSOC_RESP. -  * @NL80211_CMD_NEW_BEACON: add a new beacon to an access point interface, -  *	parameters are like for %NL80211_CMD_SET_BEACON. -  * @NL80211_CMD_DEL_BEACON: remove the beacon, stop sending it -@@ -762,6 +769,8 @@ enum nl80211_commands { -  *	that can be added to a scan request -  * @NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN: maximum length of information -  *	elements that can be added to a scheduled scan request -+ * @NL80211_ATTR_MAX_MATCH_SETS: maximum number of sets that can be -+ *	used with @NL80211_ATTR_SCHED_SCAN_MATCH, a wiphy attribute. -  * -  * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz) -  * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive -@@ -842,18 +851,20 @@ enum nl80211_commands { -  * @NL80211_ATTR_STATUS_CODE: StatusCode for the %NL80211_CMD_CONNECT -  *	event (u16) -  * @NL80211_ATTR_PRIVACY: Flag attribute, used with connect(), indicating -- *	that protected APs should be used. -+ *	that protected APs should be used. This is also used with NEW_BEACON to -+ *	indicate that the BSS is to use protection. -  * -- * @NL80211_ATTR_CIPHERS_PAIRWISE: Used with CONNECT and ASSOCIATE to -- *	indicate which unicast key ciphers will be used with the connection -+ * @NL80211_ATTR_CIPHERS_PAIRWISE: Used with CONNECT, ASSOCIATE, and NEW_BEACON -+ *	to indicate which unicast key ciphers will be used with the connection -  *	(an array of u32). -- * @NL80211_ATTR_CIPHER_GROUP: Used with CONNECT and ASSOCIATE to indicate -- *	which group key cipher will be used with the connection (a u32). -- * @NL80211_ATTR_WPA_VERSIONS: Used with CONNECT and ASSOCIATE to indicate -- *	which WPA version(s) the AP we want to associate with is using -+ * @NL80211_ATTR_CIPHER_GROUP: Used with CONNECT, ASSOCIATE, and NEW_BEACON to -+ *	indicate which group key cipher will be used with the connection (a -+ *	u32). -+ * @NL80211_ATTR_WPA_VERSIONS: Used with CONNECT, ASSOCIATE, and NEW_BEACON to -+ *	indicate which WPA version(s) the AP we want to associate with is using -  *	(a u32 with flags from &enum nl80211_wpa_versions). -- * @NL80211_ATTR_AKM_SUITES: Used with CONNECT and ASSOCIATE to indicate -- *	which key management algorithm(s) to use (an array of u32). -+ * @NL80211_ATTR_AKM_SUITES: Used with CONNECT, ASSOCIATE, and NEW_BEACON to -+ *	indicate which key management algorithm(s) to use (an array of u32). -  * -  * @NL80211_ATTR_REQ_IE: (Re)association request information elements as -  *	sent out by the card, for ROAM and successful CONNECT events. -@@ -1002,6 +1013,24 @@ enum nl80211_commands { +@@ -1475,6 +1475,7 @@ enum nl80211_attrs { + #define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS -  * @NL80211_ATTR_SCHED_SCAN_INTERVAL: Interval between scheduled scan -  *	cycles, in msecs. -+ -+ * @NL80211_ATTR_SCHED_SCAN_MATCH: Nested attribute with one or more -+ *	sets of attributes to match during scheduled scans.  Only BSSs -+ *	that match any of the sets will be reported.  These are -+ *	pass-thru filter rules. -+ *	For a match to succeed, the BSS must match all attributes of a -+ *	set.  Since not every hardware supports matching all types of -+ *	attributes, there is no guarantee that the reported BSSs are -+ *	fully complying with the match sets and userspace needs to be -+ *	able to ignore them by itself. -+ *	Thus, the implementation is somewhat hardware-dependent, but -+ *	this is only an optimization and the userspace application -+ *	needs to handle all the non-filtered results anyway. -+ *	If the match attributes don't make sense when combined with -+ *	the values passed in @NL80211_ATTR_SCAN_SSIDS (eg. if an SSID -+ *	is included in the probe request, but the match attributes -+ *	will never let it go through), -EINVAL may be returned. -+ *	If ommited, no filtering is done. -  * -  * @NL80211_ATTR_INTERFACE_COMBINATIONS: Nested attribute listing the supported -  *	interface combinations. In each nested item, it contains attributes -@@ -1014,6 +1043,33 @@ enum nl80211_commands { -  * @%NL80211_ATTR_REKEY_DATA: nested attribute containing the information -  *	necessary for GTK rekeying in the device, see &enum nl80211_rekey_data. -  * -+ * @NL80211_ATTR_SCAN_SUPP_RATES: rates per to be advertised as supported in scan, -+ *	nested array attribute containing an entry for each band, with the entry -+ *	being a list of supported rates as defined by IEEE 802.11 7.3.2.2 but -+ *	without the length restriction (at most %NL80211_MAX_SUPP_RATES). -+ * -+ * @NL80211_ATTR_HIDDEN_SSID: indicates whether SSID is to be hidden from Beacon -+ *	and Probe Response (when response to wildcard Probe Request); see -+ *	&enum nl80211_hidden_ssid, represented as a u32 -+ * -+ * @NL80211_ATTR_IE_PROBE_RESP: Information element(s) for Probe Response frame. -+ *	This is used with %NL80211_CMD_NEW_BEACON and %NL80211_CMD_SET_BEACON to -+ *	provide extra IEs (e.g., WPS/P2P IE) into Probe Response frames when the -+ *	driver (or firmware) replies to Probe Request frames. -+ * @NL80211_ATTR_IE_ASSOC_RESP: Information element(s) for (Re)Association -+ *	Response frames. This is used with %NL80211_CMD_NEW_BEACON and -+ *	%NL80211_CMD_SET_BEACON to provide extra IEs (e.g., WPS/P2P IE) into -+ *	(Re)Association Response frames when the driver (or firmware) replies to -+ *	(Re)Association Request frames. -+ * -+ * @NL80211_ATTR_STA_WME: Nested attribute containing the wme configuration -+ *	of the station, see &enum nl80211_sta_wme_attr. -+ * @NL80211_ATTR_SUPPORT_AP_UAPSD: the device supports uapsd when working -+ *	as AP. -+ * -+ * @NL80211_ATTR_ROAM_SUPPORT: Indicates whether the firmware is capable of -+ *	roaming to another AP in the same ESS if the signal lever is low. -+ * -  * @NL80211_ATTR_MAX: highest attribute number currently defined -  * @__NL80211_ATTR_AFTER_LAST: internal use + #define NL80211_MAX_SUPP_RATES			32 ++#define NL80211_MAX_SUPP_HT_RATES		77 + #define NL80211_MAX_SUPP_REG_RULES		32 + #define NL80211_TKIP_DATA_OFFSET_ENCR_KEY	0 + #define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY	16 +@@ -1536,7 +1537,11 @@ enum nl80211_iftype { +  * @NL80211_STA_FLAG_WME: station is WME/QoS capable +  * @NL80211_STA_FLAG_MFP: station uses management frame protection +  * @NL80211_STA_FLAG_AUTHENTICATED: station is authenticated +- * @NL80211_STA_FLAG_TDLS_PEER: station is a TDLS peer ++ * @NL80211_STA_FLAG_TDLS_PEER: station is a TDLS peer -- this flag should ++ *	only be used in managed mode (even in the flags mask). Note that the ++ *	flag can't be changed, it is only valid while adding a station, and ++ *	attempts to change it will silently be ignored (rather than rejected ++ *	as errors.) +  * @NL80211_STA_FLAG_MAX: highest station flag number currently defined +  * @__NL80211_STA_FLAG_AFTER_LAST: internal use    */ -@@ -1217,6 +1273,21 @@ enum nl80211_attrs { - 	NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS, - 	NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN, -  -+	NL80211_ATTR_SCAN_SUPP_RATES, -+ -+	NL80211_ATTR_HIDDEN_SSID, -+ -+	NL80211_ATTR_IE_PROBE_RESP, -+	NL80211_ATTR_IE_ASSOC_RESP, -+ -+	NL80211_ATTR_STA_WME, -+	NL80211_ATTR_SUPPORT_AP_UAPSD, -+ -+	NL80211_ATTR_ROAM_SUPPORT, -+ -+	NL80211_ATTR_SCHED_SCAN_MATCH, -+	NL80211_ATTR_MAX_MATCH_SETS, -+ - 	/* add attributes here, update the policy in nl80211.c */ -  - 	__NL80211_ATTR_AFTER_LAST, -@@ -1426,6 +1497,8 @@ enum nl80211_sta_bss_param { -  * @NL80211_STA_INFO_BSS_PARAM: current station's view of BSS, nested attribute +@@ -1651,6 +1656,9 @@ enum nl80211_sta_bss_param {    *     containing info as possible, see &enum nl80211_sta_bss_param    * @NL80211_STA_INFO_CONNECTED_TIME: time since the station is last connected +  * @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update. ++ * @NL80211_STA_INFO_BEACON_LOSS: count of times beacon loss was detected (u32)  + * @NL80211_STA_INFO_CHAIN_SIGNAL: per-chain signal strength of last PPDU  + * @NL80211_STA_INFO_CHAIN_SIGNAL_AVG: per-chain signal strength average    * @__NL80211_STA_INFO_AFTER_LAST: internal    * @NL80211_STA_INFO_MAX: highest possible station info attribute    */ -@@ -1447,6 +1520,8 @@ enum nl80211_sta_info { - 	NL80211_STA_INFO_RX_BITRATE, +@@ -1673,6 +1681,9 @@ enum nl80211_sta_info {   	NL80211_STA_INFO_BSS_PARAM,   	NL80211_STA_INFO_CONNECTED_TIME, + 	NL80211_STA_INFO_STA_FLAGS, ++	NL80211_STA_INFO_BEACON_LOSS,  +	NL80211_STA_INFO_CHAIN_SIGNAL,  +	NL80211_STA_INFO_CHAIN_SIGNAL_AVG,   	/* keep last */   	__NL80211_STA_INFO_AFTER_LAST, -@@ -1676,6 +1751,26 @@ enum nl80211_reg_rule_attr { - }; -  - /** -+ * enum nl80211_sched_scan_match_attr - scheduled scan match attributes -+ * @__NL80211_SCHED_SCAN_MATCH_ATTR_INVALID: attribute number 0 is reserved -+ * @NL80211_SCHED_SCAN_MATCH_ATTR_SSID: SSID to be used for matching, -+ * only report BSS with matching SSID. -+ * @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter -+ *	attribute number currently defined -+ * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use -+ */ -+enum nl80211_sched_scan_match_attr { -+	__NL80211_SCHED_SCAN_MATCH_ATTR_INVALID, -+ -+	NL80211_ATTR_SCHED_SCAN_MATCH_SSID, -+ -+	/* keep last */ -+	__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST, -+	NL80211_SCHED_SCAN_MATCH_ATTR_MAX = -+		__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1 -+}; -+ -+/** -  * enum nl80211_reg_rule_flags - regulatory rule flags +@@ -2098,6 +2109,9 @@ enum nl80211_mntr_flags { +  * TUs) during which a mesh STA can send only one Action frame containing a +  * PERR element.    * -  * @NL80211_RRF_NO_OFDM: OFDM modulation not allowed -@@ -1826,6 +1921,13 @@ enum nl80211_mntr_flags { -  * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a -  * source mesh point for path selection elements. -  * -+ * @NL80211_MESHCONF_HWMP_RANN_INTERVAL:  The interval of time (in TUs) between -+ * root announcements are transmitted. -+ * -+ * @NL80211_MESHCONF_GATE_ANNOUNCEMENTS: Advertise that this mesh station has -+ * access to a broader network beyond the MBSS.  This is done via Root -+ * Announcement frames. ++ * @NL80211_MESHCONF_FORWARDING: set Mesh STA as forwarding or non-forwarding ++ * or forwarding entity (default is TRUE - forwarding entity)  + *    * @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute    *    * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use -@@ -1847,6 +1949,8 @@ enum nl80211_meshconf_params { - 	NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME, - 	NL80211_MESHCONF_HWMP_ROOTMODE, - 	NL80211_MESHCONF_ELEMENT_TTL, -+	NL80211_MESHCONF_HWMP_RANN_INTERVAL, -+	NL80211_MESHCONF_GATE_ANNOUNCEMENTS, +@@ -2122,6 +2136,7 @@ enum nl80211_meshconf_params { + 	NL80211_MESHCONF_HWMP_RANN_INTERVAL, + 	NL80211_MESHCONF_GATE_ANNOUNCEMENTS, + 	NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL, ++	NL80211_MESHCONF_FORWARDING,   	/* keep last */   	__NL80211_MESHCONF_ATTR_AFTER_LAST, -@@ -2423,4 +2527,37 @@ enum nl80211_rekey_data { - 	MAX_NL80211_REKEY_DATA = NUM_NL80211_REKEY_DATA - 1 - }; +@@ -2395,12 +2410,15 @@ enum nl80211_key_attributes { +  *	in an array of rates as defined in IEEE 802.11 7.3.2.2 (u8 values with +  *	1 = 500 kbps) but without the IE length restriction (at most +  *	%NL80211_MAX_SUPP_RATES in a single array). ++ * @NL80211_TXRATE_MCS: HT (MCS) rates allowed for TX rate selection ++ *	in an array of MCS numbers. +  * @__NL80211_TXRATE_AFTER_LAST: internal +  * @NL80211_TXRATE_MAX: highest TX rate attribute +  */ + enum nl80211_tx_rate_attributes { + 	__NL80211_TXRATE_INVALID, + 	NL80211_TXRATE_LEGACY, ++	NL80211_TXRATE_MCS, -+/** -+ * enum nl80211_hidden_ssid - values for %NL80211_ATTR_HIDDEN_SSID -+ * @NL80211_HIDDEN_SSID_NOT_IN_USE: do not hide SSID (i.e., broadcast it in -+ *	Beacon frames) -+ * @NL80211_HIDDEN_SSID_ZERO_LEN: hide SSID by using zero-length SSID element -+ *	in Beacon frames -+ * @NL80211_HIDDEN_SSID_ZERO_CONTENTS: hide SSID by using correct length of SSID -+ *	element in Beacon frames but zero out each byte in the SSID -+ */ -+enum nl80211_hidden_ssid { -+	NL80211_HIDDEN_SSID_NOT_IN_USE, -+	NL80211_HIDDEN_SSID_ZERO_LEN, -+	NL80211_HIDDEN_SSID_ZERO_CONTENTS -+}; -+ -+/** -+ * enum nl80211_sta_wme_attr - station WME attributes -+ * @__NL80211_STA_WME_INVALID: invalid number for nested attribute -+ * @NL80211_STA_WME_QUEUES: bitmap of uapsd queues. -+ * @NL80211_STA_WME_MAX_SP: max service period. -+ * @__NL80211_STA_WME_AFTER_LAST: internal -+ * @NL80211_STA_WME_MAX: highest station WME attribute -+ */ -+enum nl80211_sta_wme_attr { -+	__NL80211_STA_WME_INVALID, -+	NL80211_STA_WME_UAPSD_QUEUES, -+	NL80211_STA_WME_MAX_SP, -+ -+	/* keep last */ -+	__NL80211_STA_WME_AFTER_LAST, -+	NL80211_STA_WME_MAX = __NL80211_STA_WME_AFTER_LAST - 1 -+}; -+ - #endif /* __LINUX_NL80211_H */ + 	/* keep last */ + 	__NL80211_TXRATE_AFTER_LAST, diff --git a/package/iw/patches/100-rx_rate.patch b/package/iw/patches/100-rx_rate.patch index e3df6ca09..780a7d439 100644 --- a/package/iw/patches/100-rx_rate.patch +++ b/package/iw/patches/100-rx_rate.patch @@ -43,9 +43,9 @@   	struct nlattr *sinfo[NL80211_STA_INFO_MAX + 1];  -	struct nlattr *rinfo[NL80211_RATE_INFO_MAX + 1];   	char mac_addr[20], state_name[10], dev[20]; + 	struct nl80211_sta_flag_update *sta_flags;   	static struct nla_policy stats_policy[NL80211_STA_INFO_MAX + 1] = { - 		[NL80211_STA_INFO_INACTIVE_TIME] = { .type = NLA_U32 }, -@@ -45,6 +75,7 @@ static int print_sta_handler(struct nl_m +@@ -46,6 +76,7 @@ static int print_sta_handler(struct nl_m   		[NL80211_STA_INFO_TX_PACKETS] = { .type = NLA_U32 },   		[NL80211_STA_INFO_SIGNAL] = { .type = NLA_U8 },   		[NL80211_STA_INFO_TX_BITRATE] = { .type = NLA_NESTED }, @@ -53,8 +53,8 @@   		[NL80211_STA_INFO_LLID] = { .type = NLA_U16 },   		[NL80211_STA_INFO_PLID] = { .type = NLA_U16 },   		[NL80211_STA_INFO_PLINK_STATE] = { .type = NLA_U8 }, -@@ -52,13 +83,6 @@ static int print_sta_handler(struct nl_m - 		[NL80211_STA_INFO_TX_FAILED] = { .type = NLA_U32 }, +@@ -55,13 +86,6 @@ static int print_sta_handler(struct nl_m + 			{ .minlen = sizeof(struct nl80211_sta_flag_update) },   	};  -	static struct nla_policy rate_policy[NL80211_RATE_INFO_MAX + 1] = { @@ -67,7 +67,7 @@   	nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),   		  genlmsg_attrlen(gnlh, 0), NULL); -@@ -111,25 +135,8 @@ static int print_sta_handler(struct nl_m +@@ -114,25 +138,8 @@ static int print_sta_handler(struct nl_m   		printf("\n\tsignal avg:\t%d dBm",   			(int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL_AVG])); diff --git a/package/iw/patches/110-ibss_ht.patch b/package/iw/patches/110-ibss_ht.patch deleted file mode 100644 index 1b5dbd3e9..000000000 --- a/package/iw/patches/110-ibss_ht.patch +++ /dev/null @@ -1,113 +0,0 @@ ---- a/ibss.c -+++ b/ibss.c -@@ -27,6 +27,7 @@ static int join_ibss(struct nl80211_stat - 	char *value = NULL, *sptr = NULL; - 	float rate; - 	int bintval; -+	unsigned int htval; -  - 	if (argc < 2) - 		return 1; -@@ -44,6 +45,12 @@ static int join_ibss(struct nl80211_stat - 	argv++; - 	argc--; -  -+	if (argc && parse_channel_type(argv[0], &htval)) { -+		NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, htval); -+		argv++; -+		argc--; -+	} -+ - 	if (argc && strcmp(argv[0], "fixed-freq") == 0) { - 		NLA_PUT_FLAG(msg, NL80211_ATTR_FREQ_FIXED); - 		argv++; -@@ -134,7 +141,7 @@ COMMAND(ibss, leave, NULL, - 	NL80211_CMD_LEAVE_IBSS, 0, CIB_NETDEV, leave_ibss, - 	"Leave the current IBSS cell."); - COMMAND(ibss, join, --	"<SSID> <freq in MHz> [fixed-freq] [<fixed bssid>] [beacon-interval <TU>]" -+	"<SSID> <freq in MHz> [HT20|HT40+|HT40-] [fixed-freq] [<fixed bssid>] [beacon-interval <TU>]" - 	" [basic-rates <rate in Mbps,rate2,...>] [mcast-rate <rate in Mbps>] " - 	"[key d:0:abcde]", - 	NL80211_CMD_JOIN_IBSS, 0, CIB_NETDEV, join_ibss, ---- a/iw.h -+++ b/iw.h -@@ -133,6 +133,7 @@ int parse_hex_mask(char *hexmask, unsign - unsigned char *parse_hex(char *hex, size_t *outlen); -  - int parse_keys(struct nl_msg *msg, char **argv, int argc); -+int parse_channel_type(const char *str, unsigned int *htval); -  - void print_ht_mcs(const __u8 *mcs); - void print_ampdu_length(__u8 exponent); ---- a/phy.c -+++ b/phy.c -@@ -33,30 +33,14 @@ static int handle_freqchan(struct nl_msg - 			   int argc, char **argv) - { - 	char *end; --	static const struct { --		const char *name; --		unsigned int val; --	} htmap[] = { --		{ .name = "HT20", .val = NL80211_CHAN_HT20, }, --		{ .name = "HT40+", .val = NL80211_CHAN_HT40PLUS, }, --		{ .name = "HT40-", .val = NL80211_CHAN_HT40MINUS, }, --	}; - 	unsigned int htval = NL80211_CHAN_NO_HT; - 	unsigned int freq; --	int i; -  - 	if (!argc || argc > 2) - 		return 1; -  --	if (argc == 2) { --		for (i = 0; i < ARRAY_SIZE(htmap); i++) { --			if (strcasecmp(htmap[i].name, argv[1]) == 0) { --				htval = htmap[i].val; --				break; --			} --		} --		if (htval == NL80211_CHAN_NO_HT) --			return 1; -+	if (argc == 2 && !parse_channel_type(argv[1], &htval)) { -+		return 1; - 	} -  - 	if (!*argv[0]) ---- a/util.c -+++ b/util.c -@@ -382,6 +382,33 @@ int parse_keys(struct nl_msg *msg, char  - 	return 2; - } -  -+/* -+ * Convert a string "HT20", "HT40+" or "HT40-" into nl80211 -+ * value. Conversion is case insensitive. Returns 1 on success, 0 on error. -+ */ -+ -+int parse_channel_type(const char *str, unsigned int *htval) -+{ -+	static const struct { -+		const char *name; -+		unsigned int val; -+	} htmap[] = { -+		{ .name = "HT20", .val = NL80211_CHAN_HT20, }, -+		{ .name = "HT40+", .val = NL80211_CHAN_HT40PLUS, }, -+		{ .name = "HT40-", .val = NL80211_CHAN_HT40MINUS, }, -+	}; -+	int i; -+ -+	for (i = 0; i < ARRAY_SIZE(htmap); i++) { -+		if (strcasecmp(htmap[i].name, str) == 0) { -+			*htval = htmap[i].val; -+			return 1; -+		} -+	} -+ -+	return 0; -+} -+ - static void print_mcs_index(const __u8 *mcs) - { - 	unsigned int mcs_bit, prev_bit = -2, prev_cont = 0; diff --git a/package/iw/patches/120-per_chain_signal_strength.patch b/package/iw/patches/110-per_chain_signal_strength.patch index 411b51e3d..0bc560792 100644 --- a/package/iw/patches/120-per_chain_signal_strength.patch +++ b/package/iw/patches/110-per_chain_signal_strength.patch @@ -34,10 +34,10 @@   static int print_sta_handler(struct nl_msg *msg, void *arg)   {   	struct nlattr *tb[NL80211_ATTR_MAX + 1]; -@@ -81,7 +108,10 @@ static int print_sta_handler(struct nl_m - 		[NL80211_STA_INFO_PLINK_STATE] = { .type = NLA_U8 }, - 		[NL80211_STA_INFO_TX_RETRIES] = { .type = NLA_U32 }, +@@ -84,7 +111,10 @@ static int print_sta_handler(struct nl_m   		[NL80211_STA_INFO_TX_FAILED] = { .type = NLA_U32 }, + 		[NL80211_STA_INFO_STA_FLAGS] = + 			{ .minlen = sizeof(struct nl80211_sta_flag_update) },  +		[NL80211_STA_INFO_CHAIN_SIGNAL] = { .type = NLA_NESTED },  +		[NL80211_STA_INFO_CHAIN_SIGNAL_AVG] = { .type = NLA_NESTED },   	}; @@ -45,7 +45,7 @@   	nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),   		  genlmsg_attrlen(gnlh, 0), NULL); -@@ -128,12 +158,18 @@ static int print_sta_handler(struct nl_m +@@ -131,12 +161,18 @@ static int print_sta_handler(struct nl_m   	if (sinfo[NL80211_STA_INFO_TX_FAILED])   		printf("\n\ttx failed:\t%u",   			nla_get_u32(sinfo[NL80211_STA_INFO_TX_FAILED])); diff --git a/package/iw/patches/120-tdls_peer_indentation.patch b/package/iw/patches/120-tdls_peer_indentation.patch new file mode 100644 index 000000000..937b9dd3d --- /dev/null +++ b/package/iw/patches/120-tdls_peer_indentation.patch @@ -0,0 +1,11 @@ +--- a/station.c ++++ b/station.c +@@ -258,7 +258,7 @@ static int print_sta_handler(struct nl_m + 		} +  + 		if (sta_flags->mask & BIT(NL80211_STA_FLAG_TDLS_PEER)) { +-			printf("\n\tTDLS peer:\t\t"); ++			printf("\n\tTDLS peer:\t"); + 			if (sta_flags->set & BIT(NL80211_STA_FLAG_TDLS_PEER)) + 				printf("yes"); + 			else diff --git a/package/iw/patches/130-fix_txpower.patch b/package/iw/patches/130-fix_txpower.patch deleted file mode 100644 index 9e0c2df32..000000000 --- a/package/iw/patches/130-fix_txpower.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/phy.c -+++ b/phy.c -@@ -277,7 +277,7 @@ static int handle_txpower(struct nl80211 - 		} -  - 		mbm = strtol(argv[1], &endptr, 10); --		if (!*endptr) -+		if (*endptr) - 			return 2; - 		NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_TX_POWER_LEVEL, mbm); - 	} else if (argc != 1) | 
