diff options
-rw-r--r-- | bcmdhd/wifi_hal/common.cpp | 7 | ||||
-rw-r--r-- | bcmdhd/wifi_hal/common.h | 8 | ||||
-rw-r--r-- | bcmdhd/wifi_hal/gscan.cpp | 91 | ||||
-rw-r--r-- | bcmdhd/wifi_hal/rtt.cpp | 29 | ||||
-rw-r--r-- | bcmdhd/wifi_hal/wifi_hal.cpp | 32 | ||||
-rw-r--r-- | bcmdhd/wifi_hal/wifi_logger.cpp | 107 | ||||
-rw-r--r-- | bcmdhd/wifi_hal/wifi_offload.cpp | 6 |
7 files changed, 197 insertions, 83 deletions
diff --git a/bcmdhd/wifi_hal/common.cpp b/bcmdhd/wifi_hal/common.cpp index f0184d6..69ed256 100644 --- a/bcmdhd/wifi_hal/common.cpp +++ b/bcmdhd/wifi_hal/common.cpp @@ -164,6 +164,9 @@ wifi_error wifi_register_cmd(wifi_handle handle, int id, WifiCommand *cmd) ALOGV("Successfully added command %d: %p at %d", id, cmd, info->num_cmd); info->num_cmd++; result = WIFI_SUCCESS; + } else { + ALOGE("Failed to add command %d: %p at %d, reached max limit %d", + id, cmd, info->num_cmd, info->alloc_cmd); } return result; @@ -187,6 +190,10 @@ WifiCommand *wifi_unregister_cmd(wifi_handle handle, int id) } } + if (!cmd) { + ALOGI("Failed to remove command %d: %p", id, cmd); + } + return cmd; } diff --git a/bcmdhd/wifi_hal/common.h b/bcmdhd/wifi_hal/common.h index 841f0f3..2967c97 100644 --- a/bcmdhd/wifi_hal/common.h +++ b/bcmdhd/wifi_hal/common.h @@ -245,5 +245,13 @@ wifi_error wifi_cancel_cmd(wifi_request_id id, wifi_interface_handle iface); #define min(x, y) ((x) < (y) ? (x) : (y)) #define max(x, y) ((x) > (y) ? (x) : (y)) +#define NULL_CHECK_RETURN(ptr, str, ret) \ + do { \ + if (!(ptr)) { \ + ALOGE("%s(): null pointer - #ptr (%s)\n", __FUNCTION__, str); \ + return ret; \ + } \ + } while (0) + #endif diff --git a/bcmdhd/wifi_hal/gscan.cpp b/bcmdhd/wifi_hal/gscan.cpp index 1dc5ec5..a0f9104 100644 --- a/bcmdhd/wifi_hal/gscan.cpp +++ b/bcmdhd/wifi_hal/gscan.cpp @@ -685,10 +685,17 @@ wifi_error wifi_start_gscan( ALOGV("Starting GScan, halHandle = %p", handle); ScanCommand *cmd = new ScanCommand(iface, id, ¶ms, handler); - wifi_register_cmd(handle, id, cmd); - wifi_error result = (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = wifi_register_cmd(handle, id, cmd); + if (result != WIFI_SUCCESS) { + cmd->releaseRef(); + return result; + } + result = (wifi_error)cmd->start(); if (result != WIFI_SUCCESS) { wifi_unregister_cmd(handle, id); + cmd->releaseRef(); + return result; } return result; } @@ -705,6 +712,7 @@ wifi_error wifi_stop_gscan(wifi_request_id id, wifi_interface_handle iface) memset(&handler, 0, sizeof(handler)); ScanCommand *cmd = new ScanCommand(iface, id, &dummy_params, handler); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); cmd->cancel(); cmd->releaseRef(); return WIFI_SUCCESS; @@ -713,7 +721,6 @@ wifi_error wifi_stop_gscan(wifi_request_id id, wifi_interface_handle iface) return wifi_cancel_cmd(id, iface); } - wifi_error wifi_enable_full_scan_results( wifi_request_id id, wifi_interface_handle iface, @@ -725,11 +732,17 @@ wifi_error wifi_enable_full_scan_results( ALOGV("Enabling full scan results, halHandle = %p", handle); FullScanResultsCommand *cmd = new FullScanResultsCommand(iface, id, ¶ms_dummy, handler); - wifi_register_cmd(handle, id, cmd); - - wifi_error result = (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = wifi_register_cmd(handle, id, cmd); + if (result != WIFI_SUCCESS) { + cmd->releaseRef(); + return result; + } + result = (wifi_error)cmd->start(); if (result != WIFI_SUCCESS) { wifi_unregister_cmd(handle, id); + cmd->releaseRef(); + return result; } return result; } @@ -790,6 +803,7 @@ wifi_error wifi_disable_full_scan_results(wifi_request_id id, wifi_interface_han memset(&handler, 0, sizeof(handler)); FullScanResultsCommand *cmd = new FullScanResultsCommand(iface, 0, ¶ms_dummy, handler); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); cmd->cancel(); cmd->releaseRef(); return WIFI_SUCCESS; @@ -964,8 +978,9 @@ wifi_error wifi_get_cached_gscan_results(wifi_interface_handle iface, byte flush ALOGV("Getting cached scan results, iface handle = %p, num = %d", iface, *num); GetScanResultsCommand *cmd = new GetScanResultsCommand(iface, flush, results, max, num); - wifi_error err = (wifi_error) cmd->execute(); - delete cmd; + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error err = (wifi_error)cmd->execute(); + cmd->releaseRef(); return err; } @@ -1343,10 +1358,17 @@ wifi_error wifi_set_bssid_hotlist(wifi_request_id id, wifi_interface_handle ifac wifi_handle handle = getWifiHandle(iface); BssidHotlistCommand *cmd = new BssidHotlistCommand(iface, id, params, handler); - wifi_register_cmd(handle, id, cmd); - wifi_error result = (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = wifi_register_cmd(handle, id, cmd); + if (result != WIFI_SUCCESS) { + cmd->releaseRef(); + return result; + } + result = (wifi_error)cmd->start(); if (result != WIFI_SUCCESS) { wifi_unregister_cmd(handle, id); + cmd->releaseRef(); + return result; } return result; } @@ -1558,10 +1580,17 @@ wifi_error wifi_set_significant_change_handler(wifi_request_id id, wifi_interfac SignificantWifiChangeCommand *cmd = new SignificantWifiChangeCommand( iface, id, params, handler); - wifi_register_cmd(handle, id, cmd); - wifi_error result = (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = wifi_register_cmd(handle, id, cmd); + if (result != WIFI_SUCCESS) { + cmd->releaseRef(); + return result; + } + result = (wifi_error)cmd->start(); if (result != WIFI_SUCCESS) { wifi_unregister_cmd(handle, id); + cmd->releaseRef(); + return result; } return result; } @@ -1579,6 +1608,7 @@ wifi_error wifi_reset_epno_list(wifi_request_id id, wifi_interface_handle iface) memset(&handler, 0, sizeof(handler)); ePNOCommand *cmd = new ePNOCommand(iface, id, NULL, handler); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); cmd->cancel(); cmd->releaseRef(); return WIFI_SUCCESS; @@ -1589,15 +1619,22 @@ wifi_error wifi_reset_epno_list(wifi_request_id id, wifi_interface_handle iface) wifi_error wifi_set_epno_list(wifi_request_id id, wifi_interface_handle iface, const wifi_epno_params *params, wifi_epno_handler handler) { - wifi_handle handle = getWifiHandle(iface); - - ePNOCommand *cmd = new ePNOCommand(iface, id, params, handler); - wifi_register_cmd(handle, id, cmd); - wifi_error result = (wifi_error)cmd->start(); - if (result != WIFI_SUCCESS) { - wifi_unregister_cmd(handle, id); - } - return result; + wifi_handle handle = getWifiHandle(iface); + + ePNOCommand *cmd = new ePNOCommand(iface, id, params, handler); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = wifi_register_cmd(handle, id, cmd); + if (result != WIFI_SUCCESS) { + cmd->releaseRef(); + return result; + } + result = (wifi_error)cmd->start(); + if (result != WIFI_SUCCESS) { + wifi_unregister_cmd(handle, id); + cmd->releaseRef(); + return result; + } + return result; } class BssidBlacklistCommand : public WifiCommand @@ -1670,6 +1707,7 @@ wifi_error wifi_set_bssid_blacklist(wifi_request_id id, wifi_interface_handle if wifi_handle handle = getWifiHandle(iface); BssidBlacklistCommand *cmd = new BssidBlacklistCommand(iface, id, ¶ms); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); wifi_error result = (wifi_error)cmd->start(); //release the reference of command as well cmd->releaseRef(); @@ -1836,10 +1874,17 @@ wifi_error wifi_set_passpoint_list(wifi_request_id id, wifi_interface_handle ifa wifi_handle handle = getWifiHandle(iface); AnqpoConfigureCommand *cmd = new AnqpoConfigureCommand(id, iface, num, networks, handler); - wifi_register_cmd(handle, id, cmd); - wifi_error result = (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = wifi_register_cmd(handle, id, cmd); + if (result != WIFI_SUCCESS) { + cmd->releaseRef(); + return result; + } + result = (wifi_error)cmd->start(); if (result != WIFI_SUCCESS) { wifi_unregister_cmd(handle, id); + cmd->releaseRef(); + return result; } return result; } diff --git a/bcmdhd/wifi_hal/rtt.cpp b/bcmdhd/wifi_hal/rtt.cpp index d88bc61..410196b 100644 --- a/bcmdhd/wifi_hal/rtt.cpp +++ b/bcmdhd/wifi_hal/rtt.cpp @@ -219,8 +219,7 @@ public: : WifiCommand("EnableResponderCommand", iface, 0), mChannelInfo(channel_hint), m_max_duration_sec(max_duration_seconds), mResponderInfo(responderInfo) { - memset(mResponderInfo, 0 , sizeof(*mResponderInfo)); - + memset(mResponderInfo, 0, sizeof(*mResponderInfo)); } virtual int create() { @@ -613,10 +612,20 @@ wifi_error wifi_rtt_range_request(wifi_request_id id, wifi_interface_handle ifac unsigned num_rtt_config, wifi_rtt_config rtt_config[], wifi_rtt_event_handler handler) { wifi_handle handle = getWifiHandle(iface); - RttCommand *cmd = new RttCommand(iface, id, num_rtt_config, rtt_config, handler); - wifi_register_cmd(handle, id, cmd); - return (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = wifi_register_cmd(handle, id, cmd); + if (result != WIFI_SUCCESS) { + cmd->releaseRef(); + return result; + } + result = (wifi_error)cmd->start(); + if (result != WIFI_SUCCESS) { + wifi_unregister_cmd(handle, id); + cmd->releaseRef(); + return result; + } + return result; } /* API to cancel RTT measurements */ @@ -625,12 +634,10 @@ wifi_error wifi_rtt_range_cancel(wifi_request_id id, wifi_interface_handle ifac { wifi_handle handle = getWifiHandle(iface); RttCommand *cmd = new RttCommand(iface, id); - if (cmd) { - cmd->cancel_specific(num_devices, addr); - cmd->releaseRef(); - return WIFI_SUCCESS; - } - return WIFI_ERROR_INVALID_ARGS; + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + cmd->cancel_specific(num_devices, addr); + cmd->releaseRef(); + return WIFI_SUCCESS; } /* API to get RTT capability */ diff --git a/bcmdhd/wifi_hal/wifi_hal.cpp b/bcmdhd/wifi_hal/wifi_hal.cpp index b925778..59c03c6 100644 --- a/bcmdhd/wifi_hal/wifi_hal.cpp +++ b/bcmdhd/wifi_hal/wifi_hal.cpp @@ -862,6 +862,7 @@ class AndroidPktFilterCommand : public WifiCommand { int createSetPktFilterRequest(WifiRequest& request) { u8 *program = new u8[mProgramLen]; + NULL_CHECK_RETURN(program, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); int result = request.create(GOOGLE_OUI, APF_SUBCMD_SET_FILTER); if (result < 0) { return result; @@ -1222,16 +1223,21 @@ static wifi_error wifi_start_rssi_monitoring(wifi_request_id id, wifi_interface_ ALOGD("Start RSSI monitor %d", id); wifi_handle handle = getWifiHandle(iface); SetRSSIMonitorCommand *cmd = new SetRSSIMonitorCommand(id, iface, max_rssi, min_rssi, eh); - wifi_register_cmd(handle, id, cmd); - - wifi_error result = (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = wifi_register_cmd(handle, id, cmd); + if (result != WIFI_SUCCESS) { + cmd->releaseRef(); + return result; + } + result = (wifi_error)cmd->start(); if (result != WIFI_SUCCESS) { wifi_unregister_cmd(handle, id); + cmd->releaseRef(); + return result; } return result; } - static wifi_error wifi_stop_rssi_monitoring(wifi_request_id id, wifi_interface_handle iface) { ALOGD("Stopping RSSI monitor"); @@ -1243,6 +1249,7 @@ static wifi_error wifi_stop_rssi_monitoring(wifi_request_id id, wifi_interface_h memset(&handler, 0, sizeof(handler)); SetRSSIMonitorCommand *cmd = new SetRSSIMonitorCommand(id, iface, max_rssi, min_rssi, handler); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); cmd->cancel(); cmd->releaseRef(); return WIFI_SUCCESS; @@ -1254,24 +1261,25 @@ static wifi_error wifi_get_packet_filter_capabilities(wifi_interface_handle hand u32 *version, u32 *max_len) { ALOGD("Getting APF capabilities, halHandle = %p\n", handle); - wifi_error Status = WIFI_SUCCESS; - AndroidPktFilterCommand *cmd = new AndroidPktFilterCommand(handle, version, max_len); - Status = (wifi_error)cmd->start(); - if(Status == WIFI_SUCCESS) { + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + if (result == WIFI_SUCCESS) { ALOGD("Getting APF capability, version = %d, max_len = %d\n", *version, *max_len); } - return Status; + cmd->releaseRef(); + return result; } static wifi_error wifi_set_packet_filter(wifi_interface_handle handle, const u8 *program, u32 len) { ALOGD("Setting APF program, halHandle = %p\n", handle); - wifi_error Status = WIFI_SUCCESS; - AndroidPktFilterCommand *cmd = new AndroidPktFilterCommand(handle, program, len); - return (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + cmd->releaseRef(); + return result; } static wifi_error wifi_configure_nd_offload(wifi_interface_handle handle, u8 enable) diff --git a/bcmdhd/wifi_hal/wifi_logger.cpp b/bcmdhd/wifi_hal/wifi_logger.cpp index f33d74f..f0dc326 100644 --- a/bcmdhd/wifi_hal/wifi_logger.cpp +++ b/bcmdhd/wifi_hal/wifi_logger.cpp @@ -387,7 +387,10 @@ wifi_error wifi_get_firmware_version(wifi_interface_handle iface, char *buffer, { if (buffer && (buffer_size > 0)) { DebugCommand *cmd = new DebugCommand(iface, buffer, &buffer_size, GET_FW_VER); - return (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + cmd->releaseRef(); + return result; } else { ALOGE("FW version buffer NULL"); return WIFI_ERROR_INVALID_ARGS; @@ -399,7 +402,10 @@ wifi_error wifi_get_driver_version(wifi_interface_handle iface, char *buffer, in { if (buffer && (buffer_size > 0)) { DebugCommand *cmd = new DebugCommand(iface, buffer, &buffer_size, GET_DRV_VER); - return (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + cmd->releaseRef(); + return result; } else { ALOGE("Driver version buffer NULL"); return WIFI_ERROR_INVALID_ARGS; @@ -410,7 +416,10 @@ wifi_error wifi_get_driver_version(wifi_interface_handle iface, char *buffer, in wifi_error wifi_get_ring_data(wifi_interface_handle iface, char *ring_name) { DebugCommand *cmd = new DebugCommand(iface, ring_name, GET_RING_DATA); - return (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + cmd->releaseRef(); + return result; } /* API to get the status of all ring buffers supported by driver */ @@ -419,7 +428,10 @@ wifi_error wifi_get_ring_buffers_status(wifi_interface_handle iface, { if (status && num_rings) { DebugCommand *cmd = new DebugCommand(iface, num_rings, status, GET_RING_STATUS); - return (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + cmd->releaseRef(); + return result; } else { ALOGE("Ring status buffer NULL"); return WIFI_ERROR_INVALID_ARGS; @@ -432,7 +444,10 @@ wifi_error wifi_get_logger_supported_feature_set(wifi_interface_handle iface, { if (support) { DebugCommand *cmd = new DebugCommand(iface, support, GET_FEATURE); - return (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + cmd->releaseRef(); + return result; } else { ALOGE("Get support buffer NULL"); return WIFI_ERROR_INVALID_ARGS; @@ -443,9 +458,12 @@ wifi_error wifi_start_logging(wifi_interface_handle iface, u32 verbose_level, u32 flags, u32 max_interval_sec, u32 min_data_size, char *ring_name) { if (ring_name) { - DebugCommand *cmd = new DebugCommand(iface, verbose_level, flags, - max_interval_sec, min_data_size, ring_name, START_RING_LOG); - return (wifi_error)cmd->start(); + DebugCommand *cmd = new DebugCommand(iface, verbose_level, flags, max_interval_sec, + min_data_size, ring_name, START_RING_LOG); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + cmd->releaseRef(); + return result; } else { ALOGE("Ring name NULL"); return WIFI_ERROR_INVALID_ARGS; @@ -544,16 +562,19 @@ wifi_error wifi_set_log_handler(wifi_request_id id, wifi_interface_handle iface, ALOGV("Loghandler start, handle = %p", handle); SetLogHandler *cmd = new SetLogHandler(iface, id, handler); - if (cmd) { - wifi_register_cmd(handle, id, cmd); - wifi_error result = (wifi_error)cmd->start(); - if (result != WIFI_SUCCESS) - wifi_unregister_cmd(handle, id); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = wifi_register_cmd(handle, id, cmd); + if (result != WIFI_SUCCESS) { + cmd->releaseRef(); + return result; + } + result = (wifi_error)cmd->start(); + if (result != WIFI_SUCCESS) { + wifi_unregister_cmd(handle, id); + cmd->releaseRef(); return result; - } else { - ALOGD("Out of memory"); - return WIFI_ERROR_OUT_OF_MEMORY; } + return result; } wifi_error wifi_reset_log_handler(wifi_request_id id, wifi_interface_handle iface) @@ -566,6 +587,7 @@ wifi_error wifi_reset_log_handler(wifi_request_id id, wifi_interface_handle ifac memset(&handler, 0, sizeof(handler)); SetLogHandler *cmd = new SetLogHandler(iface, id, handler); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); cmd->cancel(); cmd->releaseRef(); return WIFI_SUCCESS; @@ -723,17 +745,19 @@ wifi_error wifi_set_alert_handler(wifi_request_id id, wifi_interface_handle ifac ALOGV("Alerthandler start, handle = %p", handle); SetAlertHandler *cmd = new SetAlertHandler(iface, id, handler); - - if (cmd) { - wifi_register_cmd(handle, id, cmd); - wifi_error result = (wifi_error)cmd->start(); - if (result != WIFI_SUCCESS) - wifi_unregister_cmd(handle, id); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = wifi_register_cmd(handle, id, cmd); + if (result != WIFI_SUCCESS) { + cmd->releaseRef(); + return result; + } + result = (wifi_error)cmd->start(); + if (result != WIFI_SUCCESS) { + wifi_unregister_cmd(handle, id); + cmd->releaseRef(); return result; - } else { - ALOGE("Out of memory"); - return WIFI_ERROR_OUT_OF_MEMORY; } + return result; } wifi_error wifi_reset_alert_handler(wifi_request_id id, wifi_interface_handle iface) @@ -746,6 +770,7 @@ wifi_error wifi_reset_alert_handler(wifi_request_id id, wifi_interface_handle if memset(&handler, 0, sizeof(handler)); SetAlertHandler *cmd = new SetAlertHandler(iface, id, handler); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); cmd->cancel(); cmd->releaseRef(); return WIFI_SUCCESS; @@ -865,7 +890,10 @@ wifi_error wifi_get_firmware_memory_dump( wifi_interface_handle iface, wifi_firmware_memory_dump_handler handler) { MemoryDumpCommand *cmd = new MemoryDumpCommand(iface, handler); - return (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + cmd->releaseRef(); + return result; } class PacketFateCommand: public WifiCommand @@ -995,14 +1023,14 @@ public: ALOGI("Id = %0x, subcmd = %d, len = %d", id, subcmd, len); if (mReqType == TX_PACKET_FATE) { - ALOGI("Response Recieved for Get Tx Pkt Fate command\n"); + ALOGI("Response recieved for get TX pkt fate command\n"); } else if (mReqType == RX_PACKET_FATE) { - ALOGI("Response Recieved for Get Rx Pkt Fate command\n"); + ALOGI("Response recieved for get RX pkt fate command\n"); } else if (mReqType == PACKET_MONITOR_START) { - ALOGI("Response Recieved for Monitor Pkt Fate command\n"); + ALOGI("Response recieved for monitor pkt fate command\n"); return NL_OK; } else { - ALOGE("Response Recieved for Unknown Pkt Fate command\n"); + ALOGE("Response recieved for unknown pkt fate command\n"); return NL_SKIP; } @@ -1033,7 +1061,10 @@ public: wifi_error wifi_start_pkt_fate_monitoring(wifi_interface_handle handle) { PacketFateCommand *cmd = new PacketFateCommand(handle); - return (wifi_error)cmd->start(); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + cmd->releaseRef(); + return result; } wifi_error wifi_get_tx_pkt_fates(wifi_interface_handle handle, @@ -1041,8 +1072,11 @@ wifi_error wifi_get_tx_pkt_fates(wifi_interface_handle handle, size_t *n_provided_fates) { PacketFateCommand *cmd = new PacketFateCommand(handle, tx_report_bufs, - n_requested_fates, n_provided_fates); - return (wifi_error)cmd->start(); + n_requested_fates, n_provided_fates); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + cmd->releaseRef(); + return result; } wifi_error wifi_get_rx_pkt_fates(wifi_interface_handle handle, @@ -1050,6 +1084,9 @@ wifi_error wifi_get_rx_pkt_fates(wifi_interface_handle handle, size_t *n_provided_fates) { PacketFateCommand *cmd = new PacketFateCommand(handle, rx_report_bufs, - n_requested_fates, n_provided_fates); - return (wifi_error)cmd->start(); + n_requested_fates, n_provided_fates); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); + wifi_error result = (wifi_error)cmd->start(); + cmd->releaseRef(); + return result; } diff --git a/bcmdhd/wifi_hal/wifi_offload.cpp b/bcmdhd/wifi_hal/wifi_offload.cpp index 41cc13f..2dc9228 100644 --- a/bcmdhd/wifi_hal/wifi_offload.cpp +++ b/bcmdhd/wifi_hal/wifi_offload.cpp @@ -205,8 +205,9 @@ wifi_error wifi_start_sending_offloaded_packet(wifi_request_id index, wifi_inter && (ip_packet_len <= MKEEP_ALIVE_IP_PKT_MAX)) { MKeepAliveCommand *cmd = new MKeepAliveCommand(iface, index, ip_packet, ip_packet_len, src_mac_addr, dst_mac_addr, period_msec, START_MKEEP_ALIVE); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); wifi_error result = (wifi_error)cmd->start(); - delete cmd; + cmd->releaseRef(); return result; } else { ALOGE("Invalid mkeep_alive parameters"); @@ -219,8 +220,9 @@ wifi_error wifi_stop_sending_offloaded_packet(wifi_request_id index, wifi_interf { if (index > 0 && index <= N_AVAIL_ID) { MKeepAliveCommand *cmd = new MKeepAliveCommand(iface, index, STOP_MKEEP_ALIVE); + NULL_CHECK_RETURN(cmd, "memory allocation failure", WIFI_ERROR_OUT_OF_MEMORY); wifi_error result = (wifi_error)cmd->start(); - delete cmd; + cmd->releaseRef(); return result; } else { ALOGE("Invalid mkeep_alive parameters"); |