diff --git a/repos/dde_linux/lib/mk/wpa_supplicant.mk b/repos/dde_linux/lib/mk/wpa_supplicant.mk index 3fe6593f26..a7352ccf73 100644 --- a/repos/dde_linux/lib/mk/wpa_supplicant.mk +++ b/repos/dde_linux/lib/mk/wpa_supplicant.mk @@ -31,6 +31,7 @@ SRC_C_wpa_supplicant = bssid_ignore.c \ scan.c \ sme.c \ wmm_ac.c \ + wnm_sta.c \ wpa_supplicant.c \ wpas_glue.c # @@ -45,7 +46,7 @@ CC_OPT += -DCONFIG_BACKEND_FILE -DCONFIG_NO_CONFIG_WRITE \ -DCONFIG_SME -DCONFIG_CTRL_IFACE \ -DCONFIG_BGSCAN -DCONFIG_BGSCAN_SIMPLE \ -DCONFIG_OPENSSL_CMAC -DCONFIG_SHA256 \ - -DCONFIG_SAE -DCONFIG_ECC + -DCONFIG_SAE -DCONFIG_ECC -DCONFIG_WNM CC_OPT += -DTLS_DEFAULT_CIPHERS=\"DEFAULT:!EXP:!LOW\" @@ -53,7 +54,7 @@ INC_DIR += $(WS_CONTRIB_DIR)/src/ # common SRC_C_common = ieee802_11_common.c wpa_common.c hw_features_common.c \ - ctrl_iface_common.c sae.c dragonfly.c + ctrl_iface_common.c sae.c dragonfly.c ptksa_cache.c SRC_C += $(addprefix src/common/, $(SRC_C_common)) INC_DIR += $(WS_CONTRIB_DIR)/src/common diff --git a/repos/dde_linux/patches/wpa_supplicant.patch b/repos/dde_linux/patches/wpa_supplicant.patch index 1c1cc99cab..814ee9a879 100644 --- a/repos/dde_linux/patches/wpa_supplicant.patch +++ b/repos/dde_linux/patches/wpa_supplicant.patch @@ -1,8 +1,38 @@ -diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c -index aec179a..6c07c73 100644 +The nl80211 driver patch contains the following changes: + +- Convert inline error values from Linux to libc (FreeBSD) as otherwise + wpa_supplicant might come to the wrong conclusions. + +- Show RFKILL operations at INFO level (so that the always appear in the + log) and generate a interface dis-/enable event that will be handled + by the management layer. + +- Remove netlink messages that rely on newer libnl versions, e.g. signed + value where introduced in 3.2.27. + +- Hardcode the I/O control socket rather than calling socket because it + is not used anyway (see wpa_driver_nl80211/ioctl.cc). --- a/src/drivers/driver_nl80211.c -+++ b/src/drivers/driver_nl80211.c -@@ -1985,13 +1985,13 @@ static void wpa_driver_nl80211_rfkill_blocked(void *ctx) ++++ a/src/drivers/driver_nl80211.c +@@ -487,6 +487,8 @@ + } + + ++extern int convert_errno_from_linux(int linux_errno); ++ + int send_and_recv(struct nl80211_global *global, + struct nl_sock *nl_handle, struct nl_msg *msg, + int (*valid_handler)(struct nl_msg *, void *), +@@ -579,7 +581,7 @@ + /* Always clear the message as it can potentially contain keys */ + nl80211_nlmsg_clear(msg); + nlmsg_free(msg); +- return err.err; ++ return convert_errno_from_linux(err.err); + } + + +@@ -2088,13 +2090,13 @@ { struct wpa_driver_nl80211_data *drv = ctx; @@ -18,7 +48,7 @@ index aec179a..6c07c73 100644 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_DISABLED, NULL); } -@@ -1999,7 +1999,7 @@ static void wpa_driver_nl80211_rfkill_blocked(void *ctx) +@@ -2102,7 +2104,7 @@ static void wpa_driver_nl80211_rfkill_unblocked(void *ctx) { struct wpa_driver_nl80211_data *drv = ctx; @@ -27,7 +57,7 @@ index aec179a..6c07c73 100644 if (i802_set_iface_flags(drv->first_bss, 1)) { wpa_printf(MSG_DEBUG, "nl80211: Could not set interface UP " "after rfkill unblock"); -@@ -2013,7 +2013,7 @@ static void wpa_driver_nl80211_rfkill_unblocked(void *ctx) +@@ -2116,7 +2118,7 @@ * rtnetlink ifup handler will report interfaces other than the P2P * Device interface as enabled. */ @@ -36,7 +66,29 @@ index aec179a..6c07c73 100644 wpa_supplicant_event(drv->ctx, EVENT_INTERFACE_ENABLED, NULL); } -@@ -8709,7 +8709,7 @@ static void * nl80211_global_init(void *ctx) +@@ -7826,7 +7828,7 @@ + [NL80211_STA_INFO_BEACON_SIGNAL_AVG] = { .type = NLA_U8}, + [NL80211_STA_INFO_RX_DURATION] = { .type = NLA_U64 }, + [NL80211_STA_INFO_ACK_SIGNAL] = { .type = NLA_U8 }, +- [NL80211_STA_INFO_ACK_SIGNAL_AVG] = { .type = NLA_S8 }, ++ [NL80211_STA_INFO_ACK_SIGNAL_AVG] = { .type = NLA_U8 }, + [NL80211_STA_INFO_RX_MPDUS] = { .type = NLA_U32 }, + [NL80211_STA_INFO_FCS_ERROR_COUNT] = { .type = NLA_U32 }, + [NL80211_STA_INFO_TX_DURATION] = { .type = NLA_U64 }, +@@ -7930,9 +7932,9 @@ + nla_get_u8(stats[NL80211_STA_INFO_ACK_SIGNAL]); + data->flags |= STA_DRV_DATA_LAST_ACK_RSSI; + } +- if (stats[NL80211_STA_INFO_ACK_SIGNAL_AVG]) +- data->avg_ack_signal = +- nla_get_s8(stats[NL80211_STA_INFO_ACK_SIGNAL_AVG]); ++ // if (stats[NL80211_STA_INFO_ACK_SIGNAL_AVG]) ++ // data->avg_ack_signal = ++ // nla_get_s8(stats[NL80211_STA_INFO_ACK_SIGNAL_AVG]); + if (stats[NL80211_STA_INFO_RX_MPDUS]) + data->rx_mpdus = nla_get_u32(stats[NL80211_STA_INFO_RX_MPDUS]); + if (stats[NL80211_STA_INFO_FCS_ERROR_COUNT]) +@@ -9939,7 +9941,7 @@ if (wpa_driver_nl80211_init_nl_global(global) < 0) goto err; diff --git a/repos/dde_linux/ports/wpa_supplicant.hash b/repos/dde_linux/ports/wpa_supplicant.hash index 8eb5196c87..6c08e34884 100644 --- a/repos/dde_linux/ports/wpa_supplicant.hash +++ b/repos/dde_linux/ports/wpa_supplicant.hash @@ -1 +1 @@ -6242912dd6f6c22550a7fe0b443bfd80c5cfedae +aa7af61abdac82e5a783d8371be9cb8d1a41fceb diff --git a/repos/dde_linux/ports/wpa_supplicant.port b/repos/dde_linux/ports/wpa_supplicant.port index 6fb96266d0..eb4da6d1af 100644 --- a/repos/dde_linux/ports/wpa_supplicant.port +++ b/repos/dde_linux/ports/wpa_supplicant.port @@ -1,12 +1,12 @@ LICENSE := BSD-3-Clause -VERSION := 2.10 +VERSION := 2.11 DOWNLOADS := wpa_supplicant.archive # # wpa_supplicant sources # -URL(wpa_supplicant) := https://w1.fi/releases/wpa_supplicant-2.10.tar.gz -SHA(wpa_supplicant) := 20df7ae5154b3830355f8ab4269123a87affdea59fe74fe9292a91d0d7e17b2f +URL(wpa_supplicant) := https://w1.fi/releases/wpa_supplicant-2.11.tar.gz +SHA(wpa_supplicant) := 912ea06f74e30a8e36fbb68064d6cdff218d8d591db0fc5d75dee6c81ac7fc0a DIR(wpa_supplicant) := src/app/wpa_supplicant # diff --git a/repos/dde_linux/src/lib/wpa_supplicant/symbol.map b/repos/dde_linux/src/lib/wpa_supplicant/symbol.map index 9110d727b2..2e8f244a66 100644 --- a/repos/dde_linux/src/lib/wpa_supplicant/symbol.map +++ b/repos/dde_linux/src/lib/wpa_supplicant/symbol.map @@ -11,17 +11,22 @@ /* needed by wpa_driver_nl80211 */ __hide_aliasing_typecast; + channel_width_to_int; eloop_*; + fc2str*; get_hdr_bssid; + get_ie*; + get_ml_ie; ieee80211_freq_to_chan; ieee80211_radiotap_*; + ieee802_11_defrag; + ieee802_11_parse_elems; + is_6ghz_freq; + is_same_band; os_*; + sha1_vector*; wpa_*; wpabuf_*; - sha1_vector*; - get_ie*; - fc2str*; - is_6ghz_freq; local: