Introduce QCA_NL80211_VENDOR_SUBCMD_DRIVER_DISCONNECT_REASON
This acts as an event from the host driver to the user space to notify the driver specific reason for a disconnection. The host driver initiates the disconnection for various scenarios (beacon miss, Tx Failures, gateway unreachability, etc.) and the reason codes from cfg80211_disconnected() do not carry these driver specific reason codes. Host drivers should trigger this event immediately prior to triggering cfg80211_disconnected() to allow the user space to correlate the driver specific reason code with the disconnect indication. Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
parent
32551066b8
commit
8162d98f2e
1 changed files with 112 additions and 0 deletions
|
@ -634,6 +634,18 @@ enum qca_radiotap_vendor_ids {
|
|||
* is used to update the information about the station from the driver to
|
||||
* userspace. Uses attributes from enum
|
||||
* qca_wlan_vendor_attr_update_sta_info.
|
||||
*
|
||||
* @QCA_NL80211_VENDOR_SUBCMD_DRIVER_DISCONNECT_REASON: This acts as an event.
|
||||
* The host driver initiates the disconnection for scenarios such as beacon
|
||||
* miss, NUD failure, peer kick out, etc. The disconnection indication
|
||||
* through cfg80211_disconnected() expects the reason codes from enum
|
||||
* ieee80211_reasoncode which does not signify these various reasons why
|
||||
* the driver has triggered the disconnection. This event will be used to
|
||||
* send the driver specific reason codes by the host driver to userspace.
|
||||
* Host drivers should trigger this event and pass the respective reason
|
||||
* code immediately prior to triggering cfg80211_disconnected(). The
|
||||
* attributes used with this event are defined in enum
|
||||
* qca_wlan_vendor_attr_driver_disconnect_reason.
|
||||
*/
|
||||
enum qca_nl80211_vendor_subcmds {
|
||||
QCA_NL80211_VENDOR_SUBCMD_UNSPEC = 0,
|
||||
|
@ -812,6 +824,7 @@ enum qca_nl80211_vendor_subcmds {
|
|||
QCA_NL80211_VENDOR_SUBCMD_GET_STA_INFO = 186,
|
||||
QCA_NL80211_VENDOR_SUBCMD_GET_SAR_LIMITS_EVENT = 187,
|
||||
QCA_NL80211_VENDOR_SUBCMD_UPDATE_STA_INFO = 188,
|
||||
QCA_NL80211_VENDOR_SUBCMD_DRIVER_DISCONNECT_REASON = 189,
|
||||
};
|
||||
|
||||
enum qca_wlan_vendor_attr {
|
||||
|
@ -8438,4 +8451,103 @@ enum qca_wlan_vendor_attr_update_sta_info {
|
|||
QCA_WLAN_VENDOR_ATTR_UPDATE_STA_INFO_AFTER_LAST - 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum qca_disconnect_reason_codes - Specifies driver disconnect reason codes.
|
||||
* Used when the driver triggers the STA to disconnect from the AP.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_UNSPECIFIED: The host driver triggered the
|
||||
* disconnection with the AP due to unspecified reasons.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_INTERNAL_ROAM_FAILURE: The host driver triggered the
|
||||
* disconnection with the AP due to a roaming failure. This roaming is triggered
|
||||
* internally (host driver/firmware).
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_EXTERNAL_ROAM_FAILURE: The driver disconnected from
|
||||
* the AP when the user/external triggered roaming fails.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_GATEWAY_REACHABILITY_FAILURE: This reason code is used
|
||||
* by the host driver whenever gateway reachability failure is detected and the
|
||||
* driver disconnects with AP.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_UNSUPPORTED_CHANNEL_CSA: The driver disconnected from
|
||||
* the AP on a channel switch announcement from it with an unsupported channel.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_OPER_CHANNEL_DISABLED_INDOOR: On a concurrent AP start
|
||||
* with indoor channels disabled and if the STA is connected on one of these
|
||||
* disabled channels, the host driver disconnected the STA with this reason
|
||||
* code.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_OPER_CHANNEL_USER_DISABLED: Disconnection due to an
|
||||
* explicit request from the user to disable the current operating channel.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_DEVICE_RECOVERY: STA disconnected from the AP due to
|
||||
* the internal host driver/firmware recovery.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_KEY_TIMEOUT: The driver triggered the disconnection on
|
||||
* a timeout for the key installations from the user space.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_OPER_CHANNEL_BAND_CHANGE: The dDriver disconnected the
|
||||
* STA on a band change request from the user space to a different band from the
|
||||
* current operation channel/band.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_IFACE_DOWN: The STA disconnected from the AP on an
|
||||
* interface down trigger from the user space.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_PEER_XRETRY_FAIL: The host driver disconnected the
|
||||
* STA on getting continuous transmission failures for multiple Data frames.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_PEER_INACTIVITY: The STA does a keep alive
|
||||
* notification to the AP by transmitting NULL/G-ARP frames. This disconnection
|
||||
* represents inactivity from AP on such transmissions.
|
||||
|
||||
* @QCA_DISCONNECT_REASON_SA_QUERY_TIMEOUT: This reason code is used on
|
||||
* disconnection when SA Query times out (AP does not respond to SA Query).
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_BEACON_MISS_FAILURE: The host driver disconnected the
|
||||
* STA on missing the beacons continuously from the AP.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_CHANNEL_SWITCH_FAILURE: Disconnection due to STA not
|
||||
* able to move to the channel mentioned by the AP in CSA.
|
||||
*
|
||||
* @QCA_DISCONNECT_REASON_USER_TRIGGERED: User triggered disconnection.
|
||||
*/
|
||||
enum qca_disconnect_reason_codes {
|
||||
QCA_DISCONNECT_REASON_UNSPECIFIED = 0,
|
||||
QCA_DISCONNECT_REASON_INTERNAL_ROAM_FAILURE = 1,
|
||||
QCA_DISCONNECT_REASON_EXTERNAL_ROAM_FAILURE = 2,
|
||||
QCA_DISCONNECT_REASON_GATEWAY_REACHABILITY_FAILURE = 3,
|
||||
QCA_DISCONNECT_REASON_UNSUPPORTED_CHANNEL_CSA = 4,
|
||||
QCA_DISCONNECT_REASON_OPER_CHANNEL_DISABLED_INDOOR = 5,
|
||||
QCA_DISCONNECT_REASON_OPER_CHANNEL_USER_DISABLED = 6,
|
||||
QCA_DISCONNECT_REASON_DEVICE_RECOVERY = 7,
|
||||
QCA_DISCONNECT_REASON_KEY_TIMEOUT = 8,
|
||||
QCA_DISCONNECT_REASON_OPER_CHANNEL_BAND_CHANGE = 9,
|
||||
QCA_DISCONNECT_REASON_IFACE_DOWN = 10,
|
||||
QCA_DISCONNECT_REASON_PEER_XRETRY_FAIL = 11,
|
||||
QCA_DISCONNECT_REASON_PEER_INACTIVITY = 12,
|
||||
QCA_DISCONNECT_REASON_SA_QUERY_TIMEOUT = 13,
|
||||
QCA_DISCONNECT_REASON_BEACON_MISS_FAILURE = 14,
|
||||
QCA_DISCONNECT_REASON_CHANNEL_SWITCH_FAILURE = 15,
|
||||
QCA_DISCONNECT_REASON_USER_TRIGGERED = 16,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum qca_wlan_vendor_attr_driver_disconnect_reason - Defines attributes
|
||||
* used by %QCA_NL80211_VENDOR_SUBCMD_DRIVER_DISCONNECT_REASON vendor command.
|
||||
*
|
||||
* @QCA_WLAN_VENDOR_ATTR_DRIVER_DISCONNECT_REASCON_CODE: u32 attribute.
|
||||
* This attribute represents the driver specific reason codes (local
|
||||
* driver/firmware initiated reasons for disconnection) defined
|
||||
* in enum qca_disconnect_reason_codes.
|
||||
*/
|
||||
enum qca_wlan_vendor_attr_driver_disconnect_reason {
|
||||
QCA_WLAN_VENDOR_ATTR_DRIVER_DISCONNECT_REASON_INVALID = 0,
|
||||
QCA_WLAN_VENDOR_ATTR_DRIVER_DISCONNECT_REASCON_CODE = 1,
|
||||
|
||||
/* keep last */
|
||||
QCA_WLAN_VENDOR_ATTR_DRIVER_DISCONNECT_REASON_AFTER_LAST,
|
||||
QCA_WLAN_VENDOR_ATTR_DRIVER_DISCONNECT_REASON_MAX =
|
||||
QCA_WLAN_VENDOR_ATTR_DRIVER_DISCONNECT_REASON_AFTER_LAST - 1,
|
||||
};
|
||||
|
||||
#endif /* QCA_VENDOR_H */
|
||||
|
|
Loading…
Reference in a new issue