wifi-ax: backport hostapd reload support

Signed-off-by: Felix Fietkau <nbd@nbd.name>
This commit is contained in:
Felix Fietkau
2023-07-05 12:22:23 +00:00
committed by John Crispin
parent 323dc65770
commit 5b397d54ce
122 changed files with 3566 additions and 2210 deletions

View File

@@ -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

View File

@@ -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

View 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 };

View 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);
}
};

View 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));

View 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);
}
};

View File

@@ -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);
+}

View 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);

View File

@@ -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,

View File

@@ -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);

View File

@@ -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])

View File

@@ -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;

View File

@@ -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];

View File

@@ -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));

View File

@@ -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,
};

View File

@@ -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;
}

View File

@@ -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 */

View File

@@ -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;

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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,

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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.
*/

View File

@@ -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++)

View File

@@ -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" },

View File

@@ -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

View File

@@ -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 */

View File

@@ -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,

View File

@@ -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 */

View File

@@ -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,

View File

@@ -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);

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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",

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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, &params);
#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)

View File

@@ -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);
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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 */

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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, &params);
#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 */
}

View File

@@ -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);

View File

@@ -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,
&params->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 */
}

View File

@@ -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)

View File

@@ -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)
{

View File

@@ -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;

View File

@@ -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,
&params->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);

View File

@@ -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
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
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
@@ -2439,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
@@ -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 */
#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

View File

@@ -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

View File

@@ -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);

View File

@@ -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);
/**

View File

@@ -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

View File

@@ -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
}

View File

@@ -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

View File

@@ -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);

View File

@@ -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,

View File

@@ -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 */

View File

@@ -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;

View File

@@ -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

View File

@@ -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;

View File

@@ -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);

View File

@@ -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)
{

View File

@@ -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;

View File

@@ -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,
&params->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,

View File

@@ -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;

View File

@@ -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

View File

@@ -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

View File

@@ -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"
}

View File

@@ -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)

View File

@@ -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,
&params->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

View File

@@ -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;

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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>
&current_len);
- }
+ /* fallthrough */
+
- if ((true == is_6ghz_colocated(hapd)) && type != WLAN_FC_STYPE_ACTION)
- len += hostapd_eid_rnr_colocation_len(hapd, &current_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,
+ &current_len, -1, -1);
+ break;
- if ((true == is_6ghz_colocated(hapd)) && type != WLAN_FC_STYPE_ACTION)
- len += hostapd_eid_rnr_colocation_len(hapd, &current_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;

View File

@@ -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;

View File

@@ -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,
};

View File

@@ -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;

View File

@@ -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",

View File

@@ -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;
/*

View File

@@ -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

View File

@@ -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

View File

@@ -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;

View File

@@ -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.
*/

View File

@@ -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",

View File

@@ -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;

View File

@@ -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

View File

@@ -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