[][MAC80211][WiFi6/7][Misc][Fix STA group_cipher get non-initailized value]

[Description]
Fix STA group_cipher get non-initailized value from AP.
This may also occur when multiple bss with different group_cipher setting.

[Release-log]
N/A

Change-Id: Ieaa24774db113b879b5218a8858a3eaa6e6d8c9c
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/8160779
diff --git a/autobuild_mac80211_release/0001-wifi7-mac80211-generate-hostapd-setting-from-ap-cap.patch b/autobuild_mac80211_release/0001-wifi7-mac80211-generate-hostapd-setting-from-ap-cap.patch
index d599457..8238553 100644
--- a/autobuild_mac80211_release/0001-wifi7-mac80211-generate-hostapd-setting-from-ap-cap.patch
+++ b/autobuild_mac80211_release/0001-wifi7-mac80211-generate-hostapd-setting-from-ap-cap.patch
@@ -1,5 +1,5 @@
 diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
-index c9e2a37..3cac683 100644
+index c9e2a37f..3cac683d 100644
 --- a/package/kernel/mac80211/Makefile
 +++ b/package/kernel/mac80211/Makefile
 @@ -20,6 +20,7 @@ PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
@@ -30,7 +30,7 @@
  		$(PKG_BUILD_DIR)/include/linux/ssb \
  		$(PKG_BUILD_DIR)/include/linux/bcma \
 diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
