Merge Official Source

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
Tianling Shen 2023-09-04 21:09:04 +08:00
commit 3719159f66
No known key found for this signature in database
GPG Key ID: 6850B6345C862176
14 changed files with 157 additions and 49 deletions

View File

@ -1,2 +1,2 @@
LINUX_VERSION-5.15 = .129
LINUX_KERNEL_HASH-5.15.129 = 750ec97ce4f1473e392b367a55eca4ea7a6b1e9e65ca2fb3bbca2eaa64802b66
LINUX_VERSION-5.15 = .130
LINUX_KERNEL_HASH-5.15.130 = ab464e4107329ff5262f1c585c40fc29dc68f17687a9a918f3e90faba5303d62

View File

@ -1,2 +1,2 @@
LINUX_VERSION-6.1 = .50
LINUX_KERNEL_HASH-6.1.50 = b27ac1443eea563bc546ee1f67d9802bc8d6c0f6f18707407fba01f9f78c488c
LINUX_VERSION-6.1 = .51
LINUX_KERNEL_HASH-6.1.51 = 58b0446d8ea4bc0b26a35e2e3509bd53efcdeb295c9e4f48d33a23b1cdaa103b

View File

@ -1,12 +1,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=wireless-regdb
PKG_VERSION:=2023.05.03
PKG_VERSION:=2023.09.01
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=@KERNEL/software/network/wireless-regdb/
PKG_HASH:=f254d08ab3765aeae2b856222e11a95d44aef519a6663877c71ef68fae4c8c12
PKG_HASH:=26d4c2a727cc59239b84735aad856b7c7d0b04e30aa5c235c4f7f47f5f053491
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>

View File

