cfg80211/mac80211: support reporting wakeup reason
When waking up from WoWLAN, it is useful to know what triggered the wakeup. Support reporting the wakeup reason(s) in cfg80211 (and a pass-through in mac80211) to allow userspace to know. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -1596,6 +1596,32 @@ struct cfg80211_wowlan {
|
||||
int n_patterns;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cfg80211_wowlan_wakeup - wakeup report
|
||||
* @disconnect: woke up by getting disconnected
|
||||
* @magic_pkt: woke up by receiving magic packet
|
||||
* @gtk_rekey_failure: woke up by GTK rekey failure
|
||||
* @eap_identity_req: woke up by EAP identity request packet
|
||||
* @four_way_handshake: woke up by 4-way handshake
|
||||
* @rfkill_release: woke up by rfkill being released
|
||||
* @pattern_idx: pattern that caused wakeup, -1 if not due to pattern
|
||||
* @packet_present_len: copied wakeup packet data
|
||||
* @packet_len: original wakeup packet length
|
||||
* @packet: The packet causing the wakeup, if any.
|
||||
* @packet_80211: For pattern match, magic packet and other data
|
||||
* frame triggers an 802.3 frame should be reported, for
|
||||
* disconnect due to deauth 802.11 frame. This indicates which
|
||||
* it is.
|
||||
*/
|
||||
struct cfg80211_wowlan_wakeup {
|
||||
bool disconnect, magic_pkt, gtk_rekey_failure,
|
||||
eap_identity_req, four_way_handshake,
|
||||
rfkill_release, packet_80211;
|
||||
s32 pattern_idx;
|
||||
u32 packet_present_len, packet_len;
|
||||
const void *packet;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cfg80211_gtk_rekey_data - rekey data
|
||||
* @kek: key encryption key
|
||||
@@ -3852,6 +3878,21 @@ int cfg80211_get_p2p_attr(const u8 *ies, unsigned int len,
|
||||
enum ieee80211_p2p_attr_id attr,
|
||||
u8 *buf, unsigned int bufsize);
|
||||
|
||||
/**
|
||||
* cfg80211_report_wowlan_wakeup - report wakeup from WoWLAN
|
||||
* @wdev: the wireless device reporting the wakeup
|
||||
* @wakeup: the wakeup report
|
||||
* @gfp: allocation flags
|
||||
*
|
||||
* This function reports that the given device woke up. If it
|
||||
* caused the wakeup, report the reason(s), otherwise you may
|
||||
* pass %NULL as the @wakeup parameter to advertise that something
|
||||
* else caused the wakeup.
|
||||
*/
|
||||
void cfg80211_report_wowlan_wakeup(struct wireless_dev *wdev,
|
||||
struct cfg80211_wowlan_wakeup *wakeup,
|
||||
gfp_t gfp);
|
||||
|
||||
/* Logging, debugging and troubleshooting/diagnostic helpers. */
|
||||
|
||||
/* wiphy_printk helpers, similar to dev_printk */
|
||||
|
Reference in New Issue
Block a user