summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXi Zhang <xi.zhang@broadcom.com>2020-05-26 18:43:47 +0800
committerAhmed ElArabawy <arabawy@google.com>2020-05-28 23:35:33 -0700
commitd45dd2c7bd271d3dd36e8ba8df0297dbf734dbc8 (patch)
tree36db083ea6e062674bbd8f48be1efa88f23bffc6
parent0c9db076cba0205185c128192b5beed7109e5e34 (diff)
downloadwlan-d45dd2c7bd271d3dd36e8ba8df0297dbf734dbc8.tar.gz
WifiHAl: Add error alert support
Bug: 152366765 Test log for beacon lost alert: 01-01 00:11:36.705 8 8 W [08:18:30.889195][dhd][wlan] MACEVENT: WLC_E_LINK DOWN flags:0x0 status:0 reason:1 01-01 00:11:36.736 8 8 W [08:18:30.920297][cfg80211][wlan] wl_notify_connect_status: [wlan0] Mode BSS. event:16 status:0 reason:1 01-01 00:11:36.920 8 8 W : [08:18:31.103883][dhd][wlan] dhd_os_send_alert_message enter 01-01 00:11:36.943 8 8 W [08:18:31.127500][cfg80211][wlan] wl_cfg80211_alert: In : error alert eventing, reason=0x0 05-22 08:18:31.144 2589 3481 I WifiHAL : Got event: 11 05-22 08:18:31.144 2589 3481 I WifiHAL : Initiating alert callback 05-22 08:18:31.145 2808 3434 W WifiVendorHal: onDebugErrorAlert 0 05-22 08:18:31.333 2808 2888 W WifiDiags: captureAlertData: error 0 Change-Id: I4d2fe39941b791035298bc984d1906b01510d2b6
-rwxr-xr-xbcmdhd/wifi_hal/wifi_logger.cpp30
1 files changed, 26 insertions, 4 deletions
diff --git a/bcmdhd/wifi_hal/wifi_logger.cpp b/bcmdhd/wifi_hal/wifi_logger.cpp
index e4181e4..a47060c 100755
--- a/bcmdhd/wifi_hal/wifi_logger.cpp
+++ b/bcmdhd/wifi_hal/wifi_logger.cpp
@@ -83,7 +83,7 @@ typedef enum {
LOGGER_ATTRIBUTE_LOG_MIN_DATA_SIZE,
LOGGER_ATTRIBUTE_FW_DUMP_LEN,
LOGGER_ATTRIBUTE_FW_DUMP_DATA,
- // LOGGER_ATTRIBUTE_FW_ERR_CODE,
+ LOGGER_ATTRIBUTE_FW_ERR_CODE,
LOGGER_ATTRIBUTE_RING_DATA,
LOGGER_ATTRIBUTE_RING_STATUS,
LOGGER_ATTRIBUTE_RING_NUM,
@@ -775,7 +775,7 @@ public:
wifi_ring_buffer_id ring_id;
char *buffer = NULL;
int buffer_size = 0;
-
+ bool is_err_alert = false;
nlattr *vendor_data = event.get_attribute(NL80211_ATTR_VENDOR_DATA);
int len = event.get_vendor_data_len();
@@ -794,15 +794,37 @@ public:
} else if (it.get_type() == LOGGER_ATTRIBUTE_RING_DATA) {
buffer_size = it.get_len();
buffer = (char *)it.get_data();
- /*
} else if (it.get_type() == LOGGER_ATTRIBUTE_FW_ERR_CODE) {
+ /* Error code is for error alert event only */
mErrCode = it.get_u32();
- */
+ is_err_alert = true;
} else {
ALOGW("Ignoring invalid attribute type = %d, size = %d",
it.get_type(), it.get_len());
}
}
+
+ if(is_err_alert) {
+ mBuffSize = sizeof(mErrCode);
+ if (mBuff) free(mBuff);
+ mBuff = (char *)malloc(mBuffSize);
+ if (!mBuff) {
+ ALOGE("Buffer allocation failed");
+ return NL_SKIP;
+ }
+ memcpy(mBuff, (char *)&mErrCode, mBuffSize);
+ ALOGI("Initiating alert callback");
+ if (mHandler.on_alert) {
+ (*mHandler.on_alert)(id(), mBuff, mBuffSize, mErrCode);
+ }
+ if (mBuff) {
+ free(mBuff);
+ mBuff = NULL;
+ }
+ mBuffSize = 0;
+ return NL_OK;
+ }
+
if (mBuffSize) {
ALOGD("dump size: %d meta data size: %d", mBuffSize, buffer_size);
if (mBuff) free(mBuff);