@ -889,7 +889,6 @@ wpa_supplicant_init_config() {
wpa_supplicant_add_interface() {
local ifname="$1"
local mode="$2"
local hostapd_ctrl="$3"
local prev
_wpa_supplicant_common "$ifname"
@ -903,7 +902,6 @@ wpa_supplicant_add_interface() {
json_add_string config "$_config"
json_add_string macaddr "$macaddr"
[ -n "$network_bridge" ] && json_add_string bridge "$network_bridge"
[ -n "$hostapd_ctrl" ] && json_add_string hostapd_ctrl "$hostapd_ctrl"
[ -n "$wds" ] && json_add_boolean 4addr "$wds"
json_add_boolean powersave "$powersave"
[ "$mode" = "mesh" ] && mac80211_add_mesh_params
@ -978,7 +976,7 @@ mac80211_setup_supplicant() {
wpa_supplicant_add_network "$ifname" "$freq" "$htmode" "$noscan"
fi
wpa_supplicant_add_interface "$ifname" "$mode" "$hostapd_ctrl"
wpa_supplicant_add_interface "$ifname" "$mode"
return 0
}

View File

@ -150,7 +150,7 @@ function is_equal(val1, val2) {
if (!is_equal(val1[key], val2[key]))
return false;
for (let key in val2)
if (!val1[key])
if (val1[key] == null)
return false;
return true;
} else {

View File

@ -31,7 +31,7 @@ function iface_remove(cfg)
wdev_remove(bss.ifname);
}
function iface_gen_config(phy, config)
function iface_gen_config(phy, config, start_disabled)
{
let str = `data:
${join("\n", config.radio.data)}
@ -45,12 +45,69 @@ channel=${config.radio.channel}
str += `
${type}=${bss.ifname}
${join("\n", bss.data)}
`;
if (start_disabled)
str += `
start_disabled=1
`;
}
return str;
}
function iface_freq_info(iface, config, params)
{
let freq = params.frequency;
if (!freq)
return null;
let sec_offset = params.sec_chan_offset;
if (sec_offset != -1 && sec_offset != 1)
sec_offset = 0;
let width = 0;
for (let line in config.radio.data) {
if (!sec_offset && match(line, /^ht_capab=.*HT40/)) {
sec_offset = null; // auto-detect
continue;
}
let val = match(line, /^(vht_oper_chwidth|he_oper_chwidth)=(\d+)/);
if (!val)
continue;
val = int(val[2]);
if (val > width)
width = val;
}
if (freq < 4000)
width = 0;
return hostapd.freq_info(freq, sec_offset, width);
}
function iface_add(phy, config, phy_status)
{
let config_inline = iface_gen_config(phy, config, !!phy_status);
let bss = config.bss[0];
let ret = hostapd.add_iface(`bss_config=${bss.ifname}:${config_inline}`);
if (ret < 0)
return false;
if (!phy_status)
return true;
let iface = hostapd.interfaces[bss.ifname];
if (!iface)
return false;
let freq_info = iface_freq_info(iface, config, phy_status);
return iface.start(freq_info) >= 0;
}
function iface_restart(phy, config, old_config)
{
iface_remove(old_config);
@ -65,11 +122,18 @@ function iface_restart(phy, config, old_config)
let err = wdev_create(phy, bss.ifname, { mode: "ap" });
if (err)
hostapd.printf(`Failed to create ${bss.ifname} on phy ${phy}: ${err}`);
let config_inline = iface_gen_config(phy, config);
let ubus = hostapd.data.ubus;
let phy_status = ubus.call("wpa_supplicant", "phy_status", { phy: phy });
if (phy_status && phy_status.state == "COMPLETED") {
if (iface_add(phy, config, phy_status))
return;
hostapd.printf(`Failed to bring up phy ${phy} ifname=${bss.ifname} with supplicant provided frequency`);
}
ubus.call("wpa_supplicant", "phy_set_state", { phy: phy, stop: true });
if (hostapd.add_iface(`bss_config=${bss.ifname}:${config_inline}`) < 0)
if (!iface_add(phy, config))
hostapd.printf(`hostapd.add_iface failed for phy ${phy} ifname=${bss.ifname}`);
ubus.call("wpa_supplicant", "phy_set_state", { phy: phy, stop: false });
}
@ -295,7 +359,6 @@ function iface_load_config(filename)
}
let main_obj = {
reload: {
args: {
@ -344,34 +407,10 @@ let main_obj = {
return 0;
}
let freq = req.args.frequency;
if (!freq)
if (!req.args.frequency)
return libubus.STATUS_INVALID_ARGUMENT;
let sec_offset = req.args.sec_chan_offset;
if (sec_offset != -1 && sec_offset != 1)
sec_offset = 0;
let width = 0;
for (let line in config.radio.data) {
if (!sec_offset && match(line, /^ht_capab=.*HT40/)) {
sec_offset = null; // auto-detect
continue;
}
let val = match(line, /^(vht_oper_chwidth|he_oper_chwidth)=(\d+)/);
if (!val)
continue;
val = int(val[2]);
if (val > width)
width = val;
}
if (freq < 4000)
width = 0;
let freq_info = hostapd.freq_info(freq, sec_offset, width);
let freq_info = iface_freq_info(iface, config, req.args);
if (!freq_info)
return libubus.STATUS_UNKNOWN_ERROR;

View File

@ -43,6 +43,11 @@ function iface_cb(new_if, old_if)
return;
}
if (new_if && old_if)
wpas.printf(`Update configuration for interface ${old_if.config.iface}`);
else if (old_if)
wpas.printf(`Remove interface ${old_if.config.iface}`);
if (old_if)
iface_stop(old_if);
}
@ -106,6 +111,41 @@ let main_obj = {
return 0;
}
},
phy_status: {
args: {
phy: ""
},
call: function(req) {
if (!req.args.phy)
return libubus.STATUS_INVALID_ARGUMENT;
let phy = wpas.data.config[req.args.phy];
if (!phy)
return libubus.STATUS_NOT_FOUND;
for (let ifname in phy.data) {
try {
let iface = wpas.interfaces[ifname];
if (!iface)
continue;
let status = iface.status();
if (!status)
continue;
if (status.state == "INTERFACE_DISABLED")
continue;
status.ifname = ifname;
return status;
} catch (e) {
continue;
}
}
return libubus.STATUS_NOT_FOUND;
}
},
config_set: {
args: {
phy: "",
@ -116,6 +156,7 @@ let main_obj = {
if (!req.args.phy)
return libubus.STATUS_INVALID_ARGUMENT;
wpas.printf(`Set new config for phy ${req.args.phy}`);
try {
if (req.args.config)
set_config(req.args.phy, req.args.config);

View File

@ -362,6 +362,7 @@ out:
int ret;
hapd->started = 1;
hapd->conf->start_disabled = 0;
hostapd_set_freq(hapd, conf->hw_mode, iface->freq,
conf->channel,
conf->enable_edmg,

View File

@ -69,6 +69,9 @@ ipq40xx_setup_interfaces()
compex,wpj428)
ucidef_set_interface_lan "lan1 lan2"
;;
devolo,magic-2-wifi-next)
ucidef_set_interface_lan "lan1 lan2 ghn"
;;
linksys,whw01)
ucidef_set_interface_lan "eth1 eth2"
;;

View File

@ -231,3 +231,26 @@
};
};
};
&gmac {
status = "okay";
};
&switch {
status = "okay";
};
&swport5 {
status = "okay";
label = "lan1";
};
&swport3 {
status = "okay";
label = "lan2";
};
&swport4 {
status = "okay";
label = "ghn";
};

View File

@ -371,7 +371,7 @@ endef
TARGET_DEVICES += compex_wpj428
define Device/devolo_magic-2-wifi-next
$(call Device/FitImage)
$(call Device/FitzImage)
DEVICE_VENDOR := devolo
DEVICE_MODEL := Magic 2 WiFi next
SOC := qcom-ipq4018
@ -387,8 +387,7 @@ define Device/devolo_magic-2-wifi-next
IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata
DEFAULT := n
endef
# Missing DSA Setup
#TARGET_DEVICES += devolo_magic-2-wifi-next
TARGET_DEVICES += devolo_magic-2-wifi-next
define Device/dlink_dap-2610
$(call Device/FitImageLzma)

View File

@ -297,6 +297,8 @@
interrupt-parent = <&gpio0>;
interrupts = <20 IRQ_TYPE_LEVEL_LOW>;
reset-gpios = <&gpio0 23 GPIO_ACTIVE_LOW>;
reset-assert-us = <10000>;
reset-deassert-us = <10000>;
/*
* LINK/ACT (Green): LED[0], Active Low
* SPEED 100M (Amber): LED[1], Active High
@ -313,6 +315,8 @@
interrupt-parent = <&gpio1>;
interrupts = <9 IRQ_TYPE_LEVEL_LOW>;
reset-gpios = <&gpio1 2 GPIO_ACTIVE_LOW>;
reset-assert-us = <10000>;
reset-deassert-us = <10000>;
/*
* LINK/ACT (Green): LED[0], Active Low
* SPEED 100M (Amber): LED[1], Active High

View File

@ -54,7 +54,7 @@
&gmac0 {
nvmem-cells = <&macaddr_config_4429 0>;
nvmem-cell-names = "mac-address-ascii";
nvmem-cell-names = "mac-address";
};
&gmac1 {
@ -63,7 +63,7 @@
phy-handle = <&ethphy0>;
nvmem-cells = <&macaddr_config_4429 0>;
nvmem-cell-names = "mac-address-ascii";
nvmem-cell-names = "mac-address";
};
&mdio {
@ -163,7 +163,7 @@
wifi@0,0 {
reg = <0x0000 0 0 0 0>;
nvmem-cells = <&macaddr_config_4429 0>;
nvmem-cell-names = "mac-address-ascii";
nvmem-cell-names = "mac-address";
mediatek,mtd-eeprom = <&factory 0x0>;
};
};
@ -172,7 +172,7 @@
wifi@0,0 {
reg = <0x0000 0 0 0 0>;
nvmem-cells = <&macaddr_config_4429 0x800000>;
nvmem-cell-names = "mac-address-ascii";
nvmem-cell-names = "mac-address";
mediatek,mtd-eeprom = <&factory 0x8000>;
ieee80211-freq-limit = <5000000 6000000>;
};

View File

@ -7,7 +7,7 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=cmake
PKG_VERSION:=3.27.1
PKG_VERSION:=3.27.4
PKG_VERSION_MAJOR:=$(word 1,$(subst ., ,$(PKG_VERSION))).$(word 2,$(subst ., ,$(PKG_VERSION)))
PKG_RELEASE:=1
PKG_CPE_ID:=cpe:/a:kitware:cmake
@ -15,7 +15,7 @@ PKG_CPE_ID:=cpe:/a:kitware:cmake
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=https://github.com/Kitware/CMake/releases/download/v$(PKG_VERSION)/ \
https://cmake.org/files/v$(PKG_VERSION_MAJOR)/
PKG_HASH:=b1a6b0135fa11b94476e90f5b32c4c8fad480bf91cf22d0ded98ce22c5132004
PKG_HASH:=0a905ca8635ca81aa152e123bdde7e54cbe764fdd9a70d62af44cad8b92967af
HOST_BUILD_PARALLEL:=1
HOST_CONFIGURE_PARALLEL:=1