diff options
author | Xi Zhang <xi.zhang@broadcom.com> | 2020-05-29 07:56:59 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-05-29 07:56:59 +0000 |
commit | 62ab46460312f64fa27cbb9fb5425d03fa93fbc1 (patch) | |
tree | 36db083ea6e062674bbd8f48be1efa88f23bffc6 | |
parent | 186844e3bdeb3b5b32d2d340283529c2eeba2043 (diff) | |
parent | d45dd2c7bd271d3dd36e8ba8df0297dbf734dbc8 (diff) | |
download | wlan-62ab46460312f64fa27cbb9fb5425d03fa93fbc1.tar.gz |
WifiHAl: Add error alert support am: d45dd2c7bd
Change-Id: I7f8b89658e673423dd0f06ba40ffb830c5adefc8
-rwxr-xr-x | bcmdhd/wifi_hal/wifi_logger.cpp | 30 |
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); |