Add new attributes in get_sta_info QCA vendor command

Add additional attributes for the QCA vendor command
QCA_NL80211_VENDOR_SUBCMD_GET_STA_INFO to get finer details on roaming
behavior, TSF out of sync count, and the latest TX rate, Rate Index used
for the transmission.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
This commit is contained in:
Sachin Ahuja 2021-02-01 17:21:47 +05:30 committed by Jouni Malinen
parent 8f204f69ac
commit 98a52b09ca

View file

@ -4243,6 +4243,139 @@ enum qca_vendor_roam_triggers {
QCA_ROAM_TRIGGER_REASON_EXTERNAL_SCAN = 1 << 12, QCA_ROAM_TRIGGER_REASON_EXTERNAL_SCAN = 1 << 12,
}; };
/*
* enum qca_vendor_roam_fail_reasons: Defines the various roam
* fail reasons. This enum value is used in
* @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ROAM_FAIL_REASON attribute.
*
* @QCA_ROAM_FAIL_REASON_SCAN_NOT_ALLOWED: Roam module in the firmware is not
* able to trigger the scan.
* @QCA_ROAM_FAIL_REASON_NO_AP_FOUND: No roamable APs found during roam scan.
* @QCA_ROAM_FAIL_REASON_NO_CAND_AP_FOUND: No candidate APs found during roam
* scan.
* @QCA_ROAM_FAIL_REASON_HOST: Roam fail due to disconnect issued from host.
* @QCA_ROAM_FAIL_REASON_AUTH_SEND: Unable to send Authentication frame.
* @QCA_ROAM_FAIL_REASON_AUTH_RECV: Received Authentication frame with error
* status code.
* @QCA_ROAM_FAIL_REASON_NO_AUTH_RESP: Authentication frame not received.
* @QCA_ROAM_FAIL_REASON_REASSOC_SEND: Unable to send Reassociation Request
* frame.
* @QCA_ROAM_FAIL_REASON_REASSOC_RECV: Received Reassociation Response frame
* with error status code.
* @QCA_ROAM_FAIL_REASON_NO_REASSOC_RESP: Reassociation Response frame not
* received.
* @QCA_ROAM_FAIL_REASON_SCAN_FAIL: Scan module not able to start scan.
* @QCA_ROAM_FAIL_REASON_AUTH_NO_ACK: No ACK is received for Authentication
* frame.
* @QCA_ROAM_FAIL_REASON_AUTH_INTERNAL_DROP: Authentication frame is dropped
* internally before transmission.
* @QCA_ROAM_FAIL_REASON_REASSOC_NO_ACK: No ACK is received for Reassociation
* Request frame.
* @QCA_ROAM_FAIL_REASON_REASSOC_INTERNAL_DROP: Reassociation Request frame is
* dropped internally.
* @QCA_ROAM_FAIL_REASON_EAPOL_M1_TIMEOUT: EAPOL-Key M1 is not received and
* times out.
* @QCA_ROAM_FAIL_REASON_EAPOL_M2_SEND: Unable to send EAPOL-Key M2 frame.
* @QCA_ROAM_FAIL_REASON_EAPOL_M2_INTERNAL_DROP: EAPOL-Key M2 frame dropped
* internally.
* @QCA_ROAM_FAIL_REASON_EAPOL_M2_NO_ACK: No ACK is received for EAPOL-Key
* M2 frame.
* @QCA_ROAM_FAIL_REASON_EAPOL_M3_TIMEOUT: EAPOL-Key M3 frame is not received.
* @QCA_ROAM_FAIL_REASON_EAPOL_M4_SEND: Unable to send EAPOL-Key M4 frame.
* @QCA_ROAM_FAIL_REASON_EAPOL_M4_INTERNAL_DROP: EAPOL-Key M4 frame dropped
* internally.
* @QCA_ROAM_FAIL_REASON_EAPOL_M4_NO_ACK: No ACK is received for EAPOL-Key M4
* frame.
* @QCA_ROAM_FAIL_REASON_NO_SCAN_FOR_FINAL_BEACON_MISS: Roam scan is not
* started for final beacon miss case.
* @QCA_ROAM_FAIL_REASON_DISCONNECT: Deauthentication or Disassociation frame
* received from the AP during roaming handoff.
* @QCA_ROAM_FAIL_REASON_RESUME_ABORT: Firmware roams to the AP when the Apps
* or host is suspended and gives the indication of the last roamed AP only
* when the Apps is resumed. If the Apps is resumed while the roaming is in
* progress, this ongoing roaming is aborted and the last roamed AP is
* indicated to host.
* @QCA_ROAM_FAIL_REASON_SAE_INVALID_PMKID: WPA3-SAE invalid PMKID.
* @QCA_ROAM_FAIL_REASON_SAE_PREAUTH_TIMEOUT: WPA3-SAE pre-authentication times
* out.
* @QCA_ROAM_FAIL_REASON_SAE_PREAUTH_FAIL: WPA3-SAE pre-authentication fails.
*/
enum qca_vendor_roam_fail_reasons {
QCA_ROAM_FAIL_REASON_NONE = 0,
QCA_ROAM_FAIL_REASON_SCAN_NOT_ALLOWED = 1,
QCA_ROAM_FAIL_REASON_NO_AP_FOUND = 2,
QCA_ROAM_FAIL_REASON_NO_CAND_AP_FOUND = 3,
QCA_ROAM_FAIL_REASON_HOST = 4,
QCA_ROAM_FAIL_REASON_AUTH_SEND = 5,
QCA_ROAM_FAIL_REASON_AUTH_RECV = 6,
QCA_ROAM_FAIL_REASON_NO_AUTH_RESP = 7,
QCA_ROAM_FAIL_REASON_REASSOC_SEND = 8,
QCA_ROAM_FAIL_REASON_REASSOC_RECV = 9,
QCA_ROAM_FAIL_REASON_NO_REASSOC_RESP = 10,
QCA_ROAM_FAIL_REASON_SCAN_FAIL = 11,
QCA_ROAM_FAIL_REASON_AUTH_NO_ACK = 12,
QCA_ROAM_FAIL_REASON_AUTH_INTERNAL_DROP = 13,
QCA_ROAM_FAIL_REASON_REASSOC_NO_ACK = 14,
QCA_ROAM_FAIL_REASON_REASSOC_INTERNAL_DROP = 15,
QCA_ROAM_FAIL_REASON_EAPOL_M1_TIMEOUT = 16,
QCA_ROAM_FAIL_REASON_EAPOL_M2_SEND = 17,
QCA_ROAM_FAIL_REASON_EAPOL_M2_INTERNAL_DROP = 18,
QCA_ROAM_FAIL_REASON_EAPOL_M2_NO_ACK = 19,
QCA_ROAM_FAIL_REASON_EAPOL_M3_TIMEOUT = 20,
QCA_ROAM_FAIL_REASON_EAPOL_M4_SEND = 21,
QCA_ROAM_FAIL_REASON_EAPOL_M4_INTERNAL_DROP = 22,
QCA_ROAM_FAIL_REASON_EAPOL_M4_NO_ACK = 23,
QCA_ROAM_FAIL_REASON_NO_SCAN_FOR_FINAL_BEACON_MISS = 24,
QCA_ROAM_FAIL_REASON_DISCONNECT = 25,
QCA_ROAM_FAIL_REASON_RESUME_ABORT = 26,
QCA_ROAM_FAIL_REASON_SAE_INVALID_PMKID = 27,
QCA_ROAM_FAIL_REASON_SAE_PREAUTH_TIMEOUT = 28,
QCA_ROAM_FAIL_REASON_SAE_PREAUTH_FAIL = 29,
};
/*
* enum qca_vendor_roam_invoke_fail_reasons: Defines the various roam
* invoke fail reasons. This enum value is used in
* @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ROAM_INVOKE_FAIL_REASON attribute.
*
* @QCA_ROAM_INVOKE_STATUS_IFACE_INVALID: Invalid interface ID is passed
* in roam invoke command.
* @QCA_ROAM_INVOKE_STATUS_OFFLOAD_DISABLE: Roam offload in firmware is not
* enabled.
* @QCA_ROAM_INVOKE_STATUS_AP_SSID_LENGTH_INVALID: Connected AP profile SSID
* length is invalid.
* @QCA_ROAM_INVOKE_STATUS_ROAM_DISALLOW: Firmware internal roaming is already
* in progress.
* @QCA_ROAM_INVOKE_STATUS_NON_ROAMABLE_AP: Host sends the Beacon/Probe Response
* of the AP in the roam invoke command to firmware. This reason is sent by the
* firmware when the given AP is configured to be ignored or SSID/security
* does not match.
* @QCA_ROAM_INVOKE_STATUS_ROAM_INTERNAL_FAIL: Roam handoff failed because of
* firmware internal reasons.
* @QCA_ROAM_INVOKE_STATUS_DISALLOW: Roam invoke trigger is not enabled.
* @QCA_ROAM_INVOKE_STATUS_SCAN_FAIL: Scan start fail for roam invoke.
* @QCA_ROAM_INVOKE_STATUS_START_ROAM_FAIL: Roam handoff start fail.
* @QCA_ROAM_INVOKE_STATUS_INVALID_PARAMS: Roam invoke parameters are invalid.
* @QCA_ROAM_INVOKE_STATUS_NO_CAND_AP: No candidate AP found to roam to.
* @QCA_ROAM_INVOKE_STATUS_ROAM_FAIL: Roam handoff failed.
*/
enum qca_vendor_roam_invoke_fail_reasons {
QCA_ROAM_INVOKE_STATUS_NONE = 0,
QCA_ROAM_INVOKE_STATUS_IFACE_INVALID = 1,
QCA_ROAM_INVOKE_STATUS_OFFLOAD_DISABLE = 2,
QCA_ROAM_INVOKE_STATUS_AP_SSID_LENGTH_INVALID = 3,
QCA_ROAM_INVOKE_STATUS_ROAM_DISALLOW = 4,
QCA_ROAM_INVOKE_STATUS_NON_ROAMABLE_AP = 5,
QCA_ROAM_INVOKE_STATUS_ROAM_INTERNAL_FAIL = 6,
QCA_ROAM_INVOKE_STATUS_DISALLOW = 7,
QCA_ROAM_INVOKE_STATUS_SCAN_FAIL = 8,
QCA_ROAM_INVOKE_STATUS_START_ROAM_FAIL = 9,
QCA_ROAM_INVOKE_STATUS_INVALID_PARAMS = 10,
QCA_ROAM_INVOKE_STATUS_NO_CAND_AP = 11,
QCA_ROAM_INVOKE_STATUS_ROAM_FAIL = 12,
};
/** /**
* enum qca_vendor_attr_roam_candidate_selection_criteria: * enum qca_vendor_attr_roam_candidate_selection_criteria:
* *
@ -9942,6 +10075,40 @@ enum qca_vendor_wlan_sta_guard_interval {
* include this attribute in response to the * include this attribute in response to the
* QCA_NL80211_VENDOR_SUBCMD_GET_STA_INFO command if there is no connection * QCA_NL80211_VENDOR_SUBCMD_GET_STA_INFO command if there is no connection
* failure observed in the last attempted connection. * failure observed in the last attempted connection.
*
* @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_LATEST_TX_RATE: u32, latest TX rate (Kbps)
* used by the station in its last TX frame while communicating to the AP in the
* connected state. When queried in the disconnected state, this represents the
* rate used by the STA in the last TX frame to the AP when it was connected.
* This attribute is used for STA mode only.
*
* @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_LATEST_RIX: u32, used in STA mode only.
* This represents the rate index used by the STA for the last TX frame to the
* AP. When queried in the disconnected state, this gives the last RIX used by
* the STA in the last TX frame to the AP when it was connected.
*
* @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_TSF_OUT_OF_SYNC_COUNT: u32, used in STA
* mode only. This represents the number of times the STA TSF goes out of sync
* from the AP after the connection. If queried in the disconnected state, this
* gives the count of TSF out of sync for the last connection.
*
* @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ROAM_TRIGGER_REASON: u32, used in STA
* mode only. This represents the roam trigger reason for the last roaming
* attempted by the firmware. This can be queried either in connected state or
* disconnected state. Each bit of this attribute represents the different
* roam trigger reason code which are defined in enum qca_vendor_roam_triggers.
*
* @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ROAM_FAIL_REASON: u32, used in STA mode
* only. This represents the roam fail reason for the last failed roaming
* attempt by the firmware. Different roam failure reason codes are specified
* in enum qca_vendor_roam_fail_reasons. This can be queried either in
* connected state or disconnected state.
*
* @QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ROAM_INVOKE_FAIL_REASON: u32, used in
* STA mode only. This represents the roam invoke fail reason for the last
* failed roam invoke. Different roam invoke failure reason codes
* are specified in enum qca_vendor_roam_invoke_fail_reasons. This can be
* queried either in connected state or disconnected state.
*/ */
enum qca_wlan_vendor_attr_get_sta_info { enum qca_wlan_vendor_attr_get_sta_info {
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_INVALID = 0, QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_INVALID = 0,
@ -9988,6 +10155,12 @@ enum qca_wlan_vendor_attr_get_sta_info {
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_BEACON_MIC_ERROR_COUNT = 41, QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_BEACON_MIC_ERROR_COUNT = 41,
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_BEACON_REPLAY_COUNT = 42, QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_BEACON_REPLAY_COUNT = 42,
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_CONNECT_FAIL_REASON_CODE = 43, QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_CONNECT_FAIL_REASON_CODE = 43,
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_LATEST_TX_RATE = 44,
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_LATEST_RIX = 45,
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_TSF_OUT_OF_SYNC_COUNT = 46,
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ROAM_TRIGGER_REASON = 47,
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ROAM_FAIL_REASON = 48,
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ROAM_INVOKE_FAIL_REASON = 49,
/* keep last */ /* keep last */
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_AFTER_LAST, QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_AFTER_LAST,