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 define Package/ucode-mod-nl80211
$(Package/ucode/default) $(Package/ucode/default)
TITLE+= (nl80211 module) TITLE+= (nl80211 module)
DEPENDS:=ucode +libnl-tiny +libubox DEPENDS:=ucode +libnl-tiny +libubox +kmod-mac80211
endef endef
define Package/ucode-mod-nl80211/description define Package/ucode-mod-nl80211/description

View File

@@ -84,6 +84,8 @@ ifneq ($(CONFIG_DRIVER_11AX_SUPPORT),)
HOSTAPD_IEEE80211AX:=y HOSTAPD_IEEE80211AX:=y
endif endif
CORE_DEPENDS = +libubus +libucode +ucode-mod-fs +ucode-mod-nl80211 +ucode-mod-ubus +ucode-mod-uloop +libblobmsg-json
DRIVER_MAKEOPTS= \ DRIVER_MAKEOPTS= \
CONFIG_ACS=$(CONFIG_PACKAGE_kmod-cfg80211) \ CONFIG_ACS=$(CONFIG_PACKAGE_kmod-cfg80211) \
CONFIG_DRIVER_NL80211=$(CONFIG_PACKAGE_kmod-cfg80211) \ CONFIG_DRIVER_NL80211=$(CONFIG_PACKAGE_kmod-cfg80211) \
@@ -91,6 +93,7 @@ DRIVER_MAKEOPTS= \
CONFIG_IEEE80211AC=$(HOSTAPD_IEEE80211AC) \ CONFIG_IEEE80211AC=$(HOSTAPD_IEEE80211AC) \
CONFIG_IEEE80211AX=$(HOSTAPD_IEEE80211AX) \ CONFIG_IEEE80211AX=$(HOSTAPD_IEEE80211AX) \
CONFIG_DRIVER_WEXT=$(CONFIG_DRIVER_WEXT_SUPPORT) \ CONFIG_DRIVER_WEXT=$(CONFIG_DRIVER_WEXT_SUPPORT) \
CONFIG_UCODE=y
ifeq ($(SSL_VARIANT),openssl) ifeq ($(SSL_VARIANT),openssl)
DRIVER_MAKEOPTS += CONFIG_TLS=openssl CONFIG_SAE=y DRIVER_MAKEOPTS += CONFIG_TLS=openssl CONFIG_SAE=y
@@ -142,7 +145,7 @@ define Package/hostapd/Default
SUBMENU:=WirelessAPD SUBMENU:=WirelessAPD
TITLE:=IEEE 802.1x Authenticator TITLE:=IEEE 802.1x Authenticator
URL:=http://hostap.epitest.fi/ URL:=http://hostap.epitest.fi/
DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
USERID:=network=101:network=101 USERID:=network=101:network=101
PROVIDES:=hostapd PROVIDES:=hostapd
CONFLICTS:=$(HOSTAPD_PROVIDERS) CONFLICTS:=$(HOSTAPD_PROVIDERS)
@@ -226,7 +229,7 @@ define Package/wpad/Default
CATEGORY:=Network CATEGORY:=Network
SUBMENU:=WirelessAPD SUBMENU:=WirelessAPD
TITLE:=IEEE 802.1x Auth/Supplicant TITLE:=IEEE 802.1x Auth/Supplicant
DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus DEPENDS:=$(DRV_DEPENDS) +hostapd-common $(CORE_DEPENDS)
USERID:=network=101:network=101 USERID:=network=101:network=101
URL:=http://hostap.epitest.fi/ URL:=http://hostap.epitest.fi/
PROVIDES:=hostapd wpa-supplicant PROVIDES:=hostapd wpa-supplicant
@@ -341,7 +344,7 @@ define Package/wpa-supplicant/Default
SUBMENU:=WirelessAPD SUBMENU:=WirelessAPD
TITLE:=WPA Supplicant TITLE:=WPA Supplicant
URL:=http://hostap.epitest.fi/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 USERID:=network=101:network=101
PROVIDES:=wpa-supplicant PROVIDES:=wpa-supplicant
CONFLICTS:=$(SUPPLICANT_PROVIDERS) CONFLICTS:=$(SUPPLICANT_PROVIDERS)
@@ -446,7 +449,7 @@ define Package/eapol-test/Default
SECTION:=net SECTION:=net
SUBMENU:=WirelessAPD SUBMENU:=WirelessAPD
CATEGORY:=Network CATEGORY:=Network
DEPENDS:=$(DRV_DEPENDS) +libubus DEPENDS:=$(DRV_DEPENDS) $(CORE_DEPENDS)
endef endef
define Package/eapol-test 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)) $(if $(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY))
TARGET_CFLAGS += -ffunction-sections -fdata-sections -flto 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 ifdef CONFIG_PACKAGE_kmod-cfg80211
TARGET_LDFLAGS += -lm -lnl-tiny TARGET_LDFLAGS += -lm -lnl-tiny
@@ -587,20 +590,24 @@ define Build/Compile
endef endef
define Install/hostapd 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 endef
define Install/supplicant 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 endef
define Package/hostapd-common/install 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_DATA) ./files/hostapd.sh $(1)/lib/netifd/hostapd.sh
$(INSTALL_BIN) ./files/wpad.init $(1)/etc/init.d/wpad $(INSTALL_BIN) ./files/wpad.init $(1)/etc/init.d/wpad
$(INSTALL_BIN) ./files/wps-hotplug.sh $(1)/etc/rc.button/wps $(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_acl.json $(1)/usr/share/acl.d
$(INSTALL_DATA) ./files/wpad.json $(1)/etc/capabilities $(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 endef
define Package/hostapd/install 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 --- a/hostapd/Makefile
=================================================================== +++ b/hostapd/Makefile
--- hostapd-2021-02-20-59e9794c.orig/hostapd/Makefile @@ -166,6 +166,12 @@ OBJS += ../src/common/hw_features_common
+++ hostapd-2021-02-20-59e9794c/hostapd/Makefile
@@ -166,6 +166,11 @@ OBJS += ../src/common/hw_features_common
OBJS += ../src/eapol_auth/eapol_auth_sm.o OBJS += ../src/eapol_auth/eapol_auth_sm.o
+ifdef CONFIG_UBUS +ifdef CONFIG_UBUS
+CFLAGS += -DUBUS_SUPPORT +CFLAGS += -DUBUS_SUPPORT
+OBJS += ../src/utils/uloop.o
+OBJS += ../src/ap/ubus.o +OBJS += ../src/ap/ubus.o
+LIBS += -lubox -lubus +LIBS += -lubox -lubus
+endif +endif
ifdef CONFIG_CODE_COVERAGE ifdef CONFIG_CODE_COVERAGE
CFLAGS += -O0 -fprofile-arcs -ftest-coverage CFLAGS += -O0 -fprofile-arcs -ftest-coverage
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.h --- a/src/ap/hostapd.h
=================================================================== +++ b/src/ap/hostapd.h
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.h
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
@@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
#include "utils/list.h" #include "utils/list.h"
#include "ap_config.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) \ #define OCE_STA_CFON_ENABLED(hapd) \
((hapd->conf->oce & OCE_STA_CFON) && \ ((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 { @@ -169,6 +170,7 @@ struct hostapd_data {
struct hostapd_iface *iface; struct hostapd_iface *iface;
struct hostapd_config *iconf; 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_deinit(struct hostapd_iface *iface);
void hostapd_interface_free(struct hostapd_iface *iface); void hostapd_interface_free(struct hostapd_iface *iface);
struct hostapd_iface * hostapd_alloc_iface(void); struct hostapd_iface * hostapd_alloc_iface(void);
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c --- a/src/ap/hostapd.c
=================================================================== +++ b/src/ap/hostapd.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.c
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
@@ -395,6 +395,7 @@ void hostapd_free_hapd_data(struct hosta @@ -395,6 +395,7 @@ void hostapd_free_hapd_data(struct hosta
hapd->beacon_set_done = 0; hapd->beacon_set_done = 0;
@@ -96,10 +82,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
hostapd_interface_deinit(iface); hostapd_interface_deinit(iface);
wpa_printf(MSG_DEBUG, "%s: driver=%p drv_priv=%p -> hapd_deinit", wpa_printf(MSG_DEBUG, "%s: driver=%p drv_priv=%p -> hapd_deinit",
__func__, driver, drv_priv); __func__, driver, drv_priv);
Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
=================================================================== +++ b/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
@@ -3421,13 +3421,18 @@ static void handle_auth(struct hostapd_d @@ -3421,13 +3421,18 @@ static void handle_auth(struct hostapd_d
u16 auth_alg, auth_transaction, status_code; u16 auth_alg, auth_transaction, status_code;
u16 resp = WLAN_STATUS_SUCCESS; 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); sta = ap_get_sta(hapd, mgmt->sa);
if (sta == NULL) { if (sta == NULL) {
wpa_msg(hapd->msg_ctx, MSG_DEBUG, "Station " MACSTR " trying " wpa_msg(hapd->msg_ctx, MSG_DEBUG, "Station " MACSTR " trying "
Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c --- a/src/ap/beacon.c
=================================================================== +++ b/src/ap/beacon.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/beacon.c
+++ hostapd-2021-02-20-59e9794c/src/ap/beacon.c
@@ -823,6 +823,12 @@ void handle_probe_req(struct hostapd_dat @@ -823,6 +823,12 @@ void handle_probe_req(struct hostapd_dat
u16 csa_offs[2]; u16 csa_offs[2];
size_t csa_offs_len; 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 /* TODO: verify that supp_rates contains at least one matching rate
* with AP configuration */ * with AP configuration */
Index: hostapd-2021-02-20-59e9794c/src/ap/drv_callbacks.c --- a/src/ap/drv_callbacks.c
=================================================================== +++ b/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
@@ -145,6 +145,10 @@ int hostapd_notif_assoc(struct hostapd_d @@ -145,6 +145,10 @@ int hostapd_notif_assoc(struct hostapd_d
u16 reason = WLAN_REASON_UNSPECIFIED; u16 reason = WLAN_REASON_UNSPECIFIED;
int status = WLAN_STATUS_SUCCESS; int status = WLAN_STATUS_SUCCESS;
@@ -244,10 +224,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/drv_callbacks.c
#ifdef CONFIG_P2P #ifdef CONFIG_P2P
if (elems.p2p) { if (elems.p2p) {
wpabuf_free(sta->p2p_ie); wpabuf_free(sta->p2p_ie);
Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.c --- a/src/ap/sta_info.c
=================================================================== +++ b/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
@@ -458,6 +458,7 @@ void ap_handle_timer(void *eloop_ctx, vo @@ -458,6 +458,7 @@ void ap_handle_timer(void *eloop_ctx, vo
hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211, hostapd_logger(hapd, sta->addr, HOSTAPD_MODULE_IEEE80211,
HOSTAPD_LEVEL_INFO, "deauthenticated due to " 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); ap_free_sta(hapd, sta);
break; 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); " 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); + hostapd_ubus_notify_authorized(hapd, sta);
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED "%s%s%s", + wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_CONNECTED "%s%s%s%s",
buf, ip_addr, keyid_buf); + buf, ip_addr, keyid_buf, alg_buf);
@@ -1329,6 +1332,7 @@ void ap_sta_set_authorized(struct hostap if (hapd->msg_ctx_parent &&
buf, ip_addr, keyid_buf); 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 { } else {
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED "%s", buf); wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_DISCONNECTED "%s", buf);
+ hostapd_ubus_notify(hapd, "disassoc", sta->addr); + hostapd_ubus_notify(hapd, "disassoc", sta->addr);
if (hapd->msg_ctx_parent && if (hapd->msg_ctx_parent &&
hapd->msg_ctx_parent != hapd->msg_ctx) hapd->msg_ctx_parent != hapd->msg_ctx)
Index: 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
--- hostapd-2021-02-20-59e9794c.orig/src/ap/wpa_auth_glue.c
+++ hostapd-2021-02-20-59e9794c/src/ap/wpa_auth_glue.c
@@ -265,6 +265,7 @@ static void hostapd_wpa_auth_psk_failure @@ -265,6 +265,7 @@ static void hostapd_wpa_auth_psk_failure
struct hostapd_data *hapd = ctx; struct hostapd_data *hapd = ctx;
wpa_msg(hapd->msg_ctx, MSG_INFO, AP_STA_POSSIBLE_PSK_MISMATCH MACSTR, 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 --- a/wpa_supplicant/Makefile
=================================================================== +++ b/wpa_supplicant/Makefile
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/Makefile @@ -171,6 +171,13 @@ ifdef CONFIG_EAPOL_TEST
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/Makefile
@@ -171,6 +171,12 @@ ifdef CONFIG_EAPOL_TEST
CFLAGS += -Werror -DEAPOL_TEST CFLAGS += -Werror -DEAPOL_TEST
endif endif
+ifdef CONFIG_UBUS +ifdef CONFIG_UBUS
+CFLAGS += -DUBUS_SUPPORT +CFLAGS += -DUBUS_SUPPORT
+OBJS += ubus.o +OBJS += ubus.o
+OBJS += ../src/utils/uloop.o
+LIBS += -lubox -lubus +LIBS += -lubox -lubus
+endif +endif
+ +
ifdef CONFIG_CODE_COVERAGE ifdef CONFIG_CODE_COVERAGE
CFLAGS += -O0 -fprofile-arcs -ftest-coverage CFLAGS += -O0 -fprofile-arcs -ftest-coverage
LIBS += -lgcov 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 CFLAGS += -DCONFIG_CTRL_IFACE_MIB
endif endif
OBJS += ../src/ap/ctrl_iface_ap.o OBJS += ../src/ap/ctrl_iface_ap.o
@@ -319,10 +340,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/Makefile
endif endif
CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY CFLAGS += -DEAP_SERVER -DEAP_SERVER_IDENTITY
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c --- a/wpa_supplicant/wpa_supplicant.c
=================================================================== +++ b/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
@@ -7012,6 +7012,8 @@ struct wpa_supplicant * wpa_supplicant_a @@ -7012,6 +7012,8 @@ struct wpa_supplicant * wpa_supplicant_a
} }
#endif /* CONFIG_P2P */ #endif /* CONFIG_P2P */
@@ -354,10 +373,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c
return 0; return 0;
} }
Index: 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
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/wpa_supplicant_i.h
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant_i.h
@@ -19,6 +19,7 @@ @@ -19,6 +19,7 @@
#include "wps/wps_defs.h" #include "wps/wps_defs.h"
#include "config_ssid.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 #ifdef CONFIG_MATCH_IFACE
int matched; int matched;
#endif /* CONFIG_MATCH_IFACE */ #endif /* CONFIG_MATCH_IFACE */
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wps_supplicant.c --- a/wpa_supplicant/wps_supplicant.c
=================================================================== +++ b/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
@@ -33,6 +33,7 @@ @@ -33,6 +33,7 @@
#include "p2p/p2p.h" #include "p2p/p2p.h"
#include "p2p_supplicant.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) if (wpa_s->conf->wps_cred_processing == 1)
return 0; return 0;
Index: hostapd-2021-02-20-59e9794c/hostapd/main.c --- a/wpa_supplicant/main.c
=================================================================== +++ b/wpa_supplicant/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
@@ -203,7 +203,7 @@ int main(int argc, char *argv[]) @@ -203,7 +203,7 @@ int main(int argc, char *argv[])
for (;;) { for (;;) {
@@ -447,10 +440,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/main.c
case 'o': case 'o':
params.override_driver = optarg; params.override_driver = optarg;
break; break;
Index: hostapd-2021-02-20-59e9794c/src/ap/rrm.c --- a/src/ap/rrm.c
=================================================================== +++ b/src/ap/rrm.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/rrm.c
+++ hostapd-2021-02-20-59e9794c/src/ap/rrm.c
@@ -89,6 +89,9 @@ static void hostapd_handle_beacon_report @@ -89,6 +89,9 @@ static void hostapd_handle_beacon_report
return; return;
wpa_msg(hapd->msg_ctx, MSG_INFO, BEACON_RESP_RX MACSTR " %u %02x %s", 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 --- a/src/ap/vlan_init.c
=================================================================== +++ b/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
@@ -22,6 +22,7 @@ @@ -22,6 +22,7 @@
static int vlan_if_add(struct hostapd_data *hapd, struct hostapd_vlan *vlan, static int vlan_if_add(struct hostapd_data *hapd, struct hostapd_vlan *vlan,
int existsok) 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); return hostapd_vlan_if_remove(hapd, vlan->ifname);
} }
Index: hostapd-2021-02-20-59e9794c/src/ap/dfs.c --- a/src/ap/dfs.c
=================================================================== +++ b/src/ap/dfs.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/dfs.c @@ -1226,6 +1226,8 @@ int hostapd_dfs_nop_finished(struct host
+++ hostapd-2021-02-20-59e9794c/src/ap/dfs.c
@@ -1193,6 +1193,8 @@ int hostapd_dfs_radar_detected(struct ho
"freq=%d ht_enabled=%d chan_offset=%d chan_width=%d cf1=%d cf2=%d", "freq=%d ht_enabled=%d chan_offset=%d chan_width=%d cf1=%d cf2=%d",
freq, ht_enabled, chan_offset, chan_width, cf1, cf2); 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 */ /* Proceed only if DFS is not offloaded to the driver */
if (iface->drv_flags & WPA_DRIVER_FLAGS_DFS_OFFLOAD) if (iface->drv_flags & WPA_DRIVER_FLAGS_DFS_OFFLOAD)
return 0; return 0;
Index: hostapd-2021-02-20-59e9794c/src/ap/airtime_policy.c --- a/src/ap/airtime_policy.c
=================================================================== +++ b/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
@@ -108,8 +108,14 @@ static void set_sta_weights(struct hosta @@ -108,8 +108,14 @@ static void set_sta_weights(struct hosta
{ {
struct sta_info *sta; struct sta_info *sta;
@@ -547,10 +532,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/airtime_policy.c
if (weight) if (weight)
return sta_set_airtime_weight(hapd, sta, weight); return sta_set_airtime_weight(hapd, sta, weight);
} }
Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.h --- a/src/ap/sta_info.h
=================================================================== +++ b/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
@@ -323,6 +323,7 @@ struct sta_info { @@ -323,6 +323,7 @@ struct sta_info {
#endif /* CONFIG_TESTING_OPTIONS */ #endif /* CONFIG_TESTING_OPTIONS */
#ifdef CONFIG_AIRTIME_POLICY #ifdef CONFIG_AIRTIME_POLICY
@@ -559,10 +542,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.h
struct os_reltime backlogged_until; struct os_reltime backlogged_until;
#endif /* CONFIG_AIRTIME_POLICY */ #endif /* CONFIG_AIRTIME_POLICY */
Index: hostapd-2021-02-20-59e9794c/src/ap/wnm_ap.c --- a/src/ap/wnm_ap.c
=================================================================== +++ b/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
@@ -442,7 +442,8 @@ static void ieee802_11_rx_bss_trans_mgmt @@ -442,7 +442,8 @@ static void ieee802_11_rx_bss_trans_mgmt
wpa_hexdump(MSG_DEBUG, "WNM: BSS Transition Candidate List Entries", wpa_hexdump(MSG_DEBUG, "WNM: BSS Transition Candidate List Entries",
pos, end - pos); 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", wpa_hexdump(MSG_DEBUG, "WNM: BSS Transition Candidate List Entries",
pos, end - pos); 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 --- a/hostapd/config_file.c
+++ b/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); bss->isolate = atoi(pos);
} else if (os_strcmp(buf, "ap_max_inactivity") == 0) { } else if (os_strcmp(buf, "ap_max_inactivity") == 0) {
bss->ap_max_inactivity = atoi(pos); bss->ap_max_inactivity = atoi(pos);
@@ -8,8 +8,13 @@
+ bss->config_id = os_strdup(pos); + bss->config_id = os_strdup(pos);
} else if (os_strcmp(buf, "skip_inactivity_poll") == 0) { } else if (os_strcmp(buf, "skip_inactivity_poll") == 0) {
bss->skip_inactivity_poll = atoi(pos); 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) { } 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) { } else if (os_strcmp(buf, "acs_exclude_dfs") == 0) {
conf->acs_exclude_dfs = atoi(pos); conf->acs_exclude_dfs = atoi(pos);
@@ -20,7 +25,7 @@
} else if (os_strcmp(buf, "channel") == 0) { } else if (os_strcmp(buf, "channel") == 0) {
--- a/src/ap/ap_config.c --- a/src/ap/ap_config.c
+++ b/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->radius_req_attr_sqlite);
os_free(conf->rsn_preauth_interfaces); os_free(conf->rsn_preauth_interfaces);
os_free(conf->ctrl_interface); os_free(conf->ctrl_interface);
@@ -28,7 +33,7 @@
os_free(conf->ca_cert); os_free(conf->ca_cert);
os_free(conf->server_cert); os_free(conf->server_cert);
os_free(conf->server_cert2); 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++) for (i = 0; i < conf->num_bss; i++)
hostapd_config_free_bss(conf->bss[i]); hostapd_config_free_bss(conf->bss[i]);
@@ -38,16 +43,15 @@
os_free(conf->basic_rates); os_free(conf->basic_rates);
--- a/src/ap/ap_config.h --- a/src/ap/ap_config.h
+++ b/src/ap/ap_config.h +++ b/src/ap/ap_config.h
@@ -279,6 +279,8 @@ struct hostapd_bss_config { @@ -882,6 +882,7 @@ struct hostapd_bss_config {
char vlan_bridge[IFNAMSIZ + 1]; #endif /* CONFIG_PASN */
char wds_bridge[IFNAMSIZ + 1];
unsigned int unsol_bcast_probe_resp_interval;
+ char *config_id; + 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_config {
struct hostapd_bss_config **bss, *last_bss; struct hostapd_bss_config **bss, *last_bss;
size_t num_bss; size_t num_bss;
@@ -57,7 +61,61 @@
int rts_threshold; int rts_threshold;
--- a/src/ap/hostapd.c --- a/src/ap/hostapd.c
+++ b/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; size_t i;
@@ -68,7 +126,7 @@
if (newconf->num_bss != oldconf->num_bss) if (newconf->num_bss != oldconf->num_bss)
return 1; 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 hapd_interfaces *interfaces = iface->interfaces;
struct hostapd_data *hapd = iface->bss[0]; 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) if (newconf == NULL)
return -1; return -1;
@@ -96,7 +154,7 @@
wpa_printf(MSG_DEBUG, wpa_printf(MSG_DEBUG,
"Configuration changes include interface/BSS modification - force full disable+enable sequence"); "Configuration changes include interface/BSS modification - force full disable+enable sequence");
fname = os_strdup(iface->config_fname); 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, wpa_printf(MSG_ERROR,
"Failed to enable interface on config reload"); "Failed to enable interface on config reload");
return res; return res;
@@ -121,7 +179,7 @@
} }
iface->conf = newconf; 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++) { for (j = 0; j < iface->num_bss; j++) {
hapd = iface->bss[j]; hapd = iface->bss[j];
@@ -131,10 +189,32 @@
+ } + }
+ if (newconf->bss[j]->config_id) + if (newconf->bss[j]->config_id)
+ hapd->config_id = strdup(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->iconf = newconf;
hapd->conf = newconf->bss[j]; hapd->conf = newconf->bss[j];
hostapd_reload_bss(hapd); 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->iconf = conf;
hapd->conf = bss; hapd->conf = bss;
hapd->iface = hapd_iface; hapd->iface = hapd_iface;
@@ -145,46 +225,24 @@
if (conf) if (conf)
hapd->driver = conf->driver; hapd->driver = conf->driver;
hapd->ctrl_sock = -1; hapd->ctrl_sock = -1;
--- a/src/ap/hostapd.h @@ -2392,7 +2438,7 @@ hostapd_alloc_bss_data(struct hostapd_if
+++ b/src/ap/hostapd.h }
@@ -46,7 +46,7 @@ struct mesh_conf;
struct hostapd_iface;
struct hapd_interfaces {
- int (*reload_config)(struct hostapd_iface *iface); -static void hostapd_bss_deinit(struct hostapd_data *hapd)
+ int (*reload_config)(struct hostapd_iface *iface, int reconf); +void hostapd_bss_deinit(struct hostapd_data *hapd)
struct hostapd_config * (*config_read_cb)(const char *config_fname); {
int (*ctrl_iface_init)(struct hostapd_data *hapd); if (!hapd)
void (*ctrl_iface_deinit)(struct hostapd_data *hapd); return;
@@ -156,6 +156,7 @@ struct hostapd_data { @@ -3009,7 +3055,7 @@ int hostapd_add_iface(struct hapd_interf
struct hostapd_config *iconf;
struct hostapd_bss_config *conf; if (start_ctrl_iface_bss(hapd) < 0 ||
struct hostapd_ubus_bss ubus; (hapd_iface->state == HAPD_IFACE_ENABLED &&
+ char *config_id; - hostapd_setup_bss(hapd, -1))) {
int interface_added; /* virtual interface added for this BSS */ + hostapd_setup_bss(hapd, -1, true))) {
unsigned int started:1; hostapd_cleanup(hapd);
unsigned int disabled:1; hapd_iface->bss[hapd_iface->num_bss - 1] = NULL;
@@ -604,7 +605,7 @@ struct hostapd_iface { hapd_iface->conf->num_bss--;
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,
--- a/hostapd/ctrl_iface.c --- a/hostapd/ctrl_iface.c
+++ b/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c
@@ -186,7 +186,7 @@ static int hostapd_ctrl_iface_update(str @@ -186,7 +186,7 @@ static int hostapd_ctrl_iface_update(str
@@ -207,6 +265,44 @@
wpa_printf(MSG_WARNING, "Failed to read new configuration " wpa_printf(MSG_WARNING, "Failed to read new configuration "
"file - continuing with old."); "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 --- a/src/ap/wps_hostapd.c
+++ b/src/ap/wps_hostapd.c +++ b/src/ap/wps_hostapd.c
@@ -315,7 +315,7 @@ static void wps_reload_config(void *eloo @@ -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 " wpa_printf(MSG_WARNING, "WPS: Failed to reload the updated "
"configuration"); "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 --- a/hostapd/config_file.c
+++ b/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 #ifndef CONFIG_NO_VLAN
} else if (os_strcmp(buf, "dynamic_vlan") == 0) { } else if (os_strcmp(buf, "dynamic_vlan") == 0) {
bss->ssid.dynamic_vlan = atoi(pos); bss->ssid.dynamic_vlan = atoi(pos);

View File

@@ -1,8 +1,6 @@
Index: hostapd-2021-05-22-b102f19b/hostapd/config_file.c --- a/hostapd/config_file.c
=================================================================== +++ b/hostapd/config_file.c
--- hostapd-2021-05-22-b102f19b.orig/hostapd/config_file.c @@ -2341,6 +2341,8 @@ static int hostapd_config_fill(struct ho
+++ hostapd-2021-05-22-b102f19b/hostapd/config_file.c
@@ -2357,6 +2357,8 @@ static int hostapd_config_fill(struct ho
sizeof(conf->bss[0]->iface)); sizeof(conf->bss[0]->iface));
} else if (os_strcmp(buf, "bridge") == 0) { } else if (os_strcmp(buf, "bridge") == 0) {
os_strlcpy(bss->bridge, pos, sizeof(bss->bridge)); 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) { } else if (os_strcmp(buf, "vlan_bridge") == 0) {
os_strlcpy(bss->vlan_bridge, pos, sizeof(bss->vlan_bridge)); os_strlcpy(bss->vlan_bridge, pos, sizeof(bss->vlan_bridge));
} else if (os_strcmp(buf, "wds_bridge") == 0) { } else if (os_strcmp(buf, "wds_bridge") == 0) {
Index: 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
--- hostapd-2021-05-22-b102f19b.orig/src/ap/ap_drv_ops.c
+++ hostapd-2021-05-22-b102f19b/src/ap/ap_drv_ops.c
@@ -340,8 +340,6 @@ int hostapd_set_wds_sta(struct hostapd_d @@ -340,8 +340,6 @@ int hostapd_set_wds_sta(struct hostapd_d
return -1; return -1;
if (hapd->conf->wds_bridge[0]) if (hapd->conf->wds_bridge[0])

View File

@@ -1,6 +1,6 @@
--- a/hostapd/config_file.c --- a/hostapd/config_file.c
+++ b/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); line, bss->max_num_sta, MAX_STA_COUNT);
return 1; return 1;
} }
@@ -17,7 +17,7 @@
} else if (os_strcmp(buf, "extended_key_id") == 0) { } else if (os_strcmp(buf, "extended_key_id") == 0) {
--- a/src/ap/hostapd.h --- a/src/ap/hostapd.h
+++ b/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); void hostapd_periodic_iface(struct hostapd_iface *iface);
int hostapd_owe_trans_get_info(struct hostapd_data *hapd); int hostapd_owe_trans_get_info(struct hostapd_data *hapd);
void hostapd_ocv_check_csa_sa_query(void *eloop_ctx, void *timeout_ctx); 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, int hostapd_register_probereq_cb(struct hostapd_data *hapd,
--- a/src/ap/hostapd.c --- a/src/ap/hostapd.c
+++ b/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", " since no room for additional STA",
--- a/src/ap/ap_config.h --- a/src/ap/ap_config.h
+++ b/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_num;
unsigned int track_sta_max_age; unsigned int track_sta_max_age;

View File

@@ -1,6 +1,6 @@
--- a/hostapd/config_file.c --- a/hostapd/config_file.c
+++ b/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, wpa_printf(MSG_INFO,
"Line %d: Obsolete peerkey parameter ignored", line); "Line %d: Obsolete peerkey parameter ignored", line);
#ifdef CONFIG_IEEE80211R_AP #ifdef CONFIG_IEEE80211R_AP
@@ -11,7 +11,7 @@
hexstr2bin(pos, bss->mobility_domain, hexstr2bin(pos, bss->mobility_domain,
--- a/src/ap/ap_config.h --- a/src/ap/ap_config.h
+++ b/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 { struct hostapd_bss_config {
char iface[IFNAMSIZ + 1]; char iface[IFNAMSIZ + 1];
char bridge[IFNAMSIZ + 1]; char bridge[IFNAMSIZ + 1];

View File

@@ -1,8 +1,6 @@
Index: hostapd-2021-05-22-b102f19b/src/ap/ap_config.h --- a/src/ap/ap_config.h
=================================================================== +++ b/src/ap/ap_config.h
--- hostapd-2021-05-22-b102f19b.orig/src/ap/ap_config.h @@ -276,6 +276,7 @@ struct hostapd_bss_config {
+++ hostapd-2021-05-22-b102f19b/src/ap/ap_config.h
@@ -278,6 +278,7 @@ struct hostapd_bss_config {
char iface[IFNAMSIZ + 1]; char iface[IFNAMSIZ + 1];
char bridge[IFNAMSIZ + 1]; char bridge[IFNAMSIZ + 1];
char ft_iface[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 vlan_bridge[IFNAMSIZ + 1];
char wds_bridge[IFNAMSIZ + 1]; char wds_bridge[IFNAMSIZ + 1];
Index: hostapd-2021-05-22-b102f19b/src/ap/x_snoop.c --- a/src/ap/x_snoop.c
=================================================================== +++ b/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
@@ -31,14 +31,16 @@ int x_snoop_init(struct hostapd_data *ha @@ -31,14 +31,16 @@ int x_snoop_init(struct hostapd_data *ha
return -1; return -1;
} }
@@ -57,11 +53,9 @@ Index: hostapd-2021-05-22-b102f19b/src/ap/x_snoop.c
if (l2 == NULL) { if (l2 == NULL) {
wpa_printf(MSG_DEBUG, wpa_printf(MSG_DEBUG,
"x_snoop: Failed to initialize L2 packet processing %s", "x_snoop: Failed to initialize L2 packet processing %s",
Index: hostapd-2021-05-22-b102f19b/hostapd/config_file.c --- a/hostapd/config_file.c
=================================================================== +++ b/hostapd/config_file.c
--- hostapd-2021-05-22-b102f19b.orig/hostapd/config_file.c @@ -2343,6 +2343,8 @@ static int hostapd_config_fill(struct ho
+++ hostapd-2021-05-22-b102f19b/hostapd/config_file.c
@@ -2359,6 +2359,8 @@ static int hostapd_config_fill(struct ho
os_strlcpy(bss->bridge, pos, sizeof(bss->bridge)); os_strlcpy(bss->bridge, pos, sizeof(bss->bridge));
if (!bss->wds_bridge[0]) if (!bss->wds_bridge[0])
os_strlcpy(bss->wds_bridge, pos, sizeof(bss->wds_bridge)); 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 --- a/src/ap/ieee802_1x.c
=================================================================== +++ b/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
@@ -1904,6 +1904,25 @@ static int ieee802_1x_update_vlan(struct @@ -1904,6 +1904,25 @@ static int ieee802_1x_update_vlan(struct
} }
#endif /* CONFIG_NO_VLAN */ #endif /* CONFIG_NO_VLAN */
@@ -36,11 +34,9 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_1x.c
break; break;
case RADIUS_CODE_ACCESS_REJECT: case RADIUS_CODE_ACCESS_REJECT:
sm->eap_if->aaaFail = true; sm->eap_if->aaaFail = true;
Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.h --- a/src/ap/sta_info.h
=================================================================== +++ b/src/ap/sta_info.h
--- hostapd-2021-02-20-59e9794c.orig/src/ap/sta_info.h @@ -116,6 +116,7 @@ struct sta_info {
+++ hostapd-2021-02-20-59e9794c/src/ap/sta_info.h
@@ -117,6 +117,7 @@ struct sta_info {
u8 supported_rates[WLAN_SUPP_RATES_MAX]; u8 supported_rates[WLAN_SUPP_RATES_MAX];
int supported_rates_len; int supported_rates_len;
u8 qosinfo; /* Valid when WLAN_STA_WMM is set */ 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 #ifdef CONFIG_MESH
enum mesh_plink_state plink_state; enum mesh_plink_state plink_state;
Index: hostapd-2021-02-20-59e9794c/src/radius/radius.c --- a/src/radius/radius.c
=================================================================== +++ b/src/radius/radius.c
--- hostapd-2021-02-20-59e9794c.orig/src/radius/radius.c
+++ hostapd-2021-02-20-59e9794c/src/radius/radius.c
@@ -1182,6 +1182,35 @@ radius_msg_get_cisco_keys(struct radius_ @@ -1182,6 +1182,35 @@ radius_msg_get_cisco_keys(struct radius_
return keys; 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, int radius_msg_add_mppe_keys(struct radius_msg *msg,
const u8 *req_authenticator, const u8 *req_authenticator,
Index: hostapd-2021-02-20-59e9794c/src/radius/radius.h --- a/src/radius/radius.h
=================================================================== +++ b/src/radius/radius.h
--- hostapd-2021-02-20-59e9794c.orig/src/radius/radius.h
+++ hostapd-2021-02-20-59e9794c/src/radius/radius.h
@@ -205,6 +205,10 @@ enum { @@ -205,6 +205,10 @@ enum {
RADIUS_VENDOR_ATTR_WFA_HS20_T_C_URL = 10, 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 --- a/src/ap/acs.c
=================================================================== +++ b/src/ap/acs.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/acs.c @@ -668,6 +668,10 @@ acs_find_ideal_chan_mode(struct hostapd_
+++ hostapd-2021-02-20-59e9794c/src/ap/acs.c
@@ -672,6 +672,10 @@ acs_find_ideal_chan_mode(struct hostapd_
continue; continue;
} }

View File

@@ -1,6 +1,6 @@
--- a/src/ap/ap_config.h --- a/src/ap/ap_config.h
+++ b/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; unsigned int eap_sim_db_timeout;
int eap_server_erp; /* Whether ERP is enabled on internal EAP server */ int eap_server_erp; /* Whether ERP is enabled on internal EAP server */
struct hostapd_ip_addr own_ip_addr; struct hostapd_ip_addr own_ip_addr;
@@ -10,7 +10,7 @@
int acct_interim_interval; int acct_interim_interval;
--- a/src/radius/radius_client.c --- a/src/radius/radius_client.c
+++ b/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; void *ctx;
@@ -19,7 +19,7 @@
/** /**
* conf - RADIUS client configuration (list of RADIUS servers to use) * 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_client_send - Send a RADIUS request
* @radius: RADIUS client context from radius_client_init() * @radius: RADIUS client context from radius_client_init()
* @msg: RADIUS message to be sent * @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", wpa_printf(MSG_DEBUG, "RADIUS local address: %s:%u",
inet_ntoa(claddr.sin_addr), inet_ntoa(claddr.sin_addr),
ntohs(claddr.sin_port)); ntohs(claddr.sin_port));
@@ -61,7 +61,7 @@
} }
break; break;
#ifdef CONFIG_IPV6 #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, inet_ntop(AF_INET6, &claddr6.sin6_addr,
abuf, sizeof(abuf)), abuf, sizeof(abuf)),
ntohs(claddr6.sin6_port)); ntohs(claddr6.sin6_port));
@@ -74,7 +74,7 @@
} }
--- a/src/radius/radius_client.h --- a/src/radius/radius_client.h
+++ b/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 radius_client_set_interim_error_cb(struct radius_client_data *radius,
void (*cb)(const u8 *addr, void *ctx), void (*cb)(const u8 *addr, void *ctx),
void *ctx); void *ctx);
@@ -98,7 +98,7 @@
hapd->conf->own_ip_addr.af == AF_INET && hapd->conf->own_ip_addr.af == AF_INET &&
--- a/hostapd/config_file.c --- a/hostapd/config_file.c
+++ b/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) { } else if (os_strcmp(buf, "iapp_interface") == 0) {
wpa_printf(MSG_INFO, "DEPRECATED: iapp_interface not used"); wpa_printf(MSG_INFO, "DEPRECATED: iapp_interface not used");
#endif /* CONFIG_IAPP */ #endif /* CONFIG_IAPP */

View File

@@ -1,7 +1,5 @@
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c --- a/src/ap/hostapd.c
=================================================================== +++ b/src/ap/hostapd.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.c
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
@@ -11,6 +11,8 @@ @@ -11,6 +11,8 @@
#include <sqlite3.h> #include <sqlite3.h>
#endif /* CONFIG_SQLITE */ #endif /* CONFIG_SQLITE */
@@ -10,8 +8,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
+ +
#include "utils/common.h" #include "utils/common.h"
#include "utils/eloop.h" #include "utils/eloop.h"
#include "common/ieee802_11_defs.h" #include "utils/crc32.h"
@@ -1316,6 +1318,22 @@ static int hostapd_setup_bss(struct host @@ -1259,6 +1261,22 @@ int hostapd_setup_bss(struct hostapd_dat
os_memcpy(hapd->own_addr, if_addr, ETH_ALEN); 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) 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 --- a/src/ap/sta_info.c
=================================================================== +++ b/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
@@ -717,7 +717,7 @@ struct sta_info * ap_sta_add(struct host @@ -717,7 +717,7 @@ struct sta_info * ap_sta_add(struct host
return sta; 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 --- a/src/common/hw_features_common.c
+++ b/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) center_segment0 == channel - 6)
data->center_freq1 = 5000 + center_segment0 * 5; data->center_freq1 = 5000 + center_segment0 * 5;
else { else {

View File

@@ -1,7 +1,5 @@
Index: hostapd-2021-02-20-59e9794c/src/radius/radius_das.c --- a/src/radius/radius_das.c
=================================================================== +++ b/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
@@ -48,6 +48,8 @@ static struct radius_msg * radius_das_di @@ -48,6 +48,8 @@ static struct radius_msg * radius_das_di
RADIUS_ATTR_EVENT_TIMESTAMP, RADIUS_ATTR_EVENT_TIMESTAMP,
RADIUS_ATTR_MESSAGE_AUTHENTICATOR, RADIUS_ATTR_MESSAGE_AUTHENTICATOR,

View File

@@ -10,7 +10,7 @@
unsigned int time_window; unsigned int time_window;
--- a/src/ap/hostapd.c --- a/src/ap/hostapd.c
+++ b/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; struct radius_das_conf das_conf;
os_memset(&das_conf, 0, sizeof(das_conf)); os_memset(&das_conf, 0, sizeof(das_conf));
das_conf.port = conf->radius_das_port; das_conf.port = conf->radius_das_port;

View File

@@ -1,7 +1,5 @@
Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c --- a/hostapd/config_file.c
=================================================================== +++ b/hostapd/config_file.c
--- hostapd-2021-02-20-59e9794c.orig/hostapd/config_file.c
+++ hostapd-2021-02-20-59e9794c/hostapd/config_file.c
@@ -2366,6 +2366,8 @@ static int hostapd_config_fill(struct ho @@ -2366,6 +2366,8 @@ static int hostapd_config_fill(struct ho
return 1; return 1;
} }
@@ -11,23 +9,19 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
} else if (os_strcmp(buf, "driver_params") == 0) { } else if (os_strcmp(buf, "driver_params") == 0) {
os_free(conf->driver_params); os_free(conf->driver_params);
conf->driver_params = os_strdup(pos); conf->driver_params = os_strdup(pos);
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h --- a/src/ap/ap_config.h
=================================================================== +++ b/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
@@ -279,6 +279,7 @@ struct hostapd_bss_config { @@ -279,6 +279,7 @@ struct hostapd_bss_config {
char snoop_iface[IFNAMSIZ + 1]; char snoop_iface[IFNAMSIZ + 1];
char vlan_bridge[IFNAMSIZ + 1]; char vlan_bridge[IFNAMSIZ + 1];
char wds_bridge[IFNAMSIZ + 1]; char wds_bridge[IFNAMSIZ + 1];
+ char *uci_section; + 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 --- a/src/ap/ubus.c
=================================================================== +++ b/src/ap/ubus.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ubus.c @@ -428,6 +428,9 @@ hostapd_bss_get_status(struct ubus_conte
+++ hostapd-2021-02-20-59e9794c/src/ap/ubus.c
@@ -467,6 +467,9 @@ hostapd_bss_get_status(struct ubus_conte
hapd->iface->cac_started ? hapd->iface->dfs_cac_ms / 1000 - now.sec : 0); hapd->iface->cac_started ? hapd->iface->dfs_cac_ms / 1000 - now.sec : 0);
blobmsg_close_table(&b, dfs_table); 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); ubus_send_reply(ctx, req, b.head);
return 0; return 0;
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.c --- a/src/ap/ap_config.c
=================================================================== +++ b/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
@@ -785,6 +785,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->radius_req_attr_sqlite);
os_free(conf->rsn_preauth_interfaces); os_free(conf->rsn_preauth_interfaces);

View File

@@ -1,8 +1,6 @@
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h --- a/src/drivers/driver.h
=================================================================== +++ b/src/drivers/driver.h
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver.h @@ -2175,6 +2175,10 @@ struct hostap_sta_driver_data {
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver.h
@@ -2259,6 +2259,10 @@ struct hostap_sta_driver_data {
u8 tx_mcs; u8 tx_mcs;
u8 rx_vht_nss; u8 rx_vht_nss;
u8 tx_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 { struct hostapd_sta_add_params {
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c --- a/src/drivers/driver_nl80211.c
=================================================================== +++ b/src/drivers/driver_nl80211.c
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver_nl80211.c @@ -7013,6 +7013,8 @@ static int get_sta_handler(struct nl_msg
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
@@ -7123,6 +7123,8 @@ static int get_sta_handler(struct nl_msg
[NL80211_RATE_INFO_VHT_MCS] = { .type = NLA_U8 }, [NL80211_RATE_INFO_VHT_MCS] = { .type = NLA_U8 },
[NL80211_RATE_INFO_SHORT_GI] = { .type = NLA_FLAG }, [NL80211_RATE_INFO_SHORT_GI] = { .type = NLA_FLAG },
[NL80211_RATE_INFO_VHT_NSS] = { .type = NLA_U8 }, [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), 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]); nla_get_u8(rate[NL80211_RATE_INFO_VHT_NSS]);
data->flags |= STA_DRV_DATA_TX_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] && 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]); nla_get_u8(rate[NL80211_RATE_INFO_VHT_NSS]);
data->flags |= STA_DRV_DATA_RX_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; return NL_SKIP;
} }
Index: hostapd-2021-02-20-59e9794c/src/ap/ubus.c --- a/src/ap/ubus.c
=================================================================== +++ b/src/ap/ubus.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ubus.c @@ -310,6 +310,36 @@ hostapd_bss_get_clients(struct ubus_cont
+++ hostapd-2021-02-20-59e9794c/src/ap/ubus.c
@@ -349,6 +349,36 @@ hostapd_bss_get_clients(struct ubus_cont
blobmsg_add_u32(&b, "tx", sta_driver_data.current_tx_rate * 100); blobmsg_add_u32(&b, "tx", sta_driver_data.current_tx_rate * 100);
blobmsg_close_table(&b, r); blobmsg_close_table(&b, r);
blobmsg_add_u32(&b, "signal", sta_driver_data.signal); 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 --- a/hostapd/config_file.c
=================================================================== +++ b/hostapd/config_file.c
--- hostapd-2021-02-20-59e9794c.orig/hostapd/config_file.c @@ -3344,6 +3344,8 @@ static int hostapd_config_fill(struct ho
+++ hostapd-2021-02-20-59e9794c/hostapd/config_file.c
@@ -3339,6 +3339,8 @@ static int hostapd_config_fill(struct ho
bss->ignore_broadcast_ssid = atoi(pos); bss->ignore_broadcast_ssid = atoi(pos);
} else if (os_strcmp(buf, "no_probe_resp_if_max_sta") == 0) { } else if (os_strcmp(buf, "no_probe_resp_if_max_sta") == 0) {
bss->no_probe_resp_if_max_sta = atoi(pos); 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 #ifdef CONFIG_WEP
} else if (os_strcmp(buf, "wep_default_key") == 0) { } else if (os_strcmp(buf, "wep_default_key") == 0) {
bss->ssid.wep.idx = atoi(pos); bss->ssid.wep.idx = atoi(pos);
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h --- a/src/ap/ap_config.h
=================================================================== +++ b/src/ap/ap_config.h
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_config.h @@ -459,6 +459,7 @@ struct hostapd_bss_config {
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
@@ -460,6 +460,7 @@ struct hostapd_bss_config {
int ap_max_inactivity; int ap_max_inactivity;
int ignore_broadcast_ssid; int ignore_broadcast_ssid;
int no_probe_resp_if_max_sta; 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_enabled;
int wmm_uapsd; int wmm_uapsd;
Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c --- a/src/ap/beacon.c
=================================================================== +++ b/src/ap/beacon.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/beacon.c
+++ hostapd-2021-02-20-59e9794c/src/ap/beacon.c
@@ -920,7 +920,8 @@ void handle_probe_req(struct hostapd_dat @@ -920,7 +920,8 @@ void handle_probe_req(struct hostapd_dat
} }
#endif /* CONFIG_P2P */ #endif /* CONFIG_P2P */

View File

@@ -1,7 +1,5 @@
Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
=================================================================== +++ b/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
@@ -57,6 +57,15 @@ @@ -57,6 +57,15 @@
#include "gas_query_ap.h" #include "gas_query_ap.h"
@@ -53,10 +51,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
break; break;
default: default:
hostapd_logger(hapd, mgmt->sa, HOSTAPD_MODULE_IEEE80211, hostapd_logger(hapd, mgmt->sa, HOSTAPD_MODULE_IEEE80211,
Index: hostapd-2021-02-20-59e9794c/src/ap/sta_info.h --- a/src/ap/sta_info.h
=================================================================== +++ b/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
@@ -331,6 +331,7 @@ struct sta_info { @@ -331,6 +331,7 @@ struct sta_info {
#ifdef CONFIG_PASN #ifdef CONFIG_PASN
struct pasn_data *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 --- a/src/ap/ubus.c
=================================================================== +++ b/src/ap/ubus.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ubus.c @@ -340,6 +340,9 @@ hostapd_bss_get_clients(struct ubus_cont
+++ hostapd-2021-02-20-59e9794c/src/ap/ubus.c
@@ -379,6 +379,9 @@ hostapd_bss_get_clients(struct ubus_cont
blobmsg_add_u32(&b, "tx", sta_driver_data.tx_mcs); blobmsg_add_u32(&b, "tx", sta_driver_data.tx_mcs);
} }
blobmsg_close_table(&b, r); blobmsg_close_table(&b, r);
@@ -79,7 +73,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ubus.c
} }
hostapd_parse_capab_blobmsg(sta); 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) if (hapd->conf->uci_section)
blobmsg_add_string(&b, "uci_section", 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); ubus_send_reply(ctx, req, b.head);
return 0; return 0;
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.h --- a/src/ap/hostapd.h
=================================================================== +++ b/src/ap/hostapd.h
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.h @@ -452,6 +452,7 @@ struct hostapd_data {
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
@@ -446,6 +446,7 @@ struct hostapd_data {
#ifdef CONFIG_CTRL_IFACE_UDP #ifdef CONFIG_CTRL_IFACE_UDP
unsigned char ctrl_iface_cookie[CTRL_IFACE_COOKIE_LEN]; unsigned char ctrl_iface_cookie[CTRL_IFACE_COOKIE_LEN];
#endif /* CONFIG_CTRL_IFACE_UDP */ #endif /* CONFIG_CTRL_IFACE_UDP */

View File

@@ -1,8 +1,6 @@
Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c --- a/hostapd/config_file.c
=================================================================== +++ b/hostapd/config_file.c
--- hostapd-2021-02-20-59e9794c.orig/hostapd/config_file.c @@ -2465,6 +2465,8 @@ static int hostapd_config_fill(struct ho
+++ hostapd-2021-02-20-59e9794c/hostapd/config_file.c
@@ -2458,6 +2458,8 @@ static int hostapd_config_fill(struct ho
conf->ieee80211d = atoi(pos); conf->ieee80211d = atoi(pos);
} else if (os_strcmp(buf, "ieee80211h") == 0) { } else if (os_strcmp(buf, "ieee80211h") == 0) {
conf->ieee80211h = atoi(pos); 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) { } else if (os_strcmp(buf, "ieee8021x") == 0) {
bss->ieee802_1x = atoi(pos); bss->ieee802_1x = atoi(pos);
} else if (os_strcmp(buf, "eapol_version") == 0) { } else if (os_strcmp(buf, "eapol_version") == 0) {
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h --- a/src/ap/ap_config.h
=================================================================== +++ b/src/ap/ap_config.h
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_config.h @@ -981,6 +981,7 @@ struct hostapd_config {
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
@@ -979,6 +979,7 @@ struct hostapd_config {
int ieee80211d; int ieee80211d;
int ieee80211h; /* DFS */ 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 * Local power constraint is an octet encoded as an unsigned integer in
Index: hostapd-2021-02-20-59e9794c/src/ap/dfs.c --- a/src/ap/dfs.c
=================================================================== +++ b/src/ap/dfs.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/dfs.c
+++ hostapd-2021-02-20-59e9794c/src/ap/dfs.c
@@ -18,6 +18,8 @@ @@ -18,6 +18,8 @@
#include "drivers/driver.h" #include "drivers/driver.h"
#include "dfs.h" #include "dfs.h"
@@ -120,7 +114,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/dfs.c
/* Perform channel switch/CSA */ /* Perform channel switch/CSA */
channel = dfs_get_valid_channel(iface, &secondary_channel, channel = dfs_get_valid_channel(iface, &secondary_channel,
&oper_centr_freq_seg0_idx, &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) if (!res)
return 0; 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 */ /* Skip if reported radar event not overlapped our channels */
res = dfs_are_channels_overlapped(iface, freq, chan_width, cf1, cf2); res = dfs_are_channels_overlapped(iface, freq, chan_width, cf1, cf2);
if (!res) if (!res)
Index: hostapd-2021-02-20-59e9794c/src/ap/dfs.h --- a/src/ap/dfs.h
=================================================================== +++ b/src/ap/dfs.h
--- hostapd-2021-02-20-59e9794c.orig/src/ap/dfs.h
+++ hostapd-2021-02-20-59e9794c/src/ap/dfs.h
@@ -9,6 +9,11 @@ @@ -9,6 +9,11 @@
#ifndef DFS_H #ifndef DFS_H
#define 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_handle_dfs(struct hostapd_iface *iface);
int hostapd_dfs_complete_cac(struct hostapd_iface *iface, int success, int freq, int hostapd_dfs_complete_cac(struct hostapd_iface *iface, int success, int freq,
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c --- a/src/ap/hostapd.c
=================================================================== +++ b/src/ap/hostapd.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.c @@ -2901,6 +2901,7 @@ int hostapd_disable_iface(struct hostapd
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
@@ -2866,6 +2866,7 @@ int hostapd_disable_iface(struct hostapd
hostapd_cleanup_cs_params(hapd_iface->bss[j]); hostapd_cleanup_cs_params(hapd_iface->bss[j]);
#endif /* NEED_AP_MLME */ #endif /* NEED_AP_MLME */

View File

@@ -8,7 +8,7 @@
#include "wps_hostapd.h" #include "wps_hostapd.h"
#include "ap_drv_ops.h" #include "ap_drv_ops.h"
#include "ap_config.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 * Try to re-enable interface if the driver stopped it
* when the interface got disabled. * when the interface got disabled.
*/ */

View File

@@ -1,6 +1,6 @@
--- a/src/ap/wpa_auth.c --- a/src/ap/wpa_auth.c
+++ b/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); mic_len, key_data_length);
wpa_hexdump(MSG_MSGDUMP, wpa_hexdump(MSG_MSGDUMP,
"WPA: EAPOL-Key header (ending before Key MIC)", "WPA: EAPOL-Key header (ending before Key MIC)",
@@ -9,7 +9,7 @@
wpa_hexdump(MSG_MSGDUMP, "WPA: EAPOL-Key Key MIC", wpa_hexdump(MSG_MSGDUMP, "WPA: EAPOL-Key Key MIC",
mic, mic_len); mic, mic_len);
if (key_data_length > data_len - sizeof(*hdr) - keyhdrlen) { 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); idx = bitfield_get_first_zero(wpa_auth->ip_pool);
if (idx >= 0) { if (idx >= 0) {
u32 start = WPA_GET_BE32(wpa_auth->conf.ip_addr_start); u32 start = WPA_GET_BE32(wpa_auth->conf.ip_addr_start);
@@ -20,7 +20,7 @@
"P2P: Assigned IP address %u.%u.%u.%u to " "P2P: Assigned IP address %u.%u.%u.%u to "
--- a/src/crypto/tls_openssl.c --- a/src/crypto/tls_openssl.c
+++ b/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) if (conf && conf->openssl_ciphers)
ciphers = conf->openssl_ciphers; ciphers = conf->openssl_ciphers;
else else
@@ -109,7 +109,7 @@
bitfield_free(bf); bitfield_free(bf);
--- a/wpa_supplicant/rrm.c --- a/wpa_supplicant/rrm.c
+++ b/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++) for (i = 0; i < slen; i++)

View File

@@ -1,6 +1,6 @@
--- a/hostapd/ctrl_iface.c --- a/hostapd/ctrl_iface.c
+++ b/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c
@@ -3112,6 +3112,92 @@ set: @@ -3246,6 +3246,92 @@ set:
return ret; return ret;
} }
@@ -93,7 +93,7 @@
static int hostapd_ctrl_iface_remove_neighbor(struct hostapd_data *hapd, static int hostapd_ctrl_iface_remove_neighbor(struct hostapd_data *hapd,
char *buf) 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) if (radius_server_dac_request(hapd->radius_srv, buf + 12) < 0)
reply_len = -1; reply_len = -1;
#endif /* RADIUS_SERVER */ #endif /* RADIUS_SERVER */
@@ -106,7 +106,7 @@
hapd, buf + 15, reply, reply_size); hapd, buf + 15, reply, reply_size);
--- a/hostapd/hostapd_cli.c --- a/hostapd/hostapd_cli.c
+++ b/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"); return wpa_ctrl_command(ctrl, "DRIVER_FLAGS");
} }
@@ -119,7 +119,7 @@
#ifdef CONFIG_DPP #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" }, "=Add/Delete/Show/Clear deny MAC ACL" },
{ "poll_sta", hostapd_cli_cmd_poll_sta, hostapd_complete_stations, { "poll_sta", hostapd_cli_cmd_poll_sta, hostapd_complete_stations,
"<addr> = poll a STA to check connectivity with a QoS null frame" }, "<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; 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)) if (os_snprintf_error(buflen - len, ret))
return len; return len;
len += ret; len += ret;
@@ -178,7 +178,7 @@ Date: Thu Dec 6 15:17:46 2018 +0800
} }
if (iface->conf->ieee80211n && !hapd->conf->disable_11n) { 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)) if (os_snprintf_error(buflen - len, ret))
return len; return len;
len += ret; len += ret;
@@ -214,7 +214,7 @@ Date: Thu Dec 6 15:17:46 2018 +0800
ret = os_snprintf(buf + len, buflen - len, ret = os_snprintf(buf + len, buflen - len,
--- a/src/ap/sta_info.h --- a/src/ap/sta_info.h
+++ b/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 /* Maximum number of supported rates (from both Supported Rates and Extended
* Supported Rates IEs). */ * Supported Rates IEs). */
#define WLAN_SUPP_RATES_MAX 32 #define WLAN_SUPP_RATES_MAX 32

View File

@@ -1,6 +1,6 @@
--- a/hostapd/config_file.c --- a/hostapd/config_file.c
+++ b/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) { } else if (os_strcmp(buf, "wowlan_triggers") == 0) {
os_free(bss->wowlan_triggers); os_free(bss->wowlan_triggers);
bss->wowlan_triggers = os_strdup(pos); bss->wowlan_triggers = os_strdup(pos);
@@ -11,7 +11,7 @@
size_t len = os_strlen(pos); size_t len = os_strlen(pos);
--- a/src/ap/ap_config.h --- a/src/ap/ap_config.h
+++ b/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; } *acs_chan_bias;
unsigned int num_acs_chan_bias; unsigned int num_acs_chan_bias;
#endif /* CONFIG_ACS */ #endif /* CONFIG_ACS */
@@ -21,7 +21,7 @@
struct wpabuf *civic; struct wpabuf *civic;
--- a/src/ap/hw_features.c --- a/src/ap/hw_features.c
+++ b/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)) !ieee80211ac_supported_vht_capab(iface))
return -1; return -1;
#endif /* CONFIG_IEEE80211AC */ #endif /* CONFIG_IEEE80211AC */

View File

@@ -12,11 +12,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
src/drivers/nl80211_copy.h | 75 +++++++++++++++++++++++----------------------- src/drivers/nl80211_copy.h | 75 +++++++++++++++++++++++-----------------------
1 file changed, 37 insertions(+), 38 deletions(-) 1 file changed, 37 insertions(+), 38 deletions(-)
Index: hostapd-2021-02-08/src/drivers/nl80211_copy.h --- a/src/drivers/nl80211_copy.h
=================================================================== +++ b/src/drivers/nl80211_copy.h
--- hostapd-2021-02-08.orig/src/drivers/nl80211_copy.h @@ -4570,6 +4570,10 @@ enum nl80211_chan_width {
+++ hostapd-2021-02-08/src/drivers/nl80211_copy.h
@@ -4541,6 +4541,10 @@ enum nl80211_chan_width {
NL80211_CHAN_WIDTH_4, NL80211_CHAN_WIDTH_4,
NL80211_CHAN_WIDTH_8, NL80211_CHAN_WIDTH_8,
NL80211_CHAN_WIDTH_16, 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 --- a/src/ap/dfs.c
=================================================================== +++ b/src/ap/dfs.c
--- hostapd-2021-02-08.orig/src/ap/dfs.c @@ -1069,13 +1069,17 @@ static int hostapd_dfs_testmode_set_beac
+++ hostapd-2021-02-08/src/ap/dfs.c
@@ -1051,13 +1051,17 @@ static int hostapd_dfs_testmode_set_beac
iface->conf->hw_mode, iface->conf->hw_mode,
iface->freq, iface->freq,
iface->conf->channel, iface->conf->channel,

View File

@@ -11,11 +11,9 @@ Signed-off-by: Miles Hu <milehu@codeaurora.org>
src/common/ieee802_11_defs.h | 12 +++++++++- src/common/ieee802_11_defs.h | 12 +++++++++-
2 files changed, 64 insertions(+), 1 deletion(-) 2 files changed, 64 insertions(+), 1 deletion(-)
Index: hostapd-2021-02-08/src/ap/hw_features.c --- a/src/ap/hw_features.c
=================================================================== +++ b/src/ap/hw_features.c
--- hostapd-2021-02-08.orig/src/ap/hw_features.c @@ -678,8 +678,63 @@ static int ieee80211ac_supported_vht_cap
+++ hostapd-2021-02-08/src/ap/hw_features.c
@@ -660,8 +660,63 @@ static int ieee80211ac_supported_vht_cap
#ifdef CONFIG_IEEE80211AX #ifdef CONFIG_IEEE80211AX
@@ -79,10 +77,8 @@ Index: hostapd-2021-02-08/src/ap/hw_features.c
return 1; return 1;
} }
#endif /* CONFIG_IEEE80211AX */ #endif /* CONFIG_IEEE80211AX */
Index: hostapd-2021-02-08/src/common/ieee802_11_defs.h --- a/src/common/ieee802_11_defs.h
=================================================================== +++ b/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
@@ -2233,7 +2233,10 @@ struct ieee80211_spatial_reuse { @@ -2233,7 +2233,10 @@ struct ieee80211_spatial_reuse {
/* HE Capabilities Information defines */ /* HE Capabilities Information defines */

View File

@@ -1,6 +1,6 @@
--- a/wpa_supplicant/wpa_supplicant.c --- a/wpa_supplicant/wpa_supplicant.c
+++ b/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, if (hostapd_set_freq_params(&vht_freq, mode->mode, freq->freq,
freq->channel, ssid->enable_edmg, freq->channel, ssid->enable_edmg,
ssid->edmg_channel, freq->ht_enabled, ssid->edmg_channel, freq->ht_enabled,

View File

@@ -1,6 +1,6 @@
--- a/hostapd/config_file.c --- a/hostapd/config_file.c
+++ b/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 #ifdef CONFIG_MBO
} else if (os_strcmp(buf, "mbo") == 0) { } else if (os_strcmp(buf, "mbo") == 0) {
bss->mbo_enabled = atoi(pos); bss->mbo_enabled = atoi(pos);
@@ -17,7 +17,7 @@
#define PARSE_TEST_PROBABILITY(_val) \ #define PARSE_TEST_PROBABILITY(_val) \
--- a/hostapd/ctrl_iface.c --- a/hostapd/ctrl_iface.c
+++ b/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) { if (pos) {
pos += 10; pos += 10;
req_mode |= WNM_BSS_TM_REQ_BSS_TERMINATION_INCLUDED; req_mode |= WNM_BSS_TM_REQ_BSS_TERMINATION_INCLUDED;
@@ -31,7 +31,7 @@
end = os_strchr(pos, ','); end = os_strchr(pos, ',');
if (end == NULL) { if (end == NULL) {
wpa_printf(MSG_DEBUG, "Invalid bss_term data"); 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)); WPA_PUT_LE16(&bss_term_dur[10], atoi(end));
} }
@@ -42,7 +42,7 @@
return -1; return -1;
--- a/src/ap/ap_config.h --- a/src/ap/ap_config.h
+++ b/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 * - Set BIT(2) to enable OCE in AP mode
*/ */
unsigned int oce; 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.disassoc_timer = host_to_le16(0);
mgmt->u.action.u.bss_tm_req.validity_interval = 1; mgmt->u.action.u.bss_tm_req.validity_interval = 1;
pos = mgmt->u.action.u.bss_tm_req.variable; 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), le_to_host16(mgmt->u.action.u.bss_tm_req.disassoc_timer),
mgmt->u.action.u.bss_tm_req.validity_interval); 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 +++ src/ap/hostapd.c | 3 +++
1 file changed, 3 insertions(+) 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 --- a/src/ap/hostapd.c
+++ b/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) if (!iface || !iface->freq || hapd->csa_in_progress)
return -1; return -1;
@@ -25,6 +23,3 @@ index be9ef82..346d83c 100644
switch (settings->freq_params.bandwidth) { switch (settings->freq_params.bandwidth) {
case 80: case 80:
if (settings->freq_params.center_freq2) 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 --- a/wpa_supplicant/config_ssid.h
=================================================================== +++ b/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
@@ -1121,7 +1121,6 @@ struct wpa_ssid { @@ -1121,7 +1121,6 @@ struct wpa_ssid {
* FT initial mobility domain association. * 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 * beacon_prot - Whether Beacon protection is enabled
* *
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c --- a/wpa_supplicant/wpa_supplicant.c
=================================================================== +++ b/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
@@ -2521,16 +2521,14 @@ void ibss_mesh_setup_freq(struct wpa_sup @@ -2521,16 +2521,14 @@ void ibss_mesh_setup_freq(struct wpa_sup
return; return;

View File

@@ -1,6 +1,6 @@
--- a/hostapd/config_file.c --- a/hostapd/config_file.c
+++ b/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); conf->he_phy_capab.he_su_beamformee = atoi(pos);
} else if (os_strcmp(buf, "he_mu_beamformer") == 0) { } else if (os_strcmp(buf, "he_mu_beamformer") == 0) {
conf->he_phy_capab.he_mu_beamformer = atoi(pos); conf->he_phy_capab.he_mu_beamformer = atoi(pos);
@@ -11,7 +11,7 @@
conf->he_op.he_bss_color_disabled = 0; conf->he_op.he_bss_color_disabled = 0;
--- a/hostapd/hostapd.conf --- a/hostapd/hostapd.conf
+++ b/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 # 1 = supported
#he_mu_beamformer=1 #he_mu_beamformer=1
@@ -26,7 +26,7 @@
--- a/src/ap/ap_config.c --- a/src/ap/ap_config.c
+++ b/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; HE_OPERATION_RTS_THRESHOLD_OFFSET;
/* Set default basic MCS/NSS set to single stream MCS 0-7 */ /* Set default basic MCS/NSS set to single stream MCS 0-7 */
conf->he_op.he_basic_mcs_nss_set = 0xfffc; conf->he_op.he_basic_mcs_nss_set = 0xfffc;
@@ -37,7 +37,7 @@
conf->he_op.he_bss_color = 1; conf->he_op.he_bss_color = 1;
--- a/src/ap/ap_config.h --- a/src/ap/ap_config.h
+++ b/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_beamformer;
bool he_su_beamformee; bool he_su_beamformee;
bool he_mu_beamformer; bool he_mu_beamformer;
@@ -47,7 +47,7 @@
/** /**
--- a/src/ap/hw_features.c --- a/src/ap/hw_features.c
+++ b/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_NON_SRG_OFFSET_PRESENT |
SPATIAL_REUSE_SRG_INFORMATION_PRESENT)))); SPATIAL_REUSE_SRG_INFORMATION_PRESENT))));
@@ -63,7 +63,7 @@
HE_MACCAP_TWT_RESPONDER, HE_MACCAP_TWT_RESPONDER_IDX, HE_MACCAP_TWT_RESPONDER, HE_MACCAP_TWT_RESPONDER_IDX,
--- a/src/ap/ieee802_11_he.c --- a/src/ap/ieee802_11_he.c
+++ b/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] &= cap->he_phy_capab_info[HE_PHYCAP_MU_BEAMFORMER_CAPAB_IDX] &=
~HE_PHYCAP_MU_BEAMFORMER_CAPAB; ~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 --- a/src/ap/wpa_auth.c
+++ b/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) \ #define RSN_SUITE_ARG(s) \
--- a/src/rsn_supp/wpa.c --- a/src/rsn_supp/wpa.c
+++ b/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) { switch (sm->key_mgmt) {
--- a/src/drivers/driver_nl80211.c --- a/src/drivers/driver_nl80211.c
+++ b/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) { if (params->he_capab) {
wpa_hexdump(MSG_DEBUG, " * 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 ++++---- wpa_supplicant/op_classes.c | 8 ++++----
4 files changed, 15 insertions(+), 14 deletions(-) 4 files changed, 15 insertions(+), 14 deletions(-)
Index: hostapd-2021-02-20/src/drivers/driver_nl80211.c --- a/src/drivers/driver_nl80211.c
=================================================================== +++ b/src/drivers/driver_nl80211.c
--- hostapd-2021-02-20.orig/src/drivers/driver_nl80211.c @@ -10923,7 +10923,8 @@ static int add_acs_ch_list(struct nl_msg
+++ hostapd-2021-02-20/src/drivers/driver_nl80211.c
@@ -10936,7 +10936,8 @@ static int add_acs_ch_list(struct nl_msg
* compatibility. * compatibility.
*/ */
if (!(freq >= 2412 && freq <= 2484) && if (!(freq >= 2412 && freq <= 2484) &&
@@ -34,10 +32,8 @@ Index: hostapd-2021-02-20/src/drivers/driver_nl80211.c
continue; continue;
hw_mode = ieee80211_freq_to_chan(freq, &ch_list[num_channels]); hw_mode = ieee80211_freq_to_chan(freq, &ch_list[num_channels]);
if (hw_mode != NUM_HOSTAPD_MODES) if (hw_mode != NUM_HOSTAPD_MODES)
Index: hostapd-2021-02-20/wpa_supplicant/op_classes.c --- a/wpa_supplicant/op_classes.c
=================================================================== +++ b/wpa_supplicant/op_classes.c
--- hostapd-2021-02-20.orig/wpa_supplicant/op_classes.c
+++ hostapd-2021-02-20/wpa_supplicant/op_classes.c
@@ -270,7 +270,7 @@ static int wpas_op_class_supported(struc @@ -270,7 +270,7 @@ static int wpas_op_class_supported(struc
if (f == 0) if (f == 0)
@@ -56,11 +52,9 @@ Index: hostapd-2021-02-20/wpa_supplicant/op_classes.c
return 0; return 0;
if (op_class->op_class >= 81 && op_class->op_class <= 84 && !freq2) if (op_class->op_class >= 81 && op_class->op_class <= 84 && !freq2)
return 0; return 0;
Index: hostapd-2021-02-20/src/ap/acs.c --- a/src/ap/acs.c
=================================================================== +++ b/src/ap/acs.c
--- hostapd-2021-02-20.orig/src/ap/acs.c @@ -366,40 +366,44 @@ acs_survey_chan_interference_factor(stru
+++ hostapd-2021-02-20/src/ap/acs.c
@@ -372,40 +372,44 @@ acs_survey_chan_interference_factor(stru
} }
@@ -115,7 +109,7 @@ Index: hostapd-2021-02-20/src/ap/acs.c
return 1; return 1;
return 0; 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 /* HT40 on 5 GHz has a limited set of primary channels as per
* 11n Annex J */ * 11n Annex J */
if (mode->mode == HOSTAPD_MODE_IEEE80211A && if (mode->mode == HOSTAPD_MODE_IEEE80211A &&
@@ -131,7 +125,7 @@ Index: hostapd-2021-02-20/src/ap/acs.c
chan->chan); chan->chan);
continue; 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)) { (iface->conf->ieee80211ac || iface->conf->ieee80211ax)) {
if (hostapd_get_oper_chwidth(iface->conf) == if (hostapd_get_oper_chwidth(iface->conf) ==
CHANWIDTH_80MHZ && CHANWIDTH_80MHZ &&
@@ -154,7 +148,7 @@ Index: hostapd-2021-02-20/src/ap/acs.c
chan->chan); chan->chan);
continue; 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; u32 bw;
struct hostapd_hw_modes *mode; struct hostapd_hw_modes *mode;
@@ -178,7 +172,7 @@ Index: hostapd-2021-02-20/src/ap/acs.c
n_chans = 2; n_chans = 2;
if (iface->conf->ieee80211ac || iface->conf->ieee80211ax) { 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); 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. */ /* TODO: VHT/HE80+80. Update acs_adjust_center_freq() too. */
wpa_printf(MSG_DEBUG, wpa_printf(MSG_DEBUG,
Index: hostapd-2021-02-20/src/ap/hostapd.c --- a/src/ap/hostapd.c
=================================================================== +++ b/src/ap/hostapd.c
--- hostapd-2021-02-20.orig/src/ap/hostapd.c @@ -1800,6 +1800,10 @@ static int setup_interface2(struct hosta
+++ hostapd-2021-02-20/src/ap/hostapd.c
@@ -1691,6 +1691,10 @@ static int setup_interface2(struct hosta
ch_width = op_class_to_ch_width(iface->conf->op_class); ch_width = op_class_to_ch_width(iface->conf->op_class);
hostapd_set_oper_chwidth(iface->conf, ch_width); 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); ret = hostapd_select_hw_mode(iface);
Index: hostapd-2021-02-20/src/ap/beacon.c --- a/src/ap/beacon.c
=================================================================== +++ b/src/ap/beacon.c
--- hostapd-2021-02-20.orig/src/ap/beacon.c
+++ hostapd-2021-02-20/src/ap/beacon.c
@@ -481,8 +481,10 @@ static u8 * hostapd_gen_probe_resp(struc @@ -481,8 +481,10 @@ static u8 * hostapd_gen_probe_resp(struc
resp->frame_control = IEEE80211_FC(WLAN_FC_TYPE_MGMT, 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->sa, hapd->own_addr, ETH_ALEN);
os_memcpy(resp->bssid, hapd->own_addr, ETH_ALEN); os_memcpy(resp->bssid, hapd->own_addr, ETH_ALEN);
Index: hostapd-2021-02-20/wpa_supplicant/mesh.c --- a/wpa_supplicant/mesh.c
=================================================================== +++ b/wpa_supplicant/mesh.c
--- hostapd-2021-02-20.orig/wpa_supplicant/mesh.c @@ -649,6 +649,8 @@ int wpa_supplicant_join_mesh(struct wpa_
+++ hostapd-2021-02-20/wpa_supplicant/mesh.c
@@ -644,6 +644,8 @@ int wpa_supplicant_join_mesh(struct wpa_
params->flags |= WPA_DRIVER_MESH_FLAG_SAE_AUTH; params->flags |= WPA_DRIVER_MESH_FLAG_SAE_AUTH;
params->flags |= WPA_DRIVER_MESH_FLAG_AMPE; params->flags |= WPA_DRIVER_MESH_FLAG_AMPE;
wpa_s->conf->user_mpm = 1; wpa_s->conf->user_mpm = 1;

View File

@@ -1,6 +1,6 @@
--- a/src/ap/drv_callbacks.c --- a/src/ap/drv_callbacks.c
+++ b/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)); ifname, MAC2STR(addr));
} }
@@ -40,7 +40,7 @@
#ifdef CONFIG_OWE #ifdef CONFIG_OWE
static int hostapd_notif_update_dh_ie(struct hostapd_data *hapd, 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.ifname,
data->wds_sta_interface.sta_addr); data->wds_sta_interface.sta_addr);
break; break;
@@ -52,7 +52,7 @@
break; break;
--- a/src/drivers/driver.h --- a/src/drivers/driver.h
+++ b/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. * is required to provide more details of the frame.
*/ */
EVENT_UNPROT_BEACON, 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 { struct unprot_beacon {
const u8 *sa; const u8 *sa;
} unprot_beacon; } unprot_beacon;
@@ -87,7 +87,7 @@
/** /**
--- a/src/drivers/driver_nl80211_event.c --- a/src/drivers/driver_nl80211_event.c
+++ b/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); 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, static void nl80211_control_port_frame(struct wpa_driver_nl80211_data *drv,
struct nlattr **tb) 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); 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, static void do_process_drv_event(struct i802_bss *bss, int cmd,
struct nlattr **tb) 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_ACK],
tb[NL80211_ATTR_COOKIE]); tb[NL80211_ATTR_COOKIE]);
break; break;
@@ -143,9 +143,9 @@
"(cmd=%d)", cmd); "(cmd=%d)", cmd);
--- a/src/drivers/nl80211_copy.h --- a/src/drivers/nl80211_copy.h
+++ b/src/drivers/nl80211_copy.h +++ b/src/drivers/nl80211_copy.h
@@ -1170,6 +1170,11 @@ @@ -1182,6 +1182,11 @@
* includes the contents of the frame. %NL80211_ATTR_ACK flag is included * passed using %NL80211_ATTR_SAR_SPEC. %NL80211_ATTR_WIPHY is used to
* if the recipient acknowledged the frame. * specify the wiphy index to be applied to.
* *
+ * @NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS: Updated MU-EDCA parameters from driver. + * @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 + * 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_MAX: highest used command number
* @__NL80211_CMD_AFTER_LAST: internal use * @__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, + NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS,
/* add new commands above here */ /* add new commands above here */
/* used to define NL80211_CMD_MAX below */ /* used to define NL80211_CMD_MAX below */
@@ -2505,6 +2511,9 @@ enum nl80211_commands { @@ -2557,6 +2563,9 @@ enum nl80211_commands {
* @NL80211_ATTR_HE_6GHZ_CAPABILITY: HE 6 GHz Band Capability element (from * disassoc events to indicate that an immediate reconnect to the AP
* association request when used with NL80211_CMD_NEW_STATION). * is desired.
* *
+ * @NL80211_ATTR_HE_MUEDCA_PARAMS: MU-EDCA AC parameters for the + * @NL80211_ATTR_HE_MUEDCA_PARAMS: MU-EDCA AC parameters for the
+ NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS command. + NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS command.
@@ -173,9 +173,9 @@
* @NUM_NL80211_ATTR: total number of nl80211_attrs available * @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined * @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use * @__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, + NL80211_ATTR_HE_MUEDCA_PARAMS,
/* add attributes here, update the policy in nl80211.c */ /* add attributes here, update the policy in nl80211.c */
@@ -193,7 +193,7 @@
return "UNKNOWN"; return "UNKNOWN";
--- a/src/ap/hostapd.c --- a/src/ap/hostapd.c
+++ b/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_count = settings->cs_count;
hapd->cs_block_tx = settings->block_tx; hapd->cs_block_tx = settings->block_tx;
@@ -206,7 +206,7 @@
free_beacon_data(&settings->beacon_after); free_beacon_data(&settings->beacon_after);
--- a/hostapd/ctrl_iface.c --- a/hostapd/ctrl_iface.c
+++ b/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 || } else if (os_strncmp(cmd, "wme_ac_", 7) == 0 ||
os_strncmp(cmd, "wmm_ac_", 7) == 0) { os_strncmp(cmd, "wmm_ac_", 7) == 0) {
hapd->parameter_set_count++; hapd->parameter_set_count++;
@@ -252,7 +252,7 @@
static u8 ieee80211_he_ppet_size(u8 ppe_thres_hdr, const u8 *phy_cap_info) 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) u8 * hostapd_eid_he_mu_edca_parameter_set(struct hostapd_data *hapd, u8 *eid)
{ {
struct ieee80211_he_mu_edca_parameter_set *edca; 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 +++ src/drivers/nl80211_copy.h | 10 +++
3 files changed, 116 insertions(+), 66 deletions(-) 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 --- a/src/ap/beacon.c
+++ b/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; *len = pos - (u8 *) head;
wpa_hexdump(MSG_DEBUG, "FILS Discovery frame template", wpa_hexdump(MSG_DEBUG, "FILS Discovery frame template",
@@ -49,11 +47,9 @@ index 510670da64a8..c873f5b744d0 100644
return (u8 *) head; 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 --- a/src/drivers/driver_nl80211.c
+++ b/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; return ret;
} }
@@ -246,7 +242,7 @@ index f4c646180b36..84ba66be3e4f 100644
static int wpa_driver_nl80211_set_ap(void *priv, static int wpa_driver_nl80211_set_ap(void *priv,
struct wpa_driver_ap_params *params) 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; goto fail;
} }
@@ -256,7 +252,7 @@ index f4c646180b36..84ba66be3e4f 100644
#endif /* CONFIG_IEEE80211AX */ #endif /* CONFIG_IEEE80211AX */
#ifdef CONFIG_SAE #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; goto fail;
#endif /* CONFIG_SAE */ #endif /* CONFIG_SAE */
@@ -268,7 +264,7 @@ index f4c646180b36..84ba66be3e4f 100644
ret = send_and_recv_msgs_owner(drv, msg, get_connect_handle(bss), 1, ret = send_and_recv_msgs_owner(drv, msg, get_connect_handle(bss), 1,
NULL, NULL, NULL, NULL); NULL, NULL, NULL, NULL);
if (ret) { 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); params->isolate, params->basic_rates);
nl80211_set_multicast_to_unicast(bss, nl80211_set_multicast_to_unicast(bss,
params->multicast_to_unicast); params->multicast_to_unicast);
@@ -282,8 +278,6 @@ index f4c646180b36..84ba66be3e4f 100644
if (beacon_set && params->freq && if (beacon_set && params->freq &&
params->freq->bandwidth != bss->bandwidth) { params->freq->bandwidth != bss->bandwidth) {
wpa_printf(MSG_DEBUG, 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 --- a/src/drivers/nl80211_copy.h
+++ b/src/drivers/nl80211_copy.h +++ b/src/drivers/nl80211_copy.h
@@ -1187,6 +1187,12 @@ @@ -1187,6 +1187,12 @@
@@ -310,6 +304,3 @@ index a4a611992ca0..1084c6d4c080 100644
/* add new commands above here */ /* add new commands above here */
/* used to define NL80211_CMD_MAX below */ /* 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 --- a/hostapd/config_file.c
=================================================================== +++ b/hostapd/config_file.c
--- hostapd-2021-02-20-59e9794c.orig/hostapd/config_file.c @@ -4692,6 +4692,8 @@ static int hostapd_config_fill(struct ho
+++ hostapd-2021-02-20-59e9794c/hostapd/config_file.c
@@ -4681,6 +4681,8 @@ static int hostapd_config_fill(struct ho
} }
bss->mka_psk_set |= MKA_PSK_SET_CKN; bss->mka_psk_set |= MKA_PSK_SET_CKN;
#endif /* CONFIG_MACSEC */ #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) { } else if (os_strcmp(buf, "disable_11n") == 0) {
bss->disable_11n = !!atoi(pos); bss->disable_11n = !!atoi(pos);
} else if (os_strcmp(buf, "disable_11ac") == 0) { } else if (os_strcmp(buf, "disable_11ac") == 0) {
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h --- a/src/ap/ap_config.h
=================================================================== +++ b/src/ap/ap_config.h
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_config.h @@ -1027,6 +1027,8 @@ struct hostapd_config {
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
@@ -1025,6 +1025,8 @@ struct hostapd_config {
u8 vht_oper_centr_freq_seg1_idx; u8 vht_oper_centr_freq_seg1_idx;
u8 ht40_plus_minus_allowed; 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 */ /* Use driver-generated interface addresses when adding multiple BSSs */
u8 use_driver_iface_addr; u8 use_driver_iface_addr;
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c --- a/src/ap/hostapd.c
=================================================================== +++ b/src/ap/hostapd.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.c @@ -89,6 +89,26 @@ int hostapd_for_each_interface(struct ha
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
@@ -87,6 +87,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) void hostapd_reconfig_encryption(struct hostapd_data *hapd)
{ {
if (hapd->wpa_auth) 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) { if (!first || first == -1) {
u8 *addr = hapd->own_addr; 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)) { if (!is_zero_ether_addr(conf->bssid)) {
/* Allocate the configured 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, conf->iface, addr, hapd,
&hapd->drv_priv, force_ifname, if_addr, &hapd->drv_priv, force_ifname, if_addr,
conf->bridge[0] ? conf->bridge : NULL, 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=" wpa_printf(MSG_ERROR, "Failed to add BSS (BSSID="
MACSTR ")", MAC2STR(hapd->own_addr)); MACSTR ")", MAC2STR(hapd->own_addr));
hapd->interface_added = 0; hapd->interface_added = 0;
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.h --- a/src/ap/hostapd.h
=================================================================== +++ b/src/ap/hostapd.h
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.h @@ -629,6 +629,8 @@ struct hostapd_iface {
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
@@ -603,6 +603,8 @@ struct hostapd_iface {
int hostapd_for_each_interface(struct hapd_interfaces *interfaces, int hostapd_for_each_interface(struct hapd_interfaces *interfaces,
int (*cb)(struct hostapd_iface *iface, int (*cb)(struct hostapd_iface *iface,
void *ctx), void *ctx); void *ctx), void *ctx);
+int hostapd_get_bss_index(struct hostapd_data *hapd); +int hostapd_get_bss_index(struct hostapd_data *hapd);
+struct hostapd_data * hostapd_get_primary_bss(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); int hostapd_reload_config(struct hostapd_iface *iface, int reconf);
void hostapd_reconfig_encryption(struct hostapd_data *hapd); void hostapd_reload_bss(struct hostapd_data *hapd);
struct hostapd_data * void hostapd_bss_deinit(struct hostapd_data *hapd);
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_drv_ops.c --- a/src/ap/ap_drv_ops.c
=================================================================== +++ b/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
@@ -321,7 +321,7 @@ int hostapd_vlan_if_add(struct hostapd_d @@ -321,7 +321,7 @@ int hostapd_vlan_if_add(struct hostapd_d
char force_ifname[IFNAMSIZ]; char force_ifname[IFNAMSIZ];
u8 if_addr[ETH_ALEN]; 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, int hostapd_if_add(struct hostapd_data *hapd, enum wpa_driver_if_type type,
const char *ifname, const u8 *addr, void *bss_ctx, const char *ifname, const u8 *addr, void *bss_ctx,
void **drv_priv, char *force_ifname, u8 *if_addr, 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 --- a/src/ap/ap_drv_ops.h
=================================================================== +++ b/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
@@ -54,7 +54,8 @@ int hostapd_set_ssid(struct hostapd_data @@ -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, int hostapd_if_add(struct hostapd_data *hapd, enum wpa_driver_if_type type,
const char *ifname, const u8 *addr, void *bss_ctx, 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, int hostapd_if_remove(struct hostapd_data *hapd, enum wpa_driver_if_type type,
const char *ifname); const char *ifname);
int hostapd_set_ieee8021x(struct hostapd_data *hapd, int hostapd_set_ieee8021x(struct hostapd_data *hapd,
Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c --- a/src/ap/beacon.c
=================================================================== +++ b/src/ap/beacon.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/beacon.c
+++ hostapd-2021-02-20-59e9794c/src/ap/beacon.c
@@ -293,7 +293,7 @@ static const u8 * hostapd_vendor_wpa_ie( @@ -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) if (len < IEEE80211_HDRLEN)
return; return;
ie = ((const u8 *) mgmt) + IEEE80211_HDRLEN; 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; 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 ? csa_offs : NULL,
csa_offs_len, 0); 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; params->head = NULL;
os_free(params->proberesp); os_free(params->proberesp);
params->proberesp = NULL; params->proberesp = NULL;
@@ -207,7 +193,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
#ifdef CONFIG_FILS #ifdef CONFIG_FILS
os_free(params->fd_frame_tmpl); os_free(params->fd_frame_tmpl);
params->fd_frame_tmpl = NULL; 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 = params.unsol_bcast_probe_resp_tmpl =
hostapd_unsol_bcast_probe_resp(hapd, &params); hostapd_unsol_bcast_probe_resp(hapd, &params);
#endif /* CONFIG_IEEE80211AX */ #endif /* CONFIG_IEEE80211AX */
@@ -230,10 +216,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
hapd->reenable_beacon = 0; hapd->reenable_beacon = 0;
#ifdef CONFIG_SAE #ifdef CONFIG_SAE
params.sae_pwe = hapd->conf->sae_pwe; params.sae_pwe = hapd->conf->sae_pwe;
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h --- a/src/drivers/driver.h
=================================================================== +++ b/src/drivers/driver.h
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver.h
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver.h
@@ -1224,6 +1224,8 @@ struct wowlan_triggers { @@ -1224,6 +1224,8 @@ struct wowlan_triggers {
u8 rfkill_release; u8 rfkill_release;
}; };
@@ -285,7 +269,7 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h
}; };
struct wpa_driver_mesh_bss_params { 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, int (*if_add)(void *priv, enum wpa_driver_if_type type,
const char *ifname, const u8 *addr, void *bss_ctx, const char *ifname, const u8 *addr, void *bss_ctx,
void **drv_priv, char *force_ifname, u8 *if_addr, 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 * if_remove - Remove a virtual interface
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/driver_i.h --- a/wpa_supplicant/driver_i.h
=================================================================== +++ b/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
@@ -444,7 +444,7 @@ static inline int wpa_drv_if_add(struct @@ -444,7 +444,7 @@ static inline int wpa_drv_if_add(struct
if (wpa_s->driver->if_add) if (wpa_s->driver->if_add)
return wpa_s->driver->if_add(wpa_s->drv_priv, type, ifname, 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; return -1;
} }
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c --- a/src/drivers/driver_nl80211.c
=================================================================== +++ b/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
@@ -4794,6 +4794,27 @@ static int wpa_driver_nl80211_set_ap(voi @@ -4794,6 +4794,27 @@ static int wpa_driver_nl80211_set_ap(voi
goto fail; goto fail;
#endif /* CONFIG_SAE */ #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)) { 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 (!if_nametoindex(name)) {
if (nl80211_create_iface(drv, name, if (nl80211_create_iface(drv, name,
NL80211_IFTYPE_AP_VLAN, NL80211_IFTYPE_AP_VLAN,
@@ -412,7 +392,7 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c
0) 0)
return -1; return -1;
if (bridge_ifname && 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, void *bss_ctx, void **drv_priv,
char *force_ifname, u8 *if_addr, char *force_ifname, u8 *if_addr,
const char *bridge, int use_existing, 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; enum nl80211_iftype nlmode;
struct i802_bss *bss = priv; 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)); os_memset(&p2pdev_info, 0, sizeof(p2pdev_info));
ifidx = nl80211_create_iface(drv, ifname, nlmode, addr, ifidx = nl80211_create_iface(drv, ifname, nlmode, addr,
0, nl80211_wdev_handler, 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) { if (!p2pdev_info.wdev_id_set || ifidx != 0) {
wpa_printf(MSG_ERROR, "nl80211: Failed to create a P2P Device interface %s", wpa_printf(MSG_ERROR, "nl80211: Failed to create a P2P Device interface %s",
ifname); 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); (long long unsigned int) p2pdev_info.wdev_id);
} else { } else {
ifidx = nl80211_create_iface(drv, ifname, nlmode, addr, 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) { if (use_existing && ifidx == -ENFILE) {
added = 0; added = 0;
ifidx = if_nametoindex(ifname); ifidx = if_nametoindex(ifname);
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.h --- a/src/drivers/driver_nl80211.h
=================================================================== +++ b/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
@@ -251,7 +251,9 @@ int nl80211_create_iface(struct wpa_driv @@ -251,7 +251,9 @@ int nl80211_create_iface(struct wpa_driv
const char *ifname, enum nl80211_iftype iftype, const char *ifname, enum nl80211_iftype iftype,
const u8 *addr, int wds, 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); void nl80211_remove_iface(struct wpa_driver_nl80211_data *drv, int ifidx);
unsigned int nl80211_get_assoc_freq(struct wpa_driver_nl80211_data *drv); 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); 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 --- a/src/drivers/driver_nl80211_monitor.c
=================================================================== +++ b/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
@@ -381,7 +381,7 @@ int nl80211_create_monitor_interface(str @@ -381,7 +381,7 @@ int nl80211_create_monitor_interface(str
drv->monitor_ifidx = drv->monitor_ifidx =
@@ -472,10 +448,8 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211_monitor.c
if (drv->monitor_ifidx == -EOPNOTSUPP) { if (drv->monitor_ifidx == -EOPNOTSUPP) {
/* /*
Index: hostapd-2021-02-20-59e9794c/src/drivers/nl80211_copy.h --- a/src/drivers/nl80211_copy.h
=================================================================== +++ b/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
@@ -2576,6 +2576,20 @@ enum nl80211_commands { @@ -2576,6 +2576,20 @@ enum nl80211_commands {
* @NL80211_ATTR_HE_MUEDCA_PARAMS: MU-EDCA AC parameters for the * @NL80211_ATTR_HE_MUEDCA_PARAMS: MU-EDCA AC parameters for the
NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS command. 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 */ /* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST, __NL80211_ATTR_AFTER_LAST,
Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
=================================================================== +++ b/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
@@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
* See README for more details. * See README for more details.
*/ */
@@ -523,7 +495,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
#include "utils/includes.h" #include "utils/includes.h"
#ifndef CONFIG_NATIVE_WINDOWS #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) if (j == 32)
return -1; return -1;
@@ -536,7 +508,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
if (aid > 2007) if (aid > 2007)
return -1; return -1;
@@ -5560,7 +5565,7 @@ static void handle_assoc(struct hostapd_ @@ -5569,7 +5574,7 @@ static void handle_assoc(struct hostapd_
goto fail; goto fail;
omit_rsnxe = !get_ie(pos, left, WLAN_EID_RSNX); 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_logger(hapd, mgmt->sa, HOSTAPD_MODULE_IEEE80211,
HOSTAPD_LEVEL_INFO, "No room for more AIDs"); HOSTAPD_LEVEL_INFO, "No room for more AIDs");
resp = WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA; 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; return eid;
} }
@@ -663,10 +635,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.c
+} +}
+ +
#endif /* CONFIG_NATIVE_WINDOWS */ #endif /* CONFIG_NATIVE_WINDOWS */
Index: hostapd-2021-02-20-59e9794c/src/ap/ieee802_11.h --- a/src/ap/ieee802_11.h
=================================================================== +++ b/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
@@ -119,7 +119,10 @@ u8 * hostapd_eid_time_zone(struct hostap @@ -119,7 +119,10 @@ u8 * hostapd_eid_time_zone(struct hostap
int hostapd_update_time_adv(struct hostapd_data *hapd); int hostapd_update_time_adv(struct hostapd_data *hapd);
void hostapd_client_poll_ok(struct hostapd_data *hapd, const u8 *addr); 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); +u8 * hostapd_get_rsne(struct hostapd_data *hapd, u8 *pos, size_t len);
#endif /* IEEE802_11_H */ #endif /* IEEE802_11_H */
Index: 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
--- hostapd-2021-02-20-59e9794c.orig/src/common/ieee802_11_defs.h
+++ hostapd-2021-02-20-59e9794c/src/common/ieee802_11_defs.h
@@ -457,6 +457,8 @@ @@ -457,6 +457,8 @@
#define WLAN_EID_RSNX 244 #define WLAN_EID_RSNX 244
#define WLAN_EID_EXTENSION 255 #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 */ /* Element ID Extension (EID 255) values */
#define WLAN_EID_EXT_ASSOC_DELAY_INFO 1 #define WLAN_EID_EXT_ASSOC_DELAY_INFO 1
#define WLAN_EID_EXT_FILS_REQ_PARAMS 2 #define WLAN_EID_EXT_FILS_REQ_PARAMS 2
Index: 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
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ieee802_11_shared.c
+++ hostapd-2021-02-20-59e9794c/src/ap/ieee802_11_shared.c
@@ -357,6 +357,8 @@ static void hostapd_ext_capab_byte(struc @@ -357,6 +357,8 @@ static void hostapd_ext_capab_byte(struc
*pos |= 0x02; /* Bit 17 - WNM-Sleep Mode */ *pos |= 0x02; /* Bit 17 - WNM-Sleep Mode */
if (hapd->conf->bss_transition) 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/ieee802_11_defs.h"
#include "common/sae.h" #include "common/sae.h"
#include "crypto/sha256.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); os_memcpy(bss->ssid.ssid, pos, bss->ssid.ssid_len);
bss->ssid.ssid_set = 1; 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); char *str = wpa_config_parse_string(pos, &slen);
--- a/src/ap/hostapd.c --- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c +++ b/src/ap/hostapd.c
@@ -13,7 +13,6 @@ @@ -15,7 +15,6 @@
#include "utils/common.h" #include "utils/common.h"
#include "utils/eloop.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/ieee802_11_defs.h"
#include "common/wpa_ctrl.h" #include "common/wpa_ctrl.h"
#include "common/hw_features_common.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); 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 --- a/hostapd/ctrl_iface.c
+++ b/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]; u8 bssid[ETH_ALEN];
struct wpabuf *nr, *lci = NULL, *civic = NULL; struct wpabuf *nr, *lci = NULL, *civic = NULL;
int stationary = 0; int stationary = 0;
@@ -26,7 +26,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
char *tmp; char *tmp;
int ret; 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")) if (os_strstr(buf, "stat"))
stationary = 1; stationary = 1;
@@ -52,7 +52,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
wpabuf_free(lci); wpabuf_free(lci);
--- a/src/ap/hostapd.h --- a/src/ap/hostapd.h
+++ b/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 */ /* LCI update time */
struct os_time lci_date; struct os_time lci_date;
int stationary; int stationary;

View File

@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
--- a/src/ap/hostapd.h --- a/src/ap/hostapd.h
+++ b/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; struct os_time lci_date;
int stationary; int stationary;
u8 bss_parameters; 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 ++++++ src/common/ieee802_11_defs.h | 14 ++++++
7 files changed, 113 insertions(+) 7 files changed, 113 insertions(+)
Index: hostapd-2021-02-18/hostapd/config_file.c --- a/hostapd/config_file.c
=================================================================== +++ b/hostapd/config_file.c
--- hostapd-2021-02-18.orig/hostapd/config_file.c @@ -4701,6 +4701,8 @@ static int hostapd_config_fill(struct ho
+++ hostapd-2021-02-18/hostapd/config_file.c
@@ -4672,6 +4672,8 @@ static int hostapd_config_fill(struct ho
#endif /* CONFIG_MACSEC */ #endif /* CONFIG_MACSEC */
} else if (os_strcmp(buf, "multiple_bssid") == 0) { } else if (os_strcmp(buf, "multiple_bssid") == 0) {
conf->multiple_bssid = atoi(pos); 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) { } else if (os_strcmp(buf, "disable_11n") == 0) {
bss->disable_11n = !!atoi(pos); bss->disable_11n = !!atoi(pos);
} else if (os_strcmp(buf, "disable_11ac") == 0) { } else if (os_strcmp(buf, "disable_11ac") == 0) {
Index: hostapd-2021-02-18/hostapd/hostapd.conf --- a/hostapd/hostapd.conf
=================================================================== +++ b/hostapd/hostapd.conf
--- hostapd-2021-02-18.orig/hostapd/hostapd.conf
+++ hostapd-2021-02-18/hostapd/hostapd.conf
@@ -2885,6 +2885,9 @@ own_ip_addr=127.0.0.1 @@ -2885,6 +2885,9 @@ own_ip_addr=127.0.0.1
# that allows sending of such data. Default: 0. # that allows sending of such data. Default: 0.
#stationary_ap=0 #stationary_ap=0
@@ -46,23 +42,19 @@ Index: hostapd-2021-02-18/hostapd/hostapd.conf
##### Airtime policy configuration ########################################### ##### Airtime policy configuration ###########################################
# Set the airtime policy operating mode: # Set the airtime policy operating mode:
Index: hostapd-2021-02-18/src/ap/ap_config.h --- a/src/ap/ap_config.h
=================================================================== +++ b/src/ap/ap_config.h
--- hostapd-2021-02-18.orig/src/ap/ap_config.h @@ -893,6 +893,7 @@ struct hostapd_bss_config {
+++ hostapd-2021-02-18/src/ap/ap_config.h
@@ -885,6 +885,7 @@ struct hostapd_bss_config {
#endif /* CONFIG_PASN */ #endif /* CONFIG_PASN */
unsigned int unsol_bcast_probe_resp_interval; unsigned int unsol_bcast_probe_resp_interval;
+ u8 rnr_beacon; + u8 rnr_beacon;
char *config_id;
}; };
/** --- a/src/ap/beacon.c
Index: hostapd-2021-02-18/src/ap/beacon.c +++ b/src/ap/beacon.c
=================================================================== @@ -1469,6 +1469,7 @@ int ieee802_11_build_ap_params(struct ho
--- 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
tail_len += hostapd_mbo_ie_len(hapd); tail_len += hostapd_mbo_ie_len(hapd);
tail_len += hostapd_eid_owe_trans_len(hapd); tail_len += hostapd_eid_owe_trans_len(hapd);
tail_len += hostapd_eid_dpp_cc_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); tailpos = tail = os_malloc(tail_len);
if (head == NULL || tail == NULL) { 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, tailpos = hostapd_eid_owe_trans(hapd, tailpos,
tail + tail_len - tailpos); tail + tail_len - tailpos);
tailpos = hostapd_eid_dpp_cc(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) { if (hapd->conf->vendor_elements) {
os_memcpy(tailpos, wpabuf_head(hapd->conf->vendor_elements), os_memcpy(tailpos, wpabuf_head(hapd->conf->vendor_elements),
Index: hostapd-2021-02-18/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
=================================================================== +++ b/src/ap/ieee802_11.c
--- hostapd-2021-02-18.orig/src/ap/ieee802_11.c @@ -7099,4 +7099,93 @@ u8 * hostapd_eid_multiple_bssid(struct h
+++ hostapd-2021-02-18/src/ap/ieee802_11.c
@@ -7079,4 +7079,93 @@ u8 * hostapd_eid_multiple_bssid(struct h
return eid; return eid;
} }
@@ -176,10 +166,8 @@ Index: hostapd-2021-02-18/src/ap/ieee802_11.c
+} +}
+ +
#endif /* CONFIG_NATIVE_WINDOWS */ #endif /* CONFIG_NATIVE_WINDOWS */
Index: hostapd-2021-02-18/src/ap/ieee802_11.h --- a/src/ap/ieee802_11.h
=================================================================== +++ b/src/ap/ieee802_11.h
--- hostapd-2021-02-18.orig/src/ap/ieee802_11.h
+++ hostapd-2021-02-18/src/ap/ieee802_11.h
@@ -123,6 +123,8 @@ u8 * hostapd_eid_multiple_bssid(struct h @@ -123,6 +123,8 @@ u8 * hostapd_eid_multiple_bssid(struct h
u8 is_beacon, u8 **eid_offsets, int *eid_count, u8 is_beacon, u8 **eid_offsets, int *eid_count,
int eid_max); 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); int auth_sae_init_committed(struct hostapd_data *hapd, struct sta_info *sta);
#ifdef CONFIG_SAE #ifdef CONFIG_SAE
void sae_clear_retransmit_timer(struct hostapd_data *hapd, void sae_clear_retransmit_timer(struct hostapd_data *hapd,
Index: hostapd-2021-02-18/src/common/ieee802_11_defs.h --- a/src/common/ieee802_11_defs.h
=================================================================== +++ b/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
@@ -2437,4 +2437,17 @@ enum mscs_description_subelem { @@ -2437,4 +2437,17 @@ enum mscs_description_subelem {
*/ */
#define FD_MAX_INTERVAL_6GHZ 20 /* TUs */ #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->channel = channel;
hapd->iconf->ieee80211n = ht; 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_chwidth(hapd->iconf, chwidth);
hostapd_set_oper_centr_freq_seg0_idx(hapd->iconf, seg0_idx); hostapd_set_oper_centr_freq_seg0_idx(hapd->iconf, seg0_idx);
hostapd_set_oper_centr_freq_seg1_idx(hapd->iconf, seg1_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 --- a/wpa_supplicant/mesh.c
=================================================================== +++ b/wpa_supplicant/mesh.c
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/mesh.c
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh.c
@@ -453,6 +453,12 @@ static int wpa_supplicant_mesh_init(stru @@ -453,6 +453,12 @@ static int wpa_supplicant_mesh_init(stru
conf->country[2] = ' '; conf->country[2] = ' ';
wpa_s->mesh_params->handle_dfs = true; wpa_s->mesh_params->handle_dfs = true;
@@ -15,10 +13,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh.c
bss->iconf = conf; bss->iconf = conf;
ifmsh->conf = conf; ifmsh->conf = conf;
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c --- a/wpa_supplicant/wpa_supplicant.c
=================================================================== +++ b/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
@@ -2440,7 +2440,9 @@ void ibss_mesh_setup_freq(struct wpa_sup @@ -2440,7 +2440,9 @@ void ibss_mesh_setup_freq(struct wpa_sup
struct hostapd_hw_modes *mode = NULL; 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, 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 #ifdef CONFIG_HT_OVERRIDES
if (ssid->disable_ht40) if (ssid->disable_ht40)
seg0 = 0; seg0 = 0;
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/ap.c --- a/wpa_supplicant/ap.c
=================================================================== +++ b/wpa_supplicant/ap.c
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/ap.c
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/ap.c
@@ -305,20 +305,16 @@ int wpa_supplicant_conf_ap_ht(struct wpa @@ -305,20 +305,16 @@ int wpa_supplicant_conf_ap_ht(struct wpa
HT_CAP_INFO_TX_STBC | HT_CAP_INFO_TX_STBC |
HT_CAP_INFO_MAX_AMSDU_SIZE); HT_CAP_INFO_MAX_AMSDU_SIZE);
@@ -182,10 +176,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/ap.c
} }
if (conf->secondary_channel) { if (conf->secondary_channel) {
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh_mpm.c --- a/wpa_supplicant/mesh_mpm.c
=================================================================== +++ b/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
@@ -251,6 +251,9 @@ static void mesh_mpm_send_plink_action(s @@ -251,6 +251,9 @@ static void mesh_mpm_send_plink_action(s
HE_MAX_MCS_CAPAB_SIZE + HE_MAX_MCS_CAPAB_SIZE +
HE_MAX_PPET_CAPAB_SIZE; HE_MAX_PPET_CAPAB_SIZE;

View File

@@ -1,7 +1,5 @@
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c --- a/wpa_supplicant/wpa_supplicant.c
=================================================================== +++ b/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
@@ -2430,6 +2430,22 @@ static int drv_supports_vht(struct wpa_s @@ -2430,6 +2430,22 @@ static int drv_supports_vht(struct wpa_s
return mode->vht_capab != 0; 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 +++++- src/ap/ieee802_11_shared.c | 7 +++++-
2 files changed, 35 insertions(+), 20 deletions(-) 2 files changed, 35 insertions(+), 20 deletions(-)
Index: hostapd-2021-02-18/src/ap/beacon.c --- a/src/ap/beacon.c
=================================================================== +++ b/src/ap/beacon.c
--- hostapd-2021-02-18.orig/src/ap/beacon.c
+++ hostapd-2021-02-18/src/ap/beacon.c
@@ -433,7 +433,7 @@ static u8 * hostapd_gen_probe_resp(struc @@ -433,7 +433,7 @@ static u8 * hostapd_gen_probe_resp(struc
int is_p2p, size_t *resp_len) 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_adv(hapd, pos);
pos = hostapd_eid_time_zone(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; struct ieee80211_mgmt *head = NULL;
u8 *tail = 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_HEAD_BUF_SIZE 256
#define BEACON_TAIL_BUF_SIZE 512 #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_capabilities(hapd, tailpos);
tailpos = hostapd_eid_ht_operation(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 * 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; 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 = params.unsol_bcast_probe_resp_tmpl =
hostapd_unsol_bcast_probe_resp(hapd, &params); hostapd_unsol_bcast_probe_resp(hapd, &params);
#endif /* CONFIG_IEEE80211AX */ #endif /* CONFIG_IEEE80211AX */
@@ -122,10 +120,8 @@ Index: hostapd-2021-02-18/src/ap/beacon.c
hapd->reenable_beacon = 0; hapd->reenable_beacon = 0;
#ifdef CONFIG_SAE #ifdef CONFIG_SAE
params.sae_pwe = hapd->conf->sae_pwe; params.sae_pwe = hapd->conf->sae_pwe;
Index: hostapd-2021-02-18/src/ap/ieee802_11_shared.c --- a/src/ap/ieee802_11_shared.c
=================================================================== +++ b/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
@@ -427,6 +427,10 @@ static void hostapd_ext_capab_byte(struc @@ -427,6 +427,10 @@ static void hostapd_ext_capab_byte(struc
* Identifiers Used Exclusively */ * Identifiers Used Exclusively */
} }

View File

@@ -26,7 +26,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
--- a/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
+++ b/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) int *count)
{ {
/* ID + size + count */ /* ID + size + count */
@@ -62,7 +62,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
} }
multiple_bssid_too_big: 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 *eid, u8 *end, int *count,
u8 is_beacon) u8 is_beacon)
{ {
@@ -71,7 +71,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
int i; int i;
*eid++ = WLAN_EID_MULTIPLE_BSSID; *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; *index_size_offset = (eid - index_size_offset) - 1;
eid = hostapd_get_rsne(bss, eid, end - eid); 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 +++----- src/ap/ieee802_11_shared.c | 8 +++-----
7 files changed, 22 insertions(+), 14 deletions(-) 7 files changed, 22 insertions(+), 14 deletions(-)
Index: hostapd-2021-02-18/hostapd/config_file.c --- a/hostapd/config_file.c
=================================================================== +++ b/hostapd/config_file.c
--- hostapd-2021-02-18.orig/hostapd/config_file.c @@ -4701,6 +4701,8 @@ static int hostapd_config_fill(struct ho
+++ hostapd-2021-02-18/hostapd/config_file.c
@@ -4672,6 +4672,8 @@ static int hostapd_config_fill(struct ho
#endif /* CONFIG_MACSEC */ #endif /* CONFIG_MACSEC */
} else if (os_strcmp(buf, "multiple_bssid") == 0) { } else if (os_strcmp(buf, "multiple_bssid") == 0) {
conf->multiple_bssid = atoi(pos); 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) { } else if (os_strcmp(buf, "rnr_beacon") == 0) {
bss->rnr_beacon = atoi(pos); bss->rnr_beacon = atoi(pos);
} else if (os_strcmp(buf, "disable_11n") == 0) { } else if (os_strcmp(buf, "disable_11n") == 0) {
Index: hostapd-2021-02-18/src/ap/ap_config.c --- a/src/ap/ap_config.c
=================================================================== +++ b/src/ap/ap_config.c
--- hostapd-2021-02-18.orig/src/ap/ap_config.c @@ -1489,6 +1489,12 @@ int hostapd_config_check(struct hostapd_
+++ hostapd-2021-02-18/src/ap/ap_config.c
@@ -1486,6 +1486,12 @@ int hostapd_config_check(struct hostapd_
return -1; return -1;
} }
@@ -53,11 +49,9 @@ Index: hostapd-2021-02-18/src/ap/ap_config.c
for (i = 0; i < conf->num_bss; i++) { for (i = 0; i < conf->num_bss; i++) {
if (hostapd_config_check_bss(conf->bss[i], conf, full_config)) if (hostapd_config_check_bss(conf->bss[i], conf, full_config))
return -1; return -1;
Index: hostapd-2021-02-18/src/ap/ap_config.h --- a/src/ap/ap_config.h
=================================================================== +++ b/src/ap/ap_config.h
--- hostapd-2021-02-18.orig/src/ap/ap_config.h @@ -1029,6 +1029,7 @@ struct hostapd_config {
+++ hostapd-2021-02-18/src/ap/ap_config.h
@@ -1017,6 +1017,7 @@ struct hostapd_config {
u8 ht40_plus_minus_allowed; u8 ht40_plus_minus_allowed;
u8 multiple_bssid; 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 */ /* Use driver-generated interface addresses when adding multiple BSSs */
u8 use_driver_iface_addr; u8 use_driver_iface_addr;
Index: hostapd-2021-02-18/src/ap/beacon.c --- a/src/ap/beacon.c
=================================================================== +++ b/src/ap/beacon.c
--- hostapd-2021-02-18.orig/src/ap/beacon.c
+++ hostapd-2021-02-18/src/ap/beacon.c
@@ -535,7 +535,7 @@ static u8 * hostapd_gen_probe_resp(struc @@ -535,7 +535,7 @@ static u8 * hostapd_gen_probe_resp(struc
pos = hostapd_get_mde(hapd, pos, epos - pos); 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; ext_cap_pos[12] |= 0x01;
pos = hostapd_eid_time_adv(hapd, pos); 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, params->multiple_bssid_ies + len,
1, params->multiple_bssid_ie_offsets, 1, params->multiple_bssid_ie_offsets,
&params->multiple_bssid_ie_count, &params->multiple_bssid_ie_count,
@@ -103,11 +95,9 @@ Index: hostapd-2021-02-18/src/ap/beacon.c
ext_cap_pos[12] |= 0x01; ext_cap_pos[12] |= 0x01;
} }
Index: hostapd-2021-02-18/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
=================================================================== +++ b/src/ap/ieee802_11.c
--- hostapd-2021-02-18.orig/src/ap/ieee802_11.c @@ -7096,12 +7096,13 @@ multiple_bssid_too_big:
+++ hostapd-2021-02-18/src/ap/ieee802_11.c
@@ -7076,12 +7076,13 @@ multiple_bssid_too_big:
u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd, u8 *eid, u8 *end, u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd, u8 *eid, u8 *end,
u8 is_beacon, u8 **eid_offsets, int *eid_count, 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_offsets[*eid_count] = eid;
*eid_count = *eid_count + 1; *eid_count = *eid_count + 1;
} }
Index: hostapd-2021-02-18/src/ap/ieee802_11.h --- a/src/ap/ieee802_11.h
=================================================================== +++ b/src/ap/ieee802_11.h
--- hostapd-2021-02-18.orig/src/ap/ieee802_11.h
+++ hostapd-2021-02-18/src/ap/ieee802_11.h
@@ -121,7 +121,7 @@ void hostapd_client_poll_ok(struct hosta @@ -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_bss_max_idle_period(struct hostapd_data *hapd, u8 *eid);
u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd, u8 *eid, u8 *end, 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); int hostapd_eid_multiple_bssid_len(struct hostapd_data *hapd);
u8 * hostapd_eid_reduced_neighbor_report(struct hostapd_data *hapd, u8 *eid); u8 * hostapd_eid_reduced_neighbor_report(struct hostapd_data *hapd, u8 *eid);
size_t hostapd_eid_reduced_neighbor_report_len(struct hostapd_data *hapd); size_t hostapd_eid_reduced_neighbor_report_len(struct hostapd_data *hapd);
Index: hostapd-2021-02-18/src/ap/ieee802_11_shared.c --- a/src/ap/ieee802_11_shared.c
=================================================================== +++ b/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
@@ -427,9 +427,8 @@ static void hostapd_ext_capab_byte(struc @@ -427,9 +427,8 @@ static void hostapd_ext_capab_byte(struc
* Identifiers Used Exclusively */ * Identifiers Used Exclusively */
} }

View File

@@ -22,7 +22,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
--- a/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
+++ b/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; return -1;
aid = i * 32 + j; aid = i * 32 + j;
if (hapd->iconf->multiple_bssid) if (hapd->iconf->multiple_bssid)

View File

@@ -33,7 +33,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
--- a/src/ap/beacon.c --- a/src/ap/beacon.c
+++ b/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) && if ((params->multiple_bssid_ie_count <= 1) &&
(ext_cap_len >= 13) && (ext_cap_pos[12] & 0x08)) (ext_cap_len >= 13) && (ext_cap_pos[12] & 0x08))
ext_cap_pos[12] |= 0x01; ext_cap_pos[12] |= 0x01;
@@ -43,10 +43,10 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
return 0; return 0;
--- a/src/ap/hostapd.c --- a/src/ap/hostapd.c
+++ b/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 */ #endif /* CONFIG_NO_RADIUS */
+static int hostapd_set_beacon(struct hostapd_data *hapd) +static int hostapd_set_beacon(struct hostapd_data *hapd)
+{ +{
+ struct hostapd_bss_config *conf = hapd->conf; + struct hostapd_bss_config *conf = hapd->conf;
@@ -84,7 +84,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
+ hostapd_ubus_add_bss(hapd); + hostapd_ubus_add_bss(hapd);
+ return 0; + return 0;
+} +}
+
/** /**
* hostapd_setup_bss - Per-BSS setup (initialization) * hostapd_setup_bss - Per-BSS setup (initialization)
* @hapd: Pointer to BSS data * @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 * 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 * 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 @@ -1503,32 +1544,8 @@ int hostapd_setup_bss(struct hostapd_dat
* 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
return -1; return -1;
} }
@@ -134,22 +125,23 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
- hapd->driver->set_operstate(hapd->drv_priv, 1); - hapd->driver->set_operstate(hapd->drv_priv, 1);
- -
- hostapd_ubus_add_bss(hapd); - hostapd_ubus_add_bss(hapd);
- hostapd_ucode_add_bss(hapd);
+ if (set_beacon) + if (set_beacon)
+ return hostapd_set_beacon(hapd); + return hostapd_set_beacon(hapd);
return 0; 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]; hapd = iface->bss[j];
if (j) if (j)
os_memcpy(hapd->own_addr, prev_addr, ETH_ALEN); 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, + if (hostapd_setup_bss(hapd, j == 0,
+ hapd->iconf->multiple_bssid? 0 : 1)) { + hapd->iconf->multiple_bssid? 0 : 1)) {
for (;;) { for (;;) {
hapd = iface->bss[j]; hapd = iface->bss[j];
hostapd_bss_deinit_no_free(hapd); 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)) if (is_zero_ether_addr(hapd->conf->bssid))
prev_addr = hapd->own_addr; prev_addr = hapd->own_addr;
} }
@@ -174,18 +166,18 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
hapd = iface->bss[0]; hapd = iface->bss[0];
hostapd_tx_queue_params(iface); 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 || if (start_ctrl_iface_bss(hapd) < 0 ||
(hapd_iface->state == HAPD_IFACE_ENABLED && (hapd_iface->state == HAPD_IFACE_ENABLED &&
- hostapd_setup_bss(hapd, -1))) { - hostapd_setup_bss(hapd, -1, true))) {
+ hostapd_setup_bss(hapd, -1, 1))) { + hostapd_setup_bss(hapd, -1, 1))) {
hostapd_cleanup(hapd); hostapd_cleanup(hapd);
hapd_iface->bss[hapd_iface->num_bss - 1] = NULL; hapd_iface->bss[hapd_iface->num_bss - 1] = NULL;
hapd_iface->conf->num_bss--; hapd_iface->conf->num_bss--;
--- a/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
+++ b/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, static u8 * hostapd_eid_multiple_bssid_chunk(struct hostapd_data *hapd,
u8 *eid, u8 *end, int *count, u8 *eid, u8 *end, int *count,
@@ -194,7 +186,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
{ {
u8 *size_offset, *num_offset; u8 *size_offset, *num_offset;
int i; 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++; index_size_offset = eid++;
*eid++ = i; *eid++ = i;
if (is_beacon) { if (is_beacon) {
@@ -202,7 +194,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
*eid++ = bss->conf->dtim_period; *eid++ = bss->conf->dtim_period;
*eid++ = 0xFF; *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, u8 is_beacon, u8 **eid_offsets, int *eid_count,
int eid_max, u8 ema_beacon) 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 --- a/src/ap/ieee802_11.c
+++ b/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); len += TBTT_HEADER_LENGTH + ((hapd->iface->num_bss - 1) * TBTT_INFO_LENGTH);
if (!dl_list_empty(&hapd->nr_db)) if (!dl_list_empty(&hapd->nr_db))
len += dl_list_len(&hapd->nr_db) * (TBTT_HEADER_LENGTH + TBTT_INFO_LENGTH); 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; 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); size_t len = hostapd_eid_reduced_neighbor_report_len(hapd);
struct hostapd_neighbor_entry *nr; struct hostapd_neighbor_entry *nr;
int i, count = 0; int i, count = 0;
@@ -41,7 +41,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
if (hapd->iface->num_bss > 1) { if (hapd->iface->num_bss > 1) {
u8 op_class, channel; u8 op_class, channel;
@@ -5920,6 +5923,9 @@ nr_db: @@ -7235,6 +7238,9 @@ nr_db:
if (!count) if (!count)
eid -= 2; eid -= 2;

View File

@@ -20,10 +20,8 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
src/ap/ieee802_11.h | 7 ++++-- src/ap/ieee802_11.h | 7 ++++--
3 files changed, 62 insertions(+), 25 deletions(-) 3 files changed, 62 insertions(+), 25 deletions(-)
Index: hostapd-2021-02-20/src/ap/beacon.c --- a/src/ap/beacon.c
=================================================================== +++ b/src/ap/beacon.c
--- hostapd-2021-02-20.orig/src/ap/beacon.c
+++ hostapd-2021-02-20/src/ap/beacon.c
@@ -432,12 +432,16 @@ static u8 * hostapd_gen_probe_resp(struc @@ -432,12 +432,16 @@ static u8 * hostapd_gen_probe_resp(struc
const struct ieee80211_mgmt *req, const struct ieee80211_mgmt *req,
int is_p2p, size_t *resp_len) int is_p2p, size_t *resp_len)
@@ -87,8 +85,8 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
/* eCSA IE */ /* eCSA IE */
csa_pos = hostapd_eid_ecsa(hapd, pos); csa_pos = hostapd_eid_ecsa(hapd, pos);
@@ -847,10 +864,6 @@ void handle_probe_req(struct hostapd_dat @@ -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 && - if (hapd->iconf->multiple_bssid &&
- hapd != hostapd_get_primary_bss(hapd)) - hapd != hostapd_get_primary_bss(hapd))
@@ -97,7 +95,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
if (len < IEEE80211_HDRLEN) if (len < IEEE80211_HDRLEN)
return; return;
ie = ((const u8 *) mgmt) + IEEE80211_HDRLEN; 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 wpa_msg_ctrl(hapd->msg_ctx, MSG_INFO, RX_PROBE_REQUEST "sa=" MACSTR
" signal=%d", MAC2STR(mgmt->sa), ssi_signal); " 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 = hostapd_gen_probe_resp(hapd, mgmt, elems.p2p != NULL,
&resp_len); &resp_len);
if (resp == NULL) 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) { if (hapd->iconf->multiple_bssid) {
@@ -117,7 +115,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
u8 *end; u8 *end;
params->multiple_bssid_index = hostapd_get_bss_index(hapd); 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); params->multiple_bssid_ies = os_zalloc(len);
if (params->multiple_bssid_ies == NULL) if (params->multiple_bssid_ies == NULL)
return -1; return -1;
@@ -127,11 +125,9 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
params->multiple_bssid_ies + len, params->multiple_bssid_ies + len,
1, params->multiple_bssid_ie_offsets, 1, params->multiple_bssid_ie_offsets,
&params->multiple_bssid_ie_count, &params->multiple_bssid_ie_count,
Index: hostapd-2021-02-20/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
=================================================================== +++ b/src/ap/ieee802_11.c
--- hostapd-2021-02-20.orig/src/ap/ieee802_11.c @@ -6988,24 +6988,35 @@ u8 * hostapd_eid_wb_chsw_wrapper(struct
+++ hostapd-2021-02-20/src/ap/ieee802_11.c
@@ -6968,24 +6968,35 @@ u8 * hostapd_eid_wb_chsw_wrapper(struct
static int hostapd_eid_multiple_bssid_chunk_len(struct hostapd_data *hapd, 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)) if (wpa_auth_get_wpa_ie(bss->wpa_auth, &ies_len))
nontx_profile_len += 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; u8 *size_offset, *num_offset;
int i; 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++; num_offset = eid++;
for (i = *count; i < hapd->iface->num_bss; i++) { 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; u8 *bss_size_offset, *index_size_offset, *pos = eid;
u16 capab_info; 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 += sizeof(capab_info);
*eid++ = WLAN_EID_SSID; *eid++ = WLAN_EID_SSID;
@@ -240,7 +236,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
*eid++ = 0xFF; *eid++ = 0xFF;
} }
*index_size_offset = (eid - index_size_offset) - 1; *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, u8 is_beacon, u8 **eid_offsets, int *eid_count,
int eid_max, u8 ema_beacon) 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_offsets[*eid_count] = eid;
*eid_count = *eid_count + 1; *eid_count = *eid_count + 1;
} }
@@ -262,10 +258,8 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
} }
if (!eid_count || !(*eid_count)) { if (!eid_count || !(*eid_count)) {
Index: hostapd-2021-02-20/src/ap/ieee802_11.h --- a/src/ap/ieee802_11.h
=================================================================== +++ b/src/ap/ieee802_11.h
--- hostapd-2021-02-20.orig/src/ap/ieee802_11.h
+++ hostapd-2021-02-20/src/ap/ieee802_11.h
@@ -119,10 +119,13 @@ u8 * hostapd_eid_time_zone(struct hostap @@ -119,10 +119,13 @@ u8 * hostapd_eid_time_zone(struct hostap
int hostapd_update_time_adv(struct hostapd_data *hapd); int hostapd_update_time_adv(struct hostapd_data *hapd);
void hostapd_client_poll_ok(struct hostapd_data *hapd, const u8 *addr); 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 + src/ap/ap_config.h | 1 +
3 files changed, 6 insertions(+) 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 --- a/hostapd/config_file.c
+++ b/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; return 1;
} }
bss->unsol_bcast_probe_resp_interval = val; bss->unsol_bcast_probe_resp_interval = val;
@@ -26,8 +24,6 @@ index 0bdf526..bbdd969 100644
#endif /* CONFIG_IEEE80211AX */ #endif /* CONFIG_IEEE80211AX */
} else if (os_strcmp(buf, "max_listen_interval") == 0) { } else if (os_strcmp(buf, "max_listen_interval") == 0) {
bss->max_listen_interval = atoi(pos); bss->max_listen_interval = atoi(pos);
diff --git a/hostapd/hostapd.conf b/hostapd/hostapd.conf
index ef26fe3..7c371cb 100644
--- a/hostapd/hostapd.conf --- a/hostapd/hostapd.conf
+++ b/hostapd/hostapd.conf +++ b/hostapd/hostapd.conf
@@ -577,6 +577,9 @@ wmm_ac_vo_acm=0 @@ -577,6 +577,9 @@ wmm_ac_vo_acm=0
@@ -40,11 +36,9 @@ index ef26fe3..7c371cb 100644
##### IEEE 802.11n related configuration ###################################### ##### IEEE 802.11n related configuration ######################################
# ieee80211n: Whether IEEE 802.11n (HT) is enabled # 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 --- a/src/ap/ap_config.h
+++ b/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_max_ampdu_len_exp;
u8 he_6ghz_rx_ant_pat; u8 he_6ghz_rx_ant_pat;
u8 he_6ghz_tx_ant_pat; u8 he_6ghz_tx_ant_pat;
@@ -52,28 +46,9 @@ index 95e44fa..5ae9187 100644
#endif /* CONFIG_IEEE80211AX */ #endif /* CONFIG_IEEE80211AX */
/* VHT enable/disable config from CHAN_SWITCH */ /* 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 --- a/src/ap/neighbor_db.c
+++ b/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; 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 */ /* TODO: Set NEI_REP_BSSID_INFO_MOBILITY_DOMAIN if MDE is set */
if (ieee80211_freq_to_channel_ext(hapd->iface->freq, 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 --- a/src/common/ieee802_11_defs.h
+++ b/src/common/ieee802_11_defs.h +++ b/src/common/ieee802_11_defs.h
@@ -2145,6 +2145,8 @@ enum phy_type { @@ -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 * IEEE P802.11-REVmc/D5.0 Table 9-152 - HT/VHT Operation Information
-- @@ -2439,7 +2441,7 @@ enum mscs_description_subelem {
2.7.4
From 92d786ddb2568b688ed4d25e32f3987e926c0ca4 Mon Sep 17 00:00:00 2001 /* TBTT Information field defines */
From: John Crispin <john@phrozen.org> #define TBTT_HEADER_LENGTH 4
Date: Mon, 21 Sep 2020 13:50:58 +0200 -#define TBTT_INFO_LENGTH 12
Subject: [PATCH 3/4] rrm: add handling for co-located BSS +#define TBTT_INFO_LENGTH 13
#define TBTT_INFO_FILTERED_NEIGH_AP BIT(2)
#define TBTT_INFO_COUNT(x) (((x) & 0xf) << 4)
#define TBTT_AP_OFFSET_UNKNOWN 255
@@ -2447,7 +2449,9 @@ enum mscs_description_subelem {
#define TBTT_BSS_PARAM_SAME_SSID BIT(1)
#define TBTT_BSS_PARAM_MULTIPLE_BSSID BIT(2)
#define TBTT_BSS_PARAM_TRANSMITTED_BSSID BIT(3)
-#define TBTT_BSS_PARAM_CO_LOCATED_ESS BIT(4)
+#define TBTT_BSS_PARAM_MEMBER_CO_LOCATED_ESS BIT(4)
#define TBTT_BSS_PARAM_20_TU_PROBE_RESP_ACTIVE BIT(5)
+#define TBTT_BSS_PARAM_CO_LOCATED BIT(6)
+#define TBTT_PSD_MAX_TXPOWER 255 /* dBm */
A BSS shall include the neighbor entry of a co-located BSS upon an incoming #endif /* IEEE802_11_DEFS_H */
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
--- a/src/ap/rrm.c --- a/src/ap/rrm.c
+++ b/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, static void hostapd_send_nei_report_resp(struct hostapd_data *hapd,
const u8 *addr, u8 dialog_token, const u8 *addr, u8 dialog_token,
struct wpa_ssid_value *ssid, u8 lci, 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 hostapd_neighbor_entry *nr;
struct wpabuf *buf; struct wpabuf *buf;
@@ -188,7 +163,7 @@ index f2d5cd1..c9d51df 100644
/* /*
* The number and length of the Neighbor Report elements in a Neighbor * 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, dl_list_for_each(nr, &hapd->nr_db, struct hostapd_neighbor_entry,
list) { list) {
@@ -217,9 +192,7 @@ index f2d5cd1..c9d51df 100644
- wpabuf_put_u8(buf, WLAN_EID_NEIGHBOR_REPORT); - wpabuf_put_u8(buf, WLAN_EID_NEIGHBOR_REPORT);
- wpabuf_put_u8(buf, len - 2); - wpabuf_put_u8(buf, len - 2);
- wpabuf_put_buf(buf, nr->nr); - wpabuf_put_buf(buf, nr->nr);
+ if (!hapd->iconf->he_co_locate) { -
+ int i;
- if (send_lci && nr->lci) { - if (send_lci && nr->lci) {
- wpabuf_put_u8(buf, WLAN_EID_MEASURE_REPORT); - wpabuf_put_u8(buf, WLAN_EID_MEASURE_REPORT);
- wpabuf_put_u8(buf, wpabuf_len(nr->lci)); - wpabuf_put_u8(buf, wpabuf_len(nr->lci));
@@ -231,12 +204,8 @@ index f2d5cd1..c9d51df 100644
- wpabuf_put_buf(buf, nr->lci); - wpabuf_put_buf(buf, nr->lci);
- *msmt_token = lci; - *msmt_token = lci;
- } - }
+ for (i = 0; i < hapd->iface->interfaces->count; i++) { + if (!hapd->iconf->he_co_locate) {
+ struct hostapd_iface *iface = hapd->iface->interfaces->iface[i]; + int i;
+ int j;
+
+ if (iface == hapd->iface || !iface->conf->he_co_locate)
+ continue;
- if (civic && nr->civic) { - if (civic && nr->civic) {
- wpabuf_put_u8(buf, WLAN_EID_MEASURE_REPORT); - wpabuf_put_u8(buf, WLAN_EID_MEASURE_REPORT);
@@ -248,6 +217,13 @@ index f2d5cd1..c9d51df 100644
- msmt_token = wpabuf_put(buf, 0); - msmt_token = wpabuf_put(buf, 0);
- wpabuf_put_buf(buf, nr->civic); - wpabuf_put_buf(buf, nr->civic);
- *msmt_token = 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++) { + for (j = 0; j < iface->num_bss; j++) {
+ nr = hostapd_neighbor_get(iface->bss[j], iface->bss[j]->own_addr, NULL); + nr = hostapd_neighbor_get(iface->bss[j], iface->bss[j]->own_addr, NULL);
+ if (!nr) + 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 --- a/src/ap/beacon.c
+++ b/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); buflen += hostapd_eid_dpp_cc_len(hapd);
if (hapd->iconf->multiple_bssid) if (hapd->iconf->multiple_bssid)
buflen += hostapd_eid_multiple_bssid_len(hapd, hidden, 0); buflen += hostapd_eid_multiple_bssid_len(hapd, hidden, 0);
@@ -292,7 +245,7 @@ index 769e0d0..8afaf7a 100644
resp = os_zalloc(buflen); resp = os_zalloc(buflen);
if (resp == NULL) 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_mbo(hapd, pos, (u8 *) resp + buflen - pos);
pos = hostapd_eid_owe_trans(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); pos = hostapd_eid_dpp_cc(hapd, pos, (u8 *) resp + buflen - pos);
@@ -301,7 +254,7 @@ index 769e0d0..8afaf7a 100644
if (hapd->conf->vendor_elements) { if (hapd->conf->vendor_elements) {
os_memcpy(pos, wpabuf_head(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 { enum ssid_match_result {
NO_SSID_MATCH, NO_SSID_MATCH,
EXACT_SSID_MATCH, EXACT_SSID_MATCH,
@@ -311,7 +264,7 @@ index 769e0d0..8afaf7a 100644
}; };
static enum ssid_match_result ssid_match(struct hostapd_data *hapd, 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; const u8 *pos, *end;
int wildcard = 0; int wildcard = 0;
@@ -319,7 +272,7 @@ index 769e0d0..8afaf7a 100644
if (ssid_len == 0) if (ssid_len == 0)
wildcard = 1; 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; 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); " signal=%d", MAC2STR(mgmt->sa), ssi_signal);
if (hapd->iconf->multiple_bssid && if (hapd->iconf->multiple_bssid &&
@@ -355,7 +308,7 @@ index 769e0d0..8afaf7a 100644
return; return;
resp = hostapd_gen_probe_resp(hapd, mgmt, elems.p2p != NULL, 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; total_len += 3;
} }
@@ -364,7 +317,7 @@ index 769e0d0..8afaf7a 100644
pos = hostapd_eid_fils_indic(hapd, buf, 0); pos = hostapd_eid_fils_indic(hapd, buf, 0);
buf_len = pos - buf; buf_len = pos - buf;
total_len += buf_len; 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 */ /* Fill in the Length field value */
*length_pos = pos - (length_pos + 1); *length_pos = pos - (length_pos + 1);
@@ -373,7 +326,7 @@ index 769e0d0..8afaf7a 100644
/* FILS Indication element */ /* FILS Indication element */
if (buf_len) { if (buf_len) {
os_memcpy(pos, buf, 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_mbo_ie_len(hapd);
tail_len += hostapd_eid_owe_trans_len(hapd); tail_len += hostapd_eid_owe_trans_len(hapd);
tail_len += hostapd_eid_dpp_cc_len(hapd); tail_len += hostapd_eid_dpp_cc_len(hapd);
@@ -383,7 +336,7 @@ index 769e0d0..8afaf7a 100644
tailpos = tail = os_malloc(tail_len); tailpos = tail = os_malloc(tail_len);
if (head == NULL || tail == NULL) { 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, tailpos = hostapd_eid_owe_trans(hapd, tailpos,
tail + tail_len - tailpos); tail + tail_len - tailpos);
tailpos = hostapd_eid_dpp_cc(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) { if (hapd->conf->vendor_elements) {
os_memcpy(tailpos, wpabuf_head(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 --- a/src/ap/ieee802_11.c
+++ b/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) if (len)
len += 2; /* Element ID and length */ 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; - *eid++ = WLAN_EID_REDUCED_NEIGHBOR_REPORT;
- size_offset = eid++; - size_offset = eid++;
-
- if (hapd->iface->num_bss > 1) {
- u8 op_class, channel;
+ if (ieee80211_freq_to_channel_ext(hapd->iface->freq, + if (ieee80211_freq_to_channel_ext(hapd->iface->freq,
+ hapd->iconf->secondary_channel, + hapd->iconf->secondary_channel,
+ hostapd_get_oper_chwidth(hapd->iconf), + hostapd_get_oper_chwidth(hapd->iconf),
@@ -481,9 +429,8 @@ index 668c4db..408c764 100644
+ NUM_HOSTAPD_MODES) + NUM_HOSTAPD_MODES)
+ return eid; + return eid;
- if (!(hapd->iface->drv_flags & WPA_DRIVER_FLAGS_AP_CSA) || - if (hapd->iface->num_bss > 1) {
- !hapd->iface->freq) - u8 op_class, channel;
- goto nr_db;
+ tbtt_count_pos = eid++; + tbtt_count_pos = eid++;
+ *eid++ = TBTT_INFO_LENGTH; + *eid++ = TBTT_INFO_LENGTH;
+ *eid++ = op_class; + *eid++ = op_class;
@@ -491,6 +438,10 @@ index 668c4db..408c764 100644
+ for (i = 0; i < hapd->iface->num_bss; i++) { + for (i = 0; i < hapd->iface->num_bss; i++) {
+ u8 bss_param = 0; + 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, - if (ieee80211_freq_to_channel_ext(hapd->iface->freq,
- hapd->iconf->secondary_channel, - hapd->iconf->secondary_channel,
- hostapd_get_oper_chwidth(hapd->iconf), - 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, dl_list_for_each(nr, &hapd->nr_db, struct hostapd_neighbor_entry,
list) { list) {
if (!nr->nr || wpabuf_len(nr->nr) < 12) 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); os_memcpy(eid, &nr->short_ssid, 4);
eid += 4; eid += 4;
*eid++ = nr->bss_parameters; *eid++ = nr->bss_parameters;
@@ -612,11 +563,9 @@ index 668c4db..408c764 100644
if (!count) if (!count)
eid -= 2; eid -= 2;
else 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 --- a/src/ap/ieee802_11.h
+++ b/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, int hostapd_eid_multiple_bssid_len(struct hostapd_data *hapd,
struct hostapd_data *hidden, struct hostapd_data *hidden,
u8 is_beacon); u8 is_beacon);
@@ -627,30 +576,3 @@ index 1145210..2f45b61 100644
int auth_sae_init_committed(struct hostapd_data *hapd, struct sta_info *sta); int auth_sae_init_committed(struct hostapd_data *hapd, struct sta_info *sta);
#ifdef CONFIG_SAE #ifdef CONFIG_SAE
void sae_clear_retransmit_timer(struct hostapd_data *hapd, 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 ++++++++ src/ap/ieee802_11_he.c | 8 ++++++++
1 file changed, 8 insertions(+) 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 --- a/src/ap/ieee802_11_he.c
+++ b/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); *pos++ = center_idx_to_bw_6ghz(seg0);
/* Channel Center Freq Seg0/Seg1 */ /* Channel Center Freq Seg0/Seg1 */
@@ -42,6 +40,3 @@ index 8391f94..18436a6 100644
*pos++ = seg0; *pos++ = seg0;
*pos++ = seg1; *pos++ = seg1;
/* Minimum Rate */ /* 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 * Convert 80+80 MHz channel width to new style as interop
--- a/src/common/hw_features_common.c --- a/src/common/hw_features_common.c
+++ b/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_VHT_LINK_ADAPTATION_VHT_MRQ_MFB);
VHT_CAP_CHECK(VHT_CAP_RX_ANTENNA_PATTERN); VHT_CAP_CHECK(VHT_CAP_RX_ANTENNA_PATTERN);
VHT_CAP_CHECK(VHT_CAP_TX_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 --- a/src/ap/ap_drv_ops.h
+++ b/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); 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 --- a/src/ap/hostapd.c
+++ b/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 channel_list_update_timeout(void *eloop_ctx, void *timeout_ctx);
static void hostapd_interface_setup_failure_handler(void *eloop_ctx, static void hostapd_interface_setup_failure_handler(void *eloop_ctx,
void *timeout_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, 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); eloop_cancel_timeout(auth_sae_process_commit, hapd, NULL);
#endif /* CONFIG_SAE */ #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); hostapd_enable_iface(iface);
} }
@@ -179,7 +179,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
--- a/src/ap/hostapd.h --- a/src/ap/hostapd.h
+++ b/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_beacon;
unsigned int cs_c_off_ecsa_proberesp; unsigned int cs_c_off_ecsa_proberesp;
@@ -196,9 +196,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
#ifdef CONFIG_P2P #ifdef CONFIG_P2P
struct p2p_data *p2p; struct p2p_data *p2p;
struct p2p_group *p2p_group; struct p2p_group *p2p_group;
@@ -642,6 +652,12 @@ void hostapd_periodic_iface(struct hosta @@ -681,6 +691,12 @@ int hostapd_owe_trans_get_info(struct ho
int hostapd_owe_trans_get_info(struct hostapd_data *hapd);
void hostapd_ocv_check_csa_sa_query(void *eloop_ctx, void *timeout_ctx); 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 +#ifdef CONFIG_IEEE80211AX
@@ -211,7 +211,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
int (*cb)(void *ctx, const u8 *sa, int (*cb)(void *ctx, const u8 *sa,
--- a/src/common/ieee802_11_defs.h --- a/src/common/ieee802_11_defs.h
+++ b/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_PARTIAL ((u32) BIT(30))
#define HE_OPERATION_BSS_COLOR_DISABLED ((u32) BIT(31)) #define HE_OPERATION_BSS_COLOR_DISABLED ((u32) BIT(31))
#define HE_OPERATION_BSS_COLOR_OFFSET 24 #define HE_OPERATION_BSS_COLOR_OFFSET 24
@@ -219,7 +219,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
/* Spatial Reuse defines */ /* Spatial Reuse defines */
#define SPATIAL_REUSE_SRP_DISALLOWED BIT(0) #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_BSS_PARAM_CO_LOCATED BIT(6)
#define TBTT_PSD_MAX_TXPOWER 255 /* dBm */ #define TBTT_PSD_MAX_TXPOWER 255 /* dBm */
@@ -231,7 +231,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
#endif /* IEEE802_11_DEFS_H */ #endif /* IEEE802_11_DEFS_H */
--- a/src/drivers/driver.h --- a/src/drivers/driver.h
+++ b/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]; u16 counter_offset_presp[2];
}; };
@@ -258,7 +258,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
/* TDLS peer capabilities for send_tdls_mgmt() */ /* TDLS peer capabilities for send_tdls_mgmt() */
enum tdls_peer_capability { enum tdls_peer_capability {
TDLS_PEER_HT = BIT(0), 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); 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 + src/common/ieee802_11_defs.h | 1 +
4 files changed, 28 insertions(+) 4 files changed, 28 insertions(+)
Index: hostapd-2021-02-08/src/ap/beacon.c --- a/src/ap/beacon.c
=================================================================== +++ b/src/ap/beacon.c
--- hostapd-2021-02-08.orig/src/ap/beacon.c @@ -610,11 +610,17 @@ static u8 * hostapd_gen_probe_resp(struc
+++ hostapd-2021-02-08/src/ap/beacon.c
@@ -592,11 +592,17 @@ static u8 * hostapd_gen_probe_resp(struc
#ifdef CONFIG_IEEE80211AX #ifdef CONFIG_IEEE80211AX
if (hapd->iconf->ieee80211ax && !hapd->conf->disable_11ax) { if (hapd->iconf->ieee80211ax && !hapd->conf->disable_11ax) {
@@ -37,7 +35,7 @@ Index: hostapd-2021-02-08/src/ap/beacon.c
} }
#endif /* CONFIG_IEEE80211AX */ #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 #ifdef CONFIG_IEEE80211AX
if (hapd->iconf->ieee80211ax && !hapd->conf->disable_11ax) { if (hapd->iconf->ieee80211ax && !hapd->conf->disable_11ax) {
@@ -56,10 +54,8 @@ Index: hostapd-2021-02-08/src/ap/beacon.c
} }
#endif /* CONFIG_IEEE80211AX */ #endif /* CONFIG_IEEE80211AX */
Index: hostapd-2021-02-08/src/ap/ieee802_11.h --- a/src/ap/ieee802_11.h
=================================================================== +++ b/src/ap/ieee802_11.h
--- hostapd-2021-02-08.orig/src/ap/ieee802_11.h
+++ hostapd-2021-02-08/src/ap/ieee802_11.h
@@ -100,6 +100,7 @@ u16 copy_sta_he_6ghz_capab(struct hostap @@ -100,6 +100,7 @@ u16 copy_sta_he_6ghz_capab(struct hostap
const u8 *he_6ghz_capab); const u8 *he_6ghz_capab);
int hostapd_get_he_twt_responder(struct hostapd_data *hapd, 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, void hostapd_tx_status(struct hostapd_data *hapd, const u8 *addr,
const u8 *buf, size_t len, int ack); const u8 *buf, size_t len, int ack);
void hostapd_eapol_tx_status(struct hostapd_data *hapd, const u8 *dst, void hostapd_eapol_tx_status(struct hostapd_data *hapd, const u8 *dst,
Index: hostapd-2021-02-08/src/ap/ieee802_11_he.c --- a/src/ap/ieee802_11_he.c
=================================================================== +++ b/src/ap/ieee802_11_he.c
--- hostapd-2021-02-08.orig/src/ap/ieee802_11_he.c @@ -524,3 +524,17 @@ int hostapd_get_he_twt_responder(struct
+++ hostapd-2021-02-08/src/ap/ieee802_11_he.c
@@ -521,3 +521,17 @@ int hostapd_get_he_twt_responder(struct
return !!(mac_cap[HE_MAC_CAPAB_0] & HE_MACCAP_TWT_RESPONDER); 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; + return eid;
+} +}
Index: hostapd-2021-02-08/src/common/ieee802_11_defs.h --- a/src/common/ieee802_11_defs.h
=================================================================== +++ b/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
@@ -480,6 +480,7 @@ @@ -480,6 +480,7 @@
#define WLAN_EID_EXT_HE_OPERATION 36 #define WLAN_EID_EXT_HE_OPERATION 36
#define WLAN_EID_EXT_HE_MU_EDCA_PARAMS 38 #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 */ #endif /* CONFIG_FILE_H */
--- a/hostapd/ctrl_iface.c --- a/hostapd/ctrl_iface.c
+++ b/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, static int hostapd_ctrl_iface_set_band(struct hostapd_data *hapd,
const char *band) const char *bands)
@@ -3301,81 +3265,6 @@ static int hostapd_ctrl_driver_flags2(st @@ -3435,81 +3399,6 @@ static int hostapd_ctrl_driver_flags2(st
return pos - buf; return pos - buf;
} }
@@ -488,7 +488,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
#endif /* CTRL_IFACE_AP_H */ #endif /* CTRL_IFACE_AP_H */
--- a/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
+++ b/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 ++++++++++++++ wpa_supplicant/wpa_supplicant.conf | 14 ++++++++++++++
6 files changed, 82 insertions(+), 1 deletion(-) 6 files changed, 82 insertions(+), 1 deletion(-)
Index: hostapd-2021-02-08/wpa_supplicant/config.c --- a/wpa_supplicant/config.c
=================================================================== +++ b/wpa_supplicant/config.c
--- hostapd-2021-02-08.orig/wpa_supplicant/config.c
+++ hostapd-2021-02-08/wpa_supplicant/config.c
@@ -20,7 +20,9 @@ @@ -20,7 +20,9 @@
#include "drivers/nl80211_copy.h"
#include "fst/fst.h" #include "fst/fst.h"
#include "ap/sta_info.h"
#include "config.h" #include "config.h"
- -
+#ifdef CONFIG_MESH +#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) #if !defined(CONFIG_CTRL_IFACE) && defined(CONFIG_NO_CONFIG_WRITE)
#define 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(dot11MeshRetryTimeout) },
{ INT(dot11MeshConfirmTimeout) }, { INT(dot11MeshConfirmTimeout) },
{ INT(dot11MeshHoldingTimeout) }, { INT(dot11MeshHoldingTimeout) },
@@ -43,7 +41,7 @@ Index: hostapd-2021-02-08/wpa_supplicant/config.c
#endif /* CONFIG_MESH */ #endif /* CONFIG_MESH */
{ INT(wpa_ptk_rekey) }, { INT(wpa_ptk_rekey) },
{ INT_RANGE(wpa_deny_ptk0_rekey, 0, 2) }, { 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->p2p_client_list);
os_free(ssid->bssid_ignore); os_free(ssid->bssid_ignore);
os_free(ssid->bssid_accept); os_free(ssid->bssid_accept);
@@ -52,7 +50,7 @@ Index: hostapd-2021-02-08/wpa_supplicant/config.c
#ifdef CONFIG_HT_OVERRIDES #ifdef CONFIG_HT_OVERRIDES
os_free(ssid->ht_mcs); os_free(ssid->ht_mcs);
#endif /* CONFIG_HT_OVERRIDES */ #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; ret = -1;
} }
@@ -71,10 +69,8 @@ Index: hostapd-2021-02-08/wpa_supplicant/config.c
#ifdef CONFIG_SAE #ifdef CONFIG_SAE
if (os_strcmp(var, "ssid") == 0 || if (os_strcmp(var, "ssid") == 0 ||
os_strcmp(var, "psk") == 0 || os_strcmp(var, "psk") == 0 ||
Index: hostapd-2021-02-08/wpa_supplicant/config_file.c --- a/wpa_supplicant/config_file.c
=================================================================== +++ b/wpa_supplicant/config_file.c
--- hostapd-2021-02-08.orig/wpa_supplicant/config_file.c
+++ hostapd-2021-02-08/wpa_supplicant/config_file.c
@@ -18,6 +18,9 @@ @@ -18,6 +18,9 @@
#include "common.h" #include "common.h"
#include "config.h" #include "config.h"
@@ -85,7 +81,7 @@ Index: hostapd-2021-02-08/wpa_supplicant/config_file.c
#include "uuid.h" #include "uuid.h"
#include "common/ieee802_1x_defs.h" #include "common/ieee802_1x_defs.h"
#include "p2p/p2p.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); write_int(f, "mac_addr", ssid->mac_addr, -1);
#ifdef CONFIG_MESH #ifdef CONFIG_MESH
STR(mesh_basic_rates); 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(dot11MeshMaxRetries, DEFAULT_MESH_MAX_RETRIES);
INT_DEF(dot11MeshRetryTimeout, DEFAULT_MESH_RETRY_TIMEOUT); INT_DEF(dot11MeshRetryTimeout, DEFAULT_MESH_RETRY_TIMEOUT);
INT_DEF(dot11MeshConfirmTimeout, DEFAULT_MESH_CONFIRM_TIMEOUT); INT_DEF(dot11MeshConfirmTimeout, DEFAULT_MESH_CONFIRM_TIMEOUT);
Index: hostapd-2021-02-08/wpa_supplicant/config_ssid.h --- a/wpa_supplicant/config_ssid.h
=================================================================== +++ b/wpa_supplicant/config_ssid.h
--- hostapd-2021-02-08.orig/wpa_supplicant/config_ssid.h @@ -553,6 +553,11 @@ struct wpa_ssid {
+++ hostapd-2021-02-08/wpa_supplicant/config_ssid.h */
@@ -546,6 +546,11 @@ struct wpa_ssid { int mesh_fwding;
int dot11MeshConfirmTimeout; /* msec */
int dot11MeshHoldingTimeout; /* msec */
+ char *accept_mac_file; + char *accept_mac_file;
+ char *deny_mac_file; + char *deny_mac_file;
@@ -111,10 +105,8 @@ Index: hostapd-2021-02-08/wpa_supplicant/config_ssid.h
int ht; int ht;
int ht40; int ht40;
Index: hostapd-2021-02-08/wpa_supplicant/mesh.c --- a/wpa_supplicant/mesh.c
=================================================================== +++ b/wpa_supplicant/mesh.c
--- hostapd-2021-02-08.orig/wpa_supplicant/mesh.c
+++ hostapd-2021-02-08/wpa_supplicant/mesh.c
@@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
#include "common/hw_features_common.h" #include "common/hw_features_common.h"
#include "ap/sta_info.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 "ap/ieee802_11.h"
#include "config_ssid.h" #include "config_ssid.h"
#include "config.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 = ifmsh->bss[0]->dot11RSNASAERetransPeriod =
wpa_s->conf->dot11RSNASAERetransPeriod; wpa_s->conf->dot11RSNASAERetransPeriod;
os_strlcpy(bss->conf->iface, wpa_s->ifname, sizeof(bss->conf->iface)); 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); mconf = mesh_config_create(wpa_s, ssid);
if (!mconf) 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) const u8 *ies, size_t ie_len)
{ {
struct ieee802_11_elems elems; struct ieee802_11_elems elems;
@@ -158,10 +150,8 @@ Index: hostapd-2021-02-08/wpa_supplicant/mesh.c
wpa_msg(wpa_s, MSG_INFO, wpa_msg(wpa_s, MSG_INFO,
"new peer notification for " MACSTR, MAC2STR(addr)); "new peer notification for " MACSTR, MAC2STR(addr));
Index: hostapd-2021-02-08/wpa_supplicant/mesh_mpm.c --- a/wpa_supplicant/mesh_mpm.c
=================================================================== +++ b/wpa_supplicant/mesh_mpm.c
--- hostapd-2021-02-08.orig/wpa_supplicant/mesh_mpm.c
+++ hostapd-2021-02-08/wpa_supplicant/mesh_mpm.c
@@ -16,6 +16,7 @@ @@ -16,6 +16,7 @@
#include "ap/hostapd.h" #include "ap/hostapd.h"
#include "ap/sta_info.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) { if (!elems.mesh_id || !elems.mesh_config) {
wpa_printf(MSG_DEBUG, wpa_printf(MSG_DEBUG,
"MPM: No Mesh ID or Mesh Configuration element"); "MPM: No Mesh ID or Mesh Configuration element");
Index: hostapd-2021-02-08/wpa_supplicant/wpa_supplicant.conf --- a/wpa_supplicant/wpa_supplicant.conf
=================================================================== +++ b/wpa_supplicant/wpa_supplicant.conf
--- hostapd-2021-02-08.orig/wpa_supplicant/wpa_supplicant.conf @@ -153,6 +153,20 @@ ap_scan=1
+++ hostapd-2021-02-08/wpa_supplicant/wpa_supplicant.conf # Enable 802.11s layer-2 routing and forwarding
@@ -150,6 +150,20 @@ ap_scan=1 #mesh_fwding=1
# This timeout value is used in mesh STA to clean up inactive stations.
#mesh_max_inactivity=300
+# Mesh node address -based authentication +# Mesh node address -based authentication
+# Please note that this kind of access control requires a driver that uses +# 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 --- a/src/ap/ieee802_11_he.c
+++ b/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 << params |= (hapd->iface->conf->he_op.he_rts_threshold <<
HE_OPERATION_RTS_THRESHOLD_OFFSET); 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 --- a/src/drivers/driver_nl80211.c
+++ b/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, static int nl80211_add_ts(void *priv, u8 tsid, const u8 *addr,
u8 user_priority, u16 admitted_time) 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, .get_survey = wpa_driver_nl80211_get_survey,
.status = wpa_driver_nl80211_status, .status = wpa_driver_nl80211_status,
.switch_channel = nl80211_switch_channel, .switch_channel = nl80211_switch_channel,
@@ -110,7 +110,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
.get_noa = wpa_driver_get_p2p_noa, .get_noa = wpa_driver_get_p2p_noa,
--- a/src/drivers/nl80211_copy.h --- a/src/drivers/nl80211_copy.h
+++ b/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_FILS_DISCOVERY,
NL80211_CMD_SET_UNSOL_BCAST_PROBE_RESP, NL80211_CMD_SET_UNSOL_BCAST_PROBE_RESP,
@@ -125,7 +125,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
/* add new commands above here */ /* add new commands above here */
/* used to define NL80211_CMD_MAX below */ /* 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_COUNT,
NL80211_ATTR_MULTIPLE_BSSID_IES, NL80211_ATTR_MULTIPLE_BSSID_IES,

View File

@@ -34,7 +34,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
#include "utils/includes.h" #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]); 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" #include "utils/includes.h"
#ifdef CONFIG_TESTING_OPTIONS #ifdef CONFIG_TESTING_OPTIONS
@@ -56,6 +57,7 @@ @@ -57,6 +58,7 @@
#include "mesh.h" #include "mesh.h"
#include "dpp_supplicant.h" #include "dpp_supplicant.h"
#include "sme.h" #include "sme.h"
@@ -140,7 +140,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
#ifdef __NetBSD__ #ifdef __NetBSD__
#include <net/if_ether.h> #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); 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( static int wpa_supplicant_ctrl_iface_mesh_peer_add(
struct wpa_supplicant *wpa_s, char *cmd) 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; reply_len = -1;
#endif /* CONFIG_IBSS_RSN */ #endif /* CONFIG_IBSS_RSN */
#ifdef CONFIG_MESH #ifdef CONFIG_MESH
@@ -220,7 +220,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
--- a/wpa_supplicant/wpa_cli.c --- a/wpa_supplicant/wpa_cli.c
+++ b/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); 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 */ #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, { "mesh_link_probe", wpa_cli_cmd_mesh_link_probe, NULL,
cli_cmd_flag_none, cli_cmd_flag_none,
"<addr> [payload=<hex dump of payload>] = Probe a mesh link for a given peer by injecting a frame." }, "<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" #include "includes.h"
#ifdef CONFIG_MATCH_IFACE #ifdef CONFIG_MATCH_IFACE
@@ -49,7 +50,6 @@ @@ -50,7 +51,6 @@
#include "ibss_rsn.h" #include "ibss_rsn.h"
#include "sme.h" #include "sme.h"
#include "gas_query.h" #include "gas_query.h"
@@ -271,7 +271,7 @@ Signed-off-by: Nishant Pandey <nishpand@codeaurora.org>
#include "p2p_supplicant.h" #include "p2p_supplicant.h"
#include "wifi_display.h" #include "wifi_display.h"
#include "notify.h" #include "notify.h"
@@ -67,6 +67,7 @@ @@ -68,6 +68,7 @@
#include "ap/ap_config.h" #include "ap/ap_config.h"
#include "ap/hostapd.h" #include "ap/hostapd.h"
#endif /* CONFIG_MESH */ #endif /* CONFIG_MESH */

View File

@@ -25,7 +25,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
#ifdef CONFIG_FILS #ifdef CONFIG_FILS
void hostapd_notify_assoc_fils_finish(struct hostapd_data *hapd, void hostapd_notify_assoc_fils_finish(struct hostapd_data *hapd,
struct sta_info *sta) 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"); "Failed to update beacons with MU-EDCA parameters");
} }
@@ -65,7 +65,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
#ifdef CONFIG_OWE #ifdef CONFIG_OWE
static int hostapd_notif_update_dh_ie(struct hostapd_data *hapd, static int hostapd_notif_update_dh_ie(struct hostapd_data *hapd,
const u8 *peer, const u8 *ie, 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: case EVENT_UPDATE_MUEDCA_PARAMS:
hostapd_event_update_muedca_params(hapd, &data->update_muedca); hostapd_event_update_muedca_params(hapd, &data->update_muedca);
break; break;
@@ -85,7 +85,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
break; break;
--- a/src/drivers/driver.h --- a/src/drivers/driver.h
+++ b/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. * beacon.
*/ */
EVENT_UPDATE_MUEDCA_PARAMS, 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_vi_param[3];
u8 he_mu_ac_vo_param[3]; u8 he_mu_ac_vo_param[3];
} update_muedca; } update_muedca;
@@ -153,7 +153,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
default: default:
return "NL80211_CMD_UNKNOWN"; 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 static void
nl80211_control_port_frame_tx_status(struct wpa_driver_nl80211_data *drv, 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: case NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS:
nl80211_update_muedca_params_event(drv, tb); nl80211_update_muedca_params_event(drv, tb);
break; break;

View File

@@ -14,7 +14,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
--- a/hostapd/config_file.c --- a/hostapd/config_file.c
+++ b/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) { } else if (os_strcmp(buf, "he_ul_mumimo") == 0) {
conf->he_phy_capab.he_ul_mumimo = atoi(pos); conf->he_phy_capab.he_ul_mumimo = atoi(pos);
} else if (os_strcmp(buf, "he_bss_color") == 0) { } 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) { } else if (os_strcmp(buf, "he_default_pe_duration") == 0) {
--- a/hostapd/hostapd.conf --- a/hostapd/hostapd.conf
+++ b/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 # 1 = supported
#he_mu_beamformer=1 #he_mu_beamformer=1

View File

@@ -95,7 +95,7 @@ Signed-off-by: Karthikeyan Periyasamy <periyasa@codeaurora.org>
#endif /* AP_LIST_H */ #endif /* AP_LIST_H */
--- a/src/ap/hostapd.c --- a/src/ap/hostapd.c
+++ b/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 cca_settings settings;
struct os_time now; struct os_time now;
int i, r, b, ret; int i, r, b, ret;
@@ -103,7 +103,7 @@ Signed-off-by: Karthikeyan Periyasamy <periyasa@codeaurora.org>
if (os_get_time(&now)) if (os_get_time(&now))
return; 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) if (now.sec - hapd->last_color_collision.sec > 50)
return; return;

View File

@@ -1,8 +1,6 @@
Index: hostapd-2021-02-20-59e9794c/hostapd/ctrl_iface.c --- a/hostapd/ctrl_iface.c
=================================================================== +++ b/hostapd/ctrl_iface.c
--- hostapd-2021-02-20-59e9794c.orig/hostapd/ctrl_iface.c @@ -2679,6 +2679,59 @@ static int hostapd_ctrl_check_freq_param
+++ hostapd-2021-02-20-59e9794c/hostapd/ctrl_iface.c
@@ -2673,6 +2673,59 @@ static int hostapd_ctrl_check_freq_param
} }
#endif /* NEED_AP_MLME */ #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, static int hostapd_ctrl_iface_chan_switch(struct hostapd_iface *iface,
char *pos) 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) { } else if (os_strncmp(buf, "CHAN_SWITCH ", 12) == 0) {
if (hostapd_ctrl_iface_chan_switch(hapd->iface, buf + 12)) if (hostapd_ctrl_iface_chan_switch(hapd->iface, buf + 12))
reply_len = -1; 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) { } else if (os_strncmp(buf, "VENDOR ", 7) == 0) {
reply_len = hostapd_ctrl_iface_vendor(hapd, buf + 7, reply, reply_len = hostapd_ctrl_iface_vendor(hapd, buf + 7, reply,
reply_size); reply_size);
Index: hostapd-2021-02-20-59e9794c/hostapd/hostapd_cli.c --- a/hostapd/hostapd_cli.c
=================================================================== +++ b/hostapd/hostapd_cli.c
--- hostapd-2021-02-20-59e9794c.orig/hostapd/hostapd_cli.c
+++ hostapd-2021-02-20-59e9794c/hostapd/hostapd_cli.c
@@ -1150,6 +1150,27 @@ static int hostapd_cli_cmd_fst(struct wp @@ -1150,6 +1150,27 @@ static int hostapd_cli_cmd_fst(struct wp
} }
#endif /* CONFIG_FST */ #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, { "hs20_wnm_notif", hostapd_cli_cmd_hs20_wnm_notif, NULL,
"<addr> <url>\n" "<addr> <url>\n"
" = send WNM-Notification Subscription Remediation Request" }, " = send WNM-Notification Subscription Remediation Request" },
Index: 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
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ctrl_iface_ap.c
+++ hostapd-2021-02-20-59e9794c/src/ap/ctrl_iface_ap.c
@@ -1055,10 +1055,12 @@ int hostapd_ctrl_iface_status(struct hos @@ -1055,10 +1055,12 @@ int hostapd_ctrl_iface_status(struct hos
ret = os_snprintf(buf + len, buflen - len, ret = os_snprintf(buf + len, buflen - len,
"he_oper_chwidth=%d\n" "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)) if (os_snprintf_error(buflen - len, ret))
return len; return len;
len += ret; len += ret;
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c --- a/src/ap/hostapd.c
=================================================================== +++ b/src/ap/hostapd.c
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.c @@ -3477,7 +3477,7 @@ int hostapd_csa_in_progress(struct hosta
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
@@ -3443,7 +3443,7 @@ int hostapd_csa_in_progress(struct hosta
#ifdef NEED_AP_MLME #ifdef NEED_AP_MLME
@@ -145,7 +137,7 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.c
{ {
os_free(beacon->head); os_free(beacon->head);
beacon->head = NULL; 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 cca_settings *settings)
{ {
struct hostapd_iface *iface = hapd->iface; struct hostapd_iface *iface = hapd->iface;
Index: hostapd-2021-02-20-59e9794c/src/ap/hostapd.h --- a/src/ap/hostapd.h
=================================================================== +++ b/src/ap/hostapd.h
--- hostapd-2021-02-20-59e9794c.orig/src/ap/hostapd.h @@ -690,11 +690,13 @@ void hostapd_periodic_iface(struct hosta
+++ hostapd-2021-02-20-59e9794c/src/ap/hostapd.h
@@ -661,11 +661,13 @@ void hostapd_periodic_iface(struct hosta
int hostapd_owe_trans_get_info(struct hostapd_data *hapd); int hostapd_owe_trans_get_info(struct hostapd_data *hapd);
void hostapd_ocv_check_csa_sa_query(void *eloop_ctx, void *timeout_ctx); void hostapd_ocv_check_csa_sa_query(void *eloop_ctx, void *timeout_ctx);
int hostapd_check_max_sta(struct hostapd_data *hapd); 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 --- a/src/ap/drv_callbacks.c
+++ b/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) 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); wpa_printf(MSG_DEBUG, "CCA aborted on %s for cca_color: %d", hapd->conf->iface, hapd->cca_color);
--- a/src/ap/hostapd.c --- a/src/ap/hostapd.c
+++ b/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; old_color = iface->conf->he_op.he_bss_color;
iface->conf->he_op.he_bss_color = hapd->cca_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) { if (ret) {
--- a/src/ap/hostapd.h --- a/src/ap/hostapd.h
+++ b/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 #ifdef CONFIG_IEEE80211AX
int cca_in_progress; int cca_in_progress;
@@ -85,7 +85,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
unsigned int cca_c_off_beacon; unsigned int cca_c_off_beacon;
--- a/src/ap/ieee802_11_he.c --- a/src/ap/ieee802_11_he.c
+++ b/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) 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 --- a/src/ap/hostapd.c
+++ b/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; return;
/* check if there has been a recent collision */ /* 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 = os_random() % HE_OPERATION_BSS_COLOR_MAX - 1;
r++; 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) { if (i == HE_OPERATION_BSS_COLOR_MAX) {
/* there are no free colors so turn bss coloring off */ /* 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 --- a/src/ap/hostapd.h
+++ b/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 #ifdef CONFIG_IEEE80211AX
int cca_in_progress; int cca_in_progress;
int cca_zero_count; int cca_zero_count;

View File

@@ -25,7 +25,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
--- a/hostapd/config_file.c --- a/hostapd/config_file.c
+++ b/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 */ #endif /* CONFIG_MACSEC */
} else if (os_strcmp(buf, "multiple_bssid") == 0) { } else if (os_strcmp(buf, "multiple_bssid") == 0) {
conf->multiple_bssid = atoi(pos); 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) { } else if (os_strcmp(buf, "disable_11n") == 0) {
--- a/hostapd/ctrl_iface.c --- a/hostapd/ctrl_iface.c
+++ b/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? */ * submitting multi-BSS CSA requests? */
return ret; return ret;
} }
@@ -50,7 +50,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
return 0; return 0;
--- a/src/ap/ap_config.c --- a/src/ap/ap_config.c
+++ b/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; return -1;
} }
@@ -61,7 +61,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
return -1; return -1;
--- a/src/ap/ap_config.h --- a/src/ap/ap_config.h
+++ b/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 ht40_plus_minus_allowed;
u8 multiple_bssid; u8 multiple_bssid;
@@ -72,7 +72,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
u8 use_driver_iface_addr; u8 use_driver_iface_addr;
--- a/src/ap/beacon.c --- a/src/ap/beacon.c
+++ b/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_index = hostapd_get_bss_index(hapd);
params->multiple_bssid_count = hapd->iface->num_bss; 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); params->multiple_bssid_ies = os_zalloc(len);
if (params->multiple_bssid_ies == NULL) if (params->multiple_bssid_ies == NULL)
return -1; 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, 1, params->multiple_bssid_ie_offsets,
&params->multiple_bssid_ie_count, &params->multiple_bssid_ie_count,
MULTIPLE_BSSID_IE_MAX, 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)) (ext_cap_len >= 13) && (ext_cap_pos[12] & 0x08))
--- a/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
+++ b/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++) { for (i = *count; i < hapd->iface->num_bss; i++) {
bss = hapd->iface->bss[i]; bss = hapd->iface->bss[i];
conf = bss->conf; conf = bss->conf;
@@ -102,7 +102,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
u16 capab_info; u16 capab_info;
*eid++ = WLAN_EID_SUBELEMENT_NONTRANSMITTED_BSSID_PROFILE; *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; *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 #define WLAN_EID_EXT_EDMG_CAPABILITIES 61
--- a/src/drivers/driver.h --- a/src/drivers/driver.h
+++ b/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; 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 * 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 * multiple_bssid_ie_count - The the number of offsets inside multiple_bssid_ie_offsets
*/ */
int multiple_bssid_ie_count; int multiple_bssid_ie_count;
@@ -183,7 +183,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
struct wpa_driver_mesh_bss_params { struct wpa_driver_mesh_bss_params {
--- a/src/drivers/driver_nl80211.c --- a/src/drivers/driver_nl80211.c
+++ b/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); params->multiple_bssid_index);
nla_put_u8(msg, NL80211_ATTR_MULTIPLE_BSSID_COUNT, nla_put_u8(msg, NL80211_ATTR_MULTIPLE_BSSID_COUNT,
params->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) { 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; 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. * it, and the interface should be deleted when the socket is closed.
--- a/src/drivers/nl80211_copy.h --- a/src/drivers/nl80211_copy.h
+++ b/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_ATTR_HE_MUEDCA_PARAMS: MU-EDCA AC parameters for the
NL80211_CMD_UPDATE_HE_MUEDCA_PARAMS command. 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 * @NL80211_ATTR_MULTIPLE_BSSID_PARENT: If this is a Non-Transmitted BSSID, define
* the parent (transmitting) interface. * 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_COUNT: The number of BSSs inside the multi bssid element.
* *
* @NL80211_ATTR_MULTIPLE_BSSID_IES: The Elements that describe our multiple BSS group. * @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 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined * @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, 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 +++++++++++++++++++++++----- src/ap/ieee802_11_shared.c | 28 +++++++++++++++++++++++-----
4 files changed, 39 insertions(+), 20 deletions(-) 4 files changed, 39 insertions(+), 20 deletions(-)
Index: hostapd-2021-02-20/hostapd/ctrl_iface.c --- a/hostapd/ctrl_iface.c
=================================================================== +++ b/hostapd/ctrl_iface.c
--- hostapd-2021-02-20.orig/hostapd/ctrl_iface.c @@ -2827,9 +2827,6 @@ static int hostapd_ctrl_iface_chan_switc
+++ hostapd-2021-02-20/hostapd/ctrl_iface.c
@@ -2759,9 +2759,6 @@ static int hostapd_ctrl_iface_chan_switc
* submitting multi-BSS CSA requests? */ * submitting multi-BSS CSA requests? */
return ret; return ret;
} }
@@ -34,10 +32,8 @@ Index: hostapd-2021-02-20/hostapd/ctrl_iface.c
} }
return 0; return 0;
Index: hostapd-2021-02-20/src/ap/beacon.c --- a/src/ap/beacon.c
=================================================================== +++ b/src/ap/beacon.c
--- hostapd-2021-02-20.orig/src/ap/beacon.c
+++ hostapd-2021-02-20/src/ap/beacon.c
@@ -434,7 +434,7 @@ static u8 * hostapd_gen_probe_resp(struc @@ -434,7 +434,7 @@ static u8 * hostapd_gen_probe_resp(struc
{ {
struct hostapd_data *hidden = NULL; 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_adv(hapd, pos);
pos = hostapd_eid_time_zone(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, MULTIPLE_BSSID_IE_MAX,
hapd->iconf->ema_beacon); hapd->iconf->ema_beacon);
params->multiple_bssid_ie_len = end - params->multiple_bssid_ies; 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; params->dtim_period = hapd->conf->dtim_period;
} }
Index: hostapd-2021-02-20/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
=================================================================== +++ b/src/ap/ieee802_11.c
--- hostapd-2021-02-20.orig/src/ap/ieee802_11.c @@ -175,6 +175,7 @@ u8 * hostapd_eid_ext_supp_rates(struct h
+++ hostapd-2021-02-20/src/ap/ieee802_11.c
@@ -167,6 +167,7 @@ u8 * hostapd_eid_ext_supp_rates(struct h
int i, num, count; int i, num, count;
int h2e_required; int h2e_required;
@@ -82,7 +76,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
if (hapd->iface->current_rates == NULL) if (hapd->iface->current_rates == NULL)
return eid; 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; *pos++ = 0x80 | BSS_MEMBERSHIP_SELECTOR_SAE_H2E_ONLY;
} }
@@ -90,7 +84,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
return pos; 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)) if (wpa_auth_get_wpa_ie(bss->wpa_auth, &ies_len))
nontx_profile_len += 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) { if (len + nontx_profile_len > 255) {
goto multiple_bssid_too_big; 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_data *bss;
struct hostapd_bss_config *conf; struct hostapd_bss_config *conf;
u8 *size_offset, *num_offset; u8 *size_offset, *num_offset;
@@ -114,7 +108,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
*eid++ = WLAN_EID_MULTIPLE_BSSID; *eid++ = WLAN_EID_MULTIPLE_BSSID;
size_offset = eid++; 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++) { for (i = *count; i < hapd->iface->num_bss; i++) {
bss = hapd->iface->bss[i]; bss = hapd->iface->bss[i];
conf = bss->conf; conf = bss->conf;
@@ -125,7 +119,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
*eid++ = WLAN_EID_SUBELEMENT_NONTRANSMITTED_BSSID_PROFILE; *eid++ = WLAN_EID_SUBELEMENT_NONTRANSMITTED_BSSID_PROFILE;
bss_size_offset = eid++; 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; *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; *bss_size_offset = (eid - bss_size_offset) - 1;
Index: hostapd-2021-02-20/src/ap/ieee802_11_shared.c --- a/src/ap/ieee802_11_shared.c
=================================================================== +++ b/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
@@ -427,9 +427,13 @@ static void hostapd_ext_capab_byte(struc @@ -427,9 +427,13 @@ static void hostapd_ext_capab_byte(struc
* Identifiers Used Exclusively */ * 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) { while (len > 0 && eid[1 + len] == 0) {
len--; len--;
eid[1] = len; eid[1] = len;
Index: hostapd-2021-02-20/src/ap/ap_config.h --- a/src/ap/ap_config.h
=================================================================== +++ b/src/ap/ap_config.h
--- hostapd-2021-02-20.orig/src/ap/ap_config.h @@ -541,6 +541,7 @@ struct hostapd_bss_config {
+++ hostapd-2021-02-20/src/ap/ap_config.h
@@ -534,6 +534,7 @@ struct hostapd_bss_config {
bool disable_11n; bool disable_11n;
bool disable_11ac; bool disable_11ac;
bool disable_11ax; bool disable_11ax;

View File

@@ -14,11 +14,9 @@ Signed-off-by: Abinaya Kalaiselvan <akalaise@codeaurora.org>
src/rsn_supp/wpa.c | 5 +++-- src/rsn_supp/wpa.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-) 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 --- a/src/rsn_supp/wpa.c
+++ b/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) { if (sm->ext_key_id) {
u16 key_id; u16 key_id;
@@ -32,6 +30,3 @@ index 3205527..88c1e3e 100644
"RSN: No Key ID in Extended Key ID handshake"); "RSN: No Key ID in Extended Key ID handshake");
sm->keyidx_active = 0; sm->keyidx_active = 0;
return sm->use_ext_key_id ? -1 : 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 ++++- wpa_supplicant/scan.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-) 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 --- a/wpa_supplicant/scan.c
+++ b/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 */ #endif /* CONFIG_P2P */
@@ -28,6 +26,3 @@ index b9e4162..9992e42 100644
#endif /* CONFIG_WPS */ #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 ++++++++++++++++++++++++++++++ wpa_supplicant/wpa_supplicant.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+) 1 file changed, 30 insertions(+)
Index: hostapd-2021-02-18/wpa_supplicant/wpa_supplicant.c --- a/wpa_supplicant/wpa_supplicant.c
=================================================================== +++ b/wpa_supplicant/wpa_supplicant.c
--- hostapd-2021-02-18.orig/wpa_supplicant/wpa_supplicant.c @@ -2431,6 +2431,57 @@ static int drv_supports_vht(struct wpa_s
+++ hostapd-2021-02-18/wpa_supplicant/wpa_supplicant.c
@@ -2378,6 +2378,57 @@ static int drv_supports_vht(struct wpa_s
return mode->vht_capab != 0; 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) static bool ibss_mesh_is_80mhz_avail(int channel, struct hostapd_hw_modes *mode)
{ {
int i; 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 else
#endif /* CONFIG_HE_OVERRIDES */ #endif /* CONFIG_HE_OVERRIDES */
freq->he_enabled = mode->he_capab[ieee80211_mode].he_supported; 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++) { for (chan_idx = 0; chan_idx < mode->num_channels; chan_idx++) {
Index: hostapd-2021-02-18/src/drivers/driver.h --- a/src/drivers/driver.h
=================================================================== +++ b/src/drivers/driver.h
--- hostapd-2021-02-18.orig/src/drivers/driver.h @@ -1201,6 +1201,11 @@ struct wpa_driver_associate_params {
+++ hostapd-2021-02-18/src/drivers/driver.h
@@ -1203,6 +1203,11 @@ struct wpa_driver_associate_params {
* 2 = both hunting-and-pecking loop and hash-to-element enabled * 2 = both hunting-and-pecking loop and hash-to-element enabled
*/ */
int sae_pwe; int sae_pwe;
@@ -102,11 +98,9 @@ Index: hostapd-2021-02-18/src/drivers/driver.h
}; };
enum hide_ssid { enum hide_ssid {
Index: hostapd-2021-02-18/wpa_supplicant/config.c --- a/wpa_supplicant/config.c
=================================================================== +++ b/wpa_supplicant/config.c
--- hostapd-2021-02-18.orig/wpa_supplicant/config.c @@ -2739,6 +2739,7 @@ static const struct parse_data ssid_fiel
+++ hostapd-2021-02-18/wpa_supplicant/config.c
@@ -2804,6 +2804,7 @@ static const struct parse_data ssid_fiel
{ INT_RANGE(beacon_prot, 0, 1) }, { INT_RANGE(beacon_prot, 0, 1) },
{ INT_RANGE(transition_disable, 0, 255) }, { INT_RANGE(transition_disable, 0, 255) },
{ INT_RANGE(sae_pk, 0, 2) }, { INT_RANGE(sae_pk, 0, 2) },
@@ -114,11 +108,9 @@ Index: hostapd-2021-02-18/wpa_supplicant/config.c
}; };
#undef OFFSET #undef OFFSET
Index: hostapd-2021-02-18/wpa_supplicant/config_file.c --- a/wpa_supplicant/config_file.c
=================================================================== +++ b/wpa_supplicant/config_file.c
--- hostapd-2021-02-18.orig/wpa_supplicant/config_file.c @@ -887,7 +887,7 @@ static void wpa_config_write_network(FIL
+++ hostapd-2021-02-18/wpa_supplicant/config_file.c
@@ -885,7 +885,7 @@ static void wpa_config_write_network(FIL
#ifdef CONFIG_HE_OVERRIDES #ifdef CONFIG_HE_OVERRIDES
INT(disable_he); INT(disable_he);
#endif /* CONFIG_HE_OVERRIDES */ #endif /* CONFIG_HE_OVERRIDES */
@@ -127,11 +119,9 @@ Index: hostapd-2021-02-18/wpa_supplicant/config_file.c
#undef STR #undef STR
#undef INT #undef INT
#undef INT_DEF #undef INT_DEF
Index: hostapd-2021-02-18/wpa_supplicant/config_ssid.h --- a/wpa_supplicant/config_ssid.h
=================================================================== +++ b/wpa_supplicant/config_ssid.h
--- hostapd-2021-02-18.orig/wpa_supplicant/config_ssid.h @@ -1172,6 +1172,11 @@ struct wpa_ssid {
+++ hostapd-2021-02-18/wpa_supplicant/config_ssid.h
@@ -1165,6 +1165,11 @@ struct wpa_ssid {
* configuration. * configuration.
*/ */
bool was_recently_reconfigured; bool was_recently_reconfigured;
@@ -143,11 +133,9 @@ Index: hostapd-2021-02-18/wpa_supplicant/config_ssid.h
}; };
#endif /* CONFIG_SSID_H */ #endif /* CONFIG_SSID_H */
Index: hostapd-2021-02-18/wpa_supplicant/wpa_cli.c --- a/wpa_supplicant/wpa_cli.c
=================================================================== +++ b/wpa_supplicant/wpa_cli.c
--- hostapd-2021-02-18.orig/wpa_supplicant/wpa_cli.c @@ -1487,7 +1487,8 @@ static const char *network_fields[] = {
+++ hostapd-2021-02-18/wpa_supplicant/wpa_cli.c
@@ -1482,7 +1482,8 @@ static const char *network_fields[] = {
#ifdef CONFIG_HS20 #ifdef CONFIG_HS20
"update_identifier", "update_identifier",
#endif /* CONFIG_HS20 */ #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 --- a/wpa_supplicant/wpa_supplicant.conf
=================================================================== +++ b/wpa_supplicant/wpa_supplicant.conf
--- hostapd-2021-02-18.orig/wpa_supplicant/wpa_supplicant.conf @@ -161,6 +161,9 @@ ap_scan=1
+++ hostapd-2021-02-18/wpa_supplicant/wpa_supplicant.conf
@@ -158,6 +158,9 @@ ap_scan=1
# 1 = deny unless in accept list # 1 = deny unless in accept list
macaddr_acl=0 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 # 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 # MAC addresses, one per line). Use absolute path name to make sure that the
# files can be read on SIGHUP configuration reloads. # files can be read on SIGHUP configuration reloads.
@@ -1983,6 +1986,15 @@ network={ @@ -1974,6 +1977,15 @@ network={
psk="very secret passphrase" psk="very secret passphrase"
} }

View File

@@ -25,7 +25,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
--- a/src/ap/ap_config.c --- a/src/ap/ap_config.c
+++ b/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 */ #endif /* CONFIG_WEP */
@@ -37,7 +37,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
bss->macaddr_acl != USE_EXTERNAL_RADIUS_AUTH) { bss->macaddr_acl != USE_EXTERNAL_RADIUS_AUTH) {
--- a/src/ap/hostapd.c --- a/src/ap/hostapd.c
+++ b/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; return;
if (hapd->conf->wmm_enabled < 0) if (hapd->conf->wmm_enabled < 0)
@@ -46,7 +46,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
#ifndef CONFIG_NO_RADIUS #ifndef CONFIG_NO_RADIUS
radius_client_reconfig(hapd->radius, hapd->conf->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) 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 + src/common/ieee802_11_defs.h | 1 +
6 files changed, 76 insertions(+), 36 deletions(-) 6 files changed, 76 insertions(+), 36 deletions(-)
Index: hostapd-2021-02-20/src/ap/beacon.c --- a/src/ap/beacon.c
=================================================================== +++ b/src/ap/beacon.c
--- hostapd-2021-02-20.orig/src/ap/beacon.c
+++ hostapd-2021-02-20/src/ap/beacon.c
@@ -8,6 +8,7 @@ @@ -8,6 +8,7 @@
* See README for more details. * See README for more details.
*/ */
@@ -92,7 +90,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
/* eCSA IE */ /* eCSA IE */
csa_pos = hostapd_eid_ecsa(hapd, pos); 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); " signal=%d", MAC2STR(mgmt->sa), ssi_signal);
if (hapd->iconf->multiple_bssid && if (hapd->iconf->multiple_bssid &&
@@ -108,7 +106,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
if (resp == NULL) if (resp == NULL)
return; return;
@@ -1193,7 +1199,7 @@ static u8 * hostapd_probe_resp_offloads( @@ -1195,7 +1201,7 @@ static u8 * hostapd_probe_resp_offloads(
"this"); "this");
/* Generate a Probe Response template for the non-P2P case */ /* 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 */ #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; hapd->conf->unsol_bcast_probe_resp_interval;
return hostapd_gen_probe_resp(hapd, NULL, 0, return hostapd_gen_probe_resp(hapd, NULL, 0,
@@ -127,7 +125,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
} }
#endif /* CONFIG_IEEE80211AX */ #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) { if (hapd->iconf->multiple_bssid) {
@@ -136,7 +134,7 @@ Index: hostapd-2021-02-20/src/ap/beacon.c
u8 *end; u8 *end;
params->multiple_bssid_index = hostapd_get_bss_index(hapd); 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; params->ema_beacon = hapd->iconf->ema_beacon;
if (hapd != hapd->iface->bss[0]) if (hapd != hapd->iface->bss[0])
params->multiple_bssid_parent = hapd->iface->bss[0]->conf->iface; 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); params->multiple_bssid_ies = os_zalloc(len);
if (params->multiple_bssid_ies == NULL) if (params->multiple_bssid_ies == NULL)
return -1; 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, 1, params->multiple_bssid_ie_offsets,
&params->multiple_bssid_ie_count, &params->multiple_bssid_ie_count,
MULTIPLE_BSSID_IE_MAX, 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; params->multiple_bssid_ie_len = end - params->multiple_bssid_ies;
if ((params->multiple_bssid_ie_count > 1) && if ((params->multiple_bssid_ie_count > 1) &&
(ext_cap_len >= 13) && (ext_cap_pos[12] & 0x08)) (ext_cap_len >= 13) && (ext_cap_pos[12] & 0x08))
Index: hostapd-2021-02-20/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
=================================================================== +++ b/src/ap/ieee802_11.c
--- hostapd-2021-02-20.orig/src/ap/ieee802_11.c @@ -7071,13 +7071,15 @@ int hostapd_config_read_maclist(const ch
+++ hostapd-2021-02-20/src/ap/ieee802_11.c
@@ -7051,13 +7051,15 @@ int hostapd_config_read_maclist(const ch
static int hostapd_eid_multiple_bssid_chunk_len(struct hostapd_data *hapd, 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_data *bss;
struct hostapd_bss_config *conf; 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]; bss = hapd->iface->bss[i];
conf = bss->conf; conf = bss->conf;
@@ -192,7 +188,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
/* /*
* Sublement ID: 1 byte * Sublement ID: 1 byte
* Length: 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; nontx_profile_len = 11;
if (!conf->ignore_broadcast_ssid || 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; nontx_profile_len += conf->ssid.ssid_len;
if (is_beacon) 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, 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}; u8 non_inherit_ie[3] = {0};
*eid++ = WLAN_EID_MULTIPLE_BSSID; *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++; num_offset = eid++;
for (i = *count; i < hapd->iface->num_bss; i++) { 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; *eid++ = WLAN_EID_SUBELEMENT_NONTRANSMITTED_BSSID_PROFILE;
bss_size_offset = eid++; 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 += sizeof(capab_info);
*eid++ = WLAN_EID_SSID; *eid++ = WLAN_EID_SSID;
@@ -272,7 +268,7 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
*eid++ = conf->ssid.ssid_len; *eid++ = conf->ssid.ssid_len;
os_memcpy(eid, conf->ssid.ssid, conf->ssid.ssid_len); os_memcpy(eid, conf->ssid.ssid, conf->ssid.ssid_len);
eid += 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, 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; int count = 1, dtim_period;
u8 remainder, **dtim_offset = NULL; 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_offsets[*eid_count] = eid;
*eid_count = *eid_count + 1; *eid_count = *eid_count + 1;
} }
@@ -299,10 +295,8 @@ Index: hostapd-2021-02-20/src/ap/ieee802_11.c
} }
if (!eid_count || !(*eid_count)) { if (!eid_count || !(*eid_count)) {
Index: hostapd-2021-02-20/src/ap/ieee802_11.h --- a/src/ap/ieee802_11.h
=================================================================== +++ b/src/ap/ieee802_11.h
--- hostapd-2021-02-20.orig/src/ap/ieee802_11.h
+++ hostapd-2021-02-20/src/ap/ieee802_11.h
@@ -130,12 +130,13 @@ int hostapd_update_time_adv(struct hosta @@ -130,12 +130,13 @@ int hostapd_update_time_adv(struct hosta
void hostapd_client_poll_ok(struct hostapd_data *hapd, const u8 *addr); 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); 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); 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); 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); int auth_sae_init_committed(struct hostapd_data *hapd, struct sta_info *sta);
Index: hostapd-2021-02-20/src/common/ieee802_11_common.c --- a/src/common/ieee802_11_common.c
=================================================================== +++ b/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
@@ -307,6 +307,10 @@ static int ieee802_11_parse_extension(co @@ -307,6 +307,10 @@ static int ieee802_11_parse_extension(co
elems->pasn_params = pos; elems->pasn_params = pos;
elems->pasn_params_len = elen; elems->pasn_params_len = elen;
@@ -336,10 +328,8 @@ Index: hostapd-2021-02-20/src/common/ieee802_11_common.c
default: default:
if (show_errors) { if (show_errors) {
wpa_printf(MSG_MSGDUMP, wpa_printf(MSG_MSGDUMP,
Index: hostapd-2021-02-20/src/common/ieee802_11_common.h --- a/src/common/ieee802_11_common.h
=================================================================== +++ b/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
@@ -118,6 +118,7 @@ struct ieee802_11_elems { @@ -118,6 +118,7 @@ struct ieee802_11_elems {
const u8 *sae_pk; const u8 *sae_pk;
const u8 *s1g_capab; 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 mb_ies_info mb_ies;
struct frag_ies_info frag_ies; struct frag_ies_info frag_ies;
Index: hostapd-2021-02-20/src/common/ieee802_11_defs.h --- a/src/common/ieee802_11_defs.h
=================================================================== +++ b/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
@@ -483,6 +483,7 @@ @@ -483,6 +483,7 @@
#define WLAN_EID_EXT_COLOR_CHANGE_ANNOUNCEMENT 42 #define WLAN_EID_EXT_COLOR_CHANGE_ANNOUNCEMENT 42
#define WLAN_EID_EXT_OCV_OCI 54 #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); resp = os_zalloc(buflen);
if (resp == NULL) 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_owe_trans(hapd, pos, (u8 *) resp + buflen - pos);
pos = hostapd_eid_dpp_cc(hapd, pos, (u8 *) resp + buflen - pos); pos = hostapd_eid_dpp_cc(hapd, pos, (u8 *) resp + buflen - pos);
if (hapd->conf->rnr_beacon) if (hapd->conf->rnr_beacon)
@@ -34,7 +34,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
if (hapd->conf->vendor_elements) { if (hapd->conf->vendor_elements) {
os_memcpy(pos, wpabuf_head(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; total_len += 3;
} }
@@ -43,7 +43,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
pos = hostapd_eid_fils_indic(hapd, buf, 0); pos = hostapd_eid_fils_indic(hapd, buf, 0);
buf_len = pos - buf; 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 */ /* Fill in the Length field value */
*length_pos = pos - (length_pos + 1); *length_pos = pos - (length_pos + 1);
@@ -52,7 +52,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
/* FILS Indication element */ /* FILS Indication element */
if (buf_len) { 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_owe_trans_len(hapd);
tail_len += hostapd_eid_dpp_cc_len(hapd); tail_len += hostapd_eid_dpp_cc_len(hapd);
if (hapd->conf->rnr_beacon) if (hapd->conf->rnr_beacon)
@@ -61,7 +61,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
tailpos = tail = os_malloc(tail_len); tailpos = tail = os_malloc(tail_len);
if (head == NULL || tail == NULL) { 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); tail + tail_len - tailpos);
tailpos = hostapd_eid_dpp_cc(hapd, tailpos, tail + tail_len - tailpos); tailpos = hostapd_eid_dpp_cc(hapd, tailpos, tail + tail_len - tailpos);
if (hapd->conf->rnr_beacon) 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), os_memcpy(tailpos, wpabuf_head(hapd->conf->vendor_elements),
--- a/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
+++ b/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; size_t len = 0;
int i; 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++) { for (i = 0; i < hapd->iface->interfaces->count; i++) {
struct hostapd_iface *iface = hapd->iface->interfaces->iface[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; continue;
len += (TBTT_HEADER_LENGTH + 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)) 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 *eid_start = eid, *tbtt_count_pos;
u8 tbtt_count = 0; 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; 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; int i, count = 0;
u8 *size_offset; 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++; size_offset = eid++;
if (hapd->iface->num_bss > 1) 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++) { for (i = 0; i < hapd->iface->interfaces->count; i++) {
struct hostapd_iface *iface = hapd->iface->interfaces->iface[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) if (iface == hapd->iface || !iface->conf->he_co_locate)
continue; continue;

View File

@@ -32,7 +32,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
resp = os_zalloc(buflen); resp = os_zalloc(buflen);
if (resp == NULL) 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_owe_trans(hapd, pos, (u8 *) resp + buflen - pos);
pos = hostapd_eid_dpp_cc(hapd, pos, (u8 *) resp + buflen - pos); pos = hostapd_eid_dpp_cc(hapd, pos, (u8 *) resp + buflen - pos);
if (hapd->conf->rnr_beacon) if (hapd->conf->rnr_beacon)
@@ -41,7 +41,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
if (hapd->conf->vendor_elements) { if (hapd->conf->vendor_elements) {
os_memcpy(pos, wpabuf_head(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; total_len += 3;
} }
@@ -50,7 +50,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
pos = hostapd_eid_fils_indic(hapd, buf, 0); pos = hostapd_eid_fils_indic(hapd, buf, 0);
buf_len = pos - buf; 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 */ /* Fill in the Length field value */
*length_pos = pos - (length_pos + 1); *length_pos = pos - (length_pos + 1);
@@ -59,7 +59,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
/* FILS Indication element */ /* FILS Indication element */
if (buf_len) { 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_owe_trans_len(hapd);
tail_len += hostapd_eid_dpp_cc_len(hapd); tail_len += hostapd_eid_dpp_cc_len(hapd);
if (hapd->conf->rnr_beacon) if (hapd->conf->rnr_beacon)
@@ -68,7 +68,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
tailpos = tail = os_malloc(tail_len); tailpos = tail = os_malloc(tail_len);
if (head == NULL || tail == NULL) { 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); tail + tail_len - tailpos);
tailpos = hostapd_eid_dpp_cc(hapd, tailpos, tail + tail_len - tailpos); tailpos = hostapd_eid_dpp_cc(hapd, tailpos, tail + tail_len - tailpos);
if (hapd->conf->rnr_beacon) 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), os_memcpy(tailpos, wpabuf_head(hapd->conf->vendor_elements),
--- a/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
+++ b/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; size_t len = 0;
int i; 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 + len += (TBTT_HEADER_LENGTH +
hostapd_eid_rnr_iface_len(hapd, hapd)); 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); len += dl_list_len(&hapd->nr_db) * (TBTT_HEADER_LENGTH + TBTT_INFO_LENGTH);
if (len) 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; int i, count = 0;
u8 *size_offset; 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) if (hapd->iface->num_bss > 1)
eid = hostapd_eid_rnr_iface(hapd, hapd, eid, &count); 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 +++++++++++++++++++++++++++++++++----------- src/ap/ieee802_11.c | 106 +++++++++++++++++++++++++++++++++-----------
2 files changed, 85 insertions(+), 33 deletions(-) 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 --- a/src/ap/beacon.c
+++ b/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, buflen += hostapd_eid_multiple_bssid_len(hapd, req_bss, 0,
known_bssids, known_bssids,
known_bssids_len); known_bssids_len);
@@ -29,7 +27,7 @@ index eda20fc0d9df..74ac8584ab5e 100644
resp = os_zalloc(buflen); resp = os_zalloc(buflen);
if (resp == NULL) 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_mbo(hapd, pos, (u8 *) resp + buflen - pos);
pos = hostapd_eid_owe_trans(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); pos = hostapd_eid_dpp_cc(hapd, pos, (u8 *) resp + buflen - pos);
@@ -39,7 +37,7 @@ index eda20fc0d9df..74ac8584ab5e 100644
if (hapd->conf->vendor_elements) { if (hapd->conf->vendor_elements) {
os_memcpy(pos, wpabuf_head(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_mbo_ie_len(hapd);
tail_len += hostapd_eid_owe_trans_len(hapd); tail_len += hostapd_eid_owe_trans_len(hapd);
tail_len += hostapd_eid_dpp_cc_len(hapd); tail_len += hostapd_eid_dpp_cc_len(hapd);
@@ -49,7 +47,7 @@ index eda20fc0d9df..74ac8584ab5e 100644
tailpos = tail = os_malloc(tail_len); tailpos = tail = os_malloc(tail_len);
if (head == NULL || tail == NULL) { 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, tailpos = hostapd_eid_owe_trans(hapd, tailpos,
tail + tail_len - tailpos); tail + tail_len - tailpos);
tailpos = hostapd_eid_dpp_cc(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) { if (hapd->conf->vendor_elements) {
os_memcpy(tailpos, wpabuf_head(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 --- a/src/ap/ieee802_11.c
+++ b/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; size_t len = 0;
int i; int i;
@@ -71,7 +67,7 @@ index 97c5b42a7528..488f02f58f63 100644
for (i = 0; i < hapd->iface->num_bss; i++) { for (i = 0; i < hapd->iface->num_bss; i++) {
if (hapd->iface->bss[i] == reporting_hapd || if (hapd->iface->bss[i] == reporting_hapd ||
hapd->iface->bss[i]->conf->ignore_broadcast_ssid) 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; + 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) +static bool is_6ghz_colocated(struct hostapd_data *hapd)
+{ +{
+ u8 i; + u8 i;
@@ -124,16 +123,13 @@ index 97c5b42a7528..488f02f58f63 100644
+ return false; + 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) - if (iface == hapd->iface || !iface->conf->he_co_locate)
- continue; - continue;
+size_t hostapd_eid_rnr_len(struct hostapd_data *hapd, u32 type) +size_t hostapd_eid_rnr_len(struct hostapd_data *hapd, u32 type)
+{ +{
+ size_t len = 0; + size_t len = 0;
+
+ if (hapd->conf->rnr_beacon) { + if (hapd->conf->rnr_beacon) {
+ if (hapd->iface->num_bss > 1) + if (hapd->iface->num_bss > 1)
len += (TBTT_HEADER_LENGTH + len += (TBTT_HEADER_LENGTH +
@@ -153,7 +149,7 @@ index 97c5b42a7528..488f02f58f63 100644
if (len) if (len)
len += 2; /* Element ID and length */ 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, static u8 *hostapd_eid_neighbor_report_db(struct hostapd_data *hapd, u8 *eid,
int *count) 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; *eid++ = WLAN_EID_REDUCED_NEIGHBOR_REPORT;
size_offset = eid++; size_offset = eid++;
@@ -211,6 +207,3 @@ index 97c5b42a7528..488f02f58f63 100644
if (!count) if (!count)
eid -= 2; 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 + src/common/ieee802_11_defs.h | 2 +
2 files changed, 166 insertions(+), 83 deletions(-) 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 --- a/src/ap/ieee802_11.c
+++ b/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, size_t hostapd_eid_rnr_iface_len(struct hostapd_data *hapd,
@@ -32,7 +30,12 @@ index 488f02f58f63..953a444a5cd4 100644
- int i; - int i;
+ size_t total_len = 0; + size_t total_len = 0;
+ int i, tbtt_count = 0, start = 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) { + while (start < hapd->iface->num_bss) {
+ if (!(*current_len) || + if (!(*current_len) ||
+ ((*current_len + TBTT_HEADER_LENGTH + TBTT_INFO_LENGTH) > + ((*current_len + TBTT_HEADER_LENGTH + TBTT_INFO_LENGTH) >
@@ -40,12 +43,7 @@ index 488f02f58f63..953a444a5cd4 100644
+ *current_len = RNR_HEADER_LENGTH; + *current_len = RNR_HEADER_LENGTH;
+ total_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; + *current_len += TBTT_HEADER_LENGTH;
+ total_len += TBTT_HEADER_LENGTH; + total_len += TBTT_HEADER_LENGTH;
+ +
@@ -79,7 +77,7 @@ index 488f02f58f63..953a444a5cd4 100644
{ {
struct hostapd_iface *iface; struct hostapd_iface *iface;
size_t len = 0; 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) if (iface == hapd->iface || !iface->conf->he_co_locate)
continue; continue;
@@ -117,7 +115,7 @@ index 488f02f58f63..953a444a5cd4 100644
} }
return len; 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) size_t hostapd_eid_rnr_len(struct hostapd_data *hapd, u32 type)
{ {
@@ -148,7 +146,7 @@ index 488f02f58f63..953a444a5cd4 100644
return len; 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, static u8 *hostapd_eid_rnr_iface(struct hostapd_data *hapd,
struct hostapd_data *reporting_hapd, struct hostapd_data *reporting_hapd,
@@ -185,26 +183,11 @@ index 488f02f58f63..953a444a5cd4 100644
- *eid++ = hapd->iconf->channel; - *eid++ = hapd->iconf->channel;
- for (i = 0; i < hapd->iface->num_bss; i++) { - for (i = 0; i < hapd->iface->num_bss; i++) {
- u8 bss_param = 0; - 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 || - if (hapd->iface->bss[i] == reporting_hapd ||
- hapd->iface->bss[i]->conf->ignore_broadcast_ssid) - hapd->iface->bss[i]->conf->ignore_broadcast_ssid)
- continue; - 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; - *eid++ = TBTT_AP_OFFSET_UNKNOWN;
- os_memcpy(eid, hapd->iface->bss[i]->conf->bssid, ETH_ALEN); - os_memcpy(eid, hapd->iface->bss[i]->conf->bssid, ETH_ALEN);
- eid += 6; - eid += 6;
@@ -218,24 +201,35 @@ index 488f02f58f63..953a444a5cd4 100644
- bss_param |= TBTT_BSS_PARAM_MULTIPLE_BSSID; - bss_param |= TBTT_BSS_PARAM_MULTIPLE_BSSID;
- if (hapd->iface->bss[i] == hostapd_get_primary_bss(hapd->iface->bss[i])) - if (hapd->iface->bss[i] == hostapd_get_primary_bss(hapd->iface->bss[i]))
- bss_param |= TBTT_BSS_PARAM_TRANSMITTED_BSSID; - 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) - if (hapd->iface->bss[i]->iconf->he_co_locate)
- bss_param |= TBTT_BSS_PARAM_CO_LOCATED; - 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) - if (hapd->iface->bss[i]->conf->unsol_bcast_probe_resp_interval)
- bss_param |= TBTT_BSS_PARAM_20_TU_PROBE_RESP_ACTIVE; - 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 || + if (bss == reporting_hapd ||
+ hapd->conf->ignore_broadcast_ssid) + hapd->conf->ignore_broadcast_ssid)
+ continue; + 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) || + if ((*current_len + TBTT_INFO_LENGTH > 255) ||
+ (tbtt_count >= TBTT_INFO_COUNT_MAX)) + (tbtt_count >= TBTT_INFO_COUNT_MAX))
+ break; + break;
@@ -266,7 +260,12 @@ index 488f02f58f63..953a444a5cd4 100644
+ *current_len += TBTT_INFO_LENGTH; + *current_len += TBTT_INFO_LENGTH;
+ tbtt_count += 1; + tbtt_count += 1;
+ } + }
+
- *eid++ = bss_param;
- /* Setting 20 MHz PSD */
- *eid++ = TBTT_PSD_MAX_TXPOWER - 1;
- *count += 1;
- tbtt_count++;
+ start = i; + start = i;
+ *tbtt_count_pos = TBTT_INFO_COUNT(tbtt_count - 1); + *tbtt_count_pos = TBTT_INFO_COUNT(tbtt_count - 1);
+ *size_offset = (eid - size_offset) - 1; + *size_offset = (eid - size_offset) - 1;
@@ -286,7 +285,7 @@ index 488f02f58f63..953a444a5cd4 100644
{ {
struct hostapd_iface *iface; struct hostapd_iface *iface;
int i; 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) if (iface == hapd->iface || !iface->conf->he_co_locate)
continue; continue;
@@ -341,7 +340,7 @@ index 488f02f58f63..953a444a5cd4 100644
} }
return eid; 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) u8 * hostapd_eid_rnr(struct hostapd_data *hapd, u8 *eid, u32 type)
{ {
@@ -382,12 +381,10 @@ index 488f02f58f63..953a444a5cd4 100644
return eid; 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 --- a/src/common/ieee802_11_defs.h
+++ b/src/common/ieee802_11_defs.h +++ b/src/common/ieee802_11_defs.h
@@ -2420,10 +2420,12 @@ enum mscs_description_subelem { @@ -2446,10 +2446,12 @@ enum mscs_description_subelem {
#define FILS_DISCOVERY_MAX_INTERVAL_6GHZ 20 #define FD_MAX_INTERVAL_6GHZ 20 /* TUs */
/* TBTT Information field defines */ /* TBTT Information field defines */
+#define RNR_HEADER_LENGTH 2 +#define RNR_HEADER_LENGTH 2
@@ -399,6 +396,3 @@ index 52e2c868e723..ab7f36f39196 100644
#define TBTT_AP_OFFSET_UNKNOWN 255 #define TBTT_AP_OFFSET_UNKNOWN 255
#define TBTT_BSS_PARAM_OCT_RECOMMENDED BIT(0) #define TBTT_BSS_PARAM_OCT_RECOMMENDED BIT(0)
#define TBTT_BSS_PARAM_SAME_SSID BIT(1) #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 +++--- src/ap/ieee802_11.h | 6 +++---
3 files changed, 17 insertions(+), 16 deletions(-) 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 --- a/src/ap/beacon.c
+++ b/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) { if (hapd->iconf->multiple_bssid) {
@@ -26,11 +24,9 @@ index 74ac8584ab5e..fcc3b7517bcb 100644
u8 *end; u8 *end;
params->multiple_bssid_index = hostapd_get_bss_index(hapd); 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 --- a/src/ap/ieee802_11.c
+++ b/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; u8 mask;
struct hostapd_data *bss; struct hostapd_data *bss;
struct hostapd_bss_config *conf; 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) while (count < hapd->iface->num_bss)
len += hostapd_eid_multiple_bssid_chunk_len(hapd, req_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 --- a/src/ap/ieee802_11.h
+++ b/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, u8 is_beacon, u8 **eid_offsets, int *eid_count,
int eid_max, u8 ema_beacon, int eid_max, u8 ema_beacon,
const u8 *known_bssids, u8 known_bssids_len); 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); u8 * hostapd_eid_rnr(struct hostapd_data *hapd, u8 *eid, u32 type);
size_t hostapd_eid_rnr_len(struct hostapd_data *hapd, 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); 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 */ /* eCSA IE */
csa_pos = hostapd_eid_ecsa(hapd, pos); 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]) if (hapd != hapd->iface->bss[0])
params->multiple_bssid_parent = hapd->iface->bss[0]->conf->iface; 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; params->multiple_bssid_ie_len = end - params->multiple_bssid_ies;
if ((params->multiple_bssid_ie_count > 1) && if ((params->multiple_bssid_ie_count > 1) &&
(ext_cap_len >= 13) && (ext_cap_pos[12] & 0x08)) (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; params->proberesp = NULL;
os_free(params->multiple_bssid_ies); os_free(params->multiple_bssid_ies);
params->multiple_bssid_ies = NULL; params->multiple_bssid_ies = NULL;
@@ -99,9 +99,9 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
params->fd_frame_tmpl = NULL; params->fd_frame_tmpl = NULL;
--- a/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
+++ b/src/ap/ieee802_11.c +++ b/src/ap/ieee802_11.c
@@ -89,6 +89,26 @@ static void handle_auth(struct hostapd_d @@ -97,6 +97,26 @@ static void handle_auth(struct hostapd_d
int rssi, int from_queue, const struct ieee80211_mgmt *mgmt, size_t len,
struct hostapd_frame_info *fi); int rssi, int from_queue);
+enum colocation_mode { +enum colocation_mode {
+ NO_COLOCATED_6GHZ, + 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) 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 * hostapd_eid_ext_supp_rates(struct hostapd_data *hapd, u8 *eid)
{ {
u8 *pos = 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, static size_t hostapd_eid_multiple_bssid_chunk_len(struct hostapd_data *hapd,
struct hostapd_data *req_bss, struct hostapd_data *req_bss,
@@ -191,7 +191,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
j = i / 8; j = i / 8;
mask = (u8)1 << (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) conf->ignore_broadcast_ssid == 2 || bss == req_bss)
nontx_profile_len += conf->ssid.ssid_len; 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) { if (len + nontx_profile_len > 255) {
goto multiple_bssid_too_big; 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, 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; 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, static u8 * hostapd_eid_multiple_bssid_chunk(struct hostapd_data *hapd,
struct hostapd_data *req_bss, struct hostapd_data *req_bss,
u8 *eid, u8 *end, int *count, u8 *eid, u8 *end, int *count,
@@ -287,7 +287,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
*eid++ = WLAN_EID_MULTIPLE_BSSID; *eid++ = WLAN_EID_MULTIPLE_BSSID;
size_offset = eid++; size_offset = eid++;
num_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++) { for (i = *count; i < hapd->iface->num_bss; i++) {
u8 *bss_size_offset, *index_size_offset, *pos = eid; u8 *bss_size_offset, *index_size_offset, *pos = eid;
u16 capab_info; u16 capab_info;
@@ -302,7 +302,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
j = i / 8; j = i / 8;
mask = (u8)1 << (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; *eid++ = WLAN_EID_MULTIPLE_BSSID_INDEX;
index_size_offset = eid++; index_size_offset = eid++;
*eid++ = i; *eid++ = i;
@@ -311,7 +311,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
dtim_offset[i] = eid; dtim_offset[i] = eid;
*eid++ = conf->dtim_period; *eid++ = conf->dtim_period;
*eid++ = 0xFF; *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 /* Add non inheritance ie for capabalities that
* are not inherited by non tx vap from tx vap * 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)) { !hostapd_wpa_ie(bss, WLAN_EID_RSNX)) {
non_inherit_ie[ie_count] = WLAN_EID_RSNX; non_inherit_ie[ie_count] = WLAN_EID_RSNX;
ie_count++; 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, u8 * hostapd_eid_multiple_bssid(struct hostapd_data *hapd,
struct hostapd_data *req_bss, u8 *eid, u8 *end, 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)) { 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; break;
for (count = 0; count < iface->num_bss; count++) { 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; dtim_period = conf->dtim_period;
remainder = dtim_period % (*eid_count); remainder = dtim_period % (*eid_count);
if (remainder) { 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; size_t total_len = 0;
int i, tbtt_count = 0, start = 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; total_len += TBTT_HEADER_LENGTH;
for (i = start; i < hapd->iface->num_bss; i++) { for (i = start; i < hapd->iface->num_bss; i++) {
@@ -453,7 +453,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
continue; continue;
if ((*current_len + TBTT_INFO_LENGTH > 255) || 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; continue;
len += hostapd_eid_rnr_iface_len(iface->bss[0], hapd, len += hostapd_eid_rnr_iface_len(iface->bss[0], hapd,
@@ -462,7 +462,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
} }
return len; 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); &current_len);
- } - }
+ /* fallthrough */ + /* 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: + case WLAN_FC_STYPE_PROBE_RESP:
+ if (mode == COLOCATED_LOWER_BAND) + if (mode == COLOCATED_LOWER_BAND)
+ len += hostapd_eid_rnr_colocation_len(hapd, + 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, + len += hostapd_eid_rnr_iface_len(hapd, hapd,
+ &current_len, -1, -1); + &current_len, -1, -1);
+ break; + 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: + case WLAN_FC_STYPE_ACTION:
+ if (hapd->iface->num_bss > 1 && mode == STANDALONE_6GHZ) + if (hapd->iface->num_bss > 1 && mode == STANDALONE_6GHZ)
+ len += hostapd_eid_rnr_iface_len(hapd, hapd, + len += hostapd_eid_rnr_iface_len(hapd, hapd,
@@ -555,7 +555,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
return len; 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, static u8 *hostapd_eid_rnr_iface(struct hostapd_data *hapd,
struct hostapd_data *reporting_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 *eid_start = eid, *tbtt_count_pos = NULL;
u8 tbtt_count = 0, op_class, channel, bss_param; 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++) { for (i = start; i < iface->num_bss; i++) {
bss_param = 0; bss_param = 0;
bss = iface->bss[i]; bss = iface->bss[i];
@@ -582,7 +582,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
continue; continue;
if ((*current_len + TBTT_INFO_LENGTH > 255) || 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; continue;
eid = hostapd_eid_rnr_iface(iface->bss[0], hapd, eid, eid = hostapd_eid_rnr_iface(iface->bss[0], hapd, eid,
@@ -591,7 +591,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
} }
return eid; 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; u8 *eid_start = eid;
size_t current_len = 0; size_t current_len = 0;
@@ -666,7 +666,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
#ifdef CONFIG_SAE #ifdef CONFIG_SAE
--- a/src/drivers/driver.h --- a/src/drivers/driver.h
+++ b/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 #define MULTIPLE_BSSID_IE_MAX 8
@@ -674,7 +674,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
struct wpa_driver_ap_params { 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; int ema_beacon;
@@ -702,7 +702,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
}; };
struct wpa_driver_mesh_bss_params { 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 wpa_key_mgmt;
int rsn_preauth; int rsn_preauth;
enum mfp_options ieee80211w; enum mfp_options ieee80211w;

View File

@@ -20,7 +20,7 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
--- a/src/ap/beacon.c --- a/src/ap/beacon.c
+++ b/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 wpa_driver_ap_params params;
struct hostapd_freq_params freq; 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"); wpa_printf(MSG_ERROR, "Failed to set beacon parameters");
else else
ret = 0; ret = 0;

View File

@@ -16,11 +16,9 @@ Signed-off-by: Aloka Dixit <alokad@codeaurora.org>
src/drivers/nl80211_copy.h | 38 ++++++++++++++++++++++++++++++++++++ src/drivers/nl80211_copy.h | 38 ++++++++++++++++++++++++++++++++++++
2 files changed, 69 insertions(+) 2 files changed, 69 insertions(+)
Index: hostapd-2021-02-18/src/drivers/driver_nl80211.c --- a/src/drivers/driver_nl80211.c
=================================================================== +++ b/src/drivers/driver_nl80211.c
--- hostapd-2021-02-18.orig/src/drivers/driver_nl80211.c @@ -4825,6 +4825,37 @@ static int wpa_driver_nl80211_set_ap(voi
+++ hostapd-2021-02-18/src/drivers/driver_nl80211.c
@@ -4867,6 +4867,37 @@ static int wpa_driver_nl80211_set_ap(voi
nla_nest_end(msg, ies); 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, ret = send_and_recv_msgs_owner(drv, msg, get_connect_handle(bss), 1,
NULL, NULL, NULL, NULL); NULL, NULL, NULL, NULL);
if (ret) { if (ret) {
Index: hostapd-2021-02-18/src/drivers/nl80211_copy.h --- a/src/drivers/nl80211_copy.h
=================================================================== +++ b/src/drivers/nl80211_copy.h
--- hostapd-2021-02-18.orig/src/drivers/nl80211_copy.h @@ -2597,6 +2597,17 @@ enum nl80211_commands {
+++ hostapd-2021-02-18/src/drivers/nl80211_copy.h
@@ -2587,6 +2587,17 @@ enum nl80211_commands {
* *
* @NL80211_ATTR_MULTIPLE_BSSID_EMA: Shall the multiple BSS beacons be sent out in EMA mode. * @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 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
* @NL80211_ATTR_MAX: highest attribute number currently defined * @NL80211_ATTR_MAX: highest attribute number currently defined
* @__NL80211_ATTR_AFTER_LAST: internal use * @__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_COLOR,
NL80211_ATTR_COLOR_CHANGE_ANNOUNCEMENT_IES, 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 */ /* add attributes here, update the policy in nl80211.c */
__NL80211_ATTR_AFTER_LAST, __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, 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 --- a/src/ap/sta_info.c
+++ b/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) if (sta->vlan_id == old_vlanid)
goto skip_counting; goto skip_counting;
@@ -30,7 +30,7 @@ Date: Wed Jan 13 16:51:07 2021 +0530
"binding station to (vlan_id=%d)", "binding station to (vlan_id=%d)",
--- a/src/ap/wpa_auth_glue.c --- a/src/ap/wpa_auth_glue.c
+++ b/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) { if (vlan_id > 0) {
ifname = hostapd_get_vlan_id_ifname(hapd->conf->vlan, vlan_id); 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 #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 #ifndef CONFIG_NO_VLAN
struct hostapd_data *hapd = ctx; struct hostapd_data *hapd = ctx;
struct sta_info *sta; struct sta_info *sta;

View File

@@ -1,8 +1,6 @@
Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c --- a/hostapd/config_file.c
=================================================================== +++ b/hostapd/config_file.c
--- hostapd-2021-02-20-59e9794c.orig/hostapd/config_file.c @@ -4601,6 +4601,15 @@ static int hostapd_config_fill(struct ho
+++ hostapd-2021-02-20-59e9794c/hostapd/config_file.c
@@ -4590,6 +4590,15 @@ static int hostapd_config_fill(struct ho
bss->disable_11ac = !!atoi(pos); bss->disable_11ac = !!atoi(pos);
} else if (os_strcmp(buf, "disable_11ax") == 0) { } else if (os_strcmp(buf, "disable_11ax") == 0) {
bss->disable_11ax = !!atoi(pos); bss->disable_11ax = !!atoi(pos);
@@ -18,23 +16,19 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/config_file.c
#ifdef CONFIG_PASN #ifdef CONFIG_PASN
#ifdef CONFIG_TESTING_OPTIONS #ifdef CONFIG_TESTING_OPTIONS
} else if (os_strcmp(buf, "force_kdk_derivation") == 0) { } else if (os_strcmp(buf, "force_kdk_derivation") == 0) {
Index: hostapd-2021-02-20-59e9794c/src/ap/ap_config.h --- a/src/ap/ap_config.h
=================================================================== +++ b/src/ap/ap_config.h
--- hostapd-2021-02-20-59e9794c.orig/src/ap/ap_config.h @@ -895,6 +895,7 @@ struct hostapd_bss_config {
+++ hostapd-2021-02-20-59e9794c/src/ap/ap_config.h
@@ -894,6 +894,7 @@ struct hostapd_bss_config {
unsigned int unsol_bcast_probe_resp_interval; unsigned int unsol_bcast_probe_resp_interval;
u8 rnr_beacon; u8 rnr_beacon;
+ int beacon_tx_mode; + int beacon_tx_mode;
char *config_id;
}; };
/** --- a/src/ap/beacon.c
Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c +++ b/src/ap/beacon.c
=================================================================== @@ -1863,6 +1863,8 @@ int ieee802_11_build_ap_params(struct ho
--- 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
params->dtim_period = hapd->conf->dtim_period; params->dtim_period = hapd->conf->dtim_period;
} }
@@ -43,10 +37,8 @@ Index: hostapd-2021-02-20-59e9794c/src/ap/beacon.c
return 0; return 0;
} }
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h --- a/src/drivers/driver.h
=================================================================== +++ b/src/drivers/driver.h
--- hostapd-2021-02-20-59e9794c.orig/src/drivers/driver.h
+++ hostapd-2021-02-20-59e9794c/src/drivers/driver.h
@@ -1206,6 +1206,12 @@ struct wpa_driver_associate_params { @@ -1206,6 +1206,12 @@ struct wpa_driver_associate_params {
* Disable HE40MHz coexistence scan * Disable HE40MHz coexistence scan
*/ */
@@ -82,10 +74,8 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/driver.h
}; };
struct wpa_driver_set_key_params { struct wpa_driver_set_key_params {
Index: hostapd-2021-02-20-59e9794c/src/drivers/driver_nl80211.c --- a/src/drivers/driver_nl80211.c
=================================================================== +++ b/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
@@ -4543,6 +4543,7 @@ static int wpa_driver_nl80211_set_ap(voi @@ -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: beacon_rate=%u", params->beacon_rate);
wpa_printf(MSG_DEBUG, "nl80211: rate_type=%d", params->rate_type); 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; goto fail;
if (params->proberesp && params->proberesp_len) { if (params->proberesp && params->proberesp_len) {
wpa_hexdump(MSG_DEBUG, "nl80211: proberesp (offload)", 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_mesh_id(msg, params->meshid, params->meshid_len) ||
nl80211_put_beacon_int(msg, params->beacon_int) || nl80211_put_beacon_int(msg, params->beacon_int) ||
nl80211_put_mcast_rate(msg, params->mcast_rate) || 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; goto fail;
wpa_printf(MSG_DEBUG, " * flags=%08X", params->flags); wpa_printf(MSG_DEBUG, " * flags=%08X", params->flags);
Index: hostapd-2021-02-20-59e9794c/src/drivers/nl80211_copy.h --- a/src/drivers/nl80211_copy.h
=================================================================== +++ b/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
@@ -2608,6 +2608,10 @@ enum nl80211_commands { @@ -2608,6 +2608,10 @@ enum nl80211_commands {
* for co-located APs and neighbor APs in ESS to be added in all * for co-located APs and neighbor APs in ESS to be added in all
* EMA beacons. * EMA beacons.
@@ -154,10 +142,8 @@ Index: hostapd-2021-02-20-59e9794c/src/drivers/nl80211_copy.h
+ NL80211_BEACON_BURST_MODE = 2, + NL80211_BEACON_BURST_MODE = 2,
+}; +};
#endif /* __LINUX_NL80211_H */ #endif /* __LINUX_NL80211_H */
Index: hostapd-2021-02-20-59e9794c/hostapd/hostapd.conf --- a/hostapd/hostapd.conf
=================================================================== +++ b/hostapd/hostapd.conf
--- hostapd-2021-02-20-59e9794c.orig/hostapd/hostapd.conf
+++ hostapd-2021-02-20-59e9794c/hostapd/hostapd.conf
@@ -250,6 +250,9 @@ rts_threshold=-1 @@ -250,6 +250,9 @@ rts_threshold=-1
# it. # it.
fragm_threshold=-1 fragm_threshold=-1
@@ -168,10 +154,8 @@ Index: hostapd-2021-02-20-59e9794c/hostapd/hostapd.conf
# Rate configuration # Rate configuration
# Default is to enable all rates supported by the hardware. This 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 # 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 --- a/wpa_supplicant/config.c
=================================================================== +++ b/wpa_supplicant/config.c
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/config.c
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/config.c
@@ -2740,6 +2740,7 @@ static const struct parse_data ssid_fiel @@ -2740,6 +2740,7 @@ static const struct parse_data ssid_fiel
{ INT_RANGE(transition_disable, 0, 255) }, { INT_RANGE(transition_disable, 0, 255) },
{ INT_RANGE(sae_pk, 0, 2) }, { 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 --- a/wpa_supplicant/config_file.c
=================================================================== +++ b/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
@@ -888,6 +888,7 @@ static void wpa_config_write_network(FIL @@ -888,6 +888,7 @@ static void wpa_config_write_network(FIL
INT(disable_he); INT(disable_he);
#endif /* CONFIG_HE_OVERRIDES */ #endif /* CONFIG_HE_OVERRIDES */
@@ -200,10 +182,8 @@ Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/config_file.c
#undef STR #undef STR
#undef INT #undef INT
#undef INT_DEF #undef INT_DEF
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/config_ssid.h --- a/wpa_supplicant/config_ssid.h
=================================================================== +++ b/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
@@ -47,6 +47,7 @@ @@ -47,6 +47,7 @@
#define DEFAULT_AMPDU_DENSITY -1 /* no change */ #define DEFAULT_AMPDU_DENSITY -1 /* no change */
#define DEFAULT_USER_SELECTED_SIM 1 #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 */ #endif /* CONFIG_SSID_H */
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh.c --- a/wpa_supplicant/mesh.c
=================================================================== +++ b/wpa_supplicant/mesh.c
--- hostapd-2021-02-20-59e9794c.orig/wpa_supplicant/mesh.c
+++ hostapd-2021-02-20-59e9794c/wpa_supplicant/mesh.c
@@ -668,6 +668,7 @@ int wpa_supplicant_join_mesh(struct wpa_ @@ -668,6 +668,7 @@ int wpa_supplicant_join_mesh(struct wpa_
params->dtim_period = ssid->dtim_period; params->dtim_period = ssid->dtim_period;
else if (wpa_s->conf->dtim_period > 0) 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; params->conf.max_peer_links = wpa_s->conf->max_peer_links;
if (ssid->mesh_rssi_threshold < DEFAULT_MESH_RSSI_THRESHOLD) { if (ssid->mesh_rssi_threshold < DEFAULT_MESH_RSSI_THRESHOLD) {
params->conf.rssi_threshold = ssid->mesh_rssi_threshold; params->conf.rssi_threshold = ssid->mesh_rssi_threshold;
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_cli.c --- a/wpa_supplicant/wpa_cli.c
=================================================================== +++ b/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
@@ -1489,6 +1489,7 @@ static const char *network_fields[] = { @@ -1489,6 +1489,7 @@ static const char *network_fields[] = {
#endif /* CONFIG_HS20 */ #endif /* CONFIG_HS20 */
"mac_addr", "pbss", "wps_disabled", "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 +++++++++------ src/ap/ieee802_11.c | 15 +++++++++------
2 files changed, 12 insertions(+), 7 deletions(-) 2 files changed, 12 insertions(+), 7 deletions(-)
Index: hostapd-2021-02-18/src/ap/ap_config.c --- a/src/ap/ap_config.c
=================================================================== +++ b/src/ap/ap_config.c
--- hostapd-2021-02-18.orig/src/ap/ap_config.c
+++ hostapd-2021-02-18/src/ap/ap_config.c
@@ -229,6 +229,8 @@ struct hostapd_config * hostapd_config_d @@ -229,6 +229,8 @@ struct hostapd_config * hostapd_config_d
conf->fragm_threshold = -2; /* user driver default: 2346 */ conf->fragm_threshold = -2; /* user driver default: 2346 */
/* Set to invalid value means do not add Power Constraint IE */ /* 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[0] = ac_be;
conf->wmm_ac_params[1] = ac_bk; 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; return -1;
} }
@@ -36,11 +34,9 @@ Index: hostapd-2021-02-18/src/ap/ap_config.c
conf->local_pwr_constraint == -1) { conf->local_pwr_constraint == -1) {
wpa_printf(MSG_ERROR, "Cannot set Spectrum Management bit without Country and Power Constraint elements"); wpa_printf(MSG_ERROR, "Cannot set Spectrum Management bit without Country and Power Constraint elements");
return -1; return -1;
Index: hostapd-2021-02-18/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
=================================================================== +++ b/src/ap/ieee802_11.c
--- hostapd-2021-02-18.orig/src/ap/ieee802_11.c @@ -343,15 +343,18 @@ u16 hostapd_own_capab_info(struct hostap
+++ hostapd-2021-02-18/src/ap/ieee802_11.c
@@ -300,15 +300,18 @@ u16 hostapd_own_capab_info(struct hostap
capab |= WLAN_CAPABILITY_SHORT_SLOT_TIME; 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 + src/common/ieee802_11_defs.h | 1 +
2 files changed, 9 insertions(+), 1 deletion(-) 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 --- a/src/ap/ieee802_11_he.c
+++ b/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 */ /* 6 GHz Operation Information field */
*pos++ = hapd->iconf->channel; /* Primary Channel */ *pos++ = hapd->iconf->channel; /* Primary Channel */
@@ -33,11 +31,9 @@ index 18436a6b336b..a78ed01a54b6 100644
if (seg1) if (seg1)
*pos++ = 3; *pos++ = 3;
else 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 --- a/src/common/ieee802_11_defs.h
+++ b/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_CHAN_WIDTH_MASK (BIT(0) | BIT(1))
#define HE_6GHZ_OPER_INFO_CTRL_DUP_BEACON BIT(2) #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 */ /* IEEE P802.11ax/D6.0, 9.4.2.261 HE 6 GHz Band Capabilities element */
struct ieee80211_he_6ghz_band_cap { 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 ++++++++++++ src/ap/ap_config.h | 12 ++++++++++++
3 files changed, 21 insertions(+) 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 --- a/hostapd/config_file.c
+++ b/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); line, pos);
return 1; return 1;
} }
@@ -29,11 +27,9 @@ index d9c21a5780ba..e3be84c2ac63 100644
} else if (os_strcmp(buf, "he_oper_chwidth") == 0) { } else if (os_strcmp(buf, "he_oper_chwidth") == 0) {
conf->he_oper_chwidth = atoi(pos); conf->he_oper_chwidth = atoi(pos);
} else if (os_strcmp(buf, "he_oper_centr_freq_seg0_idx") == 0) { } 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 --- a/hostapd/hostapd.conf
+++ b/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 # Enable co-locate for a 6GHz radio
#co_locate=0 #co_locate=0
@@ -47,21 +43,19 @@ index 976582312513..7b9f11a16f80 100644
##### IEEE 802.11n related configuration ###################################### ##### IEEE 802.11n related configuration ######################################
# ieee80211n: Whether IEEE 802.11n (HT) is enabled # 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 --- a/src/ap/ap_config.h
+++ b/src/ap/ap_config.h +++ b/src/ap/ap_config.h
@@ -1049,6 +1049,9 @@ struct hostapd_config { @@ -1081,6 +1081,9 @@ struct hostapd_config {
u8 he_oper_centr_freq_seg0_idx; u8 he_6ghz_rx_ant_pat;
u8 he_oper_centr_freq_seg1_idx; u8 he_6ghz_tx_ant_pat;
bool he_co_locate; bool he_co_locate;
+#define AP_TYPE_6GHZ_INDOOR_AP 0 +#define AP_TYPE_6GHZ_INDOOR_AP 0
+#define AP_TYPE_6GHZ_STANDARD_POWER_AP 1 +#define AP_TYPE_6GHZ_STANDARD_POWER_AP 1
+ u8 he_6ghz_reg_pwr_type; + u8 he_6ghz_reg_pwr_type;
#endif /* CONFIG_IEEE80211AX */ #endif /* CONFIG_IEEE80211AX */
#ifdef CONFIG_IEEE80211AX /* VHT enable/disable config from CHAN_SWITCH */
@@ -1079,6 +1082,15 @@ struct hostapd_config { @@ -1110,6 +1113,15 @@ struct hostapd_config {
#endif /* CONFIG_AIRTIME_POLICY */ #endif /* CONFIG_AIRTIME_POLICY */
}; };
@@ -77,6 +71,3 @@ index 70cee055bbe6..6e5406f59887 100644
static inline u8 hostapd_get_oper_chwidth(struct hostapd_config *conf) 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 --- a/src/ap/beacon.c
+++ b/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_operation) +
3 + sizeof(struct ieee80211_he_mu_edca_parameter_set) + 3 + sizeof(struct ieee80211_he_mu_edca_parameter_set) +
3 + sizeof(struct ieee80211_spatial_reuse); 3 + sizeof(struct ieee80211_spatial_reuse);
@@ -36,7 +36,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
} }
#endif /* CONFIG_IEEE80211AX */ #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; buf_len = pos - buf;
total_len += buf_len; total_len += buf_len;
@@ -52,7 +52,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
head = os_zalloc(total_len); head = os_zalloc(total_len);
if (!head) if (!head)
return NULL; 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; pos += buf_len;
} }
@@ -62,7 +62,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
*len = pos - (u8 *) head; *len = pos - (u8 *) head;
wpa_hexdump(MSG_DEBUG, "FILS Discovery frame template", wpa_hexdump(MSG_DEBUG, "FILS Discovery frame template",
(u8 *) head, pos - (u8 *) head); (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_operation) +
3 + sizeof(struct ieee80211_he_mu_edca_parameter_set) + 3 + sizeof(struct ieee80211_he_mu_edca_parameter_set) +
3 + sizeof(struct ieee80211_spatial_reuse); 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 --- a/src/common/ieee802_11_defs.h
+++ b/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; u8 link_margin;
} STRUCT_PACKED; } STRUCT_PACKED;
@@ -123,7 +123,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
u8 dialog_token; u8 dialog_token;
--- a/src/ap/ieee802_11.c --- a/src/ap/ieee802_11.c
+++ b/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); 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) 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; struct hostapd_channel_data *chan;
int dfs, i; int dfs, i;
u8 channel, tx_pwr_count, local_pwr_constraint; u8 channel, tx_pwr_count, local_pwr_constraint;
@@ -164,7 +164,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
if (!mode) if (!mode)
return eid; 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) if (i == mode->num_channels)
return eid; return eid;
@@ -206,7 +206,7 @@ Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
switch (hostapd_get_oper_chwidth(iconf)) { switch (hostapd_get_oper_chwidth(iconf)) {
case CHANWIDTH_USE_HT: case CHANWIDTH_USE_HT:
if (iconf->secondary_channel == 0) { 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 else
tx_pwr = max_tx_power; 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 --- a/src/ap/ap_config.h
+++ b/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; bool he_co_locate;
#define AP_TYPE_6GHZ_INDOOR_AP 0 #define AP_TYPE_6GHZ_INDOOR_AP 0
#define AP_TYPE_6GHZ_STANDARD_POWER_AP 1 #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 --- a/src/ap/ieee802_11.c
+++ b/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); 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, static u8 * hostapd_add_tpe_info(u8 *eid, u8 tx_pwr_count,
u8 tx_pwr_intrpn, u8 tx_pwr_cat, u8 tx_pwr_intrpn, u8 tx_pwr_cat,
u8 tx_pwr) 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) { if (ap_type == AP_TYPE_6GHZ_INDOOR_AP) {
tx_pwr_cat = REG_SUBORDINATE_CLIENT; tx_pwr_cat = REG_SUBORDINATE_CLIENT;
/* TODO: extract psd limits from channel data */ /* TODO: extract psd limits from channel data */
@@ -99,7 +99,7 @@ Signed-off-by: Lavanya Suresh <lavaks@codeaurora.org>
return eid; return eid;
--- a/src/common/ieee802_11_defs.h --- a/src/common/ieee802_11_defs.h
+++ b/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 * These tx-power macros are present till the 6G regdomains are defined to
* support tx-power values for various client types. * 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 --- a/src/drivers/driver_nl80211.c
+++ b/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) { if (params->he_6ghz_capab) {
wpa_hexdump(MSG_DEBUG, " * 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 --- a/src/common/hw_features_common.c
=================================================================== +++ b/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
@@ -114,7 +114,7 @@ int allowed_ht40_channel_pair(enum hosta @@ -114,7 +114,7 @@ int allowed_ht40_channel_pair(enum hosta
{ {
int ok, first; int ok, first;
@@ -11,10 +9,8 @@ Index: hostapd-2021-02-20-59e9794c/src/common/hw_features_common.c
size_t k; size_t k;
int ht40_plus, pri_chan, sec_chan; int ht40_plus, pri_chan, sec_chan;
Index: hostapd-2021-02-20-59e9794c/wpa_supplicant/wpa_supplicant.c --- a/wpa_supplicant/wpa_supplicant.c
=================================================================== +++ b/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
@@ -2507,8 +2507,8 @@ void ibss_mesh_setup_freq(struct wpa_sup @@ -2507,8 +2507,8 @@ void ibss_mesh_setup_freq(struct wpa_sup
enum hostapd_hw_mode hw_mode; enum hostapd_hw_mode hw_mode;
struct hostapd_hw_modes *mode = NULL; 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 +-- hostapd/hostapd_cli.c | 10 +--
2 files changed, 185 insertions(+), 60 deletions(-) 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 --- a/hostapd/ctrl_iface.c
+++ b/hostapd/ctrl_iface.c +++ b/hostapd/ctrl_iface.c
@@ -3215,75 +3215,202 @@ set: @@ -3283,75 +3283,202 @@ set:
return ret; return ret;
} }
@@ -109,13 +107,13 @@ index bbe49aa..ea1a156 100644
- if (!ok && chan->chan != (allowed[k - 1] + 4)) - if (!ok && chan->chan != (allowed[k - 1] + 4))
- ok = -1; - ok = -1;
-
- if (ok == 1 && (mode->channels[j + 1].flag &
- HOSTAPD_CHAN_DISABLED))
- ok = -1;
+ if (ok == 0) + if (ok == 0)
+ return false; + return false;
- if (ok == 1 && (mode->channels[j + 1].flag &
- HOSTAPD_CHAN_DISABLED))
- ok = -1;
-
- if (ok != -1) { - if (ok != -1) {
- ret = os_snprintf(buf + len, buflen - len, - ret = os_snprintf(buf + len, buflen - len,
- "Channel: %d : %d HT40%s\n", - "Channel: %d : %d HT40%s\n",
@@ -264,7 +262,7 @@ index bbe49aa..ea1a156 100644
{ {
struct hostapd_data *hapd = iface->bss[0]; struct hostapd_data *hapd = iface->bss[0];
struct hostapd_hw_modes *mode; 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); &dfs_domain);
if (mode->mode != HOSTAPD_MODE_IEEE80211A) 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, 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) if (radius_server_dac_request(hapd->radius_srv, buf + 12) < 0)
reply_len = -1; reply_len = -1;
#endif /* RADIUS_SERVER */ #endif /* RADIUS_SERVER */
@@ -293,11 +291,9 @@ index bbe49aa..ea1a156 100644
} else if (os_strncmp(buf, "GET_CAPABILITY ", 15) == 0) { } else if (os_strncmp(buf, "GET_CAPABILITY ", 15) == 0) {
reply_len = hostapd_ctrl_iface_get_capability( reply_len = hostapd_ctrl_iface_get_capability(
hapd, buf + 15, reply, reply_size); 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 --- a/hostapd/hostapd_cli.c
+++ b/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"); return wpa_ctrl_command(ctrl, "DRIVER_FLAGS");
} }
@@ -313,7 +309,7 @@ index 6ee8d96..14317f5 100644
#ifdef CONFIG_DPP #ifdef CONFIG_DPP
static int hostapd_cli_cmd_dpp_qr_code(struct wpa_ctrl *ctrl, int argc, 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" }, "=Add/Delete/Show/Clear deny MAC ACL" },
{ "poll_sta", hostapd_cli_cmd_poll_sta, hostapd_complete_stations, { "poll_sta", hostapd_cli_cmd_poll_sta, hostapd_complete_stations,
"<addr> = poll a STA to check connectivity with a QoS null frame" }, "<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, { "req_beacon", hostapd_cli_cmd_req_beacon, NULL,
"<addr> [req_mode=] <measurement request hexdump> = send a Beacon report request to a station" }, "<addr> [req_mode=] <measurement request hexdump> = send a Beacon report request to a station" },
{ "reload_wpa_psk", hostapd_cli_cmd_reload_wpa_psk, NULL, { "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 ++-- wpa_supplicant/wpas_kay.c | 4 ++--
9 files changed, 43 insertions(+), 10 deletions(-) 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 --- a/hostapd/config_file.c
+++ b/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; return 1;
} }
bss->mka_priority = mka_priority; bss->mka_priority = mka_priority;
@@ -38,11 +36,9 @@ index 08a5bcd..39ea156 100644
} else if (os_strcmp(buf, "mka_cak") == 0) { } else if (os_strcmp(buf, "mka_cak") == 0) {
size_t len = os_strlen(pos); 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 --- a/src/ap/ap_config.h
+++ b/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; int mka_priority;
/** /**
@@ -56,11 +52,9 @@ index 05f3c7d..ad37222 100644
* mka_ckn - MKA pre-shared CKN * mka_ckn - MKA pre-shared CKN
*/ */
#define MACSEC_CKN_MAX_LEN 32 #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 --- a/src/ap/wpa_auth_kay.c
+++ b/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_protect,
hapd->conf->macsec_replay_window, hapd->conf->macsec_replay_window,
hapd->conf->macsec_port, hapd->conf->macsec_port,
@@ -70,8 +64,6 @@ index 46d94b4..d5341e2 100644
hapd->own_addr); hapd->own_addr);
/* ieee802_1x_kay_init() frees kay_ctx on failure */ /* ieee802_1x_kay_init() frees kay_ctx on failure */
if (!res) 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 --- a/src/pae/ieee802_1x_cp.c
+++ b/src/pae/ieee802_1x_cp.c +++ b/src/pae/ieee802_1x_cp.c
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
@@ -83,7 +75,7 @@ index cf41d8d..f0527fd 100644
/* The variable defined in clause 12 in IEEE Std 802.1X-2010 */ /* The variable defined in clause 12 in IEEE Std 802.1X-2010 */
enum connect_type { PENDING, UNAUTHENTICATED, AUTHENTICATED, SECURE }; 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->orx = false;
sm->otx = false; sm->otx = false;
@@ -94,11 +86,9 @@ index cf41d8d..f0527fd 100644
sm->cipher_offset = CONFIDENTIALITY_OFFSET_0; sm->cipher_offset = CONFIDENTIALITY_OFFSET_0;
sm->confidentiality_offset = sm->cipher_offset; sm->confidentiality_offset = sm->cipher_offset;
sm->transmit_delay = MKA_LIFE_TIME; 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 --- a/src/pae/ieee802_1x_kay.c
+++ b/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", wpa_printf(MSG_DEBUG, "\tKey Number............: %d",
be_to_host32(body->kn)); be_to_host32(body->kn));
/* TODO: Other than GCM-AES-128 case: MACsec Cipher Suite */ /* 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 * struct ieee802_1x_kay *
ieee802_1x_kay_init(struct ieee802_1x_kay_ctx *ctx, enum macsec_policy policy, ieee802_1x_kay_init(struct ieee802_1x_kay_ctx *ctx, enum macsec_policy policy,
bool macsec_replay_protect, u32 macsec_replay_window, bool macsec_replay_protect, u32 macsec_replay_window,
@@ -123,7 +113,7 @@ index ad5a34b..04a7e93 100644
{ {
struct ieee802_1x_kay *kay; 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->dist_time = 0;
kay->pn_exhaustion = PENDING_PN_EXHAUSTION; kay->pn_exhaustion = PENDING_PN_EXHAUSTION;
@@ -132,11 +122,9 @@ index ad5a34b..04a7e93 100644
kay->mka_algindex = DEFAULT_MKA_ALG_INDEX; kay->mka_algindex = DEFAULT_MKA_ALG_INDEX;
kay->mka_version = MKA_VERSION_ID; 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 --- a/src/pae/ieee802_1x_kay.h
+++ b/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 * struct ieee802_1x_kay *
ieee802_1x_kay_init(struct ieee802_1x_kay_ctx *ctx, enum macsec_policy policy, ieee802_1x_kay_init(struct ieee802_1x_kay_ctx *ctx, enum macsec_policy policy,
bool macsec_replay_protect, u32 macsec_replay_window, 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); void ieee802_1x_kay_deinit(struct ieee802_1x_kay *kay);
struct ieee802_1x_mka_participant * 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 --- a/wpa_supplicant/config.c
+++ b/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(macsec_replay_window) },
{ INT_RANGE(macsec_port, 1, 65534) }, { INT_RANGE(macsec_port, 1, 65534) },
{ INT_RANGE(mka_priority, 0, 255) }, { INT_RANGE(mka_priority, 0, 255) },
@@ -157,11 +143,9 @@ index 7e7d9bb..f723b70 100644
{ FUNC_KEY(mka_cak) }, { FUNC_KEY(mka_cak) },
{ FUNC_KEY(mka_ckn) }, { FUNC_KEY(mka_ckn) },
#endif /* CONFIG_MACSEC */ #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 --- a/wpa_supplicant/config_ssid.h
+++ b/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; int mka_priority;
/** /**
@@ -175,11 +159,9 @@ index b655e39..747e4d0 100644
* mka_ckn - MKA pre-shared CKN * mka_ckn - MKA pre-shared CKN
*/ */
#define MACSEC_CKN_MAX_LEN 32 #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 --- a/wpa_supplicant/wpas_kay.c
+++ b/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, res = ieee802_1x_kay_init(kay_ctx, policy, ssid->macsec_replay_protect,
ssid->macsec_replay_window, ssid->macsec_port, ssid->macsec_replay_window, ssid->macsec_port,
@@ -190,6 +172,3 @@ index defd0f2..4d1ce02 100644
/* ieee802_1x_kay_init() frees kay_ctx on failure */ /* ieee802_1x_kay_init() frees kay_ctx on failure */
if (res == NULL) if (res == NULL)
return -1; return -1;
--
2.7.4

Some files were not shown because too many files have changed in this diff Show More