diff options
author | Hsiu-Chang Chen <hsiuchangchen@google.com> | 2020-03-09 19:15:57 +0530 |
---|---|---|
committer | Hsiu-Chang Chen <hsiuchangchen@google.com> | 2022-04-13 14:34:29 +0800 |
commit | 12c43b9b29b1deb04a0b478218eff532a86bad6d (patch) | |
tree | 8cfbd406f3960e6e05ce238438896925f4ad332d /qcwcn/wifi_hal/wifilogger_diag.cpp | |
parent | 215caf43a0302c23676956cd86df55ce017e9cdb (diff) | |
download | wlan-12c43b9b29b1deb04a0b478218eff532a86bad6d.tar.gz |
WifiHal: Allow WLAN_NL_MSG_OEM with new cld80211 attrs.
WLAN_NL_MSG_OEM uses CLD80211_ATTR_DATA for storing
binary data. With added support to cld80211 vendor subcmds
wifi hal will receive new attributes in which the data is
packed as nested sub attributes. Wifihal will forward the
new responses to its clients
Bug: 220992475
Test: VtsHalWifiNan/VtsHalWifiRtt
CRs-Fixed: 2637824
Change-Id: If4501d5e873622c254fb84a0d2949568d366f3da
Diffstat (limited to 'qcwcn/wifi_hal/wifilogger_diag.cpp')
-rw-r--r-- | qcwcn/wifi_hal/wifilogger_diag.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/qcwcn/wifi_hal/wifilogger_diag.cpp b/qcwcn/wifi_hal/wifilogger_diag.cpp index bdc9c7f..e1ed948 100644 --- a/qcwcn/wifi_hal/wifilogger_diag.cpp +++ b/qcwcn/wifi_hal/wifilogger_diag.cpp @@ -2597,14 +2597,14 @@ wifi_error diag_message_handler(hal_info *info, nl_msg *msg) clh = (tAniCLDHdr *)nla_data(tb_vendor[CLD80211_ATTR_DATA]); } } - if (!clh) { - ALOGE("Invalid data received from driver"); - return WIFI_SUCCESS; - } if((info->wifihal_ctrl_sock.s > 0) && (genlh->cmd == WLAN_NL_MSG_OEM)) { wifihal_ctrl_event_t *ctrl_evt; wifihal_mon_sock_t *reg; + if (!(tb_vendor[CLD80211_ATTR_DATA] || tb_vendor[CLD80211_ATTR_CMD])) { + ALOGE("Invalid oem data received from driver"); + return WIFI_SUCCESS; + } ctrl_evt = (wifihal_ctrl_event_t *)malloc(sizeof(*ctrl_evt) + nlh->nlmsg_len); if(ctrl_evt == NULL) @@ -2653,6 +2653,7 @@ wifi_error diag_message_handler(hal_info *info, nl_msg *msg) } } free(ctrl_evt); + return WIFI_SUCCESS; } } } else { @@ -2660,6 +2661,10 @@ wifi_error diag_message_handler(hal_info *info, nl_msg *msg) cmd = wnl->nlh.nlmsg_type; } + if (!clh) { + ALOGE("Invalid data received from driver"); + return WIFI_SUCCESS; + } /* Check nlmsg_type also to avoid processing unintended msgs */ if (cmd == ANI_NL_MSG_PUMAC) { if (!info->cldctx) { |