developer | 98f3c3c | 2022-11-10 22:41:59 +0800 | [diff] [blame] | 1 | diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile |
developer | 0ef73a6 | 2023-03-10 18:43:49 +0800 | [diff] [blame^] | 2 | index b7059fe636..62c13eb285 100644 |
developer | 98f3c3c | 2022-11-10 22:41:59 +0800 | [diff] [blame] | 3 | --- a/package/kernel/mac80211/Makefile |
| 4 | +++ b/package/kernel/mac80211/Makefile |
developer | b95b0fd | 2022-12-14 23:07:34 +0800 | [diff] [blame] | 5 | @@ -20,6 +20,7 @@ PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz |
developer | 98f3c3c | 2022-11-10 22:41:59 +0800 | [diff] [blame] | 6 | PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION) |
| 7 | PKG_BUILD_PARALLEL:=1 |
developer | 293afb5 | 2022-11-14 10:25:04 +0800 | [diff] [blame] | 8 | |
developer | 98f3c3c | 2022-11-10 22:41:59 +0800 | [diff] [blame] | 9 | +SOURCE_PATH:=./src |
| 10 | PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name> |
developer | 293afb5 | 2022-11-14 10:25:04 +0800 | [diff] [blame] | 11 | |
developer | 98f3c3c | 2022-11-10 22:41:59 +0800 | [diff] [blame] | 12 | PKG_DRIVERS = \ |
developer | b95b0fd | 2022-12-14 23:07:34 +0800 | [diff] [blame] | 13 | @@ -72,6 +73,10 @@ config-y:= \ |
developer | 9ead8ed | 2022-11-21 18:47:15 +0800 | [diff] [blame] | 14 | WLAN_VENDOR_ST \ |
| 15 | WLAN_VENDOR_TI \ |
| 16 | WLAN_VENDOR_ZYDAS \ |
| 17 | + MAC80211_DEBUG_MENU \ |
| 18 | + MAC80211_MLME_DEBUG \ |
| 19 | + MAC80211_STA_DEBUG \ |
| 20 | + MAC80211_HT_DEBUG \ |
| 21 | |
| 22 | config-$(call config_package,cfg80211) += CFG80211 |
| 23 | config-$(CONFIG_PACKAGE_CFG80211_TESTMODE) += NL80211_TESTMODE |
developer | b95b0fd | 2022-12-14 23:07:34 +0800 | [diff] [blame] | 24 | @@ -297,6 +302,8 @@ define Build/Prepare |
developer | 293afb5 | 2022-11-14 10:25:04 +0800 | [diff] [blame] | 25 | mkdir -p $(PKG_BUILD_DIR) |
| 26 | $(PKG_UNPACK) |
| 27 | $(Build/Patch) |
| 28 | + $(CP) $(SOURCE_PATH)/net $(PKG_BUILD_DIR) 2>/dev/null || : |
| 29 | + $(CP) $(SOURCE_PATH)/include $(PKG_BUILD_DIR) 2>/dev/null || : |
| 30 | rm -rf \ |
| 31 | $(PKG_BUILD_DIR)/include/linux/ssb \ |
| 32 | $(PKG_BUILD_DIR)/include/linux/bcma \ |
developer | 8ac9712 | 2022-03-02 14:09:32 +0800 | [diff] [blame] | 33 | diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh |
developer | 0ef73a6 | 2023-03-10 18:43:49 +0800 | [diff] [blame^] | 34 | index 5aaba9af26..6d051038bf 100644 |
developer | 8ac9712 | 2022-03-02 14:09:32 +0800 | [diff] [blame] | 35 | --- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh |
| 36 | +++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh |
developer | 0ef73a6 | 2023-03-10 18:43:49 +0800 | [diff] [blame^] | 37 | @@ -27,6 +27,7 @@ drv_mac80211_init_device_config() { |
| 38 | |
| 39 | config_add_string path phy 'macaddr:macaddr' |
| 40 | config_add_string tx_burst |
| 41 | + config_add_int mbssid |
| 42 | config_add_string distance |
| 43 | config_add_int beacon_int chanbw frag rts |
| 44 | config_add_int rxantenna txantenna antenna_gain txpower min_tx_power |
| 45 | @@ -140,13 +141,10 @@ mac80211_hostapd_setup_base() { |
| 46 | [ -n "$acs_exclude_dfs" ] && [ "$acs_exclude_dfs" -gt 0 ] && |
| 47 | append base_cfg "acs_exclude_dfs=1" "$N" |
| 48 | |
| 49 | - json_get_vars noscan ht_coex min_tx_power:0 tx_burst |
| 50 | + json_get_vars noscan ht_coex min_tx_power:0 tx_burst mbssid |
developer | 5f5952d | 2022-10-20 15:08:25 +0800 | [diff] [blame] | 51 | json_get_values ht_capab_list ht_capab |
developer | 8ac9712 | 2022-03-02 14:09:32 +0800 | [diff] [blame] | 52 | json_get_values channel_list channels |
| 53 | |
| 54 | - [ "$auto_channel" = 0 ] && [ -z "$channel_list" ] && \ |
| 55 | - channel_list="$channel" |
| 56 | - |
developer | d3c708b | 2022-07-06 00:44:05 +0800 | [diff] [blame] | 57 | [ "$min_tx_power" -gt 0 ] && append base_cfg "min_tx_power=$min_tx_power" |
developer | 8ac9712 | 2022-03-02 14:09:32 +0800 | [diff] [blame] | 58 | |
developer | d3c708b | 2022-07-06 00:44:05 +0800 | [diff] [blame] | 59 | set_default noscan 0 |
developer | 0ef73a6 | 2023-03-10 18:43:49 +0800 | [diff] [blame^] | 60 | @@ -315,7 +313,6 @@ mac80211_hostapd_setup_base() { |
developer | 5af1935 | 2022-12-07 16:29:19 +0800 | [diff] [blame] | 61 | vht_link_adapt:3 \ |
| 62 | vht160:2 |
| 63 | |
| 64 | - set_default tx_burst 2.0 |
| 65 | append base_cfg "ieee80211ac=1" "$N" |
| 66 | vht_cap=0 |
| 67 | for cap in $(iw phy "$phy" info | awk -F "[()]" '/VHT Capabilities/ { print $2 }'); do |
developer | 0ef73a6 | 2023-03-10 18:43:49 +0800 | [diff] [blame^] | 68 | @@ -484,12 +481,15 @@ mac80211_hostapd_setup_base() { |
developer | 5af1935 | 2022-12-07 16:29:19 +0800 | [diff] [blame] | 69 | append base_cfg "he_mu_edca_ac_vo_timer=255" "$N" |
| 70 | fi |
| 71 | |
developer | 0d06176 | 2022-12-15 17:33:43 +0800 | [diff] [blame] | 72 | + set_default tx_burst 5.9 |
developer | 5af1935 | 2022-12-07 16:29:19 +0800 | [diff] [blame] | 73 | + |
| 74 | hostapd_prepare_device_config "$hostapd_conf_file" nl80211 |
| 75 | cat >> "$hostapd_conf_file" <<EOF |
| 76 | ${channel:+channel=$channel} |
developer | 0ef73a6 | 2023-03-10 18:43:49 +0800 | [diff] [blame^] | 77 | ${channel_list:+chanlist=$channel_list} |
| 78 | ${hostapd_noscan:+noscan=1} |
| 79 | ${tx_burst:+tx_queue_data2_burst=$tx_burst} |
| 80 | +${mbssid:+mbssid=$mbssid} |
| 81 | $base_cfg |
| 82 | |
| 83 | EOF |
| 84 | @@ -517,7 +517,7 @@ mac80211_hostapd_setup_bss() { |
developer | 8ce7856 | 2023-02-24 16:10:53 +0800 | [diff] [blame] | 85 | append hostapd_cfg "wds_sta=1" "$N" |
| 86 | [ -n "$wds_bridge" ] && append hostapd_cfg "wds_bridge=$wds_bridge" "$N" |
| 87 | } |
| 88 | - [ "$staidx" -gt 0 -o "$start_disabled" -eq 1 ] && append hostapd_cfg "start_disabled=1" "$N" |
| 89 | + [ "$start_disabled" -eq 1 ] && append hostapd_cfg "start_disabled=1" "$N" |
| 90 | |
| 91 | cat >> /var/run/hostapd-$phy.conf <<EOF |
| 92 | $hostapd_cfg |
developer | 0ef73a6 | 2023-03-10 18:43:49 +0800 | [diff] [blame^] | 93 | @@ -527,6 +527,34 @@ ${max_listen_int:+max_listen_interval=$max_listen_int} |
| 94 | EOF |
| 95 | } |
| 96 | |
| 97 | +mac80211_generate_mbssid_mac() { |
| 98 | + local phy="$1" |
| 99 | + local transmitted_bssid="$2" |
| 100 | + local id="${macidx:-0}" |
| 101 | + |
| 102 | + local ref="$(cat /sys/class/ieee80211/${phy}/macaddress)" |
| 103 | + local mask="$(cat /sys/class/ieee80211/${phy}/address_mask)" |
| 104 | + |
| 105 | + if [ -z "$transmitted_bssid" ]; then |
| 106 | + transmitted_bssid=$ref |
| 107 | + fi |
| 108 | + |
| 109 | + if [ $id -eq 0 ]; then |
| 110 | + echo "$transmitted_bssid" |
| 111 | + return |
| 112 | + fi |
| 113 | + |
| 114 | + local oIFS="$IFS"; IFS=":"; set -- $transmitted_bssid; IFS="$oIFS" |
| 115 | + |
| 116 | + # Calculate nontransmitted bssid |
| 117 | + macidx=$(($id + 1)) |
| 118 | + mbssid_idx=$(($macidx - 1)) |
| 119 | + b6="0x$6" |
| 120 | + ref_b6=$(($b6 % $max_mbssid)) |
| 121 | + b6=$(($b6 - $ref_b6 + ($ref_b6 + $mbssid_idx) % $max_mbssid)) |
| 122 | + printf "%s:%s:%s:%s:%s:%02x" $1 $2 $3 $4 $5 $b6 |
| 123 | +} |
| 124 | + |
| 125 | mac80211_get_addr() { |
| 126 | local phy="$1" |
| 127 | local idx="$(($2 + 1))" |
| 128 | @@ -757,7 +785,13 @@ mac80211_prepare_vif() { |
| 129 | |
| 130 | json_select .. |
| 131 | |
| 132 | - if [ -z "$macaddr" ]; then |
| 133 | + if [ "$mbssid" -gt 0 ]; then |
| 134 | + [ "$macidx" -eq 0 ] && { |
| 135 | + transmitted_bssid=$macaddr |
| 136 | + } |
| 137 | + macaddr="$(mac80211_generate_mbssid_mac $phy $transmitted_bssid)" |
| 138 | + macidx="$(($macidx + 1))" |
| 139 | + elif [ -z "$macaddr" ]; then |
| 140 | macaddr="$(mac80211_generate_mac $phy)" |
| 141 | macidx="$(($macidx + 1))" |
| 142 | elif [ "$macaddr" = 'random' ]; then |
| 143 | @@ -1058,6 +1092,9 @@ mac80211_setup_vif() { |
developer | b95b0fd | 2022-12-14 23:07:34 +0800 | [diff] [blame] | 144 | |
| 145 | json_select .. |
| 146 | [ -n "$failed" ] || wireless_add_vif "$name" "$ifname" |
| 147 | + |
| 148 | + echo "Setup SMP Affinity" |
| 149 | + /sbin/smp-mt76.sh |
| 150 | } |
| 151 | |
| 152 | get_freq() { |
developer | 0ef73a6 | 2023-03-10 18:43:49 +0800 | [diff] [blame^] | 153 | @@ -1122,6 +1159,10 @@ drv_mac80211_cleanup() { |
| 154 | hostapd_common_cleanup |
| 155 | } |
| 156 | |
| 157 | +mac80211_count_ap() { |
| 158 | + total_num_ap=$(($total_num_ap + 1)) |
| 159 | +} |
| 160 | + |
| 161 | drv_mac80211_setup() { |
| 162 | json_select config |
| 163 | json_get_vars \ |
| 164 | @@ -1219,6 +1260,16 @@ drv_mac80211_setup() { |
| 165 | for_each_interface "sta adhoc mesh" mac80211_set_noscan |
| 166 | [ -n "$has_ap" ] && mac80211_hostapd_setup_base "$phy" |
| 167 | |
| 168 | + total_num_ap=0 |
| 169 | + max_mbssid=1 |
| 170 | + for_each_interface "ap" mac80211_count_ap |
| 171 | + total_num_ap=$(($total_num_ap - 1)) |
| 172 | + while [ $total_num_ap -gt 0 ] |
| 173 | + do |
| 174 | + total_num_ap=$(($total_num_ap >> 1)) |
| 175 | + max_mbssid=$(($max_mbssid << 1)) |
| 176 | + done |
| 177 | + |
| 178 | mac80211_prepare_iw_htmode |
| 179 | for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif |
| 180 | NEWAPLIST= |
developer | d3c708b | 2022-07-06 00:44:05 +0800 | [diff] [blame] | 181 | diff --git a/package/kernel/mac80211/files/lib/wifi/mac80211.sh b/package/kernel/mac80211/files/lib/wifi/mac80211.sh |
developer | 0ef73a6 | 2023-03-10 18:43:49 +0800 | [diff] [blame^] | 182 | index e24a2a634e..10a3f8b43b 100644 |
developer | 92f0d54 | 2022-06-24 13:09:16 +0800 | [diff] [blame] | 183 | --- a/package/kernel/mac80211/files/lib/wifi/mac80211.sh |
| 184 | +++ b/package/kernel/mac80211/files/lib/wifi/mac80211.sh |
developer | 5f5952d | 2022-10-20 15:08:25 +0800 | [diff] [blame] | 185 | @@ -120,6 +120,13 @@ get_band_defaults() { |
developer | 92f0d54 | 2022-06-24 13:09:16 +0800 | [diff] [blame] | 186 | mode_band="$band" |
| 187 | channel="$chan" |
| 188 | htmode="$mode" |
| 189 | + if [ "$band" = "6g" ] |
| 190 | + then |
| 191 | + encryption=sae |
| 192 | + key=12345678 |
| 193 | + else |
| 194 | + encryption=none |
| 195 | + fi |
| 196 | done |
| 197 | } |
| 198 | |
developer | 5f5952d | 2022-10-20 15:08:25 +0800 | [diff] [blame] | 199 | @@ -162,6 +169,8 @@ detect_mac80211() { |
developer | 92f0d54 | 2022-06-24 13:09:16 +0800 | [diff] [blame] | 200 | channel="" |
| 201 | htmode="" |
| 202 | ht_capab="" |
| 203 | + encryption="" |
| 204 | + key="" |
| 205 | |
| 206 | get_band_defaults "$dev" |
| 207 | |
developer | 8ce7856 | 2023-02-24 16:10:53 +0800 | [diff] [blame] | 208 | @@ -210,8 +219,12 @@ detect_mac80211() { |
developer | 5f5952d | 2022-10-20 15:08:25 +0800 | [diff] [blame] | 209 | set wireless.default_${name}.network=lan |
| 210 | set wireless.default_${name}.mode=ap |
| 211 | set wireless.default_${name}.ssid=OpenWrt |
| 212 | - set wireless.default_${name}.encryption=none |
| 213 | + set wireless.default_${name}.encryption=${encryption} |
| 214 | + |
developer | 92f0d54 | 2022-06-24 13:09:16 +0800 | [diff] [blame] | 215 | EOF |
| 216 | + [ -n "$key" ] && { |
developer | 5f5952d | 2022-10-20 15:08:25 +0800 | [diff] [blame] | 217 | + uci -q set wireless.default_${name}.key=${key} |
developer | 92f0d54 | 2022-06-24 13:09:16 +0800 | [diff] [blame] | 218 | + } |
| 219 | uci -q commit wireless |
developer | 5f5952d | 2022-10-20 15:08:25 +0800 | [diff] [blame] | 220 | done |
| 221 | } |
developer | f16b916 | 2023-02-23 10:32:51 +0800 | [diff] [blame] | 222 | diff --git a/package/network/services/hostapd/files/hostapd.sh b/package/network/services/hostapd/files/hostapd.sh |
developer | 0ef73a6 | 2023-03-10 18:43:49 +0800 | [diff] [blame^] | 223 | index 28bd210623..81b01a2f04 100644 |
developer | f16b916 | 2023-02-23 10:32:51 +0800 | [diff] [blame] | 224 | --- a/package/network/services/hostapd/files/hostapd.sh |
| 225 | +++ b/package/network/services/hostapd/files/hostapd.sh |
| 226 | @@ -1573,6 +1573,11 @@ wpa_supplicant_add_network() { |
| 227 | append network_data "mcast_rate=$mc_rate" "$N$T" |
| 228 | } |
| 229 | |
| 230 | + if [ "$auth_type" = "sae" ]; then |
| 231 | + json_get_vars sae_pwe sae_pwe |
| 232 | + [ -n "$sae_pwe" ] && echo "sae_pwe=$sae_pwe" >> "$_config" |
| 233 | + fi |
| 234 | + |
| 235 | if [ "$key_mgmt" = "WPS" ]; then |
| 236 | echo "wps_cred_processing=1" >> "$_config" |
| 237 | else |