mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-23 15:32:33 +00:00
0a3ec87a66
Bump package to latest upstream Git HEAD which is commit dd2daf0848ed ("HE: Process HE 6 GHz band capab from associating HE STA"). Since last update there was 1238 commits done in the upstream tree with 618 files changed, 53399 insertions, 24928 deletions. I didn't bothered to rebase mesh patches as the changes seems not trivial and I don't have enough knowledge of those parts to do/test that properly, so someone else has to forward port them, ideally upstream them so we don't need to bother anymore. I've just deleted them for now: 004-mesh-use-setup-completion-callback-to-complete-mesh-.patch 005-mesh-update-ssid-frequency-as-pri-sec-channel-switch.patch 006-mesh-inform-kernel-driver-DFS-handler-in-userspace.patch 007-mesh-apply-channel-attributes-before-running-Mesh.patch 011-mesh-Allow-DFS-channels-to-be-selected-if-dfs-is-ena.patch 013-mesh-do-not-allow-pri-sec-channel-switch.patch 015-mesh-do-not-use-offchan-mgmt-tx-on-DFS.patch 016-mesh-fix-channel-switch-error-during-CAC.patch 018-mesh-make-forwarding-configurable.patch Refreshed all other patches, removed upstreamed patches: 051-wpa_supplicant-fix-race-condition-in-mesh-mpm-new-pe.patch 067-0001-AP-Silently-ignore-management-frame-from-unexpected-.patch 070-driver_nl80211-fix-WMM-queue-mapping-for-regulatory-.patch 071-driver_nl80211-fix-regulatory-limits-for-wmm-cwmin-c.patch 090-wolfssl-fix-crypto_bignum_sum.patch 091-0001-wolfssl-Fix-compiler-warnings-on-size_t-printf-forma.patch 091-0002-wolfssl-Fix-crypto_bignum_rand-implementation.patch 091-0003-wolfssl-Do-not-hardcode-include-directory-in-wpa_sup.patch 800-usleep.patch Tested-by: Stefan Lippers-Hollmann <s.l-h@gmx.de> [ipq8065/NBG6817; ipq40xx/MAP-AC2200] Signed-off-by: Petr Štetiar <ynezz@true.cz>
190 lines
4.5 KiB
Diff
190 lines
4.5 KiB
Diff
From 4bb69d15477e0f2b00e166845341dc933de47c58 Mon Sep 17 00:00:00 2001
|
|
From: Antonio Quartulli <ordex@autistici.org>
|
|
Date: Sun, 3 Jun 2012 18:22:56 +0200
|
|
Subject: [PATCHv2 601/602] wpa_supplicant: add new config params to be used
|
|
with the ibss join command
|
|
|
|
Signed-hostap: Antonio Quartulli <ordex@autistici.org>
|
|
---
|
|
src/drivers/driver.h | 6 +++
|
|
wpa_supplicant/config.c | 96 +++++++++++++++++++++++++++++++++++++++
|
|
wpa_supplicant/config_ssid.h | 6 +++
|
|
wpa_supplicant/wpa_supplicant.c | 23 +++++++---
|
|
4 files changed, 124 insertions(+), 7 deletions(-)
|
|
|
|
--- a/src/drivers/driver.h
|
|
+++ b/src/drivers/driver.h
|
|
@@ -19,6 +19,7 @@
|
|
|
|
#define WPA_SUPPLICANT_DRIVER_VERSION 4
|
|
|
|
+#include "ap/sta_info.h"
|
|
#include "common/defs.h"
|
|
#include "common/ieee802_11_defs.h"
|
|
#include "common/wpa_common.h"
|
|
@@ -850,6 +851,9 @@ struct wpa_driver_associate_params {
|
|
* responsible for selecting with which BSS to associate. */
|
|
const u8 *bssid;
|
|
|
|
+ unsigned char rates[WLAN_SUPP_RATES_MAX];
|
|
+ int mcast_rate;
|
|
+
|
|
/**
|
|
* bssid_hint - BSSID of a proposed AP
|
|
*
|
|
--- a/wpa_supplicant/config.c
|
|
+++ b/wpa_supplicant/config.c
|
|
@@ -18,6 +18,7 @@
|
|
#include "eap_peer/eap.h"
|
|
#include "p2p/p2p.h"
|
|
#include "fst/fst.h"
|
|
+#include "ap/sta_info.h"
|
|
#include "config.h"
|
|
|
|
|
|
@@ -2269,6 +2270,97 @@ static char * wpa_config_write_peerkey(c
|
|
#endif /* NO_CONFIG_WRITE */
|
|
|
|
|
|
+static int wpa_config_parse_mcast_rate(const struct parse_data *data,
|
|
+ struct wpa_ssid *ssid, int line,
|
|
+ const char *value)
|
|
+{
|
|
+ ssid->mcast_rate = (int)(strtod(value, NULL) * 10);
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+#ifndef NO_CONFIG_WRITE
|
|
+static char * wpa_config_write_mcast_rate(const struct parse_data *data,
|
|
+ struct wpa_ssid *ssid)
|
|
+{
|
|
+ char *value;
|
|
+ int res;
|
|
+
|
|
+ if (!ssid->mcast_rate == 0)
|
|
+ return NULL;
|
|
+
|
|
+ value = os_malloc(6); /* longest: 300.0 */
|
|
+ if (value == NULL)
|
|
+ return NULL;
|
|
+ res = os_snprintf(value, 5, "%.1f", (double)ssid->mcast_rate / 10);
|
|
+ if (res < 0) {
|
|
+ os_free(value);
|
|
+ return NULL;
|
|
+ }
|
|
+ return value;
|
|
+}
|
|
+#endif /* NO_CONFIG_WRITE */
|
|
+
|
|
+static int wpa_config_parse_rates(const struct parse_data *data,
|
|
+ struct wpa_ssid *ssid, int line,
|
|
+ const char *value)
|
|
+{
|
|
+ int i;
|
|
+ char *pos, *r, *sptr, *end;
|
|
+ double rate;
|
|
+
|
|
+ pos = (char *)value;
|
|
+ r = strtok_r(pos, ",", &sptr);
|
|
+ i = 0;
|
|
+ while (pos && i < WLAN_SUPP_RATES_MAX) {
|
|
+ rate = 0.0;
|
|
+ if (r)
|
|
+ rate = strtod(r, &end);
|
|
+ ssid->rates[i] = rate * 2;
|
|
+ if (*end != '\0' || rate * 2 != ssid->rates[i])
|
|
+ return 1;
|
|
+
|
|
+ i++;
|
|
+ r = strtok_r(NULL, ",", &sptr);
|
|
+ }
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+#ifndef NO_CONFIG_WRITE
|
|
+static char * wpa_config_write_rates(const struct parse_data *data,
|
|
+ struct wpa_ssid *ssid)
|
|
+{
|
|
+ char *value, *pos;
|
|
+ int res, i;
|
|
+
|
|
+ if (ssid->rates[0] <= 0)
|
|
+ return NULL;
|
|
+
|
|
+ value = os_malloc(6 * WLAN_SUPP_RATES_MAX + 1);
|
|
+ if (value == NULL)
|
|
+ return NULL;
|
|
+ pos = value;
|
|
+ for (i = 0; i < WLAN_SUPP_RATES_MAX - 1; i++) {
|
|
+ res = os_snprintf(pos, 6, "%.1f,", (double)ssid->rates[i] / 2);
|
|
+ if (res < 0) {
|
|
+ os_free(value);
|
|
+ return NULL;
|
|
+ }
|
|
+ pos += res;
|
|
+ }
|
|
+ res = os_snprintf(pos, 6, "%.1f",
|
|
+ (double)ssid->rates[WLAN_SUPP_RATES_MAX - 1] / 2);
|
|
+ if (res < 0) {
|
|
+ os_free(value);
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ value[6 * WLAN_SUPP_RATES_MAX] = '\0';
|
|
+ return value;
|
|
+}
|
|
+#endif /* NO_CONFIG_WRITE */
|
|
+
|
|
/* Helper macros for network block parser */
|
|
|
|
#ifdef OFFSET
|
|
@@ -2551,6 +2643,8 @@ static const struct parse_data ssid_fiel
|
|
{ INT(ap_max_inactivity) },
|
|
{ INT(dtim_period) },
|
|
{ INT(beacon_int) },
|
|
+ { FUNC(rates) },
|
|
+ { FUNC(mcast_rate) },
|
|
#ifdef CONFIG_MACSEC
|
|
{ INT_RANGE(macsec_policy, 0, 1) },
|
|
{ INT_RANGE(macsec_integ_only, 0, 1) },
|
|
--- a/wpa_supplicant/config_ssid.h
|
|
+++ b/wpa_supplicant/config_ssid.h
|
|
@@ -10,8 +10,10 @@
|
|
#define CONFIG_SSID_H
|
|
|
|
#include "common/defs.h"
|
|
+#include "ap/sta_info.h"
|
|
#include "utils/list.h"
|
|
#include "eap_peer/eap_config.h"
|
|
+#include "drivers/nl80211_copy.h"
|
|
|
|
|
|
#define DEFAULT_EAP_WORKAROUND ((unsigned int) -1)
|
|
@@ -832,6 +834,9 @@ struct wpa_ssid {
|
|
*/
|
|
void *parent_cred;
|
|
|
|
+ unsigned char rates[WLAN_SUPP_RATES_MAX];
|
|
+ double mcast_rate;
|
|
+
|
|
#ifdef CONFIG_MACSEC
|
|
/**
|
|
* macsec_policy - Determines the policy for MACsec secure session
|
|
--- a/wpa_supplicant/wpa_supplicant.c
|
|
+++ b/wpa_supplicant/wpa_supplicant.c
|
|
@@ -3615,6 +3615,12 @@ static void wpas_start_assoc_cb(struct w
|
|
params.beacon_int = ssid->beacon_int;
|
|
else
|
|
params.beacon_int = wpa_s->conf->beacon_int;
|
|
+ int i = 0;
|
|
+ while (i < WLAN_SUPP_RATES_MAX) {
|
|
+ params.rates[i] = ssid->rates[i];
|
|
+ i++;
|
|
+ }
|
|
+ params.mcast_rate = ssid->mcast_rate;
|
|
}
|
|
|
|
if (bss && ssid->enable_edmg)
|