summaryrefslogtreecommitdiff
path: root/wcn6740/qcwcn/wifi_hal/radio_mode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'wcn6740/qcwcn/wifi_hal/radio_mode.cpp')
-rw-r--r--wcn6740/qcwcn/wifi_hal/radio_mode.cpp26
1 files changed, 18 insertions, 8 deletions
diff --git a/wcn6740/qcwcn/wifi_hal/radio_mode.cpp b/wcn6740/qcwcn/wifi_hal/radio_mode.cpp
index 913ddfd..f758073 100644
--- a/wcn6740/qcwcn/wifi_hal/radio_mode.cpp
+++ b/wcn6740/qcwcn/wifi_hal/radio_mode.cpp
@@ -169,7 +169,8 @@ int RADIOModeCommand::handleEvent(WifiEvent &event)
{
ALOGE("%s: QCA_WLAN_VENDOR_ATTR_MAC_INFO_MAC_ID"
" not found", __FUNCTION__);
- return WIFI_ERROR_INVALID_ARGS;
+ ret = WIFI_ERROR_INVALID_ARGS;
+ goto cleanup;
}
mode_info.wlan_mac_id = nla_get_u32(tb2[QCA_WLAN_VENDOR_ATTR_MAC_INFO_MAC_ID]);
ALOGV("mac_id[%d]: %d ", num_of_mac, mode_info.wlan_mac_id);
@@ -178,7 +179,8 @@ int RADIOModeCommand::handleEvent(WifiEvent &event)
{
ALOGE("%s: QCA_WLAN_VENDOR_ATTR_MAC_INFO_BAND"
" NOT FOUND", __FUNCTION__);
- return WIFI_ERROR_INVALID_ARGS;
+ ret = WIFI_ERROR_INVALID_ARGS;
+ goto cleanup;
}
mode_info.mac_band = (wlan_mac_band) nla_get_u32(tb2[QCA_WLAN_VENDOR_ATTR_MAC_INFO_BAND]);
ALOGV("mac_band[%d]: %d ", num_of_mac, mode_info.mac_band);
@@ -203,7 +205,8 @@ int RADIOModeCommand::handleEvent(WifiEvent &event)
{
ALOGE("%s: QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_IFINDEX"
" NOT FOUND", __FUNCTION__);
- return WIFI_ERROR_INVALID_ARGS;
+ ret = WIFI_ERROR_INVALID_ARGS;
+ goto cleanup;
}
if (if_indextoname(nla_get_u32(tb3[QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_IFINDEX]),
miface_info.iface_name) == NULL)
@@ -217,7 +220,8 @@ int RADIOModeCommand::handleEvent(WifiEvent &event)
{
ALOGE("%s: QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_FREQ"
" NOT FOUND", __FUNCTION__);
- return WIFI_ERROR_INVALID_ARGS;
+ ret = WIFI_ERROR_INVALID_ARGS;
+ goto cleanup;
}
miface_info.channel = nla_get_u32(tb3[QCA_WLAN_VENDOR_ATTR_MAC_IFACE_INFO_FREQ]);
ALOGV("channel[%d]: %d ", num_of_iface, miface_info.channel);
@@ -252,13 +256,9 @@ int RADIOModeCommand::handleEvent(WifiEvent &event)
if (mHandler.on_radio_mode_change && num_of_mac) {
(*mHandler.on_radio_mode_change)(mreqId, num_of_mac, mwifi_iface_mac_info);
- free(mwifi_iface_mac_info);
- mwifi_iface_mac_info = NULL;
}
else {
ALOGE("No Callback registered: on radio mode change");
- free(mwifi_iface_mac_info);
- mwifi_iface_mac_info = NULL;
}
}
break;
@@ -268,6 +268,16 @@ int RADIOModeCommand::handleEvent(WifiEvent &event)
ALOGE("%s: Wrong subcmd received %d", __FUNCTION__, mSubcmd);
}
+cleanup:
+ if (mode_info.iface_info != NULL) {
+ free(mode_info.iface_info);
+ mode_info.iface_info = NULL;
+ }
+ if (mwifi_iface_mac_info != NULL) {
+ free(mwifi_iface_mac_info);
+ mwifi_iface_mac_info = NULL;
+ }
+
return ret;
}