summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnurag Chouhan <achouhan@codeaurora.org>2017-08-24 11:27:41 +0530
committersnandini <snandini@codeaurora.org>2017-08-29 21:27:48 -0700
commit527e64c8b3ecba26aa8f40a6f3f319697489dcd6 (patch)
tree0c441b6c90949a0a380ca86883d9c85dd1fc2331
parent67a654156b2cb6f7f9feaafafaabf415ee66d4d1 (diff)
qcacld-3.0: Introduce QCA_NL80211_VENDOR_SUBCMD_HANG
Event indicating to the user space that the driver has detected an internal failure. The driver is expected to recover from such a failure automatically, e.g., by resetting the device. This event carries the information indicating the reason that triggered this detection. Change-Id: Ia13e6f102e5e18ec4864ed258728369d51a77ff4 CRs-fixed: 2098493
-rw-r--r--uapi/linux/qca_vendor.h56
1 files changed, 56 insertions, 0 deletions
diff --git a/uapi/linux/qca_vendor.h b/uapi/linux/qca_vendor.h
index 7ab942ad130f..b380aaece2b0 100644
--- a/uapi/linux/qca_vendor.h
+++ b/uapi/linux/qca_vendor.h
@@ -228,6 +228,11 @@
* These scan parameters shall be reset by the driver/firmware once
* disconnected. The attributes used with this command are defined in
* enum qca_wlan_vendor_attr_active_tos.
+ * @QCA_NL80211_VENDOR_SUBCMD_HANG: Event indicating to the user space that the
+ * driver has detected an internal failure. This event carries the
+ * information indicating the reason that triggered this detection. The
+ * attributes for this command are defined in
+ * enum qca_wlan_vendor_attr_hang.
*/
enum qca_nl80211_vendor_subcmds {
@@ -422,6 +427,7 @@ enum qca_nl80211_vendor_subcmds {
QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_START = 154,
QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_STOP = 155,
QCA_NL80211_VENDOR_SUBCMD_ACTIVE_TOS = 156,
+ QCA_NL80211_VENDOR_SUBCMD_HANG = 157,
};
/**
@@ -688,6 +694,7 @@ enum qca_wlan_vendor_attr_get_station_info {
* P2P listen offload index
* @QCA_NL80211_VENDOR_SUBCMD_SAP_CONDITIONAL_CHAN_SWITCH_INDEX: SAP
* conditional channel switch index
+ * @QCA_NL80211_VENDOR_SUBCMD_HANG_REASON_INDEX: hang event reason index
*/
enum qca_nl80211_vendor_subcmds_index {
@@ -769,6 +776,7 @@ enum qca_nl80211_vendor_subcmds_index {
QCA_NL80211_VENDOR_SUBCMD_UPDATE_EXTERNAL_ACS_CONFIG,
QCA_NL80211_VENDOR_SUBCMD_NUD_STATS_GET_INDEX,
QCA_NL80211_VENDOR_SUBCMD_PWR_SAVE_FAIL_DETECTED_INDEX,
+ QCA_NL80211_VENDOR_SUBCMD_HANG_REASON_INDEX,
};
/**
@@ -2624,6 +2632,54 @@ enum qca_wlan_vendor_attr_active_tos {
QCA_WLAN_VENDOR_ATTR_ACTIVE_TOS_MAX = 3,
};
+enum qca_wlan_vendor_hang_reason {
+ /* Unspecified reason */
+ QCA_WLAN_HANG_REASON_UNSPECIFIED = 0,
+ /* No Map for the MAC entry for the received frame */
+ QCA_WLAN_HANG_RX_HASH_NO_ENTRY_FOUND = 1,
+ /* peer deletion timeout happened */
+ QCA_WLAN_HANG_PEER_DELETION_TIMEDOUT = 2,
+ /* peer unmap timeout */
+ QCA_WLAN_HANG_PEER_UNMAP_TIMEDOUT = 3,
+ /* Scan request timed out */
+ QCA_WLAN_HANG_SCAN_REQ_EXPIRED = 4,
+ /* Consecutive Scan attempt failures */
+ QCA_WLAN_HANG_SCAN_ATTEMPT_FAILURES = 5,
+ /* Unable to get the message buffer */
+ QCA_WLAN_HANG_GET_MSG_BUFF_FAILURE = 6,
+ /* Current command processing is timedout */
+ QCA_WLAN_HANG_ACTIVE_LIST_TIMEOUT = 7,
+ /* Timeout for an ACK from FW for suspend request */
+ QCA_WLAN_HANG_SUSPEND_TIMEOUT = 8,
+ /* Timeout for an ACK from FW for resume request */
+ QCA_WLAN_HANG_RESUME_TIMEOUT = 9,
+ /* Transmission timeout for consecutive data frames */
+ QCA_WLAN_HANG_TRANSMISSIONS_TIMEOUT = 10,
+ /* Timeout for the TX completion status of data frame */
+ QCA_WLAN_HANG_TX_COMPLETE_TIMEOUT = 11,
+ /* DXE failure for tx/Rx, DXE resource unavailability */
+ QCA_WLAN_HANG_DXE_FAILURE = 12,
+ /* WMI pending commands exceed the maximum count */
+ QCA_WLAN_HANG_WMI_EXCEED_MAX_PENDING_CMDS = 13,
+};
+
+/**
+ * enum qca_wlan_vendor_attr_hang - Used by the vendor command
+ * QCA_NL80211_VENDOR_SUBCMD_HANG.
+ */
+enum qca_wlan_vendor_attr_hang {
+ QCA_WLAN_VENDOR_ATTR_HANG_INVALID = 0,
+ /*
+ * Reason for the Hang - Represented by enum
+ * qca_wlan_vendor_hang_reason.
+ */
+ QCA_WLAN_VENDOR_ATTR_HANG_REASON = 1,
+
+ QCA_WLAN_VENDOR_ATTR_HANG_AFTER_LAST,
+ QCA_WLAN_VENDOR_ATTR_HANG_MAX =
+ QCA_WLAN_VENDOR_ATTR_HANG_AFTER_LAST - 1,
+};
+
enum qca_attr_trace_level {
QCA_ATTR_TRACE_LEVEL_INVALID = 0,
/*