Report beacon request TX status as control interface event
The new BEACON-REQ-TX-STATUS control interface event is now used to report whether a beacon request (from REQ_BEACON command) was delivered successfully. This event has the following parameters: <STA address> <dialog token> <ack=0/1>. Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
90d9d7c32a
commit
f3383366aa
4 changed files with 46 additions and 2 deletions
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* hostapd / IEEE 802.11 Management
|
||||
* Copyright (c) 2002-2014, Jouni Malinen <j@w1.fi>
|
||||
* Copyright (c) 2002-2017, Jouni Malinen <j@w1.fi>
|
||||
*
|
||||
* This software may be distributed under the terms of the BSD license.
|
||||
* See README for more details.
|
||||
|
@ -3359,6 +3359,29 @@ static void handle_disassoc_cb(struct hostapd_data *hapd,
|
|||
}
|
||||
|
||||
|
||||
static void handle_action_cb(struct hostapd_data *hapd,
|
||||
const struct ieee80211_mgmt *mgmt,
|
||||
size_t len, int ok)
|
||||
{
|
||||
struct sta_info *sta;
|
||||
|
||||
if (is_multicast_ether_addr(mgmt->da))
|
||||
return;
|
||||
sta = ap_get_sta(hapd, mgmt->da);
|
||||
if (!sta) {
|
||||
wpa_printf(MSG_DEBUG, "handle_action_cb: STA " MACSTR
|
||||
" not found", MAC2STR(mgmt->da));
|
||||
return;
|
||||
}
|
||||
|
||||
if (len < 24 + 2)
|
||||
return;
|
||||
if (mgmt->u.action.category == WLAN_ACTION_RADIO_MEASUREMENT &&
|
||||
mgmt->u.action.u.rrm.action == WLAN_RRM_RADIO_MEASUREMENT_REQUEST)
|
||||
hostapd_rrm_beacon_req_tx_status(hapd, mgmt, len, ok);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* ieee802_11_mgmt_cb - Process management frame TX status callback
|
||||
* @hapd: hostapd BSS data structure (the BSS from which the management frame
|
||||
|
@ -3408,6 +3431,7 @@ void ieee802_11_mgmt_cb(struct hostapd_data *hapd, const u8 *buf, size_t len,
|
|||
break;
|
||||
case WLAN_FC_STYPE_ACTION:
|
||||
wpa_printf(MSG_DEBUG, "mgmt::action cb ok=%d", ok);
|
||||
handle_action_cb(hapd, mgmt, len, ok);
|
||||
break;
|
||||
default:
|
||||
wpa_printf(MSG_INFO, "unknown mgmt cb frame subtype %d", stype);
|
||||
|
|
14
src/ap/rrm.c
14
src/ap/rrm.c
|
@ -2,6 +2,7 @@
|
|||
* hostapd / Radio Measurement (RRM)
|
||||
* Copyright(c) 2013 - 2016 Intel Mobile Communications GmbH.
|
||||
* Copyright(c) 2011 - 2016 Intel Corporation. All rights reserved.
|
||||
* Copyright (c) 2016-2017, Jouni Malinen <j@w1.fi>
|
||||
*
|
||||
* This software may be distributed under the terms of the BSD license.
|
||||
* See README for more details.
|
||||
|
@ -10,6 +11,7 @@
|
|||
#include "utils/includes.h"
|
||||
|
||||
#include "utils/common.h"
|
||||
#include "common/wpa_ctrl.h"
|
||||
#include "hostapd.h"
|
||||
#include "ap_drv_ops.h"
|
||||
#include "sta_info.h"
|
||||
|
@ -638,3 +640,15 @@ int hostapd_send_beacon_req(struct hostapd_data *hapd, const u8 *addr,
|
|||
|
||||
return hapd->beacon_req_token;
|
||||
}
|
||||
|
||||
|
||||
void hostapd_rrm_beacon_req_tx_status(struct hostapd_data *hapd,
|
||||
const struct ieee80211_mgmt *mgmt,
|
||||
size_t len, int ok)
|
||||
{
|
||||
if (len < 24 + 3)
|
||||
return;
|
||||
wpa_msg(hapd->msg_ctx, MSG_INFO, BEACON_REQ_TX_STATUS MACSTR
|
||||
" %u ack=%d", MAC2STR(mgmt->da),
|
||||
mgmt->u.action.u.rrm.dialog_token, ok);
|
||||
}
|
||||
|
|
|
@ -26,5 +26,8 @@ int hostapd_send_range_req(struct hostapd_data *hapd, const u8 *addr,
|
|||
void hostapd_clean_rrm(struct hostapd_data *hapd);
|
||||
int hostapd_send_beacon_req(struct hostapd_data *hapd, const u8 *addr,
|
||||
u8 req_mode, const struct wpabuf *req);
|
||||
void hostapd_rrm_beacon_req_tx_status(struct hostapd_data *hapd,
|
||||
const struct ieee80211_mgmt *mgmt,
|
||||
size_t len, int ok);
|
||||
|
||||
#endif /* RRM_H */
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
* wpa_supplicant/hostapd control interface library
|
||||
* Copyright (c) 2004-2006, Jouni Malinen <j@w1.fi>
|
||||
* Copyright (c) 2004-2017, Jouni Malinen <j@w1.fi>
|
||||
*
|
||||
* This software may be distributed under the terms of the BSD license.
|
||||
* See README for more details.
|
||||
|
@ -288,6 +288,9 @@ extern "C" {
|
|||
/* BSS Transition Management Request received with MBO transition reason */
|
||||
#define MBO_TRANSITION_REASON "MBO-TRANSITION-REASON "
|
||||
|
||||
/* parameters: <STA address> <dialog token> <ack=0/1> */
|
||||
#define BEACON_REQ_TX_STATUS "BEACON-REQ-TX-STATUS "
|
||||
|
||||
/* PMKSA cache entry added; parameters: <BSSID> <network_id> */
|
||||
#define PMKSA_CACHE_ADDED "PMKSA-CACHE-ADDED "
|
||||
/* PMKSA cache entry removed; parameters: <BSSID> <network_id> */
|
||||
|
|
Loading…
Reference in a new issue