mirror of
https://github.com/Telecominfraproject/wlan-ap.git
synced 2025-10-30 01:52:51 +00:00
wifi-ax: backport hostapd reload support
Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
committed by
John Crispin
parent
323dc65770
commit
5b397d54ce
@@ -96,7 +96,7 @@ endef
|
||||
define Package/ucode-mod-nl80211
|
||||
$(Package/ucode/default)
|
||||
TITLE+= (nl80211 module)
|
||||
DEPENDS:=ucode +libnl-tiny +libubox
|
||||
DEPENDS:=ucode +libnl-tiny +libubox +kmod-mac80211
|
||||
endef
|
||||
|
||||
define Package/ucode-mod-nl80211/description
|
||||
|
||||
@@ -84,6 +84,8 @@ ifneq ($(CONFIG_DRIVER_11AX_SUPPORT),)
|
||||
HOSTAPD_IEEE80211AX:=y
|
||||
endif
|
||||
|
||||
CORE_DEPENDS = +libubus +libucode +ucode-mod-fs +ucode-mod-nl80211 +ucode-mod-ubus +ucode-mod-uloop +libblobmsg-json
|
||||
|
||||
DRIVER_MAKEOPTS= \
|
||||
CONFIG_ACS=$(CONFIG_PACKAGE_kmod-cfg80211) \
|
||||
CONFIG_DRIVER_NL80211=$(CONFIG_PACKAGE_kmod-cfg80211) \
|
||||
@@ -91,6 +93,7 @@ DRIVER_MAKEOPTS= \
|
||||
CONFIG_IEEE80211AC=$(HOSTAPD_IEEE80211AC) \
|
||||
CONFIG_IEEE80211AX=$(HOSTAPD_IEEE80211AX) \
|
||||
CONFIG_DRIVER_WEXT=$(CONFIG_DRIVER_WEXT_SUPPORT) \
|
||||
CONFIG_UCODE=y
|
||||
|
||||
ifeq ($(SSL_VARIANT),openssl)
|
||||
DRIVER_MAKEOPTS += CONFIG_TLS=openssl CONFIG_SAE=y
|
||||
@@ -142,7 +145,7 @@ define Package/hostapd/Default
|
||||
SUBMENU:=WirelessAPD
|
||||
TITLE:=IEEE 802.1x Authenticator
|
||||
URL:=http://hostap.epitest.fi/
|
||||
DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
|
||||
DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
|
||||
USERID:=network=101:network=101
|
||||
PROVIDES:=hostapd
|
||||
CONFLICTS:=$(HOSTAPD_PROVIDERS)
|
||||
@@ -226,7 +229,7 @@ define Package/wpad/Default
|
||||
CATEGORY:=Network
|
||||
SUBMENU:=WirelessAPD
|
||||
TITLE:=IEEE 802.1x Auth/Supplicant
|
||||
DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
|
||||
DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
|
||||
USERID:=network=101:network=101
|
||||
URL:=http://hostap.epitest.fi/
|
||||
PROVIDES:=hostapd wpa-supplicant
|
||||
@@ -341,7 +344,7 @@ define Package/wpa-supplicant/Default
|
||||
SUBMENU:=WirelessAPD
|
||||
TITLE:=WPA Supplicant
|
||||
URL:=http://hostap.epitest.fi/wpa_supplicant/
|
||||
DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus
|
||||
DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
|
||||
USERID:=network=101:network=101
|
||||
PROVIDES:=wpa-supplicant
|
||||
CONFLICTS:=$(SUPPLICANT_PROVIDERS)
|
||||
@@ -446,7 +449,7 @@ define Package/eapol-test/Default
|
||||
SECTION:=net
|
||||
SUBMENU:=WirelessAPD
|
||||
CATEGORY:=Network
|
||||
DEPENDS:=$(DRV_DEPENDS) +libubus
|
||||
DEPENDS:=$(DRV_DEPENDS) $(CORE_DEPENDS)
|
||||
endef
|
||||
|
||||
define Package/eapol-test
|
||||
@@ -503,7 +506,7 @@ TARGET_CPPFLAGS := \
|
||||
$(if $(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY))
|
||||
|
||||
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections -flto=jobserver -fuse-linker-plugin -lubox -lubus
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections -flto=jobserver -fuse-linker-plugin -lubox -lubus -lucode
|
||||
|
||||
ifdef CONFIG_PACKAGE_kmod-cfg80211
|
||||
TARGET_LDFLAGS += -lm -lnl-tiny
|
||||
@@ -587,20 +590,24 @@ define Build/Compile
|
||||
endef
|
||||
|
||||
define Install/hostapd
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/share/hostap
|
||||
$(INSTALL_DATA) ./files/hostapd.uc $(1)/usr/share/hostap/
|
||||
endef
|
||||
|
||||
define Install/supplicant
|
||||
$(INSTALL_DIR) $(1)/usr/sbin
|
||||
$(INSTALL_DIR) $(1)/usr/sbin $(1)/usr/share/hostap
|
||||
$(INSTALL_DATA) ./files/wpa_supplicant.uc $(1)/usr/share/hostap/
|
||||
endef
|
||||
|
||||
define Package/hostapd-common/install
|
||||
$(INSTALL_DIR) $(1)/etc/capabilities $(1)/etc/rc.button $(1)/etc/hotplug.d/ieee80211 $(1)/etc/init.d $(1)/lib/netifd $(1)/usr/share/acl.d
|
||||
$(INSTALL_DIR) $(1)/etc/capabilities $(1)/etc/rc.button $(1)/etc/hotplug.d/ieee80211 $(1)/etc/init.d $(1)/lib/netifd $(1)/usr/share/acl.d $(1)/usr/share/hostap
|
||||
$(INSTALL_DATA) ./files/hostapd.sh $(1)/lib/netifd/hostapd.sh
|
||||
$(INSTALL_BIN) ./files/wpad.init $(1)/etc/init.d/wpad
|
||||
$(INSTALL_BIN) ./files/wps-hotplug.sh $(1)/etc/rc.button/wps
|
||||
$(INSTALL_DATA) ./files/wpad_acl.json $(1)/usr/share/acl.d
|
||||
$(INSTALL_DATA) ./files/wpad.json $(1)/etc/capabilities
|
||||
$(INSTALL_DATA) ./files/common.uc $(1)/usr/share/hostap/
|
||||
$(INSTALL_DATA) ./files/wdev.uc $(1)/usr/share/hostap/
|
||||
endef
|
||||
|
||||
define Package/hostapd/install
|
||||
|
||||
156
feeds/wifi-ax/hostapd/files/common.uc
Normal file
156
feeds/wifi-ax/hostapd/files/common.uc
Normal file
@@ -0,0 +1,156 @@
|
||||
import * as nl80211 from "nl80211";
|
||||
import * as rtnl from "rtnl";
|
||||
import { readfile } from "fs";
|
||||
|
||||
const iftypes = {
|
||||
ap: nl80211.const.NL80211_IFTYPE_AP,
|
||||
mesh: nl80211.const.NL80211_IFTYPE_MESH_POINT,
|
||||
sta: nl80211.const.NL80211_IFTYPE_STATION,
|
||||
adhoc: nl80211.const.NL80211_IFTYPE_ADHOC,
|
||||
monitor: nl80211.const.NL80211_IFTYPE_MONITOR,
|
||||
};
|
||||
|
||||
function wdev_remove(name)
|
||||
{
|
||||
nl80211.request(nl80211.const.NL80211_CMD_DEL_INTERFACE, 0, { dev: name });
|
||||
}
|
||||
|
||||
|
||||
function find_reusable_wdev(phyidx)
|
||||
{
|
||||
let data = nl80211.request(nl80211.const.NL80211_CMD_GET_WIPHY, 0, { wiphy: phyidx });
|
||||
if (data.software_iftypes.ap_vlan)
|
||||
return null;
|
||||
|
||||
data = nl80211.request(
|
||||
nl80211.const.NL80211_CMD_GET_INTERFACE,
|
||||
nl80211.const.NLM_F_DUMP,
|
||||
{ wiphy: phyidx });
|
||||
for (let res in data)
|
||||
if (trim(readfile(`/sys/class/net/${res.ifname}/operstate`)) == "down")
|
||||
return res.ifname;
|
||||
return null;
|
||||
}
|
||||
|
||||
function wdev_create(phy, name, data)
|
||||
{
|
||||
let phyidx = int(readfile(`/sys/class/ieee80211/${phy}/index`));
|
||||
|
||||
wdev_remove(name);
|
||||
|
||||
if (!iftypes[data.mode])
|
||||
return `Invalid mode: ${data.mode}`;
|
||||
|
||||
let req = {
|
||||
wiphy: phyidx,
|
||||
ifname: name,
|
||||
iftype: iftypes[data.mode],
|
||||
};
|
||||
|
||||
if (data["4addr"])
|
||||
req["4addr"] = data["4addr"];
|
||||
if (data.macaddr)
|
||||
req.mac = data.macaddr;
|
||||
|
||||
nl80211.error();
|
||||
|
||||
let reuse_ifname = find_reusable_wdev(phyidx);
|
||||
if (reuse_ifname &&
|
||||
(reuse_ifname == name ||
|
||||
rtnl.request(rtnl.const.RTM_SETLINK, 0, { dev: reuse_ifname, ifname: name}) != false))
|
||||
nl80211.request(
|
||||
nl80211.const.NL80211_CMD_SET_INTERFACE, 0, {
|
||||
wiphy: phyidx,
|
||||
dev: name,
|
||||
iftype: iftypes[data.mode],
|
||||
});
|
||||
else
|
||||
nl80211.request(
|
||||
nl80211.const.NL80211_CMD_NEW_INTERFACE,
|
||||
nl80211.const.NLM_F_CREATE,
|
||||
req);
|
||||
|
||||
let error = nl80211.error();
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
if (data.powersave != null) {
|
||||
nl80211.request(nl80211.const.NL80211_CMD_SET_POWER_SAVE, 0,
|
||||
{ dev: name, ps_state: data.powersave ? 1 : 0});
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
const vlist_proto = {
|
||||
update: function(values, arg) {
|
||||
let data = this.data;
|
||||
let cb = this.cb;
|
||||
let seq = { };
|
||||
let new_data = {};
|
||||
let old_data = {};
|
||||
|
||||
this.data = new_data;
|
||||
|
||||
if (type(values) == "object") {
|
||||
for (let key in values) {
|
||||
old_data[key] = data[key];
|
||||
new_data[key] = values[key];
|
||||
delete data[key];
|
||||
}
|
||||
} else {
|
||||
for (let val in values) {
|
||||
let cur_key = val[0];
|
||||
let cur_obj = val[1];
|
||||
|
||||
old_data[cur_key] = data[cur_key];
|
||||
new_data[cur_key] = val[1];
|
||||
delete data[cur_key];
|
||||
}
|
||||
}
|
||||
|
||||
for (let key in data) {
|
||||
cb(null, data[key], arg);
|
||||
delete data[key];
|
||||
}
|
||||
for (let key in new_data)
|
||||
cb(new_data[key], old_data[key], arg);
|
||||
}
|
||||
};
|
||||
|
||||
function is_equal(val1, val2) {
|
||||
let t1 = type(val1);
|
||||
|
||||
if (t1 != type(val2))
|
||||
return false;
|
||||
|
||||
if (t1 == "array") {
|
||||
if (length(val1) != length(val2))
|
||||
return false;
|
||||
|
||||
for (let i = 0; i < length(val1); i++)
|
||||
if (!is_equal(val1[i], val2[i]))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
} else if (t1 == "object") {
|
||||
for (let key in val1)
|
||||
if (!is_equal(val1[key], val2[key]))
|
||||
return false;
|
||||
for (let key in val2)
|
||||
if (!val1[key])
|
||||
return false;
|
||||
return true;
|
||||
} else {
|
||||
return val1 == val2;
|
||||
}
|
||||
}
|
||||
|
||||
function vlist_new(cb) {
|
||||
return proto({
|
||||
cb: cb,
|
||||
data: {}
|
||||
}, vlist_proto);
|
||||
}
|
||||
|
||||
export { wdev_remove, wdev_create, is_equal, vlist_new };
|
||||
405
feeds/wifi-ax/hostapd/files/hostapd.uc
Normal file
405
feeds/wifi-ax/hostapd/files/hostapd.uc
Normal file
@@ -0,0 +1,405 @@
|
||||
let libubus = require("ubus");
|
||||
import { open, readfile } from "fs";
|
||||
import { wdev_create, wdev_remove, is_equal, vlist_new } from "common";
|
||||
|
||||
let ubus = libubus.connect();
|
||||
|
||||
hostapd.data.config = {};
|
||||
|
||||
hostapd.data.file_fields = {
|
||||
vlan_file: true,
|
||||
wpa_psk_file: true,
|
||||
accept_mac_file: true,
|
||||
deny_mac_file: true,
|
||||
eap_user_file: true,
|
||||
ca_cert: true,
|
||||
server_cert: true,
|
||||
server_cert2: true,
|
||||
private_key: true,
|
||||
private_key2: true,
|
||||
dh_file: true,
|
||||
eap_sim_db: true,
|
||||
};
|
||||
|
||||
function iface_remove(cfg)
|
||||
{
|
||||
if (!cfg || !cfg.bss || !cfg.bss[0] || !cfg.bss[0].ifname)
|
||||
return;
|
||||
|
||||
hostapd.remove_iface(cfg.bss[0].ifname);
|
||||
for (let bss in cfg.bss)
|
||||
wdev_remove(bss.ifname);
|
||||
}
|
||||
|
||||
function write_lines(f, data)
|
||||
{
|
||||
for (let line in data) {
|
||||
f.write(line);
|
||||
f.write("\n");
|
||||
}
|
||||
}
|
||||
|
||||
function iface_write_config(phy, config)
|
||||
{
|
||||
config.file = `/var/run/ap-${phy}.conf`;
|
||||
|
||||
let f = open(config.file, "w");
|
||||
if (!f) {
|
||||
hostapd.printf(`Failed to open file ${config.file}`);
|
||||
return;
|
||||
}
|
||||
|
||||
write_lines(f, config.radio.data);
|
||||
f.write(`channel=${config.radio.channel}\n`);
|
||||
|
||||
for (let i = 0; i < length(config.bss); i++) {
|
||||
let bss = config.bss[i];
|
||||
let type = i > 0 ? "bss" : "interface";
|
||||
|
||||
f.write(`${type}=${bss.ifname}\n`);
|
||||
write_lines(f, bss.data);
|
||||
}
|
||||
f.close();
|
||||
}
|
||||
|
||||
function iface_restart(phy, config, old_config)
|
||||
{
|
||||
iface_remove(old_config);
|
||||
iface_remove(config);
|
||||
|
||||
if (!config.bss || !config.bss[0]) {
|
||||
hostapd.printf(`No bss for phy ${phy}`);
|
||||
return;
|
||||
}
|
||||
|
||||
let bss = config.bss[0];
|
||||
let err = wdev_create(phy, bss.ifname, { mode: "ap" });
|
||||
if (err)
|
||||
hostapd.printf(`Failed to create ${bss.ifname} on phy ${phy}: ${err}`);
|
||||
if (hostapd.add_iface(`bss_config=${bss.ifname}:${config.file}`) < 0) {
|
||||
hostapd.printf(`hostapd.add_iface failed for phy ${phy} ifname=${bss.ifname}`);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
function array_to_obj(arr, key, start)
|
||||
{
|
||||
let obj = {};
|
||||
|
||||
start ??= 0;
|
||||
for (let i = start; i < length(arr); i++) {
|
||||
let cur = arr[i];
|
||||
obj[cur[key]] = cur;
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
function find_array_idx(arr, key, val)
|
||||
{
|
||||
for (let i = 0; i < length(arr); i++)
|
||||
if (arr[i][key] == val)
|
||||
return i;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
function bss_reload_psk(bss, config, old_config)
|
||||
{
|
||||
if (is_equal(old_config.hash.wpa_psk_file, config.hash.wpa_psk_file))
|
||||
return;
|
||||
|
||||
old_config.hash.wpa_psk_file = config.hash.wpa_psk_file;
|
||||
if (!is_equal(old_config, config))
|
||||
return;
|
||||
|
||||
let ret = bss.ctrl("RELOAD_WPA_PSK");
|
||||
ret ??= "failed";
|
||||
|
||||
hostapd.printf(`Reload WPA PSK file for bss ${config.ifname}: ${ret}`);
|
||||
}
|
||||
|
||||
function iface_reload_config(phy, config, old_config)
|
||||
{
|
||||
if (!old_config || !is_equal(old_config.radio, config.radio))
|
||||
return false;
|
||||
|
||||
if (is_equal(old_config.bss, config.bss))
|
||||
return true;
|
||||
|
||||
if (config.bss[0].ifname != old_config.bss[0].ifname)
|
||||
return false;
|
||||
|
||||
let iface = hostapd.interfaces[config.bss[0].ifname];
|
||||
if (!iface)
|
||||
return false;
|
||||
|
||||
bss_reload_psk(iface.bss[0], config.bss[0], old_config.bss[0]);
|
||||
if (!is_equal(config.bss[0], old_config.bss[0])) {
|
||||
hostapd.printf(`Reload config for bss '${config.bss[0].ifname}' on phy '${phy}'`);
|
||||
if (iface.bss[0].set_config(config.file, 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];
|
||||
if (!bss) {
|
||||
hostapd.printf(`bss '${name}' not found`);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!new_cfg[name]) {
|
||||
hostapd.printf(`Remove bss '${name}' on phy '${phy}'`);
|
||||
bss.delete();
|
||||
continue;
|
||||
}
|
||||
|
||||
let new_cfg_data = new_cfg[name];
|
||||
delete new_cfg[name];
|
||||
|
||||
if (is_equal(old_cfg[name], new_cfg_data))
|
||||
continue;
|
||||
|
||||
hostapd.printf(`Reload config for bss '${name}' on phy '${phy}'`);
|
||||
let idx = find_array_idx(config.bss, "ifname", name);
|
||||
if (idx < 0) {
|
||||
hostapd.printf(`bss index not found`);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (bss.set_config(config.file, idx) < 0) {
|
||||
hostapd.printf(`Failed to set config`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (let name in new_cfg) {
|
||||
hostapd.printf(`Add bss '${name}' on phy '${phy}'`);
|
||||
|
||||
let idx = find_array_idx(config.bss, "ifname", name);
|
||||
if (idx < 0) {
|
||||
hostapd.printf(`bss index not found`);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (iface.add_bss(config.file, idx) < 0) {
|
||||
hostapd.printf(`Failed to add bss`);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function iface_set_config(phy, config)
|
||||
{
|
||||
let old_config = hostapd.data.config[phy];
|
||||
|
||||
hostapd.data.config[phy] = config;
|
||||
|
||||
if (!config)
|
||||
return iface_remove(old_config);
|
||||
|
||||
iface_write_config(phy, config);
|
||||
|
||||
let ret = iface_reload_config(phy, config, old_config);
|
||||
if (ret) {
|
||||
hostapd.printf(`Reloaded settings for phy ${phy}`);
|
||||
return 0;
|
||||
}
|
||||
|
||||
hostapd.printf(`Restart interface for phy ${phy}`);
|
||||
return iface_restart(phy, config, old_config);
|
||||
}
|
||||
|
||||
function config_add_bss(config, name)
|
||||
{
|
||||
let bss = {
|
||||
ifname: name,
|
||||
data: [],
|
||||
hash: {}
|
||||
};
|
||||
|
||||
push(config.bss, bss);
|
||||
|
||||
return bss;
|
||||
}
|
||||
|
||||
function iface_load_config(filename)
|
||||
{
|
||||
let f = open(filename, "r");
|
||||
if (!f)
|
||||
return null;
|
||||
|
||||
let config = {
|
||||
radio: {
|
||||
data: []
|
||||
},
|
||||
bss: [],
|
||||
orig_file: filename,
|
||||
};
|
||||
|
||||
let bss;
|
||||
let line;
|
||||
while ((line = trim(f.read("line"))) != null) {
|
||||
let val = split(line, "=", 2);
|
||||
if (!val[0])
|
||||
continue;
|
||||
|
||||
if (val[0] == "interface") {
|
||||
bss = config_add_bss(config, val[1]);
|
||||
break;
|
||||
}
|
||||
|
||||
if (val[0] == "channel") {
|
||||
config.radio.channel = val[1];
|
||||
continue;
|
||||
}
|
||||
|
||||
push(config.radio.data, line);
|
||||
}
|
||||
|
||||
while ((line = trim(f.read("line"))) != null) {
|
||||
let val = split(line, "=", 2);
|
||||
if (!val[0])
|
||||
continue;
|
||||
|
||||
if (val[0] == "bss") {
|
||||
bss = config_add_bss(config, val[1]);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (hostapd.data.file_fields[val[0]])
|
||||
bss.hash[val[0]] = hostapd.sha1(readfile(val[1]));
|
||||
|
||||
push(bss.data, line);
|
||||
}
|
||||
f.close();
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
|
||||
|
||||
let main_obj = {
|
||||
reload: {
|
||||
args: {
|
||||
phy: "",
|
||||
},
|
||||
call: function(req) {
|
||||
try {
|
||||
let phy_list = req.args.phy ? [ req.args.phy ] : keys(hostapd.data.config);
|
||||
for (let phy_name in phy_list) {
|
||||
let phy = hostapd.data.config[phy_name];
|
||||
let config = iface_load_config(phy.orig_file);
|
||||
iface_set_config(phy_name, config);
|
||||
}
|
||||
} catch(e) {
|
||||
hostapd.printf(`Error reloading config: ${e}\n${e.stacktrace[0].context}`);
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
config_set: {
|
||||
args: {
|
||||
phy: "",
|
||||
config: "",
|
||||
prev_config: "",
|
||||
},
|
||||
call: function(req) {
|
||||
let phy = req.args.phy;
|
||||
let file = req.args.config;
|
||||
let prev_file = req.args.prev_config;
|
||||
|
||||
if (!phy)
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
|
||||
try {
|
||||
if (prev_file && !hostapd.data.config[phy]) {
|
||||
let config = iface_load_config(prev_file);
|
||||
if (config)
|
||||
config.radio.data = [];
|
||||
hostapd.data.config[phy] = config;
|
||||
}
|
||||
|
||||
let config = iface_load_config(file);
|
||||
|
||||
hostapd.printf(`Set new config for phy ${phy}: ${file}`);
|
||||
iface_set_config(phy, config);
|
||||
} catch(e) {
|
||||
hostapd.printf(`Error loading config: ${e}\n${e.stacktrace[0].context}`);
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
return {
|
||||
pid: hostapd.getpid()
|
||||
};
|
||||
}
|
||||
},
|
||||
config_add: {
|
||||
args: {
|
||||
iface: "",
|
||||
config: "",
|
||||
},
|
||||
call: function(req) {
|
||||
if (!req.args.iface || !req.args.config)
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
|
||||
if (hostapd.add_iface(`bss_config=${req.args.iface}:${req.args.config}`) < 0)
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
|
||||
return {
|
||||
pid: hostapd.getpid()
|
||||
};
|
||||
}
|
||||
},
|
||||
config_remove: {
|
||||
args: {
|
||||
iface: ""
|
||||
},
|
||||
call: function(req) {
|
||||
if (!req.args.iface)
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
|
||||
hostapd.remove_iface(req.args.iface);
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
hostapd.data.ubus = ubus;
|
||||
hostapd.data.obj = ubus.publish("hostapd", main_obj);
|
||||
|
||||
function bss_event(type, name, data) {
|
||||
let ubus = hostapd.data.ubus;
|
||||
|
||||
data ??= {};
|
||||
data.name = name;
|
||||
hostapd.data.obj.notify(`bss.${type}`, data, null, null, null, -1);
|
||||
ubus.call("service", "event", { type: `hostapd.${name}.${type}`, data: {} });
|
||||
}
|
||||
|
||||
return {
|
||||
shutdown: function() {
|
||||
for (let phy in hostapd.data.config)
|
||||
iface_set_config(phy, null);
|
||||
hostapd.ubus.disconnect();
|
||||
},
|
||||
bss_add: function(name, obj) {
|
||||
bss_event("add", name);
|
||||
},
|
||||
bss_reload: function(name, obj, reconf) {
|
||||
bss_event("reload", name, { reconf: reconf != 0 });
|
||||
},
|
||||
bss_remove: function(name, obj) {
|
||||
bss_event("remove", name);
|
||||
}
|
||||
};
|
||||
153
feeds/wifi-ax/hostapd/files/wdev.uc
Normal file
153
feeds/wifi-ax/hostapd/files/wdev.uc
Normal file
@@ -0,0 +1,153 @@
|
||||
#!/usr/bin/env ucode
|
||||
'use strict';
|
||||
import { vlist_new, is_equal, wdev_create, wdev_remove } from "/usr/share/hostap/common.uc";
|
||||
import { readfile, writefile, basename, glob } from "fs";
|
||||
|
||||
let keep_devices = {};
|
||||
let phy = shift(ARGV);
|
||||
let new_config = shift(ARGV);
|
||||
const mesh_params = [
|
||||
"mesh_retry_timeout", "mesh_confirm_timeout", "mesh_holding_timeout", "mesh_max_peer_links",
|
||||
"mesh_max_retries", "mesh_ttl", "mesh_element_ttl", "mesh_hwmp_max_preq_retries",
|
||||
"mesh_path_refresh_time", "mesh_min_discovery_timeout", "mesh_hwmp_active_path_timeout",
|
||||
"mesh_hwmp_preq_min_interval", "mesh_hwmp_net_diameter_traversal_time", "mesh_hwmp_rootmode",
|
||||
"mesh_hwmp_rann_interval", "mesh_gate_announcements", "mesh_sync_offset_max_neighor",
|
||||
"mesh_rssi_threshold", "mesh_hwmp_active_path_to_root_timeout", "mesh_hwmp_root_interval",
|
||||
"mesh_hwmp_confirmation_interval", "mesh_awake_window", "mesh_plink_timeout",
|
||||
"mesh_auto_open_plinks", "mesh_fwding", "mesh_power_mode"
|
||||
];
|
||||
|
||||
function iface_stop(wdev)
|
||||
{
|
||||
if (keep_devices[wdev.ifname])
|
||||
return;
|
||||
|
||||
wdev_remove(wdev.ifname);
|
||||
}
|
||||
|
||||
function iface_start(wdev)
|
||||
{
|
||||
let ifname = wdev.ifname;
|
||||
|
||||
if (readfile(`/sys/class/net/${ifname}/ifindex`)) {
|
||||
system([ "ip", "link", "set", "dev", ifname, "down" ]);
|
||||
wdev_remove(ifname);
|
||||
}
|
||||
wdev_create(phy, ifname, wdev);
|
||||
system([ "ip", "link", "set", "dev", ifname, "up" ]);
|
||||
if (wdev.freq)
|
||||
system(`iw dev ${ifname} set freq ${wdev.freq} ${wdev.htmode}`);
|
||||
if (wdev.mode == "adhoc") {
|
||||
let cmd = ["iw", "dev", ifname, "ibss", "join", wdev.ssid, wdev.freq, wdev.htmode, "fixed-freq" ];
|
||||
if (wdev.bssid)
|
||||
push(cmd, wdev.bssid);
|
||||
for (let key in [ "beacon-interval", "basic-rates", "mcast-rate", "keys" ])
|
||||
if (wdev[key])
|
||||
push(cmd, key, wdev[key]);
|
||||
system(cmd);
|
||||
} else if (wdev.mode == "mesh") {
|
||||
let cmd = [ "iw", "dev", ifname, "mesh", "join", ssid, "freq", wdev.freq, wdev.htmode ];
|
||||
for (let key in [ "beacon-interval", "mcast-rate" ])
|
||||
if (wdev[key])
|
||||
push(cmd, key, wdev[key]);
|
||||
system(cmd);
|
||||
|
||||
cmd = ["iw", "dev", ifname, "set", "mesh_param" ];
|
||||
let len = length(cmd);
|
||||
|
||||
for (let param in mesh_params)
|
||||
if (wdev[param])
|
||||
push(cmd, param, wdev[param]);
|
||||
|
||||
if (len == length(cmd))
|
||||
return;
|
||||
|
||||
system(cmd);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function iface_cb(new_if, old_if)
|
||||
{
|
||||
if (old_if && new_if && is_equal(old_if, new_if))
|
||||
return;
|
||||
|
||||
if (old_if)
|
||||
iface_stop(old_if);
|
||||
if (new_if)
|
||||
iface_start(new_if);
|
||||
}
|
||||
|
||||
function drop_inactive(config)
|
||||
{
|
||||
for (let key in config) {
|
||||
if (!readfile(`/sys/class/net/${key}/ifindex`))
|
||||
delete config[key];
|
||||
}
|
||||
}
|
||||
|
||||
function add_ifname(config)
|
||||
{
|
||||
for (let key in config)
|
||||
config.ifname = key;
|
||||
}
|
||||
|
||||
function delete_ifname(config)
|
||||
{
|
||||
for (let key in config)
|
||||
delete config.ifname;
|
||||
}
|
||||
|
||||
function add_existing(phy, config)
|
||||
{
|
||||
let wdevs = glob(`/sys/class/ieee80211/${phy}/device/net/*`);
|
||||
wdevs = map(wdevs, function(arg) { basename(arg) });
|
||||
for (let wdev in wdevs) {
|
||||
if (config[wdev])
|
||||
continue;
|
||||
|
||||
if (readfile(`/sys/class/net/${wdev}/operstate`) == "down")
|
||||
config[wdev] = {};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
let statefile = `/var/run/wdev-${phy}.json`;
|
||||
|
||||
for (let dev in ARGV)
|
||||
keep_devices[dev] = true;
|
||||
|
||||
if (!phy || !new_config) {
|
||||
warn(`Usage: ${basename(sourcepath())} <phy> <config> [<device]...]\n`);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (!readfile(`/sys/class/ieee80211/${phy}/index`)) {
|
||||
warn(`PHY ${phy} does not exist\n`);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
new_config = json(new_config);
|
||||
if (!new_config) {
|
||||
warn("Invalid configuration\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
let old_config = readfile(statefile);
|
||||
if (old_config)
|
||||
old_config = json(old_config);
|
||||
|
||||
let config = vlist_new(iface_cb);
|
||||
if (type(old_config) == "object")
|
||||
config.data = old_config;
|
||||
|
||||
add_existing(phy, config.data);
|
||||
add_ifname(config.data);
|
||||
drop_inactive(config.data);
|
||||
|
||||
add_ifname(new_config);
|
||||
config.update(new_config);
|
||||
|
||||
drop_inactive(config.data);
|
||||
delete_ifname(config.data);
|
||||
writefile(statefile, sprintf("%J", config.data));
|
||||
159
feeds/wifi-ax/hostapd/files/wpa_supplicant.uc
Normal file
159
feeds/wifi-ax/hostapd/files/wpa_supplicant.uc
Normal file
@@ -0,0 +1,159 @@
|
||||
let libubus = require("ubus");
|
||||
import { open, readfile } from "fs";
|
||||
import { wdev_create, wdev_remove, is_equal, vlist_new } from "common";
|
||||
|
||||
let ubus = libubus.connect();
|
||||
|
||||
wpas.data.config = {};
|
||||
|
||||
function iface_stop(iface)
|
||||
{
|
||||
let ifname = iface.config.iface;
|
||||
|
||||
wpas.remove_iface(ifname);
|
||||
wdev_remove(ifname);
|
||||
iface.running = false;
|
||||
}
|
||||
|
||||
function iface_start(phy, iface)
|
||||
{
|
||||
if (iface.running)
|
||||
return;
|
||||
|
||||
let ifname = iface.config.iface;
|
||||
|
||||
wdev_remove(ifname);
|
||||
let ret = wdev_create(phy, ifname, iface.config);
|
||||
if (ret)
|
||||
wpas.printf(`Failed to create device ${ifname}: ${ret}`);
|
||||
wpas.add_iface(iface.config);
|
||||
iface.running = true;
|
||||
}
|
||||
|
||||
function iface_cb(new_if, old_if)
|
||||
{
|
||||
if (old_if && new_if && is_equal(old_if.config, new_if.config)) {
|
||||
new_if.running = old_if.running;
|
||||
return;
|
||||
}
|
||||
|
||||
if (old_if && old_if.running)
|
||||
iface_stop(old_if);
|
||||
}
|
||||
|
||||
function prepare_config(config)
|
||||
{
|
||||
config.config_data = readfile(config.config);
|
||||
|
||||
return { config: config };
|
||||
}
|
||||
|
||||
function set_config(phy_name, config_list)
|
||||
{
|
||||
let phy = wpas.data.config[phy_name];
|
||||
|
||||
if (!phy) {
|
||||
phy = vlist_new(iface_cb, false);
|
||||
wpas.data.config[phy_name] = phy;
|
||||
}
|
||||
|
||||
let values = [];
|
||||
for (let config in config_list)
|
||||
push(values, [ config.iface, prepare_config(config) ]);
|
||||
|
||||
phy.update(values);
|
||||
}
|
||||
|
||||
function start_pending(phy_name)
|
||||
{
|
||||
let phy = wpas.data.config[phy_name];
|
||||
|
||||
for (let ifname in phy.data)
|
||||
iface_start(phy_name, phy.data[ifname]);
|
||||
}
|
||||
|
||||
let main_obj = {
|
||||
config_set: {
|
||||
args: {
|
||||
phy: "",
|
||||
config: [],
|
||||
defer: true,
|
||||
},
|
||||
call: function(req) {
|
||||
if (!req.args.phy)
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
|
||||
try {
|
||||
if (req.args.config)
|
||||
set_config(req.args.phy, req.args.config);
|
||||
|
||||
if (!req.args.defer)
|
||||
start_pending(req.args.phy);
|
||||
} catch (e) {
|
||||
wpas.printf(`Error loading config: ${e}\n${e.stacktrace[0].context}`);
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
config_add: {
|
||||
args: {
|
||||
driver: "",
|
||||
iface: "",
|
||||
bridge: "",
|
||||
hostapd_ctrl: "",
|
||||
ctrl: "",
|
||||
config: "",
|
||||
},
|
||||
call: function(req) {
|
||||
if (!req.args.iface || !req.args.config)
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
|
||||
if (wpas.add_iface(req.args) < 0)
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
|
||||
return {
|
||||
pid: wpas.getpid()
|
||||
};
|
||||
}
|
||||
},
|
||||
config_remove: {
|
||||
args: {
|
||||
iface: ""
|
||||
},
|
||||
call: function(req) {
|
||||
if (!req.args.iface)
|
||||
return libubus.STATUS_INVALID_ARGUMENT;
|
||||
|
||||
wpas.remove_iface(req.args.iface);
|
||||
return 0;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
wpas.data.ubus = ubus;
|
||||
wpas.data.obj = ubus.publish("wpa_supplicant", main_obj);
|
||||
|
||||
function iface_event(type, name, data) {
|
||||
let ubus = wpas.data.ubus;
|
||||
|
||||
data ??= {};
|
||||
data.name = name;
|
||||
wpas.data.obj.notify(`iface.${type}`, data, null, null, null, -1);
|
||||
ubus.call("service", "event", { type: `wpa_supplicant.${name}.${type}`, data: {} });
|
||||
}
|
||||
|
||||
return {
|
||||
shutdown: function() {
|
||||
for (let phy in wpas.data.config)
|
||||
set_config(phy, []);
|
||||
wpas.ubus.disconnect();
|
||||
},
|
||||
iface_add: function(name, obj) {
|
||||
iface_event("add", name);
|
||||
},
|
||||
iface_remove: function(name, obj) {
|
||||
iface_event("remove", name);
|
||||
}
|
||||
};
|
||||
@@ -1,23 +1,20 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/hostapd/Makefile
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/hostapd/Makefile
|
||||
+++ hostapd-2021-02-20-59e9794c/hostapd/Makefile
|
||||
@@ -166,6 +166,11 @@ OBJS += ../src/common/hw_features_common
|
||||
--- a/hostapd/Makefile
|
||||
+++ b/hostapd/Makefile
|
||||
@@ -166,6 +166,12 @@ OBJS += ../src/common/hw_features_common
|
||||
|
||||
OBJS += ../src/eapol_auth/eapol_auth_sm.o
|
||||
|
||||
+ifdef CONFIG_UBUS
|
||||
+CFLAGS += -DUBUS_SUPPORT
|
||||
+OBJS += ../src/utils/uloop.o
|
||||
+OBJS += ../src/ap/ubus.o
|
||||
+LIBS += -lubox -lubus
|
||||
+endif
|
||||
|
||||
ifdef CONFIG_CODE_COVERAGE
|
||||
CFLAGS += -O0 -fprofile-arcs -ftest-coverage
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "utils/list.h"
|
||||
#include "ap_config.h"
|
||||
@@ -26,15 +23,6 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
|
||||
|
||||
#define OCE_STA_CFON_ENABLED(hapd) \
|
||||
((hapd->conf->oce & OCE_STA_CFON) && \
|
||||
@@ -80,7 +81,7 @@ struct hapd_interfaces {
|
||||
#ifdef CONFIG_CTRL_IFACE_UDP
|
||||
unsigned char ctrl_iface_cookie[CTRL_IFACE_COOKIE_LEN];
|
||||
#endif /* CONFIG_CTRL_IFACE_UDP */
|
||||
-
|
||||
+ struct ubus_object ubus;
|
||||
};
|
||||
|
||||
enum hostapd_chan_status {
|
||||
@@ -169,6 +170,7 @@ struct hostapd_data {
|
||||
struct hostapd_iface *iface;
|
||||
struct hostapd_config *iconf;
|
||||
@@ -51,10 +39,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
|
||||
void hostapd_interface_deinit(struct hostapd_iface *iface);
|
||||
void hostapd_interface_free(struct hostapd_iface *iface);
|
||||
struct hostapd_iface * hostapd_alloc_iface(void);
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -395,6 +395,7 @@ void hostapd_free_hapd_data(struct hosta
|
||||
hapd->beacon_set_done = 0;
|
||||
|
||||
@@ -96,10 +82,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
hostapd_interface_deinit(iface);
|
||||
wpa_printf(MSG_DEBUG, "%s: driver=%p drv_priv=%p -> hapd_deinit",
|
||||
__func__, driver, drv_priv);
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ieee802_11.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -3421,13 +3421,18 @@ static void handle_auth(struct hostapd_d
|
||||
u16 auth_alg, auth_transaction, status_code;
|
||||
u16 resp = WLAN_STATUS_SUCCESS;
|
||||
@@ -186,10 +170,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
sta = ap_get_sta(hapd, mgmt->sa);
|
||||
if (sta == NULL) {
|
||||
wpa_msg(hapd->msg_ctx, MSG_DEBUG, "Station " MACSTR " trying "
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -823,6 +823,12 @@ void handle_probe_req(struct hostapd_dat
|
||||
u16 csa_offs[2];
|
||||
size_t csa_offs_len;
|
||||
@@ -216,10 +198,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
/* TODO: verify that supp_rates contains at least one matching rate
|
||||
* with AP configuration */
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/drv_callbacks.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/drv_callbacks.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/drv_callbacks.c
|
||||
--- a/src/ap/drv_callbacks.c
|
||||
+++ b/src/ap/drv_callbacks.c
|
||||
@@ -145,6 +145,10 @@ int hostapd_notif_assoc(struct hostapd_d
|
||||
u16 reason = WLAN_REASON_UNSPECIFIED;
|
||||
int status = WLAN_STATUS_SUCCESS;
|
||||
@@ -244,10 +224,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/drv_callbacks.c
|
||||
#ifdef CONFIG_P2P
|
||||
if (elems.p2p) {
|
||||
wpabuf_free(sta->p2p_ie);
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/sta_info.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/sta_info.c
|
||||
--- a/src/ap/sta_info.c
|
||||
+++ b/src/ap/sta_info.c
|
||||
@@ -458,6 +458,7 @@ void ap_handle_timer(void *eloop_ctx, vo
|
||||
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
|
||||
HOSTAPD_LEVEL_INFO, "deauthenticated due to "
|
||||
@@ -264,26 +242,70 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.c
|
||||
ap_free_sta(hapd, sta);
|
||||
break;
|
||||
}
|
||||
@@ -1319,6 +1321,7 @@ void ap_sta_set_authorized(struct hostap
|
||||
@@ -1298,12 +1300,25 @@ void ap_sta_set_authorized(struct hostap
|
||||
sta->addr, authorized, dev_addr);
|
||||
|
||||
if (authorized) {
|
||||
+ static const char * const auth_algs[] = {
|
||||
+ [WLAN_AUTH_OPEN] = "open",
|
||||
+ [WLAN_AUTH_SHARED_KEY] = "shared",
|
||||
+ [WLAN_AUTH_FT] = "ft",
|
||||
+ [WLAN_AUTH_SAE] = "sae",
|
||||
+ [WLAN_AUTH_FILS_SK] = "fils-sk",
|
||||
+ [WLAN_AUTH_FILS_SK_PFS] = "fils-sk-pfs",
|
||||
+ [WLAN_AUTH_FILS_PK] = "fils-pk",
|
||||
+ [WLAN_AUTH_PASN] = "pasn",
|
||||
+ };
|
||||
+ const char *auth_alg = NULL;
|
||||
const char *keyid;
|
||||
char keyid_buf[100];
|
||||
char ip_addr[100];
|
||||
+ char alg_buf[100];
|
||||
|
||||
keyid_buf[0] = '\0';
|
||||
ip_addr[0] = '\0';
|
||||
+ alg_buf[0] = '\0';
|
||||
#ifdef CONFIG_P2P
|
||||
if (wpa_auth_get_ip_addr(sta->wpa_sm, ip_addr_buf) == 0) {
|
||||
os_snprintf(ip_addr, sizeof(ip_addr),
|
||||
@@ -1313,22 +1328,31 @@ void ap_sta_set_authorized(struct hostap
|
||||
}
|
||||
#endif /* CONFIG_P2P */
|
||||
|
||||
+ if (sta->auth_alg < ARRAY_SIZE(auth_algs))
|
||||
+ auth_alg = auth_algs[sta->auth_alg];
|
||||
+
|
||||
+ if (auth_alg)
|
||||
+ os_snprintf(alg_buf, sizeof(alg_buf),
|
||||
+ " auth_alg=%s", auth_alg);
|
||||
+
|
||||
keyid = ap_sta_wpa_get_keyid(hapd, sta);
|
||||
if (keyid) {
|
||||
os_snprintf(keyid_buf, sizeof(keyid_buf),
|
||||
" keyid=%s", keyid);
|
||||
}
|
||||
|
||||
- wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED "%s%s%s",
|
||||
- buf, ip_addr, keyid_buf);
|
||||
+ hostapd_ubus_notify_authorized(hapd, sta);
|
||||
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED "%s%s%s",
|
||||
buf, ip_addr, keyid_buf);
|
||||
+ wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED "%s%s%s%s",
|
||||
+ buf, ip_addr, keyid_buf, alg_buf);
|
||||
|
||||
@@ -1329,6 +1332,7 @@ void ap_sta_set_authorized(struct hostap
|
||||
buf, ip_addr, keyid_buf);
|
||||
if (hapd->msg_ctx_parent &&
|
||||
hapd->msg_ctx_parent != hapd->msg_ctx)
|
||||
wpa_msg_no_global(hapd->msg_ctx_parent, MSG_INFO,
|
||||
- AP_STA_CONNECTED "%s%s%s",
|
||||
- buf, ip_addr, keyid_buf);
|
||||
+ AP_STA_CONNECTED "%s%s%s%s",
|
||||
+ buf, ip_addr, keyid_buf, alg_buf);
|
||||
} else {
|
||||
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED "%s", buf);
|
||||
+ hostapd_ubus_notify(hapd, "disassoc", sta->addr);
|
||||
|
||||
if (hapd->msg_ctx_parent &&
|
||||
hapd->msg_ctx_parent != hapd->msg_ctx)
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/wpa_auth_glue.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/wpa_auth_glue.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/wpa_auth_glue.c
|
||||
--- a/src/ap/wpa_auth_glue.c
|
||||
+++ b/src/ap/wpa_auth_glue.c
|
||||
@@ -265,6 +265,7 @@ static void hostapd_wpa_auth_psk_failure
|
||||
struct hostapd_data *hapd = ctx;
|
||||
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_POSSIBLE_PSK_MISMATCH MACSTR,
|
||||
@@ -292,24 +314,23 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/wpa_auth_glue.c
|
||||
}
|
||||
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/Makefile
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/Makefile
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/Makefile
|
||||
@@ -171,6 +171,12 @@ ifdef CONFIG_EAPOL_TEST
|
||||
--- a/wpa_supplicant/Makefile
|
||||
+++ b/wpa_supplicant/Makefile
|
||||
@@ -171,6 +171,13 @@ ifdef CONFIG_EAPOL_TEST
|
||||
CFLAGS += -Werror -DEAPOL_TEST
|
||||
endif
|
||||
|
||||
+ifdef CONFIG_UBUS
|
||||
+CFLAGS += -DUBUS_SUPPORT
|
||||
+OBJS += ubus.o
|
||||
+OBJS += ../src/utils/uloop.o
|
||||
+LIBS += -lubox -lubus
|
||||
+endif
|
||||
+
|
||||
ifdef CONFIG_CODE_COVERAGE
|
||||
CFLAGS += -O0 -fprofile-arcs -ftest-coverage
|
||||
LIBS += -lgcov
|
||||
@@ -948,6 +954,9 @@ ifdef CONFIG_CTRL_IFACE_MIB
|
||||
@@ -948,6 +955,9 @@ ifdef CONFIG_CTRL_IFACE_MIB
|
||||
CFLAGS += -DCONFIG_CTRL_IFACE_MIB
|
||||
endif
|
||||
OBJS += ../src/ap/ctrl_iface_ap.o
|
||||
@@ -319,10 +340,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/Makefile
|
||||
endif
|
||||
|
||||
CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/wpa_supplicant.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
--- a/wpa_supplicant/wpa_supplicant.c
|
||||
+++ b/wpa_supplicant/wpa_supplicant.c
|
||||
@@ -7012,6 +7012,8 @@ struct wpa_supplicant * wpa_supplicant_a
|
||||
}
|
||||
#endif /* CONFIG_P2P */
|
||||
@@ -354,10 +373,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
return 0;
|
||||
}
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant_i.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/wpa_supplicant_i.h
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant_i.h
|
||||
--- a/wpa_supplicant/wpa_supplicant_i.h
|
||||
+++ b/wpa_supplicant/wpa_supplicant_i.h
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "wps/wps_defs.h"
|
||||
#include "config_ssid.h"
|
||||
@@ -383,10 +400,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant_i.h
|
||||
#ifdef CONFIG_MATCH_IFACE
|
||||
int matched;
|
||||
#endif /* CONFIG_MATCH_IFACE */
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wps_supplicant.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/wps_supplicant.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/wps_supplicant.c
|
||||
--- a/wpa_supplicant/wps_supplicant.c
|
||||
+++ b/wpa_supplicant/wps_supplicant.c
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "p2p/p2p.h"
|
||||
#include "p2p_supplicant.h"
|
||||
@@ -404,30 +419,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wps_supplicant.c
|
||||
if (wpa_s->conf->wps_cred_processing == 1)
|
||||
return 0;
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/hostapd/main.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/hostapd/main.c
|
||||
+++ hostapd-2021-02-20-59e9794c/hostapd/main.c
|
||||
@@ -895,6 +895,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
hostapd_global_ctrl_iface_init(&interfaces);
|
||||
+ hostapd_ubus_add(&interfaces);
|
||||
|
||||
if (hostapd_global_run(&interfaces, daemonize, pid_file)) {
|
||||
wpa_printf(MSG_ERROR, "Failed to start eloop");
|
||||
@@ -904,6 +905,7 @@ int main(int argc, char *argv[])
|
||||
ret = 0;
|
||||
|
||||
out:
|
||||
+ hostapd_ubus_free(&interfaces);
|
||||
hostapd_global_ctrl_iface_deinit(&interfaces);
|
||||
/* Deinitialize all interfaces */
|
||||
for (i = 0; i < interfaces.count; i++) {
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/main.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/main.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/main.c
|
||||
--- a/wpa_supplicant/main.c
|
||||
+++ b/wpa_supplicant/main.c
|
||||
@@ -203,7 +203,7 @@ int main(int argc, char *argv[])
|
||||
|
||||
for (;;) {
|
||||
@@ -447,10 +440,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/main.c
|
||||
case 'o':
|
||||
params.override_driver = optarg;
|
||||
break;
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/rrm.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/rrm.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/rrm.c
|
||||
--- a/src/ap/rrm.c
|
||||
+++ b/src/ap/rrm.c
|
||||
@@ -89,6 +89,9 @@ static void hostapd_handle_beacon_report
|
||||
return;
|
||||
wpa_msg(hapd->msg_ctx, MSG_INFO, BEACON_RESP_RX MACSTR " %u %02x %s",
|
||||
@@ -461,10 +452,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/rrm.c
|
||||
}
|
||||
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/vlan_init.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/vlan_init.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/vlan_init.c
|
||||
--- a/src/ap/vlan_init.c
|
||||
+++ b/src/ap/vlan_init.c
|
||||
@@ -22,6 +22,7 @@
|
||||
static int vlan_if_add(struct hostapd_data *hapd, struct hostapd_vlan *vlan,
|
||||
int existsok)
|
||||
@@ -501,11 +490,9 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/vlan_init.c
|
||||
return hostapd_vlan_if_remove(hapd, vlan->ifname);
|
||||
}
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/dfs.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/dfs.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/dfs.c
|
||||
@@ -1193,6 +1193,8 @@ int hostapd_dfs_radar_detected(struct ho
|
||||
--- a/src/ap/dfs.c
|
||||
+++ b/src/ap/dfs.c
|
||||
@@ -1226,6 +1226,8 @@ int hostapd_dfs_nop_finished(struct host
|
||||
"freq=%d ht_enabled=%d chan_offset=%d chan_width=%d cf1=%d cf2=%d",
|
||||
freq, ht_enabled, chan_offset, chan_width, cf1, cf2);
|
||||
|
||||
@@ -514,10 +501,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/dfs.c
|
||||
/* Proceed only if DFS is not offloaded to the driver */
|
||||
if (iface->drv_flags & WPA_DRIVER_FLAGS_DFS_OFFLOAD)
|
||||
return 0;
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/airtime_policy.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/airtime_policy.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/airtime_policy.c
|
||||
--- a/src/ap/airtime_policy.c
|
||||
+++ b/src/ap/airtime_policy.c
|
||||
@@ -108,8 +108,14 @@ static void set_sta_weights(struct hosta
|
||||
{
|
||||
struct sta_info *sta;
|
||||
@@ -547,10 +532,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/airtime_policy.c
|
||||
if (weight)
|
||||
return sta_set_airtime_weight(hapd, sta, weight);
|
||||
}
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/sta_info.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/sta_info.h
|
||||
--- a/src/ap/sta_info.h
|
||||
+++ b/src/ap/sta_info.h
|
||||
@@ -323,6 +323,7 @@ struct sta_info {
|
||||
#endif /* CONFIG_TESTING_OPTIONS */
|
||||
#ifdef CONFIG_AIRTIME_POLICY
|
||||
@@ -559,10 +542,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.h
|
||||
struct os_reltime backlogged_until;
|
||||
#endif /* CONFIG_AIRTIME_POLICY */
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/wnm_ap.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/wnm_ap.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/wnm_ap.c
|
||||
--- a/src/ap/wnm_ap.c
|
||||
+++ b/src/ap/wnm_ap.c
|
||||
@@ -442,7 +442,8 @@ static void ieee802_11_rx_bss_trans_mgmt
|
||||
wpa_hexdump(MSG_DEBUG, "WNM: BSS Transition Candidate List Entries",
|
||||
pos, end - pos);
|
||||
@@ -601,3 +582,151 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/wnm_ap.c
|
||||
wpa_hexdump(MSG_DEBUG, "WNM: BSS Transition Candidate List Entries",
|
||||
pos, end - pos);
|
||||
}
|
||||
--- a/src/utils/eloop.c
|
||||
+++ b/src/utils/eloop.c
|
||||
@@ -77,6 +77,9 @@ struct eloop_sock_table {
|
||||
struct eloop_data {
|
||||
int max_sock;
|
||||
|
||||
+ eloop_timeout_poll_handler timeout_poll_cb;
|
||||
+ eloop_poll_handler poll_cb;
|
||||
+
|
||||
size_t count; /* sum of all table counts */
|
||||
#ifdef CONFIG_ELOOP_POLL
|
||||
size_t max_pollfd_map; /* number of pollfds_map currently allocated */
|
||||
@@ -1116,6 +1119,12 @@ void eloop_run(void)
|
||||
os_reltime_sub(&timeout->time, &now, &tv);
|
||||
else
|
||||
tv.sec = tv.usec = 0;
|
||||
+ }
|
||||
+
|
||||
+ if (eloop.timeout_poll_cb && eloop.timeout_poll_cb(&tv, !!timeout))
|
||||
+ timeout = (void *)1;
|
||||
+
|
||||
+ if (timeout) {
|
||||
#if defined(CONFIG_ELOOP_POLL) || defined(CONFIG_ELOOP_EPOLL)
|
||||
timeout_ms = tv.sec * 1000 + tv.usec / 1000;
|
||||
#endif /* defined(CONFIG_ELOOP_POLL) || defined(CONFIG_ELOOP_EPOLL) */
|
||||
@@ -1185,7 +1194,8 @@ void eloop_run(void)
|
||||
eloop.exceptions.changed = 0;
|
||||
|
||||
eloop_process_pending_signals();
|
||||
-
|
||||
+ if (eloop.poll_cb)
|
||||
+ eloop.poll_cb();
|
||||
|
||||
/* check if some registered timeouts have occurred */
|
||||
timeout = dl_list_first(&eloop.timeout, struct eloop_timeout,
|
||||
@@ -1247,6 +1257,14 @@ out:
|
||||
return;
|
||||
}
|
||||
|
||||
+int eloop_register_cb(eloop_poll_handler poll_cb,
|
||||
+ eloop_timeout_poll_handler timeout_cb)
|
||||
+{
|
||||
+ eloop.poll_cb = poll_cb;
|
||||
+ eloop.timeout_poll_cb = timeout_cb;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
void eloop_terminate(void)
|
||||
{
|
||||
--- a/src/utils/eloop.h
|
||||
+++ b/src/utils/eloop.h
|
||||
@@ -65,6 +65,9 @@ typedef void (*eloop_timeout_handler)(vo
|
||||
*/
|
||||
typedef void (*eloop_signal_handler)(int sig, void *signal_ctx);
|
||||
|
||||
+typedef bool (*eloop_timeout_poll_handler)(struct os_reltime *tv, bool tv_set);
|
||||
+typedef void (*eloop_poll_handler)(void);
|
||||
+
|
||||
/**
|
||||
* eloop_init() - Initialize global event loop data
|
||||
* Returns: 0 on success, -1 on failure
|
||||
@@ -73,6 +76,9 @@ typedef void (*eloop_signal_handler)(int
|
||||
*/
|
||||
int eloop_init(void);
|
||||
|
||||
+int eloop_register_cb(eloop_poll_handler poll_cb,
|
||||
+ eloop_timeout_poll_handler timeout_cb);
|
||||
+
|
||||
/**
|
||||
* eloop_register_read_sock - Register handler for read events
|
||||
* @sock: File descriptor number for the socket
|
||||
@@ -320,6 +326,8 @@ int eloop_register_signal_reconfig(eloop
|
||||
*/
|
||||
int eloop_sock_requeue(void);
|
||||
|
||||
+void eloop_add_uloop(void);
|
||||
+
|
||||
/**
|
||||
* eloop_run - Start the event loop
|
||||
*
|
||||
--- /dev/null
|
||||
+++ b/src/utils/uloop.c
|
||||
@@ -0,0 +1,64 @@
|
||||
+#include <libubox/uloop.h>
|
||||
+#include "includes.h"
|
||||
+#include "common.h"
|
||||
+#include "eloop.h"
|
||||
+
|
||||
+static void eloop_uloop_event_cb(int sock, void *eloop_ctx, void *sock_ctx)
|
||||
+{
|
||||
+}
|
||||
+
|
||||
+static void eloop_uloop_fd_cb(struct uloop_fd *fd, unsigned int events)
|
||||
+{
|
||||
+ unsigned int changed = events ^ fd->flags;
|
||||
+
|
||||
+ if (changed & ULOOP_READ) {
|
||||
+ if (events & ULOOP_READ)
|
||||
+ eloop_register_sock(fd->fd, EVENT_TYPE_READ, eloop_uloop_event_cb, fd, fd);
|
||||
+ else
|
||||
+ eloop_unregister_sock(fd->fd, EVENT_TYPE_READ);
|
||||
+ }
|
||||
+
|
||||
+ if (changed & ULOOP_WRITE) {
|
||||
+ if (events & ULOOP_WRITE)
|
||||
+ eloop_register_sock(fd->fd, EVENT_TYPE_WRITE, eloop_uloop_event_cb, fd, fd);
|
||||
+ else
|
||||
+ eloop_unregister_sock(fd->fd, EVENT_TYPE_WRITE);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+static bool uloop_timeout_poll_handler(struct os_reltime *tv, bool tv_set)
|
||||
+{
|
||||
+ struct os_reltime tv_uloop;
|
||||
+ int timeout_ms = uloop_get_next_timeout();
|
||||
+
|
||||
+ if (timeout_ms < 0)
|
||||
+ return false;
|
||||
+
|
||||
+ tv_uloop.sec = timeout_ms / 1000;
|
||||
+ tv_uloop.usec = (timeout_ms % 1000) * 1000;
|
||||
+
|
||||
+ if (!tv_set || os_reltime_before(&tv_uloop, tv)) {
|
||||
+ *tv = tv_uloop;
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+static void uloop_poll_handler(void)
|
||||
+{
|
||||
+ uloop_run_timeout(0);
|
||||
+}
|
||||
+
|
||||
+void eloop_add_uloop(void)
|
||||
+{
|
||||
+ static bool init_done = false;
|
||||
+
|
||||
+ if (!init_done) {
|
||||
+ uloop_init();
|
||||
+ uloop_fd_set_cb = eloop_uloop_fd_cb;
|
||||
+ init_done = true;
|
||||
+ }
|
||||
+
|
||||
+ eloop_register_cb(uloop_poll_handler, uloop_timeout_poll_handler);
|
||||
+}
|
||||
|
||||
224
feeds/wifi-ax/hostapd/patches/601-ucode_support.patch
Normal file
224
feeds/wifi-ax/hostapd/patches/601-ucode_support.patch
Normal file
@@ -0,0 +1,224 @@
|
||||
--- a/hostapd/Makefile
|
||||
+++ b/hostapd/Makefile
|
||||
@@ -168,9 +168,21 @@ OBJS += ../src/eapol_auth/eapol_auth_sm.
|
||||
|
||||
ifdef CONFIG_UBUS
|
||||
CFLAGS += -DUBUS_SUPPORT
|
||||
-OBJS += ../src/utils/uloop.o
|
||||
OBJS += ../src/ap/ubus.o
|
||||
-LIBS += -lubox -lubus
|
||||
+LIBS += -lubus
|
||||
+NEED_ULOOP:=y
|
||||
+endif
|
||||
+
|
||||
+ifdef CONFIG_UCODE
|
||||
+CFLAGS += -DUCODE_SUPPORT
|
||||
+OBJS += ../src/utils/ucode.o
|
||||
+OBJS += ../src/ap/ucode.o
|
||||
+NEED_ULOOP:=y
|
||||
+endif
|
||||
+
|
||||
+ifdef NEED_ULOOP
|
||||
+OBJS += ../src/utils/uloop.o
|
||||
+LIBS += -lubox
|
||||
endif
|
||||
|
||||
ifdef CONFIG_CODE_COVERAGE
|
||||
--- a/hostapd/main.c
|
||||
+++ b/hostapd/main.c
|
||||
@@ -895,6 +895,7 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
hostapd_global_ctrl_iface_init(&interfaces);
|
||||
+ hostapd_ucode_init(&interfaces);
|
||||
|
||||
if (hostapd_global_run(&interfaces, daemonize, pid_file)) {
|
||||
wpa_printf(MSG_ERROR, "Failed to start eloop");
|
||||
@@ -904,6 +905,7 @@ int main(int argc, char *argv[])
|
||||
ret = 0;
|
||||
|
||||
out:
|
||||
+ hostapd_ucode_free();
|
||||
hostapd_global_ctrl_iface_deinit(&interfaces);
|
||||
/* Deinitialize all interfaces */
|
||||
for (i = 0; i < interfaces.count; i++) {
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "ap_config.h"
|
||||
#include "drivers/driver.h"
|
||||
#include "ubus.h"
|
||||
+#include "ucode.h"
|
||||
|
||||
#define OCE_STA_CFON_ENABLED(hapd) \
|
||||
((hapd->conf->oce & OCE_STA_CFON) && \
|
||||
@@ -50,6 +51,10 @@ struct hapd_interfaces {
|
||||
struct hostapd_config * (*config_read_cb)(const char *config_fname);
|
||||
int (*ctrl_iface_init)(struct hostapd_data *hapd);
|
||||
void (*ctrl_iface_deinit)(struct hostapd_data *hapd);
|
||||
+ int (*ctrl_iface_recv)(struct hostapd_data *hapd,
|
||||
+ char *buf, char *reply, int reply_size,
|
||||
+ struct sockaddr_storage *from,
|
||||
+ socklen_t fromlen);
|
||||
int (*for_each_interface)(struct hapd_interfaces *interfaces,
|
||||
int (*cb)(struct hostapd_iface *iface,
|
||||
void *ctx), void *ctx);
|
||||
@@ -171,6 +176,7 @@ struct hostapd_data {
|
||||
struct hostapd_config *iconf;
|
||||
struct hostapd_bss_config *conf;
|
||||
struct hostapd_ubus_bss ubus;
|
||||
+ struct hostapd_ucode_bss ucode;
|
||||
int interface_added; /* virtual interface added for this BSS */
|
||||
unsigned int started:1;
|
||||
unsigned int disabled:1;
|
||||
@@ -463,6 +469,7 @@ struct hostapd_sta_info {
|
||||
*/
|
||||
struct hostapd_iface {
|
||||
struct hapd_interfaces *interfaces;
|
||||
+ struct hostapd_ucode_iface ucode;
|
||||
void *owner;
|
||||
char *config_fname;
|
||||
struct hostapd_config *conf;
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -239,6 +239,8 @@ int hostapd_reload_config(struct hostapd
|
||||
size_t j;
|
||||
int i;
|
||||
|
||||
+ hostapd_ucode_reload_bss(hapd, reconf);
|
||||
+
|
||||
if (iface->config_fname == NULL) {
|
||||
/* Only in-memory config in use - assume it has been updated */
|
||||
hostapd_clear_old(iface);
|
||||
@@ -395,6 +397,7 @@ void hostapd_free_hapd_data(struct hosta
|
||||
hapd->beacon_set_done = 0;
|
||||
|
||||
wpa_printf(MSG_DEBUG, "%s(%s)", __func__, hapd->conf->iface);
|
||||
+ hostapd_ucode_free_bss(hapd);
|
||||
hostapd_ubus_free_bss(hapd);
|
||||
accounting_deinit(hapd);
|
||||
hostapd_deinit_wpa(hapd);
|
||||
@@ -549,6 +552,7 @@ void hostapd_cleanup_iface_partial(struc
|
||||
static void hostapd_cleanup_iface(struct hostapd_iface *iface)
|
||||
{
|
||||
wpa_printf(MSG_DEBUG, "%s(%p)", __func__, iface);
|
||||
+ hostapd_ucode_free_iface(iface);
|
||||
eloop_cancel_timeout(channel_list_update_timeout, iface, NULL);
|
||||
eloop_cancel_timeout(hostapd_interface_setup_failure_handler, iface,
|
||||
NULL);
|
||||
@@ -1419,6 +1423,7 @@ static int hostapd_setup_bss(struct host
|
||||
hapd->driver->set_operstate(hapd->drv_priv, 1);
|
||||
|
||||
hostapd_ubus_add_bss(hapd);
|
||||
+ hostapd_ucode_add_bss(hapd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
--- a/wpa_supplicant/Makefile
|
||||
+++ b/wpa_supplicant/Makefile
|
||||
@@ -174,8 +174,20 @@ endif
|
||||
ifdef CONFIG_UBUS
|
||||
CFLAGS += -DUBUS_SUPPORT
|
||||
OBJS += ubus.o
|
||||
+LIBS += -lubus
|
||||
+NEED_ULOOP:=y
|
||||
+endif
|
||||
+
|
||||
+ifdef CONFIG_UCODE
|
||||
+CFLAGS += -DUCODE_SUPPORT
|
||||
+OBJS += ../src/utils/ucode.o
|
||||
+OBJS += ucode.o
|
||||
+NEED_ULOOP:=y
|
||||
+endif
|
||||
+
|
||||
+ifdef NEED_ULOOP
|
||||
OBJS += ../src/utils/uloop.o
|
||||
-LIBS += -lubox -lubus
|
||||
+LIBS += -lubox
|
||||
endif
|
||||
|
||||
ifdef CONFIG_CODE_COVERAGE
|
||||
--- a/wpa_supplicant/wpa_supplicant.c
|
||||
+++ b/wpa_supplicant/wpa_supplicant.c
|
||||
@@ -7013,6 +7013,7 @@ struct wpa_supplicant * wpa_supplicant_a
|
||||
#endif /* CONFIG_P2P */
|
||||
|
||||
wpas_ubus_add_bss(wpa_s);
|
||||
+ wpas_ucode_add_bss(wpa_s);
|
||||
|
||||
return wpa_s;
|
||||
}
|
||||
@@ -7040,6 +7041,7 @@ int wpa_supplicant_remove_iface(struct w
|
||||
struct wpa_supplicant *parent = wpa_s->parent;
|
||||
#endif /* CONFIG_MESH */
|
||||
|
||||
+ wpas_ucode_free_bss(wpa_s);
|
||||
wpas_ubus_free_bss(wpa_s);
|
||||
|
||||
/* Remove interface from the global list of interfaces */
|
||||
@@ -7307,6 +7309,7 @@ struct wpa_global * wpa_supplicant_init(
|
||||
|
||||
eloop_register_timeout(WPA_SUPPLICANT_CLEANUP_INTERVAL, 0,
|
||||
wpas_periodic, global, NULL);
|
||||
+ wpas_ucode_init(global);
|
||||
|
||||
return global;
|
||||
}
|
||||
@@ -7345,12 +7348,8 @@ int wpa_supplicant_run(struct wpa_global
|
||||
eloop_register_signal_terminate(wpa_supplicant_terminate, global);
|
||||
eloop_register_signal_reconfig(wpa_supplicant_reconfig, global);
|
||||
|
||||
- wpas_ubus_add(global);
|
||||
-
|
||||
eloop_run();
|
||||
|
||||
- wpas_ubus_free(global);
|
||||
-
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -7383,6 +7382,8 @@ void wpa_supplicant_deinit(struct wpa_gl
|
||||
|
||||
wpas_notify_supplicant_deinitialized(global);
|
||||
|
||||
+ wpas_ucode_free();
|
||||
+
|
||||
eap_peer_unregister_methods();
|
||||
#ifdef CONFIG_AP
|
||||
eap_server_unregister_methods();
|
||||
--- a/wpa_supplicant/wpa_supplicant_i.h
|
||||
+++ b/wpa_supplicant/wpa_supplicant_i.h
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "config_ssid.h"
|
||||
#include "wmm_ac.h"
|
||||
#include "ubus.h"
|
||||
+#include "ucode.h"
|
||||
|
||||
extern const char *const wpa_supplicant_version;
|
||||
extern const char *const wpa_supplicant_license;
|
||||
@@ -605,6 +606,7 @@ struct wpa_supplicant {
|
||||
unsigned char perm_addr[ETH_ALEN];
|
||||
char ifname[100];
|
||||
struct wpas_ubus_bss ubus;
|
||||
+ struct wpas_ucode_bss ucode;
|
||||
#ifdef CONFIG_MATCH_IFACE
|
||||
int matched;
|
||||
#endif /* CONFIG_MATCH_IFACE */
|
||||
--- a/hostapd/ctrl_iface.c
|
||||
+++ b/hostapd/ctrl_iface.c
|
||||
@@ -4941,6 +4941,7 @@ try_again:
|
||||
return -1;
|
||||
}
|
||||
|
||||
+ interface->ctrl_iface_recv = hostapd_ctrl_iface_receive_process;
|
||||
wpa_msg_register_cb(hostapd_ctrl_iface_msg_cb);
|
||||
|
||||
return 0;
|
||||
@@ -5042,6 +5043,7 @@ fail:
|
||||
os_free(fname);
|
||||
|
||||
interface->global_ctrl_sock = s;
|
||||
+ interface->ctrl_iface_recv = hostapd_ctrl_iface_receive_process;
|
||||
eloop_register_read_sock(s, hostapd_global_ctrl_iface_receive,
|
||||
interface, NULL);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -2453,6 +2453,8 @@ static int hostapd_config_fill(struct ho
|
||||
@@ -2437,8 +2437,13 @@ static int hostapd_config_fill(struct ho
|
||||
bss->isolate = atoi(pos);
|
||||
} else if (os_strcmp(buf, "ap_max_inactivity") == 0) {
|
||||
bss->ap_max_inactivity = atoi(pos);
|
||||
@@ -8,8 +8,13 @@
|
||||
+ bss->config_id = os_strdup(pos);
|
||||
} else if (os_strcmp(buf, "skip_inactivity_poll") == 0) {
|
||||
bss->skip_inactivity_poll = atoi(pos);
|
||||
+ } else if (os_strcmp(buf, "config_id") == 0) {
|
||||
+ os_free(bss->config_id);
|
||||
+ bss->config_id = os_strdup(pos);
|
||||
} else if (os_strcmp(buf, "country_code") == 0) {
|
||||
@@ -3153,6 +3155,8 @@ static int hostapd_config_fill(struct ho
|
||||
if (pos[0] < 'A' || pos[0] > 'Z' ||
|
||||
pos[1] < 'A' || pos[1] > 'Z') {
|
||||
@@ -3133,6 +3138,8 @@ static int hostapd_config_fill(struct ho
|
||||
}
|
||||
} else if (os_strcmp(buf, "acs_exclude_dfs") == 0) {
|
||||
conf->acs_exclude_dfs = atoi(pos);
|
||||
@@ -20,7 +25,7 @@
|
||||
} else if (os_strcmp(buf, "channel") == 0) {
|
||||
--- a/src/ap/ap_config.c
|
||||
+++ b/src/ap/ap_config.c
|
||||
@@ -791,6 +791,7 @@ void hostapd_config_free_bss(struct host
|
||||
@@ -785,6 +785,7 @@ void hostapd_config_free_bss(struct host
|
||||
os_free(conf->radius_req_attr_sqlite);
|
||||
os_free(conf->rsn_preauth_interfaces);
|
||||
os_free(conf->ctrl_interface);
|
||||
@@ -28,7 +33,7 @@
|
||||
os_free(conf->ca_cert);
|
||||
os_free(conf->server_cert);
|
||||
os_free(conf->server_cert2);
|
||||
@@ -987,6 +988,7 @@ void hostapd_config_free(struct hostapd_
|
||||
@@ -981,6 +982,7 @@ void hostapd_config_free(struct hostapd_
|
||||
|
||||
for (i = 0; i < conf->num_bss; i++)
|
||||
hostapd_config_free_bss(conf->bss[i]);
|
||||
@@ -38,16 +43,15 @@
|
||||
os_free(conf->basic_rates);
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -279,6 +279,8 @@ struct hostapd_bss_config {
|
||||
char vlan_bridge[IFNAMSIZ + 1];
|
||||
char wds_bridge[IFNAMSIZ + 1];
|
||||
@@ -882,6 +882,7 @@ struct hostapd_bss_config {
|
||||
#endif /* CONFIG_PASN */
|
||||
|
||||
unsigned int unsol_bcast_probe_resp_interval;
|
||||
+ char *config_id;
|
||||
+
|
||||
enum hostapd_logger_level logger_syslog_level, logger_stdout_level;
|
||||
};
|
||||
|
||||
unsigned int logger_syslog; /* module bitfield */
|
||||
@@ -938,6 +940,7 @@ struct spatial_reuse {
|
||||
/**
|
||||
@@ -924,6 +925,7 @@ struct spatial_reuse {
|
||||
struct hostapd_config {
|
||||
struct hostapd_bss_config **bss, *last_bss;
|
||||
size_t num_bss;
|
||||
@@ -57,7 +61,61 @@
|
||||
int rts_threshold;
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -219,6 +219,10 @@ static int hostapd_iface_conf_changed(st
|
||||
@@ -99,7 +99,7 @@ void hostapd_reconfig_encryption(struct
|
||||
}
|
||||
|
||||
|
||||
-static void hostapd_reload_bss(struct hostapd_data *hapd)
|
||||
+void hostapd_reload_bss(struct hostapd_data *hapd)
|
||||
{
|
||||
struct hostapd_ssid *ssid;
|
||||
|
||||
@@ -189,27 +189,34 @@ static void hostapd_reload_bss(struct ho
|
||||
}
|
||||
|
||||
|
||||
-static void hostapd_clear_old(struct hostapd_iface *iface)
|
||||
+static void hostapd_clear_old_bss(struct hostapd_data *bss)
|
||||
{
|
||||
- size_t j;
|
||||
+ wpa_printf(MSG_DEBUG, "BSS %s changed - clear old state",
|
||||
+ bss->conf->iface);
|
||||
|
||||
/*
|
||||
* Deauthenticate all stations since the new configuration may not
|
||||
* allow them to use the BSS anymore.
|
||||
*/
|
||||
- for (j = 0; j < iface->num_bss; j++) {
|
||||
- hostapd_flush_old_stations(iface->bss[j],
|
||||
- WLAN_REASON_PREV_AUTH_NOT_VALID);
|
||||
+ hostapd_flush_old_stations(bss, WLAN_REASON_PREV_AUTH_NOT_VALID);
|
||||
#ifdef CONFIG_WEP
|
||||
- hostapd_broadcast_wep_clear(iface->bss[j]);
|
||||
+ hostapd_broadcast_wep_clear(bss);
|
||||
#endif /* CONFIG_WEP */
|
||||
|
||||
#ifndef CONFIG_NO_RADIUS
|
||||
- /* TODO: update dynamic data based on changed configuration
|
||||
- * items (e.g., open/close sockets, etc.) */
|
||||
- radius_client_flush(iface->bss[j]->radius, 0);
|
||||
+ /* TODO: update dynamic data based on changed configuration
|
||||
+ * items (e.g., open/close sockets, etc.) */
|
||||
+ radius_client_flush(bss->radius, 0);
|
||||
#endif /* CONFIG_NO_RADIUS */
|
||||
- }
|
||||
+}
|
||||
+
|
||||
+
|
||||
+static void hostapd_clear_old(struct hostapd_iface *iface)
|
||||
+{
|
||||
+ size_t j;
|
||||
+
|
||||
+ for (j = 0; j < iface->num_bss; j++)
|
||||
+ hostapd_clear_old_bss(iface->bss[j]);
|
||||
}
|
||||
|
||||
|
||||
@@ -218,6 +225,10 @@ static int hostapd_iface_conf_changed(st
|
||||
{
|
||||
size_t i;
|
||||
|
||||
@@ -68,7 +126,7 @@
|
||||
if (newconf->num_bss != oldconf->num_bss)
|
||||
return 1;
|
||||
|
||||
@@ -232,7 +236,7 @@ static int hostapd_iface_conf_changed(st
|
||||
@@ -231,7 +242,7 @@ static int hostapd_iface_conf_changed(st
|
||||
}
|
||||
|
||||
|
||||
@@ -77,7 +135,7 @@
|
||||
{
|
||||
struct hapd_interfaces *interfaces = iface->interfaces;
|
||||
struct hostapd_data *hapd = iface->bss[0];
|
||||
@@ -255,13 +259,16 @@ int hostapd_reload_config(struct hostapd
|
||||
@@ -256,13 +267,16 @@ int hostapd_reload_config(struct hostapd
|
||||
if (newconf == NULL)
|
||||
return -1;
|
||||
|
||||
@@ -96,7 +154,7 @@
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"Configuration changes include interface/BSS modification - force full disable+enable sequence");
|
||||
fname = os_strdup(iface->config_fname);
|
||||
@@ -286,6 +293,24 @@ int hostapd_reload_config(struct hostapd
|
||||
@@ -287,6 +301,24 @@ int hostapd_reload_config(struct hostapd
|
||||
wpa_printf(MSG_ERROR,
|
||||
"Failed to enable interface on config reload");
|
||||
return res;
|
||||
@@ -121,7 +179,7 @@
|
||||
}
|
||||
iface->conf = newconf;
|
||||
|
||||
@@ -302,6 +327,12 @@ int hostapd_reload_config(struct hostapd
|
||||
@@ -303,6 +335,16 @@ int hostapd_reload_config(struct hostapd
|
||||
|
||||
for (j = 0; j < iface->num_bss; j++) {
|
||||
hapd = iface->bss[j];
|
||||
@@ -131,10 +189,32 @@
|
||||
+ }
|
||||
+ if (newconf->bss[j]->config_id)
|
||||
+ hapd->config_id = strdup(newconf->bss[j]->config_id);
|
||||
+ if (!hapd->conf->config_id || !newconf->bss[j]->config_id ||
|
||||
+ os_strcmp(hapd->conf->config_id,
|
||||
+ newconf->bss[j]->config_id) != 0)
|
||||
+ hostapd_clear_old_bss(hapd);
|
||||
hapd->iconf = newconf;
|
||||
hapd->conf = newconf->bss[j];
|
||||
hostapd_reload_bss(hapd);
|
||||
@@ -2397,6 +2428,10 @@ hostapd_alloc_bss_data(struct hostapd_if
|
||||
@@ -1127,7 +1169,7 @@ static int db_table_create_radius_attrib
|
||||
* initialized. Most of the modules that are initialized here will be
|
||||
* deinitialized in hostapd_cleanup().
|
||||
*/
|
||||
-static int hostapd_setup_bss(struct hostapd_data *hapd, int first)
|
||||
+int hostapd_setup_bss(struct hostapd_data *hapd, int first, bool set_beacon)
|
||||
{
|
||||
struct hostapd_bss_config *conf = hapd->conf;
|
||||
u8 ssid[SSID_MAX_LEN + 1];
|
||||
@@ -2114,7 +2156,7 @@ static int hostapd_setup_interface_compl
|
||||
hapd = iface->bss[j];
|
||||
if (j)
|
||||
os_memcpy(hapd->own_addr, prev_addr, ETH_ALEN);
|
||||
- if (hostapd_setup_bss(hapd, j == 0)) {
|
||||
+ if (hostapd_setup_bss(hapd, j == 0, true)) {
|
||||
for (;;) {
|
||||
hapd = iface->bss[j];
|
||||
hostapd_bss_deinit_no_free(hapd);
|
||||
@@ -2374,6 +2416,10 @@ hostapd_alloc_bss_data(struct hostapd_if
|
||||
hapd->iconf = conf;
|
||||
hapd->conf = bss;
|
||||
hapd->iface = hapd_iface;
|
||||
@@ -145,46 +225,24 @@
|
||||
if (conf)
|
||||
hapd->driver = conf->driver;
|
||||
hapd->ctrl_sock = -1;
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -46,7 +46,7 @@ struct mesh_conf;
|
||||
struct hostapd_iface;
|
||||
@@ -2392,7 +2438,7 @@ hostapd_alloc_bss_data(struct hostapd_if
|
||||
}
|
||||
|
||||
struct hapd_interfaces {
|
||||
- int (*reload_config)(struct hostapd_iface *iface);
|
||||
+ int (*reload_config)(struct hostapd_iface *iface, int reconf);
|
||||
struct hostapd_config * (*config_read_cb)(const char *config_fname);
|
||||
int (*ctrl_iface_init)(struct hostapd_data *hapd);
|
||||
void (*ctrl_iface_deinit)(struct hostapd_data *hapd);
|
||||
@@ -156,6 +156,7 @@ struct hostapd_data {
|
||||
struct hostapd_config *iconf;
|
||||
struct hostapd_bss_config *conf;
|
||||
struct hostapd_ubus_bss ubus;
|
||||
+ char *config_id;
|
||||
int interface_added; /* virtual interface added for this BSS */
|
||||
unsigned int started:1;
|
||||
unsigned int disabled:1;
|
||||
@@ -604,7 +605,7 @@ struct hostapd_iface {
|
||||
int hostapd_for_each_interface(struct hapd_interfaces *interfaces,
|
||||
int (*cb)(struct hostapd_iface *iface,
|
||||
void *ctx), void *ctx);
|
||||
-int hostapd_reload_config(struct hostapd_iface *iface);
|
||||
+int hostapd_reload_config(struct hostapd_iface *iface, int reconf);
|
||||
void hostapd_reconfig_encryption(struct hostapd_data *hapd);
|
||||
struct hostapd_data *
|
||||
hostapd_alloc_bss_data(struct hostapd_iface *hapd_iface,
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -4820,6 +4820,9 @@ static int wpa_driver_nl80211_set_ap(voi
|
||||
if (ret) {
|
||||
wpa_printf(MSG_DEBUG, "nl80211: Beacon set failed: %d (%s)",
|
||||
ret, strerror(-ret));
|
||||
+ if (!bss->beacon_set)
|
||||
+ ret = 0;
|
||||
+ bss->beacon_set = 0;
|
||||
} else {
|
||||
bss->beacon_set = 1;
|
||||
nl80211_set_bss(bss, params->cts_protect, params->preamble,
|
||||
|
||||
-static void hostapd_bss_deinit(struct hostapd_data *hapd)
|
||||
+void hostapd_bss_deinit(struct hostapd_data *hapd)
|
||||
{
|
||||
if (!hapd)
|
||||
return;
|
||||
@@ -3009,7 +3055,7 @@ int hostapd_add_iface(struct hapd_interf
|
||||
|
||||
if (start_ctrl_iface_bss(hapd) < 0 ||
|
||||
(hapd_iface->state == HAPD_IFACE_ENABLED &&
|
||||
- hostapd_setup_bss(hapd, -1))) {
|
||||
+ hostapd_setup_bss(hapd, -1, true))) {
|
||||
hostapd_cleanup(hapd);
|
||||
hapd_iface->bss[hapd_iface->num_bss - 1] = NULL;
|
||||
hapd_iface->conf->num_bss--;
|
||||
--- a/hostapd/ctrl_iface.c
|
||||
+++ b/hostapd/ctrl_iface.c
|
||||
@@ -186,7 +186,7 @@ static int hostapd_ctrl_iface_update(str
|
||||
@@ -207,6 +265,44 @@
|
||||
wpa_printf(MSG_WARNING, "Failed to read new configuration "
|
||||
"file - continuing with old.");
|
||||
}
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -47,7 +47,7 @@ struct mesh_conf;
|
||||
struct hostapd_iface;
|
||||
|
||||
struct hapd_interfaces {
|
||||
- int (*reload_config)(struct hostapd_iface *iface);
|
||||
+ int (*reload_config)(struct hostapd_iface *iface, int reconf);
|
||||
struct hostapd_config * (*config_read_cb)(const char *config_fname);
|
||||
int (*ctrl_iface_init)(struct hostapd_data *hapd);
|
||||
void (*ctrl_iface_deinit)(struct hostapd_data *hapd);
|
||||
@@ -177,6 +177,7 @@ struct hostapd_data {
|
||||
struct hostapd_bss_config *conf;
|
||||
struct hostapd_ubus_bss ubus;
|
||||
struct hostapd_ucode_bss ucode;
|
||||
+ char *config_id;
|
||||
int interface_added; /* virtual interface added for this BSS */
|
||||
unsigned int started:1;
|
||||
unsigned int disabled:1;
|
||||
@@ -627,7 +628,9 @@ struct hostapd_iface {
|
||||
int hostapd_for_each_interface(struct hapd_interfaces *interfaces,
|
||||
int (*cb)(struct hostapd_iface *iface,
|
||||
void *ctx), void *ctx);
|
||||
-int hostapd_reload_config(struct hostapd_iface *iface);
|
||||
+int hostapd_reload_config(struct hostapd_iface *iface, int reconf);
|
||||
+void hostapd_reload_bss(struct hostapd_data *hapd);
|
||||
+void hostapd_bss_deinit(struct hostapd_data *hapd);
|
||||
void hostapd_reconfig_encryption(struct hostapd_data *hapd);
|
||||
struct hostapd_data *
|
||||
hostapd_alloc_bss_data(struct hostapd_iface *hapd_iface,
|
||||
@@ -644,6 +647,7 @@ struct hostapd_iface * hostapd_init(stru
|
||||
struct hostapd_iface *
|
||||
hostapd_interface_init_bss(struct hapd_interfaces *interfaces, const char *phy,
|
||||
const char *config_fname, int debug);
|
||||
+int hostapd_setup_bss(struct hostapd_data *hapd, int first, bool set_beacon);
|
||||
void hostapd_new_assoc_sta(struct hostapd_data *hapd, struct sta_info *sta,
|
||||
int reassoc);
|
||||
void hostapd_interface_deinit_free(struct hostapd_iface *iface);
|
||||
--- a/src/ap/wps_hostapd.c
|
||||
+++ b/src/ap/wps_hostapd.c
|
||||
@@ -315,7 +315,7 @@ static void wps_reload_config(void *eloo
|
||||
@@ -218,3 +314,15 @@
|
||||
wpa_printf(MSG_WARNING, "WPS: Failed to reload the updated "
|
||||
"configuration");
|
||||
}
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -4766,6 +4766,9 @@ static int wpa_driver_nl80211_set_ap(voi
|
||||
if (ret) {
|
||||
wpa_printf(MSG_DEBUG, "nl80211: Beacon set failed: %d (%s)",
|
||||
ret, strerror(-ret));
|
||||
+ if (!bss->beacon_set)
|
||||
+ ret = 0;
|
||||
+ bss->beacon_set = 0;
|
||||
} else {
|
||||
bss->beacon_set = 1;
|
||||
nl80211_set_bss(bss, params->cts_protect, params->preamble,
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -3366,6 +3366,8 @@ static int hostapd_config_fill(struct ho
|
||||
@@ -3349,6 +3349,8 @@ static int hostapd_config_fill(struct ho
|
||||
#ifndef CONFIG_NO_VLAN
|
||||
} else if (os_strcmp(buf, "dynamic_vlan") == 0) {
|
||||
bss->ssid.dynamic_vlan = atoi(pos);
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
Index: hostapd-2021-05-22-b102f19b/hostapd/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-05-22-b102f19b.orig/hostapd/config_file.c
|
||||
+++ hostapd-2021-05-22-b102f19b/hostapd/config_file.c
|
||||
@@ -2357,6 +2357,8 @@ static int hostapd_config_fill(struct ho
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -2341,6 +2341,8 @@ static int hostapd_config_fill(struct ho
|
||||
sizeof(conf->bss[0]->iface));
|
||||
} else if (os_strcmp(buf, "bridge") == 0) {
|
||||
os_strlcpy(bss->bridge, pos, sizeof(bss->bridge));
|
||||
@@ -11,10 +9,8 @@ Index: hostapd-2021-05-22-b102f19b/hostapd/config_file.c
|
||||
} else if (os_strcmp(buf, "vlan_bridge") == 0) {
|
||||
os_strlcpy(bss->vlan_bridge, pos, sizeof(bss->vlan_bridge));
|
||||
} else if (os_strcmp(buf, "wds_bridge") == 0) {
|
||||
Index: hostapd-2021-05-22-b102f19b/src/ap/ap_drv_ops.c
|
||||
===================================================================
|
||||
--- hostapd-2021-05-22-b102f19b.orig/src/ap/ap_drv_ops.c
|
||||
+++ hostapd-2021-05-22-b102f19b/src/ap/ap_drv_ops.c
|
||||
--- a/src/ap/ap_drv_ops.c
|
||||
+++ b/src/ap/ap_drv_ops.c
|
||||
@@ -340,8 +340,6 @@ int hostapd_set_wds_sta(struct hostapd_d
|
||||
return -1;
|
||||
if (hapd->conf->wds_bridge[0])
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -2873,6 +2873,14 @@ static int hostapd_config_fill(struct ho
|
||||
@@ -2858,6 +2858,14 @@ static int hostapd_config_fill(struct ho
|
||||
line, bss->max_num_sta, MAX_STA_COUNT);
|
||||
return 1;
|
||||
}
|
||||
@@ -17,7 +17,7 @@
|
||||
} else if (os_strcmp(buf, "extended_key_id") == 0) {
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -648,6 +648,7 @@ void hostapd_cleanup_cs_params(struct ho
|
||||
@@ -674,6 +674,7 @@ void hostapd_cleanup_cs_params(struct ho
|
||||
void hostapd_periodic_iface(struct hostapd_iface *iface);
|
||||
int hostapd_owe_trans_get_info(struct hostapd_data *hapd);
|
||||
void hostapd_ocv_check_csa_sa_query(void *eloop_ctx, void *timeout_ctx);
|
||||
@@ -27,7 +27,7 @@
|
||||
int hostapd_register_probereq_cb(struct hostapd_data *hapd,
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -236,6 +236,30 @@ static int hostapd_iface_conf_changed(st
|
||||
@@ -242,6 +242,30 @@ static int hostapd_iface_conf_changed(st
|
||||
}
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
" since no room for additional STA",
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -976,6 +976,8 @@ struct hostapd_config {
|
||||
@@ -961,6 +961,8 @@ struct hostapd_config {
|
||||
unsigned int track_sta_max_num;
|
||||
unsigned int track_sta_max_age;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -3031,6 +3031,8 @@ static int hostapd_config_fill(struct ho
|
||||
@@ -3016,6 +3016,8 @@ static int hostapd_config_fill(struct ho
|
||||
wpa_printf(MSG_INFO,
|
||||
"Line %d: Obsolete peerkey parameter ignored", line);
|
||||
#ifdef CONFIG_IEEE80211R_AP
|
||||
@@ -11,7 +11,7 @@
|
||||
hexstr2bin(pos, bss->mobility_domain,
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -277,6 +277,7 @@ struct airtime_sta_weight {
|
||||
@@ -275,6 +275,7 @@ struct airtime_sta_weight {
|
||||
struct hostapd_bss_config {
|
||||
char iface[IFNAMSIZ + 1];
|
||||
char bridge[IFNAMSIZ + 1];
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
Index: hostapd-2021-05-22-b102f19b/src/ap/ap_config.h
|
||||
===================================================================
|
||||
--- hostapd-2021-05-22-b102f19b.orig/src/ap/ap_config.h
|
||||
+++ hostapd-2021-05-22-b102f19b/src/ap/ap_config.h
|
||||
@@ -278,6 +278,7 @@ struct hostapd_bss_config {
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -276,6 +276,7 @@ struct hostapd_bss_config {
|
||||
char iface[IFNAMSIZ + 1];
|
||||
char bridge[IFNAMSIZ + 1];
|
||||
char ft_iface[IFNAMSIZ + 1];
|
||||
@@ -10,10 +8,8 @@ Index: hostapd-2021-05-22-b102f19b/src/ap/ap_config.h
|
||||
char vlan_bridge[IFNAMSIZ + 1];
|
||||
char wds_bridge[IFNAMSIZ + 1];
|
||||
|
||||
Index: hostapd-2021-05-22-b102f19b/src/ap/x_snoop.c
|
||||
===================================================================
|
||||
--- hostapd-2021-05-22-b102f19b.orig/src/ap/x_snoop.c
|
||||
+++ hostapd-2021-05-22-b102f19b/src/ap/x_snoop.c
|
||||
--- a/src/ap/x_snoop.c
|
||||
+++ b/src/ap/x_snoop.c
|
||||
@@ -31,14 +31,16 @@ int x_snoop_init(struct hostapd_data *ha
|
||||
return -1;
|
||||
}
|
||||
@@ -57,11 +53,9 @@ Index: hostapd-2021-05-22-b102f19b/src/ap/x_snoop.c
|
||||
if (l2 == NULL) {
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"x_snoop: Failed to initialize L2 packet processing %s",
|
||||
Index: hostapd-2021-05-22-b102f19b/hostapd/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-05-22-b102f19b.orig/hostapd/config_file.c
|
||||
+++ hostapd-2021-05-22-b102f19b/hostapd/config_file.c
|
||||
@@ -2359,6 +2359,8 @@ static int hostapd_config_fill(struct ho
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -2343,6 +2343,8 @@ static int hostapd_config_fill(struct ho
|
||||
os_strlcpy(bss->bridge, pos, sizeof(bss->bridge));
|
||||
if (!bss->wds_bridge[0])
|
||||
os_strlcpy(bss->wds_bridge, pos, sizeof(bss->wds_bridge));
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_1x.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ieee802_1x.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ieee802_1x.c
|
||||
--- a/src/ap/ieee802_1x.c
|
||||
+++ b/src/ap/ieee802_1x.c
|
||||
@@ -1904,6 +1904,25 @@ static int ieee802_1x_update_vlan(struct
|
||||
}
|
||||
#endif /* CONFIG_NO_VLAN */
|
||||
@@ -36,11 +34,9 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_1x.c
|
||||
break;
|
||||
case RADIUS_CODE_ACCESS_REJECT:
|
||||
sm->eap_if->aaaFail = true;
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/sta_info.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/sta_info.h
|
||||
@@ -117,6 +117,7 @@ struct sta_info {
|
||||
--- a/src/ap/sta_info.h
|
||||
+++ b/src/ap/sta_info.h
|
||||
@@ -116,6 +116,7 @@ struct sta_info {
|
||||
u8 supported_rates[WLAN_SUPP_RATES_MAX];
|
||||
int supported_rates_len;
|
||||
u8 qosinfo; /* Valid when WLAN_STA_WMM is set */
|
||||
@@ -48,10 +44,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.h
|
||||
|
||||
#ifdef CONFIG_MESH
|
||||
enum mesh_plink_state plink_state;
|
||||
Index: hostapd-2021-02-20-59e9794c/src/radius/radius.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/radius/radius.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/radius/radius.c
|
||||
--- a/src/radius/radius.c
|
||||
+++ b/src/radius/radius.c
|
||||
@@ -1182,6 +1182,35 @@ radius_msg_get_cisco_keys(struct radius_
|
||||
return keys;
|
||||
}
|
||||
@@ -88,10 +82,8 @@ Index: hostapd-2021-02-20-59e9794c/src/radius/radius.c
|
||||
|
||||
int radius_msg_add_mppe_keys(struct radius_msg *msg,
|
||||
const u8 *req_authenticator,
|
||||
Index: hostapd-2021-02-20-59e9794c/src/radius/radius.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/radius/radius.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/radius/radius.h
|
||||
--- a/src/radius/radius.h
|
||||
+++ b/src/radius/radius.h
|
||||
@@ -205,6 +205,10 @@ enum {
|
||||
RADIUS_VENDOR_ATTR_WFA_HS20_T_C_URL = 10,
|
||||
};
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/acs.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/acs.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/acs.c
|
||||
@@ -672,6 +672,10 @@ acs_find_ideal_chan_mode(struct hostapd_
|
||||
--- a/src/ap/acs.c
|
||||
+++ b/src/ap/acs.c
|
||||
@@ -668,6 +668,10 @@ acs_find_ideal_chan_mode(struct hostapd_
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -311,6 +311,7 @@ struct hostapd_bss_config {
|
||||
@@ -301,6 +301,7 @@ struct hostapd_bss_config {
|
||||
unsigned int eap_sim_db_timeout;
|
||||
int eap_server_erp; /* Whether ERP is enabled on internal EAP server */
|
||||
struct hostapd_ip_addr own_ip_addr;
|
||||
@@ -10,7 +10,7 @@
|
||||
int acct_interim_interval;
|
||||
--- a/src/radius/radius_client.c
|
||||
+++ b/src/radius/radius_client.c
|
||||
@@ -163,6 +163,8 @@ struct radius_client_data {
|
||||
@@ -162,6 +162,8 @@ struct radius_client_data {
|
||||
*/
|
||||
void *ctx;
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
/**
|
||||
* conf - RADIUS client configuration (list of RADIUS servers to use)
|
||||
*/
|
||||
@@ -720,6 +722,30 @@ static void radius_client_list_add(struc
|
||||
@@ -719,6 +721,30 @@ static void radius_client_list_add(struc
|
||||
|
||||
|
||||
/**
|
||||
@@ -50,7 +50,7 @@
|
||||
* radius_client_send - Send a RADIUS request
|
||||
* @radius: RADIUS client context from radius_client_init()
|
||||
* @msg: RADIUS message to be sent
|
||||
@@ -1238,6 +1264,10 @@ radius_change_server(struct radius_clien
|
||||
@@ -1219,6 +1245,10 @@ radius_change_server(struct radius_clien
|
||||
wpa_printf(MSG_DEBUG, "RADIUS local address: %s:%u",
|
||||
inet_ntoa(claddr.sin_addr),
|
||||
ntohs(claddr.sin_port));
|
||||
@@ -61,7 +61,7 @@
|
||||
}
|
||||
break;
|
||||
#ifdef CONFIG_IPV6
|
||||
@@ -1249,6 +1279,10 @@ radius_change_server(struct radius_clien
|
||||
@@ -1230,6 +1260,10 @@ radius_change_server(struct radius_clien
|
||||
inet_ntop(AF_INET6, &claddr6.sin6_addr,
|
||||
abuf, sizeof(abuf)),
|
||||
ntohs(claddr6.sin6_port));
|
||||
@@ -74,7 +74,7 @@
|
||||
}
|
||||
--- a/src/radius/radius_client.h
|
||||
+++ b/src/radius/radius_client.h
|
||||
@@ -249,6 +249,8 @@ int radius_client_register(struct radius
|
||||
@@ -244,6 +244,8 @@ int radius_client_register(struct radius
|
||||
void radius_client_set_interim_error_cb(struct radius_client_data *radius,
|
||||
void (*cb)(const u8 *addr, void *ctx),
|
||||
void *ctx);
|
||||
@@ -98,7 +98,7 @@
|
||||
hapd->conf->own_ip_addr.af == AF_INET &&
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -2681,6 +2681,8 @@ static int hostapd_config_fill(struct ho
|
||||
@@ -2701,6 +2701,8 @@ static int hostapd_config_fill(struct ho
|
||||
} else if (os_strcmp(buf, "iapp_interface") == 0) {
|
||||
wpa_printf(MSG_INFO, "DEPRECATED: iapp_interface not used");
|
||||
#endif /* CONFIG_IAPP */
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -11,6 +11,8 @@
|
||||
#include <sqlite3.h>
|
||||
#endif /* CONFIG_SQLITE */
|
||||
@@ -10,8 +8,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
+
|
||||
#include "utils/common.h"
|
||||
#include "utils/eloop.h"
|
||||
#include "common/ieee802_11_defs.h"
|
||||
@@ -1316,6 +1318,22 @@ static int hostapd_setup_bss(struct host
|
||||
#include "utils/crc32.h"
|
||||
@@ -1259,6 +1261,22 @@ int hostapd_setup_bss(struct hostapd_dat
|
||||
os_memcpy(hapd->own_addr, if_addr, ETH_ALEN);
|
||||
}
|
||||
|
||||
@@ -32,5 +30,5 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
+ }
|
||||
+
|
||||
if (conf->wmm_enabled < 0)
|
||||
conf->wmm_enabled = hapd->iconf->ieee80211n | hapd->iconf->ieee80211ax;
|
||||
conf->wmm_enabled = hapd->iconf->ieee80211n;
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/sta_info.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/sta_info.c
|
||||
--- a/src/ap/sta_info.c
|
||||
+++ b/src/ap/sta_info.c
|
||||
@@ -717,7 +717,7 @@ struct sta_info * ap_sta_add(struct host
|
||||
return sta;
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
diff --git a/src/common/hw_features_common.c b/src/common/hw_features_common.c
|
||||
index ad2aebf..355b4a8 100644
|
||||
--- a/src/common/hw_features_common.c
|
||||
+++ b/src/common/hw_features_common.c
|
||||
@@ -615,9 +615,21 @@ int hostapd_set_freq_params(struct hostapd_freq_params *data,
|
||||
@@ -609,9 +609,21 @@ int hostapd_set_freq_params(struct hosta
|
||||
center_segment0 == channel - 6)
|
||||
data->center_freq1 = 5000 + center_segment0 * 5;
|
||||
else {
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/src/radius/radius_das.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/radius/radius_das.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/radius/radius_das.c
|
||||
--- a/src/radius/radius_das.c
|
||||
+++ b/src/radius/radius_das.c
|
||||
@@ -48,6 +48,8 @@ static struct radius_msg * radius_das_di
|
||||
RADIUS_ATTR_EVENT_TIMESTAMP,
|
||||
RADIUS_ATTR_MESSAGE_AUTHENTICATOR,
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
unsigned int time_window;
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -1371,6 +1371,7 @@ static int hostapd_setup_bss(struct host
|
||||
@@ -1386,6 +1386,7 @@ int hostapd_setup_bss(struct hostapd_dat
|
||||
struct radius_das_conf das_conf;
|
||||
os_memset(&das_conf, 0, sizeof(das_conf));
|
||||
das_conf.port = conf->radius_das_port;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/hostapd/config_file.c
|
||||
+++ hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -2366,6 +2366,8 @@ static int hostapd_config_fill(struct ho
|
||||
return 1;
|
||||
}
|
||||
@@ -11,23 +9,19 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
} else if (os_strcmp(buf, "driver_params") == 0) {
|
||||
os_free(conf->driver_params);
|
||||
conf->driver_params = os_strdup(pos);
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_config.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -279,6 +279,7 @@ struct hostapd_bss_config {
|
||||
char snoop_iface[IFNAMSIZ + 1];
|
||||
char vlan_bridge[IFNAMSIZ + 1];
|
||||
char wds_bridge[IFNAMSIZ + 1];
|
||||
+ char *uci_section;
|
||||
|
||||
char *config_id;
|
||||
enum hostapd_logger_level logger_syslog_level, logger_stdout_level;
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ubus.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ubus.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ubus.c
|
||||
@@ -467,6 +467,9 @@ hostapd_bss_get_status(struct ubus_conte
|
||||
--- a/src/ap/ubus.c
|
||||
+++ b/src/ap/ubus.c
|
||||
@@ -428,6 +428,9 @@ hostapd_bss_get_status(struct ubus_conte
|
||||
hapd->iface->cac_started ? hapd->iface->dfs_cac_ms / 1000 - now.sec : 0);
|
||||
blobmsg_close_table(&b, dfs_table);
|
||||
|
||||
@@ -37,10 +31,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ubus.c
|
||||
ubus_send_reply(ctx, req, b.head);
|
||||
|
||||
return 0;
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_config.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_config.c
|
||||
--- a/src/ap/ap_config.c
|
||||
+++ b/src/ap/ap_config.c
|
||||
@@ -785,6 +785,7 @@ void hostapd_config_free_bss(struct host
|
||||
os_free(conf->radius_req_attr_sqlite);
|
||||
os_free(conf->rsn_preauth_interfaces);
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver.h
|
||||
@@ -2259,6 +2259,10 @@ struct hostap_sta_driver_data {
|
||||
--- a/src/drivers/driver.h
|
||||
+++ b/src/drivers/driver.h
|
||||
@@ -2175,6 +2175,10 @@ struct hostap_sta_driver_data {
|
||||
u8 tx_mcs;
|
||||
u8 rx_vht_nss;
|
||||
u8 tx_vht_nss;
|
||||
@@ -13,11 +11,9 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h
|
||||
};
|
||||
|
||||
struct hostapd_sta_add_params {
|
||||
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver_nl80211.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
@@ -7123,6 +7123,8 @@ static int get_sta_handler(struct nl_msg
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -7013,6 +7013,8 @@ static int get_sta_handler(struct nl_msg
|
||||
[NL80211_RATE_INFO_VHT_MCS] = { .type = NLA_U8 },
|
||||
[NL80211_RATE_INFO_SHORT_GI] = { .type = NLA_FLAG },
|
||||
[NL80211_RATE_INFO_VHT_NSS] = { .type = NLA_U8 },
|
||||
@@ -26,7 +22,7 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
};
|
||||
|
||||
nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
|
||||
@@ -7215,6 +7217,10 @@ static int get_sta_handler(struct nl_msg
|
||||
@@ -7105,6 +7107,10 @@ static int get_sta_handler(struct nl_msg
|
||||
nla_get_u8(rate[NL80211_RATE_INFO_VHT_NSS]);
|
||||
data->flags |= STA_DRV_DATA_TX_VHT_NSS;
|
||||
}
|
||||
@@ -37,7 +33,7 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
}
|
||||
|
||||
if (stats[NL80211_STA_INFO_RX_BITRATE] &&
|
||||
@@ -7245,11 +7251,16 @@ static int get_sta_handler(struct nl_msg
|
||||
@@ -7135,11 +7141,16 @@ static int get_sta_handler(struct nl_msg
|
||||
nla_get_u8(rate[NL80211_RATE_INFO_VHT_NSS]);
|
||||
data->flags |= STA_DRV_DATA_RX_VHT_NSS;
|
||||
}
|
||||
@@ -54,11 +50,9 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
return NL_SKIP;
|
||||
}
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ubus.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ubus.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ubus.c
|
||||
@@ -349,6 +349,36 @@ hostapd_bss_get_clients(struct ubus_cont
|
||||
--- a/src/ap/ubus.c
|
||||
+++ b/src/ap/ubus.c
|
||||
@@ -310,6 +310,36 @@ hostapd_bss_get_clients(struct ubus_cont
|
||||
blobmsg_add_u32(&b, "tx", sta_driver_data.current_tx_rate * 100);
|
||||
blobmsg_close_table(&b, r);
|
||||
blobmsg_add_u32(&b, "signal", sta_driver_data.signal);
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/hostapd/config_file.c
|
||||
+++ hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
@@ -3339,6 +3339,8 @@ static int hostapd_config_fill(struct ho
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -3344,6 +3344,8 @@ static int hostapd_config_fill(struct ho
|
||||
bss->ignore_broadcast_ssid = atoi(pos);
|
||||
} else if (os_strcmp(buf, "no_probe_resp_if_max_sta") == 0) {
|
||||
bss->no_probe_resp_if_max_sta = atoi(pos);
|
||||
@@ -11,11 +9,9 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
#ifdef CONFIG_WEP
|
||||
} else if (os_strcmp(buf, "wep_default_key") == 0) {
|
||||
bss->ssid.wep.idx = atoi(pos);
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_config.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
@@ -460,6 +460,7 @@ struct hostapd_bss_config {
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -459,6 +459,7 @@ struct hostapd_bss_config {
|
||||
int ap_max_inactivity;
|
||||
int ignore_broadcast_ssid;
|
||||
int no_probe_resp_if_max_sta;
|
||||
@@ -23,10 +19,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
|
||||
int wmm_enabled;
|
||||
int wmm_uapsd;
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -920,7 +920,8 @@ void handle_probe_req(struct hostapd_dat
|
||||
}
|
||||
#endif /* CONFIG_P2P */
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ieee802_11.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -57,6 +57,15 @@
|
||||
#include "gas_query_ap.h"
|
||||
|
||||
@@ -53,10 +51,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
break;
|
||||
default:
|
||||
hostapd_logger(hapd, mgmt->sa, HOSTAPD_MODULE_IEEE80211,
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/sta_info.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/sta_info.h
|
||||
--- a/src/ap/sta_info.h
|
||||
+++ b/src/ap/sta_info.h
|
||||
@@ -331,6 +331,7 @@ struct sta_info {
|
||||
#ifdef CONFIG_PASN
|
||||
struct pasn_data *pasn;
|
||||
@@ -65,11 +61,9 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.h
|
||||
};
|
||||
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ubus.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ubus.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ubus.c
|
||||
@@ -379,6 +379,9 @@ hostapd_bss_get_clients(struct ubus_cont
|
||||
--- a/src/ap/ubus.c
|
||||
+++ b/src/ap/ubus.c
|
||||
@@ -340,6 +340,9 @@ hostapd_bss_get_clients(struct ubus_cont
|
||||
blobmsg_add_u32(&b, "tx", sta_driver_data.tx_mcs);
|
||||
}
|
||||
blobmsg_close_table(&b, r);
|
||||
@@ -79,7 +73,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ubus.c
|
||||
}
|
||||
|
||||
hostapd_parse_capab_blobmsg(sta);
|
||||
@@ -500,6 +503,9 @@ hostapd_bss_get_status(struct ubus_conte
|
||||
@@ -461,6 +464,9 @@ hostapd_bss_get_status(struct ubus_conte
|
||||
if (hapd->conf->uci_section)
|
||||
blobmsg_add_string(&b, "uci_section", hapd->conf->uci_section);
|
||||
|
||||
@@ -89,11 +83,9 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ubus.c
|
||||
ubus_send_reply(ctx, req, b.head);
|
||||
|
||||
return 0;
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
|
||||
@@ -446,6 +446,7 @@ struct hostapd_data {
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -452,6 +452,7 @@ struct hostapd_data {
|
||||
#ifdef CONFIG_CTRL_IFACE_UDP
|
||||
unsigned char ctrl_iface_cookie[CTRL_IFACE_COOKIE_LEN];
|
||||
#endif /* CONFIG_CTRL_IFACE_UDP */
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/hostapd/config_file.c
|
||||
+++ hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
@@ -2458,6 +2458,8 @@ static int hostapd_config_fill(struct ho
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -2465,6 +2465,8 @@ static int hostapd_config_fill(struct ho
|
||||
conf->ieee80211d = atoi(pos);
|
||||
} else if (os_strcmp(buf, "ieee80211h") == 0) {
|
||||
conf->ieee80211h = atoi(pos);
|
||||
@@ -11,11 +9,9 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
} else if (os_strcmp(buf, "ieee8021x") == 0) {
|
||||
bss->ieee802_1x = atoi(pos);
|
||||
} else if (os_strcmp(buf, "eapol_version") == 0) {
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_config.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
@@ -979,6 +979,7 @@ struct hostapd_config {
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -981,6 +981,7 @@ struct hostapd_config {
|
||||
int ieee80211d;
|
||||
|
||||
int ieee80211h; /* DFS */
|
||||
@@ -23,10 +19,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
|
||||
/*
|
||||
* Local power constraint is an octet encoded as an unsigned integer in
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/dfs.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/dfs.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/dfs.c
|
||||
--- a/src/ap/dfs.c
|
||||
+++ b/src/ap/dfs.c
|
||||
@@ -18,6 +18,8 @@
|
||||
#include "drivers/driver.h"
|
||||
#include "dfs.h"
|
||||
@@ -120,7 +114,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/dfs.c
|
||||
/* Perform channel switch/CSA */
|
||||
channel = dfs_get_valid_channel(iface, &secondary_channel,
|
||||
&oper_centr_freq_seg0_idx,
|
||||
@@ -1208,6 +1280,12 @@ int hostapd_dfs_radar_detected(struct ho
|
||||
@@ -1206,6 +1278,12 @@ int hostapd_dfs_radar_detected(struct ho
|
||||
if (!res)
|
||||
return 0;
|
||||
|
||||
@@ -133,10 +127,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/dfs.c
|
||||
/* Skip if reported radar event not overlapped our channels */
|
||||
res = dfs_are_channels_overlapped(iface, freq, chan_width, cf1, cf2);
|
||||
if (!res)
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/dfs.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/dfs.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/dfs.h
|
||||
--- a/src/ap/dfs.h
|
||||
+++ b/src/ap/dfs.h
|
||||
@@ -9,6 +9,11 @@
|
||||
#ifndef DFS_H
|
||||
#define DFS_H
|
||||
@@ -149,11 +141,9 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/dfs.h
|
||||
int hostapd_handle_dfs(struct hostapd_iface *iface);
|
||||
|
||||
int hostapd_dfs_complete_cac(struct hostapd_iface *iface, int success, int freq,
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
@@ -2866,6 +2866,7 @@ int hostapd_disable_iface(struct hostapd
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -2901,6 +2901,7 @@ int hostapd_disable_iface(struct hostapd
|
||||
hostapd_cleanup_cs_params(hapd_iface->bss[j]);
|
||||
#endif /* NEED_AP_MLME */
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#include "wps_hostapd.h"
|
||||
#include "ap_drv_ops.h"
|
||||
#include "ap_config.h"
|
||||
@@ -2030,6 +2031,7 @@ void hostapd_wpa_event(void *ctx, enum w
|
||||
@@ -2040,6 +2041,7 @@ void hostapd_wpa_event(void *ctx, enum w
|
||||
* Try to re-enable interface if the driver stopped it
|
||||
* when the interface got disabled.
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/src/ap/wpa_auth.c
|
||||
+++ b/src/ap/wpa_auth.c
|
||||
@@ -1022,7 +1022,7 @@ void wpa_receive(struct wpa_authenticato
|
||||
@@ -1039,7 +1039,7 @@ void wpa_receive(struct wpa_authenticato
|
||||
mic_len, key_data_length);
|
||||
wpa_hexdump(MSG_MSGDUMP,
|
||||
"WPA: EAPOL-Key header (ending before Key MIC)",
|
||||
@@ -9,7 +9,7 @@
|
||||
wpa_hexdump(MSG_MSGDUMP, "WPA: EAPOL-Key Key MIC",
|
||||
mic, mic_len);
|
||||
if (key_data_length > data_len - sizeof(*hdr) - keyhdrlen) {
|
||||
@@ -3086,7 +3086,7 @@ SM_STATE(WPA_PTK, PTKCALCNEGOTIATING)
|
||||
@@ -3126,7 +3126,7 @@ SM_STATE(WPA_PTK, PTKCALCNEGOTIATING)
|
||||
idx = bitfield_get_first_zero(wpa_auth->ip_pool);
|
||||
if (idx >= 0) {
|
||||
u32 start = WPA_GET_BE32(wpa_auth->conf.ip_addr_start);
|
||||
@@ -20,7 +20,7 @@
|
||||
"P2P: Assigned IP address %u.%u.%u.%u to "
|
||||
--- a/src/crypto/tls_openssl.c
|
||||
+++ b/src/crypto/tls_openssl.c
|
||||
@@ -1097,7 +1097,7 @@ void * tls_init(const struct tls_config
|
||||
@@ -1099,7 +1099,7 @@ void * tls_init(const struct tls_config
|
||||
if (conf && conf->openssl_ciphers)
|
||||
ciphers = conf->openssl_ciphers;
|
||||
else
|
||||
@@ -109,7 +109,7 @@
|
||||
bitfield_free(bf);
|
||||
--- a/wpa_supplicant/rrm.c
|
||||
+++ b/wpa_supplicant/rrm.c
|
||||
@@ -1116,7 +1116,7 @@ static int wpas_rm_handle_beacon_req_sub
|
||||
@@ -1125,7 +1125,7 @@ static int wpas_rm_handle_beacon_req_sub
|
||||
}
|
||||
|
||||
for (i = 0; i < slen; i++)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/hostapd/ctrl_iface.c
|
||||
+++ b/hostapd/ctrl_iface.c
|
||||
@@ -3112,6 +3112,92 @@ set:
|
||||
@@ -3246,6 +3246,92 @@ set:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
|
||||
static int hostapd_ctrl_iface_remove_neighbor(struct hostapd_data *hapd,
|
||||
char *buf)
|
||||
@@ -3790,6 +3876,10 @@ static int hostapd_ctrl_iface_receive_pr
|
||||
@@ -3931,6 +4017,10 @@ static int hostapd_ctrl_iface_receive_pr
|
||||
if (radius_server_dac_request(hapd->radius_srv, buf + 12) < 0)
|
||||
reply_len = -1;
|
||||
#endif /* RADIUS_SERVER */
|
||||
@@ -106,7 +106,7 @@
|
||||
hapd, buf + 15, reply, reply_size);
|
||||
--- a/hostapd/hostapd_cli.c
|
||||
+++ b/hostapd/hostapd_cli.c
|
||||
@@ -1362,6 +1362,12 @@ static int hostapd_cli_cmd_driver_flags(
|
||||
@@ -1361,6 +1361,12 @@ static int hostapd_cli_cmd_driver_flags(
|
||||
return wpa_ctrl_command(ctrl, "DRIVER_FLAGS");
|
||||
}
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
|
||||
#ifdef CONFIG_DPP
|
||||
|
||||
@@ -1705,6 +1711,8 @@ static const struct hostapd_cli_cmd host
|
||||
@@ -1720,6 +1726,8 @@ static const struct hostapd_cli_cmd host
|
||||
"=Add/Delete/Show/Clear deny MAC ACL" },
|
||||
{ "poll_sta", hostapd_cli_cmd_poll_sta, hostapd_complete_stations,
|
||||
"<addr> = poll a STA to check connectivity with a QoS null frame" },
|
||||
|
||||
@@ -157,7 +157,7 @@ Date: Thu Dec 6 15:17:46 2018 +0800
|
||||
return len;
|
||||
}
|
||||
|
||||
@@ -798,6 +931,20 @@ int hostapd_ctrl_iface_status(struct hos
|
||||
@@ -799,6 +932,20 @@ int hostapd_ctrl_iface_status(struct hos
|
||||
if (os_snprintf_error(buflen - len, ret))
|
||||
return len;
|
||||
len += ret;
|
||||
@@ -178,7 +178,7 @@ Date: Thu Dec 6 15:17:46 2018 +0800
|
||||
}
|
||||
|
||||
if (iface->conf->ieee80211n && !hapd->conf->disable_11n) {
|
||||
@@ -832,8 +979,33 @@ int hostapd_ctrl_iface_status(struct hos
|
||||
@@ -833,8 +980,33 @@ int hostapd_ctrl_iface_status(struct hos
|
||||
if (os_snprintf_error(buflen - len, ret))
|
||||
return len;
|
||||
len += ret;
|
||||
@@ -214,7 +214,7 @@ Date: Thu Dec 6 15:17:46 2018 +0800
|
||||
ret = os_snprintf(buf + len, buflen - len,
|
||||
--- a/src/ap/sta_info.h
|
||||
+++ b/src/ap/sta_info.h
|
||||
@@ -46,6 +46,7 @@
|
||||
@@ -49,6 +49,7 @@
|
||||
/* Maximum number of supported rates (from both Supported Rates and Extended
|
||||
* Supported Rates IEs). */
|
||||
#define WLAN_SUPP_RATES_MAX 32
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -4235,6 +4235,8 @@ static int hostapd_config_fill(struct ho
|
||||
@@ -4338,6 +4338,8 @@ static int hostapd_config_fill(struct ho
|
||||
} else if (os_strcmp(buf, "wowlan_triggers") == 0) {
|
||||
os_free(bss->wowlan_triggers);
|
||||
bss->wowlan_triggers = os_strdup(pos);
|
||||
@@ -11,7 +11,7 @@
|
||||
size_t len = os_strlen(pos);
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -1018,6 +1018,7 @@ struct hostapd_config {
|
||||
@@ -1049,6 +1049,7 @@ struct hostapd_config {
|
||||
} *acs_chan_bias;
|
||||
unsigned int num_acs_chan_bias;
|
||||
#endif /* CONFIG_ACS */
|
||||
@@ -21,7 +21,7 @@
|
||||
struct wpabuf *civic;
|
||||
--- a/src/ap/hw_features.c
|
||||
+++ b/src/ap/hw_features.c
|
||||
@@ -696,9 +696,14 @@ int hostapd_check_ht_capab(struct hostap
|
||||
@@ -714,9 +714,14 @@ int hostapd_check_ht_capab(struct hostap
|
||||
!ieee80211ac_supported_vht_capab(iface))
|
||||
return -1;
|
||||
#endif /* CONFIG_IEEE80211AC */
|
||||
|
||||
@@ -12,11 +12,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
src/drivers/nl80211_copy.h | 75 +++++++++++++++++++++++-----------------------
|
||||
1 file changed, 37 insertions(+), 38 deletions(-)
|
||||
|
||||
Index: hostapd-2021-02-08/src/drivers/nl80211_copy.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/src/drivers/nl80211_copy.h
|
||||
+++ hostapd-2021-02-08/src/drivers/nl80211_copy.h
|
||||
@@ -4541,6 +4541,10 @@ enum nl80211_chan_width {
|
||||
--- a/src/drivers/nl80211_copy.h
|
||||
+++ b/src/drivers/nl80211_copy.h
|
||||
@@ -4570,6 +4570,10 @@ enum nl80211_chan_width {
|
||||
NL80211_CHAN_WIDTH_4,
|
||||
NL80211_CHAN_WIDTH_8,
|
||||
NL80211_CHAN_WIDTH_16,
|
||||
@@ -27,11 +25,9 @@ Index: hostapd-2021-02-08/src/drivers/nl80211_copy.h
|
||||
};
|
||||
|
||||
/**
|
||||
Index: hostapd-2021-02-08/src/ap/dfs.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/src/ap/dfs.c
|
||||
+++ hostapd-2021-02-08/src/ap/dfs.c
|
||||
@@ -1051,13 +1051,17 @@ static int hostapd_dfs_testmode_set_beac
|
||||
--- a/src/ap/dfs.c
|
||||
+++ b/src/ap/dfs.c
|
||||
@@ -1069,13 +1069,17 @@ static int hostapd_dfs_testmode_set_beac
|
||||
iface->conf->hw_mode,
|
||||
iface->freq,
|
||||
iface->conf->channel,
|
||||
|
||||
@@ -11,11 +11,9 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
|
||||
src/common/ieee802_11_defs.h | 12 +++++++++-
|
||||
2 files changed, 64 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: hostapd-2021-02-08/src/ap/hw_features.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/src/ap/hw_features.c
|
||||
+++ hostapd-2021-02-08/src/ap/hw_features.c
|
||||
@@ -660,8 +660,63 @@ static int ieee80211ac_supported_vht_cap
|
||||
--- a/src/ap/hw_features.c
|
||||
+++ b/src/ap/hw_features.c
|
||||
@@ -678,8 +678,63 @@ static int ieee80211ac_supported_vht_cap
|
||||
|
||||
|
||||
#ifdef CONFIG_IEEE80211AX
|
||||
@@ -79,10 +77,8 @@ Index: hostapd-2021-02-08/src/ap/hw_features.c
|
||||
return 1;
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
Index: hostapd-2021-02-08/src/common/ieee802_11_defs.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/src/common/ieee802_11_defs.h
|
||||
+++ hostapd-2021-02-08/src/common/ieee802_11_defs.h
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -2233,7 +2233,10 @@ struct ieee80211_spatial_reuse {
|
||||
|
||||
/* HE Capabilities Information defines */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/wpa_supplicant/wpa_supplicant.c
|
||||
+++ b/wpa_supplicant/wpa_supplicant.c
|
||||
@@ -2653,7 +2653,7 @@ skip_ht40:
|
||||
@@ -2745,7 +2745,7 @@ skip_ht40:
|
||||
if (hostapd_set_freq_params(&vht_freq, mode->mode, freq->freq,
|
||||
freq->channel, ssid->enable_edmg,
|
||||
ssid->edmg_channel, freq->ht_enabled,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -4143,10 +4143,12 @@ static int hostapd_config_fill(struct ho
|
||||
@@ -4172,10 +4172,12 @@ static int hostapd_config_fill(struct ho
|
||||
#ifdef CONFIG_MBO
|
||||
} else if (os_strcmp(buf, "mbo") == 0) {
|
||||
bss->mbo_enabled = atoi(pos);
|
||||
@@ -17,7 +17,7 @@
|
||||
#define PARSE_TEST_PROBABILITY(_val) \
|
||||
--- a/hostapd/ctrl_iface.c
|
||||
+++ b/hostapd/ctrl_iface.c
|
||||
@@ -882,10 +882,11 @@ static int hostapd_ctrl_iface_bss_tm_req
|
||||
@@ -945,10 +945,11 @@ static int hostapd_ctrl_iface_bss_tm_req
|
||||
if (pos) {
|
||||
pos += 10;
|
||||
req_mode |= WNM_BSS_TM_REQ_BSS_TERMINATION_INCLUDED;
|
||||
@@ -31,7 +31,7 @@
|
||||
end = os_strchr(pos, ',');
|
||||
if (end == NULL) {
|
||||
wpa_printf(MSG_DEBUG, "Invalid bss_term data");
|
||||
@@ -895,7 +896,7 @@ static int hostapd_ctrl_iface_bss_tm_req
|
||||
@@ -958,7 +959,7 @@ static int hostapd_ctrl_iface_bss_tm_req
|
||||
WPA_PUT_LE16(&bss_term_dur[10], atoi(end));
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
return -1;
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -714,6 +714,11 @@ struct hostapd_bss_config {
|
||||
@@ -722,6 +722,11 @@ struct hostapd_bss_config {
|
||||
* - Set BIT(2) to enable OCE in AP mode
|
||||
*/
|
||||
unsigned int oce;
|
||||
@@ -248,7 +248,7 @@
|
||||
mgmt->u.action.u.bss_tm_req.disassoc_timer = host_to_le16(0);
|
||||
mgmt->u.action.u.bss_tm_req.validity_interval = 1;
|
||||
pos = mgmt->u.action.u.bss_tm_req.variable;
|
||||
@@ -394,6 +415,25 @@ static int ieee802_11_send_bss_trans_mgm
|
||||
@@ -395,6 +416,25 @@ static int ieee802_11_send_bss_trans_mgm
|
||||
le_to_host16(mgmt->u.action.u.bss_tm_req.disassoc_timer),
|
||||
mgmt->u.action.u.bss_tm_req.validity_interval);
|
||||
|
||||
|
||||
@@ -11,11 +11,9 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
src/ap/hostapd.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c
|
||||
index be9ef82..346d83c 100644
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -3532,6 +3532,9 @@ static int hostapd_fill_csa_settings(struct hostapd_data *hapd,
|
||||
@@ -3600,6 +3600,9 @@ static int hostapd_fill_csa_settings(str
|
||||
if (!iface || !iface->freq || hapd->csa_in_progress)
|
||||
return -1;
|
||||
|
||||
@@ -25,6 +23,3 @@ index be9ef82..346d83c 100644
|
||||
switch (settings->freq_params.bandwidth) {
|
||||
case 80:
|
||||
if (settings->freq_params.center_freq2)
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/config_ssid.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/config_ssid.h
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/config_ssid.h
|
||||
--- a/wpa_supplicant/config_ssid.h
|
||||
+++ b/wpa_supplicant/config_ssid.h
|
||||
@@ -1121,7 +1121,6 @@ struct wpa_ssid {
|
||||
* FT initial mobility domain association.
|
||||
*/
|
||||
@@ -10,10 +8,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/config_ssid.h
|
||||
/**
|
||||
* beacon_prot - Whether Beacon protection is enabled
|
||||
*
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/wpa_supplicant.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
--- a/wpa_supplicant/wpa_supplicant.c
|
||||
+++ b/wpa_supplicant/wpa_supplicant.c
|
||||
@@ -2521,16 +2521,14 @@ void ibss_mesh_setup_freq(struct wpa_sup
|
||||
return;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -3448,6 +3448,8 @@ static int hostapd_config_fill(struct ho
|
||||
@@ -3517,6 +3517,8 @@ static int hostapd_config_fill(struct ho
|
||||
conf->he_phy_capab.he_su_beamformee = atoi(pos);
|
||||
} else if (os_strcmp(buf, "he_mu_beamformer") == 0) {
|
||||
conf->he_phy_capab.he_mu_beamformer = atoi(pos);
|
||||
@@ -11,7 +11,7 @@
|
||||
conf->he_op.he_bss_color_disabled = 0;
|
||||
--- a/hostapd/hostapd.conf
|
||||
+++ b/hostapd/hostapd.conf
|
||||
@@ -801,6 +801,12 @@ wmm_ac_vo_acm=0
|
||||
@@ -816,6 +816,12 @@ wmm_ac_vo_acm=0
|
||||
# 1 = supported
|
||||
#he_mu_beamformer=1
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
--- a/src/ap/ap_config.c
|
||||
+++ b/src/ap/ap_config.c
|
||||
@@ -265,6 +265,8 @@ struct hostapd_config * hostapd_config_d
|
||||
@@ -266,6 +266,8 @@ struct hostapd_config * hostapd_config_d
|
||||
HE_OPERATION_RTS_THRESHOLD_OFFSET;
|
||||
/* Set default basic MCS/NSS set to single stream MCS 0-7 */
|
||||
conf->he_op.he_basic_mcs_nss_set = 0xfffc;
|
||||
@@ -37,7 +37,7 @@
|
||||
conf->he_op.he_bss_color = 1;
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -875,6 +875,7 @@ struct he_phy_capabilities_info {
|
||||
@@ -903,6 +903,7 @@ struct he_phy_capabilities_info {
|
||||
bool he_su_beamformer;
|
||||
bool he_su_beamformee;
|
||||
bool he_mu_beamformer;
|
||||
@@ -47,7 +47,7 @@
|
||||
/**
|
||||
--- a/src/ap/hw_features.c
|
||||
+++ b/src/ap/hw_features.c
|
||||
@@ -717,9 +717,10 @@ static int ieee80211ax_supported_he_capa
|
||||
@@ -727,9 +727,10 @@ static int ieee80211ax_supported_he_capa
|
||||
(SPATIAL_REUSE_NON_SRG_OFFSET_PRESENT |
|
||||
SPATIAL_REUSE_SRG_INFORMATION_PRESENT))));
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
HE_MACCAP_TWT_RESPONDER, HE_MACCAP_TWT_RESPONDER_IDX,
|
||||
--- a/src/ap/ieee802_11_he.c
|
||||
+++ b/src/ap/ieee802_11_he.c
|
||||
@@ -151,6 +151,13 @@ u8 * hostapd_eid_he_capab(struct hostapd
|
||||
@@ -152,6 +152,13 @@ u8 * hostapd_eid_he_capab(struct hostapd
|
||||
cap->he_phy_capab_info[HE_PHYCAP_MU_BEAMFORMER_CAPAB_IDX] &=
|
||||
~HE_PHYCAP_MU_BEAMFORMER_CAPAB;
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: Karthikeyan Kathirvel <kathirve@codeaurora.org>
|
||||
|
||||
--- a/src/ap/wpa_auth.c
|
||||
+++ b/src/ap/wpa_auth.c
|
||||
@@ -4454,12 +4454,13 @@ void wpa_gtk_rekey(struct wpa_authentica
|
||||
@@ -4498,12 +4498,13 @@ void wpa_gtk_rekey(struct wpa_authentica
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ Signed-off-by: Karthikeyan Kathirvel <kathirve@codeaurora.org>
|
||||
#define RSN_SUITE_ARG(s) \
|
||||
--- a/src/rsn_supp/wpa.c
|
||||
+++ b/src/rsn_supp/wpa.c
|
||||
@@ -2701,7 +2701,7 @@ out:
|
||||
@@ -2724,7 +2724,7 @@ out:
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ Signed-off-by: Karthikeyan Kathirvel <kathirve@codeaurora.org>
|
||||
switch (sm->key_mgmt) {
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -4859,7 +4859,7 @@ static int wpa_driver_nl80211_sta_add(vo
|
||||
@@ -5058,7 +5058,7 @@ static int wpa_driver_nl80211_sta_add(vo
|
||||
|
||||
if (params->he_capab) {
|
||||
wpa_hexdump(MSG_DEBUG, " * he_capab",
|
||||
|
||||
@@ -20,11 +20,9 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
wpa_supplicant/op_classes.c | 8 ++++----
|
||||
4 files changed, 15 insertions(+), 14 deletions(-)
|
||||
|
||||
Index: hostapd-2021-02-20/src/drivers/driver_nl80211.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/drivers/driver_nl80211.c
|
||||
+++ hostapd-2021-02-20/src/drivers/driver_nl80211.c
|
||||
@@ -10936,7 +10936,8 @@ static int add_acs_ch_list(struct nl_msg
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -10923,7 +10923,8 @@ static int add_acs_ch_list(struct nl_msg
|
||||
* compatibility.
|
||||
*/
|
||||
if (!(freq >= 2412 && freq <= 2484) &&
|
||||
@@ -34,10 +32,8 @@ Index: hostapd-2021-02-20/src/drivers/driver_nl80211.c
|
||||
continue;
|
||||
hw_mode = ieee80211_freq_to_chan(freq, &ch_list[num_channels]);
|
||||
if (hw_mode != NUM_HOSTAPD_MODES)
|
||||
Index: hostapd-2021-02-20/wpa_supplicant/op_classes.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/wpa_supplicant/op_classes.c
|
||||
+++ hostapd-2021-02-20/wpa_supplicant/op_classes.c
|
||||
--- a/wpa_supplicant/op_classes.c
|
||||
+++ b/wpa_supplicant/op_classes.c
|
||||
@@ -270,7 +270,7 @@ static int wpas_op_class_supported(struc
|
||||
|
||||
if (f == 0)
|
||||
@@ -56,11 +52,9 @@ Index: hostapd-2021-02-20/wpa_supplicant/op_classes.c
|
||||
return 0;
|
||||
if (op_class->op_class >= 81 && op_class->op_class <= 84 && !freq2)
|
||||
return 0;
|
||||
Index: hostapd-2021-02-20/src/ap/acs.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/acs.c
|
||||
+++ hostapd-2021-02-20/src/ap/acs.c
|
||||
@@ -372,40 +372,44 @@ acs_survey_chan_interference_factor(stru
|
||||
--- a/src/ap/acs.c
|
||||
+++ b/src/ap/acs.c
|
||||
@@ -366,40 +366,44 @@ acs_survey_chan_interference_factor(stru
|
||||
}
|
||||
|
||||
|
||||
@@ -115,7 +109,7 @@ Index: hostapd-2021-02-20/src/ap/acs.c
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
@@ -678,10 +682,11 @@ acs_find_ideal_chan_mode(struct hostapd_
|
||||
@@ -675,10 +679,11 @@ acs_find_ideal_chan_mode(struct hostapd_
|
||||
/* HT40 on 5 GHz has a limited set of primary channels as per
|
||||
* 11n Annex J */
|
||||
if (mode->mode == HOSTAPD_MODE_IEEE80211A &&
|
||||
@@ -131,7 +125,7 @@ Index: hostapd-2021-02-20/src/ap/acs.c
|
||||
chan->chan);
|
||||
continue;
|
||||
}
|
||||
@@ -690,18 +695,18 @@ acs_find_ideal_chan_mode(struct hostapd_
|
||||
@@ -687,18 +692,18 @@ acs_find_ideal_chan_mode(struct hostapd_
|
||||
(iface->conf->ieee80211ac || iface->conf->ieee80211ax)) {
|
||||
if (hostapd_get_oper_chwidth(iface->conf) ==
|
||||
CHANWIDTH_80MHZ &&
|
||||
@@ -154,7 +148,7 @@ Index: hostapd-2021-02-20/src/ap/acs.c
|
||||
chan->chan);
|
||||
continue;
|
||||
}
|
||||
@@ -832,16 +837,20 @@ acs_find_ideal_chan(struct hostapd_iface
|
||||
@@ -829,16 +834,20 @@ acs_find_ideal_chan(struct hostapd_iface
|
||||
u32 bw;
|
||||
struct hostapd_hw_modes *mode;
|
||||
|
||||
@@ -178,7 +172,7 @@ Index: hostapd-2021-02-20/src/ap/acs.c
|
||||
n_chans = 2;
|
||||
|
||||
if (iface->conf->ieee80211ac || iface->conf->ieee80211ax) {
|
||||
@@ -857,6 +866,7 @@ acs_find_ideal_chan(struct hostapd_iface
|
||||
@@ -854,6 +863,7 @@ acs_find_ideal_chan(struct hostapd_iface
|
||||
|
||||
bw = num_chan_to_bw(n_chans);
|
||||
|
||||
@@ -186,11 +180,9 @@ Index: hostapd-2021-02-20/src/ap/acs.c
|
||||
/* TODO: VHT/HE80+80. Update acs_adjust_center_freq() too. */
|
||||
|
||||
wpa_printf(MSG_DEBUG,
|
||||
Index: hostapd-2021-02-20/src/ap/hostapd.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/hostapd.c
|
||||
+++ hostapd-2021-02-20/src/ap/hostapd.c
|
||||
@@ -1691,6 +1691,10 @@ static int setup_interface2(struct hosta
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -1800,6 +1800,10 @@ static int setup_interface2(struct hosta
|
||||
|
||||
ch_width = op_class_to_ch_width(iface->conf->op_class);
|
||||
hostapd_set_oper_chwidth(iface->conf, ch_width);
|
||||
@@ -201,10 +193,8 @@ Index: hostapd-2021-02-20/src/ap/hostapd.c
|
||||
}
|
||||
|
||||
ret = hostapd_select_hw_mode(iface);
|
||||
Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-20/src/ap/beacon.c
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -481,8 +481,10 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
|
||||
resp->frame_control = IEEE80211_FC(WLAN_FC_TYPE_MGMT,
|
||||
@@ -217,11 +207,9 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
os_memcpy(resp->sa, hapd->own_addr, ETH_ALEN);
|
||||
|
||||
os_memcpy(resp->bssid, hapd->own_addr, ETH_ALEN);
|
||||
Index: hostapd-2021-02-20/wpa_supplicant/mesh.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/wpa_supplicant/mesh.c
|
||||
+++ hostapd-2021-02-20/wpa_supplicant/mesh.c
|
||||
@@ -644,6 +644,8 @@ int wpa_supplicant_join_mesh(struct wpa_
|
||||
--- a/wpa_supplicant/mesh.c
|
||||
+++ b/wpa_supplicant/mesh.c
|
||||
@@ -649,6 +649,8 @@ int wpa_supplicant_join_mesh(struct wpa_
|
||||
params->flags |= WPA_DRIVER_MESH_FLAG_SAE_AUTH;
|
||||
params->flags |= WPA_DRIVER_MESH_FLAG_AMPE;
|
||||
wpa_s->conf->user_mpm = 1;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/src/ap/drv_callbacks.c
|
||||
+++ b/src/ap/drv_callbacks.c
|
||||
@@ -1775,6 +1775,39 @@ static void hostapd_event_wds_sta_interf
|
||||
@@ -1770,6 +1770,39 @@ static void hostapd_event_wds_sta_interf
|
||||
ifname, MAC2STR(addr));
|
||||
}
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
#ifdef CONFIG_OWE
|
||||
static int hostapd_notif_update_dh_ie(struct hostapd_data *hapd,
|
||||
@@ -2083,6 +2116,9 @@ void hostapd_wpa_event(void *ctx, enum w
|
||||
@@ -2078,6 +2111,9 @@ void hostapd_wpa_event(void *ctx, enum w
|
||||
data->wds_sta_interface.ifname,
|
||||
data->wds_sta_interface.sta_addr);
|
||||
break;
|
||||
@@ -52,7 +52,7 @@
|
||||
break;
|
||||
--- a/src/drivers/driver.h
|
||||
+++ b/src/drivers/driver.h
|
||||
@@ -5038,6 +5038,15 @@ enum wpa_event_type {
|
||||
@@ -5123,6 +5123,15 @@ enum wpa_event_type {
|
||||
* is required to provide more details of the frame.
|
||||
*/
|
||||
EVENT_UNPROT_BEACON,
|
||||
@@ -68,7 +68,7 @@
|
||||
};
|
||||
|
||||
|
||||
@@ -5897,6 +5906,16 @@ union wpa_event_data {
|
||||
@@ -6017,6 +6026,16 @@ union wpa_event_data {
|
||||
struct unprot_beacon {
|
||||
const u8 *sa;
|
||||
} unprot_beacon;
|
||||
@@ -87,7 +87,7 @@
|
||||
/**
|
||||
--- a/src/drivers/driver_nl80211_event.c
|
||||
+++ b/src/drivers/driver_nl80211_event.c
|
||||
@@ -2540,6 +2540,35 @@ static void nl80211_sta_opmode_change_ev
|
||||
@@ -2682,6 +2682,35 @@ static void nl80211_sta_opmode_change_ev
|
||||
wpa_supplicant_event(drv->ctx, EVENT_STATION_OPMODE_CHANGED, &ed);
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@
|
||||
|
||||
static void nl80211_control_port_frame(struct wpa_driver_nl80211_data *drv,
|
||||
struct nlattr **tb)
|
||||
@@ -2597,7 +2626,6 @@ nl80211_control_port_frame_tx_status(str
|
||||
@@ -2739,7 +2768,6 @@ nl80211_control_port_frame_tx_status(str
|
||||
wpa_supplicant_event(drv->ctx, EVENT_EAPOL_TX_STATUS, &event);
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@
|
||||
static void do_process_drv_event(struct i802_bss *bss, int cmd,
|
||||
struct nlattr **tb)
|
||||
{
|
||||
@@ -2825,6 +2853,9 @@ static void do_process_drv_event(struct
|
||||
@@ -2988,6 +3016,9 @@ static void do_process_drv_event(struct
|
||||
tb[NL80211_ATTR_ACK],
|
||||
tb[NL80211_ATTR_COOKIE]);
|
||||
break;
|
||||
@@ -143,9 +143,9 @@
|
||||
"(cmd=%d)", cmd);
|
||||
--- a/src/drivers/nl80211_copy.h
|
||||
+++ b/src/drivers/nl80211_copy.h
|
||||
@@ -1170,6 +1170,11 @@
|
||||
* includes the contents of the frame. %NL80211_ATTR_ACK flag is included
|
||||
* if the recipient acknowledged the frame.
|
||||
@@ -1182,6 +1182,11 @@
|
||||
* passed using %NL80211_ATTR_SAR_SPEC. %NL80211_ATTR_WIPHY is used to
|
||||
* specify the wiphy index to be applied to.
|
||||
*
|
||||
+ * @NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS: Updated MU-EDCA parameters from driver.
|
||||
+ * This event is used to update MU-EDCA parameters in Beacon frame, which
|
||||
@@ -155,17 +155,17 @@
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -1400,6 +1405,7 @@ enum nl80211_commands {
|
||||
@@ -1414,6 +1419,7 @@ enum nl80211_commands {
|
||||
|
||||
NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS,
|
||||
NL80211_CMD_SET_SAR_SPECS,
|
||||
|
||||
+ NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS,
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
@@ -2505,6 +2511,9 @@ enum nl80211_commands {
|
||||
* @NL80211_ATTR_HE_6GHZ_CAPABILITY: HE 6 GHz Band Capability element (from
|
||||
* association request when used with NL80211_CMD_NEW_STATION).
|
||||
@@ -2557,6 +2563,9 @@ enum nl80211_commands {
|
||||
* disassoc events to indicate that an immediate reconnect to the AP
|
||||
* is desired.
|
||||
*
|
||||
+ * @NL80211_ATTR_HE_MUEDCA_PARAMS: MU-EDCA AC parameters for the
|
||||
+ NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS command.
|
||||
@@ -173,9 +173,9 @@
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
@@ -2987,6 +2996,7 @@ enum nl80211_attrs {
|
||||
@@ -3054,6 +3063,7 @@ enum nl80211_attrs {
|
||||
|
||||
NL80211_ATTR_HE_6GHZ_CAPABILITY,
|
||||
NL80211_ATTR_DISABLE_HE,
|
||||
|
||||
+ NL80211_ATTR_HE_MUEDCA_PARAMS,
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
@@ -193,7 +193,7 @@
|
||||
return "UNKNOWN";
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -3525,6 +3525,10 @@ static int hostapd_fill_csa_settings(str
|
||||
@@ -3659,6 +3659,10 @@ static int hostapd_fill_csa_settings(str
|
||||
hapd->cs_count = settings->cs_count;
|
||||
hapd->cs_block_tx = settings->block_tx;
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
free_beacon_data(&settings->beacon_after);
|
||||
--- a/hostapd/ctrl_iface.c
|
||||
+++ b/hostapd/ctrl_iface.c
|
||||
@@ -1472,6 +1472,11 @@ static int hostapd_ctrl_iface_set(struct
|
||||
@@ -1590,6 +1590,11 @@ static int hostapd_ctrl_iface_set(struct
|
||||
} else if (os_strncmp(cmd, "wme_ac_", 7) == 0 ||
|
||||
os_strncmp(cmd, "wmm_ac_", 7) == 0) {
|
||||
hapd->parameter_set_count++;
|
||||
@@ -252,7 +252,7 @@
|
||||
|
||||
static u8 ieee80211_he_ppet_size(u8 ppe_thres_hdr, const u8 *phy_cap_info)
|
||||
{
|
||||
@@ -247,9 +248,16 @@ u8 * hostapd_eid_he_operation(struct hos
|
||||
@@ -248,9 +249,16 @@ u8 * hostapd_eid_he_operation(struct hos
|
||||
u8 * hostapd_eid_he_mu_edca_parameter_set(struct hostapd_data *hapd, u8 *eid)
|
||||
{
|
||||
struct ieee80211_he_mu_edca_parameter_set *edca;
|
||||
|
||||
@@ -36,11 +36,9 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
src/drivers/nl80211_copy.h | 10 +++
|
||||
3 files changed, 116 insertions(+), 66 deletions(-)
|
||||
|
||||
diff --git a/src/ap/beacon.c b/src/ap/beacon.c
|
||||
index 510670da64a8..c873f5b744d0 100644
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -1374,7 +1374,7 @@ static u8 * hostapd_gen_fils_discovery(struct hostapd_data *hapd, size_t *len)
|
||||
@@ -1376,7 +1376,7 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
|
||||
*len = pos - (u8 *) head;
|
||||
wpa_hexdump(MSG_DEBUG, "FILS Discovery frame template",
|
||||
@@ -49,11 +47,9 @@ index 510670da64a8..c873f5b744d0 100644
|
||||
return (u8 *) head;
|
||||
}
|
||||
|
||||
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
|
||||
index f4c646180b36..84ba66be3e4f 100644
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -4381,94 +4381,135 @@ static int nl80211_set_multicast_to_unicast(struct i802_bss *bss,
|
||||
@@ -4379,94 +4379,135 @@ static int nl80211_set_multicast_to_unic
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -246,7 +242,7 @@ index f4c646180b36..84ba66be3e4f 100644
|
||||
static int wpa_driver_nl80211_set_ap(void *priv,
|
||||
struct wpa_driver_ap_params *params)
|
||||
{
|
||||
@@ -4746,9 +4787,6 @@ static int wpa_driver_nl80211_set_ap(void *priv,
|
||||
@@ -4744,9 +4785,6 @@ static int wpa_driver_nl80211_set_ap(voi
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -256,7 +252,7 @@ index f4c646180b36..84ba66be3e4f 100644
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
|
||||
#ifdef CONFIG_SAE
|
||||
@@ -4758,11 +4796,6 @@ static int wpa_driver_nl80211_set_ap(void *priv,
|
||||
@@ -4756,11 +4794,6 @@ static int wpa_driver_nl80211_set_ap(voi
|
||||
goto fail;
|
||||
#endif /* CONFIG_SAE */
|
||||
|
||||
@@ -268,7 +264,7 @@ index f4c646180b36..84ba66be3e4f 100644
|
||||
ret = send_and_recv_msgs_owner(drv, msg, get_connect_handle(bss), 1,
|
||||
NULL, NULL, NULL, NULL);
|
||||
if (ret) {
|
||||
@@ -4775,6 +4808,13 @@ static int wpa_driver_nl80211_set_ap(void *priv,
|
||||
@@ -4776,6 +4809,13 @@ static int wpa_driver_nl80211_set_ap(voi
|
||||
params->isolate, params->basic_rates);
|
||||
nl80211_set_multicast_to_unicast(bss,
|
||||
params->multicast_to_unicast);
|
||||
@@ -282,8 +278,6 @@ index f4c646180b36..84ba66be3e4f 100644
|
||||
if (beacon_set && params->freq &&
|
||||
params->freq->bandwidth != bss->bandwidth) {
|
||||
wpa_printf(MSG_DEBUG,
|
||||
diff --git a/src/drivers/nl80211_copy.h b/src/drivers/nl80211_copy.h
|
||||
index a4a611992ca0..1084c6d4c080 100644
|
||||
--- a/src/drivers/nl80211_copy.h
|
||||
+++ b/src/drivers/nl80211_copy.h
|
||||
@@ -1187,6 +1187,12 @@
|
||||
@@ -310,6 +304,3 @@ index a4a611992ca0..1084c6d4c080 100644
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
--
|
||||
2.25.0
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/hostapd/config_file.c
|
||||
+++ hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
@@ -4681,6 +4681,8 @@ static int hostapd_config_fill(struct ho
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -4692,6 +4692,8 @@ static int hostapd_config_fill(struct ho
|
||||
}
|
||||
bss->mka_psk_set |= MKA_PSK_SET_CKN;
|
||||
#endif /* CONFIG_MACSEC */
|
||||
@@ -11,11 +9,9 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
} else if (os_strcmp(buf, "disable_11n") == 0) {
|
||||
bss->disable_11n = !!atoi(pos);
|
||||
} else if (os_strcmp(buf, "disable_11ac") == 0) {
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_config.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
@@ -1025,6 +1025,8 @@ struct hostapd_config {
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -1027,6 +1027,8 @@ struct hostapd_config {
|
||||
u8 vht_oper_centr_freq_seg1_idx;
|
||||
u8 ht40_plus_minus_allowed;
|
||||
|
||||
@@ -24,11 +20,9 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
/* Use driver-generated interface addresses when adding multiple BSSs */
|
||||
u8 use_driver_iface_addr;
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
@@ -87,6 +87,26 @@ int hostapd_for_each_interface(struct ha
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -89,6 +89,26 @@ int hostapd_for_each_interface(struct ha
|
||||
}
|
||||
|
||||
|
||||
@@ -55,7 +49,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
void hostapd_reconfig_encryption(struct hostapd_data *hapd)
|
||||
{
|
||||
if (hapd->wpa_auth)
|
||||
@@ -1206,6 +1226,13 @@ static int hostapd_setup_bss(struct host
|
||||
@@ -1223,6 +1243,13 @@ int hostapd_setup_bss(struct hostapd_dat
|
||||
|
||||
if (!first || first == -1) {
|
||||
u8 *addr = hapd->own_addr;
|
||||
@@ -69,7 +63,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
|
||||
if (!is_zero_ether_addr(conf->bssid)) {
|
||||
/* Allocate the configured BSSID. */
|
||||
@@ -1233,7 +1260,7 @@ static int hostapd_setup_bss(struct host
|
||||
@@ -1250,7 +1277,7 @@ int hostapd_setup_bss(struct hostapd_dat
|
||||
conf->iface, addr, hapd,
|
||||
&hapd->drv_priv, force_ifname, if_addr,
|
||||
conf->bridge[0] ? conf->bridge : NULL,
|
||||
@@ -78,23 +72,19 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
wpa_printf(MSG_ERROR, "Failed to add BSS (BSSID="
|
||||
MACSTR ")", MAC2STR(hapd->own_addr));
|
||||
hapd->interface_added = 0;
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
|
||||
@@ -603,6 +603,8 @@ struct hostapd_iface {
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -629,6 +629,8 @@ struct hostapd_iface {
|
||||
int hostapd_for_each_interface(struct hapd_interfaces *interfaces,
|
||||
int (*cb)(struct hostapd_iface *iface,
|
||||
void *ctx), void *ctx);
|
||||
+int hostapd_get_bss_index(struct hostapd_data *hapd);
|
||||
+struct hostapd_data * hostapd_get_primary_bss(struct hostapd_data *hapd);
|
||||
int hostapd_reload_config(struct hostapd_iface *iface, int reconf);
|
||||
void hostapd_reconfig_encryption(struct hostapd_data *hapd);
|
||||
struct hostapd_data *
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_drv_ops.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_drv_ops.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_drv_ops.c
|
||||
void hostapd_reload_bss(struct hostapd_data *hapd);
|
||||
void hostapd_bss_deinit(struct hostapd_data *hapd);
|
||||
--- a/src/ap/ap_drv_ops.c
|
||||
+++ b/src/ap/ap_drv_ops.c
|
||||
@@ -321,7 +321,7 @@ int hostapd_vlan_if_add(struct hostapd_d
|
||||
char force_ifname[IFNAMSIZ];
|
||||
u8 if_addr[ETH_ALEN];
|
||||
@@ -104,7 +94,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ap_drv_ops.c
|
||||
}
|
||||
|
||||
|
||||
@@ -497,13 +497,15 @@ int hostapd_set_ssid(struct hostapd_data
|
||||
@@ -495,13 +495,15 @@ int hostapd_set_ssid(struct hostapd_data
|
||||
int hostapd_if_add(struct hostapd_data *hapd, enum wpa_driver_if_type type,
|
||||
const char *ifname, const u8 *addr, void *bss_ctx,
|
||||
void **drv_priv, char *force_ifname, u8 *if_addr,
|
||||
@@ -122,10 +112,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ap_drv_ops.c
|
||||
}
|
||||
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_drv_ops.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_drv_ops.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_drv_ops.h
|
||||
--- a/src/ap/ap_drv_ops.h
|
||||
+++ b/src/ap/ap_drv_ops.h
|
||||
@@ -54,7 +54,8 @@ int hostapd_set_ssid(struct hostapd_data
|
||||
int hostapd_if_add(struct hostapd_data *hapd, enum wpa_driver_if_type type,
|
||||
const char *ifname, const u8 *addr, void *bss_ctx,
|
||||
@@ -136,10 +124,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ap_drv_ops.h
|
||||
int hostapd_if_remove(struct hostapd_data *hapd, enum wpa_driver_if_type type,
|
||||
const char *ifname);
|
||||
int hostapd_set_ieee8021x(struct hostapd_data *hapd,
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -293,7 +293,7 @@ static const u8 * hostapd_vendor_wpa_ie(
|
||||
}
|
||||
|
||||
@@ -189,7 +175,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
if (len < IEEE80211_HDRLEN)
|
||||
return;
|
||||
ie = ((const u8 *) mgmt) + IEEE80211_HDRLEN;
|
||||
@@ -1085,7 +1097,7 @@ void handle_probe_req(struct hostapd_dat
|
||||
@@ -1087,7 +1099,7 @@ void handle_probe_req(struct hostapd_dat
|
||||
hapd->cs_c_off_ecsa_proberesp;
|
||||
}
|
||||
|
||||
@@ -198,7 +184,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
csa_offs_len ? csa_offs : NULL,
|
||||
csa_offs_len, 0);
|
||||
|
||||
@@ -1746,6 +1758,8 @@ void ieee802_11_free_ap_params(struct wp
|
||||
@@ -1748,6 +1760,8 @@ void ieee802_11_free_ap_params(struct wp
|
||||
params->head = NULL;
|
||||
os_free(params->proberesp);
|
||||
params->proberesp = NULL;
|
||||
@@ -207,7 +193,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
#ifdef CONFIG_FILS
|
||||
os_free(params->fd_frame_tmpl);
|
||||
params->fd_frame_tmpl = NULL;
|
||||
@@ -1802,6 +1816,22 @@ int ieee802_11_set_beacon(struct hostapd
|
||||
@@ -1804,6 +1818,22 @@ int ieee802_11_set_beacon(struct hostapd
|
||||
params.unsol_bcast_probe_resp_tmpl =
|
||||
hostapd_unsol_bcast_probe_resp(hapd, ¶ms);
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
@@ -230,10 +216,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
hapd->reenable_beacon = 0;
|
||||
#ifdef CONFIG_SAE
|
||||
params.sae_pwe = hapd->conf->sae_pwe;
|
||||
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver.h
|
||||
--- a/src/drivers/driver.h
|
||||
+++ b/src/drivers/driver.h
|
||||
@@ -1224,6 +1224,8 @@ struct wowlan_triggers {
|
||||
u8 rfkill_release;
|
||||
};
|
||||
@@ -285,7 +269,7 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h
|
||||
};
|
||||
|
||||
struct wpa_driver_mesh_bss_params {
|
||||
@@ -3344,7 +3381,8 @@ struct wpa_driver_ops {
|
||||
@@ -3348,7 +3385,8 @@ struct wpa_driver_ops {
|
||||
int (*if_add)(void *priv, enum wpa_driver_if_type type,
|
||||
const char *ifname, const u8 *addr, void *bss_ctx,
|
||||
void **drv_priv, char *force_ifname, u8 *if_addr,
|
||||
@@ -295,10 +279,8 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h
|
||||
|
||||
/**
|
||||
* if_remove - Remove a virtual interface
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/driver_i.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/driver_i.h
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/driver_i.h
|
||||
--- a/wpa_supplicant/driver_i.h
|
||||
+++ b/wpa_supplicant/driver_i.h
|
||||
@@ -444,7 +444,7 @@ static inline int wpa_drv_if_add(struct
|
||||
if (wpa_s->driver->if_add)
|
||||
return wpa_s->driver->if_add(wpa_s->drv_priv, type, ifname,
|
||||
@@ -308,10 +290,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/driver_i.h
|
||||
return -1;
|
||||
}
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver_nl80211.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -4794,6 +4794,27 @@ static int wpa_driver_nl80211_set_ap(voi
|
||||
goto fail;
|
||||
#endif /* CONFIG_SAE */
|
||||
@@ -403,7 +383,7 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
}
|
||||
|
||||
if (ret >= 0 && is_p2p_net_interface(iftype)) {
|
||||
@@ -7518,7 +7555,7 @@ static int i802_set_wds_sta(void *priv,
|
||||
@@ -7529,7 +7566,7 @@ static int i802_set_wds_sta(void *priv,
|
||||
if (!if_nametoindex(name)) {
|
||||
if (nl80211_create_iface(drv, name,
|
||||
NL80211_IFTYPE_AP_VLAN,
|
||||
@@ -412,7 +392,7 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
0)
|
||||
return -1;
|
||||
if (bridge_ifname &&
|
||||
@@ -7863,7 +7900,9 @@ static int wpa_driver_nl80211_if_add(voi
|
||||
@@ -7874,7 +7911,9 @@ static int wpa_driver_nl80211_if_add(voi
|
||||
void *bss_ctx, void **drv_priv,
|
||||
char *force_ifname, u8 *if_addr,
|
||||
const char *bridge, int use_existing,
|
||||
@@ -423,7 +403,7 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
{
|
||||
enum nl80211_iftype nlmode;
|
||||
struct i802_bss *bss = priv;
|
||||
@@ -7880,7 +7919,8 @@ static int wpa_driver_nl80211_if_add(voi
|
||||
@@ -7891,7 +7930,8 @@ static int wpa_driver_nl80211_if_add(voi
|
||||
os_memset(&p2pdev_info, 0, sizeof(p2pdev_info));
|
||||
ifidx = nl80211_create_iface(drv, ifname, nlmode, addr,
|
||||
0, nl80211_wdev_handler,
|
||||
@@ -433,7 +413,7 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
if (!p2pdev_info.wdev_id_set || ifidx != 0) {
|
||||
wpa_printf(MSG_ERROR, "nl80211: Failed to create a P2P Device interface %s",
|
||||
ifname);
|
||||
@@ -7896,7 +7936,9 @@ static int wpa_driver_nl80211_if_add(voi
|
||||
@@ -7907,7 +7947,9 @@ static int wpa_driver_nl80211_if_add(voi
|
||||
(long long unsigned int) p2pdev_info.wdev_id);
|
||||
} else {
|
||||
ifidx = nl80211_create_iface(drv, ifname, nlmode, addr,
|
||||
@@ -444,10 +424,8 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
if (use_existing && ifidx == -ENFILE) {
|
||||
added = 0;
|
||||
ifidx = if_nametoindex(ifname);
|
||||
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver_nl80211.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.h
|
||||
--- a/src/drivers/driver_nl80211.h
|
||||
+++ b/src/drivers/driver_nl80211.h
|
||||
@@ -251,7 +251,9 @@ int nl80211_create_iface(struct wpa_driv
|
||||
const char *ifname, enum nl80211_iftype iftype,
|
||||
const u8 *addr, int wds,
|
||||
@@ -459,10 +437,8 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.h
|
||||
void nl80211_remove_iface(struct wpa_driver_nl80211_data *drv, int ifidx);
|
||||
unsigned int nl80211_get_assoc_freq(struct wpa_driver_nl80211_data *drv);
|
||||
int nl80211_get_assoc_ssid(struct wpa_driver_nl80211_data *drv, u8 *ssid);
|
||||
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211_monitor.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver_nl80211_monitor.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211_monitor.c
|
||||
--- a/src/drivers/driver_nl80211_monitor.c
|
||||
+++ b/src/drivers/driver_nl80211_monitor.c
|
||||
@@ -381,7 +381,7 @@ int nl80211_create_monitor_interface(str
|
||||
|
||||
drv->monitor_ifidx =
|
||||
@@ -472,10 +448,8 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211_monitor.c
|
||||
|
||||
if (drv->monitor_ifidx == -EOPNOTSUPP) {
|
||||
/*
|
||||
Index: hostapd-2021-02-20-59e9794c/src/drivers/nl80211_copy.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/nl80211_copy.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/drivers/nl80211_copy.h
|
||||
--- a/src/drivers/nl80211_copy.h
|
||||
+++ b/src/drivers/nl80211_copy.h
|
||||
@@ -2576,6 +2576,20 @@ enum nl80211_commands {
|
||||
* @NL80211_ATTR_HE_MUEDCA_PARAMS: MU-EDCA AC parameters for the
|
||||
NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS command.
|
||||
@@ -511,10 +485,8 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/nl80211_copy.h
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ieee802_11.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -6,6 +6,7 @@
|
||||
* See README for more details.
|
||||
*/
|
||||
@@ -523,7 +495,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
#include "utils/includes.h"
|
||||
|
||||
#ifndef CONFIG_NATIVE_WINDOWS
|
||||
@@ -3859,7 +3860,11 @@ int hostapd_get_aid(struct hostapd_data
|
||||
@@ -3868,7 +3869,11 @@ int hostapd_get_aid(struct hostapd_data
|
||||
}
|
||||
if (j == 32)
|
||||
return -1;
|
||||
@@ -536,7 +508,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
if (aid > 2007)
|
||||
return -1;
|
||||
|
||||
@@ -5560,7 +5565,7 @@ static void handle_assoc(struct hostapd_
|
||||
@@ -5569,7 +5574,7 @@ static void handle_assoc(struct hostapd_
|
||||
goto fail;
|
||||
omit_rsnxe = !get_ie(pos, left, WLAN_EID_RSNX);
|
||||
|
||||
@@ -545,7 +517,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
hostapd_logger(hapd, mgmt->sa, HOSTAPD_MODULE_IEEE80211,
|
||||
HOSTAPD_LEVEL_INFO, "No room for more AIDs");
|
||||
resp = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA;
|
||||
@@ -6970,4 +6975,117 @@ u8 * hostapd_eid_wb_chsw_wrapper(struct
|
||||
@@ -6981,4 +6986,117 @@ u8 * hostapd_eid_wb_chsw_wrapper(struct
|
||||
return eid;
|
||||
}
|
||||
|
||||
@@ -663,10 +635,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
|
||||
+}
|
||||
+
|
||||
#endif /* CONFIG_NATIVE_WINDOWS */
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ieee802_11.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.h
|
||||
--- a/src/ap/ieee802_11.h
|
||||
+++ b/src/ap/ieee802_11.h
|
||||
@@ -119,7 +119,10 @@ u8 * hostapd_eid_time_zone(struct hostap
|
||||
int hostapd_update_time_adv(struct hostapd_data *hapd);
|
||||
void hostapd_client_poll_ok(struct hostapd_data *hapd, const u8 *addr);
|
||||
@@ -686,10 +656,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.h
|
||||
+u8 * hostapd_get_rsne(struct hostapd_data *hapd, u8 *pos, size_t len);
|
||||
|
||||
#endif /* IEEE802_11_H */
|
||||
Index: hostapd-2021-02-20-59e9794c/src/common/ieee802_11_defs.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/common/ieee802_11_defs.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/common/ieee802_11_defs.h
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -457,6 +457,8 @@
|
||||
#define WLAN_EID_RSNX 244
|
||||
#define WLAN_EID_EXTENSION 255
|
||||
@@ -699,10 +667,8 @@ Index: hostapd-2021-02-20-59e9794c/src/common/ieee802_11_defs.h
|
||||
/* Element ID Extension (EID 255) values */
|
||||
#define WLAN_EID_EXT_ASSOC_DELAY_INFO 1
|
||||
#define WLAN_EID_EXT_FILS_REQ_PARAMS 2
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11_shared.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ieee802_11_shared.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ieee802_11_shared.c
|
||||
--- a/src/ap/ieee802_11_shared.c
|
||||
+++ b/src/ap/ieee802_11_shared.c
|
||||
@@ -357,6 +357,8 @@ static void hostapd_ext_capab_byte(struc
|
||||
*pos |= 0x02; /* Bit 17 - WNM-Sleep Mode */
|
||||
if (hapd->conf->bss_transition)
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
#include "common/ieee802_11_defs.h"
|
||||
#include "common/sae.h"
|
||||
#include "crypto/sha256.h"
|
||||
@@ -2359,6 +2360,12 @@ static int hostapd_config_fill(struct ho
|
||||
@@ -2395,6 +2396,12 @@ static int hostapd_config_fill(struct ho
|
||||
}
|
||||
os_memcpy(bss->ssid.ssid, pos, bss->ssid.ssid_len);
|
||||
bss->ssid.ssid_set = 1;
|
||||
@@ -37,7 +37,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
char *str = wpa_config_parse_string(pos, &slen);
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -13,7 +13,6 @@
|
||||
@@ -15,7 +15,6 @@
|
||||
|
||||
#include "utils/common.h"
|
||||
#include "utils/eloop.h"
|
||||
@@ -45,7 +45,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
#include "common/ieee802_11_defs.h"
|
||||
#include "common/wpa_ctrl.h"
|
||||
#include "common/hw_features_common.h"
|
||||
@@ -1247,12 +1246,6 @@ static int hostapd_setup_bss(struct host
|
||||
@@ -1356,12 +1355,6 @@ int hostapd_setup_bss(struct hostapd_dat
|
||||
os_memcpy(conf->ssid.ssid, ssid, conf->ssid.ssid_len);
|
||||
}
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/hostapd/ctrl_iface.c
|
||||
+++ b/hostapd/ctrl_iface.c
|
||||
@@ -3023,6 +3023,7 @@ static int hostapd_ctrl_iface_set_neighb
|
||||
@@ -3157,6 +3157,7 @@ static int hostapd_ctrl_iface_set_neighb
|
||||
u8 bssid[ETH_ALEN];
|
||||
struct wpabuf *nr, *lci = NULL, *civic = NULL;
|
||||
int stationary = 0;
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
char *tmp;
|
||||
int ret;
|
||||
|
||||
@@ -3107,9 +3108,22 @@ static int hostapd_ctrl_iface_set_neighb
|
||||
@@ -3241,9 +3242,22 @@ static int hostapd_ctrl_iface_set_neighb
|
||||
if (os_strstr(buf, "stat"))
|
||||
stationary = 1;
|
||||
|
||||
@@ -52,7 +52,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
wpabuf_free(lci);
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -139,6 +139,7 @@ struct hostapd_neighbor_entry {
|
||||
@@ -144,6 +144,7 @@ struct hostapd_neighbor_entry {
|
||||
/* LCI update time */
|
||||
struct os_time lci_date;
|
||||
int stationary;
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -140,6 +140,7 @@ struct hostapd_neighbor_entry {
|
||||
@@ -145,6 +145,7 @@ struct hostapd_neighbor_entry {
|
||||
struct os_time lci_date;
|
||||
int stationary;
|
||||
u8 bss_parameters;
|
||||
|
||||
@@ -19,11 +19,9 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
src/common/ieee802_11_defs.h | 14 ++++++
|
||||
7 files changed, 113 insertions(+)
|
||||
|
||||
Index: hostapd-2021-02-18/hostapd/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/hostapd/config_file.c
|
||||
+++ hostapd-2021-02-18/hostapd/config_file.c
|
||||
@@ -4672,6 +4672,8 @@ static int hostapd_config_fill(struct ho
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -4701,6 +4701,8 @@ static int hostapd_config_fill(struct ho
|
||||
#endif /* CONFIG_MACSEC */
|
||||
} else if (os_strcmp(buf, "multiple_bssid") == 0) {
|
||||
conf->multiple_bssid = atoi(pos);
|
||||
@@ -32,10 +30,8 @@ Index: hostapd-2021-02-18/hostapd/config_file.c
|
||||
} else if (os_strcmp(buf, "disable_11n") == 0) {
|
||||
bss->disable_11n = !!atoi(pos);
|
||||
} else if (os_strcmp(buf, "disable_11ac") == 0) {
|
||||
Index: hostapd-2021-02-18/hostapd/hostapd.conf
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/hostapd/hostapd.conf
|
||||
+++ hostapd-2021-02-18/hostapd/hostapd.conf
|
||||
--- a/hostapd/hostapd.conf
|
||||
+++ b/hostapd/hostapd.conf
|
||||
@@ -2885,6 +2885,9 @@ own_ip_addr=127.0.0.1
|
||||
# that allows sending of such data. Default: 0.
|
||||
#stationary_ap=0
|
||||
@@ -46,23 +42,19 @@ Index: hostapd-2021-02-18/hostapd/hostapd.conf
|
||||
##### Airtime policy configuration ###########################################
|
||||
|
||||
# Set the airtime policy operating mode:
|
||||
Index: hostapd-2021-02-18/src/ap/ap_config.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/ap_config.h
|
||||
+++ hostapd-2021-02-18/src/ap/ap_config.h
|
||||
@@ -885,6 +885,7 @@ struct hostapd_bss_config {
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -893,6 +893,7 @@ struct hostapd_bss_config {
|
||||
#endif /* CONFIG_PASN */
|
||||
|
||||
unsigned int unsol_bcast_probe_resp_interval;
|
||||
+ u8 rnr_beacon;
|
||||
char *config_id;
|
||||
};
|
||||
|
||||
/**
|
||||
Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-18/src/ap/beacon.c
|
||||
@@ -1467,6 +1467,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -1469,6 +1469,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
tail_len += hostapd_mbo_ie_len(hapd);
|
||||
tail_len += hostapd_eid_owe_trans_len(hapd);
|
||||
tail_len += hostapd_eid_dpp_cc_len(hapd);
|
||||
@@ -70,7 +62,7 @@ Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
|
||||
tailpos = tail = os_malloc(tail_len);
|
||||
if (head == NULL || tail == NULL) {
|
||||
@@ -1643,6 +1644,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1645,6 +1646,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
tailpos = hostapd_eid_owe_trans(hapd, tailpos,
|
||||
tail + tail_len - tailpos);
|
||||
tailpos = hostapd_eid_dpp_cc(hapd, tailpos, tail + tail_len - tailpos);
|
||||
@@ -78,11 +70,9 @@ Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
|
||||
if (hapd->conf->vendor_elements) {
|
||||
os_memcpy(tailpos, wpabuf_head(hapd->conf->vendor_elements),
|
||||
Index: hostapd-2021-02-18/src/ap/ieee802_11.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/ieee802_11.c
|
||||
+++ hostapd-2021-02-18/src/ap/ieee802_11.c
|
||||
@@ -7079,4 +7079,93 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -7099,4 +7099,93 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
return eid;
|
||||
}
|
||||
|
||||
@@ -176,10 +166,8 @@ Index: hostapd-2021-02-18/src/ap/ieee802_11.c
|
||||
+}
|
||||
+
|
||||
#endif /* CONFIG_NATIVE_WINDOWS */
|
||||
Index: hostapd-2021-02-18/src/ap/ieee802_11.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/ieee802_11.h
|
||||
+++ hostapd-2021-02-18/src/ap/ieee802_11.h
|
||||
--- a/src/ap/ieee802_11.h
|
||||
+++ b/src/ap/ieee802_11.h
|
||||
@@ -123,6 +123,8 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
u8 is_beacon, u8 **eid_offsets, int *eid_count,
|
||||
int eid_max);
|
||||
@@ -189,10 +177,8 @@ Index: hostapd-2021-02-18/src/ap/ieee802_11.h
|
||||
int auth_sae_init_committed(struct hostapd_data *hapd, struct sta_info *sta);
|
||||
#ifdef CONFIG_SAE
|
||||
void sae_clear_retransmit_timer(struct hostapd_data *hapd,
|
||||
Index: hostapd-2021-02-18/src/common/ieee802_11_defs.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/common/ieee802_11_defs.h
|
||||
+++ hostapd-2021-02-18/src/common/ieee802_11_defs.h
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -2437,4 +2437,17 @@ enum mscs_description_subelem {
|
||||
*/
|
||||
#define FD_MAX_INTERVAL_6GHZ 20 /* TUs */
|
||||
|
||||
@@ -55,7 +55,7 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
|
||||
hapd->iconf->channel = channel;
|
||||
hapd->iconf->ieee80211n = ht;
|
||||
@@ -977,6 +958,7 @@ void hostapd_event_ch_switch(struct host
|
||||
@@ -972,6 +953,7 @@ void hostapd_event_ch_switch(struct host
|
||||
hostapd_set_oper_chwidth(hapd->iconf, chwidth);
|
||||
hostapd_set_oper_centr_freq_seg0_idx(hapd->iconf, seg0_idx);
|
||||
hostapd_set_oper_centr_freq_seg1_idx(hapd->iconf, seg1_idx);
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/mesh.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh.c
|
||||
--- a/wpa_supplicant/mesh.c
|
||||
+++ b/wpa_supplicant/mesh.c
|
||||
@@ -453,6 +453,12 @@ static int wpa_supplicant_mesh_init(stru
|
||||
conf->country[2] = ' ';
|
||||
wpa_s->mesh_params->handle_dfs = true;
|
||||
@@ -15,10 +13,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh.c
|
||||
|
||||
bss->iconf = conf;
|
||||
ifmsh->conf = conf;
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/wpa_supplicant.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
--- a/wpa_supplicant/wpa_supplicant.c
|
||||
+++ b/wpa_supplicant/wpa_supplicant.c
|
||||
@@ -2440,7 +2440,9 @@ void ibss_mesh_setup_freq(struct wpa_sup
|
||||
struct hostapd_hw_modes *mode = NULL;
|
||||
int ht40plus[] = { 1, 2, 3, 4, 5, 6, 36, 44, 52, 60, 100, 108, 116, 124, 132, 149, 157,
|
||||
@@ -153,10 +149,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
#ifdef CONFIG_HT_OVERRIDES
|
||||
if (ssid->disable_ht40)
|
||||
seg0 = 0;
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/ap.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/ap.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/ap.c
|
||||
--- a/wpa_supplicant/ap.c
|
||||
+++ b/wpa_supplicant/ap.c
|
||||
@@ -305,20 +305,16 @@ int wpa_supplicant_conf_ap_ht(struct wpa
|
||||
HT_CAP_INFO_TX_STBC |
|
||||
HT_CAP_INFO_MAX_AMSDU_SIZE);
|
||||
@@ -182,10 +176,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/ap.c
|
||||
}
|
||||
|
||||
if (conf->secondary_channel) {
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh_mpm.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/mesh_mpm.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh_mpm.c
|
||||
--- a/wpa_supplicant/mesh_mpm.c
|
||||
+++ b/wpa_supplicant/mesh_mpm.c
|
||||
@@ -251,6 +251,9 @@ static void mesh_mpm_send_plink_action(s
|
||||
HE_MAX_MCS_CAPAB_SIZE +
|
||||
HE_MAX_PPET_CAPAB_SIZE;
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/wpa_supplicant.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
--- a/wpa_supplicant/wpa_supplicant.c
|
||||
+++ b/wpa_supplicant/wpa_supplicant.c
|
||||
@@ -2430,6 +2430,22 @@ static int drv_supports_vht(struct wpa_s
|
||||
return mode->vht_capab != 0;
|
||||
}
|
||||
|
||||
@@ -22,10 +22,8 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
src/ap/ieee802_11_shared.c | 7 +++++-
|
||||
2 files changed, 35 insertions(+), 20 deletions(-)
|
||||
|
||||
Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-18/src/ap/beacon.c
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -433,7 +433,7 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
int is_p2p, size_t *resp_len)
|
||||
{
|
||||
@@ -47,7 +45,7 @@ Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
|
||||
pos = hostapd_eid_time_adv(hapd, pos);
|
||||
pos = hostapd_eid_time_zone(hapd, pos);
|
||||
@@ -1701,12 +1705,12 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1421,12 +1425,12 @@ int ieee802_11_build_ap_params(struct ho
|
||||
{
|
||||
struct ieee80211_mgmt *head = NULL;
|
||||
u8 *tail = NULL;
|
||||
@@ -62,7 +60,7 @@ Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
|
||||
#define BEACON_HEAD_BUF_SIZE 256
|
||||
#define BEACON_TAIL_BUF_SIZE 512
|
||||
@@ -1832,7 +1836,9 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1552,7 +1556,9 @@ int ieee802_11_build_ap_params(struct ho
|
||||
tailpos = hostapd_eid_ht_capabilities(hapd, tailpos);
|
||||
tailpos = hostapd_eid_ht_operation(hapd, tailpos);
|
||||
|
||||
@@ -72,7 +70,7 @@ Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
|
||||
/*
|
||||
* TODO: Time Advertisement element should only be included in some
|
||||
@@ -2032,6 +2038,26 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1750,6 +1756,26 @@ int ieee802_11_build_ap_params(struct ho
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,7 +97,7 @@ Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2107,22 +2133,6 @@ int ieee802_11_set_beacon(struct hostapd
|
||||
@@ -1820,22 +1846,6 @@ int ieee802_11_set_beacon(struct hostapd
|
||||
params.unsol_bcast_probe_resp_tmpl =
|
||||
hostapd_unsol_bcast_probe_resp(hapd, ¶ms);
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
@@ -122,10 +120,8 @@ Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
hapd->reenable_beacon = 0;
|
||||
#ifdef CONFIG_SAE
|
||||
params.sae_pwe = hapd->conf->sae_pwe;
|
||||
Index: hostapd-2021-02-18/src/ap/ieee802_11_shared.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/ieee802_11_shared.c
|
||||
+++ hostapd-2021-02-18/src/ap/ieee802_11_shared.c
|
||||
--- a/src/ap/ieee802_11_shared.c
|
||||
+++ b/src/ap/ieee802_11_shared.c
|
||||
@@ -427,6 +427,10 @@ static void hostapd_ext_capab_byte(struc
|
||||
* Identifiers Used Exclusively */
|
||||
}
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -5676,17 +5676,29 @@ static int hostapd_eid_multiple_bssid_ch
|
||||
@@ -6991,17 +6991,29 @@ static int hostapd_eid_multiple_bssid_ch
|
||||
int *count)
|
||||
{
|
||||
/* ID + size + count */
|
||||
@@ -62,7 +62,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
}
|
||||
|
||||
multiple_bssid_too_big:
|
||||
@@ -5711,7 +5723,7 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7026,7 +7038,7 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
u8 *eid, u8 *end, int *count,
|
||||
u8 is_beacon)
|
||||
{
|
||||
@@ -71,7 +71,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
int i;
|
||||
|
||||
*eid++ = WLAN_EID_MULTIPLE_BSSID;
|
||||
@@ -5747,13 +5759,13 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7062,13 +7074,13 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
*index_size_offset = (eid - index_size_offset) - 1;
|
||||
|
||||
eid = hostapd_get_rsne(bss, eid, end - eid);
|
||||
|
||||
@@ -23,11 +23,9 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
src/ap/ieee802_11_shared.c | 8 +++-----
|
||||
7 files changed, 22 insertions(+), 14 deletions(-)
|
||||
|
||||
Index: hostapd-2021-02-18/hostapd/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/hostapd/config_file.c
|
||||
+++ hostapd-2021-02-18/hostapd/config_file.c
|
||||
@@ -4672,6 +4672,8 @@ static int hostapd_config_fill(struct ho
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -4701,6 +4701,8 @@ static int hostapd_config_fill(struct ho
|
||||
#endif /* CONFIG_MACSEC */
|
||||
} else if (os_strcmp(buf, "multiple_bssid") == 0) {
|
||||
conf->multiple_bssid = atoi(pos);
|
||||
@@ -36,11 +34,9 @@ Index: hostapd-2021-02-18/hostapd/config_file.c
|
||||
} else if (os_strcmp(buf, "rnr_beacon") == 0) {
|
||||
bss->rnr_beacon = atoi(pos);
|
||||
} else if (os_strcmp(buf, "disable_11n") == 0) {
|
||||
Index: hostapd-2021-02-18/src/ap/ap_config.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/ap_config.c
|
||||
+++ hostapd-2021-02-18/src/ap/ap_config.c
|
||||
@@ -1486,6 +1486,12 @@ int hostapd_config_check(struct hostapd_
|
||||
--- a/src/ap/ap_config.c
|
||||
+++ b/src/ap/ap_config.c
|
||||
@@ -1489,6 +1489,12 @@ int hostapd_config_check(struct hostapd_
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -53,11 +49,9 @@ Index: hostapd-2021-02-18/src/ap/ap_config.c
|
||||
for (i = 0; i < conf->num_bss; i++) {
|
||||
if (hostapd_config_check_bss(conf->bss[i], conf, full_config))
|
||||
return -1;
|
||||
Index: hostapd-2021-02-18/src/ap/ap_config.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/ap_config.h
|
||||
+++ hostapd-2021-02-18/src/ap/ap_config.h
|
||||
@@ -1017,6 +1017,7 @@ struct hostapd_config {
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -1029,6 +1029,7 @@ struct hostapd_config {
|
||||
u8 ht40_plus_minus_allowed;
|
||||
|
||||
u8 multiple_bssid;
|
||||
@@ -65,10 +59,8 @@ Index: hostapd-2021-02-18/src/ap/ap_config.h
|
||||
|
||||
/* Use driver-generated interface addresses when adding multiple BSSs */
|
||||
u8 use_driver_iface_addr;
|
||||
Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-18/src/ap/beacon.c
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -535,7 +535,7 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
pos = hostapd_get_mde(hapd, pos, epos - pos);
|
||||
|
||||
@@ -88,7 +80,7 @@ Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
ext_cap_pos[12] |= 0x01;
|
||||
|
||||
pos = hostapd_eid_time_adv(hapd, pos);
|
||||
@@ -2051,10 +2050,11 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1769,10 +1768,11 @@ int ieee802_11_build_ap_params(struct ho
|
||||
params->multiple_bssid_ies + len,
|
||||
1, params->multiple_bssid_ie_offsets,
|
||||
¶ms->multiple_bssid_ie_count,
|
||||
@@ -103,11 +95,9 @@ Index: hostapd-2021-02-18/src/ap/beacon.c
|
||||
ext_cap_pos[12] |= 0x01;
|
||||
}
|
||||
|
||||
Index: hostapd-2021-02-18/src/ap/ieee802_11.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/ieee802_11.c
|
||||
+++ hostapd-2021-02-18/src/ap/ieee802_11.c
|
||||
@@ -7076,12 +7076,13 @@ multiple_bssid_too_big:
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -7096,12 +7096,13 @@ multiple_bssid_too_big:
|
||||
|
||||
u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd, u8 *eid, u8 *end,
|
||||
u8 is_beacon, u8 **eid_offsets, int *eid_count,
|
||||
@@ -123,10 +113,8 @@ Index: hostapd-2021-02-18/src/ap/ieee802_11.c
|
||||
eid_offsets[*eid_count] = eid;
|
||||
*eid_count = *eid_count + 1;
|
||||
}
|
||||
Index: hostapd-2021-02-18/src/ap/ieee802_11.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/ieee802_11.h
|
||||
+++ hostapd-2021-02-18/src/ap/ieee802_11.h
|
||||
--- a/src/ap/ieee802_11.h
|
||||
+++ b/src/ap/ieee802_11.h
|
||||
@@ -121,7 +121,7 @@ void hostapd_client_poll_ok(struct hosta
|
||||
u8 * hostapd_eid_bss_max_idle_period(struct hostapd_data *hapd, u8 *eid);
|
||||
u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd, u8 *eid, u8 *end,
|
||||
@@ -136,10 +124,8 @@ Index: hostapd-2021-02-18/src/ap/ieee802_11.h
|
||||
int hostapd_eid_multiple_bssid_len(struct hostapd_data *hapd);
|
||||
u8 * hostapd_eid_reduced_neighbor_report(struct hostapd_data *hapd, u8 *eid);
|
||||
size_t hostapd_eid_reduced_neighbor_report_len(struct hostapd_data *hapd);
|
||||
Index: hostapd-2021-02-18/src/ap/ieee802_11_shared.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/ieee802_11_shared.c
|
||||
+++ hostapd-2021-02-18/src/ap/ieee802_11_shared.c
|
||||
--- a/src/ap/ieee802_11_shared.c
|
||||
+++ b/src/ap/ieee802_11_shared.c
|
||||
@@ -427,9 +427,8 @@ static void hostapd_ext_capab_byte(struc
|
||||
* Identifiers Used Exclusively */
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -2719,7 +2719,7 @@ int hostapd_get_aid(struct hostapd_data
|
||||
@@ -3871,7 +3871,7 @@ int hostapd_get_aid(struct hostapd_data
|
||||
return -1;
|
||||
aid = i * 32 + j;
|
||||
if (hapd->iconf->multiple_bssid)
|
||||
|
||||
@@ -33,7 +33,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -1788,6 +1788,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1774,6 +1774,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
if ((params->multiple_bssid_ie_count <= 1) &&
|
||||
(ext_cap_len >= 13) && (ext_cap_pos[12] & 0x08))
|
||||
ext_cap_pos[12] |= 0x01;
|
||||
@@ -43,10 +43,10 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
return 0;
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -1109,19 +1109,60 @@ static int db_table_create_radius_attrib
|
||||
|
||||
@@ -1203,11 +1203,52 @@ static int db_table_create_radius_attrib
|
||||
#endif /* CONFIG_NO_RADIUS */
|
||||
|
||||
|
||||
+static int hostapd_set_beacon(struct hostapd_data *hapd)
|
||||
+{
|
||||
+ struct hostapd_bss_config *conf = hapd->conf;
|
||||
@@ -84,7 +84,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
+ hostapd_ubus_add_bss(hapd);
|
||||
+ return 0;
|
||||
+}
|
||||
|
||||
+
|
||||
/**
|
||||
* hostapd_setup_bss - Per-BSS setup (initialization)
|
||||
* @hapd: Pointer to BSS data
|
||||
@@ -96,16 +96,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
*
|
||||
* This function is used to initialize all per-BSS data structures and
|
||||
* resources. This gets called in a loop for each BSS when an interface is
|
||||
* initialized. Most of the modules that are initialized here will be
|
||||
* deinitialized in hostapd_cleanup().
|
||||
*/
|
||||
-static int hostapd_setup_bss(struct hostapd_data *hapd, int first)
|
||||
+static int hostapd_setup_bss(struct hostapd_data *hapd, int first,
|
||||
+ bool set_beacon)
|
||||
{
|
||||
struct hostapd_bss_config *conf = hapd->conf;
|
||||
u8 ssid[SSID_MAX_LEN + 1];
|
||||
@@ -1393,31 +1434,8 @@ static int hostapd_setup_bss(struct host
|
||||
@@ -1503,32 +1544,8 @@ int hostapd_setup_bss(struct hostapd_dat
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -134,22 +125,23 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
- hapd->driver->set_operstate(hapd->drv_priv, 1);
|
||||
-
|
||||
- hostapd_ubus_add_bss(hapd);
|
||||
- hostapd_ucode_add_bss(hapd);
|
||||
+ if (set_beacon)
|
||||
+ return hostapd_set_beacon(hapd);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -2109,7 +2127,8 @@ static int hostapd_setup_interface_compl
|
||||
@@ -2223,7 +2240,8 @@ static int hostapd_setup_interface_compl
|
||||
hapd = iface->bss[j];
|
||||
if (j)
|
||||
os_memcpy(hapd->own_addr, prev_addr, ETH_ALEN);
|
||||
- if (hostapd_setup_bss(hapd, j == 0)) {
|
||||
- if (hostapd_setup_bss(hapd, j == 0, true)) {
|
||||
+ if (hostapd_setup_bss(hapd, j == 0,
|
||||
+ hapd->iconf->multiple_bssid? 0 : 1)) {
|
||||
for (;;) {
|
||||
hapd = iface->bss[j];
|
||||
hostapd_bss_deinit_no_free(hapd);
|
||||
@@ -2123,6 +2142,24 @@ static int hostapd_setup_interface_compl
|
||||
@@ -2237,6 +2255,24 @@ static int hostapd_setup_interface_compl
|
||||
if (is_zero_ether_addr(hapd->conf->bssid))
|
||||
prev_addr = hapd->own_addr;
|
||||
}
|
||||
@@ -174,18 +166,18 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
hapd = iface->bss[0];
|
||||
|
||||
hostapd_tx_queue_params(iface);
|
||||
@@ -2989,7 +3026,7 @@ int hostapd_add_iface(struct hapd_interf
|
||||
@@ -3123,7 +3159,7 @@ int hostapd_add_iface(struct hapd_interf
|
||||
|
||||
if (start_ctrl_iface_bss(hapd) < 0 ||
|
||||
(hapd_iface->state == HAPD_IFACE_ENABLED &&
|
||||
- hostapd_setup_bss(hapd, -1))) {
|
||||
- hostapd_setup_bss(hapd, -1, true))) {
|
||||
+ hostapd_setup_bss(hapd, -1, 1))) {
|
||||
hostapd_cleanup(hapd);
|
||||
hapd_iface->bss[hapd_iface->num_bss - 1] = NULL;
|
||||
hapd_iface->conf->num_bss--;
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -5721,7 +5721,7 @@ int hostapd_eid_multiple_bssid_len(struc
|
||||
@@ -7036,7 +7036,7 @@ int hostapd_eid_multiple_bssid_len(struc
|
||||
|
||||
static u8 * hostapd_eid_multiple_bssid_chunk(struct hostapd_data *hapd,
|
||||
u8 *eid, u8 *end, int *count,
|
||||
@@ -194,7 +186,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
{
|
||||
u8 *size_offset, *num_offset;
|
||||
int i;
|
||||
@@ -5753,6 +5753,7 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7068,6 +7068,7 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
index_size_offset = eid++;
|
||||
*eid++ = i;
|
||||
if (is_beacon) {
|
||||
@@ -202,7 +194,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
*eid++ = bss->conf->dtim_period;
|
||||
*eid++ = 0xFF;
|
||||
}
|
||||
@@ -5783,17 +5784,53 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
@@ -7098,17 +7099,53 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
u8 is_beacon, u8 **eid_offsets, int *eid_count,
|
||||
int eid_max, u8 ema_beacon)
|
||||
{
|
||||
|
||||
@@ -17,7 +17,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -5843,6 +5843,8 @@ size_t hostapd_eid_reduced_neighbor_repo
|
||||
@@ -7158,6 +7158,8 @@ size_t hostapd_eid_reduced_neighbor_repo
|
||||
len += TBTT_HEADER_LENGTH + ((hapd->iface->num_bss - 1) * TBTT_INFO_LENGTH);
|
||||
if (!dl_list_empty(&hapd->nr_db))
|
||||
len += dl_list_len(&hapd->nr_db) * (TBTT_HEADER_LENGTH + TBTT_INFO_LENGTH);
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
return len;
|
||||
}
|
||||
@@ -5853,12 +5855,13 @@ u8 * hostapd_eid_reduced_neighbor_report
|
||||
@@ -7168,12 +7170,13 @@ u8 * hostapd_eid_reduced_neighbor_report
|
||||
size_t len = hostapd_eid_reduced_neighbor_report_len(hapd);
|
||||
struct hostapd_neighbor_entry *nr;
|
||||
int i, count = 0;
|
||||
@@ -41,7 +41,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
if (hapd->iface->num_bss > 1) {
|
||||
u8 op_class, channel;
|
||||
@@ -5920,6 +5923,9 @@ nr_db:
|
||||
@@ -7235,6 +7238,9 @@ nr_db:
|
||||
|
||||
if (!count)
|
||||
eid -= 2;
|
||||
|
||||
@@ -20,10 +20,8 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
src/ap/ieee802_11.h | 7 ++++--
|
||||
3 files changed, 62 insertions(+), 25 deletions(-)
|
||||
|
||||
Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-20/src/ap/beacon.c
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -432,12 +432,16 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
const struct ieee80211_mgmt *req,
|
||||
int is_p2p, size_t *resp_len)
|
||||
@@ -87,8 +85,8 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
/* eCSA IE */
|
||||
csa_pos = hostapd_eid_ecsa(hapd, pos);
|
||||
@@ -847,10 +864,6 @@ void handle_probe_req(struct hostapd_dat
|
||||
.frame_info = fi,
|
||||
};
|
||||
ssi_signal < hapd->iconf->rssi_ignore_probe_request)
|
||||
return;
|
||||
|
||||
- if (hapd->iconf->multiple_bssid &&
|
||||
- hapd != hostapd_get_primary_bss(hapd))
|
||||
@@ -97,7 +95,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
if (len < IEEE80211_HDRLEN)
|
||||
return;
|
||||
ie = ((const u8 *) mgmt) + IEEE80211_HDRLEN;
|
||||
@@ -1077,6 +1090,10 @@ void handle_probe_req(struct hostapd_dat
|
||||
@@ -1079,6 +1092,10 @@ void handle_probe_req(struct hostapd_dat
|
||||
wpa_msg_ctrl(hapd->msg_ctx, MSG_INFO, RX_PROBE_REQUEST "sa=" MACSTR
|
||||
" signal=%d", MAC2STR(mgmt->sa), ssi_signal);
|
||||
|
||||
@@ -108,7 +106,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
resp = hostapd_gen_probe_resp(hapd, mgmt, elems.p2p != NULL,
|
||||
&resp_len);
|
||||
if (resp == NULL)
|
||||
@@ -1754,7 +1771,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1756,7 +1773,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
}
|
||||
|
||||
if (hapd->iconf->multiple_bssid) {
|
||||
@@ -117,7 +115,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
u8 *end;
|
||||
|
||||
params->multiple_bssid_index = hostapd_get_bss_index(hapd);
|
||||
@@ -1762,7 +1779,8 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1764,7 +1781,8 @@ int ieee802_11_build_ap_params(struct ho
|
||||
params->multiple_bssid_ies = os_zalloc(len);
|
||||
if (params->multiple_bssid_ies == NULL)
|
||||
return -1;
|
||||
@@ -127,11 +125,9 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
params->multiple_bssid_ies + len,
|
||||
1, params->multiple_bssid_ie_offsets,
|
||||
¶ms->multiple_bssid_ie_count,
|
||||
Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/ieee802_11.c
|
||||
+++ hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
@@ -6968,24 +6968,35 @@ u8 * hostapd_eid_wb_chsw_wrapper(struct
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -6988,24 +6988,35 @@ u8 * hostapd_eid_wb_chsw_wrapper(struct
|
||||
|
||||
|
||||
static int hostapd_eid_multiple_bssid_chunk_len(struct hostapd_data *hapd,
|
||||
@@ -171,7 +167,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
|
||||
if (wpa_auth_get_wpa_ie(bss->wpa_auth, &ies_len))
|
||||
nontx_profile_len += ies_len;
|
||||
@@ -7003,21 +7014,27 @@ multiple_bssid_too_big:
|
||||
@@ -7023,21 +7034,27 @@ multiple_bssid_too_big:
|
||||
}
|
||||
|
||||
|
||||
@@ -201,7 +197,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
u8 *size_offset, *num_offset;
|
||||
int i;
|
||||
|
||||
@@ -7026,7 +7043,8 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7046,7 +7063,8 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
num_offset = eid++;
|
||||
|
||||
for (i = *count; i < hapd->iface->num_bss; i++) {
|
||||
@@ -211,7 +207,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
u8 *bss_size_offset, *index_size_offset, *pos = eid;
|
||||
u16 capab_info;
|
||||
|
||||
@@ -7040,16 +7058,24 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7060,16 +7078,24 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
eid += sizeof(capab_info);
|
||||
|
||||
*eid++ = WLAN_EID_SSID;
|
||||
@@ -240,7 +236,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
*eid++ = 0xFF;
|
||||
}
|
||||
*index_size_offset = (eid - index_size_offset) - 1;
|
||||
@@ -7075,7 +7101,8 @@ multiple_bssid_too_big:
|
||||
@@ -7095,7 +7121,8 @@ multiple_bssid_too_big:
|
||||
}
|
||||
|
||||
|
||||
@@ -250,7 +246,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
u8 is_beacon, u8 **eid_offsets, int *eid_count,
|
||||
int eid_max, u8 ema_beacon)
|
||||
{
|
||||
@@ -7094,8 +7121,9 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
@@ -7114,8 +7141,9 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
eid_offsets[*eid_count] = eid;
|
||||
*eid_count = *eid_count + 1;
|
||||
}
|
||||
@@ -262,10 +258,8 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
}
|
||||
|
||||
if (!eid_count || !(*eid_count)) {
|
||||
Index: hostapd-2021-02-20/src/ap/ieee802_11.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/ieee802_11.h
|
||||
+++ hostapd-2021-02-20/src/ap/ieee802_11.h
|
||||
--- a/src/ap/ieee802_11.h
|
||||
+++ b/src/ap/ieee802_11.h
|
||||
@@ -119,10 +119,13 @@ u8 * hostapd_eid_time_zone(struct hostap
|
||||
int hostapd_update_time_adv(struct hostapd_data *hapd);
|
||||
void hostapd_client_poll_ok(struct hostapd_data *hapd, const u8 *addr);
|
||||
|
||||
@@ -13,11 +13,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
src/ap/ap_config.h | 1 +
|
||||
3 files changed, 6 insertions(+)
|
||||
|
||||
diff --git a/hostapd/config_file.c b/hostapd/config_file.c
|
||||
index 0bdf526..bbdd969 100644
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -3642,6 +3642,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
|
||||
@@ -3671,6 +3671,8 @@ static int hostapd_config_fill(struct ho
|
||||
return 1;
|
||||
}
|
||||
bss->unsol_bcast_probe_resp_interval = val;
|
||||
@@ -26,8 +24,6 @@ index 0bdf526..bbdd969 100644
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
} else if (os_strcmp(buf, "max_listen_interval") == 0) {
|
||||
bss->max_listen_interval = atoi(pos);
|
||||
diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf
|
||||
index ef26fe3..7c371cb 100644
|
||||
--- a/hostapd/hostapd.conf
|
||||
+++ b/hostapd/hostapd.conf
|
||||
@@ -577,6 +577,9 @@ wmm_ac_vo_acm=0
|
||||
@@ -40,11 +36,9 @@ index ef26fe3..7c371cb 100644
|
||||
##### IEEE 802.11n related configuration ######################################
|
||||
|
||||
# ieee80211n: Whether IEEE 802.11n (HT) is enabled
|
||||
diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
|
||||
index 95e44fa..5ae9187 100644
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -1066,6 +1066,7 @@ struct hostapd_config {
|
||||
@@ -1078,6 +1078,7 @@ struct hostapd_config {
|
||||
u8 he_6ghz_max_ampdu_len_exp;
|
||||
u8 he_6ghz_rx_ant_pat;
|
||||
u8 he_6ghz_tx_ant_pat;
|
||||
@@ -52,28 +46,9 @@ index 95e44fa..5ae9187 100644
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
|
||||
/* VHT enable/disable config from CHAN_SWITCH */
|
||||
--
|
||||
2.7.4
|
||||
|
||||
From e9263d5c0a8e166e025a63f823288266d1085942 Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Tue, 6 Oct 2020 15:05:24 -0700
|
||||
Subject: [PATCH 2/4] neighbor_db: set the co-locate bit
|
||||
|
||||
If the BSS is co-located, the corresponding bit needs to be set inside
|
||||
bssid_info.
|
||||
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
src/ap/neighbor_db.c | 3 +++
|
||||
src/common/ieee802_11_defs.h | 2 ++
|
||||
2 files changed, 5 insertions(+)
|
||||
|
||||
diff --git a/src/ap/neighbor_db.c b/src/ap/neighbor_db.c
|
||||
index ce6cfa9..6a0e8c3 100644
|
||||
--- a/src/ap/neighbor_db.c
|
||||
+++ b/src/ap/neighbor_db.c
|
||||
@@ -282,6 +282,9 @@ void hostapd_neighbor_set_own_report(struct hostapd_data *hapd)
|
||||
@@ -282,6 +282,9 @@ void hostapd_neighbor_set_own_report(str
|
||||
bssid_info |= NEI_REP_BSSID_INFO_HE;
|
||||
}
|
||||
|
||||
@@ -83,8 +58,6 @@ index ce6cfa9..6a0e8c3 100644
|
||||
/* TODO: Set NEI_REP_BSSID_INFO_MOBILITY_DOMAIN if MDE is set */
|
||||
|
||||
if (ieee80211_freq_to_channel_ext(hapd->iface->freq,
|
||||
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
|
||||
index 8c73156..3a2cb6c 100644
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -2145,6 +2145,8 @@ enum phy_type {
|
||||
@@ -96,27 +69,29 @@ index 8c73156..3a2cb6c 100644
|
||||
|
||||
/*
|
||||
* IEEE P802.11-REVmc/D5.0 Table 9-152 - HT/VHT Operation Information
|
||||
--
|
||||
2.7.4
|
||||
@@ -2439,7 +2441,7 @@ enum mscs_description_subelem {
|
||||
|
||||
From 92d786ddb2568b688ed4d25e32f3987e926c0ca4 Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Mon, 21 Sep 2020 13:50:58 +0200
|
||||
Subject: [PATCH 3/4] rrm: add handling for co-located BSS
|
||||
/* TBTT Information field defines */
|
||||
#define TBTT_HEADER_LENGTH 4
|
||||
-#define TBTT_INFO_LENGTH 12
|
||||
+#define TBTT_INFO_LENGTH 13
|
||||
#define TBTT_INFO_FILTERED_NEIGH_AP BIT(2)
|
||||
#define TBTT_INFO_COUNT(x) (((x) & 0xf) << 4)
|
||||
#define TBTT_AP_OFFSET_UNKNOWN 255
|
||||
@@ -2447,7 +2449,9 @@ enum mscs_description_subelem {
|
||||
#define TBTT_BSS_PARAM_SAME_SSID BIT(1)
|
||||
#define TBTT_BSS_PARAM_MULTIPLE_BSSID BIT(2)
|
||||
#define TBTT_BSS_PARAM_TRANSMITTED_BSSID BIT(3)
|
||||
-#define TBTT_BSS_PARAM_CO_LOCATED_ESS BIT(4)
|
||||
+#define TBTT_BSS_PARAM_MEMBER_CO_LOCATED_ESS BIT(4)
|
||||
#define TBTT_BSS_PARAM_20_TU_PROBE_RESP_ACTIVE BIT(5)
|
||||
+#define TBTT_BSS_PARAM_CO_LOCATED BIT(6)
|
||||
+#define TBTT_PSD_MAX_TXPOWER 255 /* dBm */
|
||||
|
||||
A BSS shall include the neighbor entry of a co-located BSS upon an incoming
|
||||
request.
|
||||
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
---
|
||||
src/ap/rrm.c | 117 +++++++++++++++++++++++++++++++++++++----------------------
|
||||
1 file changed, 74 insertions(+), 43 deletions(-)
|
||||
|
||||
diff --git a/src/ap/rrm.c b/src/ap/rrm.c
|
||||
index f2d5cd1..c9d51df 100644
|
||||
#endif /* IEEE802_11_DEFS_H */
|
||||
--- a/src/ap/rrm.c
|
||||
+++ b/src/ap/rrm.c
|
||||
@@ -196,6 +196,63 @@ static size_t hostapd_neighbor_report_len(struct wpabuf *buf,
|
||||
@@ -199,6 +199,63 @@ static size_t hostapd_neighbor_report_le
|
||||
}
|
||||
|
||||
|
||||
@@ -180,7 +155,7 @@ index f2d5cd1..c9d51df 100644
|
||||
static void hostapd_send_nei_report_resp(struct hostapd_data *hapd,
|
||||
const u8 *addr, u8 dialog_token,
|
||||
struct wpa_ssid_value *ssid, u8 lci,
|
||||
@@ -203,7 +260,6 @@ static void hostapd_send_nei_report_resp(struct hostapd_data *hapd,
|
||||
@@ -206,7 +263,6 @@ static void hostapd_send_nei_report_resp
|
||||
{
|
||||
struct hostapd_neighbor_entry *nr;
|
||||
struct wpabuf *buf;
|
||||
@@ -188,7 +163,7 @@ index f2d5cd1..c9d51df 100644
|
||||
|
||||
/*
|
||||
* The number and length of the Neighbor Report elements in a Neighbor
|
||||
@@ -220,52 +276,27 @@ static void hostapd_send_nei_report_resp(struct hostapd_data *hapd,
|
||||
@@ -223,52 +279,27 @@ static void hostapd_send_nei_report_resp
|
||||
|
||||
dl_list_for_each(nr, &hapd->nr_db, struct hostapd_neighbor_entry,
|
||||
list) {
|
||||
@@ -217,9 +192,7 @@ index f2d5cd1..c9d51df 100644
|
||||
- wpabuf_put_u8(buf, WLAN_EID_NEIGHBOR_REPORT);
|
||||
- wpabuf_put_u8(buf, len - 2);
|
||||
- wpabuf_put_buf(buf, nr->nr);
|
||||
+ if (!hapd->iconf->he_co_locate) {
|
||||
+ int i;
|
||||
|
||||
-
|
||||
- if (send_lci && nr->lci) {
|
||||
- wpabuf_put_u8(buf, WLAN_EID_MEASURE_REPORT);
|
||||
- wpabuf_put_u8(buf, wpabuf_len(nr->lci));
|
||||
@@ -231,12 +204,8 @@ index f2d5cd1..c9d51df 100644
|
||||
- wpabuf_put_buf(buf, nr->lci);
|
||||
- *msmt_token = lci;
|
||||
- }
|
||||
+ for (i = 0; i < hapd->iface->interfaces->count; i++) {
|
||||
+ struct hostapd_iface *iface = hapd->iface->interfaces->iface[i];
|
||||
+ int j;
|
||||
+
|
||||
+ if (iface == hapd->iface || !iface->conf->he_co_locate)
|
||||
+ continue;
|
||||
+ if (!hapd->iconf->he_co_locate) {
|
||||
+ int i;
|
||||
|
||||
- if (civic && nr->civic) {
|
||||
- wpabuf_put_u8(buf, WLAN_EID_MEASURE_REPORT);
|
||||
@@ -248,6 +217,13 @@ index f2d5cd1..c9d51df 100644
|
||||
- msmt_token = wpabuf_put(buf, 0);
|
||||
- wpabuf_put_buf(buf, nr->civic);
|
||||
- *msmt_token = civic;
|
||||
+ for (i = 0; i < hapd->iface->interfaces->count; i++) {
|
||||
+ struct hostapd_iface *iface = hapd->iface->interfaces->iface[i];
|
||||
+ int j;
|
||||
+
|
||||
+ if (iface == hapd->iface || !iface->conf->he_co_locate)
|
||||
+ continue;
|
||||
+
|
||||
+ for (j = 0; j < iface->num_bss; j++) {
|
||||
+ nr = hostapd_neighbor_get(iface->bss[j], iface->bss[j]->own_addr, NULL);
|
||||
+ if (!nr)
|
||||
@@ -258,32 +234,9 @@ index f2d5cd1..c9d51df 100644
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
From fe0833e906559efb41ec9ee3f3e77049b968e6aa Mon Sep 17 00:00:00 2001
|
||||
From: John Crispin <john@phrozen.org>
|
||||
Date: Wed, 21 Oct 2020 11:47:22 -0700
|
||||
Subject: [PATCH 4/4] rnr: add reduced neighbor reporting
|
||||
|
||||
The Reduced Neighbor Report (rnr) element contains channel and other
|
||||
information related to neighbor APs. It is part of the OCE requirement.
|
||||
|
||||
Signed-off-by: John Crispin <john@phrozen.org>
|
||||
Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
---
|
||||
src/ap/beacon.c | 40 +++++++++-
|
||||
src/ap/ieee802_11.c | 177 ++++++++++++++++++++++++++++++++-----------
|
||||
src/ap/ieee802_11.h | 4 +-
|
||||
src/common/ieee802_11_defs.h | 6 +-
|
||||
4 files changed, 173 insertions(+), 54 deletions(-)
|
||||
|
||||
diff --git a/src/ap/beacon.c b/src/ap/beacon.c
|
||||
index 769e0d0..8afaf7a 100644
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -481,6 +481,8 @@ static u8 * hostapd_gen_probe_resp(struct hostapd_data *hapd,
|
||||
@@ -481,6 +481,8 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
buflen += hostapd_eid_dpp_cc_len(hapd);
|
||||
if (hapd->iconf->multiple_bssid)
|
||||
buflen += hostapd_eid_multiple_bssid_len(hapd, hidden, 0);
|
||||
@@ -292,7 +245,7 @@ index 769e0d0..8afaf7a 100644
|
||||
|
||||
resp = os_zalloc(buflen);
|
||||
if (resp == NULL)
|
||||
@@ -645,6 +647,8 @@ static u8 * hostapd_gen_probe_resp(struct hostapd_data *hapd,
|
||||
@@ -657,6 +659,8 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
pos = hostapd_eid_mbo(hapd, pos, (u8 *) resp + buflen - pos);
|
||||
pos = hostapd_eid_owe_trans(hapd, pos, (u8 *) resp + buflen - pos);
|
||||
pos = hostapd_eid_dpp_cc(hapd, pos, (u8 *) resp + buflen - pos);
|
||||
@@ -301,7 +254,7 @@ index 769e0d0..8afaf7a 100644
|
||||
|
||||
if (hapd->conf->vendor_elements) {
|
||||
os_memcpy(pos, wpabuf_head(hapd->conf->vendor_elements),
|
||||
@@ -660,7 +664,8 @@ static u8 * hostapd_gen_probe_resp(struct hostapd_data *hapd,
|
||||
@@ -672,7 +676,8 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
enum ssid_match_result {
|
||||
NO_SSID_MATCH,
|
||||
EXACT_SSID_MATCH,
|
||||
@@ -311,7 +264,7 @@ index 769e0d0..8afaf7a 100644
|
||||
};
|
||||
|
||||
static enum ssid_match_result ssid_match(struct hostapd_data *hapd,
|
||||
@@ -672,6 +677,7 @@ static enum ssid_match_result ssid_match(struct hostapd_data *hapd,
|
||||
@@ -684,6 +689,7 @@ static enum ssid_match_result ssid_match
|
||||
{
|
||||
const u8 *pos, *end;
|
||||
int wildcard = 0;
|
||||
@@ -319,7 +272,7 @@ index 769e0d0..8afaf7a 100644
|
||||
|
||||
if (ssid_len == 0)
|
||||
wildcard = 1;
|
||||
@@ -705,6 +711,25 @@ static enum ssid_match_result ssid_match(struct hostapd_data *hapd,
|
||||
@@ -717,6 +723,25 @@ static enum ssid_match_result ssid_match
|
||||
}
|
||||
}
|
||||
|
||||
@@ -345,7 +298,7 @@ index 769e0d0..8afaf7a 100644
|
||||
return wildcard ? WILDCARD_SSID_MATCH : NO_SSID_MATCH;
|
||||
}
|
||||
|
||||
@@ -1079,7 +1104,8 @@ void handle_probe_req(struct hostapd_data *hapd,
|
||||
@@ -1093,7 +1118,8 @@ void handle_probe_req(struct hostapd_dat
|
||||
" signal=%d", MAC2STR(mgmt->sa), ssi_signal);
|
||||
|
||||
if (hapd->iconf->multiple_bssid &&
|
||||
@@ -355,7 +308,7 @@ index 769e0d0..8afaf7a 100644
|
||||
return;
|
||||
|
||||
resp = hostapd_gen_probe_resp(hapd, mgmt, elems.p2p != NULL,
|
||||
@@ -1318,6 +1344,8 @@ static u8 * hostapd_gen_fils_discovery(struct hostapd_data *hapd, size_t *len)
|
||||
@@ -1332,6 +1358,8 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
total_len += 3;
|
||||
}
|
||||
|
||||
@@ -364,7 +317,7 @@ index 769e0d0..8afaf7a 100644
|
||||
pos = hostapd_eid_fils_indic(hapd, buf, 0);
|
||||
buf_len = pos - buf;
|
||||
total_len += buf_len;
|
||||
@@ -1386,6 +1414,8 @@ static u8 * hostapd_gen_fils_discovery(struct hostapd_data *hapd, size_t *len)
|
||||
@@ -1400,6 +1428,8 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
/* Fill in the Length field value */
|
||||
*length_pos = pos - (length_pos + 1);
|
||||
|
||||
@@ -373,7 +326,7 @@ index 769e0d0..8afaf7a 100644
|
||||
/* FILS Indication element */
|
||||
if (buf_len) {
|
||||
os_memcpy(pos, buf, buf_len);
|
||||
@@ -1475,7 +1505,8 @@ int ieee802_11_build_ap_params(struct hostapd_data *hapd,
|
||||
@@ -1489,7 +1519,8 @@ int ieee802_11_build_ap_params(struct ho
|
||||
tail_len += hostapd_mbo_ie_len(hapd);
|
||||
tail_len += hostapd_eid_owe_trans_len(hapd);
|
||||
tail_len += hostapd_eid_dpp_cc_len(hapd);
|
||||
@@ -383,7 +336,7 @@ index 769e0d0..8afaf7a 100644
|
||||
|
||||
tailpos = tail = os_malloc(tail_len);
|
||||
if (head == NULL || tail == NULL) {
|
||||
@@ -1654,7 +1685,8 @@ int ieee802_11_build_ap_params(struct hostapd_data *hapd,
|
||||
@@ -1668,7 +1699,8 @@ int ieee802_11_build_ap_params(struct ho
|
||||
tailpos = hostapd_eid_owe_trans(hapd, tailpos,
|
||||
tail + tail_len - tailpos);
|
||||
tailpos = hostapd_eid_dpp_cc(hapd, tailpos, tail + tail_len - tailpos);
|
||||
@@ -393,11 +346,9 @@ index 769e0d0..8afaf7a 100644
|
||||
|
||||
if (hapd->conf->vendor_elements) {
|
||||
os_memcpy(tailpos, wpabuf_head(hapd->conf->vendor_elements),
|
||||
diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
|
||||
index 668c4db..408c764 100644
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -7158,14 +7158,45 @@ u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd,
|
||||
@@ -7178,14 +7178,45 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
}
|
||||
|
||||
|
||||
@@ -446,7 +397,7 @@ index 668c4db..408c764 100644
|
||||
if (len)
|
||||
len += 2; /* Element ID and length */
|
||||
|
||||
@@ -7173,58 +7204,76 @@ size_t hostapd_eid_reduced_neighbor_report_len(struct hostapd_data *hapd)
|
||||
@@ -7193,58 +7224,76 @@ size_t hostapd_eid_reduced_neighbor_repo
|
||||
}
|
||||
|
||||
|
||||
@@ -471,9 +422,6 @@ index 668c4db..408c764 100644
|
||||
|
||||
- *eid++ = WLAN_EID_REDUCED_NEIGHBOR_REPORT;
|
||||
- size_offset = eid++;
|
||||
-
|
||||
- if (hapd->iface->num_bss > 1) {
|
||||
- u8 op_class, channel;
|
||||
+ if (ieee80211_freq_to_channel_ext(hapd->iface->freq,
|
||||
+ hapd->iconf->secondary_channel,
|
||||
+ hostapd_get_oper_chwidth(hapd->iconf),
|
||||
@@ -481,9 +429,8 @@ index 668c4db..408c764 100644
|
||||
+ NUM_HOSTAPD_MODES)
|
||||
+ return eid;
|
||||
|
||||
- if (!(hapd->iface->drv_flags & WPA_DRIVER_FLAGS_AP_CSA) ||
|
||||
- !hapd->iface->freq)
|
||||
- goto nr_db;
|
||||
- if (hapd->iface->num_bss > 1) {
|
||||
- u8 op_class, channel;
|
||||
+ tbtt_count_pos = eid++;
|
||||
+ *eid++ = TBTT_INFO_LENGTH;
|
||||
+ *eid++ = op_class;
|
||||
@@ -491,6 +438,10 @@ index 668c4db..408c764 100644
|
||||
+ for (i = 0; i < hapd->iface->num_bss; i++) {
|
||||
+ u8 bss_param = 0;
|
||||
|
||||
- if (!(hapd->iface->drv_flags & WPA_DRIVER_FLAGS_AP_CSA) ||
|
||||
- !hapd->iface->freq)
|
||||
- goto nr_db;
|
||||
-
|
||||
- if (ieee80211_freq_to_channel_ext(hapd->iface->freq,
|
||||
- hapd->iconf->secondary_channel,
|
||||
- hostapd_get_oper_chwidth(hapd->iconf),
|
||||
@@ -565,7 +516,7 @@ index 668c4db..408c764 100644
|
||||
dl_list_for_each(nr, &hapd->nr_db, struct hostapd_neighbor_entry,
|
||||
list) {
|
||||
if (!nr->nr || wpabuf_len(nr->nr) < 12)
|
||||
@@ -7241,9 +7290,45 @@ nr_db:
|
||||
@@ -7261,9 +7310,45 @@ nr_db:
|
||||
os_memcpy(eid, &nr->short_ssid, 4);
|
||||
eid += 4;
|
||||
*eid++ = nr->bss_parameters;
|
||||
@@ -612,11 +563,9 @@ index 668c4db..408c764 100644
|
||||
if (!count)
|
||||
eid -= 2;
|
||||
else
|
||||
diff --git a/src/ap/ieee802_11.h b/src/ap/ieee802_11.h
|
||||
index 1145210..2f45b61 100644
|
||||
--- a/src/ap/ieee802_11.h
|
||||
+++ b/src/ap/ieee802_11.h
|
||||
@@ -126,8 +126,8 @@ u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd,
|
||||
@@ -126,8 +126,8 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
int hostapd_eid_multiple_bssid_len(struct hostapd_data *hapd,
|
||||
struct hostapd_data *hidden,
|
||||
u8 is_beacon);
|
||||
@@ -627,30 +576,3 @@ index 1145210..2f45b61 100644
|
||||
int auth_sae_init_committed(struct hostapd_data *hapd, struct sta_info *sta);
|
||||
#ifdef CONFIG_SAE
|
||||
void sae_clear_retransmit_timer(struct hostapd_data *hapd,
|
||||
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
|
||||
index 3a2cb6c..4c438dd 100644
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -2441,7 +2441,7 @@ enum mscs_description_subelem {
|
||||
|
||||
/* TBTT Information field defines */
|
||||
#define TBTT_HEADER_LENGTH 4
|
||||
-#define TBTT_INFO_LENGTH 12
|
||||
+#define TBTT_INFO_LENGTH 13
|
||||
#define TBTT_INFO_FILTERED_NEIGH_AP BIT(2)
|
||||
#define TBTT_INFO_COUNT(x) (((x) & 0xf) << 4)
|
||||
#define TBTT_AP_OFFSET_UNKNOWN 255
|
||||
@@ -2449,7 +2449,9 @@ enum mscs_description_subelem {
|
||||
#define TBTT_BSS_PARAM_SAME_SSID BIT(1)
|
||||
#define TBTT_BSS_PARAM_MULTIPLE_BSSID BIT(2)
|
||||
#define TBTT_BSS_PARAM_TRANSMITTED_BSSID BIT(3)
|
||||
-#define TBTT_BSS_PARAM_CO_LOCATED_ESS BIT(4)
|
||||
+#define TBTT_BSS_PARAM_MEMBER_CO_LOCATED_ESS BIT(4)
|
||||
#define TBTT_BSS_PARAM_20_TU_PROBE_RESP_ACTIVE BIT(5)
|
||||
+#define TBTT_BSS_PARAM_CO_LOCATED BIT(6)
|
||||
+#define TBTT_PSD_MAX_TXPOWER 255 /* dBm */
|
||||
|
||||
#endif /* IEEE802_11_DEFS_H */
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
@@ -23,11 +23,9 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
src/ap/ieee802_11_he.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/src/ap/ieee802_11_he.c b/src/ap/ieee802_11_he.c
|
||||
index 8391f94..18436a6 100644
|
||||
--- a/src/ap/ieee802_11_he.c
|
||||
+++ b/src/ap/ieee802_11_he.c
|
||||
@@ -233,6 +233,14 @@ u8 * hostapd_eid_he_operation(struct hostapd_data *hapd, u8 *eid)
|
||||
@@ -234,6 +234,14 @@ u8 * hostapd_eid_he_operation(struct hos
|
||||
*pos++ = center_idx_to_bw_6ghz(seg0);
|
||||
|
||||
/* Channel Center Freq Seg0/Seg1 */
|
||||
@@ -42,6 +40,3 @@ index 8391f94..18436a6 100644
|
||||
*pos++ = seg0;
|
||||
*pos++ = seg1;
|
||||
/* Minimum Rate */
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
@@ -121,7 +121,7 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
* Convert 80+80 MHz channel width to new style as interop
|
||||
--- a/src/common/hw_features_common.c
|
||||
+++ b/src/common/hw_features_common.c
|
||||
@@ -740,6 +740,7 @@ int ieee80211ac_cap_check(u32 hw, u32 co
|
||||
@@ -752,6 +752,7 @@ int ieee80211ac_cap_check(u32 hw, u32 co
|
||||
VHT_CAP_CHECK(VHT_CAP_VHT_LINK_ADAPTATION_VHT_MRQ_MFB);
|
||||
VHT_CAP_CHECK(VHT_CAP_RX_ANTENNA_PATTERN);
|
||||
VHT_CAP_CHECK(VHT_CAP_TX_ANTENNA_PATTERN);
|
||||
|
||||
@@ -17,7 +17,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/src/ap/ap_drv_ops.h
|
||||
+++ b/src/ap/ap_drv_ops.h
|
||||
@@ -299,6 +299,18 @@ static inline int hostapd_drv_switch_cha
|
||||
@@ -300,6 +300,18 @@ static inline int hostapd_drv_switch_cha
|
||||
return hapd->driver->switch_channel(hapd->drv_priv, settings);
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
{
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -65,6 +65,8 @@ static int setup_interface2(struct hosta
|
||||
@@ -67,6 +67,8 @@ static int setup_interface2(struct hosta
|
||||
static void channel_list_update_timeout(void *eloop_ctx, void *timeout_ctx);
|
||||
static void hostapd_interface_setup_failure_handler(void *eloop_ctx,
|
||||
void *timeout_ctx);
|
||||
@@ -47,7 +47,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
|
||||
int hostapd_for_each_interface(struct hapd_interfaces *interfaces,
|
||||
@@ -476,6 +478,9 @@ static void hostapd_free_hapd_data(struc
|
||||
@@ -568,6 +570,9 @@ void hostapd_free_hapd_data(struct hosta
|
||||
}
|
||||
eloop_cancel_timeout(auth_sae_process_commit, hapd, NULL);
|
||||
#endif /* CONFIG_SAE */
|
||||
@@ -57,7 +57,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
}
|
||||
|
||||
|
||||
@@ -3713,6 +3718,119 @@ hostapd_switch_channel_fallback(struct h
|
||||
@@ -3850,6 +3855,119 @@ hostapd_switch_channel_fallback(struct h
|
||||
hostapd_enable_iface(iface);
|
||||
}
|
||||
|
||||
@@ -179,7 +179,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -296,6 +296,16 @@ struct hostapd_data {
|
||||
@@ -321,6 +321,16 @@ struct hostapd_data {
|
||||
unsigned int cs_c_off_ecsa_beacon;
|
||||
unsigned int cs_c_off_ecsa_proberesp;
|
||||
|
||||
@@ -196,9 +196,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
#ifdef CONFIG_P2P
|
||||
struct p2p_data *p2p;
|
||||
struct p2p_group *p2p_group;
|
||||
@@ -642,6 +652,12 @@ void hostapd_periodic_iface(struct hosta
|
||||
int hostapd_owe_trans_get_info(struct hostapd_data *hapd);
|
||||
@@ -681,6 +691,12 @@ int hostapd_owe_trans_get_info(struct ho
|
||||
void hostapd_ocv_check_csa_sa_query(void *eloop_ctx, void *timeout_ctx);
|
||||
int hostapd_check_max_sta(struct hostapd_data *hapd);
|
||||
|
||||
+
|
||||
+#ifdef CONFIG_IEEE80211AX
|
||||
@@ -211,7 +211,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
int (*cb)(void *ctx, const u8 *sa,
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -2280,6 +2280,7 @@ struct ieee80211_spatial_reuse {
|
||||
@@ -2296,6 +2296,7 @@ struct ieee80211_spatial_reuse {
|
||||
#define HE_OPERATION_BSS_COLOR_PARTIAL ((u32) BIT(30))
|
||||
#define HE_OPERATION_BSS_COLOR_DISABLED ((u32) BIT(31))
|
||||
#define HE_OPERATION_BSS_COLOR_OFFSET 24
|
||||
@@ -219,7 +219,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
/* Spatial Reuse defines */
|
||||
#define SPATIAL_REUSE_SRP_DISALLOWED BIT(0)
|
||||
@@ -2430,4 +2431,9 @@ enum mscs_description_subelem {
|
||||
@@ -2456,4 +2457,9 @@ enum mscs_description_subelem {
|
||||
#define TBTT_BSS_PARAM_CO_LOCATED BIT(6)
|
||||
#define TBTT_PSD_MAX_TXPOWER 255 /* dBm */
|
||||
|
||||
@@ -231,7 +231,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
#endif /* IEEE802_11_DEFS_H */
|
||||
--- a/src/drivers/driver.h
|
||||
+++ b/src/drivers/driver.h
|
||||
@@ -2417,6 +2417,26 @@ struct csa_settings {
|
||||
@@ -2435,6 +2435,26 @@ struct csa_settings {
|
||||
u16 counter_offset_presp[2];
|
||||
};
|
||||
|
||||
@@ -258,7 +258,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
/* TDLS peer capabilities for send_tdls_mgmt() */
|
||||
enum tdls_peer_capability {
|
||||
TDLS_PEER_HT = BIT(0),
|
||||
@@ -3989,6 +4009,17 @@ struct wpa_driver_ops {
|
||||
@@ -4018,6 +4038,17 @@ struct wpa_driver_ops {
|
||||
int (*switch_channel)(void *priv, struct csa_settings *settings);
|
||||
|
||||
/**
|
||||
|
||||
@@ -15,11 +15,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
src/common/ieee802_11_defs.h | 1 +
|
||||
4 files changed, 28 insertions(+)
|
||||
|
||||
Index: hostapd-2021-02-08/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-08/src/ap/beacon.c
|
||||
@@ -592,11 +592,17 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -610,11 +610,17 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
|
||||
#ifdef CONFIG_IEEE80211AX
|
||||
if (hapd->iconf->ieee80211ax && !hapd->conf->disable_11ax) {
|
||||
@@ -37,7 +35,7 @@ Index: hostapd-2021-02-08/src/ap/beacon.c
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
|
||||
@@ -1646,12 +1652,18 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1649,12 +1655,18 @@ int ieee802_11_build_ap_params(struct ho
|
||||
|
||||
#ifdef CONFIG_IEEE80211AX
|
||||
if (hapd->iconf->ieee80211ax && !hapd->conf->disable_11ax) {
|
||||
@@ -56,10 +54,8 @@ Index: hostapd-2021-02-08/src/ap/beacon.c
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
|
||||
Index: hostapd-2021-02-08/src/ap/ieee802_11.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/src/ap/ieee802_11.h
|
||||
+++ hostapd-2021-02-08/src/ap/ieee802_11.h
|
||||
--- a/src/ap/ieee802_11.h
|
||||
+++ b/src/ap/ieee802_11.h
|
||||
@@ -100,6 +100,7 @@ u16 copy_sta_he_6ghz_capab(struct hostap
|
||||
const u8 *he_6ghz_capab);
|
||||
int hostapd_get_he_twt_responder(struct hostapd_data *hapd,
|
||||
@@ -68,11 +64,9 @@ Index: hostapd-2021-02-08/src/ap/ieee802_11.h
|
||||
void hostapd_tx_status(struct hostapd_data *hapd, const u8 *addr,
|
||||
const u8 *buf, size_t len, int ack);
|
||||
void hostapd_eapol_tx_status(struct hostapd_data *hapd, const u8 *dst,
|
||||
Index: hostapd-2021-02-08/src/ap/ieee802_11_he.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/src/ap/ieee802_11_he.c
|
||||
+++ hostapd-2021-02-08/src/ap/ieee802_11_he.c
|
||||
@@ -521,3 +521,17 @@ int hostapd_get_he_twt_responder(struct
|
||||
--- a/src/ap/ieee802_11_he.c
|
||||
+++ b/src/ap/ieee802_11_he.c
|
||||
@@ -524,3 +524,17 @@ int hostapd_get_he_twt_responder(struct
|
||||
|
||||
return !!(mac_cap[HE_MAC_CAPAB_0] & HE_MACCAP_TWT_RESPONDER);
|
||||
}
|
||||
@@ -90,10 +84,8 @@ Index: hostapd-2021-02-08/src/ap/ieee802_11_he.c
|
||||
+
|
||||
+ return eid;
|
||||
+}
|
||||
Index: hostapd-2021-02-08/src/common/ieee802_11_defs.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/src/common/ieee802_11_defs.h
|
||||
+++ hostapd-2021-02-08/src/common/ieee802_11_defs.h
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -480,6 +480,7 @@
|
||||
#define WLAN_EID_EXT_HE_OPERATION 36
|
||||
#define WLAN_EID_EXT_HE_MU_EDCA_PARAMS 38
|
||||
|
||||
@@ -168,7 +168,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
#endif /* CONFIG_FILE_H */
|
||||
--- a/hostapd/ctrl_iface.c
|
||||
+++ b/hostapd/ctrl_iface.c
|
||||
@@ -1310,42 +1310,6 @@ static int hostapd_ctrl_iface_get_config
|
||||
@@ -1420,42 +1420,6 @@ static int hostapd_ctrl_iface_get_config
|
||||
}
|
||||
|
||||
|
||||
@@ -210,8 +210,8 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
-
|
||||
|
||||
static int hostapd_ctrl_iface_set_band(struct hostapd_data *hapd,
|
||||
const char *band)
|
||||
@@ -3301,81 +3265,6 @@ static int hostapd_ctrl_driver_flags2(st
|
||||
const char *bands)
|
||||
@@ -3435,81 +3399,6 @@ static int hostapd_ctrl_driver_flags2(st
|
||||
return pos - buf;
|
||||
}
|
||||
|
||||
@@ -488,7 +488,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
#endif /* CTRL_IFACE_AP_H */
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -5672,6 +5672,87 @@ u8 * hostapd_eid_wb_chsw_wrapper(struct
|
||||
@@ -6987,6 +6987,87 @@ u8 * hostapd_eid_wb_chsw_wrapper(struct
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -18,13 +18,11 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
wpa_supplicant/wpa_supplicant.conf | 14 ++++++++++++++
|
||||
6 files changed, 82 insertions(+), 1 deletion(-)
|
||||
|
||||
Index: hostapd-2021-02-08/wpa_supplicant/config.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/wpa_supplicant/config.c
|
||||
+++ hostapd-2021-02-08/wpa_supplicant/config.c
|
||||
--- a/wpa_supplicant/config.c
|
||||
+++ b/wpa_supplicant/config.c
|
||||
@@ -20,7 +20,9 @@
|
||||
#include "drivers/nl80211_copy.h"
|
||||
#include "fst/fst.h"
|
||||
#include "ap/sta_info.h"
|
||||
#include "config.h"
|
||||
-
|
||||
+#ifdef CONFIG_MESH
|
||||
@@ -33,7 +31,7 @@ Index: hostapd-2021-02-08/wpa_supplicant/config.c
|
||||
|
||||
#if !defined(CONFIG_CTRL_IFACE) && defined(CONFIG_NO_CONFIG_WRITE)
|
||||
#define NO_CONFIG_WRITE
|
||||
@@ -2710,6 +2712,9 @@ static const struct parse_data ssid_fiel
|
||||
@@ -2647,6 +2649,9 @@ static const struct parse_data ssid_fiel
|
||||
{ INT(dot11MeshRetryTimeout) },
|
||||
{ INT(dot11MeshConfirmTimeout) },
|
||||
{ INT(dot11MeshHoldingTimeout) },
|
||||
@@ -43,7 +41,7 @@ Index: hostapd-2021-02-08/wpa_supplicant/config.c
|
||||
#endif /* CONFIG_MESH */
|
||||
{ INT(wpa_ptk_rekey) },
|
||||
{ INT_RANGE(wpa_deny_ptk0_rekey, 0, 2) },
|
||||
@@ -2980,6 +2985,8 @@ void wpa_config_free_ssid(struct wpa_ssi
|
||||
@@ -2915,6 +2920,8 @@ void wpa_config_free_ssid(struct wpa_ssi
|
||||
os_free(ssid->p2p_client_list);
|
||||
os_free(ssid->bssid_ignore);
|
||||
os_free(ssid->bssid_accept);
|
||||
@@ -52,7 +50,7 @@ Index: hostapd-2021-02-08/wpa_supplicant/config.c
|
||||
#ifdef CONFIG_HT_OVERRIDES
|
||||
os_free(ssid->ht_mcs);
|
||||
#endif /* CONFIG_HT_OVERRIDES */
|
||||
@@ -3344,6 +3351,18 @@ int wpa_config_set(struct wpa_ssid *ssid
|
||||
@@ -3280,6 +3287,18 @@ int wpa_config_set(struct wpa_ssid *ssid
|
||||
}
|
||||
ret = -1;
|
||||
}
|
||||
@@ -71,10 +69,8 @@ Index: hostapd-2021-02-08/wpa_supplicant/config.c
|
||||
#ifdef CONFIG_SAE
|
||||
if (os_strcmp(var, "ssid") == 0 ||
|
||||
os_strcmp(var, "psk") == 0 ||
|
||||
Index: hostapd-2021-02-08/wpa_supplicant/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/wpa_supplicant/config_file.c
|
||||
+++ hostapd-2021-02-08/wpa_supplicant/config_file.c
|
||||
--- a/wpa_supplicant/config_file.c
|
||||
+++ b/wpa_supplicant/config_file.c
|
||||
@@ -18,6 +18,9 @@
|
||||
#include "common.h"
|
||||
#include "config.h"
|
||||
@@ -85,7 +81,7 @@ Index: hostapd-2021-02-08/wpa_supplicant/config_file.c
|
||||
#include "uuid.h"
|
||||
#include "common/ieee802_1x_defs.h"
|
||||
#include "p2p/p2p.h"
|
||||
@@ -914,6 +917,9 @@ static void wpa_config_write_network(FIL
|
||||
@@ -818,6 +821,9 @@ static void wpa_config_write_network(FIL
|
||||
write_int(f, "mac_addr", ssid->mac_addr, -1);
|
||||
#ifdef CONFIG_MESH
|
||||
STR(mesh_basic_rates);
|
||||
@@ -95,13 +91,11 @@ Index: hostapd-2021-02-08/wpa_supplicant/config_file.c
|
||||
INT_DEF(dot11MeshMaxRetries, DEFAULT_MESH_MAX_RETRIES);
|
||||
INT_DEF(dot11MeshRetryTimeout, DEFAULT_MESH_RETRY_TIMEOUT);
|
||||
INT_DEF(dot11MeshConfirmTimeout, DEFAULT_MESH_CONFIRM_TIMEOUT);
|
||||
Index: hostapd-2021-02-08/wpa_supplicant/config_ssid.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/wpa_supplicant/config_ssid.h
|
||||
+++ hostapd-2021-02-08/wpa_supplicant/config_ssid.h
|
||||
@@ -546,6 +546,11 @@ struct wpa_ssid {
|
||||
int dot11MeshConfirmTimeout; /* msec */
|
||||
int dot11MeshHoldingTimeout; /* msec */
|
||||
--- a/wpa_supplicant/config_ssid.h
|
||||
+++ b/wpa_supplicant/config_ssid.h
|
||||
@@ -553,6 +553,11 @@ struct wpa_ssid {
|
||||
*/
|
||||
int mesh_fwding;
|
||||
|
||||
+ char *accept_mac_file;
|
||||
+ char *deny_mac_file;
|
||||
@@ -111,10 +105,8 @@ Index: hostapd-2021-02-08/wpa_supplicant/config_ssid.h
|
||||
int ht;
|
||||
int ht40;
|
||||
|
||||
Index: hostapd-2021-02-08/wpa_supplicant/mesh.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/wpa_supplicant/mesh.c
|
||||
+++ hostapd-2021-02-08/wpa_supplicant/mesh.c
|
||||
--- a/wpa_supplicant/mesh.c
|
||||
+++ b/wpa_supplicant/mesh.c
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "common/hw_features_common.h"
|
||||
#include "ap/sta_info.h"
|
||||
@@ -123,7 +115,7 @@ Index: hostapd-2021-02-08/wpa_supplicant/mesh.c
|
||||
#include "ap/ieee802_11.h"
|
||||
#include "config_ssid.h"
|
||||
#include "config.h"
|
||||
@@ -459,6 +460,17 @@ static int wpa_supplicant_mesh_init(stru
|
||||
@@ -467,6 +468,17 @@ static int wpa_supplicant_mesh_init(stru
|
||||
ifmsh->bss[0]->dot11RSNASAERetransPeriod =
|
||||
wpa_s->conf->dot11RSNASAERetransPeriod;
|
||||
os_strlcpy(bss->conf->iface, wpa_s->ifname, sizeof(bss->conf->iface));
|
||||
@@ -141,7 +133,7 @@ Index: hostapd-2021-02-08/wpa_supplicant/mesh.c
|
||||
|
||||
mconf = mesh_config_create(wpa_s, ssid);
|
||||
if (!mconf)
|
||||
@@ -555,6 +567,16 @@ void wpa_mesh_notify_peer(struct wpa_sup
|
||||
@@ -559,6 +571,16 @@ void wpa_mesh_notify_peer(struct wpa_sup
|
||||
const u8 *ies, size_t ie_len)
|
||||
{
|
||||
struct ieee802_11_elems elems;
|
||||
@@ -158,10 +150,8 @@ Index: hostapd-2021-02-08/wpa_supplicant/mesh.c
|
||||
|
||||
wpa_msg(wpa_s, MSG_INFO,
|
||||
"new peer notification for " MACSTR, MAC2STR(addr));
|
||||
Index: hostapd-2021-02-08/wpa_supplicant/mesh_mpm.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/wpa_supplicant/mesh_mpm.c
|
||||
+++ hostapd-2021-02-08/wpa_supplicant/mesh_mpm.c
|
||||
--- a/wpa_supplicant/mesh_mpm.c
|
||||
+++ b/wpa_supplicant/mesh_mpm.c
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "ap/hostapd.h"
|
||||
#include "ap/sta_info.h"
|
||||
@@ -202,13 +192,11 @@ Index: hostapd-2021-02-08/wpa_supplicant/mesh_mpm.c
|
||||
if (!elems.mesh_id || !elems.mesh_config) {
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"MPM: No Mesh ID or Mesh Configuration element");
|
||||
Index: hostapd-2021-02-08/wpa_supplicant/wpa_supplicant.conf
|
||||
===================================================================
|
||||
--- hostapd-2021-02-08.orig/wpa_supplicant/wpa_supplicant.conf
|
||||
+++ hostapd-2021-02-08/wpa_supplicant/wpa_supplicant.conf
|
||||
@@ -150,6 +150,20 @@ ap_scan=1
|
||||
# This timeout value is used in mesh STA to clean up inactive stations.
|
||||
#mesh_max_inactivity=300
|
||||
--- a/wpa_supplicant/wpa_supplicant.conf
|
||||
+++ b/wpa_supplicant/wpa_supplicant.conf
|
||||
@@ -153,6 +153,20 @@ ap_scan=1
|
||||
# Enable 802.11s layer-2 routing and forwarding
|
||||
#mesh_fwding=1
|
||||
|
||||
+# Mesh node address -based authentication
|
||||
+# Please note that this kind of access control requires a driver that uses
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/src/ap/ieee802_11_he.c
|
||||
+++ b/src/ap/ieee802_11_he.c
|
||||
@@ -198,7 +198,7 @@ u8 * hostapd_eid_he_operation(struct hos
|
||||
@@ -200,7 +200,7 @@ u8 * hostapd_eid_he_operation(struct hos
|
||||
params |= (hapd->iface->conf->he_op.he_rts_threshold <<
|
||||
HE_OPERATION_RTS_THRESHOLD_OFFSET);
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -10031,6 +10031,82 @@ error:
|
||||
@@ -9961,6 +9961,82 @@ error:
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
static int nl80211_add_ts(void *priv, u8 tsid, const u8 *addr,
|
||||
u8 user_priority, u16 admitted_time)
|
||||
{
|
||||
@@ -12204,6 +12280,9 @@ const struct wpa_driver_ops wpa_driver_n
|
||||
@@ -12121,6 +12197,9 @@ const struct wpa_driver_ops wpa_driver_n
|
||||
.get_survey = wpa_driver_nl80211_get_survey,
|
||||
.status = wpa_driver_nl80211_status,
|
||||
.switch_channel = nl80211_switch_channel,
|
||||
@@ -110,7 +110,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
.get_noa = wpa_driver_get_p2p_noa,
|
||||
--- a/src/drivers/nl80211_copy.h
|
||||
+++ b/src/drivers/nl80211_copy.h
|
||||
@@ -1429,6 +1429,14 @@ enum nl80211_commands {
|
||||
@@ -1430,6 +1430,14 @@ enum nl80211_commands {
|
||||
NL80211_CMD_SET_FILS_DISCOVERY,
|
||||
NL80211_CMD_SET_UNSOL_BCAST_PROBE_RESP,
|
||||
|
||||
@@ -125,7 +125,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
@@ -3094,6 +3102,12 @@ enum nl80211_attrs {
|
||||
@@ -3095,6 +3103,12 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_MULTIPLE_BSSID_COUNT,
|
||||
NL80211_ATTR_MULTIPLE_BSSID_IES,
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
|
||||
#include "utils/includes.h"
|
||||
|
||||
@@ -1616,6 +1617,73 @@ void wpas_ap_pmksa_cache_flush(struct wp
|
||||
@@ -1708,6 +1709,73 @@ void wpas_ap_pmksa_cache_flush(struct wp
|
||||
hostapd_ctrl_iface_pmksa_flush(wpa_s->ifmsh->bss[0]);
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
|
||||
#include "utils/includes.h"
|
||||
#ifdef CONFIG_TESTING_OPTIONS
|
||||
@@ -56,6 +57,7 @@
|
||||
@@ -57,6 +58,7 @@
|
||||
#include "mesh.h"
|
||||
#include "dpp_supplicant.h"
|
||||
#include "sme.h"
|
||||
@@ -140,7 +140,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
|
||||
#ifdef __NetBSD__
|
||||
#include <net/if_ether.h>
|
||||
@@ -3284,6 +3286,18 @@ static int wpa_supplicant_ctrl_iface_mes
|
||||
@@ -3282,6 +3284,18 @@ static int wpa_supplicant_ctrl_iface_mes
|
||||
return wpas_mesh_peer_remove(wpa_s, addr);
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
|
||||
static int wpa_supplicant_ctrl_iface_mesh_peer_add(
|
||||
struct wpa_supplicant *wpa_s, char *cmd)
|
||||
@@ -10655,6 +10669,38 @@ char * wpa_supplicant_ctrl_iface_process
|
||||
@@ -10788,6 +10802,38 @@ char * wpa_supplicant_ctrl_iface_process
|
||||
reply_len = -1;
|
||||
#endif /* CONFIG_IBSS_RSN */
|
||||
#ifdef CONFIG_MESH
|
||||
@@ -220,7 +220,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
|
||||
--- a/wpa_supplicant/wpa_cli.c
|
||||
+++ b/wpa_supplicant/wpa_cli.c
|
||||
@@ -2113,6 +2113,19 @@ static int wpa_cli_cmd_mesh_link_probe(s
|
||||
@@ -2118,6 +2118,19 @@ static int wpa_cli_cmd_mesh_link_probe(s
|
||||
return wpa_cli_cmd(ctrl, "MESH_LINK_PROBE", 1, argc, argv);
|
||||
}
|
||||
|
||||
@@ -240,7 +240,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
#endif /* CONFIG_MESH */
|
||||
|
||||
|
||||
@@ -3532,6 +3545,12 @@ static const struct wpa_cli_cmd wpa_cli_
|
||||
@@ -3582,6 +3595,12 @@ static const struct wpa_cli_cmd wpa_cli_
|
||||
{ "mesh_link_probe", wpa_cli_cmd_mesh_link_probe, NULL,
|
||||
cli_cmd_flag_none,
|
||||
"<addr> [payload=<hex dump of payload>] = Probe a mesh link for a given peer by injecting a frame." },
|
||||
@@ -263,7 +263,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
|
||||
#include "includes.h"
|
||||
#ifdef CONFIG_MATCH_IFACE
|
||||
@@ -49,7 +50,6 @@
|
||||
@@ -50,7 +51,6 @@
|
||||
#include "ibss_rsn.h"
|
||||
#include "sme.h"
|
||||
#include "gas_query.h"
|
||||
@@ -271,7 +271,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
|
||||
#include "p2p_supplicant.h"
|
||||
#include "wifi_display.h"
|
||||
#include "notify.h"
|
||||
@@ -67,6 +67,7 @@
|
||||
@@ -68,6 +68,7 @@
|
||||
#include "ap/ap_config.h"
|
||||
#include "ap/hostapd.h"
|
||||
#endif /* CONFIG_MESH */
|
||||
|
||||
@@ -25,7 +25,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
#ifdef CONFIG_FILS
|
||||
void hostapd_notify_assoc_fils_finish(struct hostapd_data *hapd,
|
||||
struct sta_info *sta)
|
||||
@@ -1790,6 +1789,39 @@ static void hostapd_event_update_muedca_
|
||||
@@ -1786,6 +1785,39 @@ static void hostapd_event_update_muedca_
|
||||
"Failed to update beacons with MU-EDCA parameters");
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
#ifdef CONFIG_OWE
|
||||
static int hostapd_notif_update_dh_ie(struct hostapd_data *hapd,
|
||||
const u8 *peer, const u8 *ie,
|
||||
@@ -2100,6 +2132,17 @@ void hostapd_wpa_event(void *ctx, enum w
|
||||
@@ -2096,6 +2128,17 @@ void hostapd_wpa_event(void *ctx, enum w
|
||||
case EVENT_UPDATE_MUEDCA_PARAMS:
|
||||
hostapd_event_update_muedca_params(hapd, &data->update_muedca);
|
||||
break;
|
||||
@@ -85,7 +85,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
break;
|
||||
--- a/src/drivers/driver.h
|
||||
+++ b/src/drivers/driver.h
|
||||
@@ -5182,6 +5182,26 @@ enum wpa_event_type {
|
||||
@@ -5201,6 +5201,26 @@ enum wpa_event_type {
|
||||
* beacon.
|
||||
*/
|
||||
EVENT_UPDATE_MUEDCA_PARAMS,
|
||||
@@ -112,7 +112,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
};
|
||||
|
||||
|
||||
@@ -6051,6 +6071,13 @@ union wpa_event_data {
|
||||
@@ -6105,6 +6125,13 @@ union wpa_event_data {
|
||||
u8 he_mu_ac_vi_param[3];
|
||||
u8 he_mu_ac_vo_param[3];
|
||||
} update_muedca;
|
||||
@@ -153,7 +153,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
default:
|
||||
return "NL80211_CMD_UNKNOWN";
|
||||
}
|
||||
@@ -2603,6 +2606,51 @@ static void nl80211_control_port_frame(s
|
||||
@@ -2745,6 +2748,51 @@ static void nl80211_control_port_frame(s
|
||||
}
|
||||
}
|
||||
|
||||
@@ -205,7 +205,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
static void
|
||||
nl80211_control_port_frame_tx_status(struct wpa_driver_nl80211_data *drv,
|
||||
@@ -2856,6 +2904,20 @@ static void do_process_drv_event(struct
|
||||
@@ -3019,6 +3067,20 @@ static void do_process_drv_event(struct
|
||||
case NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS:
|
||||
nl80211_update_muedca_params_event(drv, tb);
|
||||
break;
|
||||
|
||||
@@ -14,7 +14,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -3367,8 +3367,11 @@ static int hostapd_config_fill(struct ho
|
||||
@@ -3412,8 +3412,11 @@ static int hostapd_config_fill(struct ho
|
||||
} else if (os_strcmp(buf, "he_ul_mumimo") == 0) {
|
||||
conf->he_phy_capab.he_ul_mumimo = atoi(pos);
|
||||
} else if (os_strcmp(buf, "he_bss_color") == 0) {
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
} else if (os_strcmp(buf, "he_default_pe_duration") == 0) {
|
||||
--- a/hostapd/hostapd.conf
|
||||
+++ b/hostapd/hostapd.conf
|
||||
@@ -810,7 +810,10 @@ wmm_ac_vo_acm=0
|
||||
@@ -825,7 +825,10 @@ wmm_ac_vo_acm=0
|
||||
# 1 = supported
|
||||
#he_mu_beamformer=1
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ Signed-off-by: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
||||
#endif /* AP_LIST_H */
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -3769,6 +3769,7 @@ hostapd_switch_color_timeout_handler(voi
|
||||
@@ -3906,6 +3906,7 @@ hostapd_switch_color_timeout_handler(voi
|
||||
struct cca_settings settings;
|
||||
struct os_time now;
|
||||
int i, r, b, ret;
|
||||
@@ -103,7 +103,7 @@ Signed-off-by: Karthikeyan Periyasamy <periyasa@codeaurora.org>
|
||||
|
||||
if (os_get_time(&now))
|
||||
return;
|
||||
@@ -3777,11 +3778,16 @@ hostapd_switch_color_timeout_handler(voi
|
||||
@@ -3914,11 +3915,16 @@ hostapd_switch_color_timeout_handler(voi
|
||||
if (now.sec - hapd->last_color_collision.sec > 50)
|
||||
return;
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/hostapd/ctrl_iface.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/hostapd/ctrl_iface.c
|
||||
+++ hostapd-2021-02-20-59e9794c/hostapd/ctrl_iface.c
|
||||
@@ -2673,6 +2673,59 @@ static int hostapd_ctrl_check_freq_param
|
||||
--- a/hostapd/ctrl_iface.c
|
||||
+++ b/hostapd/ctrl_iface.c
|
||||
@@ -2679,6 +2679,59 @@ static int hostapd_ctrl_check_freq_param
|
||||
}
|
||||
#endif /* NEED_AP_MLME */
|
||||
|
||||
@@ -62,7 +60,7 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/ctrl_iface.c
|
||||
|
||||
static int hostapd_ctrl_iface_chan_switch(struct hostapd_iface *iface,
|
||||
char *pos)
|
||||
@@ -3682,6 +3735,9 @@ static int hostapd_ctrl_iface_receive_pr
|
||||
@@ -3688,6 +3741,9 @@ static int hostapd_ctrl_iface_receive_pr
|
||||
} else if (os_strncmp(buf, "CHAN_SWITCH ", 12) == 0) {
|
||||
if (hostapd_ctrl_iface_chan_switch(hapd->iface, buf + 12))
|
||||
reply_len = -1;
|
||||
@@ -72,10 +70,8 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/ctrl_iface.c
|
||||
} else if (os_strncmp(buf, "VENDOR ", 7) == 0) {
|
||||
reply_len = hostapd_ctrl_iface_vendor(hapd, buf + 7, reply,
|
||||
reply_size);
|
||||
Index: hostapd-2021-02-20-59e9794c/hostapd/hostapd_cli.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/hostapd/hostapd_cli.c
|
||||
+++ hostapd-2021-02-20-59e9794c/hostapd/hostapd_cli.c
|
||||
--- a/hostapd/hostapd_cli.c
|
||||
+++ b/hostapd/hostapd_cli.c
|
||||
@@ -1150,6 +1150,27 @@ static int hostapd_cli_cmd_fst(struct wp
|
||||
}
|
||||
#endif /* CONFIG_FST */
|
||||
@@ -113,10 +109,8 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/hostapd_cli.c
|
||||
{ "hs20_wnm_notif", hostapd_cli_cmd_hs20_wnm_notif, NULL,
|
||||
"<addr> <url>\n"
|
||||
" = send WNM-Notification Subscription Remediation Request" },
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ctrl_iface_ap.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ctrl_iface_ap.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ctrl_iface_ap.c
|
||||
--- a/src/ap/ctrl_iface_ap.c
|
||||
+++ b/src/ap/ctrl_iface_ap.c
|
||||
@@ -1055,10 +1055,12 @@ int hostapd_ctrl_iface_status(struct hos
|
||||
ret = os_snprintf(buf + len, buflen - len,
|
||||
"he_oper_chwidth=%d\n"
|
||||
@@ -132,11 +126,9 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ctrl_iface_ap.c
|
||||
if (os_snprintf_error(buflen - len, ret))
|
||||
return len;
|
||||
len += ret;
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
@@ -3443,7 +3443,7 @@ int hostapd_csa_in_progress(struct hosta
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -3477,7 +3477,7 @@ int hostapd_csa_in_progress(struct hosta
|
||||
|
||||
#ifdef NEED_AP_MLME
|
||||
|
||||
@@ -145,7 +137,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
{
|
||||
os_free(beacon->head);
|
||||
beacon->head = NULL;
|
||||
@@ -3833,7 +3833,7 @@ void hostapd_cleanup_cca_params(struct h
|
||||
@@ -3867,7 +3867,7 @@ void hostapd_cleanup_cca_params(struct h
|
||||
}
|
||||
|
||||
|
||||
@@ -154,11 +146,9 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
|
||||
struct cca_settings *settings)
|
||||
{
|
||||
struct hostapd_iface *iface = hapd->iface;
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
|
||||
@@ -661,11 +661,13 @@ void hostapd_periodic_iface(struct hosta
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -690,11 +690,13 @@ void hostapd_periodic_iface(struct hosta
|
||||
int hostapd_owe_trans_get_info(struct hostapd_data *hapd);
|
||||
void hostapd_ocv_check_csa_sa_query(void *eloop_ctx, void *timeout_ctx);
|
||||
int hostapd_check_max_sta(struct hostapd_data *hapd);
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
|
||||
--- a/src/ap/drv_callbacks.c
|
||||
+++ b/src/ap/drv_callbacks.c
|
||||
@@ -1802,14 +1802,29 @@ static void hostapd_event_bss_color_coll
|
||||
@@ -1798,14 +1798,29 @@ static void hostapd_event_bss_color_coll
|
||||
|
||||
static void hostapd_event_cca(struct hostapd_data *hapd, enum wpa_event_type event)
|
||||
{
|
||||
@@ -52,7 +52,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
wpa_printf(MSG_DEBUG, "CCA aborted on %s for cca_color: %d", hapd->conf->iface, hapd->cca_color);
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -3742,12 +3742,18 @@ int hostapd_fill_cca_settings(struct hos
|
||||
@@ -3879,12 +3879,18 @@ int hostapd_fill_cca_settings(struct hos
|
||||
|
||||
old_color = iface->conf->he_op.he_bss_color;
|
||||
iface->conf->he_op.he_bss_color = hapd->cca_color;
|
||||
@@ -75,7 +75,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
if (ret) {
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -298,6 +298,7 @@ struct hostapd_data {
|
||||
@@ -323,6 +323,7 @@ struct hostapd_data {
|
||||
|
||||
#ifdef CONFIG_IEEE80211AX
|
||||
int cca_in_progress;
|
||||
@@ -85,7 +85,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
unsigned int cca_c_off_beacon;
|
||||
--- a/src/ap/ieee802_11_he.c
|
||||
+++ b/src/ap/ieee802_11_he.c
|
||||
@@ -496,7 +496,7 @@ int hostapd_get_he_twt_responder(struct
|
||||
@@ -528,7 +528,7 @@ int hostapd_get_he_twt_responder(struct
|
||||
|
||||
u8 * hostapd_eid_cca(struct hostapd_data *hapd, u8 *eid)
|
||||
{
|
||||
|
||||
@@ -15,7 +15,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -3781,11 +3781,12 @@ hostapd_switch_color_timeout_handler(voi
|
||||
@@ -3918,11 +3918,12 @@ hostapd_switch_color_timeout_handler(voi
|
||||
return;
|
||||
|
||||
/* check if there has been a recent collision */
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
|
||||
r = os_random() % HE_OPERATION_BSS_COLOR_MAX - 1;
|
||||
r++;
|
||||
@@ -3797,13 +3798,26 @@ hostapd_switch_color_timeout_handler(voi
|
||||
@@ -3934,13 +3935,26 @@ hostapd_switch_color_timeout_handler(voi
|
||||
}
|
||||
if (i == HE_OPERATION_BSS_COLOR_MAX) {
|
||||
/* there are no free colors so turn bss coloring off */
|
||||
@@ -60,7 +60,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
|
||||
--- a/src/ap/hostapd.h
|
||||
+++ b/src/ap/hostapd.h
|
||||
@@ -299,6 +299,7 @@ struct hostapd_data {
|
||||
@@ -324,6 +324,7 @@ struct hostapd_data {
|
||||
#ifdef CONFIG_IEEE80211AX
|
||||
int cca_in_progress;
|
||||
int cca_zero_count;
|
||||
|
||||
@@ -25,7 +25,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -4560,8 +4560,8 @@ static int hostapd_config_fill(struct ho
|
||||
@@ -4591,8 +4591,8 @@ static int hostapd_config_fill(struct ho
|
||||
#endif /* CONFIG_MACSEC */
|
||||
} else if (os_strcmp(buf, "multiple_bssid") == 0) {
|
||||
conf->multiple_bssid = atoi(pos);
|
||||
@@ -38,7 +38,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
} else if (os_strcmp(buf, "disable_11n") == 0) {
|
||||
--- a/hostapd/ctrl_iface.c
|
||||
+++ b/hostapd/ctrl_iface.c
|
||||
@@ -2759,6 +2759,9 @@ static int hostapd_ctrl_iface_chan_switc
|
||||
@@ -2827,6 +2827,9 @@ static int hostapd_ctrl_iface_chan_switc
|
||||
* submitting multi-BSS CSA requests? */
|
||||
return ret;
|
||||
}
|
||||
@@ -50,7 +50,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
return 0;
|
||||
--- a/src/ap/ap_config.c
|
||||
+++ b/src/ap/ap_config.c
|
||||
@@ -1486,7 +1486,7 @@ int hostapd_config_check(struct hostapd_
|
||||
@@ -1489,7 +1489,7 @@ int hostapd_config_check(struct hostapd_
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
return -1;
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -1017,7 +1017,7 @@ struct hostapd_config {
|
||||
@@ -1029,7 +1029,7 @@ struct hostapd_config {
|
||||
u8 ht40_plus_minus_allowed;
|
||||
|
||||
u8 multiple_bssid;
|
||||
@@ -72,7 +72,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
u8 use_driver_iface_addr;
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -1808,6 +1808,9 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1822,6 +1822,9 @@ int ieee802_11_build_ap_params(struct ho
|
||||
|
||||
params->multiple_bssid_index = hostapd_get_bss_index(hapd);
|
||||
params->multiple_bssid_count = hapd->iface->num_bss;
|
||||
@@ -82,7 +82,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
params->multiple_bssid_ies = os_zalloc(len);
|
||||
if (params->multiple_bssid_ies == NULL)
|
||||
return -1;
|
||||
@@ -1817,7 +1820,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1831,7 +1834,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
1, params->multiple_bssid_ie_offsets,
|
||||
¶ms->multiple_bssid_ie_count,
|
||||
MULTIPLE_BSSID_IE_MAX,
|
||||
@@ -93,7 +93,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
(ext_cap_len >= 13) && (ext_cap_pos[12] & 0x08))
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -7126,7 +7126,7 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7146,7 +7146,7 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
for (i = *count; i < hapd->iface->num_bss; i++) {
|
||||
bss = hapd->iface->bss[i];
|
||||
conf = bss->conf;
|
||||
@@ -102,7 +102,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
u16 capab_info;
|
||||
|
||||
*eid++ = WLAN_EID_SUBELEMENT_NONTRANSMITTED_BSSID_PROFILE;
|
||||
@@ -7161,8 +7161,19 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7181,8 +7181,19 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
}
|
||||
*index_size_offset = (eid - index_size_offset) - 1;
|
||||
|
||||
@@ -156,7 +156,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
#define WLAN_EID_EXT_EDMG_CAPABILITIES 61
|
||||
--- a/src/drivers/driver.h
|
||||
+++ b/src/drivers/driver.h
|
||||
@@ -1586,9 +1586,9 @@ struct wpa_driver_ap_params {
|
||||
@@ -1584,9 +1584,9 @@ struct wpa_driver_ap_params {
|
||||
size_t unsol_bcast_probe_resp_tmpl_len;
|
||||
|
||||
/**
|
||||
@@ -168,7 +168,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
|
||||
/**
|
||||
* multiple_bssid_index - The index of this BSS in the group
|
||||
@@ -1619,6 +1619,12 @@ struct wpa_driver_ap_params {
|
||||
@@ -1617,6 +1617,12 @@ struct wpa_driver_ap_params {
|
||||
* multiple_bssid_ie_count - The the number of offsets inside multiple_bssid_ie_offsets
|
||||
*/
|
||||
int multiple_bssid_ie_count;
|
||||
@@ -183,7 +183,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
struct wpa_driver_mesh_bss_params {
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -4872,6 +4872,16 @@ static int wpa_driver_nl80211_set_ap(voi
|
||||
@@ -4799,6 +4799,16 @@ static int wpa_driver_nl80211_set_ap(voi
|
||||
params->multiple_bssid_index);
|
||||
nla_put_u8(msg, NL80211_ATTR_MULTIPLE_BSSID_COUNT,
|
||||
params->multiple_bssid_count);
|
||||
@@ -200,7 +200,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
}
|
||||
|
||||
if (params->multiple_bssid_ie_len) {
|
||||
@@ -5528,17 +5538,6 @@ static int nl80211_create_iface_once(str
|
||||
@@ -5461,17 +5471,6 @@ static int nl80211_create_iface_once(str
|
||||
goto fail;
|
||||
}
|
||||
|
||||
@@ -220,7 +220,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
* it, and the interface should be deleted when the socket is closed.
|
||||
--- a/src/drivers/nl80211_copy.h
|
||||
+++ b/src/drivers/nl80211_copy.h
|
||||
@@ -2583,9 +2583,6 @@ enum nl80211_commands {
|
||||
@@ -2584,9 +2584,6 @@ enum nl80211_commands {
|
||||
* @NL80211_ATTR_HE_MUEDCA_PARAMS: MU-EDCA AC parameters for the
|
||||
NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS command.
|
||||
*
|
||||
@@ -230,7 +230,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
* @NL80211_ATTR_MULTIPLE_BSSID_PARENT: If this is a Non-Transmitted BSSID, define
|
||||
* the parent (transmitting) interface.
|
||||
*
|
||||
@@ -2595,7 +2592,9 @@ enum nl80211_commands {
|
||||
@@ -2596,7 +2593,9 @@ enum nl80211_commands {
|
||||
* @NL80211_ATTR_MULTIPLE_BSSID_COUNT: The number of BSSs inside the multi bssid element.
|
||||
*
|
||||
* @NL80211_ATTR_MULTIPLE_BSSID_IES: The Elements that describe our multiple BSS group.
|
||||
@@ -241,7 +241,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||
*
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
@@ -3096,11 +3095,11 @@ enum nl80211_attrs {
|
||||
@@ -3097,11 +3096,11 @@ enum nl80211_attrs {
|
||||
|
||||
NL80211_ATTR_HE_MUEDCA_PARAMS,
|
||||
|
||||
|
||||
@@ -20,11 +20,9 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
src/ap/ieee802_11_shared.c | 28 +++++++++++++++++++++++-----
|
||||
4 files changed, 39 insertions(+), 20 deletions(-)
|
||||
|
||||
Index: hostapd-2021-02-20/hostapd/ctrl_iface.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/hostapd/ctrl_iface.c
|
||||
+++ hostapd-2021-02-20/hostapd/ctrl_iface.c
|
||||
@@ -2759,9 +2759,6 @@ static int hostapd_ctrl_iface_chan_switc
|
||||
--- a/hostapd/ctrl_iface.c
|
||||
+++ b/hostapd/ctrl_iface.c
|
||||
@@ -2827,9 +2827,6 @@ static int hostapd_ctrl_iface_chan_switc
|
||||
* submitting multi-BSS CSA requests? */
|
||||
return ret;
|
||||
}
|
||||
@@ -34,10 +32,8 @@ Index: hostapd-2021-02-20/hostapd/ctrl_iface.c
|
||||
}
|
||||
|
||||
return 0;
|
||||
Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-20/src/ap/beacon.c
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -434,7 +434,7 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
{
|
||||
struct hostapd_data *hidden = NULL;
|
||||
@@ -58,7 +54,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
|
||||
pos = hostapd_eid_time_adv(hapd, pos);
|
||||
pos = hostapd_eid_time_zone(hapd, pos);
|
||||
@@ -1834,9 +1831,9 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1836,9 +1833,9 @@ int ieee802_11_build_ap_params(struct ho
|
||||
MULTIPLE_BSSID_IE_MAX,
|
||||
hapd->iconf->ema_beacon);
|
||||
params->multiple_bssid_ie_len = end - params->multiple_bssid_ies;
|
||||
@@ -70,11 +66,9 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
params->dtim_period = hapd->conf->dtim_period;
|
||||
}
|
||||
|
||||
Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/ieee802_11.c
|
||||
+++ hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
@@ -167,6 +167,7 @@ u8 * hostapd_eid_ext_supp_rates(struct h
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -175,6 +175,7 @@ u8 * hostapd_eid_ext_supp_rates(struct h
|
||||
int i, num, count;
|
||||
int h2e_required;
|
||||
|
||||
@@ -82,7 +76,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
if (hapd->iface->current_rates == NULL)
|
||||
return eid;
|
||||
|
||||
@@ -216,6 +217,7 @@ u8 * hostapd_eid_ext_supp_rates(struct h
|
||||
@@ -224,6 +225,7 @@ u8 * hostapd_eid_ext_supp_rates(struct h
|
||||
*pos++ = 0x80 | BSS_MEMBERSHIP_SELECTOR_SAE_H2E_ONLY;
|
||||
}
|
||||
|
||||
@@ -90,7 +84,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
return pos;
|
||||
}
|
||||
|
||||
@@ -7081,6 +7083,13 @@ static int hostapd_eid_multiple_bssid_ch
|
||||
@@ -7101,6 +7103,13 @@ static int hostapd_eid_multiple_bssid_ch
|
||||
|
||||
if (wpa_auth_get_wpa_ie(bss->wpa_auth, &ies_len))
|
||||
nontx_profile_len += ies_len;
|
||||
@@ -104,7 +98,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
|
||||
if (len + nontx_profile_len > 255) {
|
||||
goto multiple_bssid_too_big;
|
||||
@@ -7117,7 +7126,8 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7137,7 +7146,8 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
struct hostapd_data *bss;
|
||||
struct hostapd_bss_config *conf;
|
||||
u8 *size_offset, *num_offset;
|
||||
@@ -114,7 +108,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
|
||||
*eid++ = WLAN_EID_MULTIPLE_BSSID;
|
||||
size_offset = eid++;
|
||||
@@ -7126,8 +7136,9 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7146,8 +7156,9 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
for (i = *count; i < hapd->iface->num_bss; i++) {
|
||||
bss = hapd->iface->bss[i];
|
||||
conf = bss->conf;
|
||||
@@ -125,7 +119,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
|
||||
*eid++ = WLAN_EID_SUBELEMENT_NONTRANSMITTED_BSSID_PROFILE;
|
||||
bss_size_offset = eid++;
|
||||
@@ -7161,17 +7172,38 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7181,17 +7192,38 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
}
|
||||
*index_size_offset = (eid - index_size_offset) - 1;
|
||||
|
||||
@@ -173,10 +167,8 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
}
|
||||
|
||||
*bss_size_offset = (eid - bss_size_offset) - 1;
|
||||
Index: hostapd-2021-02-20/src/ap/ieee802_11_shared.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/ieee802_11_shared.c
|
||||
+++ hostapd-2021-02-20/src/ap/ieee802_11_shared.c
|
||||
--- a/src/ap/ieee802_11_shared.c
|
||||
+++ b/src/ap/ieee802_11_shared.c
|
||||
@@ -427,9 +427,13 @@ static void hostapd_ext_capab_byte(struc
|
||||
* Identifiers Used Exclusively */
|
||||
}
|
||||
@@ -239,11 +231,9 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11_shared.c
|
||||
while (len > 0 && eid[1 + len] == 0) {
|
||||
len--;
|
||||
eid[1] = len;
|
||||
Index: hostapd-2021-02-20/src/ap/ap_config.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/ap_config.h
|
||||
+++ hostapd-2021-02-20/src/ap/ap_config.h
|
||||
@@ -534,6 +534,7 @@ struct hostapd_bss_config {
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -541,6 +541,7 @@ struct hostapd_bss_config {
|
||||
bool disable_11n;
|
||||
bool disable_11ac;
|
||||
bool disable_11ax;
|
||||
|
||||
@@ -14,11 +14,9 @@ Signed-off-by: Abinaya Kalaiselvan <akalaise@codeaurora.org>
|
||||
src/rsn_supp/wpa.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
|
||||
index 3205527..88c1e3e 100644
|
||||
--- a/src/rsn_supp/wpa.c
|
||||
+++ b/src/rsn_supp/wpa.c
|
||||
@@ -615,10 +615,11 @@ static int wpa_handle_ext_key_id(struct wpa_sm *sm,
|
||||
@@ -624,10 +624,11 @@ static int wpa_handle_ext_key_id(struct
|
||||
{
|
||||
if (sm->ext_key_id) {
|
||||
u16 key_id;
|
||||
@@ -32,6 +30,3 @@ index 3205527..88c1e3e 100644
|
||||
"RSN: No Key ID in Extended Key ID handshake");
|
||||
sm->keyidx_active = 0;
|
||||
return sm->use_ext_key_id ? -1 : 0;
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
@@ -12,11 +12,9 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
wpa_supplicant/scan.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c
|
||||
index b9e4162..9992e42 100644
|
||||
--- a/wpa_supplicant/scan.c
|
||||
+++ b/wpa_supplicant/scan.c
|
||||
@@ -611,7 +611,10 @@ static struct wpabuf * wpa_supplicant_extra_ies(struct wpa_supplicant *wpa_s)
|
||||
@@ -625,7 +625,10 @@ static struct wpabuf * wpa_supplicant_ex
|
||||
}
|
||||
#endif /* CONFIG_P2P */
|
||||
|
||||
@@ -28,6 +26,3 @@ index b9e4162..9992e42 100644
|
||||
|
||||
#endif /* CONFIG_WPS */
|
||||
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
@@ -12,11 +12,9 @@ Signed-off-by: P Praneesh <ppranees@codeaurora.org>
|
||||
wpa_supplicant/wpa_supplicant.c | 30 ++++++++++++++++++++++++++++++
|
||||
1 file changed, 30 insertions(+)
|
||||
|
||||
Index: hostapd-2021-02-18/wpa_supplicant/wpa_supplicant.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/wpa_supplicant/wpa_supplicant.c
|
||||
+++ hostapd-2021-02-18/wpa_supplicant/wpa_supplicant.c
|
||||
@@ -2378,6 +2378,57 @@ static int drv_supports_vht(struct wpa_s
|
||||
--- a/wpa_supplicant/wpa_supplicant.c
|
||||
+++ b/wpa_supplicant/wpa_supplicant.c
|
||||
@@ -2431,6 +2431,57 @@ static int drv_supports_vht(struct wpa_s
|
||||
return mode->vht_capab != 0;
|
||||
}
|
||||
|
||||
@@ -74,7 +72,7 @@ Index: hostapd-2021-02-18/wpa_supplicant/wpa_supplicant.c
|
||||
static bool ibss_mesh_is_80mhz_avail(int channel, struct hostapd_hw_modes *mode)
|
||||
{
|
||||
int i;
|
||||
@@ -2498,6 +2549,11 @@ void ibss_mesh_setup_freq(struct wpa_sup
|
||||
@@ -2555,6 +2606,11 @@ void ibss_mesh_setup_freq(struct wpa_sup
|
||||
else
|
||||
#endif /* CONFIG_HE_OVERRIDES */
|
||||
freq->he_enabled = mode->he_capab[ieee80211_mode].he_supported;
|
||||
@@ -86,11 +84,9 @@ Index: hostapd-2021-02-18/wpa_supplicant/wpa_supplicant.c
|
||||
}
|
||||
|
||||
for (chan_idx = 0; chan_idx < mode->num_channels; chan_idx++) {
|
||||
Index: hostapd-2021-02-18/src/drivers/driver.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/drivers/driver.h
|
||||
+++ hostapd-2021-02-18/src/drivers/driver.h
|
||||
@@ -1203,6 +1203,11 @@ struct wpa_driver_associate_params {
|
||||
--- a/src/drivers/driver.h
|
||||
+++ b/src/drivers/driver.h
|
||||
@@ -1201,6 +1201,11 @@ struct wpa_driver_associate_params {
|
||||
* 2 = both hunting-and-pecking loop and hash-to-element enabled
|
||||
*/
|
||||
int sae_pwe;
|
||||
@@ -102,11 +98,9 @@ Index: hostapd-2021-02-18/src/drivers/driver.h
|
||||
};
|
||||
|
||||
enum hide_ssid {
|
||||
Index: hostapd-2021-02-18/wpa_supplicant/config.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/wpa_supplicant/config.c
|
||||
+++ hostapd-2021-02-18/wpa_supplicant/config.c
|
||||
@@ -2804,6 +2804,7 @@ static const struct parse_data ssid_fiel
|
||||
--- a/wpa_supplicant/config.c
|
||||
+++ b/wpa_supplicant/config.c
|
||||
@@ -2739,6 +2739,7 @@ static const struct parse_data ssid_fiel
|
||||
{ INT_RANGE(beacon_prot, 0, 1) },
|
||||
{ INT_RANGE(transition_disable, 0, 255) },
|
||||
{ INT_RANGE(sae_pk, 0, 2) },
|
||||
@@ -114,11 +108,9 @@ Index: hostapd-2021-02-18/wpa_supplicant/config.c
|
||||
};
|
||||
|
||||
#undef OFFSET
|
||||
Index: hostapd-2021-02-18/wpa_supplicant/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/wpa_supplicant/config_file.c
|
||||
+++ hostapd-2021-02-18/wpa_supplicant/config_file.c
|
||||
@@ -885,7 +885,7 @@ static void wpa_config_write_network(FIL
|
||||
--- a/wpa_supplicant/config_file.c
|
||||
+++ b/wpa_supplicant/config_file.c
|
||||
@@ -887,7 +887,7 @@ static void wpa_config_write_network(FIL
|
||||
#ifdef CONFIG_HE_OVERRIDES
|
||||
INT(disable_he);
|
||||
#endif /* CONFIG_HE_OVERRIDES */
|
||||
@@ -127,11 +119,9 @@ Index: hostapd-2021-02-18/wpa_supplicant/config_file.c
|
||||
#undef STR
|
||||
#undef INT
|
||||
#undef INT_DEF
|
||||
Index: hostapd-2021-02-18/wpa_supplicant/config_ssid.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/wpa_supplicant/config_ssid.h
|
||||
+++ hostapd-2021-02-18/wpa_supplicant/config_ssid.h
|
||||
@@ -1165,6 +1165,11 @@ struct wpa_ssid {
|
||||
--- a/wpa_supplicant/config_ssid.h
|
||||
+++ b/wpa_supplicant/config_ssid.h
|
||||
@@ -1172,6 +1172,11 @@ struct wpa_ssid {
|
||||
* configuration.
|
||||
*/
|
||||
bool was_recently_reconfigured;
|
||||
@@ -143,11 +133,9 @@ Index: hostapd-2021-02-18/wpa_supplicant/config_ssid.h
|
||||
};
|
||||
|
||||
#endif /* CONFIG_SSID_H */
|
||||
Index: hostapd-2021-02-18/wpa_supplicant/wpa_cli.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/wpa_supplicant/wpa_cli.c
|
||||
+++ hostapd-2021-02-18/wpa_supplicant/wpa_cli.c
|
||||
@@ -1482,7 +1482,8 @@ static const char *network_fields[] = {
|
||||
--- a/wpa_supplicant/wpa_cli.c
|
||||
+++ b/wpa_supplicant/wpa_cli.c
|
||||
@@ -1487,7 +1487,8 @@ static const char *network_fields[] = {
|
||||
#ifdef CONFIG_HS20
|
||||
"update_identifier",
|
||||
#endif /* CONFIG_HS20 */
|
||||
@@ -157,11 +145,9 @@ Index: hostapd-2021-02-18/wpa_supplicant/wpa_cli.c
|
||||
};
|
||||
|
||||
|
||||
Index: hostapd-2021-02-18/wpa_supplicant/wpa_supplicant.conf
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/wpa_supplicant/wpa_supplicant.conf
|
||||
+++ hostapd-2021-02-18/wpa_supplicant/wpa_supplicant.conf
|
||||
@@ -158,6 +158,9 @@ ap_scan=1
|
||||
--- a/wpa_supplicant/wpa_supplicant.conf
|
||||
+++ b/wpa_supplicant/wpa_supplicant.conf
|
||||
@@ -161,6 +161,9 @@ ap_scan=1
|
||||
# 1 = deny unless in accept list
|
||||
macaddr_acl=0
|
||||
|
||||
@@ -171,7 +157,7 @@ Index: hostapd-2021-02-18/wpa_supplicant/wpa_supplicant.conf
|
||||
# Accept/deny lists are read from separate files (containing list of
|
||||
# MAC addresses, one per line). Use absolute path name to make sure that the
|
||||
# files can be read on SIGHUP configuration reloads.
|
||||
@@ -1983,6 +1986,15 @@ network={
|
||||
@@ -1974,6 +1977,15 @@ network={
|
||||
psk="very secret passphrase"
|
||||
}
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
|
||||
--- a/src/ap/ap_config.c
|
||||
+++ b/src/ap/ap_config.c
|
||||
@@ -1184,6 +1184,9 @@ static int hostapd_config_check_bss(stru
|
||||
@@ -1239,6 +1239,9 @@ static int hostapd_config_check_bss(stru
|
||||
}
|
||||
#endif /* CONFIG_WEP */
|
||||
|
||||
@@ -37,7 +37,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
bss->macaddr_acl != USE_EXTERNAL_RADIUS_AUTH) {
|
||||
--- a/src/ap/hostapd.c
|
||||
+++ b/src/ap/hostapd.c
|
||||
@@ -128,7 +128,7 @@ static void hostapd_reload_bss(struct ho
|
||||
@@ -130,7 +130,7 @@ void hostapd_reload_bss(struct hostapd_d
|
||||
return;
|
||||
|
||||
if (hapd->conf->wmm_enabled < 0)
|
||||
@@ -46,7 +46,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
|
||||
#ifndef CONFIG_NO_RADIUS
|
||||
radius_client_reconfig(hapd->radius, hapd->conf->radius);
|
||||
@@ -1241,7 +1241,7 @@ static int hostapd_setup_bss(struct host
|
||||
@@ -1350,7 +1350,7 @@ int hostapd_setup_bss(struct hostapd_dat
|
||||
}
|
||||
|
||||
if (conf->wmm_enabled < 0)
|
||||
|
||||
@@ -20,10 +20,8 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
src/common/ieee802_11_defs.h | 1 +
|
||||
6 files changed, 76 insertions(+), 36 deletions(-)
|
||||
|
||||
Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-20/src/ap/beacon.c
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -8,6 +8,7 @@
|
||||
* See README for more details.
|
||||
*/
|
||||
@@ -92,7 +90,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
|
||||
/* eCSA IE */
|
||||
csa_pos = hostapd_eid_ecsa(hapd, pos);
|
||||
@@ -1119,12 +1124,13 @@ void handle_probe_req(struct hostapd_dat
|
||||
@@ -1121,12 +1126,13 @@ void handle_probe_req(struct hostapd_dat
|
||||
" signal=%d", MAC2STR(mgmt->sa), ssi_signal);
|
||||
|
||||
if (hapd->iconf->multiple_bssid &&
|
||||
@@ -108,7 +106,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
if (resp == NULL)
|
||||
return;
|
||||
|
||||
@@ -1193,7 +1199,7 @@ static u8 * hostapd_probe_resp_offloads(
|
||||
@@ -1195,7 +1201,7 @@ static u8 * hostapd_probe_resp_offloads(
|
||||
"this");
|
||||
|
||||
/* Generate a Probe Response template for the non-P2P case */
|
||||
@@ -117,7 +115,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
}
|
||||
|
||||
#endif /* NEED_AP_MLME */
|
||||
@@ -1211,7 +1217,8 @@ static u8 * hostapd_unsol_bcast_probe_re
|
||||
@@ -1213,7 +1219,8 @@ static u8 * hostapd_unsol_bcast_probe_re
|
||||
hapd->conf->unsol_bcast_probe_resp_interval;
|
||||
|
||||
return hostapd_gen_probe_resp(hapd, NULL, 0,
|
||||
@@ -127,7 +125,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
|
||||
@@ -1812,7 +1819,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1814,7 +1821,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
}
|
||||
|
||||
if (hapd->iconf->multiple_bssid) {
|
||||
@@ -136,7 +134,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
u8 *end;
|
||||
|
||||
params->multiple_bssid_index = hostapd_get_bss_index(hapd);
|
||||
@@ -1820,6 +1827,8 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1822,6 +1829,8 @@ int ieee802_11_build_ap_params(struct ho
|
||||
params->ema_beacon = hapd->iconf->ema_beacon;
|
||||
if (hapd != hapd->iface->bss[0])
|
||||
params->multiple_bssid_parent = hapd->iface->bss[0]->conf->iface;
|
||||
@@ -145,7 +143,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
params->multiple_bssid_ies = os_zalloc(len);
|
||||
if (params->multiple_bssid_ies == NULL)
|
||||
return -1;
|
||||
@@ -1829,7 +1838,8 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1831,7 +1840,8 @@ int ieee802_11_build_ap_params(struct ho
|
||||
1, params->multiple_bssid_ie_offsets,
|
||||
¶ms->multiple_bssid_ie_count,
|
||||
MULTIPLE_BSSID_IE_MAX,
|
||||
@@ -155,11 +153,9 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
|
||||
params->multiple_bssid_ie_len = end - params->multiple_bssid_ies;
|
||||
if ((params->multiple_bssid_ie_count > 1) &&
|
||||
(ext_cap_len >= 13) && (ext_cap_pos[12] & 0x08))
|
||||
Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/ieee802_11.c
|
||||
+++ hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
@@ -7051,13 +7051,15 @@ int hostapd_config_read_maclist(const ch
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -7071,13 +7071,15 @@ int hostapd_config_read_maclist(const ch
|
||||
|
||||
|
||||
static int hostapd_eid_multiple_bssid_chunk_len(struct hostapd_data *hapd,
|
||||
@@ -179,7 +175,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
struct hostapd_data *bss;
|
||||
struct hostapd_bss_config *conf;
|
||||
|
||||
@@ -7065,6 +7067,12 @@ static int hostapd_eid_multiple_bssid_ch
|
||||
@@ -7085,6 +7087,12 @@ static int hostapd_eid_multiple_bssid_ch
|
||||
bss = hapd->iface->bss[i];
|
||||
conf = bss->conf;
|
||||
|
||||
@@ -192,7 +188,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
/*
|
||||
* Sublement ID: 1 byte
|
||||
* Length: 1 byte
|
||||
@@ -7075,7 +7083,7 @@ static int hostapd_eid_multiple_bssid_ch
|
||||
@@ -7095,7 +7103,7 @@ static int hostapd_eid_multiple_bssid_ch
|
||||
nontx_profile_len = 11;
|
||||
|
||||
if (!conf->ignore_broadcast_ssid ||
|
||||
@@ -201,7 +197,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
nontx_profile_len += conf->ssid.ssid_len;
|
||||
|
||||
if (is_beacon)
|
||||
@@ -7105,28 +7113,32 @@ multiple_bssid_too_big:
|
||||
@@ -7125,28 +7133,32 @@ multiple_bssid_too_big:
|
||||
|
||||
|
||||
int hostapd_eid_multiple_bssid_len(struct hostapd_data *hapd,
|
||||
@@ -243,7 +239,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
u8 non_inherit_ie[3] = {0};
|
||||
|
||||
*eid++ = WLAN_EID_MULTIPLE_BSSID;
|
||||
@@ -7134,11 +7146,17 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7154,11 +7166,17 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
num_offset = eid++;
|
||||
|
||||
for (i = *count; i < hapd->iface->num_bss; i++) {
|
||||
@@ -263,7 +259,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
|
||||
*eid++ = WLAN_EID_SUBELEMENT_NONTRANSMITTED_BSSID_PROFILE;
|
||||
bss_size_offset = eid++;
|
||||
@@ -7150,7 +7168,7 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7170,7 +7188,7 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
eid += sizeof(capab_info);
|
||||
|
||||
*eid++ = WLAN_EID_SSID;
|
||||
@@ -272,7 +268,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
*eid++ = conf->ssid.ssid_len;
|
||||
os_memcpy(eid, conf->ssid.ssid, conf->ssid.ssid_len);
|
||||
eid += conf->ssid.ssid_len;
|
||||
@@ -7226,9 +7244,10 @@ multiple_bssid_too_big:
|
||||
@@ -7246,9 +7264,10 @@ multiple_bssid_too_big:
|
||||
|
||||
|
||||
u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd,
|
||||
@@ -285,7 +281,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
{
|
||||
int count = 1, dtim_period;
|
||||
u8 remainder, **dtim_offset = NULL;
|
||||
@@ -7245,9 +7264,11 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
@@ -7265,9 +7284,11 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
eid_offsets[*eid_count] = eid;
|
||||
*eid_count = *eid_count + 1;
|
||||
}
|
||||
@@ -299,10 +295,8 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
|
||||
}
|
||||
|
||||
if (!eid_count || !(*eid_count)) {
|
||||
Index: hostapd-2021-02-20/src/ap/ieee802_11.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/ap/ieee802_11.h
|
||||
+++ hostapd-2021-02-20/src/ap/ieee802_11.h
|
||||
--- a/src/ap/ieee802_11.h
|
||||
+++ b/src/ap/ieee802_11.h
|
||||
@@ -130,12 +130,13 @@ int hostapd_update_time_adv(struct hosta
|
||||
void hostapd_client_poll_ok(struct hostapd_data *hapd, const u8 *addr);
|
||||
u8 * hostapd_eid_bss_max_idle_period(struct hostapd_data *hapd, u8 *eid);
|
||||
@@ -321,10 +315,8 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.h
|
||||
u8 * hostapd_eid_reduced_neighbor_report(struct hostapd_data *hapd, u8 *eid, bool probe_resp);
|
||||
size_t hostapd_eid_reduced_neighbor_report_len(struct hostapd_data *hapd, bool probe_resp);
|
||||
int auth_sae_init_committed(struct hostapd_data *hapd, struct sta_info *sta);
|
||||
Index: hostapd-2021-02-20/src/common/ieee802_11_common.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/common/ieee802_11_common.c
|
||||
+++ hostapd-2021-02-20/src/common/ieee802_11_common.c
|
||||
--- a/src/common/ieee802_11_common.c
|
||||
+++ b/src/common/ieee802_11_common.c
|
||||
@@ -307,6 +307,10 @@ static int ieee802_11_parse_extension(co
|
||||
elems->pasn_params = pos;
|
||||
elems->pasn_params_len = elen;
|
||||
@@ -336,10 +328,8 @@ Index: hostapd-2021-02-20/src/common/ieee802_11_common.c
|
||||
default:
|
||||
if (show_errors) {
|
||||
wpa_printf(MSG_MSGDUMP,
|
||||
Index: hostapd-2021-02-20/src/common/ieee802_11_common.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/common/ieee802_11_common.h
|
||||
+++ hostapd-2021-02-20/src/common/ieee802_11_common.h
|
||||
--- a/src/common/ieee802_11_common.h
|
||||
+++ b/src/common/ieee802_11_common.h
|
||||
@@ -118,6 +118,7 @@ struct ieee802_11_elems {
|
||||
const u8 *sae_pk;
|
||||
const u8 *s1g_capab;
|
||||
@@ -356,10 +346,8 @@ Index: hostapd-2021-02-20/src/common/ieee802_11_common.h
|
||||
|
||||
struct mb_ies_info mb_ies;
|
||||
struct frag_ies_info frag_ies;
|
||||
Index: hostapd-2021-02-20/src/common/ieee802_11_defs.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20.orig/src/common/ieee802_11_defs.h
|
||||
+++ hostapd-2021-02-20/src/common/ieee802_11_defs.h
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -483,6 +483,7 @@
|
||||
#define WLAN_EID_EXT_COLOR_CHANGE_ANNOUNCEMENT 42
|
||||
#define WLAN_EID_EXT_OCV_OCI 54
|
||||
|
||||
@@ -25,7 +25,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
resp = os_zalloc(buflen);
|
||||
if (resp == NULL)
|
||||
@@ -656,7 +656,7 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
@@ -668,7 +668,7 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
pos = hostapd_eid_owe_trans(hapd, pos, (u8 *) resp + buflen - pos);
|
||||
pos = hostapd_eid_dpp_cc(hapd, pos, (u8 *) resp + buflen - pos);
|
||||
if (hapd->conf->rnr_beacon)
|
||||
@@ -34,7 +34,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
if (hapd->conf->vendor_elements) {
|
||||
os_memcpy(pos, wpabuf_head(hapd->conf->vendor_elements),
|
||||
@@ -1354,7 +1354,7 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
@@ -1368,7 +1368,7 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
total_len += 3;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
pos = hostapd_eid_fils_indic(hapd, buf, 0);
|
||||
buf_len = pos - buf;
|
||||
@@ -1424,7 +1424,7 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
@@ -1438,7 +1438,7 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
/* Fill in the Length field value */
|
||||
*length_pos = pos - (length_pos + 1);
|
||||
|
||||
@@ -52,7 +52,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
/* FILS Indication element */
|
||||
if (buf_len) {
|
||||
@@ -1516,7 +1516,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1530,7 +1530,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
tail_len += hostapd_eid_owe_trans_len(hapd);
|
||||
tail_len += hostapd_eid_dpp_cc_len(hapd);
|
||||
if (hapd->conf->rnr_beacon)
|
||||
@@ -61,7 +61,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
tailpos = tail = os_malloc(tail_len);
|
||||
if (head == NULL || tail == NULL) {
|
||||
@@ -1702,7 +1702,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1716,7 +1716,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
tail + tail_len - tailpos);
|
||||
tailpos = hostapd_eid_dpp_cc(hapd, tailpos, tail + tail_len - tailpos);
|
||||
if (hapd->conf->rnr_beacon)
|
||||
@@ -72,7 +72,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
os_memcpy(tailpos, wpabuf_head(hapd->conf->vendor_elements),
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -7279,8 +7279,8 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
@@ -7323,8 +7323,8 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
}
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
{
|
||||
size_t len = 0;
|
||||
int i;
|
||||
@@ -7294,15 +7294,14 @@ size_t hostapd_eid_reduced_neighbor_repo
|
||||
@@ -7338,15 +7338,14 @@ size_t hostapd_eid_reduced_neighbor_repo
|
||||
}
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
for (i = 0; i < hapd->iface->interfaces->count; i++) {
|
||||
struct hostapd_iface *iface = hapd->iface->interfaces->iface[i];
|
||||
@@ -7311,8 +7310,7 @@ size_t hostapd_eid_reduced_neighbor_repo
|
||||
@@ -7355,8 +7354,7 @@ size_t hostapd_eid_reduced_neighbor_repo
|
||||
continue;
|
||||
|
||||
len += (TBTT_HEADER_LENGTH +
|
||||
@@ -111,7 +111,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
}
|
||||
|
||||
if (!probe_resp && !dl_list_empty(&hapd->nr_db))
|
||||
@@ -7325,9 +7323,9 @@ size_t hostapd_eid_reduced_neighbor_repo
|
||||
@@ -7369,9 +7367,9 @@ size_t hostapd_eid_reduced_neighbor_repo
|
||||
}
|
||||
|
||||
|
||||
@@ -124,7 +124,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
{
|
||||
u8 *eid_start = eid, *tbtt_count_pos;
|
||||
u8 tbtt_count = 0;
|
||||
@@ -7391,7 +7389,8 @@ static u8 *hostapd_eid_reduced_neighbor_
|
||||
@@ -7435,7 +7433,8 @@ static u8 *hostapd_eid_reduced_neighbor_
|
||||
}
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
{
|
||||
struct hostapd_neighbor_entry *nr;
|
||||
|
||||
@@ -7420,9 +7419,9 @@ static u8 *hostapd_eid_reduced_neighbor_
|
||||
@@ -7464,9 +7463,9 @@ static u8 *hostapd_eid_reduced_neighbor_
|
||||
}
|
||||
|
||||
|
||||
@@ -146,7 +146,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
int i, count = 0;
|
||||
u8 *size_offset;
|
||||
|
||||
@@ -7433,8 +7432,7 @@ u8 * hostapd_eid_reduced_neighbor_report
|
||||
@@ -7477,8 +7476,7 @@ u8 * hostapd_eid_reduced_neighbor_report
|
||||
size_offset = eid++;
|
||||
|
||||
if (hapd->iface->num_bss > 1)
|
||||
@@ -156,7 +156,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
for (i = 0; i < hapd->iface->interfaces->count; i++) {
|
||||
struct hostapd_iface *iface = hapd->iface->interfaces->iface[i];
|
||||
@@ -7442,13 +7440,11 @@ u8 * hostapd_eid_reduced_neighbor_report
|
||||
@@ -7486,13 +7484,11 @@ u8 * hostapd_eid_reduced_neighbor_report
|
||||
if (iface == hapd->iface || !iface->conf->he_co_locate)
|
||||
continue;
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
resp = os_zalloc(buflen);
|
||||
if (resp == NULL)
|
||||
@@ -656,7 +656,7 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
@@ -668,7 +668,7 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
pos = hostapd_eid_owe_trans(hapd, pos, (u8 *) resp + buflen - pos);
|
||||
pos = hostapd_eid_dpp_cc(hapd, pos, (u8 *) resp + buflen - pos);
|
||||
if (hapd->conf->rnr_beacon)
|
||||
@@ -41,7 +41,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
if (hapd->conf->vendor_elements) {
|
||||
os_memcpy(pos, wpabuf_head(hapd->conf->vendor_elements),
|
||||
@@ -1354,7 +1354,7 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
@@ -1368,7 +1368,7 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
total_len += 3;
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
pos = hostapd_eid_fils_indic(hapd, buf, 0);
|
||||
buf_len = pos - buf;
|
||||
@@ -1424,7 +1424,7 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
@@ -1438,7 +1438,7 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
/* Fill in the Length field value */
|
||||
*length_pos = pos - (length_pos + 1);
|
||||
|
||||
@@ -59,7 +59,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
/* FILS Indication element */
|
||||
if (buf_len) {
|
||||
@@ -1516,7 +1516,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1530,7 +1530,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
tail_len += hostapd_eid_owe_trans_len(hapd);
|
||||
tail_len += hostapd_eid_dpp_cc_len(hapd);
|
||||
if (hapd->conf->rnr_beacon)
|
||||
@@ -68,7 +68,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
tailpos = tail = os_malloc(tail_len);
|
||||
if (head == NULL || tail == NULL) {
|
||||
@@ -1702,7 +1702,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1716,7 +1716,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
tail + tail_len - tailpos);
|
||||
tailpos = hostapd_eid_dpp_cc(hapd, tailpos, tail + tail_len - tailpos);
|
||||
if (hapd->conf->rnr_beacon)
|
||||
@@ -79,7 +79,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
os_memcpy(tailpos, wpabuf_head(hapd->conf->vendor_elements),
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -7294,7 +7294,7 @@ size_t hostapd_eid_rnr_iface_len(struct
|
||||
@@ -7338,7 +7338,7 @@ size_t hostapd_eid_rnr_iface_len(struct
|
||||
}
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
{
|
||||
size_t len = 0;
|
||||
int i;
|
||||
@@ -7303,17 +7303,19 @@ size_t hostapd_eid_rnr_len(struct hostap
|
||||
@@ -7347,17 +7347,19 @@ size_t hostapd_eid_rnr_len(struct hostap
|
||||
len += (TBTT_HEADER_LENGTH +
|
||||
hostapd_eid_rnr_iface_len(hapd, hapd));
|
||||
|
||||
@@ -115,7 +115,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
len += dl_list_len(&hapd->nr_db) * (TBTT_HEADER_LENGTH + TBTT_INFO_LENGTH);
|
||||
|
||||
if (len)
|
||||
@@ -7419,9 +7421,9 @@ static u8 *hostapd_eid_neighbor_report_d
|
||||
@@ -7463,9 +7465,9 @@ static u8 *hostapd_eid_neighbor_report_d
|
||||
}
|
||||
|
||||
|
||||
@@ -127,7 +127,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
int i, count = 0;
|
||||
u8 *size_offset;
|
||||
|
||||
@@ -7434,16 +7436,18 @@ u8 * hostapd_eid_rnr(struct hostapd_data
|
||||
@@ -7478,16 +7480,18 @@ u8 * hostapd_eid_rnr(struct hostapd_data
|
||||
if (hapd->iface->num_bss > 1)
|
||||
eid = hostapd_eid_rnr_iface(hapd, hapd, eid, &count);
|
||||
|
||||
|
||||
@@ -15,11 +15,9 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
src/ap/ieee802_11.c | 106 +++++++++++++++++++++++++++++++++-----------
|
||||
2 files changed, 85 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/src/ap/beacon.c b/src/ap/beacon.c
|
||||
index eda20fc0d9df..74ac8584ab5e 100644
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -485,8 +485,7 @@ static u8 * hostapd_gen_probe_resp(struct hostapd_data *hapd,
|
||||
@@ -485,8 +485,7 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
buflen += hostapd_eid_multiple_bssid_len(hapd, req_bss, 0,
|
||||
known_bssids,
|
||||
known_bssids_len);
|
||||
@@ -29,7 +27,7 @@ index eda20fc0d9df..74ac8584ab5e 100644
|
||||
|
||||
resp = os_zalloc(buflen);
|
||||
if (resp == NULL)
|
||||
@@ -652,8 +651,7 @@ static u8 * hostapd_gen_probe_resp(struct hostapd_data *hapd,
|
||||
@@ -667,8 +666,7 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
pos = hostapd_eid_mbo(hapd, pos, (u8 *) resp + buflen - pos);
|
||||
pos = hostapd_eid_owe_trans(hapd, pos, (u8 *) resp + buflen - pos);
|
||||
pos = hostapd_eid_dpp_cc(hapd, pos, (u8 *) resp + buflen - pos);
|
||||
@@ -39,7 +37,7 @@ index eda20fc0d9df..74ac8584ab5e 100644
|
||||
|
||||
if (hapd->conf->vendor_elements) {
|
||||
os_memcpy(pos, wpabuf_head(hapd->conf->vendor_elements),
|
||||
@@ -1532,8 +1530,7 @@ int ieee802_11_build_ap_params(struct hostapd_data *hapd,
|
||||
@@ -1529,8 +1527,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
tail_len += hostapd_mbo_ie_len(hapd);
|
||||
tail_len += hostapd_eid_owe_trans_len(hapd);
|
||||
tail_len += hostapd_eid_dpp_cc_len(hapd);
|
||||
@@ -49,7 +47,7 @@ index eda20fc0d9df..74ac8584ab5e 100644
|
||||
|
||||
tailpos = tail = os_malloc(tail_len);
|
||||
if (head == NULL || tail == NULL) {
|
||||
@@ -1711,8 +1708,7 @@ int ieee802_11_build_ap_params(struct hostapd_data *hapd,
|
||||
@@ -1715,8 +1712,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
tailpos = hostapd_eid_owe_trans(hapd, tailpos,
|
||||
tail + tail_len - tailpos);
|
||||
tailpos = hostapd_eid_dpp_cc(hapd, tailpos, tail + tail_len - tailpos);
|
||||
@@ -59,11 +57,9 @@ index eda20fc0d9df..74ac8584ab5e 100644
|
||||
|
||||
if (hapd->conf->vendor_elements) {
|
||||
os_memcpy(tailpos, wpabuf_head(hapd->conf->vendor_elements),
|
||||
diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
|
||||
index 97c5b42a7528..488f02f58f63 100644
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -5989,6 +5989,7 @@ size_t hostapd_eid_rnr_iface_len(struct hostapd_data *hapd,
|
||||
@@ -7328,6 +7328,7 @@ size_t hostapd_eid_rnr_iface_len(struct
|
||||
{
|
||||
size_t len = 0;
|
||||
int i;
|
||||
@@ -71,7 +67,7 @@ index 97c5b42a7528..488f02f58f63 100644
|
||||
for (i = 0; i < hapd->iface->num_bss; i++) {
|
||||
if (hapd->iface->bss[i] == reporting_hapd ||
|
||||
hapd->iface->bss[i]->conf->ignore_broadcast_ssid)
|
||||
@@ -5999,29 +6000,69 @@ size_t hostapd_eid_rnr_iface_len(struct hostapd_data *hapd,
|
||||
@@ -7338,29 +7339,69 @@ size_t hostapd_eid_rnr_iface_len(struct
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +95,10 @@ index 97c5b42a7528..488f02f58f63 100644
|
||||
+ return len;
|
||||
+}
|
||||
+
|
||||
+
|
||||
|
||||
- if (type != WLAN_FC_STYPE_ACTION) {
|
||||
- for (i = 0; i < hapd->iface->interfaces->count; i++) {
|
||||
- struct hostapd_iface *iface = hapd->iface->interfaces->iface[i];
|
||||
+static bool is_6ghz_colocated(struct hostapd_data *hapd)
|
||||
+{
|
||||
+ u8 i;
|
||||
@@ -124,16 +123,13 @@ index 97c5b42a7528..488f02f58f63 100644
|
||||
+ return false;
|
||||
+}
|
||||
|
||||
- if (type != WLAN_FC_STYPE_ACTION) {
|
||||
- for (i = 0; i < hapd->iface->interfaces->count; i++) {
|
||||
- struct hostapd_iface *iface = hapd->iface->interfaces->iface[i];
|
||||
|
||||
- if (iface == hapd->iface || !iface->conf->he_co_locate)
|
||||
- continue;
|
||||
|
||||
+size_t hostapd_eid_rnr_len(struct hostapd_data *hapd, u32 type)
|
||||
+{
|
||||
+ size_t len = 0;
|
||||
|
||||
+
|
||||
+ if (hapd->conf->rnr_beacon) {
|
||||
+ if (hapd->iface->num_bss > 1)
|
||||
len += (TBTT_HEADER_LENGTH +
|
||||
@@ -153,7 +149,7 @@ index 97c5b42a7528..488f02f58f63 100644
|
||||
|
||||
if (len)
|
||||
len += 2; /* Element ID and length */
|
||||
@@ -6096,6 +6137,27 @@ static u8 *hostapd_eid_rnr_iface(struct hostapd_data *hapd,
|
||||
@@ -7435,6 +7476,27 @@ static u8 *hostapd_eid_rnr_iface(struct
|
||||
}
|
||||
|
||||
|
||||
@@ -181,7 +177,7 @@ index 97c5b42a7528..488f02f58f63 100644
|
||||
static u8 *hostapd_eid_neighbor_report_db(struct hostapd_data *hapd, u8 *eid,
|
||||
int *count)
|
||||
{
|
||||
@@ -6138,22 +6200,16 @@ u8 * hostapd_eid_rnr(struct hostapd_data *hapd, u8 *eid, u32 type)
|
||||
@@ -7477,22 +7539,16 @@ u8 * hostapd_eid_rnr(struct hostapd_data
|
||||
*eid++ = WLAN_EID_REDUCED_NEIGHBOR_REPORT;
|
||||
size_offset = eid++;
|
||||
|
||||
@@ -211,6 +207,3 @@ index 97c5b42a7528..488f02f58f63 100644
|
||||
|
||||
if (!count)
|
||||
eid -= 2;
|
||||
--
|
||||
2.25.0
|
||||
|
||||
|
||||
@@ -16,11 +16,9 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
src/common/ieee802_11_defs.h | 2 +
|
||||
2 files changed, 166 insertions(+), 83 deletions(-)
|
||||
|
||||
diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
|
||||
index 488f02f58f63..953a444a5cd4 100644
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -5985,22 +5985,48 @@ u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd,
|
||||
@@ -7324,22 +7324,48 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
|
||||
|
||||
size_t hostapd_eid_rnr_iface_len(struct hostapd_data *hapd,
|
||||
@@ -32,7 +30,12 @@ index 488f02f58f63..953a444a5cd4 100644
|
||||
- int i;
|
||||
+ size_t total_len = 0;
|
||||
+ int i, tbtt_count = 0, start = 0;
|
||||
+
|
||||
|
||||
- for (i = 0; i < hapd->iface->num_bss; i++) {
|
||||
- if (hapd->iface->bss[i] == reporting_hapd ||
|
||||
- hapd->iface->bss[i]->conf->ignore_broadcast_ssid)
|
||||
- continue;
|
||||
- len += TBTT_INFO_LENGTH;
|
||||
+ while (start < hapd->iface->num_bss) {
|
||||
+ if (!(*current_len) ||
|
||||
+ ((*current_len + TBTT_HEADER_LENGTH + TBTT_INFO_LENGTH) >
|
||||
@@ -40,12 +43,7 @@ index 488f02f58f63..953a444a5cd4 100644
|
||||
+ *current_len = RNR_HEADER_LENGTH;
|
||||
+ total_len += RNR_HEADER_LENGTH;
|
||||
+ }
|
||||
|
||||
- for (i = 0; i < hapd->iface->num_bss; i++) {
|
||||
- if (hapd->iface->bss[i] == reporting_hapd ||
|
||||
- hapd->iface->bss[i]->conf->ignore_broadcast_ssid)
|
||||
- continue;
|
||||
- len += TBTT_INFO_LENGTH;
|
||||
+
|
||||
+ *current_len += TBTT_HEADER_LENGTH;
|
||||
+ total_len += TBTT_HEADER_LENGTH;
|
||||
+
|
||||
@@ -79,7 +77,7 @@ index 488f02f58f63..953a444a5cd4 100644
|
||||
{
|
||||
struct hostapd_iface *iface;
|
||||
size_t len = 0;
|
||||
@@ -6015,8 +6041,35 @@ static size_t hostapd_eid_rnr_colocation_len(struct hostapd_data *hapd)
|
||||
@@ -7354,8 +7380,35 @@ static size_t hostapd_eid_rnr_colocation
|
||||
if (iface == hapd->iface || !iface->conf->he_co_locate)
|
||||
continue;
|
||||
|
||||
@@ -117,7 +115,7 @@ index 488f02f58f63..953a444a5cd4 100644
|
||||
}
|
||||
return len;
|
||||
}
|
||||
@@ -6049,23 +6102,21 @@ static bool is_6ghz_colocated(struct hostapd_data *hapd)
|
||||
@@ -7388,23 +7441,21 @@ static bool is_6ghz_colocated(struct hos
|
||||
|
||||
size_t hostapd_eid_rnr_len(struct hostapd_data *hapd, u32 type)
|
||||
{
|
||||
@@ -148,7 +146,7 @@ index 488f02f58f63..953a444a5cd4 100644
|
||||
|
||||
return len;
|
||||
}
|
||||
@@ -6073,72 +6124,95 @@ size_t hostapd_eid_rnr_len(struct hostapd_data *hapd, u32 type)
|
||||
@@ -7412,72 +7463,95 @@ size_t hostapd_eid_rnr_len(struct hostap
|
||||
|
||||
static u8 *hostapd_eid_rnr_iface(struct hostapd_data *hapd,
|
||||
struct hostapd_data *reporting_hapd,
|
||||
@@ -185,26 +183,11 @@ index 488f02f58f63..953a444a5cd4 100644
|
||||
- *eid++ = hapd->iconf->channel;
|
||||
- for (i = 0; i < hapd->iface->num_bss; i++) {
|
||||
- u8 bss_param = 0;
|
||||
+ while (start < iface->num_bss) {
|
||||
+ if (!(*current_len) ||
|
||||
+ ((*current_len + TBTT_HEADER_LENGTH + TBTT_INFO_LENGTH) >
|
||||
+ 255)) {
|
||||
+ eid_start = eid;
|
||||
+ *eid++ = WLAN_EID_REDUCED_NEIGHBOR_REPORT;
|
||||
+ size_offset = eid++;
|
||||
+ *current_len = RNR_HEADER_LENGTH;
|
||||
+ tbtt_count = 0;
|
||||
+ }
|
||||
|
||||
-
|
||||
- if (hapd->iface->bss[i] == reporting_hapd ||
|
||||
- hapd->iface->bss[i]->conf->ignore_broadcast_ssid)
|
||||
- continue;
|
||||
+ tbtt_count_pos = eid++;
|
||||
+ *eid++ = TBTT_INFO_LENGTH;
|
||||
+ *eid++ = op_class;
|
||||
+ *eid++ = hapd->iconf->channel;
|
||||
+ *current_len += TBTT_HEADER_LENGTH;
|
||||
|
||||
-
|
||||
- *eid++ = TBTT_AP_OFFSET_UNKNOWN;
|
||||
- os_memcpy(eid, hapd->iface->bss[i]->conf->bssid, ETH_ALEN);
|
||||
- eid += 6;
|
||||
@@ -218,24 +201,35 @@ index 488f02f58f63..953a444a5cd4 100644
|
||||
- bss_param |= TBTT_BSS_PARAM_MULTIPLE_BSSID;
|
||||
- if (hapd->iface->bss[i] == hostapd_get_primary_bss(hapd->iface->bss[i]))
|
||||
- bss_param |= TBTT_BSS_PARAM_TRANSMITTED_BSSID;
|
||||
- }
|
||||
+ while (start < iface->num_bss) {
|
||||
+ if (!(*current_len) ||
|
||||
+ ((*current_len + TBTT_HEADER_LENGTH + TBTT_INFO_LENGTH) >
|
||||
+ 255)) {
|
||||
+ eid_start = eid;
|
||||
+ *eid++ = WLAN_EID_REDUCED_NEIGHBOR_REPORT;
|
||||
+ size_offset = eid++;
|
||||
+ *current_len = RNR_HEADER_LENGTH;
|
||||
+ tbtt_count = 0;
|
||||
}
|
||||
- if (hapd->iface->bss[i]->iconf->he_co_locate)
|
||||
- bss_param |= TBTT_BSS_PARAM_CO_LOCATED;
|
||||
+ for (i = start; i < iface->num_bss; i++) {
|
||||
+ bss_param = 0;
|
||||
+ bss = iface->bss[i];
|
||||
|
||||
- if (hapd->iface->bss[i]->conf->unsol_bcast_probe_resp_interval)
|
||||
- bss_param |= TBTT_BSS_PARAM_20_TU_PROBE_RESP_ACTIVE;
|
||||
+ tbtt_count_pos = eid++;
|
||||
+ *eid++ = TBTT_INFO_LENGTH;
|
||||
+ *eid++ = op_class;
|
||||
+ *eid++ = hapd->iconf->channel;
|
||||
+ *current_len += TBTT_HEADER_LENGTH;
|
||||
+
|
||||
+ for (i = start; i < iface->num_bss; i++) {
|
||||
+ bss_param = 0;
|
||||
+ bss = iface->bss[i];
|
||||
+
|
||||
+ if (bss == reporting_hapd ||
|
||||
+ hapd->conf->ignore_broadcast_ssid)
|
||||
+ continue;
|
||||
|
||||
- *eid++ = bss_param;
|
||||
- /* Setting 20 MHz PSD */
|
||||
- *eid++ = TBTT_PSD_MAX_TXPOWER - 1;
|
||||
- *count += 1;
|
||||
- tbtt_count++;
|
||||
+
|
||||
+ if ((*current_len + TBTT_INFO_LENGTH > 255) ||
|
||||
+ (tbtt_count >= TBTT_INFO_COUNT_MAX))
|
||||
+ break;
|
||||
@@ -266,7 +260,12 @@ index 488f02f58f63..953a444a5cd4 100644
|
||||
+ *current_len += TBTT_INFO_LENGTH;
|
||||
+ tbtt_count += 1;
|
||||
+ }
|
||||
+
|
||||
|
||||
- *eid++ = bss_param;
|
||||
- /* Setting 20 MHz PSD */
|
||||
- *eid++ = TBTT_PSD_MAX_TXPOWER - 1;
|
||||
- *count += 1;
|
||||
- tbtt_count++;
|
||||
+ start = i;
|
||||
+ *tbtt_count_pos = TBTT_INFO_COUNT(tbtt_count - 1);
|
||||
+ *size_offset = (eid - size_offset) - 1;
|
||||
@@ -286,7 +285,7 @@ index 488f02f58f63..953a444a5cd4 100644
|
||||
{
|
||||
struct hostapd_iface *iface;
|
||||
int i;
|
||||
@@ -6152,36 +6226,50 @@ static u8 * hostapd_eid_rnr_colocation(struct hostapd_data *hapd, u8 *eid,
|
||||
@@ -7491,36 +7565,50 @@ static u8 * hostapd_eid_rnr_colocation(s
|
||||
if (iface == hapd->iface || !iface->conf->he_co_locate)
|
||||
continue;
|
||||
|
||||
@@ -341,7 +340,7 @@ index 488f02f58f63..953a444a5cd4 100644
|
||||
}
|
||||
|
||||
return eid;
|
||||
@@ -6190,31 +6278,24 @@ static u8 *hostapd_eid_neighbor_report_db(struct hostapd_data *hapd, u8 *eid,
|
||||
@@ -7529,31 +7617,24 @@ static u8 *hostapd_eid_neighbor_report_d
|
||||
|
||||
u8 * hostapd_eid_rnr(struct hostapd_data *hapd, u8 *eid, u32 type)
|
||||
{
|
||||
@@ -382,12 +381,10 @@ index 488f02f58f63..953a444a5cd4 100644
|
||||
|
||||
return eid;
|
||||
}
|
||||
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
|
||||
index 52e2c868e723..ab7f36f39196 100644
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -2420,10 +2420,12 @@ enum mscs_description_subelem {
|
||||
#define FILS_DISCOVERY_MAX_INTERVAL_6GHZ 20
|
||||
@@ -2446,10 +2446,12 @@ enum mscs_description_subelem {
|
||||
#define FD_MAX_INTERVAL_6GHZ 20 /* TUs */
|
||||
|
||||
/* TBTT Information field defines */
|
||||
+#define RNR_HEADER_LENGTH 2
|
||||
@@ -399,6 +396,3 @@ index 52e2c868e723..ab7f36f39196 100644
|
||||
#define TBTT_AP_OFFSET_UNKNOWN 255
|
||||
#define TBTT_BSS_PARAM_OCT_RECOMMENDED BIT(0)
|
||||
#define TBTT_BSS_PARAM_SAME_SSID BIT(1)
|
||||
--
|
||||
2.25.0
|
||||
|
||||
|
||||
@@ -13,11 +13,9 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
src/ap/ieee802_11.h | 6 +++---
|
||||
3 files changed, 17 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/src/ap/beacon.c b/src/ap/beacon.c
|
||||
index 74ac8584ab5e..fcc3b7517bcb 100644
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -1815,7 +1815,7 @@ int ieee802_11_build_ap_params(struct hostapd_data *hapd,
|
||||
@@ -1817,7 +1817,7 @@ int ieee802_11_build_ap_params(struct ho
|
||||
}
|
||||
|
||||
if (hapd->iconf->multiple_bssid) {
|
||||
@@ -26,11 +24,9 @@ index 74ac8584ab5e..fcc3b7517bcb 100644
|
||||
u8 *end;
|
||||
|
||||
params->multiple_bssid_index = hostapd_get_bss_index(hapd);
|
||||
diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
|
||||
index 953a444a5cd4..b13f6ee47b8a 100644
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -5753,15 +5753,15 @@ int hostapd_config_read_maclist(const char *fname,
|
||||
@@ -7070,15 +7070,15 @@ int hostapd_config_read_maclist(const ch
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +49,7 @@ index 953a444a5cd4..b13f6ee47b8a 100644
|
||||
u8 mask;
|
||||
struct hostapd_data *bss;
|
||||
struct hostapd_bss_config *conf;
|
||||
@@ -5810,12 +5810,13 @@ multiple_bssid_too_big:
|
||||
@@ -7132,12 +7132,13 @@ multiple_bssid_too_big:
|
||||
}
|
||||
|
||||
|
||||
@@ -72,11 +68,9 @@ index 953a444a5cd4..b13f6ee47b8a 100644
|
||||
|
||||
while (count < hapd->iface->num_bss)
|
||||
len += hostapd_eid_multiple_bssid_chunk_len(hapd, req_bss,
|
||||
diff --git a/src/ap/ieee802_11.h b/src/ap/ieee802_11.h
|
||||
index 74e426bc99f0..8e70bc3aa84a 100644
|
||||
--- a/src/ap/ieee802_11.h
|
||||
+++ b/src/ap/ieee802_11.h
|
||||
@@ -134,9 +134,9 @@ u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd,
|
||||
@@ -134,9 +134,9 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
u8 is_beacon, u8 **eid_offsets, int *eid_count,
|
||||
int eid_max, u8 ema_beacon,
|
||||
const u8 *known_bssids, u8 known_bssids_len);
|
||||
@@ -89,6 +83,3 @@ index 74e426bc99f0..8e70bc3aa84a 100644
|
||||
u8 * hostapd_eid_rnr(struct hostapd_data *hapd, u8 *eid, u32 type);
|
||||
size_t hostapd_eid_rnr_len(struct hostapd_data *hapd, u32 type);
|
||||
int auth_sae_init_committed(struct hostapd_data *hapd, struct sta_info *sta);
|
||||
--
|
||||
2.25.0
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
/* eCSA IE */
|
||||
csa_pos = hostapd_eid_ecsa(hapd, pos);
|
||||
@@ -1824,18 +1828,32 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1826,18 +1830,32 @@ int ieee802_11_build_ap_params(struct ho
|
||||
if (hapd != hapd->iface->bss[0])
|
||||
params->multiple_bssid_parent = hapd->iface->bss[0]->conf->iface;
|
||||
|
||||
@@ -88,7 +88,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
params->multiple_bssid_ie_len = end - params->multiple_bssid_ies;
|
||||
if ((params->multiple_bssid_ie_count > 1) &&
|
||||
(ext_cap_len >= 13) && (ext_cap_pos[12] & 0x08))
|
||||
@@ -1857,6 +1875,8 @@ void ieee802_11_free_ap_params(struct wp
|
||||
@@ -1859,6 +1877,8 @@ void ieee802_11_free_ap_params(struct wp
|
||||
params->proberesp = NULL;
|
||||
os_free(params->multiple_bssid_ies);
|
||||
params->multiple_bssid_ies = NULL;
|
||||
@@ -99,9 +99,9 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
params->fd_frame_tmpl = NULL;
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -89,6 +89,26 @@ static void handle_auth(struct hostapd_d
|
||||
int rssi, int from_queue,
|
||||
struct hostapd_frame_info *fi);
|
||||
@@ -97,6 +97,26 @@ static void handle_auth(struct hostapd_d
|
||||
const struct ieee80211_mgmt *mgmt, size_t len,
|
||||
int rssi, int from_queue);
|
||||
|
||||
+enum colocation_mode {
|
||||
+ NO_COLOCATED_6GHZ,
|
||||
@@ -126,7 +126,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
u8 * hostapd_eid_multi_ap(struct hostapd_data *hapd, u8 *eid)
|
||||
{
|
||||
@@ -161,6 +181,33 @@ u8 * hostapd_eid_supp_rates(struct hosta
|
||||
@@ -169,6 +189,33 @@ u8 * hostapd_eid_supp_rates(struct hosta
|
||||
}
|
||||
|
||||
|
||||
@@ -160,7 +160,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
u8 * hostapd_eid_ext_supp_rates(struct hostapd_data *hapd, u8 *eid)
|
||||
{
|
||||
u8 *pos = eid;
|
||||
@@ -7052,20 +7099,27 @@ int hostapd_config_read_maclist(const ch
|
||||
@@ -7072,20 +7119,27 @@ int hostapd_config_read_maclist(const ch
|
||||
|
||||
static size_t hostapd_eid_multiple_bssid_chunk_len(struct hostapd_data *hapd,
|
||||
struct hostapd_data *req_bss,
|
||||
@@ -191,7 +191,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
j = i / 8;
|
||||
mask = (u8)1 << (i % 8);
|
||||
@@ -7086,18 +7140,25 @@ static size_t hostapd_eid_multiple_bssid
|
||||
@@ -7106,18 +7160,25 @@ static size_t hostapd_eid_multiple_bssid
|
||||
conf->ignore_broadcast_ssid == 2 || bss == req_bss)
|
||||
nontx_profile_len += conf->ssid.ssid_len;
|
||||
|
||||
@@ -224,7 +224,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
if (len + nontx_profile_len > 255) {
|
||||
goto multiple_bssid_too_big;
|
||||
@@ -7113,18 +7174,33 @@ multiple_bssid_too_big:
|
||||
@@ -7133,18 +7194,33 @@ multiple_bssid_too_big:
|
||||
|
||||
|
||||
size_t hostapd_eid_multiple_bssid_len(struct hostapd_data *hapd,
|
||||
@@ -265,7 +265,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
return len;
|
||||
}
|
||||
|
||||
@@ -7132,16 +7208,19 @@ size_t hostapd_eid_multiple_bssid_len(st
|
||||
@@ -7152,16 +7228,19 @@ size_t hostapd_eid_multiple_bssid_len(st
|
||||
static u8 * hostapd_eid_multiple_bssid_chunk(struct hostapd_data *hapd,
|
||||
struct hostapd_data *req_bss,
|
||||
u8 *eid, u8 *end, int *count,
|
||||
@@ -287,7 +287,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
*eid++ = WLAN_EID_MULTIPLE_BSSID;
|
||||
size_offset = eid++;
|
||||
num_offset = eid++;
|
||||
@@ -7149,9 +7228,13 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7169,9 +7248,13 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
for (i = *count; i < hapd->iface->num_bss; i++) {
|
||||
u8 *bss_size_offset, *index_size_offset, *pos = eid;
|
||||
u16 capab_info;
|
||||
@@ -302,7 +302,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
j = i / 8;
|
||||
mask = (u8)1 << (i % 8);
|
||||
@@ -7184,7 +7267,7 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7204,7 +7287,7 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
*eid++ = WLAN_EID_MULTIPLE_BSSID_INDEX;
|
||||
index_size_offset = eid++;
|
||||
*eid++ = i;
|
||||
@@ -311,7 +311,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
dtim_offset[i] = eid;
|
||||
*eid++ = conf->dtim_period;
|
||||
*eid++ = 0xFF;
|
||||
@@ -7198,19 +7281,19 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
@@ -7218,19 +7301,19 @@ static u8 * hostapd_eid_multiple_bssid_c
|
||||
/* Add non inheritance ie for capabalities that
|
||||
* are not inherited by non tx vap from tx vap
|
||||
*/
|
||||
@@ -335,7 +335,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
!hostapd_wpa_ie(bss, WLAN_EID_RSNX)) {
|
||||
non_inherit_ie[ie_count] = WLAN_EID_RSNX;
|
||||
ie_count++;
|
||||
@@ -7246,30 +7329,62 @@ multiple_bssid_too_big:
|
||||
@@ -7266,30 +7349,62 @@ multiple_bssid_too_big:
|
||||
|
||||
u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd,
|
||||
struct hostapd_data *req_bss, u8 *eid, u8 *end,
|
||||
@@ -404,7 +404,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
}
|
||||
|
||||
if (!eid_count || !(*eid_count)) {
|
||||
@@ -7283,7 +7398,14 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
@@ -7303,7 +7418,14 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
break;
|
||||
|
||||
for (count = 0; count < iface->num_bss; count++) {
|
||||
@@ -420,7 +420,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
dtim_period = conf->dtim_period;
|
||||
remainder = dtim_period % (*eid_count);
|
||||
if (remainder) {
|
||||
@@ -7304,9 +7426,10 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
@@ -7324,9 +7446,10 @@ u8 * hostapd_eid_multiple_bssid(struct h
|
||||
}
|
||||
|
||||
|
||||
@@ -433,7 +433,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
{
|
||||
size_t total_len = 0;
|
||||
int i, tbtt_count = 0, start = 0;
|
||||
@@ -7323,8 +7446,17 @@ size_t hostapd_eid_rnr_iface_len(struct
|
||||
@@ -7343,8 +7466,17 @@ size_t hostapd_eid_rnr_iface_len(struct
|
||||
total_len += TBTT_HEADER_LENGTH;
|
||||
|
||||
for (i = start; i < hapd->iface->num_bss; i++) {
|
||||
@@ -453,7 +453,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
continue;
|
||||
|
||||
if ((*current_len + TBTT_INFO_LENGTH > 255) ||
|
||||
@@ -7362,7 +7494,7 @@ static size_t hostapd_eid_rnr_colocation
|
||||
@@ -7382,7 +7514,7 @@ static size_t hostapd_eid_rnr_colocation
|
||||
continue;
|
||||
|
||||
len += hostapd_eid_rnr_iface_len(iface->bss[0], hapd,
|
||||
@@ -462,7 +462,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
}
|
||||
return len;
|
||||
}
|
||||
@@ -7395,48 +7527,71 @@ static size_t hostapd_eid_neighbor_repor
|
||||
@@ -7415,48 +7547,71 @@ static size_t hostapd_eid_neighbor_repor
|
||||
}
|
||||
|
||||
|
||||
@@ -529,7 +529,9 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
¤t_len);
|
||||
- }
|
||||
+ /* fallthrough */
|
||||
+
|
||||
|
||||
- if ((true == is_6ghz_colocated(hapd)) && type != WLAN_FC_STYPE_ACTION)
|
||||
- len += hostapd_eid_rnr_colocation_len(hapd, ¤t_len);
|
||||
+ case WLAN_FC_STYPE_PROBE_RESP:
|
||||
+ if (mode == COLOCATED_LOWER_BAND)
|
||||
+ len += hostapd_eid_rnr_colocation_len(hapd,
|
||||
@@ -540,9 +542,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
+ len += hostapd_eid_rnr_iface_len(hapd, hapd,
|
||||
+ ¤t_len, -1, -1);
|
||||
+ break;
|
||||
|
||||
- if ((true == is_6ghz_colocated(hapd)) && type != WLAN_FC_STYPE_ACTION)
|
||||
- len += hostapd_eid_rnr_colocation_len(hapd, ¤t_len);
|
||||
+
|
||||
+ case WLAN_FC_STYPE_ACTION:
|
||||
+ if (hapd->iface->num_bss > 1 && mode == STANDALONE_6GHZ)
|
||||
+ len += hostapd_eid_rnr_iface_len(hapd, hapd,
|
||||
@@ -555,7 +555,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
return len;
|
||||
}
|
||||
@@ -7444,7 +7599,8 @@ size_t hostapd_eid_rnr_len(struct hostap
|
||||
@@ -7464,7 +7619,8 @@ size_t hostapd_eid_rnr_len(struct hostap
|
||||
|
||||
static u8 *hostapd_eid_rnr_iface(struct hostapd_data *hapd,
|
||||
struct hostapd_data *reporting_hapd,
|
||||
@@ -565,7 +565,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
{
|
||||
u8 *eid_start = eid, *tbtt_count_pos = NULL;
|
||||
u8 tbtt_count = 0, op_class, channel, bss_param;
|
||||
@@ -7483,9 +7639,15 @@ static u8 *hostapd_eid_rnr_iface(struct
|
||||
@@ -7503,9 +7659,15 @@ static u8 *hostapd_eid_rnr_iface(struct
|
||||
for (i = start; i < iface->num_bss; i++) {
|
||||
bss_param = 0;
|
||||
bss = iface->bss[i];
|
||||
@@ -582,7 +582,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
continue;
|
||||
|
||||
if ((*current_len + TBTT_INFO_LENGTH > 255) ||
|
||||
@@ -7547,7 +7709,7 @@ static u8 * hostapd_eid_rnr_colocation(s
|
||||
@@ -7567,7 +7729,7 @@ static u8 * hostapd_eid_rnr_colocation(s
|
||||
continue;
|
||||
|
||||
eid = hostapd_eid_rnr_iface(iface->bss[0], hapd, eid,
|
||||
@@ -591,7 +591,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
}
|
||||
return eid;
|
||||
}
|
||||
@@ -7600,19 +7762,38 @@ u8 * hostapd_eid_rnr(struct hostapd_data
|
||||
@@ -7620,19 +7782,38 @@ u8 * hostapd_eid_rnr(struct hostapd_data
|
||||
{
|
||||
u8 *eid_start = eid;
|
||||
size_t current_len = 0;
|
||||
@@ -666,7 +666,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
#ifdef CONFIG_SAE
|
||||
--- a/src/drivers/driver.h
|
||||
+++ b/src/drivers/driver.h
|
||||
@@ -1232,6 +1232,7 @@ struct wowlan_triggers {
|
||||
@@ -1230,6 +1230,7 @@ struct wowlan_triggers {
|
||||
};
|
||||
|
||||
#define MULTIPLE_BSSID_IE_MAX 8
|
||||
@@ -674,7 +674,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
struct wpa_driver_ap_params {
|
||||
/**
|
||||
@@ -1630,6 +1631,27 @@ struct wpa_driver_ap_params {
|
||||
@@ -1628,6 +1629,27 @@ struct wpa_driver_ap_params {
|
||||
*/
|
||||
int ema_beacon;
|
||||
|
||||
@@ -702,7 +702,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
};
|
||||
|
||||
struct wpa_driver_mesh_bss_params {
|
||||
@@ -2291,6 +2313,7 @@ struct wpa_bss_params {
|
||||
@@ -2296,6 +2318,7 @@ struct wpa_bss_params {
|
||||
int wpa_key_mgmt;
|
||||
int rsn_preauth;
|
||||
enum mfp_options ieee80211w;
|
||||
|
||||
@@ -20,7 +20,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -1888,7 +1888,7 @@ void ieee802_11_free_ap_params(struct wp
|
||||
@@ -1890,7 +1890,7 @@ void ieee802_11_free_ap_params(struct wp
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
{
|
||||
struct wpa_driver_ap_params params;
|
||||
struct hostapd_freq_params freq;
|
||||
@@ -1966,12 +1966,47 @@ int ieee802_11_set_beacon(struct hostapd
|
||||
@@ -1963,12 +1963,47 @@ int ieee802_11_set_beacon(struct hostapd
|
||||
wpa_printf(MSG_ERROR, "Failed to set beacon parameters");
|
||||
else
|
||||
ret = 0;
|
||||
|
||||
@@ -16,11 +16,9 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
|
||||
src/drivers/nl80211_copy.h | 38 ++++++++++++++++++++++++++++++++++++
|
||||
2 files changed, 69 insertions(+)
|
||||
|
||||
Index: hostapd-2021-02-18/src/drivers/driver_nl80211.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/drivers/driver_nl80211.c
|
||||
+++ hostapd-2021-02-18/src/drivers/driver_nl80211.c
|
||||
@@ -4867,6 +4867,37 @@ static int wpa_driver_nl80211_set_ap(voi
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -4825,6 +4825,37 @@ static int wpa_driver_nl80211_set_ap(voi
|
||||
nla_nest_end(msg, ies);
|
||||
}
|
||||
|
||||
@@ -58,11 +56,9 @@ Index: hostapd-2021-02-18/src/drivers/driver_nl80211.c
|
||||
ret = send_and_recv_msgs_owner(drv, msg, get_connect_handle(bss), 1,
|
||||
NULL, NULL, NULL, NULL);
|
||||
if (ret) {
|
||||
Index: hostapd-2021-02-18/src/drivers/nl80211_copy.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/drivers/nl80211_copy.h
|
||||
+++ hostapd-2021-02-18/src/drivers/nl80211_copy.h
|
||||
@@ -2587,6 +2587,17 @@ enum nl80211_commands {
|
||||
--- a/src/drivers/nl80211_copy.h
|
||||
+++ b/src/drivers/nl80211_copy.h
|
||||
@@ -2597,6 +2597,17 @@ enum nl80211_commands {
|
||||
*
|
||||
* @NL80211_ATTR_MULTIPLE_BSSID_EMA: Shall the multiple BSS beacons be sent out in EMA mode.
|
||||
*
|
||||
@@ -80,7 +76,7 @@ Index: hostapd-2021-02-18/src/drivers/nl80211_copy.h
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
@@ -3098,6 +3109,8 @@ enum nl80211_attrs {
|
||||
@@ -3108,6 +3119,8 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_COLOR_CHANGE_ANNOUNCEMENT_COLOR,
|
||||
NL80211_ATTR_COLOR_CHANGE_ANNOUNCEMENT_IES,
|
||||
|
||||
@@ -89,7 +85,7 @@ Index: hostapd-2021-02-18/src/drivers/nl80211_copy.h
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
@@ -7325,4 +7338,27 @@ enum nl80211_sar_specs_attrs {
|
||||
@@ -7335,4 +7348,27 @@ enum nl80211_sar_specs_attrs {
|
||||
NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1,
|
||||
};
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ Date: Wed Jan 13 16:51:07 2021 +0530
|
||||
|
||||
--- a/src/ap/sta_info.c
|
||||
+++ b/src/ap/sta_info.c
|
||||
@@ -1060,8 +1060,7 @@ int ap_sta_bind_vlan(struct hostapd_data
|
||||
@@ -1097,8 +1097,7 @@ int ap_sta_bind_vlan(struct hostapd_data
|
||||
if (sta->vlan_id == old_vlanid)
|
||||
goto skip_counting;
|
||||
|
||||
@@ -30,7 +30,7 @@ Date: Wed Jan 13 16:51:07 2021 +0530
|
||||
"binding station to (vlan_id=%d)",
|
||||
--- a/src/ap/wpa_auth_glue.c
|
||||
+++ b/src/ap/wpa_auth_glue.c
|
||||
@@ -437,12 +437,8 @@ static int hostapd_wpa_auth_set_key(void
|
||||
@@ -444,12 +444,8 @@ static int hostapd_wpa_auth_set_key(void
|
||||
|
||||
if (vlan_id > 0) {
|
||||
ifname = hostapd_get_vlan_id_ifname(hapd->conf->vlan, vlan_id);
|
||||
@@ -45,7 +45,7 @@ Date: Wed Jan 13 16:51:07 2021 +0530
|
||||
}
|
||||
|
||||
#ifdef CONFIG_TESTING_OPTIONS
|
||||
@@ -917,32 +913,27 @@ static int hostapd_wpa_auth_update_vlan(
|
||||
@@ -945,32 +941,27 @@ static int hostapd_wpa_auth_update_vlan(
|
||||
#ifndef CONFIG_NO_VLAN
|
||||
struct hostapd_data *hapd = ctx;
|
||||
struct sta_info *sta;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/hostapd/config_file.c
|
||||
+++ hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
@@ -4590,6 +4590,15 @@ static int hostapd_config_fill(struct ho
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -4601,6 +4601,15 @@ static int hostapd_config_fill(struct ho
|
||||
bss->disable_11ac = !!atoi(pos);
|
||||
} else if (os_strcmp(buf, "disable_11ax") == 0) {
|
||||
bss->disable_11ax = !!atoi(pos);
|
||||
@@ -18,23 +16,19 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
|
||||
#ifdef CONFIG_PASN
|
||||
#ifdef CONFIG_TESTING_OPTIONS
|
||||
} else if (os_strcmp(buf, "force_kdk_derivation") == 0) {
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_config.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
|
||||
@@ -894,6 +894,7 @@ struct hostapd_bss_config {
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -895,6 +895,7 @@ struct hostapd_bss_config {
|
||||
|
||||
unsigned int unsol_bcast_probe_resp_interval;
|
||||
u8 rnr_beacon;
|
||||
+ int beacon_tx_mode;
|
||||
char *config_id;
|
||||
};
|
||||
|
||||
/**
|
||||
Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/ap/beacon.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
@@ -1861,6 +1861,8 @@ int ieee802_11_build_ap_params(struct ho
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -1863,6 +1863,8 @@ int ieee802_11_build_ap_params(struct ho
|
||||
params->dtim_period = hapd->conf->dtim_period;
|
||||
}
|
||||
|
||||
@@ -43,10 +37,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
|
||||
return 0;
|
||||
}
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver.h
|
||||
--- a/src/drivers/driver.h
|
||||
+++ b/src/drivers/driver.h
|
||||
@@ -1206,6 +1206,12 @@ struct wpa_driver_associate_params {
|
||||
* Disable HE40MHz coexistence scan
|
||||
*/
|
||||
@@ -82,10 +74,8 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h
|
||||
};
|
||||
|
||||
struct wpa_driver_set_key_params {
|
||||
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver_nl80211.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -4543,6 +4543,7 @@ static int wpa_driver_nl80211_set_ap(voi
|
||||
wpa_printf(MSG_DEBUG, "nl80211: beacon_rate=%u", params->beacon_rate);
|
||||
wpa_printf(MSG_DEBUG, "nl80211: rate_type=%d", params->rate_type);
|
||||
@@ -105,7 +95,7 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
goto fail;
|
||||
if (params->proberesp && params->proberesp_len) {
|
||||
wpa_hexdump(MSG_DEBUG, "nl80211: proberesp (offload)",
|
||||
@@ -10663,7 +10666,9 @@ static int nl80211_join_mesh(struct i802
|
||||
@@ -10674,7 +10677,9 @@ static int nl80211_join_mesh(struct i802
|
||||
nl80211_put_mesh_id(msg, params->meshid, params->meshid_len) ||
|
||||
nl80211_put_beacon_int(msg, params->beacon_int) ||
|
||||
nl80211_put_mcast_rate(msg, params->mcast_rate) ||
|
||||
@@ -116,10 +106,8 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
|
||||
goto fail;
|
||||
|
||||
wpa_printf(MSG_DEBUG, " * flags=%08X", params->flags);
|
||||
Index: hostapd-2021-02-20-59e9794c/src/drivers/nl80211_copy.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/nl80211_copy.h
|
||||
+++ hostapd-2021-02-20-59e9794c/src/drivers/nl80211_copy.h
|
||||
--- a/src/drivers/nl80211_copy.h
|
||||
+++ b/src/drivers/nl80211_copy.h
|
||||
@@ -2608,6 +2608,10 @@ enum nl80211_commands {
|
||||
* for co-located APs and neighbor APs in ESS to be added in all
|
||||
* EMA beacons.
|
||||
@@ -154,10 +142,8 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/nl80211_copy.h
|
||||
+ NL80211_BEACON_BURST_MODE = 2,
|
||||
+};
|
||||
#endif /* __LINUX_NL80211_H */
|
||||
Index: hostapd-2021-02-20-59e9794c/hostapd/hostapd.conf
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/hostapd/hostapd.conf
|
||||
+++ hostapd-2021-02-20-59e9794c/hostapd/hostapd.conf
|
||||
--- a/hostapd/hostapd.conf
|
||||
+++ b/hostapd/hostapd.conf
|
||||
@@ -250,6 +250,9 @@ rts_threshold=-1
|
||||
# it.
|
||||
fragm_threshold=-1
|
||||
@@ -168,10 +154,8 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/hostapd.conf
|
||||
# Rate configuration
|
||||
# Default is to enable all rates supported by the hardware. This configuration
|
||||
# item allows this list be filtered so that only the listed rates will be left
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/config.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/config.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/config.c
|
||||
--- a/wpa_supplicant/config.c
|
||||
+++ b/wpa_supplicant/config.c
|
||||
@@ -2740,6 +2740,7 @@ static const struct parse_data ssid_fiel
|
||||
{ INT_RANGE(transition_disable, 0, 255) },
|
||||
{ INT_RANGE(sae_pk, 0, 2) },
|
||||
@@ -188,10 +172,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/config.c
|
||||
}
|
||||
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/config_file.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/config_file.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/config_file.c
|
||||
--- a/wpa_supplicant/config_file.c
|
||||
+++ b/wpa_supplicant/config_file.c
|
||||
@@ -888,6 +888,7 @@ static void wpa_config_write_network(FIL
|
||||
INT(disable_he);
|
||||
#endif /* CONFIG_HE_OVERRIDES */
|
||||
@@ -200,10 +182,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/config_file.c
|
||||
#undef STR
|
||||
#undef INT
|
||||
#undef INT_DEF
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/config_ssid.h
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/config_ssid.h
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/config_ssid.h
|
||||
--- a/wpa_supplicant/config_ssid.h
|
||||
+++ b/wpa_supplicant/config_ssid.h
|
||||
@@ -47,6 +47,7 @@
|
||||
#define DEFAULT_AMPDU_DENSITY -1 /* no change */
|
||||
#define DEFAULT_USER_SELECTED_SIM 1
|
||||
@@ -226,10 +206,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/config_ssid.h
|
||||
};
|
||||
|
||||
#endif /* CONFIG_SSID_H */
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/mesh.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh.c
|
||||
--- a/wpa_supplicant/mesh.c
|
||||
+++ b/wpa_supplicant/mesh.c
|
||||
@@ -668,6 +668,7 @@ int wpa_supplicant_join_mesh(struct wpa_
|
||||
params->dtim_period = ssid->dtim_period;
|
||||
else if (wpa_s->conf->dtim_period > 0)
|
||||
@@ -238,10 +216,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh.c
|
||||
params->conf.max_peer_links = wpa_s->conf->max_peer_links;
|
||||
if (ssid->mesh_rssi_threshold < DEFAULT_MESH_RSSI_THRESHOLD) {
|
||||
params->conf.rssi_threshold = ssid->mesh_rssi_threshold;
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_cli.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/wpa_cli.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_cli.c
|
||||
--- a/wpa_supplicant/wpa_cli.c
|
||||
+++ b/wpa_supplicant/wpa_cli.c
|
||||
@@ -1489,6 +1489,7 @@ static const char *network_fields[] = {
|
||||
#endif /* CONFIG_HS20 */
|
||||
"mac_addr", "pbss", "wps_disabled",
|
||||
|
||||
@@ -14,10 +14,8 @@ Signed-off-by: Muna Sinada <msinada@codeaurora.org>
|
||||
src/ap/ieee802_11.c | 15 +++++++++------
|
||||
2 files changed, 12 insertions(+), 7 deletions(-)
|
||||
|
||||
Index: hostapd-2021-02-18/src/ap/ap_config.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/ap_config.c
|
||||
+++ hostapd-2021-02-18/src/ap/ap_config.c
|
||||
--- a/src/ap/ap_config.c
|
||||
+++ b/src/ap/ap_config.c
|
||||
@@ -229,6 +229,8 @@ struct hostapd_config * hostapd_config_d
|
||||
conf->fragm_threshold = -2; /* user driver default: 2346 */
|
||||
/* Set to invalid value means do not add Power Constraint IE */
|
||||
@@ -27,7 +25,7 @@ Index: hostapd-2021-02-18/src/ap/ap_config.c
|
||||
|
||||
conf->wmm_ac_params[0] = ac_be;
|
||||
conf->wmm_ac_params[1] = ac_bk;
|
||||
@@ -1471,7 +1473,7 @@ int hostapd_config_check(struct hostapd_
|
||||
@@ -1474,7 +1476,7 @@ int hostapd_config_check(struct hostapd_
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -36,11 +34,9 @@ Index: hostapd-2021-02-18/src/ap/ap_config.c
|
||||
conf->local_pwr_constraint == -1) {
|
||||
wpa_printf(MSG_ERROR, "Cannot set Spectrum Management bit without Country and Power Constraint elements");
|
||||
return -1;
|
||||
Index: hostapd-2021-02-18/src/ap/ieee802_11.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-18.orig/src/ap/ieee802_11.c
|
||||
+++ hostapd-2021-02-18/src/ap/ieee802_11.c
|
||||
@@ -300,15 +300,18 @@ u16 hostapd_own_capab_info(struct hostap
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -343,15 +343,18 @@ u16 hostapd_own_capab_info(struct hostap
|
||||
capab |= WLAN_CAPABILITY_SHORT_SLOT_TIME;
|
||||
|
||||
/*
|
||||
|
||||
@@ -13,11 +13,9 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
src/common/ieee802_11_defs.h | 1 +
|
||||
2 files changed, 9 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/ap/ieee802_11_he.c b/src/ap/ieee802_11_he.c
|
||||
index 18436a6b336b..a78ed01a54b6 100644
|
||||
--- a/src/ap/ieee802_11_he.c
|
||||
+++ b/src/ap/ieee802_11_he.c
|
||||
@@ -226,7 +226,14 @@ u8 * hostapd_eid_he_operation(struct hostapd_data *hapd, u8 *eid)
|
||||
@@ -227,7 +227,14 @@ u8 * hostapd_eid_he_operation(struct hos
|
||||
/* 6 GHz Operation Information field */
|
||||
*pos++ = hapd->iconf->channel; /* Primary Channel */
|
||||
|
||||
@@ -33,11 +31,9 @@ index 18436a6b336b..a78ed01a54b6 100644
|
||||
if (seg1)
|
||||
*pos++ = 3;
|
||||
else
|
||||
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
|
||||
index be37c9323ae2..3c065ab27f51 100644
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -2188,6 +2188,7 @@ struct ieee80211_he_6ghz_oper_info {
|
||||
@@ -2204,6 +2204,7 @@ struct ieee80211_he_6ghz_oper_info {
|
||||
|
||||
#define HE_6GHZ_OPER_INFO_CTRL_CHAN_WIDTH_MASK (BIT(0) | BIT(1))
|
||||
#define HE_6GHZ_OPER_INFO_CTRL_DUP_BEACON BIT(2)
|
||||
@@ -45,6 +41,3 @@ index be37c9323ae2..3c065ab27f51 100644
|
||||
|
||||
/* IEEE P802.11ax/D6.0, 9.4.2.261 HE 6 GHz Band Capabilities element */
|
||||
struct ieee80211_he_6ghz_band_cap {
|
||||
--
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -16,11 +16,9 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
src/ap/ap_config.h | 12 ++++++++++++
|
||||
3 files changed, 21 insertions(+)
|
||||
|
||||
diff --git a/hostapd/config_file.c b/hostapd/config_file.c
|
||||
index d9c21a5780ba..e3be84c2ac63 100644
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -3502,6 +3502,8 @@ static int hostapd_config_fill(struct hostapd_config *conf,
|
||||
@@ -3535,6 +3535,8 @@ static int hostapd_config_fill(struct ho
|
||||
line, pos);
|
||||
return 1;
|
||||
}
|
||||
@@ -29,11 +27,9 @@ index d9c21a5780ba..e3be84c2ac63 100644
|
||||
} else if (os_strcmp(buf, "he_oper_chwidth") == 0) {
|
||||
conf->he_oper_chwidth = atoi(pos);
|
||||
} else if (os_strcmp(buf, "he_oper_centr_freq_seg0_idx") == 0) {
|
||||
diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf
|
||||
index 976582312513..7b9f11a16f80 100644
|
||||
--- a/hostapd/hostapd.conf
|
||||
+++ b/hostapd/hostapd.conf
|
||||
@@ -579,6 +579,13 @@ wmm_ac_vo_acm=0
|
||||
@@ -583,6 +583,13 @@ wmm_ac_vo_acm=0
|
||||
# Enable co-locate for a 6GHz radio
|
||||
#co_locate=0
|
||||
|
||||
@@ -47,21 +43,19 @@ index 976582312513..7b9f11a16f80 100644
|
||||
##### IEEE 802.11n related configuration ######################################
|
||||
|
||||
# ieee80211n: Whether IEEE 802.11n (HT) is enabled
|
||||
diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
|
||||
index 70cee055bbe6..6e5406f59887 100644
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -1049,6 +1049,9 @@ struct hostapd_config {
|
||||
u8 he_oper_centr_freq_seg0_idx;
|
||||
u8 he_oper_centr_freq_seg1_idx;
|
||||
@@ -1081,6 +1081,9 @@ struct hostapd_config {
|
||||
u8 he_6ghz_rx_ant_pat;
|
||||
u8 he_6ghz_tx_ant_pat;
|
||||
bool he_co_locate;
|
||||
+#define AP_TYPE_6GHZ_INDOOR_AP 0
|
||||
+#define AP_TYPE_6GHZ_STANDARD_POWER_AP 1
|
||||
+ u8 he_6ghz_reg_pwr_type;
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
|
||||
#ifdef CONFIG_IEEE80211AX
|
||||
@@ -1079,6 +1082,15 @@ struct hostapd_config {
|
||||
/* VHT enable/disable config from CHAN_SWITCH */
|
||||
@@ -1110,6 +1113,15 @@ struct hostapd_config {
|
||||
#endif /* CONFIG_AIRTIME_POLICY */
|
||||
};
|
||||
|
||||
@@ -77,6 +71,3 @@ index 70cee055bbe6..6e5406f59887 100644
|
||||
|
||||
static inline u8 hostapd_get_oper_chwidth(struct hostapd_config *conf)
|
||||
{
|
||||
--
|
||||
2.17.1
|
||||
|
||||
|
||||
@@ -20,7 +20,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
|
||||
--- a/src/ap/beacon.c
|
||||
+++ b/src/ap/beacon.c
|
||||
@@ -498,9 +498,14 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
@@ -503,9 +503,14 @@ static u8 * hostapd_gen_probe_resp(struc
|
||||
3 + sizeof(struct ieee80211_he_operation) +
|
||||
3 + sizeof(struct ieee80211_he_mu_edca_parameter_set) +
|
||||
3 + sizeof(struct ieee80211_spatial_reuse);
|
||||
@@ -36,7 +36,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
}
|
||||
#endif /* CONFIG_IEEE80211AX */
|
||||
|
||||
@@ -1388,6 +1393,15 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
@@ -1407,6 +1412,15 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
buf_len = pos - buf;
|
||||
total_len += buf_len;
|
||||
|
||||
@@ -52,7 +52,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
head = os_zalloc(total_len);
|
||||
if (!head)
|
||||
return NULL;
|
||||
@@ -1460,6 +1474,9 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
@@ -1479,6 +1493,9 @@ static u8 * hostapd_gen_fils_discovery(s
|
||||
pos += buf_len;
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
*len = pos - (u8 *) head;
|
||||
wpa_hexdump(MSG_DEBUG, "FILS Discovery frame template",
|
||||
(u8 *) head, pos - (u8 *) head);
|
||||
@@ -1534,9 +1551,14 @@ int ieee802_11_build_ap_params(struct ho
|
||||
@@ -1553,9 +1570,14 @@ int ieee802_11_build_ap_params(struct ho
|
||||
3 + sizeof(struct ieee80211_he_operation) +
|
||||
3 + sizeof(struct ieee80211_he_mu_edca_parameter_set) +
|
||||
3 + sizeof(struct ieee80211_spatial_reuse);
|
||||
@@ -80,7 +80,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -1938,8 +1938,40 @@ struct tpc_report {
|
||||
@@ -1940,8 +1940,40 @@ struct tpc_report {
|
||||
u8 link_margin;
|
||||
} STRUCT_PACKED;
|
||||
|
||||
@@ -123,7 +123,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
u8 dialog_token;
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -6817,6 +6817,30 @@ void ieee802_11_rx_from_unknown(struct h
|
||||
@@ -6872,6 +6872,30 @@ void ieee802_11_rx_from_unknown(struct h
|
||||
WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA);
|
||||
}
|
||||
|
||||
@@ -154,7 +154,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
|
||||
u8 * hostapd_eid_txpower_envelope(struct hostapd_data *hapd, u8 *eid)
|
||||
{
|
||||
@@ -6826,8 +6850,8 @@ u8 * hostapd_eid_txpower_envelope(struct
|
||||
@@ -6881,8 +6905,8 @@ u8 * hostapd_eid_txpower_envelope(struct
|
||||
struct hostapd_channel_data *chan;
|
||||
int dfs, i;
|
||||
u8 channel, tx_pwr_count, local_pwr_constraint;
|
||||
@@ -164,7 +164,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
|
||||
if (!mode)
|
||||
return eid;
|
||||
@@ -6842,6 +6866,41 @@ u8 * hostapd_eid_txpower_envelope(struct
|
||||
@@ -6897,6 +6921,41 @@ u8 * hostapd_eid_txpower_envelope(struct
|
||||
if (i == mode->num_channels)
|
||||
return eid;
|
||||
|
||||
@@ -206,7 +206,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
|
||||
switch (hostapd_get_oper_chwidth(iconf)) {
|
||||
case CHANWIDTH_USE_HT:
|
||||
if (iconf->secondary_channel == 0) {
|
||||
@@ -6914,17 +6973,9 @@ u8 * hostapd_eid_txpower_envelope(struct
|
||||
@@ -6969,17 +7028,9 @@ u8 * hostapd_eid_txpower_envelope(struct
|
||||
else
|
||||
tx_pwr = max_tx_power;
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -1070,6 +1070,7 @@ struct hostapd_config {
|
||||
@@ -1083,6 +1083,7 @@ struct hostapd_config {
|
||||
bool he_co_locate;
|
||||
#define AP_TYPE_6GHZ_INDOOR_AP 0
|
||||
#define AP_TYPE_6GHZ_STANDARD_POWER_AP 1
|
||||
@@ -32,7 +32,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
|
||||
--- a/src/ap/ieee802_11.c
|
||||
+++ b/src/ap/ieee802_11.c
|
||||
@@ -6817,6 +6817,47 @@ void ieee802_11_rx_from_unknown(struct h
|
||||
@@ -6872,6 +6872,47 @@ void ieee802_11_rx_from_unknown(struct h
|
||||
WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA);
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
static u8 * hostapd_add_tpe_info(u8 *eid, u8 tx_pwr_count,
|
||||
u8 tx_pwr_intrpn, u8 tx_pwr_cat,
|
||||
u8 tx_pwr)
|
||||
@@ -6888,14 +6929,14 @@ u8 * hostapd_eid_txpower_envelope(struct
|
||||
@@ -6943,14 +6984,14 @@ u8 * hostapd_eid_txpower_envelope(struct
|
||||
if (ap_type == AP_TYPE_6GHZ_INDOOR_AP) {
|
||||
tx_pwr_cat = REG_SUBORDINATE_CLIENT;
|
||||
/* TODO: extract psd limits from channel data */
|
||||
@@ -99,7 +99,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
|
||||
return eid;
|
||||
--- a/src/common/ieee802_11_defs.h
|
||||
+++ b/src/common/ieee802_11_defs.h
|
||||
@@ -1965,9 +1965,15 @@ enum reg_6g_client_type {
|
||||
@@ -1967,9 +1967,15 @@ enum reg_6g_client_type {
|
||||
* These tx-power macros are present till the 6G regdomains are defined to
|
||||
* support tx-power values for various client types.
|
||||
*/
|
||||
|
||||
@@ -11,7 +11,7 @@ Signed-off-by: Tamizh Chelvam <tamizhr@codeaurora.org>
|
||||
|
||||
--- a/src/drivers/driver_nl80211.c
|
||||
+++ b/src/drivers/driver_nl80211.c
|
||||
@@ -5170,7 +5170,7 @@ static int wpa_driver_nl80211_sta_add(vo
|
||||
@@ -5171,7 +5171,7 @@ static int wpa_driver_nl80211_sta_add(vo
|
||||
|
||||
if (params->he_6ghz_capab) {
|
||||
wpa_hexdump(MSG_DEBUG, " * he_6ghz_capab",
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
Index: hostapd-2021-02-20-59e9794c/src/common/hw_features_common.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/src/common/hw_features_common.c
|
||||
+++ hostapd-2021-02-20-59e9794c/src/common/hw_features_common.c
|
||||
--- a/src/common/hw_features_common.c
|
||||
+++ b/src/common/hw_features_common.c
|
||||
@@ -114,7 +114,7 @@ int allowed_ht40_channel_pair(enum hosta
|
||||
{
|
||||
int ok, first;
|
||||
@@ -11,10 +9,8 @@ Index: hostapd-2021-02-20-59e9794c/src/common/hw_features_common.c
|
||||
size_t k;
|
||||
int ht40_plus, pri_chan, sec_chan;
|
||||
|
||||
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
===================================================================
|
||||
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/wpa_supplicant.c
|
||||
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
|
||||
--- a/wpa_supplicant/wpa_supplicant.c
|
||||
+++ b/wpa_supplicant/wpa_supplicant.c
|
||||
@@ -2507,8 +2507,8 @@ void ibss_mesh_setup_freq(struct wpa_sup
|
||||
enum hostapd_hw_mode hw_mode;
|
||||
struct hostapd_hw_modes *mode = NULL;
|
||||
|
||||
@@ -9,11 +9,9 @@ Signed-off-by: Hari Chandrakanthan <haric@codeaurora.org>
|
||||
hostapd/hostapd_cli.c | 10 +--
|
||||
2 files changed, 185 insertions(+), 60 deletions(-)
|
||||
|
||||
diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
|
||||
index bbe49aa..ea1a156 100644
|
||||
--- a/hostapd/ctrl_iface.c
|
||||
+++ b/hostapd/ctrl_iface.c
|
||||
@@ -3215,75 +3215,202 @@ set:
|
||||
@@ -3283,75 +3283,202 @@ set:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -109,13 +107,13 @@ index bbe49aa..ea1a156 100644
|
||||
|
||||
- if (!ok && chan->chan != (allowed[k - 1] + 4))
|
||||
- ok = -1;
|
||||
-
|
||||
- if (ok == 1 && (mode->channels[j + 1].flag &
|
||||
- HOSTAPD_CHAN_DISABLED))
|
||||
- ok = -1;
|
||||
+ if (ok == 0)
|
||||
+ return false;
|
||||
|
||||
- if (ok == 1 && (mode->channels[j + 1].flag &
|
||||
- HOSTAPD_CHAN_DISABLED))
|
||||
- ok = -1;
|
||||
-
|
||||
- if (ok != -1) {
|
||||
- ret = os_snprintf(buf + len, buflen - len,
|
||||
- "Channel: %d : %d HT40%s\n",
|
||||
@@ -264,7 +262,7 @@ index bbe49aa..ea1a156 100644
|
||||
{
|
||||
struct hostapd_data *hapd = iface->bss[0];
|
||||
struct hostapd_hw_modes *mode;
|
||||
@@ -3295,11 +3422,12 @@ static int hostapd_ctrl_iface_ht40_allow_map(struct hostapd_iface *iface,
|
||||
@@ -3363,11 +3490,12 @@ static int hostapd_ctrl_iface_ht40_allow
|
||||
&dfs_domain);
|
||||
|
||||
if (mode->mode != HOSTAPD_MODE_IEEE80211A)
|
||||
@@ -279,7 +277,7 @@ index bbe49aa..ea1a156 100644
|
||||
}
|
||||
|
||||
static int hostapd_ctrl_iface_remove_neighbor(struct hostapd_data *hapd,
|
||||
@@ -3912,10 +4040,9 @@ static int hostapd_ctrl_iface_receive_process(struct hostapd_data *hapd,
|
||||
@@ -3982,10 +4110,9 @@ static int hostapd_ctrl_iface_receive_pr
|
||||
if (radius_server_dac_request(hapd->radius_srv, buf + 12) < 0)
|
||||
reply_len = -1;
|
||||
#endif /* RADIUS_SERVER */
|
||||
@@ -293,11 +291,9 @@ index bbe49aa..ea1a156 100644
|
||||
} else if (os_strncmp(buf, "GET_CAPABILITY ", 15) == 0) {
|
||||
reply_len = hostapd_ctrl_iface_get_capability(
|
||||
hapd, buf + 15, reply, reply_size);
|
||||
diff --git a/hostapd/hostapd_cli.c b/hostapd/hostapd_cli.c
|
||||
index 6ee8d96..14317f5 100644
|
||||
--- a/hostapd/hostapd_cli.c
|
||||
+++ b/hostapd/hostapd_cli.c
|
||||
@@ -1384,13 +1384,11 @@ static int hostapd_cli_cmd_driver_flags(struct wpa_ctrl *ctrl, int argc,
|
||||
@@ -1382,13 +1382,11 @@ static int hostapd_cli_cmd_driver_flags(
|
||||
return wpa_ctrl_command(ctrl, "DRIVER_FLAGS");
|
||||
}
|
||||
|
||||
@@ -313,7 +309,7 @@ index 6ee8d96..14317f5 100644
|
||||
#ifdef CONFIG_DPP
|
||||
|
||||
static int hostapd_cli_cmd_dpp_qr_code(struct wpa_ctrl *ctrl, int argc,
|
||||
@@ -1753,8 +1751,8 @@ static const struct hostapd_cli_cmd hostapd_cli_commands[] = {
|
||||
@@ -1749,8 +1747,8 @@ static const struct hostapd_cli_cmd host
|
||||
"=Add/Delete/Show/Clear deny MAC ACL" },
|
||||
{ "poll_sta", hostapd_cli_cmd_poll_sta, hostapd_complete_stations,
|
||||
"<addr> = poll a STA to check connectivity with a QoS null frame" },
|
||||
@@ -324,6 +320,3 @@ index 6ee8d96..14317f5 100644
|
||||
{ "req_beacon", hostapd_cli_cmd_req_beacon, NULL,
|
||||
"<addr> [req_mode=] <measurement request hexdump> = send a Beacon report request to a station" },
|
||||
{ "reload_wpa_psk", hostapd_cli_cmd_reload_wpa_psk, NULL,
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
@@ -17,11 +17,9 @@ Signed-off-by: leiwei <leiwei@codeaurora.org>
|
||||
wpa_supplicant/wpas_kay.c | 4 ++--
|
||||
9 files changed, 43 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/hostapd/config_file.c b/hostapd/config_file.c
|
||||
index 08a5bcd..39ea156 100644
|
||||
--- a/hostapd/config_file.c
|
||||
+++ b/hostapd/config_file.c
|
||||
@@ -4530,6 +4530,16 @@ static int hostapd_config_fill(struct hostapd_config *conf,
|
||||
@@ -4561,6 +4561,16 @@ static int hostapd_config_fill(struct ho
|
||||
return 1;
|
||||
}
|
||||
bss->mka_priority = mka_priority;
|
||||
@@ -38,11 +36,9 @@ index 08a5bcd..39ea156 100644
|
||||
} else if (os_strcmp(buf, "mka_cak") == 0) {
|
||||
size_t len = os_strlen(pos);
|
||||
|
||||
diff --git a/src/ap/ap_config.h b/src/ap/ap_config.h
|
||||
index 05f3c7d..ad37222 100644
|
||||
--- a/src/ap/ap_config.h
|
||||
+++ b/src/ap/ap_config.h
|
||||
@@ -850,6 +850,13 @@ struct hostapd_bss_config {
|
||||
@@ -859,6 +859,13 @@ struct hostapd_bss_config {
|
||||
int mka_priority;
|
||||
|
||||
/**
|
||||
@@ -56,11 +52,9 @@ index 05f3c7d..ad37222 100644
|
||||
* mka_ckn - MKA pre-shared CKN
|
||||
*/
|
||||
#define MACSEC_CKN_MAX_LEN 32
|
||||
diff --git a/src/ap/wpa_auth_kay.c b/src/ap/wpa_auth_kay.c
|
||||
index 46d94b4..d5341e2 100644
|
||||
--- a/src/ap/wpa_auth_kay.c
|
||||
+++ b/src/ap/wpa_auth_kay.c
|
||||
@@ -329,7 +329,8 @@ int ieee802_1x_alloc_kay_sm_hapd(struct hostapd_data *hapd,
|
||||
@@ -329,7 +329,8 @@ int ieee802_1x_alloc_kay_sm_hapd(struct
|
||||
hapd->conf->macsec_replay_protect,
|
||||
hapd->conf->macsec_replay_window,
|
||||
hapd->conf->macsec_port,
|
||||
@@ -70,8 +64,6 @@ index 46d94b4..d5341e2 100644
|
||||
hapd->own_addr);
|
||||
/* ieee802_1x_kay_init() frees kay_ctx on failure */
|
||||
if (!res)
|
||||
diff --git a/src/pae/ieee802_1x_cp.c b/src/pae/ieee802_1x_cp.c
|
||||
index cf41d8d..f0527fd 100644
|
||||
--- a/src/pae/ieee802_1x_cp.c
|
||||
+++ b/src/pae/ieee802_1x_cp.c
|
||||
@@ -20,7 +20,7 @@
|
||||
@@ -83,7 +75,7 @@ index cf41d8d..f0527fd 100644
|
||||
|
||||
/* The variable defined in clause 12 in IEEE Std 802.1X-2010 */
|
||||
enum connect_type { PENDING, UNAUTHENTICATED, AUTHENTICATED, SECURE };
|
||||
@@ -473,8 +473,8 @@ struct ieee802_1x_cp_sm * ieee802_1x_cp_sm_init(struct ieee802_1x_kay *kay)
|
||||
@@ -473,8 +473,8 @@ struct ieee802_1x_cp_sm * ieee802_1x_cp_
|
||||
sm->orx = false;
|
||||
sm->otx = false;
|
||||
|
||||
@@ -94,11 +86,9 @@ index cf41d8d..f0527fd 100644
|
||||
sm->cipher_offset = CONFIDENTIALITY_OFFSET_0;
|
||||
sm->confidentiality_offset = sm->cipher_offset;
|
||||
sm->transmit_delay = MKA_LIFE_TIME;
|
||||
diff --git a/src/pae/ieee802_1x_kay.c b/src/pae/ieee802_1x_kay.c
|
||||
index ad5a34b..04a7e93 100644
|
||||
--- a/src/pae/ieee802_1x_kay.c
|
||||
+++ b/src/pae/ieee802_1x_kay.c
|
||||
@@ -222,7 +222,14 @@ ieee802_1x_mka_dump_dist_sak_body(struct ieee802_1x_mka_dist_sak_body *body)
|
||||
@@ -222,7 +222,14 @@ ieee802_1x_mka_dump_dist_sak_body(struct
|
||||
wpa_printf(MSG_DEBUG, "\tKey Number............: %d",
|
||||
be_to_host32(body->kn));
|
||||
/* TODO: Other than GCM-AES-128 case: MACsec Cipher Suite */
|
||||
@@ -114,7 +104,7 @@ index ad5a34b..04a7e93 100644
|
||||
}
|
||||
|
||||
|
||||
@@ -3458,7 +3465,7 @@ static void kay_l2_receive(void *ctx, const u8 *src_addr, const u8 *buf,
|
||||
@@ -3456,7 +3463,7 @@ static void kay_l2_receive(void *ctx, co
|
||||
struct ieee802_1x_kay *
|
||||
ieee802_1x_kay_init(struct ieee802_1x_kay_ctx *ctx, enum macsec_policy policy,
|
||||
bool macsec_replay_protect, u32 macsec_replay_window,
|
||||
@@ -123,7 +113,7 @@ index ad5a34b..04a7e93 100644
|
||||
{
|
||||
struct ieee802_1x_kay *kay;
|
||||
|
||||
@@ -3495,7 +3502,7 @@ ieee802_1x_kay_init(struct ieee802_1x_kay_ctx *ctx, enum macsec_policy policy,
|
||||
@@ -3493,7 +3500,7 @@ ieee802_1x_kay_init(struct ieee802_1x_ka
|
||||
kay->dist_time = 0;
|
||||
|
||||
kay->pn_exhaustion = PENDING_PN_EXHAUSTION;
|
||||
@@ -132,11 +122,9 @@ index ad5a34b..04a7e93 100644
|
||||
kay->mka_algindex = DEFAULT_MKA_ALG_INDEX;
|
||||
kay->mka_version = MKA_VERSION_ID;
|
||||
|
||||
diff --git a/src/pae/ieee802_1x_kay.h b/src/pae/ieee802_1x_kay.h
|
||||
index 1d3c2ac..a3cf964 100644
|
||||
--- a/src/pae/ieee802_1x_kay.h
|
||||
+++ b/src/pae/ieee802_1x_kay.h
|
||||
@@ -240,7 +240,7 @@ u64 mka_sci_u64(struct ieee802_1x_mka_sci *sci);
|
||||
@@ -240,7 +240,7 @@ u64 mka_sci_u64(struct ieee802_1x_mka_sc
|
||||
struct ieee802_1x_kay *
|
||||
ieee802_1x_kay_init(struct ieee802_1x_kay_ctx *ctx, enum macsec_policy policy,
|
||||
bool macsec_replay_protect, u32 macsec_replay_window,
|
||||
@@ -145,11 +133,9 @@ index 1d3c2ac..a3cf964 100644
|
||||
void ieee802_1x_kay_deinit(struct ieee802_1x_kay *kay);
|
||||
|
||||
struct ieee802_1x_mka_participant *
|
||||
diff --git a/wpa_supplicant/config.c b/wpa_supplicant/config.c
|
||||
index 7e7d9bb..f723b70 100644
|
||||
--- a/wpa_supplicant/config.c
|
||||
+++ b/wpa_supplicant/config.c
|
||||
@@ -2777,6 +2777,7 @@ static const struct parse_data ssid_fields[] = {
|
||||
@@ -2712,6 +2712,7 @@ static const struct parse_data ssid_fiel
|
||||
{ INT(macsec_replay_window) },
|
||||
{ INT_RANGE(macsec_port, 1, 65534) },
|
||||
{ INT_RANGE(mka_priority, 0, 255) },
|
||||
@@ -157,11 +143,9 @@ index 7e7d9bb..f723b70 100644
|
||||
{ FUNC_KEY(mka_cak) },
|
||||
{ FUNC_KEY(mka_ckn) },
|
||||
#endif /* CONFIG_MACSEC */
|
||||
diff --git a/wpa_supplicant/config_ssid.h b/wpa_supplicant/config_ssid.h
|
||||
index b655e39..747e4d0 100644
|
||||
--- a/wpa_supplicant/config_ssid.h
|
||||
+++ b/wpa_supplicant/config_ssid.h
|
||||
@@ -915,6 +915,13 @@ struct wpa_ssid {
|
||||
@@ -920,6 +920,13 @@ struct wpa_ssid {
|
||||
int mka_priority;
|
||||
|
||||
/**
|
||||
@@ -175,11 +159,9 @@ index b655e39..747e4d0 100644
|
||||
* mka_ckn - MKA pre-shared CKN
|
||||
*/
|
||||
#define MACSEC_CKN_MAX_LEN 32
|
||||
diff --git a/wpa_supplicant/wpas_kay.c b/wpa_supplicant/wpas_kay.c
|
||||
index defd0f2..4d1ce02 100644
|
||||
--- a/wpa_supplicant/wpas_kay.c
|
||||
+++ b/wpa_supplicant/wpas_kay.c
|
||||
@@ -241,8 +241,8 @@ int ieee802_1x_alloc_kay_sm(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid)
|
||||
@@ -241,8 +241,8 @@ int ieee802_1x_alloc_kay_sm(struct wpa_s
|
||||
|
||||
res = ieee802_1x_kay_init(kay_ctx, policy, ssid->macsec_replay_protect,
|
||||
ssid->macsec_replay_window, ssid->macsec_port,
|
||||
@@ -190,6 +172,3 @@ index defd0f2..4d1ce02 100644
|
||||
/* ieee802_1x_kay_init() frees kay_ctx on failure */
|
||||
if (res == NULL)
|
||||
return -1;
|
||||
--
|
||||
2.7.4
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user