diff options
Diffstat (limited to 'package')
-rw-r--r-- | package/iw/Makefile | 4 | ||||
-rw-r--r-- | package/iw/patches/001-nl80211_sync.patch | 274 | ||||
-rw-r--r-- | package/iw/patches/100-survey_freq_in_use.patch | 14 | ||||
-rw-r--r-- | package/iw/patches/110-survey_phy_stats.patch | 32 | ||||
-rw-r--r-- | package/iw/patches/120-ibss_mcast_rate.patch | 32 | ||||
-rw-r--r-- | package/iw/patches/302-sta-retries.patch | 33 | ||||
-rw-r--r-- | package/iw/patches/401-antenna.patch | 87 | ||||
-rw-r--r-- | package/iw/patches/500-sta-signal-avg.patch | 32 | ||||
-rw-r--r-- | package/iw/patches/501-ibss-bintval.patch | 55 |
9 files changed, 69 insertions, 494 deletions
diff --git a/package/iw/Makefile b/package/iw/Makefile index d1d60c1..625e179 100644 --- a/package/iw/Makefile +++ b/package/iw/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iw -PKG_VERSION:=0.9.21 +PKG_VERSION:=0.9.22 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 PKG_SOURCE_URL:=http://wireless.kernel.org/download/iw/ -PKG_MD5SUM:=726db5f1fd6bc316434414770513ef81 +PKG_MD5SUM:=561c2602c5ce7c65a590118286c0892a PKG_BUILD_DEPENDS:=mac80211 include $(INCLUDE_DIR)/package.mk diff --git a/package/iw/patches/001-nl80211_sync.patch b/package/iw/patches/001-nl80211_sync.patch index 3f01fbf..a385897 100644 --- a/package/iw/patches/001-nl80211_sync.patch +++ b/package/iw/patches/001-nl80211_sync.patch @@ -1,221 +1,81 @@ --- a/nl80211.h +++ b/nl80211.h -@@ -295,7 +295,9 @@ - * auth and assoc steps. For this, you need to specify the SSID in a - * %NL80211_ATTR_SSID attribute, and can optionally specify the association - * IEs in %NL80211_ATTR_IE, %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_MAC, -- * %NL80211_ATTR_WIPHY_FREQ and %NL80211_ATTR_CONTROL_PORT. -+ * %NL80211_ATTR_WIPHY_FREQ, %NL80211_ATTR_CONTROL_PORT, -+ * %NL80211_ATTR_CONTROL_PORT_ETHERTYPE and -+ * %NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT. - * It is also sent as an event, with the BSSID and response IEs when the - * connection is established or failed to be established. This can be - * determined by the STATUS_CODE attribute. -@@ -313,8 +315,8 @@ - * channel for the specified amount of time. This can be used to do - * off-channel operations like transmit a Public Action frame and wait for - * a response while being associated to an AP on another channel. -- * %NL80211_ATTR_WIPHY or %NL80211_ATTR_IFINDEX is used to specify which -- * radio is used. %NL80211_ATTR_WIPHY_FREQ is used to specify the -+ * %NL80211_ATTR_IFINDEX is used to specify which interface (and thus -+ * radio) is used. %NL80211_ATTR_WIPHY_FREQ is used to specify the - * frequency for the operation and %NL80211_ATTR_WIPHY_CHANNEL_TYPE may be - * optionally used to specify additional channel parameters. - * %NL80211_ATTR_DURATION is used to specify the duration in milliseconds -@@ -385,6 +387,8 @@ - * of any other interfaces, and other interfaces will again take - * precedence when they are used. +@@ -148,6 +148,10 @@ + * @NL80211_CMD_SET_MPATH: Set mesh path attributes for mesh path to + * destination %NL80211_ATTR_MAC on the interface identified by + * %NL80211_ATTR_IFINDEX. ++ * @NL80211_CMD_NEW_MPATH: Create a new mesh path for the destination given by ++ * %NL80211_ATTR_MAC via %NL80211_ATTR_MPATH_NEXT_HOP. ++ * @NL80211_CMD_DEL_MPATH: Delete a mesh path to the destination given by ++ * %NL80211_ATTR_MAC. + * @NL80211_CMD_NEW_PATH: Add a mesh path with given attributes to the + * the interface identified by %NL80211_ATTR_IFINDEX. + * @NL80211_CMD_DEL_PATH: Remove a mesh path identified by %NL80211_ATTR_MAC +@@ -612,7 +616,7 @@ enum nl80211_commands { + * consisting of a nested array. * -+ * @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface. -+ * - * @NL80211_CMD_MAX: highest used command number - * @__NL80211_CMD_AFTER_LAST: internal use - */ -@@ -487,6 +491,7 @@ enum nl80211_commands { - NL80211_CMD_NOTIFY_CQM, - - NL80211_CMD_SET_CHANNEL, -+ NL80211_CMD_SET_WDS_PEER, - - /* add new commands above here */ - -@@ -686,6 +691,15 @@ enum nl80211_commands { - * request, the driver will assume that the port is unauthorized until - * authorized by user space. Otherwise, port is marked authorized by - * default in station mode. -+ * @NL80211_ATTR_CONTROL_PORT_ETHERTYPE: A 16-bit value indicating the -+ * ethertype that will be used for key negotiation. It can be -+ * specified with the associate and connect commands. If it is not -+ * specified, the value defaults to 0x888E (PAE, 802.1X). This -+ * attribute is also used as a flag in the wiphy information to -+ * indicate that protocols other than PAE are supported. -+ * @NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT: When included along with -+ * %NL80211_ATTR_CONTROL_PORT_ETHERTYPE, indicates that the custom -+ * ethertype frames used for key negotiation must not be encrypted. + * @NL80211_ATTR_MESH_ID: mesh id (1-32 bytes). +- * @NL80211_ATTR_PLINK_ACTION: action to perform on the mesh peer link. ++ * @NL80211_ATTR_STA_PLINK_ACTION: action to perform on the mesh peer link. + * @NL80211_ATTR_MPATH_NEXT_HOP: MAC address of the next hop for a mesh path. + * @NL80211_ATTR_MPATH_INFO: information about a mesh_path, part of mesh path + * info given for %NL80211_CMD_GET_MPATH, nested attribute described at +@@ -879,7 +883,9 @@ enum nl80211_commands { + * See &enum nl80211_key_default_types. * - * @NL80211_ATTR_TESTDATA: Testmode data blob, passed through to the driver. - * We recommend using nested, driver-specific attributes within this. -@@ -787,6 +801,33 @@ enum nl80211_commands { - * This is used in association with @NL80211_ATTR_WIPHY_TX_POWER_SETTING - * for non-automatic settings. + * @NL80211_ATTR_MESH_SETUP: Optional mesh setup parameters. These cannot be +- * changed once the mesh is active. ++ * changed once the mesh is active. ++ * @NL80211_ATTR_MESH_CONFIG: Mesh configuration parameters, a nested attribute ++ * containing attributes from &enum nl80211_meshconf_params. * -+ * @NL80211_ATTR_SUPPORT_IBSS_RSN: The device supports IBSS RSN, which mostly -+ * means support for per-station GTKs. -+ * -+ * @NL80211_ATTR_WIPHY_ANTENNA_TX: Bitmap of allowed antennas for transmitting. -+ * This can be used to mask out antennas which are not attached or should -+ * not be used for transmitting. If an antenna is not selected in this -+ * bitmap the hardware is not allowed to transmit on this antenna. -+ * -+ * Each bit represents one antenna, starting with antenna 1 at the first -+ * bit. Depending on which antennas are selected in the bitmap, 802.11n -+ * drivers can derive which chainmasks to use (if all antennas belonging to -+ * a particular chain are disabled this chain should be disabled) and if -+ * a chain has diversity antennas wether diversity should be used or not. -+ * HT capabilities (STBC, TX Beamforming, Antenna selection) can be -+ * derived from the available chains after applying the antenna mask. -+ * Non-802.11n drivers can derive wether to use diversity or not. -+ * Drivers may reject configurations or RX/TX mask combinations they cannot -+ * support by returning -EINVAL. -+ * -+ * @NL80211_ATTR_WIPHY_ANTENNA_RX: Bitmap of allowed antennas for receiving. -+ * This can be used to mask out antennas which are not attached or should -+ * not be used for receiving. If an antenna is not selected in this bitmap -+ * the hardware should not be configured to receive on this antenna. -+ * For a more detailed descripton see @NL80211_ATTR_WIPHY_ANTENNA_TX. -+ * -+ * @NL80211_ATTR_MCAST_RATE: Multicast tx rate (in 100 kbps) for IBSS -+ * * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use - */ -@@ -951,6 +992,16 @@ enum nl80211_attrs { - NL80211_ATTR_RX_FRAME_TYPES, - NL80211_ATTR_FRAME_TYPE, - -+ NL80211_ATTR_CONTROL_PORT_ETHERTYPE, -+ NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT, -+ -+ NL80211_ATTR_SUPPORT_IBSS_RSN, -+ -+ NL80211_ATTR_WIPHY_ANTENNA_TX, -+ NL80211_ATTR_WIPHY_ANTENNA_RX, -+ -+ NL80211_ATTR_MCAST_RATE, -+ - /* add attributes here, update the policy in nl80211.c */ - - __NL80211_ATTR_AFTER_LAST, -@@ -1006,6 +1057,8 @@ enum nl80211_attrs { - * @NL80211_IFTYPE_WDS: wireless distribution interface - * @NL80211_IFTYPE_MONITOR: monitor interface receiving all frames - * @NL80211_IFTYPE_MESH_POINT: mesh point -+ * @NL80211_IFTYPE_P2P_CLIENT: P2P client -+ * @NL80211_IFTYPE_P2P_GO: P2P group owner - * @NL80211_IFTYPE_MAX: highest interface type number currently defined - * @NUM_NL80211_IFTYPES: number of defined interface types - * -@@ -1022,6 +1075,8 @@ enum nl80211_iftype { - NL80211_IFTYPE_WDS, - NL80211_IFTYPE_MONITOR, - NL80211_IFTYPE_MESH_POINT, -+ NL80211_IFTYPE_P2P_CLIENT, -+ NL80211_IFTYPE_P2P_GO, - - /* keep last */ - NUM_NL80211_IFTYPES, -@@ -1111,6 +1166,8 @@ enum nl80211_rate_info { - * @NL80211_STA_INFO_RX_PACKETS: total received packet (u32, from this station) - * @NL80211_STA_INFO_TX_PACKETS: total transmitted packets (u32, to this - * station) -+ * @NL80211_STA_INFO_TX_RETRIES: total retries (u32, to this station) -+ * @NL80211_STA_INFO_TX_FAILED: total failed packets (u32, to this station) +@@ -1225,8 +1231,6 @@ enum nl80211_rate_info { + * @NL80211_STA_INFO_INACTIVE_TIME: time since last activity (u32, msecs) + * @NL80211_STA_INFO_RX_BYTES: total received bytes (u32, from this station) + * @NL80211_STA_INFO_TX_BYTES: total transmitted bytes (u32, to this station) +- * @__NL80211_STA_INFO_AFTER_LAST: internal +- * @NL80211_STA_INFO_MAX: highest possible station info attribute + * @NL80211_STA_INFO_SIGNAL: signal strength of last received PPDU (u8, dBm) + * @NL80211_STA_INFO_TX_BITRATE: current unicast tx rate, nested attribute + * containing info as possible, see &enum nl80211_sta_info_txrate. +@@ -1236,6 +1240,13 @@ enum nl80211_rate_info { + * @NL80211_STA_INFO_TX_RETRIES: total retries (u32, to this station) + * @NL80211_STA_INFO_TX_FAILED: total failed packets (u32, to this station) + * @NL80211_STA_INFO_SIGNAL_AVG: signal strength average (u8, dBm) ++ * @NL80211_STA_INFO_LLID: the station's mesh LLID ++ * @NL80211_STA_INFO_PLID: the station's mesh PLID ++ * @NL80211_STA_INFO_PLINK_STATE: peer link state for the station ++ * @NL80211_STA_INFO_RX_BITRATE: last unicast rx rate, nested attribute ++ * containing info as possible, see &enum nl80211_sta_info_txrate. ++ * @__NL80211_STA_INFO_AFTER_LAST: internal ++ * @NL80211_STA_INFO_MAX: highest possible station info attribute */ enum nl80211_sta_info { __NL80211_STA_INFO_INVALID, -@@ -1124,6 +1181,8 @@ enum nl80211_sta_info { - NL80211_STA_INFO_TX_BITRATE, - NL80211_STA_INFO_RX_PACKETS, - NL80211_STA_INFO_TX_PACKETS, -+ NL80211_STA_INFO_TX_RETRIES, -+ NL80211_STA_INFO_TX_FAILED, +@@ -1252,6 +1263,7 @@ enum nl80211_sta_info { + NL80211_STA_INFO_TX_RETRIES, + NL80211_STA_INFO_TX_FAILED, + NL80211_STA_INFO_SIGNAL_AVG, ++ NL80211_STA_INFO_RX_BITRATE, /* keep last */ __NL80211_STA_INFO_AFTER_LAST, -@@ -1277,7 +1336,11 @@ enum nl80211_bitrate_attr { - * wireless core it thinks its knows the regulatory domain we should be in. - * @NL80211_REGDOM_SET_BY_COUNTRY_IE: the wireless core has received an - * 802.11 country information element with regulatory information it -- * thinks we should consider. -+ * thinks we should consider. cfg80211 only processes the country -+ * code from the IE, and relies on the regulatory domain information -+ * structure pased by userspace (CRDA) from our wireless-regdb. -+ * If a channel is enabled but the country code indicates it should -+ * be disabled we disable the channel and re-enable it upon disassociation. - */ - enum nl80211_reg_initiator { - NL80211_REGDOM_SET_BY_CORE, -@@ -1382,6 +1445,17 @@ enum nl80211_reg_rule_flags { - * @__NL80211_SURVEY_INFO_INVALID: attribute number 0 is reserved - * @NL80211_SURVEY_INFO_FREQUENCY: center frequency of channel - * @NL80211_SURVEY_INFO_NOISE: noise level of channel (u8, dBm) -+ * @NL80211_SURVEY_INFO_IN_USE: channel is currently being used -+ * @NL80211_SURVEY_INFO_CHANNEL_TIME: amount of time (in ms) that the radio -+ * spent on this channel -+ * @NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY: amount of the time the primary -+ * channel was sensed busy (either due to activity or energy detect) -+ * @NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY: amount of time the extension -+ * channel was sensed busy -+ * @NL80211_SURVEY_INFO_CHANNEL_TIME_RX: amount of time the radio spent -+ * receiving data -+ * @NL80211_SURVEY_INFO_CHANNEL_TIME_TX: amount of time the radio spent -+ * transmitting data - * @NL80211_SURVEY_INFO_MAX: highest survey info attribute number - * currently defined - * @__NL80211_SURVEY_INFO_AFTER_LAST: internal use -@@ -1390,6 +1464,12 @@ enum nl80211_survey_info { - __NL80211_SURVEY_INFO_INVALID, - NL80211_SURVEY_INFO_FREQUENCY, - NL80211_SURVEY_INFO_NOISE, -+ NL80211_SURVEY_INFO_IN_USE, -+ NL80211_SURVEY_INFO_CHANNEL_TIME, -+ NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY, -+ NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY, -+ NL80211_SURVEY_INFO_CHANNEL_TIME_RX, -+ NL80211_SURVEY_INFO_CHANNEL_TIME_TX, - - /* keep last */ - __NL80211_SURVEY_INFO_AFTER_LAST, -@@ -1636,11 +1716,14 @@ enum nl80211_auth_type { - * @NL80211_KEYTYPE_GROUP: Group (broadcast/multicast) key - * @NL80211_KEYTYPE_PAIRWISE: Pairwise (unicast/individual) key - * @NL80211_KEYTYPE_PEERKEY: PeerKey (DLS) -+ * @NUM_NL80211_KEYTYPES: number of defined key types - */ - enum nl80211_key_type { - NL80211_KEYTYPE_GROUP, - NL80211_KEYTYPE_PAIRWISE, - NL80211_KEYTYPE_PEERKEY, -+ -+ NUM_NL80211_KEYTYPES - }; - - /** -@@ -1671,6 +1754,9 @@ enum nl80211_wpa_versions { - * CCMP keys, each six bytes in little endian - * @NL80211_KEY_DEFAULT: flag indicating default key - * @NL80211_KEY_DEFAULT_MGMT: flag indicating default management key -+ * @NL80211_KEY_TYPE: the key type from enum nl80211_key_type, if not -+ * specified the default depends on whether a MAC address was -+ * given with the command using the key or not (u32) - * @__NL80211_KEY_AFTER_LAST: internal - * @NL80211_KEY_MAX: highest key attribute +@@ -1626,7 +1638,7 @@ enum nl80211_mntr_flags { + * @NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME: The interval of time (in TUs) + * that it takes for an HWMP information element to propagate across the mesh + * +- * @NL80211_MESHCONF_ROOTMODE: whether root mode is enabled or not ++ * @NL80211_MESHCONF_HWMP_ROOTMODE: whether root mode is enabled or not + * + * @NL80211_MESHCONF_ELEMENT_TTL: specifies the value of TTL field set at a + * source mesh point for path selection elements. +@@ -1678,6 +1690,7 @@ enum nl80211_meshconf_params { + * element that vendors will use to identify the path selection methods and + * metrics in use. + * ++ * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number + * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use */ -@@ -1682,6 +1768,7 @@ enum nl80211_key_attributes { - NL80211_KEY_SEQ, - NL80211_KEY_DEFAULT, - NL80211_KEY_DEFAULT_MGMT, -+ NL80211_KEY_TYPE, - - /* keep last */ - __NL80211_KEY_AFTER_LAST, + enum nl80211_mesh_setup_params { diff --git a/package/iw/patches/100-survey_freq_in_use.patch b/package/iw/patches/100-survey_freq_in_use.patch deleted file mode 100644 index 3933ae3..0000000 --- a/package/iw/patches/100-survey_freq_in_use.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- a/survey.c -+++ b/survey.c -@@ -44,8 +44,9 @@ static int print_survey_handler(struct n - } - - if (sinfo[NL80211_SURVEY_INFO_FREQUENCY]) -- printf("\tfrequency:\t%u MHz\n", -- nla_get_u32(sinfo[NL80211_SURVEY_INFO_FREQUENCY])); -+ printf("\tfrequency:\t%u MHz%s\n", -+ nla_get_u32(sinfo[NL80211_SURVEY_INFO_FREQUENCY]), -+ sinfo[NL80211_SURVEY_INFO_IN_USE] ? " [in use]" : ""); - if (sinfo[NL80211_SURVEY_INFO_NOISE]) - printf("\tnoise:\t\t%d dBm\n", - (int8_t)nla_get_u8(sinfo[NL80211_SURVEY_INFO_NOISE])); diff --git a/package/iw/patches/110-survey_phy_stats.patch b/package/iw/patches/110-survey_phy_stats.patch deleted file mode 100644 index f7c8a52..0000000 --- a/package/iw/patches/110-survey_phy_stats.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- a/survey.c -+++ b/survey.c -@@ -44,12 +44,27 @@ static int print_survey_handler(struct n - } - - if (sinfo[NL80211_SURVEY_INFO_FREQUENCY]) -- printf("\tfrequency:\t%u MHz%s\n", -+ printf("\tfrequency:\t\t\t%u MHz%s\n", - nla_get_u32(sinfo[NL80211_SURVEY_INFO_FREQUENCY]), - sinfo[NL80211_SURVEY_INFO_IN_USE] ? " [in use]" : ""); - if (sinfo[NL80211_SURVEY_INFO_NOISE]) -- printf("\tnoise:\t\t%d dBm\n", -+ printf("\tnoise:\t\t\t\t%d dBm\n", - (int8_t)nla_get_u8(sinfo[NL80211_SURVEY_INFO_NOISE])); -+ if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME]) -+ printf("\tchannel active time:\t\t%llu ms\n", -+ (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME])); -+ if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY]) -+ printf("\tchannel busy time:\t\t%llu ms\n", -+ (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY])); -+ if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY]) -+ printf("\textension channel busy time:\t%llu ms\n", -+ (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY])); -+ if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_RX]) -+ printf("\tchannel receive time:\t\t%llu ms\n", -+ (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_RX])); -+ if (sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_TX]) -+ printf("\tchannel transmit time:\t\t%llu ms\n", -+ (uint64_t)nla_get_u64(sinfo[NL80211_SURVEY_INFO_CHANNEL_TIME_TX])); - return NL_SKIP; - } - diff --git a/package/iw/patches/120-ibss_mcast_rate.patch b/package/iw/patches/120-ibss_mcast_rate.patch deleted file mode 100644 index acbd3e8..0000000 --- a/package/iw/patches/120-ibss_mcast_rate.patch +++ /dev/null @@ -1,32 +0,0 @@ ---- a/ibss.c -+++ b/ibss.c -@@ -83,6 +83,20 @@ static int join_ibss(struct nl80211_stat - argc--; - } - -+ /* multicast rate */ -+ if (argc > 1 && strcmp(argv[0], "mcast-rate") == 0) { -+ argv++; -+ argc--; -+ -+ rate = strtod(argv[0], &end); -+ if (*end != '\0') -+ return 1; -+ -+ NLA_PUT_U32(msg, NL80211_ATTR_MCAST_RATE, (int) rate * 10); -+ argv++; -+ argc--; -+ } -+ - if (!argc) - return 0; - -@@ -109,7 +123,7 @@ COMMAND(ibss, leave, NULL, - "Leave the current IBSS cell."); - COMMAND(ibss, join, - "<SSID> <freq in MHz> [fixed-freq] [<fixed bssid>] " -- "[basic-rates <rate in Mbps,rate2,...>] [key d:0:abcde]", -+ "[basic-rates <rate in Mbps,rate2,...>] [mcast-rate <rate in Mbps>] [key d:0:abcde]", - NL80211_CMD_JOIN_IBSS, 0, CIB_NETDEV, join_ibss, - "Join the IBSS cell with the given SSID, if it doesn't exist create\n" - "it on the given frequency. When fixed frequency is requested, don't\n" diff --git a/package/iw/patches/302-sta-retries.patch b/package/iw/patches/302-sta-retries.patch deleted file mode 100644 index 8c1ce13..0000000 --- a/package/iw/patches/302-sta-retries.patch +++ /dev/null @@ -1,33 +0,0 @@ -iw: print station retry counters - -From: Bruno Randolf <br1@einfach.org> - -Signed-off-by: Bruno Randolf <br1@einfach.org> ---- - station.c | 8 ++++++++ - 1 files changed, 8 insertions(+), 0 deletions(-) - ---- a/station.c -+++ b/station.c -@@ -48,6 +48,8 @@ static int print_sta_handler(struct nl_m - [NL80211_STA_INFO_LLID] = { .type = NLA_U16 }, - [NL80211_STA_INFO_PLID] = { .type = NLA_U16 }, - [NL80211_STA_INFO_PLINK_STATE] = { .type = NLA_U8 }, -+ [NL80211_STA_INFO_TX_RETRIES] = { .type = NLA_U32 }, -+ [NL80211_STA_INFO_TX_FAILED] = { .type = NLA_U32 }, - }; - - static struct nla_policy rate_policy[NL80211_RATE_INFO_MAX + 1] = { -@@ -96,6 +98,12 @@ static int print_sta_handler(struct nl_m - if (sinfo[NL80211_STA_INFO_TX_PACKETS]) - printf("\n\ttx packets:\t%u", - nla_get_u32(sinfo[NL80211_STA_INFO_TX_PACKETS])); -+ if (sinfo[NL80211_STA_INFO_TX_RETRIES]) -+ printf("\n\ttx retries:\t%u", -+ nla_get_u32(sinfo[NL80211_STA_INFO_TX_RETRIES])); -+ if (sinfo[NL80211_STA_INFO_TX_FAILED]) -+ printf("\n\ttx failed:\t%u", -+ nla_get_u32(sinfo[NL80211_STA_INFO_TX_FAILED])); - if (sinfo[NL80211_STA_INFO_SIGNAL]) - printf("\n\tsignal: \t%d dBm", - (int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL])); diff --git a/package/iw/patches/401-antenna.patch b/package/iw/patches/401-antenna.patch deleted file mode 100644 index 62f37c2..0000000 --- a/package/iw/patches/401-antenna.patch +++ /dev/null @@ -1,87 +0,0 @@ -iw: Add antenna configuration commands - -From: Bruno Randolf <br1@einfach.org> - -Add command to set the antenna configuration (iw phyX set antenna ...) and -include antenna setting in wiphy information (iw phyX info). - -iw phyX set antenna all | <bitmap> | <tx bitmap> <rx bitmap> - -Signed-off-by: Bruno Randolf <br1@einfach.org> - -v8: Simplfied option parser as requested. ---- - info.c | 7 +++++++ - phy.c | 39 +++++++++++++++++++++++++++++++++++++++ - 2 files changed, 46 insertions(+), 0 deletions(-) - ---- a/info.c -+++ b/info.c -@@ -168,6 +168,13 @@ static int print_phy_handler(struct nl_m - printf("\tCoverage class: %d (up to %dm)\n", coverage, 450 * coverage); - } - -+ if (tb_msg[NL80211_ATTR_WIPHY_ANTENNA_TX] && -+ tb_msg[NL80211_ATTR_WIPHY_ANTENNA_RX]) { -+ printf("\tAntenna: TX %#x RX %#x\n", -+ nla_get_u32(tb_msg[NL80211_ATTR_WIPHY_ANTENNA_TX]), -+ nla_get_u32(tb_msg[NL80211_ATTR_WIPHY_ANTENNA_RX])); -+ } -+ - if (tb_msg[NL80211_ATTR_SUPPORTED_IFTYPES]) { - printf("\tSupported interface modes:\n"); - nla_for_each_nested(nl_mode, tb_msg[NL80211_ATTR_SUPPORTED_IFTYPES], rem_mode) ---- a/phy.c -+++ b/phy.c -@@ -307,3 +307,51 @@ COMMAND(set, txpower, "<auto|fixed|limit - COMMAND(set, txpower, "<auto|fixed|limit> [<tx power in mBm>]", - NL80211_CMD_SET_WIPHY, 0, CIB_NETDEV, handle_txpower, - "Specify transmit power level and setting type."); -+ -+static int handle_antenna(struct nl80211_state *state, -+ struct nl_cb *cb, -+ struct nl_msg *msg, -+ int argc, char **argv) -+{ -+ char *end; -+ uint32_t tx_ant = 0, rx_ant = 0; -+ -+ if (argc == 1) { -+ if (strcmp(argv[0], "all") == 0) -+ tx_ant = rx_ant = 0xffffffff; -+ else { -+ tx_ant = rx_ant = strtoul(argv[0], &end, 0); -+ if (*end) -+ return 1; -+ } -+ } -+ else if (argc == 2) { -+ if (strcmp(argv[0], "all") == 0) -+ tx_ant = 0xffffffff; -+ else { -+ tx_ant = strtoul(argv[0], &end, 0); -+ if (*end) -+ return 1; -+ } -+ if (strcmp(argv[1], "all") == 0) -+ rx_ant = 0xffffffff; -+ else { -+ rx_ant = strtoul(argv[1], &end, 0); -+ if (*end) -+ return 1; -+ } -+ } else -+ return 1; -+ -+ NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_ANTENNA_TX, tx_ant); -+ NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_ANTENNA_RX, rx_ant); -+ -+ return 0; -+ -+ nla_put_failure: -+ return -ENOBUFS; -+} -+COMMAND(set, antenna, "<bitmap> | all | <tx bitmap> <rx bitmap>", -+ NL80211_CMD_SET_WIPHY, 0, CIB_PHY, handle_antenna, -+ "Set a bitmap of allowed antennas to use for TX and RX.\n" -+ "The driver may reject antenna configurations it cannot support."); diff --git a/package/iw/patches/500-sta-signal-avg.patch b/package/iw/patches/500-sta-signal-avg.patch deleted file mode 100644 index 1cdbdbc..0000000 --- a/package/iw/patches/500-sta-signal-avg.patch +++ /dev/null @@ -1,32 +0,0 @@ -iw: add signal average to station information - -From: Bruno Randolf <br1@einfach.org> - - ---- - nl80211.h | 1 + - station.c | 3 +++ - 2 files changed, 4 insertions(+), 0 deletions(-) - ---- a/nl80211.h -+++ b/nl80211.h -@@ -1183,6 +1183,7 @@ enum nl80211_sta_info { - NL80211_STA_INFO_TX_PACKETS, - NL80211_STA_INFO_TX_RETRIES, - NL80211_STA_INFO_TX_FAILED, -+ NL80211_STA_INFO_SIGNAL_AVG, - - /* keep last */ - __NL80211_STA_INFO_AFTER_LAST, ---- a/station.c -+++ b/station.c -@@ -107,6 +107,9 @@ static int print_sta_handler(struct nl_m - if (sinfo[NL80211_STA_INFO_SIGNAL]) - printf("\n\tsignal: \t%d dBm", - (int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL])); -+ if (sinfo[NL80211_STA_INFO_SIGNAL_AVG]) -+ printf("\n\tsignal avg:\t%d dBm", -+ (int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL_AVG])); - - if (sinfo[NL80211_STA_INFO_TX_BITRATE]) { - if (nla_parse_nested(rinfo, NL80211_RATE_INFO_MAX, diff --git a/package/iw/patches/501-ibss-bintval.patch b/package/iw/patches/501-ibss-bintval.patch deleted file mode 100644 index 791e2a0..0000000 --- a/package/iw/patches/501-ibss-bintval.patch +++ /dev/null @@ -1,55 +0,0 @@ -iw: Add ibss join parameter for beacon interval - -From: Bruno Randolf <br1@einfach.org> - -NL80211_ATTR_BEACON_INTERVAL already exists, we just have to use it. - -Signed-off-by: Bruno Randolf <br1@einfach.org> ---- - ibss.c | 19 ++++++++++++++++--- - 1 files changed, 16 insertions(+), 3 deletions(-) - ---- a/ibss.c -+++ b/ibss.c -@@ -26,6 +26,7 @@ static int join_ibss(struct nl80211_stat - int n_rates = 0; - char *value = NULL, *sptr = NULL; - float rate; -+ int bintval; - - if (argc < 2) - return 1; -@@ -57,6 +58,17 @@ static int join_ibss(struct nl80211_stat - } - } - -+ if (argc > 1 && strcmp(argv[0], "beacon-interval") == 0) { -+ argv++; -+ argc--; -+ bintval = strtoul(argv[0], &end, 10); -+ if (*end != '\0') -+ return 1; -+ NLA_PUT_U32(msg, NL80211_ATTR_BEACON_INTERVAL, bintval); -+ argv++; -+ argc--; -+ } -+ - /* basic rates */ - if (argc > 1 && strcmp(argv[0], "basic-rates") == 0) { - argv++; -@@ -122,11 +134,12 @@ 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>] " -- "[basic-rates <rate in Mbps,rate2,...>] [mcast-rate <rate in Mbps>] [key d:0:abcde]", -+ "<SSID> <freq in MHz> [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, - "Join the IBSS cell with the given SSID, if it doesn't exist create\n" - "it on the given frequency. When fixed frequency is requested, don't\n" - "join/create a cell on a different frequency. When a fixed BSSID is\n" - "requested use that BSSID and do not adopt another cell's BSSID even\n" -- "if it has higher TSF and the same SSID."); -+ "if it has higher TSF and the same SSID. If an IBSS is created, create\n" -+ "it with the specified basic-rates and beacon-interval (in TU)."); |