Skip to content

Commit

Permalink
hostapd: report radar detected events via ubus
Browse files Browse the repository at this point in the history
Events are reported on all BSS interfaces

Signed-off-by: Felix Fietkau <nbd@nbd.name>
  • Loading branch information
nbd168 committed May 26, 2021
1 parent 8e2ca15 commit 753a91d
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 0 deletions.
11 changes: 11 additions & 0 deletions package/network/services/hostapd/patches/600-ubus_support.patch
Expand Up @@ -462,3 +462,14 @@
return hostapd_vlan_if_remove(hapd, vlan->ifname);
}

--- a/src/ap/dfs.c
+++ b/src/ap/dfs.c
@@ -1179,6 +1179,8 @@ int hostapd_dfs_radar_detected(struct ho
"freq=%d ht_enabled=%d chan_offset=%d chan_width=%d cf1=%d cf2=%d",
freq, ht_enabled, chan_offset, chan_width, cf1, cf2);

+ hostapd_ubus_notify_radar_detected(iface, freq, chan_width, cf1, cf2);
+
/* Proceed only if DFS is not offloaded to the driver */
if (iface->drv_flags & WPA_DRIVER_FLAGS_DFS_OFFLOAD)
return 0;
21 changes: 21 additions & 0 deletions package/network/services/hostapd/src/src/ap/ubus.c
Expand Up @@ -1593,3 +1593,24 @@ void hostapd_ubus_notify_beacon_report(

ubus_notify(ctx, &hapd->ubus.obj, "beacon-report", b.head, -1);
}

void hostapd_ubus_notify_radar_detected(struct hostapd_iface *iface, int frequency,
int chan_width, int cf1, int cf2)
{
struct hostapd_data *hapd;
int i;

if (!hapd->ubus.obj.has_subscribers)
return;

blob_buf_init(&b, 0);
blobmsg_add_u16(&b, "frequency", frequency);
blobmsg_add_u16(&b, "width", chan_width);
blobmsg_add_u16(&b, "center1", cf1);
blobmsg_add_u16(&b, "center2", cf2);

for (i = 0; i < iface->num_bss; i++) {
hapd = iface->bss[i];
ubus_notify(ctx, &hapd->ubus.obj, "radar-detected", b.head, -1);
}
}
6 changes: 6 additions & 0 deletions package/network/services/hostapd/src/src/ap/ubus.h
Expand Up @@ -52,6 +52,8 @@ void hostapd_ubus_notify_beacon_report(struct hostapd_data *hapd,
const u8 *addr, u8 token, u8 rep_mode,
struct rrm_measurement_beacon_report *rep,
size_t len);
void hostapd_ubus_notify_radar_detected(struct hostapd_iface *iface, int frequency,
int chan_width, int cf1, int cf2);

void hostapd_ubus_add(struct hapd_interfaces *interfaces);
void hostapd_ubus_free(struct hapd_interfaces *interfaces);
Expand Down Expand Up @@ -100,6 +102,10 @@ static inline void hostapd_ubus_notify_beacon_report(struct hostapd_data *hapd,
size_t len)
{
}
static inline void hostapd_ubus_notify_radar_detected(struct hostapd_iface *iface, int frequency,
int chan_width, int cf1, int cf2)
{
}

static inline void hostapd_ubus_add(struct hapd_interfaces *interfaces)
{
Expand Down

0 comments on commit 753a91d

Please sign in to comment.