summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXi Zhang <xi.zhang@broadcom.com>2020-05-29 07:56:59 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2020-05-29 07:56:59 +0000
commit62ab46460312f64fa27cbb9fb5425d03fa93fbc1 (patch)
tree36db083ea6e062674bbd8f48be1efa88f23bffc6
parent186844e3bdeb3b5b32d2d340283529c2eeba2043 (diff)
parentd45dd2c7bd271d3dd36e8ba8df0297dbf734dbc8 (diff)
downloadwlan-62ab46460312f64fa27cbb9fb5425d03fa93fbc1.tar.gz
WifiHAl: Add error alert support am: d45dd2c7bd
Change-Id: I7f8b89658e673423dd0f06ba40ffb830c5adefc8
-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);