-index 8606093..e1091df 100644
+index 86060930..e1091df3 100644
 --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
 +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
 @@ -25,10 +25,12 @@ drv_mac80211_init_device_config() {
@@ -530,7 +530,7 @@
  
  	json_set_namespace wdev_uc prev
 diff --git a/package/kernel/mac80211/files/lib/wifi/mac80211.sh b/package/kernel/mac80211/files/lib/wifi/mac80211.sh
-index e24a2a6..da3ee8c 100644
+index e24a2a63..da3ee8cc 100644
 --- a/package/kernel/mac80211/files/lib/wifi/mac80211.sh
 +++ b/package/kernel/mac80211/files/lib/wifi/mac80211.sh
 @@ -60,6 +60,9 @@ BEGIN {
@@ -685,7 +685,7 @@
  	done
  }
 diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh
-index 271c1f7..4482c17 100644
+index 271c1f7b..c668e822 100644
 --- a/package/network/services/hostapd/files/hostapd.sh
 +++ b/package/network/services/hostapd/files/hostapd.sh
 @@ -60,7 +60,14 @@ hostapd_append_wpa_key_mgmt() {
@@ -772,12 +772,13 @@
  
  	set_default fils 0
  	set_default isolate 0
-@@ -796,6 +825,35 @@ hostapd_set_bss_options() {
+@@ -796,6 +825,36 @@ hostapd_set_bss_options() {
  	local auth_algs="$((($auth_mode_shared << 1) | $auth_mode_open))"
  	append bss_conf "auth_algs=${auth_algs:-1}" "$N"
  	append bss_conf "wpa=$wpa" "$N"
 +
 +	json_get_values pairwise pairwise
++	json_get_vars group_cipher
 +	if [ -n "$pairwise" ]; then
 +		case "$pairwise" in
 +			*tkip+aes|*tkip+ccmp|*aes+tkip|*ccmp+tkip)
@@ -808,7 +809,7 @@
  	[ -n "$wpa_pairwise" ] && append bss_conf "wpa_pairwise=$wpa_pairwise" "$N"
  
  	set_default wps_pushbutton 0
-@@ -847,7 +905,7 @@ hostapd_set_bss_options() {
+@@ -847,7 +906,7 @@ hostapd_set_bss_options() {
  	}
  
  	append bss_conf "ssid=$ssid" "$N"
@@ -817,7 +818,7 @@
  	[ -n "$network_ifname" ] && append bss_conf "snoop_iface=$network_ifname" "$N"
  	[ -n "$iapp_interface" ] && {
  		local ifname
-@@ -962,6 +1020,8 @@ hostapd_set_bss_options() {
+@@ -962,6 +1021,8 @@ hostapd_set_bss_options() {
  	fi
  
  	if [ "$wpa" -ge "2" ]; then
@@ -826,7 +827,7 @@
  		if [ -n "$network_bridge" -a "$rsn_preauth" = 1 ]; then
  			set_default auth_cache 1
  			append bss_conf "rsn_preauth=1" "$N"
-@@ -980,17 +1040,42 @@ hostapd_set_bss_options() {
+@@ -980,17 +1041,42 @@ hostapd_set_bss_options() {
  		append bss_conf "okc=$auth_cache" "$N"
  		[ "$auth_cache" = 0 -a "$fils" = 0 ] && append bss_conf "disable_pmksa_caching=1" "$N"
  
@@ -870,7 +871,7 @@
  					[ -n "$ieee80211w_max_timeout" ] && \
  						append bss_conf "assoc_sa_query_max_timeout=$ieee80211w_max_timeout" "$N"
  					[ -n "$ieee80211w_retry_timeout" ] && \
-@@ -1055,9 +1140,10 @@ hostapd_set_bss_options() {
+@@ -1055,9 +1141,10 @@ hostapd_set_bss_options() {
  	json_get_vars iw_roaming_consortium iw_domain_name iw_anqp_3gpp_cell_net iw_nai_realm
  	json_get_vars iw_anqp_elem iw_qos_map_set iw_ipaddr_type_availability iw_gas_address3
  	json_get_vars iw_venue_name iw_venue_url
@@ -882,7 +883,7 @@
  		append bss_conf "interworking=1" "$N"
  		set_default iw_internet 1
  		set_default iw_asra 0
-@@ -1164,6 +1250,22 @@ hostapd_set_bss_options() {
+@@ -1164,6 +1251,22 @@ hostapd_set_bss_options() {
  		append bss_conf "$val" "$N"
  	done
  
@@ -905,7 +906,7 @@
  	append "$var" "$bss_conf" "$N"
  	return 0
  }
-@@ -1251,6 +1353,7 @@ wpa_supplicant_prepare_interface() {
+@@ -1251,6 +1354,7 @@ wpa_supplicant_prepare_interface() {
  		country_str="country=$country"
  	}
  
@@ -913,7 +914,7 @@
  	multiap_flag_file="${_config}.is_multiap"
  	if [ "$multi_ap" = "1" ]; then
  		touch "$multiap_flag_file"
-@@ -1262,6 +1365,7 @@ wpa_supplicant_prepare_interface() {
+@@ -1262,6 +1366,7 @@ wpa_supplicant_prepare_interface() {
  ${scan_list:+freq_list=$scan_list}
  $ap_scan
  $country_str
@@ -921,7 +922,7 @@
  EOF
  	return 0
  }
-@@ -1533,12 +1637,38 @@ wpa_supplicant_add_network() {
+@@ -1533,12 +1638,39 @@ wpa_supplicant_add_network() {
  		;;
  	esac
  
@@ -930,6 +931,7 @@
 -		append network_data "group=GCMP" "$N$T"
 -	}
 +	json_get_values pairwise pairwise
++	json_get_vars group_cipher
 +	if [ -n "$pairwise" ]; then
 +		case "$pairwise" in
 +			*tkip+aes|*tkip+ccmp|*aes+tkip|*ccmp+tkip)
@@ -964,7 +966,7 @@
  		case "$wpa" in
  			1)
  				append network_data "proto=WPA" "$N$T"
-@@ -1548,12 +1678,48 @@ wpa_supplicant_add_network() {
+@@ -1548,12 +1680,48 @@ wpa_supplicant_add_network() {
  			;;
  		esac
  
@@ -1014,7 +1016,7 @@
  	[ -n "$bssid" ] && append network_data "bssid=$bssid" "$N$T"
  	[ -n "$beacon_int" ] && append network_data "beacon_int=$beacon_int" "$N$T"
  
-@@ -1564,6 +1730,20 @@ wpa_supplicant_add_network() {
+@@ -1564,6 +1732,20 @@ wpa_supplicant_add_network() {
  	[ -n "$bssid_blacklist" ] && append network_data "bssid_blacklist=$bssid_blacklist" "$N$T"
  	[ -n "$bssid_whitelist" ] && append network_data "bssid_whitelist=$bssid_whitelist" "$N$T"
  
@@ -1035,7 +1037,7 @@
  	[ -n "$basic_rate" ] && {
  		local br rate_list=
  		for br in $basic_rate; do
-@@ -1578,6 +1758,11 @@ wpa_supplicant_add_network() {
+@@ -1578,6 +1760,11 @@ wpa_supplicant_add_network() {
  		append network_data "mcast_rate=$mc_rate" "$N$T"
  	}