diff options
Diffstat (limited to 'package/network')
-rw-r--r-- | package/network/utils/iw/Makefile | 6 | ||||
-rw-r--r-- | package/network/utils/iw/patches/001-nl80211_h_sync.patch | 125 | ||||
-rw-r--r-- | package/network/utils/iw/patches/200-reduce_size.patch | 30 |
3 files changed, 43 insertions, 118 deletions
diff --git a/package/network/utils/iw/Makefile b/package/network/utils/iw/Makefile index ed2599342c..7abf93e01e 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:=5.3 -PKG_RELEASE:=2 +PKG_VERSION:=5.4 +PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE_URL:=@KERNEL/software/network/iw -PKG_HASH:=04afe857bc8dea67e461946de30ae1b012954b6965839c5c3fda7d0ed15505d5 +PKG_HASH:=a2469f677088d7b1070a7fbb28f3c747041697e8f6ec70783339cb1bc27a395f PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name> PKG_LICENSE:=GPL-2.0 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 97cf82793d..6b65f61846 100644 --- a/package/network/utils/iw/patches/001-nl80211_h_sync.patch +++ b/package/network/utils/iw/patches/001-nl80211_h_sync.patch @@ -1,116 +1,41 @@ --- a/nl80211.h +++ b/nl80211.h -@@ -52,6 +52,11 @@ - #define NL80211_MULTICAST_GROUP_NAN "nan" - #define NL80211_MULTICAST_GROUP_TESTMODE "testmode" - -+#define NL80211_EDMG_BW_CONFIG_MIN 4 -+#define NL80211_EDMG_BW_CONFIG_MAX 15 -+#define NL80211_EDMG_CHANNELS_MIN 1 -+#define NL80211_EDMG_CHANNELS_MAX 0x3c /* 0b00111100 */ -+ - /** - * DOC: Station handling +@@ -2373,6 +2373,9 @@ enum nl80211_commands { + * the allowed channel bandwidth configurations. (u8 attribute) + * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13. * -@@ -2361,6 +2366,16 @@ enum nl80211_commands { - * @NL80211_ATTR_HE_OBSS_PD: nested attribute for OBSS Packet Detection - * functionality. - * -+ * @NL80211_ATTR_WIPHY_EDMG_CHANNELS: bitmap that indicates the 2.16 GHz -+ * channel(s) that are allowed to be used for EDMG transmissions. -+ * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251. (u8 attribute) -+ * @NL80211_ATTR_WIPHY_EDMG_BW_CONFIG: Channel BW Configuration subfield encodes -+ * the allowed channel bandwidth configurations. (u8 attribute) -+ * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13. -+ * + * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce + * transmit power to stay within regulatory limits. u32, dBi. + * * @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NL80211_ATTR_MAX: highest attribute number currently defined * @__NL80211_ATTR_AFTER_LAST: internal use -@@ -2820,6 +2835,11 @@ enum nl80211_attrs { +@@ -2835,6 +2838,8 @@ enum nl80211_attrs { + NL80211_ATTR_WIPHY_EDMG_CHANNELS, + NL80211_ATTR_WIPHY_EDMG_BW_CONFIG, - NL80211_ATTR_HE_OBSS_PD, - -+ NL80211_ATTR_WIPHY_EDMG_CHANNELS, -+ NL80211_ATTR_WIPHY_EDMG_BW_CONFIG, -+ + NL80211_ATTR_WIPHY_ANTENNA_GAIN, + /* add attributes here, update the policy in nl80211.c */ __NL80211_ATTR_AFTER_LAST, -@@ -3201,6 +3221,8 @@ enum nl80211_sta_bss_param { - * sent to the station (u64, usec) - * @NL80211_STA_INFO_AIRTIME_WEIGHT: current airtime weight for station (u16) - * @NL80211_STA_INFO_AIRTIME_LINK_METRIC: airtime link metric for mesh station -+ * @NL80211_STA_INFO_ASSOC_AT_BOOTTIME: Timestamp (CLOCK_BOOTTIME, nanoseconds) -+ * of STA's association - * @__NL80211_STA_INFO_AFTER_LAST: internal - * @NL80211_STA_INFO_MAX: highest possible station info attribute - */ -@@ -3247,6 +3269,7 @@ enum nl80211_sta_info { - NL80211_STA_INFO_TX_DURATION, - NL80211_STA_INFO_AIRTIME_WEIGHT, - NL80211_STA_INFO_AIRTIME_LINK_METRIC, -+ NL80211_STA_INFO_ASSOC_AT_BOOTTIME, - - /* keep last */ - __NL80211_STA_INFO_AFTER_LAST, -@@ -3428,6 +3451,12 @@ enum nl80211_band_iftype_attr { - * @NL80211_BAND_ATTR_VHT_CAPA: VHT capabilities, as in the HT information IE - * @NL80211_BAND_ATTR_IFTYPE_DATA: nested array attribute, with each entry using - * attributes from &enum nl80211_band_iftype_attr -+ * @NL80211_BAND_ATTR_EDMG_CHANNELS: bitmap that indicates the 2.16 GHz -+ * channel(s) that are allowed to be used for EDMG transmissions. -+ * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251. -+ * @NL80211_BAND_ATTR_EDMG_BW_CONFIG: Channel BW Configuration subfield encodes -+ * the allowed channel bandwidth configurations. -+ * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13. - * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined - * @__NL80211_BAND_ATTR_AFTER_LAST: internal use - */ -@@ -3445,6 +3474,9 @@ enum nl80211_band_attr { - NL80211_BAND_ATTR_VHT_CAPA, - NL80211_BAND_ATTR_IFTYPE_DATA, - -+ NL80211_BAND_ATTR_EDMG_CHANNELS, -+ NL80211_BAND_ATTR_EDMG_BW_CONFIG, -+ - /* keep last */ - __NL80211_BAND_ATTR_AFTER_LAST, - NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1 -@@ -3843,6 +3875,8 @@ enum nl80211_user_reg_hint_type { - * @NL80211_SURVEY_INFO_TIME_SCAN: time the radio spent for scan - * (on this channel or globally) - * @NL80211_SURVEY_INFO_PAD: attribute used for padding for 64-bit alignment -+ * @NL80211_SURVEY_INFO_TIME_BSS_RX: amount of time the radio spent -+ * receiving frames destined to the local BSS - * @NL80211_SURVEY_INFO_MAX: highest survey info attribute number - * currently defined - * @__NL80211_SURVEY_INFO_AFTER_LAST: internal use -@@ -3859,6 +3893,7 @@ enum nl80211_survey_info { - NL80211_SURVEY_INFO_TIME_TX, - NL80211_SURVEY_INFO_TIME_SCAN, - NL80211_SURVEY_INFO_PAD, -+ NL80211_SURVEY_INFO_TIME_BSS_RX, - - /* keep last */ - __NL80211_SURVEY_INFO_AFTER_LAST, -@@ -4543,6 +4578,7 @@ enum nl80211_txrate_gi { - * @NL80211_BAND_2GHZ: 2.4 GHz ISM band - * @NL80211_BAND_5GHZ: around 5 GHz band (4.9 - 5.7 GHz) - * @NL80211_BAND_60GHZ: around 60 GHz band (58.32 - 69.12 GHz) -+ * @NL80211_BAND_6GHZ: around 6 GHz band (5.9 - 7.2 GHz) - * @NUM_NL80211_BANDS: number of bands, avoid using this in userspace - * since newer kernel versions may support more bands +@@ -5484,6 +5489,10 @@ enum nl80211_feature_flags { + * @NL80211_EXT_FEATURE_SAE_OFFLOAD: Device wants to do SAE authentication in + * station mode (SAE password is passed as part of the connect command). + * ++ * @NL80211_EXT_FEATURE_AQL: The driver supports the Airtime Queue Limit (AQL) ++ * feature, which prevents bufferbloat by using the expected transmission ++ * time to limit the amount of data buffered in the hardware. ++ * + * @NUM_NL80211_EXT_FEATURES: number of extended features. + * @MAX_NL80211_EXT_FEATURES: highest extended feature index. */ -@@ -4550,6 +4586,7 @@ enum nl80211_band { - NL80211_BAND_2GHZ, - NL80211_BAND_5GHZ, - NL80211_BAND_60GHZ, -+ NL80211_BAND_6GHZ, - - NUM_NL80211_BANDS, - }; +@@ -5529,6 +5538,8 @@ enum nl80211_ext_feature_index { + NL80211_EXT_FEATURE_EXT_KEY_ID, + NL80211_EXT_FEATURE_STA_TX_PWR, + NL80211_EXT_FEATURE_SAE_OFFLOAD, ++ NL80211_EXT_FEATURE_VLAN_OFFLOAD, ++ NL80211_EXT_FEATURE_AQL, + + /* add new features before the definition below */ + NUM_NL80211_EXT_FEATURES, diff --git a/package/network/utils/iw/patches/200-reduce_size.patch b/package/network/utils/iw/patches/200-reduce_size.patch index a6d1855771..58613d59a0 100644 --- a/package/network/utils/iw/patches/200-reduce_size.patch +++ b/package/network/utils/iw/patches/200-reduce_size.patch @@ -150,7 +150,7 @@ { --- a/scan.c +++ b/scan.c -@@ -1197,6 +1197,9 @@ static void print_ht_op(const uint8_t ty +@@ -1195,6 +1195,9 @@ static void print_ht_op(const uint8_t ty printf("\t\t * secondary channel offset: %s\n", ht_secondary_offset[data[1] & 0x3]); printf("\t\t * STA channel width: %s\n", sta_chan_width[(data[1] & 0x4)>>2]); @@ -160,7 +160,7 @@ printf("\t\t * RIFS: %d\n", (data[1] & 0x8)>>3); printf("\t\t * HT protection: %s\n", protection[data[2] & 0x3]); printf("\t\t * non-GF present: %d\n", (data[2] & 0x4) >> 2); -@@ -1524,6 +1527,14 @@ static void print_ie(const struct ie_pri +@@ -1522,6 +1525,14 @@ static void print_ie(const struct ie_pri static const struct ie_print ieprinters[] = { [0] = { "SSID", print_ssid, 0, 32, BIT(PRINT_SCAN) | BIT(PRINT_LINK), }, @@ -175,7 +175,7 @@ [1] = { "Supported rates", print_supprates, 0, 255, BIT(PRINT_SCAN), }, [3] = { "DS Parameter set", print_ds, 1, 1, BIT(PRINT_SCAN), }, [5] = { "TIM", print_tim, 4, 255, BIT(PRINT_SCAN), }, -@@ -1533,21 +1544,15 @@ static const struct ie_print ieprinters[ +@@ -1531,21 +1542,15 @@ static const struct ie_print ieprinters[ [32] = { "Power constraint", print_powerconstraint, 1, 1, BIT(PRINT_SCAN), }, [35] = { "TPC report", print_tpcreport, 2, 2, BIT(PRINT_SCAN), }, [42] = { "ERP", print_erp, 1, 255, BIT(PRINT_SCAN), }, @@ -198,7 +198,7 @@ }; static void print_wifi_wpa(const uint8_t type, uint8_t len, const uint8_t *data, -@@ -2026,6 +2031,7 @@ void print_ies(unsigned char *ie, int ie +@@ -2024,6 +2029,7 @@ void print_ies(unsigned char *ie, int ie ieprinters[ie[0]].flags & BIT(ptype)) { print_ie(&ieprinters[ie[0]], ie[0], ie[1], ie + 2, &ie_buffer); @@ -206,7 +206,7 @@ } else if (ie[0] == 221 /* vendor */) { print_vendor(ie[1], ie + 2, unknown, ptype); } else if (unknown) { -@@ -2035,6 +2041,7 @@ void print_ies(unsigned char *ie, int ie +@@ -2033,6 +2039,7 @@ void print_ies(unsigned char *ie, int ie for (i=0; i<ie[1]; i++) printf(" %.2x", ie[2+i]); printf("\n"); @@ -214,7 +214,7 @@ } ielen -= ie[1] + 2; ie += ie[1] + 2; -@@ -2075,6 +2082,7 @@ static void print_capa_non_dmg(__u16 cap +@@ -2073,6 +2080,7 @@ static void print_capa_non_dmg(__u16 cap printf(" ESS"); if (capa & WLAN_CAPABILITY_IBSS) printf(" IBSS"); @@ -222,7 +222,7 @@ if (capa & WLAN_CAPABILITY_CF_POLLABLE) printf(" CfPollable"); if (capa & WLAN_CAPABILITY_CF_POLL_REQUEST) -@@ -2103,6 +2111,7 @@ static void print_capa_non_dmg(__u16 cap +@@ -2101,6 +2109,7 @@ static void print_capa_non_dmg(__u16 cap printf(" DelayedBACK"); if (capa & WLAN_CAPABILITY_IMM_BACK) printf(" ImmediateBACK"); @@ -230,7 +230,7 @@ } static int print_bss_handler(struct nl_msg *msg, void *arg) -@@ -2187,8 +2196,10 @@ static int print_bss_handler(struct nl_m +@@ -2185,8 +2194,10 @@ static int print_bss_handler(struct nl_m if (bss[NL80211_BSS_FREQUENCY]) { int freq = nla_get_u32(bss[NL80211_BSS_FREQUENCY]); printf("\tfreq: %d\n", freq); @@ -241,7 +241,7 @@ } if (bss[NL80211_BSS_BEACON_INTERVAL]) printf("\tbeacon interval: %d TUs\n", -@@ -2382,6 +2393,7 @@ static int handle_stop_sched_scan(struct +@@ -2380,6 +2391,7 @@ static int handle_stop_sched_scan(struct return 0; } @@ -249,14 +249,14 @@ COMMAND(scan, sched_start, SCHED_SCAN_OPTIONS, NL80211_CMD_START_SCHED_SCAN, 0, CIB_NETDEV, handle_start_sched_scan, -@@ -2392,3 +2404,4 @@ COMMAND(scan, sched_start, +@@ -2390,3 +2402,4 @@ COMMAND(scan, sched_start, COMMAND(scan, sched_stop, "", NL80211_CMD_STOP_SCHED_SCAN, 0, CIB_NETDEV, handle_stop_sched_scan, "Stop an ongoing scheduled scan."); +#endif --- a/util.c +++ b/util.c -@@ -291,6 +291,7 @@ static const char *commands[NL80211_CMD_ +@@ -153,6 +153,7 @@ static const char *commands[NL80211_CMD_ static char cmdbuf[100]; @@ -264,7 +264,7 @@ const char *command_name(enum nl80211_commands cmd) { if (cmd <= NL80211_CMD_MAX && commands[cmd]) -@@ -298,6 +299,7 @@ const char *command_name(enum nl80211_co +@@ -160,6 +161,7 @@ const char *command_name(enum nl80211_co sprintf(cmdbuf, "Unknown command (%d)", cmd); return cmdbuf; } @@ -272,7 +272,7 @@ int ieee80211_channel_to_frequency(int chan, enum nl80211_band band) { -@@ -436,6 +438,9 @@ int parse_keys(struct nl_msg *msg, char +@@ -298,6 +300,9 @@ int parse_keys(struct nl_msg *msg, char char keybuf[13]; int pos = 0; @@ -299,7 +299,7 @@ ifeq ($(NO_PKG_CONFIG),) --- a/station.c +++ b/station.c -@@ -736,10 +736,12 @@ static int handle_station_set_plink(stru +@@ -759,10 +759,12 @@ static int handle_station_set_plink(stru nla_put_failure: return -ENOBUFS; } @@ -312,7 +312,7 @@ static int handle_station_set_vlan(struct nl80211_state *state, struct nl_msg *msg, -@@ -834,11 +836,13 @@ static int handle_station_set_mesh_power +@@ -857,11 +859,13 @@ static int handle_station_set_mesh_power nla_put_failure: return -ENOBUFS; } |