mirror of
				https://github.com/Telecominfraproject/wlan-ap.git
				synced 2025-10-30 18:07:52 +00:00 
			
		
		
		
	ucentral: development update
* more mac80211/hapd script improvements * more led blink/off commands * update ucentral-schema * further improvement on maverick * various ipq807x led improvements Signed-off-by: John Crispin <john@phrozen.org>
This commit is contained in:
		| @@ -1,7 +1,7 @@ | ||||
| From 8cbdd62c20daadf82ac2058a85523bb7454f390b Mon Sep 17 00:00:00 2001 | ||||
| From 943d9c1ac5834d572273eef7db8fcec474943e91 Mon Sep 17 00:00:00 2001 | ||||
| From: John Crispin <john@phrozen.org> | ||||
| Date: Thu, 27 May 2021 13:25:03 +0200 | ||||
| Subject: [PATCH 01/36] mac80211: update to latest HEAD | ||||
| Subject: [PATCH 02/36] mac80211: update to latest HEAD | ||||
|  | ||||
| Signed-off-by: John Crispin <john@phrozen.org> | ||||
| --- | ||||
| @@ -9,7 +9,7 @@ Signed-off-by: John Crispin <john@phrozen.org> | ||||
|  package/kernel/mac80211/ath.mk                |  13 +- | ||||
|  package/kernel/mac80211/broadcom.mk           |   4 +- | ||||
|  .../mac80211/files/lib/netifd/mac80211.sh     |  36 - | ||||
|  .../files/lib/netifd/wireless/mac80211.sh     | 200 +++-- | ||||
|  .../files/lib/netifd/wireless/mac80211.sh     | 179 ++++- | ||||
|  .../mac80211/files/lib/wifi/mac80211.sh       | 110 ++- | ||||
|  package/kernel/mac80211/mac80211.sh.diff      |  58 ++ | ||||
|  .../patches/ath/402-ath_regd_optional.patch   |   2 +- | ||||
| @@ -87,7 +87,7 @@ Signed-off-by: John Crispin <john@phrozen.org> | ||||
|  ...11-minstrel_ht-fix-sample-time-check.patch |  23 + | ||||
|  ...iwlwifi-specific-workaround-that-bro.patch |  51 ++ | ||||
|  .../500-mac80211_configure_antenna_gain.patch |  24 +- | ||||
|  82 files changed, 1547 insertions(+), 1358 deletions(-) | ||||
|  82 files changed, 1546 insertions(+), 1338 deletions(-) | ||||
|  delete mode 100644 package/kernel/mac80211/files/lib/netifd/mac80211.sh | ||||
|  create mode 100644 package/kernel/mac80211/mac80211.sh.diff | ||||
|  delete mode 100644 package/kernel/mac80211/patches/ath/560-ath9k-fix-transmitting-to-stations-in-dynamic-SMPS-m.patch | ||||
| @@ -352,7 +352,7 @@ index 92e5c0e395..0000000000 | ||||
| -	done | ||||
| -} | ||||
| diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh | ||||
| index 92c56afd24..d92f6605de 100644 | ||||
| index 92c56afd24..0b7a84d7c9 100644 | ||||
| --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh | ||||
| +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh | ||||
| @@ -1,7 +1,6 @@ | ||||
| @@ -608,7 +608,7 @@ index 92c56afd24..d92f6605de 100644 | ||||
|  				mac80211_setup_supplicant_noctl $vif_enable || failed=1 | ||||
|  			else | ||||
|  				mac80211_setup_adhoc $vif_enable | ||||
| @@ -849,9 +943,29 @@ mac80211_setup_vif() { | ||||
| @@ -849,10 +943,30 @@ mac80211_setup_vif() { | ||||
|   | ||||
|  get_freq() { | ||||
|  	local phy="$1" | ||||
| @@ -628,33 +628,33 @@ index 92c56afd24..d92f6605de 100644 | ||||
| + | ||||
| +$1 ~ /Band/ { | ||||
| +	band_match = band == $2 | ||||
| +} | ||||
| + | ||||
|  } | ||||
|   | ||||
| +band_match && $3 == "MHz" && $4 == channel { | ||||
| +	print $2 | ||||
| +	exit | ||||
|  } | ||||
| +} | ||||
| +' | ||||
| +} | ||||
| + | ||||
|   | ||||
| + | ||||
|  chan_is_dfs() { | ||||
|  	local phy="$1" | ||||
| @@ -921,13 +1035,6 @@ drv_mac80211_setup() { | ||||
|  	local found | ||||
|  	local chan="$2" | ||||
| @@ -907,10 +1021,8 @@ drv_mac80211_setup() { | ||||
|  		return 1 | ||||
|  	} | ||||
|   | ||||
|  	for wdev in $(list_phy_interfaces "$phy"); do | ||||
| -		found=0 | ||||
| -		for cwdev in $OLDAPLIST $OLDSPLIST $OLDUMLIST; do | ||||
| -			if [ "$wdev" = "$cwdev" ]; then | ||||
| -				found=1 | ||||
| -				break | ||||
| -			fi | ||||
| -		done | ||||
|  		if [ "$found" = "0" ]; then | ||||
|  			ip link set dev "$wdev" down | ||||
|  			iw dev "$wdev" del | ||||
| @@ -935,7 +1042,7 @@ drv_mac80211_setup() { | ||||
| -	[ -z "$(uci -q -P /var/state show wireless._${phy})" ] && { | ||||
| -		uci -q -P /var/state set wireless._${phy}=phy | ||||
| -		wireless_set_data phy="$phy" | ||||
| -	} | ||||
| +	wireless_set_data phy="$phy" | ||||
| +	[ -z "$(uci -q -P /var/state show wireless._${phy})" ] && uci -q -P /var/state set wireless._${phy}=phy | ||||
|   | ||||
|  	OLDAPLIST=$(uci -q -P /var/state get wireless._${phy}.aplist) | ||||
|  	OLDSPLIST=$(uci -q -P /var/state get wireless._${phy}.splist) | ||||
| @@ -935,7 +1047,7 @@ drv_mac80211_setup() { | ||||
|  	done | ||||
|   | ||||
|  	# convert channel to frequency | ||||
| @@ -663,48 +663,25 @@ index 92c56afd24..d92f6605de 100644 | ||||
|   | ||||
|  	[ -n "$country" ] && { | ||||
|  		iw reg get | grep -q "^country $country:" || { | ||||
| @@ -992,33 +1099,24 @@ drv_mac80211_setup() { | ||||
|  	for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif | ||||
|  	NEWAPLIST= | ||||
|  	for_each_interface "ap" mac80211_prepare_vif | ||||
| -	NEW_MD5=$(test -e "${hostapd_conf_file}" && md5sum ${hostapd_conf_file}) | ||||
| -	OLD_MD5=$(uci -q -P /var/state get wireless._${phy}.md5) | ||||
| -	if [ "${NEWAPLIST}" != "${OLDAPLIST}" ]; then | ||||
| -		mac80211_vap_cleanup hostapd "${OLDAPLIST}" | ||||
| -	fi | ||||
| +	mac80211_vap_cleanup hostapd "${OLDAPLIST}" | ||||
|  	[ -n "${NEWAPLIST}" ] && mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap | ||||
|  	local add_ap=0 | ||||
|  	local primary_ap=${NEWAPLIST%% *} | ||||
| @@ -1003,6 +1115,7 @@ drv_mac80211_setup() { | ||||
|  	[ -n "$hostapd_ctrl" ] && { | ||||
|  		local no_reload=1 | ||||
|  		if [ -n "$(ubus list | grep hostapd.$primary_ap)" ]; then | ||||
| -			[ "${NEW_MD5}" = "${OLD_MD5}" ] || { | ||||
| -				ubus call hostapd.$primary_ap reload | ||||
| -				no_reload=$? | ||||
| -				if [ "$no_reload" != "0" ]; then | ||||
| -					mac80211_vap_cleanup hostapd "${OLDAPLIST}" | ||||
| -					mac80211_vap_cleanup wpa_supplicant "$(uci -q -P /var/state get wireless._${phy}.splist)" | ||||
| -					mac80211_vap_cleanup none "$(uci -q -P /var/state get wireless._${phy}.umlist)" | ||||
| -					sleep 2 | ||||
| -					mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap | ||||
| -					for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif | ||||
| -				fi | ||||
| -			} | ||||
| +			mac80211_vap_cleanup hostapd "${OLDAPLIST}" | ||||
| +			mac80211_vap_cleanup wpa_supplicant "$(uci -q -P /var/state get wireless._${phy}.splist)" | ||||
| +			mac80211_vap_cleanup none "$(uci -q -P /var/state get wireless._${phy}.umlist)" | ||||
| +			sleep 2 | ||||
| +			mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap | ||||
| +			for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif | ||||
|  		fi | ||||
|  		if [ "$no_reload" != "0" ]; then | ||||
|  			add_ap=1 | ||||
|  			ubus wait_for hostapd | ||||
| +			ip link set $primary_ap down | ||||
|  			local hostapd_res="$(ubus call hostapd config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}")" | ||||
|  			ret="$?" | ||||
|  			[ "$ret" != 0 -o -z "$hostapd_res" ] && { | ||||
| +			no_reload=0 | ||||
|  			[ "${NEW_MD5}" = "${OLD_MD5}" ] || { | ||||
|  				ubus call hostapd.$primary_ap reload | ||||
|  				no_reload=$? | ||||
| @@ -1077,6 +1190,10 @@ drv_mac80211_teardown() { | ||||
|  	json_select data | ||||
|  	json_get_vars phy | ||||
|  	json_select .. | ||||
| +	[ -n "$phy" ] || { | ||||
| +		echo "Bug: PHY is undefined for device '$1'" | ||||
| +		return 1 | ||||
| +	} | ||||
|   | ||||
|  	mac80211_interface_cleanup "$phy" | ||||
|  	uci -q -P /var/state revert wireless._${phy} | ||||
| diff --git a/package/kernel/mac80211/files/lib/wifi/mac80211.sh b/package/kernel/mac80211/files/lib/wifi/mac80211.sh | ||||
| index 3e99f06693..6aa46b0c74 100644 | ||||
| --- a/package/kernel/mac80211/files/lib/wifi/mac80211.sh | ||||
|   | ||||
| @@ -1,14 +1,14 @@ | ||||
| From 0c477e5d60ab6c19df882f010a58d911d77ae657 Mon Sep 17 00:00:00 2001 | ||||
| From 1df5febb67e8f2980ad38e1e320dd1d5c3588610 Mon Sep 17 00:00:00 2001 | ||||
| From: John Crispin <john@phrozen.org> | ||||
| Date: Thu, 27 May 2021 13:25:19 +0200 | ||||
| Subject: [PATCH 01/34] hostapd: upsate to latest HEAD | ||||
| Subject: [PATCH 03/36] hostapd: upsate to latest HEAD | ||||
|  | ||||
| Signed-off-by: John Crispin <john@phrozen.org> | ||||
| --- | ||||
|  package/network/services/hostapd/Makefile     |   9 +- | ||||
|  .../hostapd/files/hostapd-basic.config        |   2 +- | ||||
|  .../hostapd/files/hostapd-full.config         |   4 +- | ||||
|  .../network/services/hostapd/files/hostapd.sh | 122 ++++++-- | ||||
|  .../network/services/hostapd/files/hostapd.sh | 152 ++++++++-- | ||||
|  ...-fix-frequency-setup-with-HE-enabled.patch | 196 ------------- | ||||
|  .../001-wolfssl-init-RNG-with-ECC-key.patch   |  43 +++ | ||||
|  ...-init-order-disable-pri-sec-channel-.patch | 126 --------- | ||||
| @@ -66,7 +66,7 @@ Signed-off-by: John Crispin <john@phrozen.org> | ||||
|  ...of-secondary-device-types-for-P2P-gr.patch |  33 --- | ||||
|  .../services/hostapd/src/src/ap/ubus.c        |  70 ++++- | ||||
|  .../services/hostapd/src/src/ap/ubus.h        |  16 ++ | ||||
|  61 files changed, 696 insertions(+), 2312 deletions(-) | ||||
|  61 files changed, 718 insertions(+), 2320 deletions(-) | ||||
|  delete mode 100644 package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch | ||||
|  create mode 100644 package/network/services/hostapd/patches/001-wolfssl-init-RNG-with-ECC-key.patch | ||||
|  delete mode 100644 package/network/services/hostapd/patches/002-mesh-fix-channel-init-order-disable-pri-sec-channel-.patch | ||||
| @@ -160,30 +160,20 @@ index df272e443a..61b6daf861 100644 | ||||
|  # EAP-SAKE for the integrated EAP server | ||||
|  #CONFIG_EAP_SAKE=y | ||||
| diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh | ||||
| index 45a49b8faa..399352aa89 100644 | ||||
| index 45a49b8faa..7d035a299b 100644 | ||||
| --- a/package/network/services/hostapd/files/hostapd.sh | ||||
| +++ b/package/network/services/hostapd/files/hostapd.sh | ||||
| @@ -49,6 +49,11 @@ hostapd_append_wpa_key_mgmt() { | ||||
|  		eap192) | ||||
|  			append wpa_key_mgmt "WPA-EAP-SUITE-B-192" | ||||
|  			[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP" | ||||
| +			[ "${ieee80211w:-0}" -gt 0 ] && append wpa_key_mgmt "WPA-EAP-SHA256" | ||||
| +		;; | ||||
| +		eap256) | ||||
| +			append wpa_key_mgmt "WPA-EAP-SHA256" | ||||
| +			[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP" | ||||
|  		;; | ||||
|  		eap-eap192) | ||||
|  			append wpa_key_mgmt "WPA-EAP-SUITE-B-192" | ||||
| @@ -91,6 +96,7 @@ hostapd_add_log_config() { | ||||
| @@ -91,14 +91,19 @@ hostapd_add_log_config() { | ||||
|  hostapd_common_add_device_config() { | ||||
|  	config_add_array basic_rate | ||||
|  	config_add_array supported_rates | ||||
| +	config_add_string beacon_rate | ||||
|   | ||||
|  	config_add_string country | ||||
| -	config_add_string country | ||||
| +	config_add_string country country3 | ||||
|  	config_add_boolean country_ie doth | ||||
| @@ -99,6 +105,10 @@ hostapd_common_add_device_config() { | ||||
|  	config_add_boolean spectrum_mgmt_required | ||||
|  	config_add_int local_pwr_constraint | ||||
|  	config_add_string require_mode | ||||
|  	config_add_boolean legacy_rates | ||||
|  	config_add_int cell_density | ||||
| @@ -194,17 +184,27 @@ index 45a49b8faa..399352aa89 100644 | ||||
|   | ||||
|  	config_add_string acs_chan_bias | ||||
|  	config_add_array hostapd_options | ||||
| @@ -115,7 +125,8 @@ hostapd_prepare_device_config() { | ||||
| @@ -114,8 +119,9 @@ hostapd_prepare_device_config() { | ||||
|   | ||||
|  	local base_cfg= | ||||
|   | ||||
|  	json_get_vars country country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \ | ||||
| -	json_get_vars country country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \ | ||||
| -		acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density | ||||
| +	json_get_vars country country3 country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \ | ||||
| +		acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density \ | ||||
| +		rts_threshold beacon_rate rssi_reject_assoc_rssi rssi_ignore_probe_request maxassoc | ||||
|   | ||||
|  	hostapd_set_log_options base_cfg | ||||
|   | ||||
| @@ -206,11 +217,16 @@ hostapd_prepare_device_config() { | ||||
| @@ -128,6 +134,7 @@ hostapd_prepare_device_config() { | ||||
|   | ||||
|  	[ -n "$country" ] && { | ||||
|  		append base_cfg "country_code=$country" "$N" | ||||
| +		[ -n "$country3" ] && append base_cfg "country3=$country3" "$N" | ||||
|   | ||||
|  		[ "$country_ie" -gt 0 ] && { | ||||
|  			append base_cfg "ieee80211d=1" "$N" | ||||
| @@ -206,11 +213,16 @@ hostapd_prepare_device_config() { | ||||
|  		hostapd_add_rate brlist "$br" | ||||
|  	done | ||||
|   | ||||
| @@ -221,7 +221,16 @@ index 45a49b8faa..399352aa89 100644 | ||||
|   | ||||
|  	json_get_values opts hostapd_options | ||||
|  	for val in $opts; do | ||||
| @@ -266,7 +282,7 @@ hostapd_common_add_bss_config() { | ||||
| @@ -251,6 +263,8 @@ hostapd_common_add_bss_config() { | ||||
|  	config_add_int acct_port | ||||
|  	config_add_int acct_interval | ||||
|   | ||||
| +	config_add_int bss_load_update_period chan_util_avg_period | ||||
| + | ||||
|  	config_add_string dae_client | ||||
|  	config_add_string dae_secret | ||||
|  	config_add_int dae_port | ||||
| @@ -266,7 +280,7 @@ hostapd_common_add_bss_config() { | ||||
|  	config_add_array domain_match domain_match2 domain_suffix_match domain_suffix_match2 | ||||
|  	config_add_string ieee80211w_mgmt_cipher | ||||
|   | ||||
| @@ -230,6 +239,26 @@ index 45a49b8faa..399352aa89 100644 | ||||
|  	config_add_string vlan_tagged_interface vlan_bridge | ||||
|  	config_add_string vlan_file | ||||
|   | ||||
| @@ -281,9 +295,10 @@ hostapd_common_add_bss_config() { | ||||
|  	config_add_string wps_device_type wps_device_name wps_manufacturer wps_pin | ||||
|  	config_add_string multi_ap_backhaul_ssid multi_ap_backhaul_key | ||||
|   | ||||
| -	config_add_boolean wnm_sleep_mode bss_transition | ||||
| +	config_add_boolean wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition | ||||
|  	config_add_int time_advertisement | ||||
|  	config_add_string time_zone | ||||
| +	config_add_string vendor_elements | ||||
|   | ||||
|  	config_add_boolean ieee80211k rrm_neighbor_report rrm_beacon_report | ||||
|   | ||||
| @@ -308,6 +323,7 @@ hostapd_common_add_bss_config() { | ||||
|  	config_add_array supported_rates | ||||
|   | ||||
|  	config_add_boolean sae_require_mfp | ||||
| +	config_add_int sae_pwe | ||||
|   | ||||
|  	config_add_string 'owe_transition_bssid:macaddr' 'owe_transition_ssid:string' | ||||
|   | ||||
| @@ -316,7 +332,7 @@ hostapd_common_add_bss_config() { | ||||
|  	config_add_int iw_ipaddr_type_availability iw_gas_address3 | ||||
|  	config_add_string iw_hessid iw_network_auth_type iw_qos_map_set | ||||
| @@ -239,7 +268,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
|   | ||||
|  	config_add_boolean hs20 disable_dgaf osen | ||||
|  	config_add_int anqp_domain_id | ||||
| @@ -327,12 +343,21 @@ hostapd_common_add_bss_config() { | ||||
| @@ -327,12 +343,22 @@ hostapd_common_add_bss_config() { | ||||
|  	config_add_array hs20_conn_capab | ||||
|  	config_add_string osu_ssid hs20_wan_metrics hs20_operating_class hs20_t_c_filename hs20_t_c_timestamp | ||||
|   | ||||
| @@ -252,6 +281,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
| +	config_add_boolean multicast_to_unicast proxy_arp per_sta_vif | ||||
|   | ||||
|  	config_add_array hostapd_bss_options | ||||
| +	config_add_boolean default_disabled | ||||
| + | ||||
| +	config_add_boolean request_cui | ||||
| +	config_add_array radius_auth_req_attr | ||||
| @@ -262,7 +292,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
|  } | ||||
|   | ||||
|  hostapd_set_vlan_file() { | ||||
| @@ -396,10 +421,22 @@ append_iw_nai_realm() { | ||||
| @@ -396,10 +422,22 @@ append_iw_nai_realm() { | ||||
|  	[ -n "$1" ] && append bss_conf "nai_realm=$1" "$N" | ||||
|  } | ||||
|   | ||||
| @@ -285,7 +315,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
|  append_osu_provider_service_desc() { | ||||
|  	append bss_conf "osu_service_desc=$1" "$N" | ||||
|  } | ||||
| @@ -447,6 +484,7 @@ append_osu_provider() { | ||||
| @@ -447,6 +485,7 @@ append_osu_provider() { | ||||
|  	append bss_conf "osu_method_list=$osu_method_list" "$N" | ||||
|   | ||||
|  	config_list_foreach "$1" osu_service_desc append_osu_provider_service_desc | ||||
| @@ -293,7 +323,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
|  	config_list_foreach "$1" osu_icon append_osu_icon | ||||
|   | ||||
|  	append bss_conf "$N" | ||||
| @@ -456,6 +494,14 @@ append_hs20_conn_capab() { | ||||
| @@ -456,6 +495,14 @@ append_hs20_conn_capab() { | ||||
|  	[ -n "$1" ] && append bss_conf "hs20_conn_capab=$1" "$N" | ||||
|  } | ||||
|   | ||||
| @@ -308,17 +338,22 @@ index 45a49b8faa..399352aa89 100644 | ||||
|  append_airtime_sta_weight() { | ||||
|  	[ -n "$1" ] && append bss_conf "airtime_sta_weight=$1" "$N" | ||||
|  } | ||||
| @@ -482,7 +528,8 @@ hostapd_set_bss_options() { | ||||
|  		bss_load_update_period chan_util_avg_period sae_require_mfp \ | ||||
| @@ -479,10 +526,12 @@ hostapd_set_bss_options() { | ||||
|  		macfilter ssid utf8_ssid wmm uapsd hidden short_preamble rsn_preauth \ | ||||
|  		iapp_interface eapol_version dynamic_vlan ieee80211w nasid \ | ||||
|  		acct_server acct_secret acct_port acct_interval \ | ||||
| -		bss_load_update_period chan_util_avg_period sae_require_mfp \ | ||||
| +		bss_load_update_period chan_util_avg_period sae_require_mfp sae_pwe \ | ||||
|  		multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key skip_inactivity_poll \ | ||||
|  		airtime_bss_weight airtime_bss_limit airtime_sta_weight \ | ||||
| -		multicast_to_unicast per_sta_vif | ||||
| +		multicast_to_unicast proxy_arp per_sta_vif \ | ||||
| +		eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id | ||||
| +		eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id \ | ||||
| +		vendor_elements | ||||
|   | ||||
|  	set_default isolate 0 | ||||
|  	set_default maxassoc 0 | ||||
| @@ -503,6 +550,7 @@ hostapd_set_bss_options() { | ||||
| @@ -503,6 +552,7 @@ hostapd_set_bss_options() { | ||||
|  	set_default multi_ap 0 | ||||
|  	set_default airtime_bss_weight 0 | ||||
|  	set_default airtime_bss_limit 0 | ||||
| @@ -326,7 +361,15 @@ index 45a49b8faa..399352aa89 100644 | ||||
|   | ||||
|  	append bss_conf "ctrl_interface=/var/run/hostapd" | ||||
|  	if [ "$isolate" -gt 0 ]; then | ||||
| @@ -547,6 +595,7 @@ hostapd_set_bss_options() { | ||||
| @@ -529,6 +579,7 @@ hostapd_set_bss_options() { | ||||
|  	append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N" | ||||
|  	append bss_conf "utf8_ssid=$utf8_ssid" "$N" | ||||
|  	append bss_conf "multi_ap=$multi_ap" "$N" | ||||
| +	[ -n "$vendor_elements" ] && append bss_conf "vendor_elements=$vendor_elements" "$N" | ||||
|   | ||||
|  	[ "$tdls_prohibit" -gt 0 ] && append bss_conf "tdls_prohibit=$tdls_prohibit" "$N" | ||||
|   | ||||
| @@ -547,6 +598,7 @@ hostapd_set_bss_options() { | ||||
|  			append bss_conf "acct_server_shared_secret=$acct_secret" "$N" | ||||
|  		[ -n "$acct_interval" ] && \ | ||||
|  			append bss_conf "radius_acct_interim_interval=$acct_interval" "$N" | ||||
| @@ -334,7 +377,15 @@ index 45a49b8faa..399352aa89 100644 | ||||
|  	} | ||||
|   | ||||
|  	case "$auth_type" in | ||||
| @@ -601,7 +650,7 @@ hostapd_set_bss_options() { | ||||
| @@ -560,6 +612,7 @@ hostapd_set_bss_options() { | ||||
|  		;; | ||||
|  	esac | ||||
|  	[ -n "$sae_require_mfp" ] && append bss_conf "sae_require_mfp=$sae_require_mfp" "$N" | ||||
| +	[ -n "$sae_pwe" ] && append bss_conf "sae_pwe=$sae_pwe" "$N" | ||||
|   | ||||
|  	local vlan_possible="" | ||||
|   | ||||
| @@ -601,7 +654,7 @@ hostapd_set_bss_options() { | ||||
|  				auth_server auth_secret auth_port \ | ||||
|  				dae_client dae_secret dae_port \ | ||||
|  				ownip radius_client_addr \ | ||||
| @@ -343,7 +394,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
|   | ||||
|  			# radius can provide VLAN ID for clients | ||||
|  			vlan_possible=1 | ||||
| @@ -613,18 +662,22 @@ hostapd_set_bss_options() { | ||||
| @@ -613,18 +666,22 @@ hostapd_set_bss_options() { | ||||
|   | ||||
|  			set_default auth_port 1812 | ||||
|  			set_default dae_port 3799 | ||||
| @@ -370,7 +421,27 @@ index 45a49b8faa..399352aa89 100644 | ||||
|   | ||||
|  			[ -n "$ownip" ] && append bss_conf "own_ip_addr=$ownip" "$N" | ||||
|  			[ -n "$radius_client_addr" ] && append bss_conf "radius_client_addr=$radius_client_addr" "$N" | ||||
| @@ -733,7 +786,7 @@ hostapd_set_bss_options() { | ||||
| @@ -703,13 +760,17 @@ hostapd_set_bss_options() { | ||||
|  		append bss_conf "iapp_interface=$ifname" "$N" | ||||
|  	} | ||||
|   | ||||
| -	json_get_vars time_advertisement time_zone wnm_sleep_mode bss_transition | ||||
| +	json_get_vars time_advertisement time_zone wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition | ||||
|  	set_default bss_transition 0 | ||||
|  	set_default wnm_sleep_mode 0 | ||||
| +	set_default wnm_sleep_mode_no_keys 0 | ||||
|   | ||||
|  	[ -n "$time_advertisement" ] && append bss_conf "time_advertisement=$time_advertisement" "$N" | ||||
|  	[ -n "$time_zone" ] && append bss_conf "time_zone=$time_zone" "$N" | ||||
| -	[ "$wnm_sleep_mode" -eq "1" ] && append bss_conf "wnm_sleep_mode=1" "$N" | ||||
| +	if [ "$wnm_sleep_mode" -eq "1" ]; then | ||||
| +		append bss_conf "wnm_sleep_mode=1" "$N" | ||||
| +		[ "$wnm_sleep_mode_no_keys" -eq "1" ] && append bss_conf "wnm_sleep_mode_no_keys=1" "$N" | ||||
| +	fi | ||||
|  	[ "$bss_transition" -eq "1" ] && append bss_conf "bss_transition=1" "$N" | ||||
|   | ||||
|  	json_get_vars ieee80211k rrm_neighbor_report rrm_beacon_report | ||||
| @@ -733,7 +794,7 @@ hostapd_set_bss_options() { | ||||
|  			append bss_conf "ftm_responder=1" "$N" | ||||
|  			[ "$stationary_ap" -eq "1" ] && append bss_conf "stationary_ap=1" "$N" | ||||
|  			[ -n "$lci" ] && append bss_conf "lci=$lci" "$N" | ||||
| @@ -379,7 +450,15 @@ index 45a49b8faa..399352aa89 100644 | ||||
|  		} | ||||
|  	fi | ||||
|   | ||||
| @@ -771,6 +824,13 @@ hostapd_set_bss_options() { | ||||
| @@ -757,6 +818,7 @@ hostapd_set_bss_options() { | ||||
|  				;; | ||||
|  			esac | ||||
|   | ||||
| +			[ -n "$network_ifname" ] && append bss_conf "ft_iface=$network_ifname" "$N" | ||||
|  			append bss_conf "mobility_domain=$mobility_domain" "$N" | ||||
|  			append bss_conf "ft_psk_generate_local=$ft_psk_generate_local" "$N" | ||||
|  			append bss_conf "ft_over_ds=$ft_over_ds" "$N" | ||||
| @@ -771,6 +833,13 @@ hostapd_set_bss_options() { | ||||
|  				set_default r0_key_lifetime 10000 | ||||
|  				set_default pmk_r1_push 0 | ||||
|   | ||||
| @@ -393,7 +472,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
|  				[ -n "$r1_key_holder" ] && append bss_conf "r1_key_holder=$r1_key_holder" "$N" | ||||
|  				append bss_conf "r0_key_lifetime=$r0_key_lifetime" "$N" | ||||
|  				append bss_conf "pmk_r1_push=$pmk_r1_push" "$N" | ||||
| @@ -856,13 +916,17 @@ hostapd_set_bss_options() { | ||||
| @@ -856,13 +925,17 @@ hostapd_set_bss_options() { | ||||
|  	} | ||||
|   | ||||
|  	[ -n "$vlan_possible" -a -n "$dynamic_vlan" ] && { | ||||
| @@ -413,7 +492,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
|  		[ -n "$vlan_tagged_interface" ] && \ | ||||
|  			append bss_conf "vlan_tagged_interface=$vlan_tagged_interface" "$N" | ||||
|  		[ -n "$vlan_file" ] && { | ||||
| @@ -875,6 +939,7 @@ hostapd_set_bss_options() { | ||||
| @@ -875,6 +948,7 @@ hostapd_set_bss_options() { | ||||
|  	json_get_vars iw_hessid iw_venue_group iw_venue_type iw_network_auth_type | ||||
|  	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 | ||||
| @@ -421,7 +500,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
|   | ||||
|  	set_default iw_enabled 0 | ||||
|  	if [ "$iw_enabled" = "1" ]; then | ||||
| @@ -903,6 +968,8 @@ hostapd_set_bss_options() { | ||||
| @@ -903,6 +977,8 @@ hostapd_set_bss_options() { | ||||
|  		json_for_each_item append_iw_roaming_consortium iw_roaming_consortium | ||||
|  		json_for_each_item append_iw_anqp_elem iw_anqp_elem | ||||
|  		json_for_each_item append_iw_nai_realm iw_nai_realm | ||||
| @@ -430,7 +509,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
|   | ||||
|  		iw_domain_name_conf= | ||||
|  		json_for_each_item append_iw_domain_name iw_domain_name | ||||
| @@ -917,9 +984,11 @@ hostapd_set_bss_options() { | ||||
| @@ -917,9 +993,11 @@ hostapd_set_bss_options() { | ||||
|   | ||||
|   | ||||
|  	local hs20 disable_dgaf osen anqp_domain_id hs20_deauth_req_timeout \ | ||||
| @@ -444,7 +523,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
|   | ||||
|  	set_default hs20 0 | ||||
|  	set_default disable_dgaf $hs20 | ||||
| @@ -938,16 +1007,31 @@ hostapd_set_bss_options() { | ||||
| @@ -938,16 +1016,31 @@ hostapd_set_bss_options() { | ||||
|  		[ -n "$hs20_operating_class" ] && append bss_conf "hs20_operating_class=$hs20_operating_class" "$N" | ||||
|  		[ -n "$hs20_t_c_filename" ] && append bss_conf "hs20_t_c_filename=$hs20_t_c_filename" "$N" | ||||
|  		[ -n "$hs20_t_c_timestamp" ] && append bss_conf "hs20_t_c_timestamp=$hs20_t_c_timestamp" "$N" | ||||
| @@ -477,7 +556,7 @@ index 45a49b8faa..399352aa89 100644 | ||||
|   | ||||
|  	set_default per_sta_vif 0 | ||||
|  	if [ "$per_sta_vif" -gt 0 ]; then | ||||
| @@ -1079,9 +1163,9 @@ wpa_supplicant_set_fixed_freq() { | ||||
| @@ -1079,9 +1172,9 @@ wpa_supplicant_set_fixed_freq() { | ||||
|  		VHT*) append network_data "vht=1" "$N$T";; | ||||
|  	esac | ||||
|  	case "$htmode" in | ||||
| @@ -490,6 +569,36 @@ index 45a49b8faa..399352aa89 100644 | ||||
|  		*) append network_data "disable_vht=1" "$N$T";; | ||||
|  	esac | ||||
|  } | ||||
| @@ -1099,7 +1192,8 @@ wpa_supplicant_add_network() { | ||||
|  		ssid bssid key \ | ||||
|  		basic_rate mcast_rate \ | ||||
|  		ieee80211w ieee80211r \ | ||||
| -		multi_ap | ||||
| +		multi_ap \ | ||||
| +		default_disabled | ||||
|   | ||||
|  	case "$auth_type" in | ||||
|  		sae|owe|eap192|eap-eap192) | ||||
| @@ -1112,6 +1206,7 @@ wpa_supplicant_add_network() { | ||||
|   | ||||
|  	set_default ieee80211r 0 | ||||
|  	set_default multi_ap 0 | ||||
| +	set_default default_disabled 0 | ||||
|   | ||||
|  	local key_mgmt='NONE' | ||||
|  	local network_data= | ||||
| @@ -1143,7 +1238,10 @@ wpa_supplicant_add_network() { | ||||
|  		scan_ssid="" | ||||
|  	} | ||||
|   | ||||
| -	[ "$multi_ap" = 1 -a "$_w_mode" = "sta" ] && append network_data "multi_ap_backhaul_sta=1" "$N$T" | ||||
| +	[ "$_w_mode" = "sta" ] && { | ||||
| +		[ "$multi_ap" = 1 ] && append network_data "multi_ap_backhaul_sta=1" "$N$T" | ||||
| +		[ "$default_disabled" = 1 ] && append network_data "disabled=1" "$N$T" | ||||
| +	} | ||||
|   | ||||
|  	case "$auth_type" in | ||||
|  		none) ;; | ||||
| diff --git a/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch b/package/network/services/hostapd/patches/001-HE-VHT-fix-frequency-setup-with-HE-enabled.patch | ||||
| deleted file mode 100644 | ||||
| index 37c17c50af..0000000000 | ||||
| @@ -4973,3 +5082,4 @@ index e16017394f..acdac74360 100644 | ||||
|  { | ||||
| --  | ||||
| 2.25.1 | ||||
|  | ||||
|   | ||||
| @@ -6,7 +6,8 @@ USE_PROCD=1 | ||||
| PROG=/usr/sbin/maverick | ||||
|  | ||||
| start_service() { | ||||
| 	[ -f /etc/ucentral/ucentral.active ] && return 0 | ||||
| 	active=$(readlink  /etc/ucentral/ucentral.active) | ||||
| 	[ -n "$active" -a "$active" != "/etc/ucentral/ucentral.cfg.0000000001" ] && return 0 | ||||
| 	procd_open_instance | ||||
| 	procd_set_param command "$PROG" | ||||
| 	procd_close_instance | ||||
|   | ||||
| @@ -6,7 +6,7 @@ PKG_RELEASE:=1 | ||||
| PKG_SOURCE_URL=https://github.com/blogic/ucentral-schema.git | ||||
| PKG_SOURCE_PROTO:=git | ||||
| PKG_SOURCE_DATE:=2021-02-15 | ||||
| PKG_SOURCE_VERSION:=d40781dbab7a1574d03061e2cae5ba92cdba1c55 | ||||
| PKG_SOURCE_VERSION:=1364520714bc7666705b1395714a2d752c0e9b67 | ||||
|  | ||||
| PKG_MAINTAINER:=John Crispin <john@phrozen.org> | ||||
| PKG_LICENSE:=BSD-3-Clause | ||||
|   | ||||
| @@ -0,0 +1,75 @@ | ||||
| { | ||||
| 	"uuid": 2, | ||||
| 	"unit": { | ||||
| 		"name": "test-name", | ||||
| 		"location": "garden", | ||||
| 		"timezone": "EST5EDT,M3.2.0,M11.1.0", | ||||
| 		"led-active": false | ||||
| 	}, | ||||
| 	"radios": [ | ||||
| 		{ | ||||
| 			"band": "2G", | ||||
| 			"country": "CA", | ||||
| 			"channel-mode": "HE", | ||||
| 			"channel-width": 80, | ||||
| 			"channel": 32 | ||||
| 		} | ||||
| 	], | ||||
|  | ||||
| 	"interfaces": [ | ||||
| 		{ | ||||
| 			"name": "WAN", | ||||
| 			"role": "upstream", | ||||
| 			"services": [ "lldp" ], | ||||
| 			"ethernet": [ | ||||
| 				{ | ||||
| 					"select-ports": [ | ||||
| 						"WAN*" | ||||
| 					] | ||||
| 				} | ||||
| 			], | ||||
| 			"ipv4": { | ||||
| 				"addressing": "dynamic" | ||||
| 			} | ||||
| 		}, | ||||
| 		{ | ||||
| 			"name": "LAN", | ||||
| 			"role": "downstream", | ||||
| 			"services": [ "ssh", "lldp" ], | ||||
| 			"ethernet": [ | ||||
| 				{ | ||||
| 					"select-ports": [ | ||||
| 						"LAN*" | ||||
| 					] | ||||
| 				} | ||||
| 			], | ||||
| 			"ipv4": { | ||||
| 				"addressing": "static", | ||||
| 				"subnet": "192.168.1.1/24", | ||||
| 				"dhcp": { | ||||
| 					"lease-first": 10, | ||||
| 					"lease-count": 100, | ||||
| 					"lease-time": "6h" | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	], | ||||
| 	"metrics": { | ||||
| 		"statistics": { | ||||
| 			"interval": 120, | ||||
| 			"types": [ "ssids", "lldp", "clients" ] | ||||
| 		}, | ||||
| 		"health": { | ||||
| 			"interval": 120 | ||||
| 		} | ||||
| 	}, | ||||
| 	"services": { | ||||
| 		"lldp": { | ||||
| 			"describe": "uCentral", | ||||
| 			"location": "universe" | ||||
| 		}, | ||||
| 		"ssh": { | ||||
| 			"port": 22 | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -2,9 +2,7 @@ | ||||
|  | ||||
| timeout=$1 | ||||
|  | ||||
| . /etc/diag.sh | ||||
| set_state upgrade | ||||
| /etc/init.d/led blink | ||||
| sleep $1 | ||||
| status_led_off | ||||
| set_state done | ||||
| /etc/init.d/led restart | ||||
| exit 0 | ||||
|   | ||||
| @@ -51,10 +51,6 @@ hostapd_append_wpa_key_mgmt() { | ||||
| 			[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP" | ||||
| 			[ "${ieee80211w:-0}" -gt 0 ] && append wpa_key_mgmt "WPA-EAP-SHA256" | ||||
| 		;; | ||||
| 		eap256) | ||||
| 			append wpa_key_mgmt "WPA-EAP-SHA256" | ||||
| 			[ "${ieee80211r:-0}" -gt 0 ] && append wpa_key_mgmt "FT-EAP" | ||||
| 		;; | ||||
| 		eap-eap192) | ||||
| 			append wpa_key_mgmt "WPA-EAP-SUITE-B-192" | ||||
| 			append wpa_key_mgmt "WPA-EAP" | ||||
| @@ -98,7 +94,7 @@ hostapd_common_add_device_config() { | ||||
| 	config_add_array supported_rates | ||||
| 	config_add_string beacon_rate | ||||
|  | ||||
| 	config_add_string country | ||||
| 	config_add_string country country3 | ||||
| 	config_add_boolean country_ie doth | ||||
| 	config_add_boolean spectrum_mgmt_required | ||||
| 	config_add_int local_pwr_constraint | ||||
| @@ -124,7 +120,7 @@ hostapd_prepare_device_config() { | ||||
|  | ||||
| 	local base_cfg= | ||||
|  | ||||
| 	json_get_vars country country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \ | ||||
| 	json_get_vars country country3 country_ie beacon_int:100 dtim_period:2 doth require_mode legacy_rates \ | ||||
| 		acs_chan_bias local_pwr_constraint spectrum_mgmt_required airtime_mode cell_density \ | ||||
| 		rts_threshold beacon_rate rssi_reject_assoc_rssi rssi_ignore_probe_request maxassoc | ||||
|  | ||||
| @@ -139,6 +135,7 @@ hostapd_prepare_device_config() { | ||||
|  | ||||
| 	[ -n "$country" ] && { | ||||
| 		append base_cfg "country_code=$country" "$N" | ||||
| 		[ -n "$country3" ] && append base_cfg "country3=$country3" "$N" | ||||
|  | ||||
| 		[ "$country_ie" -gt 0 ] && { | ||||
| 			append base_cfg "ieee80211d=1" "$N" | ||||
| @@ -267,6 +264,8 @@ hostapd_common_add_bss_config() { | ||||
| 	config_add_int acct_port | ||||
| 	config_add_int acct_interval | ||||
|  | ||||
| 	config_add_int bss_load_update_period chan_util_avg_period | ||||
|  | ||||
| 	config_add_string dae_client | ||||
| 	config_add_string dae_secret | ||||
| 	config_add_int dae_port | ||||
| @@ -297,9 +296,10 @@ hostapd_common_add_bss_config() { | ||||
| 	config_add_string wps_device_type wps_device_name wps_manufacturer wps_pin | ||||
| 	config_add_string multi_ap_backhaul_ssid multi_ap_backhaul_key | ||||
|  | ||||
| 	config_add_boolean wnm_sleep_mode bss_transition | ||||
| 	config_add_boolean wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition | ||||
| 	config_add_int time_advertisement | ||||
| 	config_add_string time_zone | ||||
| 	config_add_string vendor_elements | ||||
|  | ||||
| 	config_add_boolean ieee80211k rrm_neighbor_report rrm_beacon_report | ||||
|  | ||||
| @@ -324,6 +324,7 @@ hostapd_common_add_bss_config() { | ||||
| 	config_add_array supported_rates | ||||
|  | ||||
| 	config_add_boolean sae_require_mfp | ||||
| 	config_add_int sae_pwe | ||||
|  | ||||
| 	config_add_string 'owe_transition_bssid:macaddr' 'owe_transition_ssid:string' | ||||
|  | ||||
| @@ -351,6 +352,7 @@ hostapd_common_add_bss_config() { | ||||
| 	config_add_boolean multicast_to_unicast proxy_arp per_sta_vif | ||||
|  | ||||
| 	config_add_array hostapd_bss_options | ||||
| 	config_add_boolean default_disabled | ||||
|  | ||||
| 	config_add_boolean request_cui | ||||
| 	config_add_array radius_auth_req_attr | ||||
| @@ -364,8 +366,8 @@ hostapd_set_vlan_file() { | ||||
| 	local ifname="$1" | ||||
| 	local vlan="$2" | ||||
| 	json_get_vars name vid | ||||
| 	echo "${vid} ${ifname}-${name}" >> /var/run/hostapd-${ifname}.vlan | ||||
| 	wireless_add_vlan "${vlan}" "${ifname}-${name}" | ||||
| 	echo "${vid} ${ifname}.${name}" >> /var/run/hostapd-${ifname}.vlan | ||||
| 	wireless_add_vlan "${vlan}" "${ifname}.${name}" | ||||
| } | ||||
|  | ||||
| hostapd_set_vlan() { | ||||
| @@ -525,11 +527,12 @@ hostapd_set_bss_options() { | ||||
| 		macfilter ssid utf8_ssid wmm uapsd hidden short_preamble rsn_preauth \ | ||||
| 		iapp_interface eapol_version dynamic_vlan ieee80211w nasid \ | ||||
| 		acct_server acct_secret acct_port acct_interval \ | ||||
| 		bss_load_update_period chan_util_avg_period sae_require_mfp \ | ||||
| 		bss_load_update_period chan_util_avg_period sae_require_mfp sae_pwe \ | ||||
| 		multi_ap multi_ap_backhaul_ssid multi_ap_backhaul_key skip_inactivity_poll \ | ||||
| 		airtime_bss_weight airtime_bss_limit airtime_sta_weight \ | ||||
| 		multicast_to_unicast proxy_arp per_sta_vif \ | ||||
| 		eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id | ||||
| 		eap_server eap_user_file ca_cert server_cert private_key private_key_passwd server_id \ | ||||
| 		vendor_elements | ||||
|  | ||||
| 	set_default isolate 0 | ||||
| 	set_default maxassoc 0 | ||||
| @@ -577,6 +580,7 @@ hostapd_set_bss_options() { | ||||
| 	append bss_conf "uapsd_advertisement_enabled=$uapsd" "$N" | ||||
| 	append bss_conf "utf8_ssid=$utf8_ssid" "$N" | ||||
| 	append bss_conf "multi_ap=$multi_ap" "$N" | ||||
| 	[ -n "$vendor_elements" ] && append bss_conf "vendor_elements=$vendor_elements" "$N" | ||||
|  | ||||
| 	[ "$tdls_prohibit" -gt 0 ] && append bss_conf "tdls_prohibit=$tdls_prohibit" "$N" | ||||
|  | ||||
| @@ -609,6 +613,7 @@ hostapd_set_bss_options() { | ||||
| 		;; | ||||
| 	esac | ||||
| 	[ -n "$sae_require_mfp" ] && append bss_conf "sae_require_mfp=$sae_require_mfp" "$N" | ||||
| 	[ -n "$sae_pwe" ] && append bss_conf "sae_pwe=$sae_pwe" "$N" | ||||
|  | ||||
| 	local vlan_possible="" | ||||
|  | ||||
| @@ -756,13 +761,17 @@ hostapd_set_bss_options() { | ||||
| 		append bss_conf "iapp_interface=$ifname" "$N" | ||||
| 	} | ||||
|  | ||||
| 	json_get_vars time_advertisement time_zone wnm_sleep_mode bss_transition | ||||
| 	json_get_vars time_advertisement time_zone wnm_sleep_mode wnm_sleep_mode_no_keys bss_transition | ||||
| 	set_default bss_transition 0 | ||||
| 	set_default wnm_sleep_mode 0 | ||||
| 	set_default wnm_sleep_mode_no_keys 0 | ||||
|  | ||||
| 	[ -n "$time_advertisement" ] && append bss_conf "time_advertisement=$time_advertisement" "$N" | ||||
| 	[ -n "$time_zone" ] && append bss_conf "time_zone=$time_zone" "$N" | ||||
| 	[ "$wnm_sleep_mode" -eq "1" ] && append bss_conf "wnm_sleep_mode=1" "$N" | ||||
| 	if [ "$wnm_sleep_mode" -eq "1" ]; then | ||||
| 		append bss_conf "wnm_sleep_mode=1" "$N" | ||||
| 		[ "$wnm_sleep_mode_no_keys" -eq "1" ] && append bss_conf "wnm_sleep_mode_no_keys=1" "$N" | ||||
| 	fi | ||||
| 	[ "$bss_transition" -eq "1" ] && append bss_conf "bss_transition=1" "$N" | ||||
|  | ||||
| 	json_get_vars ieee80211k rrm_neighbor_report rrm_beacon_report | ||||
| @@ -810,6 +819,7 @@ hostapd_set_bss_options() { | ||||
| 				;; | ||||
| 			esac | ||||
|  | ||||
| 			[ -n "$network_ifname" ] && append bss_conf "ft_iface=$network_ifname" "$N" | ||||
| 			append bss_conf "mobility_domain=$mobility_domain" "$N" | ||||
| 			append bss_conf "ft_psk_generate_local=$ft_psk_generate_local" "$N" | ||||
| 			append bss_conf "ft_over_ds=$ft_over_ds" "$N" | ||||
| @@ -1183,7 +1193,8 @@ wpa_supplicant_add_network() { | ||||
| 		ssid bssid key \ | ||||
| 		basic_rate mcast_rate \ | ||||
| 		ieee80211w ieee80211r \ | ||||
| 		multi_ap | ||||
| 		multi_ap \ | ||||
| 		default_disabled | ||||
|  | ||||
| 	case "$auth_type" in | ||||
| 		sae|owe|eap192|eap-eap192) | ||||
| @@ -1196,6 +1207,7 @@ wpa_supplicant_add_network() { | ||||
|  | ||||
| 	set_default ieee80211r 0 | ||||
| 	set_default multi_ap 0 | ||||
| 	set_default default_disabled 0 | ||||
|  | ||||
| 	local key_mgmt='NONE' | ||||
| 	local network_data= | ||||
| @@ -1227,7 +1239,10 @@ wpa_supplicant_add_network() { | ||||
| 		scan_ssid="" | ||||
| 	} | ||||
|  | ||||
| 	[ "$multi_ap" = 1 -a "$_w_mode" = "sta" ] && append network_data "multi_ap_backhaul_sta=1" "$N$T" | ||||
| 	[ "$_w_mode" = "sta" ] && { | ||||
| 		[ "$multi_ap" = 1 ] && append network_data "multi_ap_backhaul_sta=1" "$N$T" | ||||
| 		[ "$default_disabled" = 1 ] && append network_data "disabled=1" "$N$T" | ||||
| 	} | ||||
|  | ||||
| 	case "$auth_type" in | ||||
| 		none) ;; | ||||
|   | ||||
| @@ -1021,10 +1021,8 @@ drv_mac80211_setup() { | ||||
| 		return 1 | ||||
| 	} | ||||
|  | ||||
| 	[ -z "$(uci -q -P /var/state show wireless._${phy})" ] && { | ||||
| 		uci -q -P /var/state set wireless._${phy}=phy | ||||
| 	wireless_set_data phy="$phy" | ||||
| 	} | ||||
| 	[ -z "$(uci -q -P /var/state show wireless._${phy})" ] && uci -q -P /var/state set wireless._${phy}=phy | ||||
|  | ||||
| 	OLDAPLIST=$(uci -q -P /var/state get wireless._${phy}.aplist) | ||||
| 	OLDSPLIST=$(uci -q -P /var/state get wireless._${phy}.splist) | ||||
| @@ -1035,6 +1033,13 @@ drv_mac80211_setup() { | ||||
| 	local found | ||||
|  | ||||
| 	for wdev in $(list_phy_interfaces "$phy"); do | ||||
| 		found=0 | ||||
| 		for cwdev in $OLDAPLIST $OLDSPLIST $OLDUMLIST; do | ||||
| 			if [ "$wdev" = "$cwdev" ]; then | ||||
| 				found=1 | ||||
| 				break | ||||
| 			fi | ||||
| 		done | ||||
| 		if [ "$found" = "0" ]; then | ||||
| 			ip link set dev "$wdev" down | ||||
| 			iw dev "$wdev" del | ||||
| @@ -1099,13 +1104,22 @@ drv_mac80211_setup() { | ||||
| 	for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif | ||||
| 	NEWAPLIST= | ||||
| 	for_each_interface "ap" mac80211_prepare_vif | ||||
| 	NEW_MD5=$(test -e "${hostapd_conf_file}" && md5sum ${hostapd_conf_file}) | ||||
| 	OLD_MD5=$(uci -q -P /var/state get wireless._${phy}.md5) | ||||
| 	if [ "${NEWAPLIST}" != "${OLDAPLIST}" ]; then | ||||
| 		mac80211_vap_cleanup hostapd "${OLDAPLIST}" | ||||
| 	fi | ||||
| 	[ -n "${NEWAPLIST}" ] && mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap | ||||
| 	local add_ap=0 | ||||
| 	local primary_ap=${NEWAPLIST%% *} | ||||
| 	[ -n "$hostapd_ctrl" ] && { | ||||
| 		local no_reload=1 | ||||
| 		if [ -n "$(ubus list | grep hostapd.$primary_ap)" ]; then | ||||
| 			no_reload=0 | ||||
| 			[ "${NEW_MD5}" = "${OLD_MD5}" ] || { | ||||
| 				ubus call hostapd.$primary_ap reload | ||||
| 				no_reload=$? | ||||
| 				if [ "$no_reload" != "0" ]; then | ||||
| 					mac80211_vap_cleanup hostapd "${OLDAPLIST}" | ||||
| 					mac80211_vap_cleanup wpa_supplicant "$(uci -q -P /var/state get wireless._${phy}.splist)" | ||||
| 					mac80211_vap_cleanup none "$(uci -q -P /var/state get wireless._${phy}.umlist)" | ||||
| @@ -1113,10 +1127,11 @@ drv_mac80211_setup() { | ||||
| 					mac80211_iw_interface_add "$phy" "${NEWAPLIST%% *}" __ap | ||||
| 					for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif | ||||
| 				fi | ||||
| 			} | ||||
| 		fi | ||||
| 		if [ "$no_reload" != "0" ]; then | ||||
| 			add_ap=1 | ||||
| 			ubus wait_for hostapd | ||||
| 			ip link set $primary_ap down | ||||
| 			local hostapd_res="$(ubus call hostapd config_add "{\"iface\":\"$primary_ap\", \"config\":\"${hostapd_conf_file}\"}")" | ||||
| 			ret="$?" | ||||
| 			[ "$ret" != 0 -o -z "$hostapd_res" ] && { | ||||
| @@ -1175,6 +1190,10 @@ drv_mac80211_teardown() { | ||||
| 	json_select data | ||||
| 	json_get_vars phy | ||||
| 	json_select .. | ||||
| 	[ -n "$phy" ] || { | ||||
| 		echo "Bug: PHY is undefined for device '$1'" | ||||
| 		return 1 | ||||
| 	} | ||||
|  | ||||
| 	mac80211_interface_cleanup "$phy" | ||||
| 	uci -q -P /var/state revert wireless._${phy} | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| From 7890393e2bb05b5d9e9cf351642b99585b068a13 Mon Sep 17 00:00:00 2001 | ||||
| From a524aed3cf42831f98fdd88ef31e3eb491372d0e Mon Sep 17 00:00:00 2001 | ||||
| From: John Crispin <john@phrozen.org> | ||||
| Date: Sat, 18 Jul 2020 08:53:44 +0200 | ||||
| Subject: [PATCH 01/14] ipq807x: add the Qualcomm AX target support | ||||
| Subject: [PATCH 21/36] ipq807x: add the Qualcomm AX target support | ||||
|  | ||||
| Signed-off-by: John Crispin <john@phrozen.org> | ||||
| --- | ||||
| @@ -12,7 +12,7 @@ Signed-off-by: John Crispin <john@phrozen.org> | ||||
|  .../etc/hotplug.d/firmware/11-ath10k-caldata  |    5 + | ||||
|  target/linux/ipq807x/109-logspam.patch        |   24 + | ||||
|  target/linux/ipq807x/Makefile                 |   22 + | ||||
|  .../ipq807x/base-files/etc/board.d/01_leds    |   35 + | ||||
|  .../ipq807x/base-files/etc/board.d/01_leds    |   36 + | ||||
|  .../ipq807x/base-files/etc/board.d/02_network |   77 + | ||||
|  .../etc/hotplug.d/firmware/10-ath11k-caldata  |   97 ++ | ||||
|  .../ipq807x/base-files/etc/init.d/aq_phy      |   15 + | ||||
| @@ -53,7 +53,7 @@ Signed-off-by: John Crispin <john@phrozen.org> | ||||
|  .../linux/ipq807x/patches/108-log-spam.patch  |   37 + | ||||
|  target/linux/ipq807x/patches/109-tplink.patch | 1518 +++++++++++++++++ | ||||
|  .../ipq807x/patches/110-add-esmt-nand.patch   |   37 + | ||||
|  48 files changed, 9338 insertions(+), 3 deletions(-) | ||||
|  48 files changed, 9339 insertions(+), 3 deletions(-) | ||||
|  create mode 100644 package/boot/uboot-envtools/files/ipq807x | ||||
|  create mode 100644 target/linux/ipq807x/109-logspam.patch | ||||
|  create mode 100644 target/linux/ipq807x/Makefile | ||||
| @@ -186,6 +186,21 @@ index 0000000000..6c429f1852 | ||||
| +config_foreach ubootenv_add_app_config ubootenv | ||||
| + | ||||
| +exit 0 | ||||
| diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh | ||||
| index 7d035a299b..986c74dc4d 100644 | ||||
| --- a/package/network/services/hostapd/files/hostapd.sh | ||||
| +++ b/package/network/services/hostapd/files/hostapd.sh | ||||
| @@ -365,8 +365,8 @@ hostapd_set_vlan_file() { | ||||
|  	local ifname="$1" | ||||
|  	local vlan="$2" | ||||
|  	json_get_vars name vid | ||||
| -	echo "${vid} ${ifname}-${name}" >> /var/run/hostapd-${ifname}.vlan | ||||
| -	wireless_add_vlan "${vlan}" "${ifname}-${name}" | ||||
| +	echo "${vid} ${ifname}.${name}" >> /var/run/hostapd-${ifname}.vlan | ||||
| +	wireless_add_vlan "${vlan}" "${ifname}.${name}" | ||||
|  } | ||||
|   | ||||
|  hostapd_set_vlan() { | ||||
| diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata | ||||
| index c4d9dd78e3..6670d310db 100644 | ||||
| --- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata | ||||
| @@ -262,10 +277,10 @@ index 0000000000..66031ace35 | ||||
| +$(eval $(call BuildTarget)) | ||||
| diff --git a/target/linux/ipq807x/base-files/etc/board.d/01_leds b/target/linux/ipq807x/base-files/etc/board.d/01_leds | ||||
| new file mode 100755 | ||||
| index 0000000000..60a3ccdc52 | ||||
| index 0000000000..35b4d9b529 | ||||
| --- /dev/null | ||||
| +++ b/target/linux/ipq807x/base-files/etc/board.d/01_leds | ||||
| @@ -0,0 +1,35 @@ | ||||
| @@ -0,0 +1,36 @@ | ||||
| +#!/bin/sh | ||||
| + | ||||
| +. /lib/functions/uci-defaults.sh | ||||
| @@ -278,13 +293,13 @@ index 0000000000..60a3ccdc52 | ||||
| +sercomm,wallaby|\ | ||||
| +cig,wf188n|\ | ||||
| +cig,wf194c) | ||||
| +	ucidef_set_led_netdev "wan" "WAN" "green:wan" "br-wan" "tx rx link" | ||||
| +	ucidef_set_led_netdev "lan" "LAN" "green:lan" "br-lan" "tx rx link" | ||||
| +	ucidef_set_led_netdev "wan" "WAN" "green:wan" "eth0" "tx rx link" | ||||
| +        ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tx" | ||||
| +        ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tx" | ||||
| +	;; | ||||
| +esac | ||||
| + | ||||
| +case "$board" in | ||||
| +cig,wf188n|\ | ||||
| +edgecore,eap101) | ||||
| +        ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tx" | ||||
| +        ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tx" | ||||
| @@ -293,6 +308,7 @@ index 0000000000..60a3ccdc52 | ||||
| +	ucidef_set_led_netdev "poe" "poe" "green:wan" "eth0" | ||||
| +	;; | ||||
| +edgecore,eap102) | ||||
| +	ucidef_set_led_netdev "poe" "poe" "green:wan" "eth0" | ||||
| +        ucidef_set_led_wlan "wlan5g" "WLAN5G" "green:wifi5" "phy0tx" | ||||
| +        ucidef_set_led_wlan "wlan2g" "WLAN2G" "green:wifi2" "phy1tx" | ||||
| +	;; | ||||
| @@ -6306,7 +6322,7 @@ index 0000000000..ba4a5ef3ca | ||||
| +}; | ||||
| diff --git a/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-eap102.dts b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-eap102.dts | ||||
| new file mode 100755 | ||||
| index 0000000000..fdb0d03a30 | ||||
| index 0000000000..d04cb1020c | ||||
| --- /dev/null | ||||
| +++ b/target/linux/ipq807x/files/arch/arm64/boot/dts/qcom/qcom-ipq807x-eap102.dts | ||||
| @@ -0,0 +1,918 @@ | ||||
| @@ -6982,10 +6998,10 @@ index 0000000000..fdb0d03a30 | ||||
| +		pinctrl-0 = <&led_pins>; | ||||
| +		pinctrl-names = "default"; | ||||
| + | ||||
| +			led_power: led_pwr { | ||||
| +				label = "green:power"; | ||||
| +			led_pwr { | ||||
| +				label = "green:wan"; | ||||
| +				gpios = <&tlmm 46 GPIO_ACTIVE_HIGH>; | ||||
| +				default-state = "on"; | ||||
| +				default-state = "off"; | ||||
| +				linux,default-trigger = "led_pwr"; | ||||
| +			}; | ||||
| + | ||||
| @@ -7001,10 +7017,10 @@ index 0000000000..fdb0d03a30 | ||||
| +				default-state = "off"; | ||||
| +			}; | ||||
| + | ||||
| +			led_bt { | ||||
| +			led_power: led_bt { | ||||
| +				gpios = <&tlmm 50 GPIO_ACTIVE_HIGH>; | ||||
| +				label = "green:bt"; | ||||
| +				default-state = "off"; | ||||
| +				label = "green:power"; | ||||
| +				default-state = "on"; | ||||
| +				linux,default-trigger = "led_bt"; | ||||
| +			}; | ||||
| +	}; | ||||
| @@ -8752,7 +8768,7 @@ index 0000000000..5744a2a5bf | ||||
| + struct comp_opts { | ||||
| diff --git a/target/linux/ipq807x/patches/102-cig-wf188.patch b/target/linux/ipq807x/patches/102-cig-wf188.patch | ||||
| new file mode 100644 | ||||
| index 0000000000..225ea45d08 | ||||
| index 0000000000..a9d3015b79 | ||||
| --- /dev/null | ||||
| +++ b/target/linux/ipq807x/patches/102-cig-wf188.patch | ||||
| @@ -0,0 +1,869 @@ | ||||
| @@ -9085,25 +9101,25 @@ index 0000000000..225ea45d08 | ||||
| ++		pinctrl-names = "default"; | ||||
| ++ | ||||
| ++		led@25 { | ||||
| ++			label = "led_5g"; | ||||
| ++			label = "green:wifi5"; | ||||
| ++			gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; | ||||
| ++			linux,default-trigger = "wf188:green:5g"; | ||||
| ++			default-state = "off"; | ||||
| ++		}; | ||||
| ++		led@24 { | ||||
| ++			label = "led_2g"; | ||||
| ++			label = "green:wifi2"; | ||||
| ++			gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>; | ||||
| ++			linux,default-trigger = "wf188:green:2g"; | ||||
| ++			default-state = "off"; | ||||
| ++		}; | ||||
| ++		led@18 { | ||||
| ++			label = "led_eth"; | ||||
| ++			label = "green:wan"; | ||||
| ++			gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>; | ||||
| ++			linux,default-trigger = "wf188:green:eth"; | ||||
| ++			default-state = "off"; | ||||
| ++		}; | ||||
| ++                led_power: led@16 { | ||||
| ++                        label = "led_pwr"; | ||||
| ++                        label = "green:power"; | ||||
| ++                        gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>; | ||||
| ++                        linux,default-trigger = "wf188:green:power"; | ||||
| ++			default-state = "off"; | ||||
| @@ -9513,28 +9529,28 @@ index 0000000000..225ea45d08 | ||||
| ++		pinctrl-names = "default"; | ||||
| ++ | ||||
| ++		led@25 { | ||||
| ++			label = "led_5g"; | ||||
| ++			label = "green:wifi5"; | ||||
| ++			gpios = <&tlmm 25 GPIO_ACTIVE_HIGH>; | ||||
| ++			linux,default-trigger = "wf188:green:5g"; | ||||
| ++			default-state = "off"; | ||||
| ++		}; | ||||
| ++		led@24 { | ||||
| ++			label = "led_2g"; | ||||
| ++			label = "green:wifi2"; | ||||
| ++			gpios = <&tlmm 24 GPIO_ACTIVE_HIGH>; | ||||
| ++			linux,default-trigger = "wf188:green:2g"; | ||||
| ++			default-state = "off"; | ||||
| ++		}; | ||||
| ++		led@18 { | ||||
| ++			label = "led_eth"; | ||||
| ++			label = "green:wan"; | ||||
| ++			gpios = <&tlmm 18 GPIO_ACTIVE_HIGH>; | ||||
| ++			linux,default-trigger = "wf188:green:eth"; | ||||
| ++			default-state = "off"; | ||||
| ++		}; | ||||
| ++                led_power: led@16 { | ||||
| ++                        label = "led_pwr"; | ||||
| ++                        label = "green:power"; | ||||
| ++                        gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>; | ||||
| ++                        linux,default-trigger = "wf188:green:power"; | ||||
| ++			default-state = "off"; | ||||
| ++			default-state = "on"; | ||||
| ++		}; | ||||
| ++	}; | ||||
| ++ | ||||
| @@ -11288,7 +11304,7 @@ index 0000000000..f91601ec59 | ||||
| + /* CAUTION: this will stop working if we ever use yyless() or yyunput() */ | ||||
| diff --git a/target/linux/ipq807x/patches/106-eap101.patch b/target/linux/ipq807x/patches/106-eap101.patch | ||||
| new file mode 100644 | ||||
| index 0000000000..228dadb611 | ||||
| index 0000000000..188870b8dc | ||||
| --- /dev/null | ||||
| +++ b/target/linux/ipq807x/patches/106-eap101.patch | ||||
| @@ -0,0 +1,993 @@ | ||||
| @@ -12184,13 +12200,13 @@ index 0000000000..228dadb611 | ||||
| ++ | ||||
| ++		led@25 { | ||||
| ++			label = "green:wifi5"; | ||||
| ++			gpios = <&tlmm 35 GPIO_ACTIVE_LOW>; | ||||
| ++			gpios = <&tlmm 35 GPIO_ACTIVE_HIGH>; | ||||
| ++			linux,default-trigger = "wf188:green:5g"; | ||||
| ++			default-state = "off"; | ||||
| ++		}; | ||||
| ++		led@24 { | ||||
| ++			label = "green:wifi2"; | ||||
| ++			gpios = <&tlmm 37 GPIO_ACTIVE_LOW>; | ||||
| ++			gpios = <&tlmm 37 GPIO_ACTIVE_HIGH>; | ||||
| ++			linux,default-trigger = "wf188:green:2g"; | ||||
| ++			default-state = "off"; | ||||
| ++		}; | ||||
|   | ||||
| @@ -1,27 +1,28 @@ | ||||
| From 43f1072a42dd19a0718c44c58daf3f9e5a3c9421 Mon Sep 17 00:00:00 2001 | ||||
| From d459f53ff9608c47fbf0b634fa4380bce1099d49 Mon Sep 17 00:00:00 2001 | ||||
| From: John Crispin <john@phrozen.org> | ||||
| Date: Mon, 19 Apr 2021 13:49:20 +0200 | ||||
| Subject: [PATCH] base-files: add a turnoff command to the led script | ||||
| Subject: [PATCH 31/36] base-files: add a turnoff command to the led script | ||||
|  | ||||
| Signed-off-by: John Crispin <john@phrozen.org> | ||||
| --- | ||||
|  package/base-files/files/etc/init.d/led | 15 +++++++++++++++ | ||||
|  1 file changed, 15 insertions(+) | ||||
|  package/base-files/files/etc/init.d/led | 23 +++++++++++++++++++++++ | ||||
|  1 file changed, 23 insertions(+) | ||||
|  | ||||
| diff --git a/package/base-files/files/etc/init.d/led b/package/base-files/files/etc/init.d/led | ||||
| index 8d97515d52..9f7930feed 100755 | ||||
| index 8d97515d52..3221c8c44c 100755 | ||||
| --- a/package/base-files/files/etc/init.d/led | ||||
| +++ b/package/base-files/files/etc/init.d/led | ||||
| @@ -3,6 +3,8 @@ | ||||
| @@ -3,6 +3,9 @@ | ||||
|   | ||||
|  START=96 | ||||
|   | ||||
| +extra_command "turnoff" "Turn all leds off" | ||||
| +extra_command "blink" "Blink all leds" | ||||
| + | ||||
|  load_led() { | ||||
|  	local name | ||||
|  	local sysfs | ||||
| @@ -122,7 +124,18 @@ load_led() { | ||||
| @@ -122,7 +125,25 @@ load_led() { | ||||
|  	} | ||||
|  } | ||||
|   | ||||
| @@ -31,6 +32,13 @@ index 8d97515d52..9f7930feed 100755 | ||||
| +		echo 0 > /sys/class/leds/$led/brightness | ||||
| +	done | ||||
| +} | ||||
| + | ||||
| +blink() { | ||||
| +	for led in `ls /sys/class/leds/`; do | ||||
| +		echo 0 > /sys/class/leds/$led/brightness | ||||
| +		echo timer > /sys/class/leds/$led/trigger | ||||
| +	done | ||||
| +} | ||||
| + | ||||
|  start() { | ||||
| +	[ "$(uci get system.@system[-1].leds_off)" -eq 1 ] && { | ||||
| @@ -40,7 +48,7 @@ index 8d97515d52..9f7930feed 100755 | ||||
|  	[ -e /sys/class/leds/ ] && { | ||||
|  		[ -s /var/run/led.state ] && { | ||||
|  			local led trigger brightness | ||||
| @@ -138,5 +151,7 @@ start() { | ||||
| @@ -138,5 +159,7 @@ start() { | ||||
|   | ||||
|  		config_load system | ||||
|  		config_foreach load_led led | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 John Crispin
					John Crispin