iw: update to version 3.3, sync with latest nl80211.h changes
SVN-Revision: 30347
This commit is contained in:
parent
ea63948914
commit
1827efa544
7 changed files with 73 additions and 362 deletions
|
@ -8,13 +8,12 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=iw
|
PKG_NAME:=iw
|
||||||
PKG_VERSION:=3.1
|
PKG_VERSION:=3.3
|
||||||
PKG_RELEASE:=2
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||||
PKG_SOURCE_URL:=http://wireless.kernel.org/download/iw/
|
PKG_SOURCE_URL:=http://wireless.kernel.org/download/iw/
|
||||||
PKG_MD5SUM:=2b63438a12b7dc481140cb9a69c86e4a
|
PKG_MD5SUM:=146ad14cdeb39fb88b21efdbb28787d1
|
||||||
PKG_BUILD_DEPENDS:=mac80211
|
|
||||||
|
|
||||||
include $(INCLUDE_DIR)/package.mk
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
|
||||||
|
@ -35,7 +34,6 @@ endef
|
||||||
|
|
||||||
TARGET_CPPFLAGS:= \
|
TARGET_CPPFLAGS:= \
|
||||||
-I$(STAGING_DIR)/usr/include/libnl-tiny \
|
-I$(STAGING_DIR)/usr/include/libnl-tiny \
|
||||||
-I$(STAGING_DIR)/usr/include/mac80211 \
|
|
||||||
$(TARGET_CPPFLAGS) \
|
$(TARGET_CPPFLAGS) \
|
||||||
-DCONFIG_LIBNL20 \
|
-DCONFIG_LIBNL20 \
|
||||||
-D_GNU_SOURCE
|
-D_GNU_SOURCE
|
||||||
|
|
|
@ -1,251 +1,77 @@
|
||||||
--- a/nl80211.h
|
--- a/nl80211.h
|
||||||
+++ b/nl80211.h
|
+++ b/nl80211.h
|
||||||
@@ -6,7 +6,7 @@
|
@@ -1475,6 +1475,7 @@ enum nl80211_attrs {
|
||||||
* Copyright 2006-2010 Johannes Berg <johannes@sipsolutions.net>
|
#define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS
|
||||||
* 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 {
|
|
||||||
|
|
||||||
* @NL80211_ATTR_SCHED_SCAN_INTERVAL: Interval between scheduled scan
|
#define NL80211_MAX_SUPP_RATES 32
|
||||||
* cycles, in msecs.
|
+#define NL80211_MAX_SUPP_HT_RATES 77
|
||||||
+
|
#define NL80211_MAX_SUPP_REG_RULES 32
|
||||||
+ * @NL80211_ATTR_SCHED_SCAN_MATCH: Nested attribute with one or more
|
#define NL80211_TKIP_DATA_OFFSET_ENCR_KEY 0
|
||||||
+ * sets of attributes to match during scheduled scans. Only BSSs
|
#define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16
|
||||||
+ * that match any of the sets will be reported. These are
|
@@ -1536,7 +1537,11 @@ enum nl80211_iftype {
|
||||||
+ * pass-thru filter rules.
|
* @NL80211_STA_FLAG_WME: station is WME/QoS capable
|
||||||
+ * For a match to succeed, the BSS must match all attributes of a
|
* @NL80211_STA_FLAG_MFP: station uses management frame protection
|
||||||
+ * set. Since not every hardware supports matching all types of
|
* @NL80211_STA_FLAG_AUTHENTICATED: station is authenticated
|
||||||
+ * attributes, there is no guarantee that the reported BSSs are
|
- * @NL80211_STA_FLAG_TDLS_PEER: station is a TDLS peer
|
||||||
+ * fully complying with the match sets and userspace needs to be
|
+ * @NL80211_STA_FLAG_TDLS_PEER: station is a TDLS peer -- this flag should
|
||||||
+ * able to ignore them by itself.
|
+ * only be used in managed mode (even in the flags mask). Note that the
|
||||||
+ * Thus, the implementation is somewhat hardware-dependent, but
|
+ * flag can't be changed, it is only valid while adding a station, and
|
||||||
+ * this is only an optimization and the userspace application
|
+ * attempts to change it will silently be ignored (rather than rejected
|
||||||
+ * needs to handle all the non-filtered results anyway.
|
+ * as errors.)
|
||||||
+ * If the match attributes don't make sense when combined with
|
* @NL80211_STA_FLAG_MAX: highest station flag number currently defined
|
||||||
+ * the values passed in @NL80211_ATTR_SCAN_SSIDS (eg. if an SSID
|
* @__NL80211_STA_FLAG_AFTER_LAST: internal use
|
||||||
+ * 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
|
|
||||||
*/
|
*/
|
||||||
@@ -1217,6 +1273,21 @@ enum nl80211_attrs {
|
@@ -1651,6 +1656,9 @@ enum nl80211_sta_bss_param {
|
||||||
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
|
|
||||||
* containing info as possible, see &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_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: per-chain signal strength of last PPDU
|
||||||
+ * @NL80211_STA_INFO_CHAIN_SIGNAL_AVG: per-chain signal strength average
|
+ * @NL80211_STA_INFO_CHAIN_SIGNAL_AVG: per-chain signal strength average
|
||||||
* @__NL80211_STA_INFO_AFTER_LAST: internal
|
* @__NL80211_STA_INFO_AFTER_LAST: internal
|
||||||
* @NL80211_STA_INFO_MAX: highest possible station info attribute
|
* @NL80211_STA_INFO_MAX: highest possible station info attribute
|
||||||
*/
|
*/
|
||||||
@@ -1447,6 +1520,8 @@ enum nl80211_sta_info {
|
@@ -1673,6 +1681,9 @@ enum nl80211_sta_info {
|
||||||
NL80211_STA_INFO_RX_BITRATE,
|
|
||||||
NL80211_STA_INFO_BSS_PARAM,
|
NL80211_STA_INFO_BSS_PARAM,
|
||||||
NL80211_STA_INFO_CONNECTED_TIME,
|
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,
|
||||||
+ NL80211_STA_INFO_CHAIN_SIGNAL_AVG,
|
+ NL80211_STA_INFO_CHAIN_SIGNAL_AVG,
|
||||||
|
|
||||||
/* keep last */
|
/* keep last */
|
||||||
__NL80211_STA_INFO_AFTER_LAST,
|
__NL80211_STA_INFO_AFTER_LAST,
|
||||||
@@ -1676,6 +1751,26 @@ enum nl80211_reg_rule_attr {
|
@@ -2098,6 +2109,9 @@ enum nl80211_mntr_flags {
|
||||||
};
|
* TUs) during which a mesh STA can send only one Action frame containing a
|
||||||
|
* PERR element.
|
||||||
/**
|
|
||||||
+ * 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
|
|
||||||
*
|
*
|
||||||
* @NL80211_RRF_NO_OFDM: OFDM modulation not allowed
|
+ * @NL80211_MESHCONF_FORWARDING: set Mesh STA as forwarding or non-forwarding
|
||||||
@@ -1826,6 +1921,13 @@ enum nl80211_mntr_flags {
|
+ * or forwarding entity (default is TRUE - forwarding entity)
|
||||||
* @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_ATTR_MAX: highest possible mesh configuration attribute
|
* @NL80211_MESHCONF_ATTR_MAX: highest possible mesh configuration attribute
|
||||||
*
|
*
|
||||||
* @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
|
* @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use
|
||||||
@@ -1847,6 +1949,8 @@ enum nl80211_meshconf_params {
|
@@ -2122,6 +2136,7 @@ enum nl80211_meshconf_params {
|
||||||
NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME,
|
NL80211_MESHCONF_HWMP_RANN_INTERVAL,
|
||||||
NL80211_MESHCONF_HWMP_ROOTMODE,
|
NL80211_MESHCONF_GATE_ANNOUNCEMENTS,
|
||||||
NL80211_MESHCONF_ELEMENT_TTL,
|
NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL,
|
||||||
+ NL80211_MESHCONF_HWMP_RANN_INTERVAL,
|
+ NL80211_MESHCONF_FORWARDING,
|
||||||
+ NL80211_MESHCONF_GATE_ANNOUNCEMENTS,
|
|
||||||
|
|
||||||
/* keep last */
|
/* keep last */
|
||||||
__NL80211_MESHCONF_ATTR_AFTER_LAST,
|
__NL80211_MESHCONF_ATTR_AFTER_LAST,
|
||||||
@@ -2423,4 +2527,37 @@ enum nl80211_rekey_data {
|
@@ -2395,12 +2410,15 @@ enum nl80211_key_attributes {
|
||||||
MAX_NL80211_REKEY_DATA = NUM_NL80211_REKEY_DATA - 1
|
* 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,
|
||||||
|
|
||||||
+/**
|
/* keep last */
|
||||||
+ * enum nl80211_hidden_ssid - values for %NL80211_ATTR_HIDDEN_SSID
|
__NL80211_TXRATE_AFTER_LAST,
|
||||||
+ * @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 */
|
|
||||||
|
|
|
@ -43,9 +43,9 @@
|
||||||
struct nlattr *sinfo[NL80211_STA_INFO_MAX + 1];
|
struct nlattr *sinfo[NL80211_STA_INFO_MAX + 1];
|
||||||
- struct nlattr *rinfo[NL80211_RATE_INFO_MAX + 1];
|
- struct nlattr *rinfo[NL80211_RATE_INFO_MAX + 1];
|
||||||
char mac_addr[20], state_name[10], dev[20];
|
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] = {
|
static struct nla_policy stats_policy[NL80211_STA_INFO_MAX + 1] = {
|
||||||
[NL80211_STA_INFO_INACTIVE_TIME] = { .type = NLA_U32 },
|
@@ -46,6 +76,7 @@ static int print_sta_handler(struct nl_m
|
||||||
@@ -45,6 +75,7 @@ static int print_sta_handler(struct nl_m
|
|
||||||
[NL80211_STA_INFO_TX_PACKETS] = { .type = NLA_U32 },
|
[NL80211_STA_INFO_TX_PACKETS] = { .type = NLA_U32 },
|
||||||
[NL80211_STA_INFO_SIGNAL] = { .type = NLA_U8 },
|
[NL80211_STA_INFO_SIGNAL] = { .type = NLA_U8 },
|
||||||
[NL80211_STA_INFO_TX_BITRATE] = { .type = NLA_NESTED },
|
[NL80211_STA_INFO_TX_BITRATE] = { .type = NLA_NESTED },
|
||||||
|
@ -53,8 +53,8 @@
|
||||||
[NL80211_STA_INFO_LLID] = { .type = NLA_U16 },
|
[NL80211_STA_INFO_LLID] = { .type = NLA_U16 },
|
||||||
[NL80211_STA_INFO_PLID] = { .type = NLA_U16 },
|
[NL80211_STA_INFO_PLID] = { .type = NLA_U16 },
|
||||||
[NL80211_STA_INFO_PLINK_STATE] = { .type = NLA_U8 },
|
[NL80211_STA_INFO_PLINK_STATE] = { .type = NLA_U8 },
|
||||||
@@ -52,13 +83,6 @@ static int print_sta_handler(struct nl_m
|
@@ -55,13 +86,6 @@ static int print_sta_handler(struct nl_m
|
||||||
[NL80211_STA_INFO_TX_FAILED] = { .type = NLA_U32 },
|
{ .minlen = sizeof(struct nl80211_sta_flag_update) },
|
||||||
};
|
};
|
||||||
|
|
||||||
- static struct nla_policy rate_policy[NL80211_RATE_INFO_MAX + 1] = {
|
- 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),
|
nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
|
||||||
genlmsg_attrlen(gnlh, 0), NULL);
|
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",
|
printf("\n\tsignal avg:\t%d dBm",
|
||||||
(int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL_AVG]));
|
(int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL_AVG]));
|
||||||
|
|
||||||
|
|
|
@ -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;
|
|
|
@ -34,10 +34,10 @@
|
||||||
static int print_sta_handler(struct nl_msg *msg, void *arg)
|
static int print_sta_handler(struct nl_msg *msg, void *arg)
|
||||||
{
|
{
|
||||||
struct nlattr *tb[NL80211_ATTR_MAX + 1];
|
struct nlattr *tb[NL80211_ATTR_MAX + 1];
|
||||||
@@ -81,7 +108,10 @@ static int print_sta_handler(struct nl_m
|
@@ -84,7 +111,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 },
|
|
||||||
[NL80211_STA_INFO_TX_FAILED] = { .type = NLA_U32 },
|
[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] = { .type = NLA_NESTED },
|
||||||
+ [NL80211_STA_INFO_CHAIN_SIGNAL_AVG] = { .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),
|
nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
|
||||||
genlmsg_attrlen(gnlh, 0), NULL);
|
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])
|
if (sinfo[NL80211_STA_INFO_TX_FAILED])
|
||||||
printf("\n\ttx failed:\t%u",
|
printf("\n\ttx failed:\t%u",
|
||||||
nla_get_u32(sinfo[NL80211_STA_INFO_TX_FAILED]));
|
nla_get_u32(sinfo[NL80211_STA_INFO_TX_FAILED]));
|
11
package/iw/patches/120-tdls_peer_indentation.patch
Normal file
11
package/iw/patches/120-tdls_peer_indentation.patch
Normal file
|
@ -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
|
|
@ -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)
|
|
Loading…
Reference in a new issue