cfg80211: support FTM responder configuration/statistics
Allow userspace to enable fine timing measurement responder functionality with configurable lci/civic parameters in AP mode. This can be done at AP start or changing beacon parameters. A new EXT_FEATURE flag is introduced for drivers to advertise the capability. Also nl80211 API support for retrieving statistics is added. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org> [remove unused cfg80211_ftm_responder_params, clarify docs, move validation into policy] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:

committed by
Johannes Berg

parent
7057f2496c
commit
81e54d08d9
@@ -775,6 +775,12 @@ struct cfg80211_crypto_settings {
|
||||
* @assocresp_ies_len: length of assocresp_ies in octets
|
||||
* @probe_resp_len: length of probe response template (@probe_resp)
|
||||
* @probe_resp: probe response template (AP mode only)
|
||||
* @ftm_responder: enable FTM responder functionality; -1 for no change
|
||||
* (which also implies no change in LCI/civic location data)
|
||||
* @lci: LCI subelement content
|
||||
* @civicloc: Civic location subelement content
|
||||
* @lci_len: LCI data length
|
||||
* @civicloc_len: Civic location data length
|
||||
*/
|
||||
struct cfg80211_beacon_data {
|
||||
const u8 *head, *tail;
|
||||
@@ -782,12 +788,17 @@ struct cfg80211_beacon_data {
|
||||
const u8 *proberesp_ies;
|
||||
const u8 *assocresp_ies;
|
||||
const u8 *probe_resp;
|
||||
const u8 *lci;
|
||||
const u8 *civicloc;
|
||||
s8 ftm_responder;
|
||||
|
||||
size_t head_len, tail_len;
|
||||
size_t beacon_ies_len;
|
||||
size_t proberesp_ies_len;
|
||||
size_t assocresp_ies_len;
|
||||
size_t probe_resp_len;
|
||||
size_t lci_len;
|
||||
size_t civicloc_len;
|
||||
};
|
||||
|
||||
struct mac_address {
|
||||
@@ -2796,6 +2807,40 @@ struct cfg80211_external_auth_params {
|
||||
u16 status;
|
||||
};
|
||||
|
||||
/**
|
||||
* cfg80211_ftm_responder_stats - FTM responder statistics
|
||||
*
|
||||
* @filled: bitflag of flags using the bits of &enum nl80211_ftm_stats to
|
||||
* indicate the relevant values in this struct for them
|
||||
* @success_num: number of FTM sessions in which all frames were successfully
|
||||
* answered
|
||||
* @partial_num: number of FTM sessions in which part of frames were
|
||||
* successfully answered
|
||||
* @failed_num: number of failed FTM sessions
|
||||
* @asap_num: number of ASAP FTM sessions
|
||||
* @non_asap_num: number of non-ASAP FTM sessions
|
||||
* @total_duration_ms: total sessions durations - gives an indication
|
||||
* of how much time the responder was busy
|
||||
* @unknown_triggers_num: number of unknown FTM triggers - triggers from
|
||||
* initiators that didn't finish successfully the negotiation phase with
|
||||
* the responder
|
||||
* @reschedule_requests_num: number of FTM reschedule requests - initiator asks
|
||||
* for a new scheduling although it already has scheduled FTM slot
|
||||
* @out_of_window_triggers_num: total FTM triggers out of scheduled window
|
||||
*/
|
||||
struct cfg80211_ftm_responder_stats {
|
||||
u32 filled;
|
||||
u32 success_num;
|
||||
u32 partial_num;
|
||||
u32 failed_num;
|
||||
u32 asap_num;
|
||||
u32 non_asap_num;
|
||||
u64 total_duration_ms;
|
||||
u32 unknown_triggers_num;
|
||||
u32 reschedule_requests_num;
|
||||
u32 out_of_window_triggers_num;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cfg80211_ops - backend description for wireless configuration
|
||||
*
|
||||
@@ -3128,6 +3173,9 @@ struct cfg80211_external_auth_params {
|
||||
*
|
||||
* @tx_control_port: TX a control port frame (EAPoL). The noencrypt parameter
|
||||
* tells the driver that the frame should not be encrypted.
|
||||
*
|
||||
* @get_ftm_responder_stats: Retrieve FTM responder statistics, if available.
|
||||
* Statistics should be cumulative, currently no way to reset is provided.
|
||||
*/
|
||||
struct cfg80211_ops {
|
||||
int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow);
|
||||
@@ -3433,6 +3481,10 @@ struct cfg80211_ops {
|
||||
const u8 *buf, size_t len,
|
||||
const u8 *dest, const __be16 proto,
|
||||
const bool noencrypt);
|
||||
|
||||
int (*get_ftm_responder_stats)(struct wiphy *wiphy,
|
||||
struct net_device *dev,
|
||||
struct cfg80211_ftm_responder_stats *ftm_stats);
|
||||
};
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user