summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c100
-rw-r--r--qcwcn/wpa_supplicant_8_lib/qca-vendor_copy.h133
-rw-r--r--qcwcn/wpa_supplicant_8_lib/wpa_driver_common_lib.h33
3 files changed, 262 insertions, 4 deletions
diff --git a/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c b/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c
index 4cbfda8..4e44d8d 100644
--- a/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c
+++ b/qcwcn/wpa_supplicant_8_lib/driver_cmd_nl80211.c
@@ -1016,7 +1016,7 @@ static int fill_sta_info(struct remote_sta_info *sta_info,
if (sta_info->num_sta == 1) {
if (sta_info->show_band)
ret = snprintf(buf, buf_len,
- "%02x:%02x:%02x:%02x:%02x:%02x %d %d %04x %02x:%02x:%02x %d %d %d %d %d %d %d %d %d %s",
+ "%02x:%02x:%02x:%02x:%02x:%02x %d %d %04x %02x:%02x:%02x %d %d %d %d %d %d %d %d %d %s %d %d %d %d %d %d %d %d %d %d %d %d %d",
sta_info->mac_addr[0], sta_info->mac_addr[1],
sta_info->mac_addr[2], sta_info->mac_addr[3],
sta_info->mac_addr[4], sta_info->mac_addr[5],
@@ -1032,10 +1032,23 @@ static int fill_sta_info(struct remote_sta_info *sta_info,
-1,
sta_info->reason,
sta_info->supported_mode,
- sta_info->country);
+ sta_info->country,
+ sta_info->ani_level,
+ -1,
+ -1,
+ -1,
+ sta_info->roam_trigger_reason,
+ sta_info->roam_fail_reason,
+ sta_info->roam_invoke_fail_reason,
+ sta_info->tsf_out_of_sync_count,
+ sta_info->latest_tx_power,
+ sta_info->latest_tx_rate,
+ sta_info->target_power_24g_1mbps,
+ sta_info->target_power_24g_6mbps,
+ sta_info->target_power_5g_6mbps);
else
ret = snprintf(buf, buf_len,
- "%02x:%02x:%02x:%02x:%02x:%02x %d %d %04x %02x:%02x:%02x %d %d %d %d %d %d %d %d %u %s",
+ "%02x:%02x:%02x:%02x:%02x:%02x %d %d %04x %02x:%02x:%02x %d %d %d %d %d %d %d %d %u %s %d %d %d %d %d %d %d %d %d %d %d %d %d",
sta_info->mac_addr[0], sta_info->mac_addr[1],
sta_info->mac_addr[2], sta_info->mac_addr[3],
sta_info->mac_addr[4], sta_info->mac_addr[5],
@@ -1051,7 +1064,20 @@ static int fill_sta_info(struct remote_sta_info *sta_info,
-1,
sta_info->reason,
sta_info->supported_band,
- sta_info->country);
+ sta_info->country,
+ sta_info->ani_level,
+ -1,
+ -1,
+ -1,
+ sta_info->roam_trigger_reason,
+ sta_info->roam_fail_reason,
+ sta_info->roam_invoke_fail_reason,
+ sta_info->tsf_out_of_sync_count,
+ sta_info->latest_tx_power,
+ sta_info->latest_tx_rate,
+ sta_info->target_power_24g_1mbps,
+ sta_info->target_power_24g_6mbps,
+ sta_info->target_power_5g_6mbps);
} else {
ret = snprintf(buf, buf_len,
"%d %d %04x %d %d %d %d %d %d %d %d %d %s",
@@ -1361,6 +1387,72 @@ static int get_sta_info_handler(struct nl_msg *msg, void *arg)
wpa_printf(MSG_INFO,"tx_pkts_fw_retry_exhausted %d", g_sta_info.tx_pkts_fw_retry_exhausted);
}
+ if (tb_vendor[GET_STA_INFO_ANI_LEVEL]) {
+ g_sta_info.ani_level =
+ nla_get_u32(tb_vendor[GET_STA_INFO_ANI_LEVEL]);
+ wpa_printf(MSG_INFO,"ani_level %d", g_sta_info.ani_level);
+ }
+
+ if (tb_vendor[GET_STA_INFO_ROAM_TRIGGER_REASON]) {
+ g_sta_info.roam_trigger_reason =
+ nla_get_u32(tb_vendor[GET_STA_INFO_ROAM_TRIGGER_REASON]);
+ wpa_printf(MSG_INFO,"roam_trigger_reason %d", g_sta_info.roam_trigger_reason);
+ }
+
+ if (tb_vendor[GET_STA_INFO_ROAM_FAIL_REASON]) {
+ g_sta_info.roam_fail_reason =
+ nla_get_u32(tb_vendor[GET_STA_INFO_ROAM_FAIL_REASON]);
+ wpa_printf(MSG_INFO,"roam_fail_reason %d", g_sta_info.roam_fail_reason);
+ }
+
+ if (tb_vendor[GET_STA_INFO_ROAM_INVOKE_FAIL_REASON]) {
+ g_sta_info.roam_invoke_fail_reason =
+ nla_get_u32(tb_vendor[GET_STA_INFO_ROAM_INVOKE_FAIL_REASON]);
+ wpa_printf(MSG_INFO,"roam_invoke_fail_reason %d", g_sta_info.roam_invoke_fail_reason);
+ }
+
+ if (tb_vendor[GET_STA_INFO_TSF_OUT_OF_SYNC_COUNT]) {
+ g_sta_info.tsf_out_of_sync_count =
+ nla_get_u32(tb_vendor[GET_STA_INFO_TSF_OUT_OF_SYNC_COUNT]);
+ wpa_printf(MSG_INFO,"tsf_out_of_sync_count %d", g_sta_info.tsf_out_of_sync_count);
+ }
+
+ if (tb_vendor[GET_STA_INFO_LATEST_TX_POWER]) {
+ g_sta_info.latest_tx_power =
+ nla_get_u32(tb_vendor[GET_STA_INFO_LATEST_TX_POWER]);
+ wpa_printf(MSG_INFO,"latest_tx_power %d", g_sta_info.latest_tx_power);
+ }
+
+ if (tb_vendor[GET_STA_INFO_LATEST_TX_RATE]) {
+ g_sta_info.latest_tx_rate =
+ nla_get_u32(tb_vendor[GET_STA_INFO_LATEST_TX_RATE]);
+ wpa_printf(MSG_INFO,"latest_tx_rate %d", g_sta_info.latest_tx_rate);
+ }
+
+ if (tb_vendor[GET_STA_INFO_TARGET_POWER_24G_1MBPS]) {
+ g_sta_info.target_power_24g_1mbps =
+ nla_get_u32(tb_vendor[GET_STA_INFO_TARGET_POWER_24G_1MBPS]);
+ wpa_printf(MSG_INFO,"target_power_24g_1mbps %d", g_sta_info.target_power_24g_1mbps);
+ }
+
+ if (tb_vendor[GET_STA_INFO_TARGET_POWER_24G_6MBPS]) {
+ g_sta_info.target_power_24g_6mbps =
+ nla_get_u32(tb_vendor[GET_STA_INFO_TARGET_POWER_24G_6MBPS]);
+ wpa_printf(MSG_INFO,"target_power_24g_6mbps %d", g_sta_info.target_power_24g_6mbps);
+ }
+
+ if (tb_vendor[GET_STA_INFO_TARGET_POWER_5G_6MBPS]) {
+ g_sta_info.target_power_5g_6mbps =
+ nla_get_u32(tb_vendor[GET_STA_INFO_TARGET_POWER_5G_6MBPS]);
+ wpa_printf(MSG_INFO,"target_power_5g_6mbps %d", g_sta_info.target_power_5g_6mbps);
+ }
+
+ if (tb_vendor[GET_STA_INFO_LATEST_RIX]) {
+ g_sta_info.latest_rix =
+ nla_get_u32(tb_vendor[GET_STA_INFO_LATEST_RIX]);
+ wpa_printf(MSG_INFO,"latest_rix %d", g_sta_info.latest_rix);
+ }
+
g_sta_info.num_received_vendor_sta_info++;
diff --git a/qcwcn/wpa_supplicant_8_lib/qca-vendor_copy.h b/qcwcn/wpa_supplicant_8_lib/qca-vendor_copy.h
index 0545cf4..8487f0d 100644
--- a/qcwcn/wpa_supplicant_8_lib/qca-vendor_copy.h
+++ b/qcwcn/wpa_supplicant_8_lib/qca-vendor_copy.h
@@ -4428,6 +4428,139 @@ enum qca_vendor_roam_invoke_fail_reasons {
};
+/*
+ * 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:
*
diff --git a/qcwcn/wpa_supplicant_8_lib/wpa_driver_common_lib.h b/qcwcn/wpa_supplicant_8_lib/wpa_driver_common_lib.h
index 572bf81..71861aa 100644
--- a/qcwcn/wpa_supplicant_8_lib/wpa_driver_common_lib.h
+++ b/qcwcn/wpa_supplicant_8_lib/wpa_driver_common_lib.h
@@ -97,6 +97,28 @@
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_TARGET_TX_RETRY
#define GET_STA_INFO_TARGET_TX_RETRY_EXHAUSTED \
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_TARGET_TX_RETRY_EXHAUSTED
+#define GET_STA_INFO_ANI_LEVEL \
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ANI_LEVEL
+#define GET_STA_INFO_LATEST_TX_RATE \
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_LATEST_TX_RATE
+#define GET_STA_INFO_LATEST_RIX \
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_LATEST_RIX
+#define GET_STA_INFO_TSF_OUT_OF_SYNC_COUNT \
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_TSF_OUT_OF_SYNC_COUNT
+#define GET_STA_INFO_LATEST_TX_POWER \
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_LATEST_TX_POWER
+#define GET_STA_INFO_ROAM_TRIGGER_REASON \
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ROAM_TRIGGER_REASON
+#define GET_STA_INFO_TARGET_POWER_24G_1MBPS \
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_TARGET_POWER_24G_1MBPS
+#define GET_STA_INFO_TARGET_POWER_24G_6MBPS \
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_TARGET_POWER_24G_6MBPS
+#define GET_STA_INFO_TARGET_POWER_5G_6MBPS \
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_TARGET_POWER_5G_6MBPS
+#define GET_STA_INFO_ROAM_FAIL_REASON \
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ROAM_FAIL_REASON
+#define GET_STA_INFO_ROAM_INVOKE_FAIL_REASON \
+ QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_ROAM_INVOKE_FAIL_REASON
#define GET_STA_INFO_MAX \
QCA_WLAN_VENDOR_ATTR_GET_STA_INFO_MAX
@@ -326,6 +348,17 @@ struct remote_sta_info {
u32 tx_pkts_fw_total;
u32 tx_pkts_fw_retries;
u32 tx_pkts_fw_retry_exhausted;
+ u32 ani_level;
+ u32 roam_trigger_reason;
+ u32 roam_fail_reason;
+ u32 roam_invoke_fail_reason;
+ u32 tsf_out_of_sync_count;
+ u32 latest_tx_power;
+ u32 latest_tx_rate;
+ u32 latest_rix;
+ u32 target_power_24g_1mbps;
+ u32 target_power_24g_6mbps;
+ u32 target_power_5g_6mbps;
u8 *supp_op_classes; /* Supported Operating Classes element, if
* received, starting from the Length field */
u8 *supp_channels;