diff options
Diffstat (limited to 'package/network/utils/iw')
8 files changed, 44 insertions, 480 deletions
diff --git a/package/network/utils/iw/Makefile b/package/network/utils/iw/Makefile index 75a8c4fc1f..2528441145 100644 --- a/package/network/utils/iw/Makefile +++ b/package/network/utils/iw/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iw -PKG_VERSION:=3.10 +PKG_VERSION:=3.14 PKG_RELEASE:=1 -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=https://www.kernel.org/pub/software/network/iw -PKG_MD5SUM:=0dc736963455937278b10fe8a2157e47 +PKG_MD5SUM:=66e41053f6fc0781b683b5b688442de6 PKG_MAINTAINER:=Felix Fietkau <nbd@openwrt.org> diff --git a/package/network/utils/iw/patches/001-nl80211_h_sync.patch b/package/network/utils/iw/patches/001-nl80211_h_sync.patch index c621eb665b..215c740dd7 100644 --- a/package/network/utils/iw/patches/001-nl80211_h_sync.patch +++ b/package/network/utils/iw/patches/001-nl80211_h_sync.patch @@ -1,239 +1,39 @@ --- a/nl80211.h +++ b/nl80211.h -@@ -27,6 +27,8 @@ - - #include <linux/types.h> - -+#define NL80211_GENL_NAME "nl80211" -+ - /** - * DOC: Station handling - * -@@ -1429,6 +1431,11 @@ enum nl80211_commands { - * @NL80211_ATTR_MAX_CRIT_PROT_DURATION: duration in milliseconds in which - * the connection should have increased reliability (u16). +@@ -1555,6 +1555,9 @@ enum nl80211_commands { + * data is in the format defined for the payload of the QoS Map Set element + * in IEEE Std 802.11-2012, 8.4.2.97. * -+ * @NL80211_ATTR_PEER_AID: Association ID for the peer TDLS station (u16). -+ * This is similar to @NL80211_ATTR_STA_AID but with a difference of being -+ * allowed to be used with the first @NL80211_CMD_SET_STATION command to -+ * update a TDLS peer STA entry. ++ * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce ++ * transmit power to stay within regulatory limits. u32, dBi. + * * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use */ -@@ -1727,6 +1734,10 @@ enum nl80211_attrs { - NL80211_ATTR_CRIT_PROT_ID, - NL80211_ATTR_MAX_CRIT_PROT_DURATION, +@@ -1883,6 +1886,8 @@ enum nl80211_attrs { + + NL80211_ATTR_QOS_MAP, -+ NL80211_ATTR_PEER_AID, -+ + NL80211_ATTR_WIPHY_ANTENNA_GAIN, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, -@@ -1991,6 +2002,10 @@ enum nl80211_sta_bss_param { - * @NL80211_STA_INFO_PEER_PM: peer mesh STA link-specific power mode - * @NL80211_STA_INFO_NONPEER_PM: neighbor mesh STA power save mode towards - * non-peer STA -+ * @NL80211_STA_INFO_CHAIN_SIGNAL: per-chain signal strength of last PPDU -+ * Contains a nested array of signal strength attributes (u8, dBm) -+ * @NL80211_STA_INFO_CHAIN_SIGNAL_AVG: per-chain signal strength average -+ * Same format as NL80211_STA_INFO_CHAIN_SIGNAL. - * @__NL80211_STA_INFO_AFTER_LAST: internal - * @NL80211_STA_INFO_MAX: highest possible station info attribute - */ -@@ -2020,6 +2035,8 @@ enum nl80211_sta_info { - NL80211_STA_INFO_NONPEER_PM, - NL80211_STA_INFO_RX_BYTES64, - NL80211_STA_INFO_TX_BYTES64, -+ NL80211_STA_INFO_CHAIN_SIGNAL, -+ NL80211_STA_INFO_CHAIN_SIGNAL_AVG, - - /* keep last */ - __NL80211_STA_INFO_AFTER_LAST, -@@ -2413,6 +2430,8 @@ enum nl80211_survey_info { - * @NL80211_MNTR_FLAG_OTHER_BSS: disable BSSID filtering - * @NL80211_MNTR_FLAG_COOK_FRAMES: report frames after processing. - * overrides all other flags. -+ * @NL80211_MNTR_FLAG_ACTIVE: use the configured MAC address -+ * and ACK incoming unicast packets. - * - * @__NL80211_MNTR_FLAG_AFTER_LAST: internal use - * @NL80211_MNTR_FLAG_MAX: highest possible monitor flag -@@ -2424,6 +2443,7 @@ enum nl80211_mntr_flags { - NL80211_MNTR_FLAG_CONTROL, - NL80211_MNTR_FLAG_OTHER_BSS, - NL80211_MNTR_FLAG_COOK_FRAMES, -+ NL80211_MNTR_FLAG_ACTIVE, - - /* keep last */ - __NL80211_MNTR_FLAG_AFTER_LAST, -@@ -2559,6 +2579,10 @@ enum nl80211_mesh_power_mode { - * - * @NL80211_MESHCONF_AWAKE_WINDOW: awake window duration (in TUs) - * -+ * @NL80211_MESHCONF_PLINK_TIMEOUT: If no tx activity is seen from a STA we've -+ * established peering with for longer than this time (in seconds), then -+ * remove it from the STA's list of peers. Default is 30 minutes. -+ * - * @__NL80211_MESHCONF_ATTR_AFTER_LAST: internal use - */ - enum nl80211_meshconf_params { -@@ -2590,6 +2614,7 @@ enum nl80211_meshconf_params { - NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL, - NL80211_MESHCONF_POWER_MODE, - NL80211_MESHCONF_AWAKE_WINDOW, -+ NL80211_MESHCONF_PLINK_TIMEOUT, - - /* keep last */ - __NL80211_MESHCONF_ATTR_AFTER_LAST, -@@ -2637,6 +2662,10 @@ enum nl80211_meshconf_params { - * @NL80211_MESH_SETUP_USERSPACE_MPM: Enable this option if userspace will - * implement an MPM which handles peer allocation and state. - * -+ * @NL80211_MESH_SETUP_AUTH_PROTOCOL: Inform the kernel of the authentication -+ * method (u8, as defined in IEEE 8.4.2.100.6, e.g. 0x1 for SAE). -+ * Default is no authentication method required. -+ * - * @NL80211_MESH_SETUP_ATTR_MAX: highest possible mesh setup attribute number - * - * @__NL80211_MESH_SETUP_ATTR_AFTER_LAST: Internal use -@@ -2650,6 +2679,7 @@ enum nl80211_mesh_setup_params { - NL80211_MESH_SETUP_USERSPACE_AMPE, - NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC, - NL80211_MESH_SETUP_USERSPACE_MPM, -+ NL80211_MESH_SETUP_AUTH_PROTOCOL, - - /* keep last */ - __NL80211_MESH_SETUP_ATTR_AFTER_LAST, -@@ -2730,6 +2760,8 @@ enum nl80211_channel_type { - * and %NL80211_ATTR_CENTER_FREQ2 attributes must be provided as well - * @NL80211_CHAN_WIDTH_160: 160 MHz channel, the %NL80211_ATTR_CENTER_FREQ1 - * attribute must be provided as well -+ * @NL80211_CHAN_WIDTH_5: 5 MHz OFDM channel -+ * @NL80211_CHAN_WIDTH_10: 10 MHz OFDM channel - */ - enum nl80211_chan_width { - NL80211_CHAN_WIDTH_20_NOHT, -@@ -2738,6 +2770,8 @@ enum nl80211_chan_width { - NL80211_CHAN_WIDTH_80, - NL80211_CHAN_WIDTH_80P80, - NL80211_CHAN_WIDTH_160, -+ NL80211_CHAN_WIDTH_5, -+ NL80211_CHAN_WIDTH_10, - }; - - /** -@@ -3028,11 +3062,11 @@ enum nl80211_tx_power_setting { - }; - - /** -- * enum nl80211_wowlan_packet_pattern_attr - WoWLAN packet pattern attribute -- * @__NL80211_WOWLAN_PKTPAT_INVALID: invalid number for nested attribute -- * @NL80211_WOWLAN_PKTPAT_PATTERN: the pattern, values where the mask has -+ * enum nl80211_packet_pattern_attr - packet pattern attribute -+ * @__NL80211_PKTPAT_INVALID: invalid number for nested attribute -+ * @NL80211_PKTPAT_PATTERN: the pattern, values where the mask has - * a zero bit are ignored -- * @NL80211_WOWLAN_PKTPAT_MASK: pattern mask, must be long enough to have -+ * @NL80211_PKTPAT_MASK: pattern mask, must be long enough to have - * a bit for each byte in the pattern. The lowest-order bit corresponds - * to the first byte of the pattern, but the bytes of the pattern are - * in a little-endian-like format, i.e. the 9th byte of the pattern -@@ -3043,23 +3077,23 @@ enum nl80211_tx_power_setting { - * Note that the pattern matching is done as though frames were not - * 802.11 frames but 802.3 frames, i.e. the frame is fully unpacked - * first (including SNAP header unpacking) and then matched. -- * @NL80211_WOWLAN_PKTPAT_OFFSET: packet offset, pattern is matched after -+ * @NL80211_PKTPAT_OFFSET: packet offset, pattern is matched after - * these fixed number of bytes of received packet -- * @NUM_NL80211_WOWLAN_PKTPAT: number of attributes -- * @MAX_NL80211_WOWLAN_PKTPAT: max attribute number -+ * @NUM_NL80211_PKTPAT: number of attributes -+ * @MAX_NL80211_PKTPAT: max attribute number - */ --enum nl80211_wowlan_packet_pattern_attr { -- __NL80211_WOWLAN_PKTPAT_INVALID, -- NL80211_WOWLAN_PKTPAT_MASK, -- NL80211_WOWLAN_PKTPAT_PATTERN, -- NL80211_WOWLAN_PKTPAT_OFFSET, -+enum nl80211_packet_pattern_attr { -+ __NL80211_PKTPAT_INVALID, -+ NL80211_PKTPAT_MASK, -+ NL80211_PKTPAT_PATTERN, -+ NL80211_PKTPAT_OFFSET, - -- NUM_NL80211_WOWLAN_PKTPAT, -- MAX_NL80211_WOWLAN_PKTPAT = NUM_NL80211_WOWLAN_PKTPAT - 1, -+ NUM_NL80211_PKTPAT, -+ MAX_NL80211_PKTPAT = NUM_NL80211_PKTPAT - 1, - }; - - /** -- * struct nl80211_wowlan_pattern_support - pattern support information -+ * struct nl80211_pattern_support - packet pattern support information - * @max_patterns: maximum number of patterns supported - * @min_pattern_len: minimum length of each pattern - * @max_pattern_len: maximum length of each pattern -@@ -3069,13 +3103,22 @@ enum nl80211_wowlan_packet_pattern_attr - * that is part of %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED in the - * capability information given by the kernel to userspace. - */ --struct nl80211_wowlan_pattern_support { -+struct nl80211_pattern_support { - __u32 max_patterns; - __u32 min_pattern_len; - __u32 max_pattern_len; - __u32 max_pkt_offset; - } __attribute__((packed)); - -+/* only for backward compatibility */ -+#define __NL80211_WOWLAN_PKTPAT_INVALID __NL80211_PKTPAT_INVALID -+#define NL80211_WOWLAN_PKTPAT_MASK NL80211_PKTPAT_MASK -+#define NL80211_WOWLAN_PKTPAT_PATTERN NL80211_PKTPAT_PATTERN -+#define NL80211_WOWLAN_PKTPAT_OFFSET NL80211_PKTPAT_OFFSET -+#define NUM_NL80211_WOWLAN_PKTPAT NUM_NL80211_PKTPAT -+#define MAX_NL80211_WOWLAN_PKTPAT MAX_NL80211_PKTPAT -+#define nl80211_wowlan_pattern_support nl80211_pattern_support -+ - /** - * enum nl80211_wowlan_triggers - WoWLAN trigger definitions - * @__NL80211_WOWLAN_TRIG_INVALID: invalid number for nested attributes -@@ -3095,7 +3138,7 @@ struct nl80211_wowlan_pattern_support { - * pattern matching is done after the packet is converted to the MSDU. - * - * In %NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED, it is a binary attribute -- * carrying a &struct nl80211_wowlan_pattern_support. -+ * carrying a &struct nl80211_pattern_support. - * - * When reporting wakeup. it is a u32 attribute containing the 0-based - * index of the pattern that caused the wakeup, in the patterns passed -@@ -3252,7 +3295,7 @@ struct nl80211_wowlan_tcp_data_token_fea - * @NL80211_WOWLAN_TCP_WAKE_PAYLOAD: wake packet payload, for advertising a - * u32 attribute holding the maximum length - * @NL80211_WOWLAN_TCP_WAKE_MASK: Wake packet payload mask, not used for -- * feature advertising. The mask works like @NL80211_WOWLAN_PKTPAT_MASK -+ * feature advertising. The mask works like @NL80211_PKTPAT_MASK - * but on the TCP payload only. - * @NUM_NL80211_WOWLAN_TCP: number of TCP attributes - * @MAX_NL80211_WOWLAN_TCP: highest attribute number -@@ -3556,6 +3599,10 @@ enum nl80211_ap_sme_features { - * Peering Management entity which may be implemented by registering for - * beacons or NL80211_CMD_NEW_PEER_CANDIDATE events. The mesh beacon is - * still generated by the driver. -+ * @NL80211_FEATURE_ACTIVE_MONITOR: This driver supports an active monitor -+ * interface. An active monitor interface behaves like a normal monitor -+ * interface, but gets added to the driver. It ensures that incoming -+ * unicast packets directed at the configured interface address get ACKed. - */ - enum nl80211_feature_flags { - NL80211_FEATURE_SK_TX_STATUS = 1 << 0, -@@ -3575,6 +3622,7 @@ enum nl80211_feature_flags { - NL80211_FEATURE_ADVERTISE_CHAN_LIMITS = 1 << 14, - NL80211_FEATURE_FULL_AP_CLIENT_STATE = 1 << 15, - NL80211_FEATURE_USERSPACE_MPM = 1 << 16, -+ NL80211_FEATURE_ACTIVE_MONITOR = 1 << 17, - }; - - /** +@@ -2442,9 +2447,15 @@ 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. ++ * only report BSS with matching SSID. + * @NL80211_SCHED_SCAN_MATCH_ATTR_RSSI: RSSI threshold (in dBm) for reporting a +- * BSS in scan results. Filtering is turned off if not specified. ++ * BSS in scan results. Filtering is turned off if not specified. Note that ++ * if this attribute is in a match set of its own, then it is treated as ++ * the default value for all matchsets with an SSID, rather than being a ++ * matchset of its own without an RSSI filter. This is due to problems with ++ * how this API was implemented in the past. Also, due to the same problem, ++ * the only way to create a matchset with only an RSSI filter (with this ++ * attribute) is if there's only a single matchset with the RSSI attribute. + * @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter + * attribute number currently defined + * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use diff --git a/package/network/utils/iw/patches/100-rx_rate.patch b/package/network/utils/iw/patches/100-rx_rate.patch deleted file mode 100644 index cc23e07501..0000000000 --- a/package/network/utils/iw/patches/100-rx_rate.patch +++ /dev/null @@ -1,60 +0,0 @@ ---- a/station.c -+++ b/station.c -@@ -43,7 +43,7 @@ static void print_power_mode(struct nlat - } - } - --void parse_tx_bitrate(struct nlattr *bitrate_attr, char *buf, int buflen) -+void parse_bitrate(struct nlattr *bitrate_attr, char *buf, int buflen) - { - int rate = 0; - char *pos = buf; -@@ -107,6 +107,7 @@ static int print_sta_handler(struct nl_m - [NL80211_STA_INFO_SIGNAL] = { .type = NLA_U8 }, - [NL80211_STA_INFO_T_OFFSET] = { .type = NLA_U64 }, - [NL80211_STA_INFO_TX_BITRATE] = { .type = NLA_NESTED }, -+ [NL80211_STA_INFO_RX_BITRATE] = { .type = NLA_NESTED }, - [NL80211_STA_INFO_LLID] = { .type = NLA_U16 }, - [NL80211_STA_INFO_PLID] = { .type = NLA_U16 }, - [NL80211_STA_INFO_PLINK_STATE] = { .type = NLA_U8 }, -@@ -177,10 +178,17 @@ static int print_sta_handler(struct nl_m - if (sinfo[NL80211_STA_INFO_TX_BITRATE]) { - char buf[100]; - -- parse_tx_bitrate(sinfo[NL80211_STA_INFO_TX_BITRATE], buf, sizeof(buf)); -+ parse_bitrate(sinfo[NL80211_STA_INFO_TX_BITRATE], buf, sizeof(buf)); - printf("\n\ttx bitrate:\t%s", buf); - } - -+ if (sinfo[NL80211_STA_INFO_RX_BITRATE]) { -+ char buf[100]; -+ -+ parse_bitrate(sinfo[NL80211_STA_INFO_RX_BITRATE], buf, sizeof(buf)); -+ printf("\n\trx bitrate:\t%s", buf); -+ } -+ - if (sinfo[NL80211_STA_INFO_LLID]) - printf("\n\tmesh llid:\t%d", - nla_get_u16(sinfo[NL80211_STA_INFO_LLID])); ---- a/iw.h -+++ b/iw.h -@@ -170,7 +170,7 @@ enum print_ie_type { - void print_ies(unsigned char *ie, int ielen, bool unknown, - enum print_ie_type ptype); - --void parse_tx_bitrate(struct nlattr *bitrate_attr, char *buf, int buflen); -+void parse_bitrate(struct nlattr *bitrate_attr, char *buf, int buflen); - - DECLARE_SECTION(set); - DECLARE_SECTION(get); ---- a/link.c -+++ b/link.c -@@ -165,7 +165,7 @@ static int print_link_sta(struct nl_msg - if (sinfo[NL80211_STA_INFO_TX_BITRATE]) { - char buf[100]; - -- parse_tx_bitrate(sinfo[NL80211_STA_INFO_TX_BITRATE], buf, sizeof(buf)); -+ parse_bitrate(sinfo[NL80211_STA_INFO_TX_BITRATE], buf, sizeof(buf)); - printf("\ttx bitrate: %s\n", buf); - } - diff --git a/package/network/utils/iw/patches/110-per_chain_signal_strength.patch b/package/network/utils/iw/patches/110-per_chain_signal_strength.patch deleted file mode 100644 index e519a86c6a..0000000000 --- a/package/network/utils/iw/patches/110-per_chain_signal_strength.patch +++ /dev/null @@ -1,71 +0,0 @@ ---- a/station.c -+++ b/station.c -@@ -91,6 +91,33 @@ void parse_bitrate(struct nlattr *bitrat - " VHT-NSS %d", nla_get_u8(rinfo[NL80211_RATE_INFO_VHT_NSS])); - } - -+static char *get_chain_signal(struct nlattr *attr_list) -+{ -+ struct nlattr *attr; -+ static char buf[64]; -+ char *cur = buf; -+ int i = 0, rem; -+ const char *prefix; -+ -+ if (!attr_list) -+ return ""; -+ -+ nla_for_each_nested(attr, attr_list, rem) { -+ if (i++ > 0) -+ prefix = ", "; -+ else -+ prefix = "["; -+ -+ cur += snprintf(cur, sizeof(buf) - (cur - buf), "%s%d", prefix, -+ (int8_t) nla_get_u8(attr)); -+ } -+ -+ if (i) -+ snprintf(cur, sizeof(buf) - (cur - buf), "] "); -+ -+ return buf; -+} -+ - static int print_sta_handler(struct nl_msg *msg, void *arg) - { - struct nlattr *tb[NL80211_ATTR_MAX + 1]; -@@ -118,7 +145,10 @@ static int print_sta_handler(struct nl_m - [NL80211_STA_INFO_LOCAL_PM] = { .type = NLA_U32}, - [NL80211_STA_INFO_PEER_PM] = { .type = NLA_U32}, - [NL80211_STA_INFO_NONPEER_PM] = { .type = NLA_U32}, -+ [NL80211_STA_INFO_CHAIN_SIGNAL] = { .type = NLA_NESTED }, -+ [NL80211_STA_INFO_CHAIN_SIGNAL_AVG] = { .type = NLA_NESTED }, - }; -+ char *chain; - - nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0), - genlmsg_attrlen(gnlh, 0), NULL); -@@ -165,12 +195,19 @@ 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])); -+ -+ chain = get_chain_signal(sinfo[NL80211_STA_INFO_CHAIN_SIGNAL]); - if (sinfo[NL80211_STA_INFO_SIGNAL]) -- printf("\n\tsignal: \t%d dBm", -- (int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL])); -+ printf("\n\tsignal: \t%d %sdBm", -+ (int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL]), -+ chain); -+ -+ chain = get_chain_signal(sinfo[NL80211_STA_INFO_CHAIN_SIGNAL_AVG]); - 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])); -+ printf("\n\tsignal avg:\t%d %sdBm", -+ (int8_t)nla_get_u8(sinfo[NL80211_STA_INFO_SIGNAL_AVG]), -+ chain); -+ - if (sinfo[NL80211_STA_INFO_T_OFFSET]) - printf("\n\tToffset:\t%lld us", - (unsigned long long)nla_get_u64(sinfo[NL80211_STA_INFO_T_OFFSET])); diff --git a/package/network/utils/iw/patches/120-antenna_gain.patch b/package/network/utils/iw/patches/120-antenna_gain.patch index 36043611da..223a59a246 100644 --- a/package/network/utils/iw/patches/120-antenna_gain.patch +++ b/package/network/utils/iw/patches/120-antenna_gain.patch @@ -1,6 +1,6 @@ --- a/phy.c +++ b/phy.c -@@ -421,3 +421,31 @@ COMMAND(set, antenna, "<bitmap> | all | +@@ -424,3 +424,31 @@ COMMAND(set, antenna, "<bitmap> | all | 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/network/utils/iw/patches/130-monitor_active.patch b/package/network/utils/iw/patches/130-monitor_active.patch deleted file mode 100644 index 9d19ae9a12..0000000000 --- a/package/network/utils/iw/patches/130-monitor_active.patch +++ /dev/null @@ -1,20 +0,0 @@ ---- a/interface.c -+++ b/interface.c -@@ -16,7 +16,8 @@ - "fcsfail: show frames with FCS errors\n"\ - "control: show control frames\n"\ - "otherbss: show frames from other BSSes\n"\ -- "cook: use cooked mode" -+ "cook: use cooked mode\n"\ -+ "active: use active mode (ACK incoming unicast packets)" - - SECTION(interface); - -@@ -27,6 +28,7 @@ static char *mntr_flags[NL80211_MNTR_FLA - "control", - "otherbss", - "cook", -+ "active", - }; - - static int parse_mntr_flags(int *_argc, char ***_argv, diff --git a/package/network/utils/iw/patches/140-freq-11j.patch b/package/network/utils/iw/patches/140-freq-11j.patch deleted file mode 100644 index eae1f2182d..0000000000 --- a/package/network/utils/iw/patches/140-freq-11j.patch +++ /dev/null @@ -1,85 +0,0 @@ ---- a/iw.h -+++ b/iw.h -@@ -146,7 +146,7 @@ void print_ht_capability(__u16 cap); - - const char *iftype_name(enum nl80211_iftype iftype); - const char *command_name(enum nl80211_commands cmd); --int ieee80211_channel_to_frequency(int chan); -+int ieee80211_channel_to_frequency(int chan, enum nl80211_band band); - int ieee80211_frequency_to_channel(int freq); - - void print_ssid_escaped(const uint8_t len, const uint8_t *data); ---- a/phy.c -+++ b/phy.c -@@ -66,8 +66,12 @@ static int handle_freqchan(struct nl_msg - if (*end) - return 1; - -- if (chan) -- freq = ieee80211_channel_to_frequency(freq); -+ if (chan) { -+ enum nl80211_band band; -+ band = freq <= 14 ? NL80211_BAND_2GHZ : NL80211_BAND_5GHZ; -+ freq = ieee80211_channel_to_frequency(freq, band); -+ } -+ - - NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_FREQ, freq); - NLA_PUT_U32(msg, NL80211_ATTR_WIPHY_CHANNEL_TYPE, htval); ---- a/util.c -+++ b/util.c -@@ -248,31 +248,37 @@ const char *command_name(enum nl80211_co - return cmdbuf; - } - --int ieee80211_channel_to_frequency(int chan) -+int ieee80211_channel_to_frequency(int chan, enum nl80211_band band) - { -- if (chan < 14) -- return 2407 + chan * 5; -- -- if (chan == 14) -- return 2484; -- -- /* FIXME: dot11ChannelStartingFactor (802.11-2007 17.3.8.3.2) */ -- return (chan + 1000) * 5; -+ /* see 802.11-2007 17.3.8.3.2 and Annex J -+ * there are overlapping channel numbers in 5GHz and 2GHz bands */ -+ if (band == NL80211_BAND_5GHZ) { -+ if (chan >= 182 && chan <= 196) -+ return 4000 + chan * 5; -+ else -+ return 5000 + chan * 5; -+ } else { /* NL80211_BAND_2GHZ */ -+ if (chan == 14) -+ return 2484; -+ else if (chan < 14) -+ return 2407 + chan * 5; -+ else -+ return 0; /* not supported */ -+ } - } - - int ieee80211_frequency_to_channel(int freq) - { -+ /* see 802.11-2007 17.3.8.3.2 and Annex J */ - if (freq == 2484) - return 14; -- -- if (freq < 2484) -+ else if (freq < 2484) - return (freq - 2407) / 5; -- -- /* FIXME: dot11ChannelStartingFactor (802.11-2007 17.3.8.3.2) */ -- if (freq < 45000) -- return freq/5 - 1000; -- -- if (freq >= 58320 && freq <= 64800) -+ else if (freq >= 4910 && freq <= 4980) -+ return (freq - 4000) / 5; -+ else if (freq < 45000) -+ return (freq - 5000) / 5; -+ else if (freq >= 58320 && freq <= 64800) - return (freq - 56160) / 2160; - - return 0; diff --git a/package/network/utils/iw/patches/200-reduce_size.patch b/package/network/utils/iw/patches/200-reduce_size.patch index 46f58bcbe8..2a282a85a6 100644 --- a/package/network/utils/iw/patches/200-reduce_size.patch +++ b/package/network/utils/iw/patches/200-reduce_size.patch @@ -5,7 +5,7 @@ interface.o ibss.o station.o survey.o util.o \ mesh.o mpath.o scan.o reg.o version.o \ - reason.o status.o connect.o link.o offch.o ps.o cqm.o \ -- bitrate.o wowlan.o roc.o p2p.o +- bitrate.o wowlan.o coalesce.o roc.o p2p.o + reason.o status.o connect.o link.o ps.o \ + bitrate.o OBJS += sections.o @@ -13,7 +13,7 @@ OBJS-$(HWSIM) += hwsim.o --- a/info.c +++ b/info.c -@@ -198,6 +198,7 @@ next: +@@ -204,6 +204,7 @@ next: } } @@ -21,7 +21,7 @@ if (tb_band[NL80211_BAND_ATTR_RATES]) { printf("\t\tBitrates (non-HT):\n"); nla_for_each_nested(nl_rate, tb_band[NL80211_BAND_ATTR_RATES], rem_rate) { -@@ -214,6 +215,7 @@ next: +@@ -220,6 +221,7 @@ next: printf("\n"); } } @@ -29,7 +29,7 @@ } } -@@ -248,6 +250,7 @@ next: +@@ -254,6 +256,7 @@ next: printf("\tCoverage class: %d (up to %dm)\n", coverage, 450 * coverage); } @@ -37,7 +37,7 @@ if (tb_msg[NL80211_ATTR_CIPHER_SUITES]) { int num = nla_len(tb_msg[NL80211_ATTR_CIPHER_SUITES]) / sizeof(__u32); int i; -@@ -259,6 +262,7 @@ next: +@@ -265,6 +268,7 @@ next: cipher_name(ciphers[i])); } } @@ -45,7 +45,7 @@ if (tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX] && tb_msg[NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX]) -@@ -278,11 +282,13 @@ next: +@@ -284,11 +288,13 @@ next: printf("\t\t * %s\n", iftype_name(nla_type(nl_mode))); } @@ -59,7 +59,7 @@ if (tb_msg[NL80211_ATTR_INTERFACE_COMBINATIONS]) { struct nlattr *nl_combi; -@@ -379,6 +385,7 @@ broken_combination: +@@ -385,6 +391,7 @@ broken_combination: printf("\tinterface combinations are not supported\n"); } @@ -67,7 +67,7 @@ if (tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS]) { printf("\tSupported commands:\n"); nla_for_each_nested(nl_cmd, tb_msg[NL80211_ATTR_SUPPORTED_COMMANDS], rem_cmd) -@@ -471,6 +478,7 @@ broken_combination: +@@ -477,6 +484,7 @@ broken_combination: printf("\t\t * wake up on TCP connection\n"); } } @@ -75,7 +75,7 @@ if (tb_msg[NL80211_ATTR_ROAM_SUPPORT]) printf("\tDevice supports roaming.\n"); -@@ -507,6 +515,7 @@ broken_combination: +@@ -513,6 +521,7 @@ broken_combination: } } @@ -83,15 +83,15 @@ if (tb_msg[NL80211_ATTR_FEATURE_FLAGS]) { unsigned int features = nla_get_u32(tb_msg[NL80211_ATTR_FEATURE_FLAGS]); -@@ -527,6 +536,7 @@ broken_combination: +@@ -533,6 +542,7 @@ broken_combination: if (features & NL80211_FEATURE_AP_SCAN) printf("\tDevice supports AP scan.\n"); } +#endif - return NL_SKIP; - } -@@ -558,6 +568,7 @@ TOPLEVEL(list, NULL, NL80211_CMD_GET_WIP + if (tb_msg[NL80211_ATTR_TDLS_SUPPORT]) + printf("\tDevice supports T-DLS.\n"); +@@ -582,6 +592,7 @@ TOPLEVEL(list, NULL, NL80211_CMD_GET_WIP "List all wireless devices and their capabilities."); TOPLEVEL(phy, NULL, NL80211_CMD_GET_WIPHY, NLM_F_DUMP, CIB_NONE, handle_info, NULL); @@ -99,7 +99,7 @@ static int handle_commands(struct nl80211_state *state, struct nl_cb *cb, struct nl_msg *msg, int argc, char **argv, enum id_input id) -@@ -570,6 +581,7 @@ static int handle_commands(struct nl8021 +@@ -594,6 +605,7 @@ static int handle_commands(struct nl8021 } TOPLEVEL(commands, NULL, NL80211_CMD_GET_WIPHY, 0, CIB_NONE, handle_commands, "list all known commands and their decimal & hex value"); |