Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
877d41cd9c
@ -1,2 +1,2 @@
|
||||
LINUX_VERSION-6.1 = .44
|
||||
LINUX_KERNEL_HASH-6.1.44 = 2e51d41fe11d082ae167cee05772bb07ca7f19448d2b46772d8ca2db7673a1a5
|
||||
LINUX_VERSION-6.1 = .45
|
||||
LINUX_KERNEL_HASH-6.1.45 = bd2343396e7ddad8974f3689a5a067ec931f4ade793e72b1070a85cd19f1f192
|
||||
|
@ -0,0 +1,21 @@
|
||||
--- a/tools/fiptool/fiptool.c
|
||||
+++ b/tools/fiptool/fiptool.c
|
||||
@@ -3,7 +3,7 @@
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
-
|
||||
+#define _DARWIN_C_SOURCE
|
||||
#ifndef _MSC_VER
|
||||
#include <sys/mount.h>
|
||||
#endif
|
||||
@@ -18,6 +18,9 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#define uuid_t fiptool_uuid_t
|
||||
|
||||
#include "fiptool.h"
|
||||
#include "tbbr_config.h"
|
@ -294,6 +294,12 @@ define U-Boot/bananapi_m2_plus_h3
|
||||
BUILD_DEVICES:=sinovoip_bananapi-m2-plus
|
||||
endef
|
||||
|
||||
define U-Boot/Sinovoip_BPI_M3
|
||||
BUILD_SUBTARGET:=cortexa7
|
||||
NAME:=Bananapi M3
|
||||
BUILD_DEVICES:=sinovoip_bananapi-m3
|
||||
endef
|
||||
|
||||
define U-Boot/sopine_baseboard
|
||||
BUILD_SUBTARGET:=cortexa53
|
||||
NAME:=Sopine Baseboard
|
||||
@ -378,6 +384,7 @@ UBOOT_TARGETS := \
|
||||
orangepi_pc2 \
|
||||
pangolin \
|
||||
pine64_plus \
|
||||
Sinovoip_BPI_M3 \
|
||||
sopine_baseboard \
|
||||
orangepi_zero_plus \
|
||||
libretech_all_h3_cc_h5
|
||||
|
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=intel-microcode
|
||||
PKG_VERSION:=20230512
|
||||
PKG_VERSION:=20230808
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=intel-microcode_3.$(PKG_VERSION).1.tar.xz
|
||||
PKG_SOURCE_URL:=@DEBIAN/pool/non-free-firmware/i/intel-microcode/
|
||||
PKG_HASH:=e6717a42d7b6e92280565fbb180cd0d11bc5d14874ef06ff1bed2b7a11d17c67
|
||||
PKG_HASH:=29e77c275b3f60a691832c0844f70effbd94a4594d04af21e0c2e6e0c1ac1894
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/intel-microcode-3.$(PKG_VERSION).1
|
||||
|
||||
PKG_BUILD_DEPENDS:=iucode-tool/host
|
||||
|
@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=linux-firmware
|
||||
PKG_VERSION:=20230625
|
||||
PKG_VERSION:=20230804
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE_URL:=@KERNEL/linux/kernel/firmware
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_HASH:=87597111c0d4b71b31e53cb85a92c386921b84c825a402db8c82e0e86015500d
|
||||
PKG_HASH:=88d46c543847ee3b03404d4941d91c92974690ee1f6fdcbee9cef3e5f97db688
|
||||
|
||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
|
@ -8,13 +8,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=mbedtls
|
||||
PKG_VERSION:=2.28.3
|
||||
PKG_VERSION:=2.28.4
|
||||
PKG_RELEASE:=1
|
||||
PKG_BUILD_FLAGS:=no-mips16 gc-sections no-lto
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=https://codeload.github.com/ARMmbed/mbedtls/tar.gz/v$(PKG_VERSION)?
|
||||
PKG_HASH:=bdf7c5bbdc338da3edad89b2885d4f8668f9a6fffeba6ec17a60333e36dade6f
|
||||
PKG_HASH:=578c4dcd15bbff3f5cd56aa07cd4f850fc733634e3d5947be4f7157d5bfd81ac
|
||||
|
||||
PKG_LICENSE:=GPL-2.0-or-later
|
||||
PKG_LICENSE_FILES:=gpl-2.0.txt
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <time.h>
|
||||
@@ -2995,6 +2999,61 @@ find_parent:
|
||||
@@ -3001,6 +3005,61 @@ find_parent:
|
||||
}
|
||||
}
|
||||
|
||||
@ -95,7 +95,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
|
||||
/*
|
||||
* Check for CN match
|
||||
*/
|
||||
@@ -3015,24 +3074,51 @@ static int x509_crt_check_cn(const mbedt
|
||||
@@ -3021,24 +3080,51 @@ static int x509_crt_check_cn(const mbedt
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -158,7 +158,7 @@ Signed-off-by: Glenn Strauss <gstrauss@gluelogic.com>
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3043,31 +3129,23 @@ static void x509_crt_verify_name(const m
|
||||
@@ -3049,31 +3135,23 @@ static void x509_crt_verify_name(const m
|
||||
uint32_t *flags)
|
||||
{
|
||||
const mbedtls_x509_name *name;
|
||||
|
@ -66,10 +66,12 @@ function iface_restart(phy, config, old_config)
|
||||
if (err)
|
||||
hostapd.printf(`Failed to create ${bss.ifname} on phy ${phy}: ${err}`);
|
||||
let config_inline = iface_gen_config(phy, config);
|
||||
if (hostapd.add_iface(`bss_config=${bss.ifname}:${config_inline}`) < 0) {
|
||||
|
||||
let ubus = hostapd.data.ubus;
|
||||
ubus.call("wpa_supplicant", "phy_set_state", { phy: phy, stop: true });
|
||||
if (hostapd.add_iface(`bss_config=${bss.ifname}:${config_inline}`) < 0)
|
||||
hostapd.printf(`hostapd.add_iface failed for phy ${phy} ifname=${bss.ifname}`);
|
||||
return;
|
||||
}
|
||||
ubus.call("wpa_supplicant", "phy_set_state", { phy: phy, stop: false });
|
||||
}
|
||||
|
||||
function array_to_obj(arr, key, start)
|
||||
@ -123,30 +125,37 @@ function iface_reload_config(phy, config, old_config)
|
||||
if (config.bss[0].ifname != old_config.bss[0].ifname)
|
||||
return false;
|
||||
|
||||
let iface = hostapd.interfaces[config.bss[0].ifname];
|
||||
let iface_name = config.bss[0].ifname;
|
||||
let iface = hostapd.interfaces[iface_name];
|
||||
if (!iface)
|
||||
return false;
|
||||
|
||||
let first_bss = hostapd.bss[iface_name];
|
||||
if (!first_bss)
|
||||
return false;
|
||||
|
||||
let config_inline = iface_gen_config(phy, config);
|
||||
|
||||
bss_reload_psk(iface.bss[0], config.bss[0], old_config.bss[0]);
|
||||
bss_reload_psk(first_bss, config.bss[0], old_config.bss[0]);
|
||||
if (!is_equal(config.bss[0], old_config.bss[0])) {
|
||||
if (phy_is_fullmac(phy))
|
||||
return false;
|
||||
|
||||
if (config.bss[0].bssid != old_config.bss[0].bssid)
|
||||
return false;
|
||||
|
||||
hostapd.printf(`Reload config for bss '${config.bss[0].ifname}' on phy '${phy}'`);
|
||||
if (iface.bss[0].set_config(config_inline, 0) < 0) {
|
||||
if (first_bss.set_config(config_inline, 0) < 0) {
|
||||
hostapd.printf(`Failed to set config`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
let bss_list = array_to_obj(iface.bss, "name", 1);
|
||||
let new_cfg = array_to_obj(config.bss, "ifname", 1);
|
||||
let old_cfg = array_to_obj(old_config.bss, "ifname", 1);
|
||||
|
||||
for (let name in old_cfg) {
|
||||
let bss = bss_list[name];
|
||||
let bss = hostapd.bss[name];
|
||||
if (!bss) {
|
||||
hostapd.printf(`bss '${name}' not found`);
|
||||
return false;
|
||||
@ -267,6 +276,9 @@ function iface_load_config(filename)
|
||||
if (!val[0])
|
||||
continue;
|
||||
|
||||
if (val[0] == "bssid")
|
||||
bss.bssid = val[1];
|
||||
|
||||
if (val[0] == "bss") {
|
||||
bss = config_add_bss(config, val[1]);
|
||||
continue;
|
||||
|
@ -11,6 +11,9 @@ function iface_stop(iface)
|
||||
{
|
||||
let ifname = iface.config.iface;
|
||||
|
||||
if (!iface.running)
|
||||
return;
|
||||
|
||||
delete wpas.data.iface_phy[ifname];
|
||||
wpas.remove_iface(ifname);
|
||||
wdev_remove(ifname);
|
||||
@ -40,7 +43,7 @@ function iface_cb(new_if, old_if)
|
||||
return;
|
||||
}
|
||||
|
||||
if (old_if && old_if.running)
|
||||
if (old_if)
|
||||
iface_stop(old_if);
|
||||
}
|
||||
|
||||
@ -76,6 +79,33 @@ function start_pending(phy_name)
|
||||
}
|
||||
|
||||
let main_obj = {
|
||||
phy_set_state: {
|
||||
args: {
|
||||
phy: "",
|
||||
stop: true,
|
||||
},
|
||||
call: function(req) {
|
||||
if (!req.args.phy || req.args.stop == null)
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
|
||||
let phy = wpas.data.config[req.args.phy];
|
||||
if (!phy)
|
||||
return libubus.STATUS_NOT_FOUND;
|
||||
|
||||
try {
|
||||
if (req.args.stop) {
|
||||
for (let ifname in phy.data)
|
||||
iface_stop(phy.data[ifname]);
|
||||
} else {
|
||||
start_pending(req.args.phy);
|
||||
}
|
||||
} catch (e) {
|
||||
wpas.printf(`Error chaging state: ${e}\n${e.stacktrace[0].context}`);
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
config_set: {
|
||||
args: {
|
||||
phy: "",
|
||||
@ -196,14 +226,12 @@ return {
|
||||
wpas.ubus.disconnect();
|
||||
},
|
||||
iface_add: function(name, obj) {
|
||||
obj.data.name = name;
|
||||
iface_event("add", name);
|
||||
},
|
||||
iface_remove: function(name, obj) {
|
||||
iface_event("remove", name);
|
||||
},
|
||||
state: function(iface, state) {
|
||||
let ifname = iface.data.name;
|
||||
state: function(ifname, iface, state) {
|
||||
let phy = wpas.data.iface_phy[ifname];
|
||||
if (!phy) {
|
||||
wpas.printf(`no PHY for ifname ${ifname}`);
|
||||
@ -212,8 +240,7 @@ return {
|
||||
|
||||
iface_hostapd_notify(phy, ifname, iface, state);
|
||||
},
|
||||
event: function(iface, ev, info) {
|
||||
let ifname = iface.data.name;
|
||||
event: function(ifname, iface, ev, info) {
|
||||
let phy = wpas.data.iface_phy[ifname];
|
||||
if (!phy) {
|
||||
wpas.printf(`no PHY for ifname ${ifname}`);
|
||||
|
@ -23,7 +23,7 @@ hostapd_ucode_bss_get_uval(struct hostapd_data *hapd)
|
||||
return wpa_ucode_registry_get(bss_registry, hapd->ucode.idx);
|
||||
|
||||
val = uc_resource_new(bss_type, hapd);
|
||||
wpa_ucode_registry_add(bss_registry, val, &hapd->ucode.idx);
|
||||
hapd->ucode.idx = wpa_ucode_registry_add(bss_registry, val);
|
||||
|
||||
return val;
|
||||
}
|
||||
@ -37,46 +37,46 @@ hostapd_ucode_iface_get_uval(struct hostapd_iface *hapd)
|
||||
return wpa_ucode_registry_get(iface_registry, hapd->ucode.idx);
|
||||
|
||||
val = uc_resource_new(iface_type, hapd);
|
||||
wpa_ucode_registry_add(iface_registry, val, &hapd->ucode.idx);
|
||||
hapd->ucode.idx = wpa_ucode_registry_add(iface_registry, val);
|
||||
|
||||
return val;
|
||||
}
|
||||
|
||||
static void
|
||||
hostapd_ucode_update_bss_list(struct hostapd_iface *iface)
|
||||
hostapd_ucode_update_bss_list(struct hostapd_iface *iface, uc_value_t *if_bss, uc_value_t *bss)
|
||||
{
|
||||
uc_value_t *ifval, *list;
|
||||
uc_value_t *list;
|
||||
int i;
|
||||
|
||||
list = ucv_array_new(vm);
|
||||
for (i = 0; i < iface->num_bss; i++) {
|
||||
struct hostapd_data *hapd = iface->bss[i];
|
||||
uc_value_t *val = hostapd_ucode_bss_get_uval(hapd);
|
||||
uc_value_t *proto = ucv_prototype_get(val);
|
||||
|
||||
ucv_object_add(proto, "name", ucv_get(ucv_string_new(hapd->conf->iface)));
|
||||
ucv_object_add(proto, "index", ucv_int64_new(i));
|
||||
ucv_array_set(list, i, ucv_get(val));
|
||||
ucv_array_set(list, i, ucv_get(ucv_string_new(hapd->conf->iface)));
|
||||
ucv_object_add(bss, hapd->conf->iface, ucv_get(val));
|
||||
}
|
||||
|
||||
ifval = hostapd_ucode_iface_get_uval(iface);
|
||||
ucv_object_add(ucv_prototype_get(ifval), "bss", ucv_get(list));
|
||||
ucv_object_add(if_bss, iface->phy, ucv_get(list));
|
||||
}
|
||||
|
||||
static void
|
||||
hostapd_ucode_update_interfaces(void)
|
||||
{
|
||||
uc_value_t *ifs = ucv_object_new(vm);
|
||||
uc_value_t *if_bss = ucv_array_new(vm);
|
||||
uc_value_t *bss = ucv_object_new(vm);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < interfaces->count; i++) {
|
||||
struct hostapd_iface *iface = interfaces->iface[i];
|
||||
|
||||
ucv_object_add(ifs, iface->phy, ucv_get(hostapd_ucode_iface_get_uval(iface)));
|
||||
hostapd_ucode_update_bss_list(iface);
|
||||
hostapd_ucode_update_bss_list(iface, if_bss, bss);
|
||||
}
|
||||
|
||||
ucv_object_add(ucv_prototype_get(global), "interfaces", ucv_get(ifs));
|
||||
ucv_object_add(ucv_prototype_get(global), "interface_bss", ucv_get(if_bss));
|
||||
ucv_object_add(ucv_prototype_get(global), "bss", ucv_get(bss));
|
||||
ucv_gc(vm);
|
||||
}
|
||||
|
||||
@ -199,7 +199,7 @@ uc_hostapd_bss_delete(uc_vm_t *vm, size_t nargs)
|
||||
hostapd_config_free_bss(hapd->conf);
|
||||
os_free(hapd);
|
||||
|
||||
hostapd_ucode_update_bss_list(iface);
|
||||
hostapd_ucode_update_interfaces();
|
||||
ucv_gc(vm);
|
||||
|
||||
return NULL;
|
||||
@ -252,7 +252,7 @@ uc_hostapd_iface_add_bss(uc_vm_t *vm, size_t nargs)
|
||||
iface->conf->bss[iface->conf->num_bss] = bss;
|
||||
conf->bss[idx] = NULL;
|
||||
ret = hostapd_ucode_bss_get_uval(hapd);
|
||||
hostapd_ucode_update_bss_list(iface);
|
||||
hostapd_ucode_update_interfaces();
|
||||
goto out;
|
||||
|
||||
deinit_ctrl:
|
||||
@ -332,16 +332,21 @@ uc_hostapd_iface_start(uc_vm_t *vm, size_t nargs)
|
||||
conf->channel = intval;
|
||||
if ((intval = ucv_int64_get(ucv_object_get(info, "sec_channel", NULL))) && !errno)
|
||||
conf->secondary_channel = intval;
|
||||
#ifdef CONFIG_IEEE80211AC
|
||||
if ((intval = ucv_int64_get(ucv_object_get(info, "center_seg0_idx", NULL))) && !errno) {
|
||||
conf->vht_oper_centr_freq_seg0_idx = intval;
|
||||
#ifdef CONFIG_IEEE80211AX
|
||||
conf->he_oper_centr_freq_seg0_idx = intval;
|
||||
#endif
|
||||
#ifdef CONFIG_IEEE80211BE
|
||||
conf->eht_oper_centr_freq_seg0_idx = intval;
|
||||
#endif
|
||||
}
|
||||
if ((intval = ucv_int64_get(ucv_object_get(info, "center_seg1_idx", NULL))) && !errno) {
|
||||
conf->vht_oper_centr_freq_seg1_idx = intval;
|
||||
#ifdef CONFIG_IEEE80211AX
|
||||
conf->he_oper_centr_freq_seg1_idx = intval;
|
||||
#endif
|
||||
#ifdef CONFIG_IEEE80211BE
|
||||
conf->eht_oper_centr_freq_seg1_idx = intval;
|
||||
#endif
|
||||
@ -349,11 +354,14 @@ uc_hostapd_iface_start(uc_vm_t *vm, size_t nargs)
|
||||
intval = ucv_int64_get(ucv_object_get(info, "oper_chwidth", NULL));
|
||||
if (!errno) {
|
||||
conf->vht_oper_chwidth = intval;
|
||||
#ifdef CONFIG_IEEE80211AX
|
||||
conf->he_oper_chwidth = intval;
|
||||
#endif
|
||||
#ifdef CONFIG_IEEE80211BE
|
||||
conf->eht_oper_chwidth = intval;
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
out:
|
||||
if (conf->channel)
|
||||
|
@ -119,7 +119,12 @@ uc_value_t *uc_wpa_freq_info(uc_vm_t *vm, size_t nargs)
|
||||
if (!sec_channel)
|
||||
return ret;
|
||||
|
||||
center_ofs = freq_val >= 5900 ? 0 : 3;
|
||||
if (freq_val >= 5900)
|
||||
center_ofs = 0;
|
||||
else if (freq_val >= 5745)
|
||||
center_ofs = 20;
|
||||
else
|
||||
center_ofs = 35;
|
||||
tmp_channel = channel - center_ofs;
|
||||
tmp_channel &= ~((8 << width) - 1);
|
||||
center_idx = tmp_channel + center_ofs + (4 << width) - 1;
|
||||
@ -266,21 +271,7 @@ uc_value_t *wpa_ucode_global_init(const char *name, uc_resource_type_t *global_t
|
||||
return global;
|
||||
}
|
||||
|
||||
static uc_value_t *wpa_ucode_prototype_clone(uc_value_t *uval)
|
||||
{
|
||||
uc_value_t *proto, *proto_new;
|
||||
|
||||
proto = ucv_prototype_get(uval);
|
||||
proto_new = ucv_object_new(&vm);
|
||||
|
||||
ucv_object_foreach(proto, key, val)
|
||||
ucv_object_add(proto_new, key, ucv_get(val));
|
||||
ucv_prototype_set(uval, ucv_get(proto));
|
||||
|
||||
return proto;
|
||||
}
|
||||
|
||||
void wpa_ucode_registry_add(uc_value_t *reg, uc_value_t *val, int *idx)
|
||||
int wpa_ucode_registry_add(uc_value_t *reg, uc_value_t *val)
|
||||
{
|
||||
uc_value_t *data;
|
||||
int i = 0;
|
||||
@ -290,10 +281,7 @@ void wpa_ucode_registry_add(uc_value_t *reg, uc_value_t *val, int *idx)
|
||||
|
||||
ucv_array_set(reg, i, ucv_get(val));
|
||||
|
||||
data = ucv_object_new(&vm);
|
||||
ucv_object_add(wpa_ucode_prototype_clone(val), "data", ucv_get(data));
|
||||
|
||||
*idx = i + 1;
|
||||
return i + 1;
|
||||
}
|
||||
|
||||
uc_value_t *wpa_ucode_registry_get(uc_value_t *reg, int idx)
|
||||
|
@ -17,7 +17,7 @@ void wpa_ucode_free_vm(void);
|
||||
|
||||
uc_value_t *wpa_ucode_global_init(const char *name, uc_resource_type_t *global_type);
|
||||
|
||||
void wpa_ucode_registry_add(uc_value_t *reg, uc_value_t *val, int *idx);
|
||||
int wpa_ucode_registry_add(uc_value_t *reg, uc_value_t *val);
|
||||
uc_value_t *wpa_ucode_registry_get(uc_value_t *reg, int idx);
|
||||
uc_value_t *wpa_ucode_registry_remove(uc_value_t *reg, int idx);
|
||||
|
||||
|
@ -21,7 +21,7 @@ wpas_ucode_iface_get_uval(struct wpa_supplicant *wpa_s)
|
||||
return wpa_ucode_registry_get(iface_registry, wpa_s->ucode.idx);
|
||||
|
||||
val = uc_resource_new(iface_type, wpa_s);
|
||||
wpa_ucode_registry_add(iface_registry, val, &wpa_s->ucode.idx);
|
||||
wpa_s->ucode.idx = wpa_ucode_registry_add(iface_registry, val);
|
||||
|
||||
return val;
|
||||
}
|
||||
@ -84,9 +84,10 @@ void wpas_ucode_update_state(struct wpa_supplicant *wpa_s)
|
||||
return;
|
||||
|
||||
state = wpa_supplicant_state_txt(wpa_s->wpa_state);
|
||||
uc_value_push(ucv_get(ucv_string_new(wpa_s->ifname)));
|
||||
uc_value_push(ucv_get(val));
|
||||
uc_value_push(ucv_get(ucv_string_new(state)));
|
||||
ucv_put(wpa_ucode_call(2));
|
||||
ucv_put(wpa_ucode_call(3));
|
||||
ucv_gc(vm);
|
||||
}
|
||||
|
||||
@ -105,6 +106,7 @@ void wpas_ucode_event(struct wpa_supplicant *wpa_s, int event, union wpa_event_d
|
||||
if (wpa_ucode_call_prepare("event"))
|
||||
return;
|
||||
|
||||
uc_value_push(ucv_get(ucv_string_new(wpa_s->ifname)));
|
||||
uc_value_push(ucv_get(val));
|
||||
uc_value_push(ucv_get(ucv_string_new(event_to_string(event))));
|
||||
val = ucv_object_new(vm);
|
||||
@ -118,7 +120,7 @@ void wpas_ucode_event(struct wpa_supplicant *wpa_s, int event, union wpa_event_d
|
||||
ucv_object_add(val, "center_freq2", ucv_int64_new(data->ch_switch.cf2));
|
||||
}
|
||||
|
||||
ucv_put(wpa_ucode_call(3));
|
||||
ucv_put(wpa_ucode_call(4));
|
||||
ucv_gc(vm);
|
||||
}
|
||||
|
||||
@ -245,7 +247,7 @@ int wpas_ucode_init(struct wpa_global *gl)
|
||||
iface_type = uc_type_declare(vm, "wpas.iface", iface_fns, NULL);
|
||||
|
||||
iface_registry = ucv_array_new(vm);
|
||||
uc_vm_registry_set(vm, "hostap.iface_registry", iface_registry);
|
||||
uc_vm_registry_set(vm, "wpas.iface_registry", iface_registry);
|
||||
|
||||
global = wpa_ucode_global_init("wpas", global_type);
|
||||
|
||||
|
@ -88,7 +88,7 @@ Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||||
commit->event = kzalloc(sizeof(*commit->event),
|
||||
--- a/drivers/gpu/drm/i915/display/intel_display.c
|
||||
+++ b/drivers/gpu/drm/i915/display/intel_display.c
|
||||
@@ -7765,6 +7765,19 @@ static int intel_atomic_commit(struct dr
|
||||
@@ -7743,6 +7743,19 @@ static int intel_atomic_commit(struct dr
|
||||
state->base.legacy_cursor_update = false;
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/drivers/net/dsa/bcm_sf2.c
|
||||
+++ b/drivers/net/dsa/bcm_sf2.c
|
||||
@@ -1512,10 +1512,14 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
@@ -1516,10 +1516,14 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
rev = reg_readl(priv, REG_PHY_REVISION);
|
||||
priv->hw_params.gphy_rev = rev & PHY_REVISION_MASK;
|
||||
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
|
||||
--- a/drivers/net/dsa/bcm_sf2.c
|
||||
+++ b/drivers/net/dsa/bcm_sf2.c
|
||||
@@ -1526,6 +1526,12 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
@@ -1530,6 +1530,12 @@ static int bcm_sf2_sw_probe(struct platf
|
||||
priv->hw_params.core_rev >> 8, priv->hw_params.core_rev & 0xff,
|
||||
priv->irq0, priv->irq1);
|
||||
|
||||
|
@ -325,7 +325,7 @@ Signed-off-by: T.J. Mercier <tjmercier@google.com>
|
||||
mctz = soft_limit_tree.rb_tree_per_node[nid];
|
||||
if (!mctz)
|
||||
return;
|
||||
@@ -3522,6 +3532,9 @@ unsigned long mem_cgroup_soft_limit_recl
|
||||
@@ -3523,6 +3533,9 @@ unsigned long mem_cgroup_soft_limit_recl
|
||||
struct mem_cgroup_tree_per_node *mctz;
|
||||
unsigned long excess;
|
||||
|
||||
@ -335,7 +335,7 @@ Signed-off-by: T.J. Mercier <tjmercier@google.com>
|
||||
if (order > 0)
|
||||
return 0;
|
||||
|
||||
@@ -5382,6 +5395,7 @@ static int mem_cgroup_css_online(struct
|
||||
@@ -5383,6 +5396,7 @@ static int mem_cgroup_css_online(struct
|
||||
if (unlikely(mem_cgroup_is_root(memcg)))
|
||||
queue_delayed_work(system_unbound_wq, &stats_flush_dwork,
|
||||
2UL*HZ);
|
||||
@ -343,7 +343,7 @@ Signed-off-by: T.J. Mercier <tjmercier@google.com>
|
||||
return 0;
|
||||
offline_kmem:
|
||||
memcg_offline_kmem(memcg);
|
||||
@@ -5413,6 +5427,7 @@ static void mem_cgroup_css_offline(struc
|
||||
@@ -5414,6 +5428,7 @@ static void mem_cgroup_css_offline(struc
|
||||
memcg_offline_kmem(memcg);
|
||||
reparent_shrinker_deferred(memcg);
|
||||
wb_memcg_offline(memcg);
|
||||
@ -351,7 +351,7 @@ Signed-off-by: T.J. Mercier <tjmercier@google.com>
|
||||
|
||||
drain_all_stock(memcg);
|
||||
|
||||
@@ -5424,6 +5439,7 @@ static void mem_cgroup_css_released(stru
|
||||
@@ -5425,6 +5440,7 @@ static void mem_cgroup_css_released(stru
|
||||
struct mem_cgroup *memcg = mem_cgroup_from_css(css);
|
||||
|
||||
invalidate_reclaim_iterators(memcg);
|
||||
|
@ -79,7 +79,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
INDIRECT_CALLABLE_DECLARE(struct dst_entry *ip6_dst_check(struct dst_entry *,
|
||||
u32));
|
||||
INDIRECT_CALLABLE_DECLARE(struct dst_entry *ipv4_dst_check(struct dst_entry *,
|
||||
@@ -2168,9 +2182,11 @@ static void __sk_free(struct sock *sk)
|
||||
@@ -2175,9 +2189,11 @@ static void __sk_free(struct sock *sk)
|
||||
if (likely(sk->sk_net_refcnt))
|
||||
sock_inuse_add(sock_net(sk), -1);
|
||||
|
||||
|
@ -330,7 +330,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||
|
||||
--- a/net/core/sock.c
|
||||
+++ b/net/core/sock.c
|
||||
@@ -4093,6 +4093,8 @@ static __net_initdata struct pernet_oper
|
||||
@@ -4100,6 +4100,8 @@ static __net_initdata struct pernet_oper
|
||||
|
||||
static int __init proto_init(void)
|
||||
{
|
||||
|
@ -1102,7 +1102,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
|
||||
# ZLIB_INFLATE; DECOMPRESS_GZIP is just a wrapper.)
|
||||
--- a/lib/Makefile
|
||||
+++ b/lib/Makefile
|
||||
@@ -134,6 +134,16 @@ CFLAGS_kobject.o += -DDEBUG
|
||||
@@ -140,6 +140,16 @@ CFLAGS_kobject.o += -DDEBUG
|
||||
CFLAGS_kobject_uevent.o += -DDEBUG
|
||||
endif
|
||||
|
||||
@ -1119,7 +1119,7 @@ Signed-off-by: Alexandros C. Couloumbis <alex@ozo.com>
|
||||
obj-$(CONFIG_DEBUG_INFO_REDUCED) += debug_info.o
|
||||
CFLAGS_debug_info.o += $(call cc-option, -femit-struct-debug-detailed=any)
|
||||
|
||||
@@ -194,6 +204,8 @@ obj-$(CONFIG_ZSTD_COMPRESS) += zstd/
|
||||
@@ -200,6 +210,8 @@ obj-$(CONFIG_ZSTD_COMPRESS) += zstd/
|
||||
obj-$(CONFIG_ZSTD_DECOMPRESS) += zstd/
|
||||
obj-$(CONFIG_XZ_DEC) += xz/
|
||||
obj-$(CONFIG_RAID6_PQ) += raid6/
|
||||
|
@ -157,7 +157,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
case RTN_THROW:
|
||||
case RTN_UNREACHABLE:
|
||||
default:
|
||||
@@ -4539,6 +4558,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
@@ -4540,6 +4559,17 @@ static int ip6_pkt_prohibit_out(struct n
|
||||
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
||||
}
|
||||
|
||||
@ -175,7 +175,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
/*
|
||||
* Allocate a dst for local (unicast / anycast) address.
|
||||
*/
|
||||
@@ -5032,7 +5062,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
@@ -5033,7 +5063,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
||||
rtm->rtm_type == RTN_BLACKHOLE ||
|
||||
rtm->rtm_type == RTN_PROHIBIT ||
|
||||
@ -185,7 +185,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
cfg->fc_flags |= RTF_REJECT;
|
||||
|
||||
if (rtm->rtm_type == RTN_LOCAL)
|
||||
@@ -6286,6 +6317,8 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6287,6 +6318,8 @@ static int ip6_route_dev_notify(struct n
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||
@ -194,7 +194,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||
#endif
|
||||
@@ -6297,6 +6330,7 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -6298,6 +6331,7 @@ static int ip6_route_dev_notify(struct n
|
||||
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
|
||||
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
|
||||
#endif
|
||||
}
|
||||
@@ -6488,6 +6522,8 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6489,6 +6523,8 @@ static int __net_init ip6_route_net_init
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.fib6_has_custom_rules = false;
|
||||
@ -211,7 +211,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
|
||||
sizeof(*net->ipv6.ip6_prohibit_entry),
|
||||
GFP_KERNEL);
|
||||
@@ -6498,11 +6534,21 @@ static int __net_init ip6_route_net_init
|
||||
@@ -6499,11 +6535,21 @@ static int __net_init ip6_route_net_init
|
||||
ip6_template_metrics, true);
|
||||
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
|
||||
|
||||
@ -234,7 +234,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||
ip6_template_metrics, true);
|
||||
@@ -6529,6 +6575,8 @@ out:
|
||||
@@ -6530,6 +6576,8 @@ out:
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
out_ip6_prohibit_entry:
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
out_ip6_null_entry:
|
||||
@@ -6548,6 +6596,7 @@ static void __net_exit ip6_route_net_exi
|
||||
@@ -6549,6 +6597,7 @@ static void __net_exit ip6_route_net_exi
|
||||
kfree(net->ipv6.ip6_null_entry);
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
@ -251,7 +251,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||
#endif
|
||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||
@@ -6631,6 +6680,9 @@ void __init ip6_route_init_special_entri
|
||||
@@ -6632,6 +6681,9 @@ void __init ip6_route_init_special_entri
|
||||
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
|
@ -104,7 +104,8 @@ TARGET_DEVICES += sinovoip_bananapi-m2-ultra
|
||||
define Device/lemaker_bananapro
|
||||
DEVICE_VENDOR := LeMaker
|
||||
DEVICE_MODEL := Banana Pro
|
||||
DEVICE_PACKAGES:=kmod-rtc-sunxi kmod-ata-sunxi kmod-brcmfmac
|
||||
DEVICE_PACKAGES:=kmod-rtc-sunxi kmod-ata-sunxi kmod-brcmfmac \
|
||||
cypress-firmware-43362-sdio wpad-basic-mbedtls
|
||||
SOC := sun7i-a20
|
||||
endef
|
||||
TARGET_DEVICES += lemaker_bananapro
|
||||
@ -176,6 +177,15 @@ define Device/sinovoip_bananapi-m2-plus
|
||||
endef
|
||||
TARGET_DEVICES += sinovoip_bananapi-m2-plus
|
||||
|
||||
define Device/sinovoip_bananapi-m3
|
||||
DEVICE_VENDOR := Sinovoip
|
||||
DEVICE_MODEL := Banana Pi M3
|
||||
DEVICE_PACKAGES:=kmod-rtc-sunxi kmod-leds-gpio kmod-rtc-ac100 \
|
||||
kmod-brcmfmac cypress-firmware-43430-sdio wpad-basic-mbedtls
|
||||
SOC := sun8i-a83t
|
||||
endef
|
||||
TARGET_DEVICES += sinovoip_bananapi-m3
|
||||
|
||||
define Device/xunlong_orangepi-one
|
||||
DEVICE_VENDOR := Xunlong
|
||||
DEVICE_MODEL := Orange Pi One
|
||||
|
@ -2,6 +2,40 @@
|
||||
#
|
||||
# Copyright (C) 2013-2016 OpenWrt.org
|
||||
|
||||
define KernelPackage/mfd-ac100
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=X-Powers AC100 MFD support
|
||||
DEPENDS:=@TARGET_sunxi
|
||||
KCONFIG:= \
|
||||
CONFIG_MFD_AC100
|
||||
FILES:=$(LINUX_DIR)/drivers/mfd/ac100.ko
|
||||
AUTOLOAD:=$(call AutoLoad,50,ac100)
|
||||
endef
|
||||
|
||||
define KernelPackage/mfd-ac100/description
|
||||
Support for the X-Powers AC100 RTC/audio chip
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,mfd-ac100))
|
||||
|
||||
define KernelPackage/rtc-ac100
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=X-Powers AC100 RTC support
|
||||
DEPENDS:=@TARGET_sunxi +kmod-mfd-ac100
|
||||
$(call AddDepends/rtc)
|
||||
KCONFIG:= \
|
||||
CONFIG_RTC_DRV_AC100 \
|
||||
CONFIG_RTC_CLASS=y
|
||||
FILES:=$(LINUX_DIR)/drivers/rtc/rtc-ac100.ko
|
||||
AUTOLOAD:=$(call AutoLoad,50,rtc-ac100)
|
||||
endef
|
||||
|
||||
define KernelPackage/rtc-ac100/description
|
||||
Support for the X-Powers AC100 RTC
|
||||
endef
|
||||
|
||||
$(eval $(call KernelPackage,rtc-ac100))
|
||||
|
||||
define KernelPackage/rtc-sunxi
|
||||
SUBMENU:=$(OTHER_MENU)
|
||||
TITLE:=Sunxi SoC built-in RTC support
|
||||
|
Loading…
x
Reference in New Issue
Block a user