summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2015-12-14 04:54:54 -0800
committerLinux Build Service Account <lnxbuild@localhost>2015-12-14 04:54:54 -0800
commite001fb1fac14e6b10fbbada1272657ba49386542 (patch)
treec57cc850b266b2b7075cd65c69b27eed99c7b752
parent3202921889a62a3d5adb9cf936ee6c5e631d9506 (diff)
parent436d865ecae08f4e6fb45da257de2bb8cc0daf7c (diff)
downloadandroid_hardware_qcom_wlan-e001fb1fac14e6b10fbbada1272657ba49386542.tar.gz
android_hardware_qcom_wlan-e001fb1fac14e6b10fbbada1272657ba49386542.tar.bz2
android_hardware_qcom_wlan-e001fb1fac14e6b10fbbada1272657ba49386542.zip
Promotion of wlan-aosp.lnx.1.0-00003.
CRs Change ID Subject -------------------------------------------------------------------------------------------------------------- 871051 Ia5c37ba8e86261c5e912c83f9988124b4355c5ec wcnss_service: Migrate from QMI to QCCI I8f0915aae5a54b5dd63433d1c39c835e55b4cd69 Add LOCAL_ADDITIONAL_DEPENDENCIES to sanitized kernel he 948124 I46efad354810ca3cab0adb96bcf1ace51432b02b WiFi-HAL: GSCAN- Allow more than max_channels per bucket 940194 I6504ddc89ba65d4ed0e9437a79039f06bd44c55b Wifi-HAL: Free the nlmsg after receiving the response Change-Id: If0f80b76c727f67359c19a30a6691058b30834e1 CRs-Fixed: 871051, 948124, 940194
-rw-r--r--qcwcn/wifi_hal/Android.mk4
-rw-r--r--qcwcn/wifi_hal/cpp_bindings.cpp1
-rw-r--r--qcwcn/wifi_hal/gscan.cpp12
-rw-r--r--wcnss-service/Android.mk7
-rw-r--r--wcnss-service/wcnss_qmi_client.c125
5 files changed, 22 insertions, 127 deletions
diff --git a/qcwcn/wifi_hal/Android.mk b/qcwcn/wifi_hal/Android.mk
index 5aa9ec4..32e1b69 100644
--- a/qcwcn/wifi_hal/Android.mk
+++ b/qcwcn/wifi_hal/Android.mk
@@ -32,6 +32,8 @@ LOCAL_C_INCLUDES += \
$(TARGET_OUT_HEADERS)/libwpa_client \
$(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
+LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
+
LOCAL_SRC_FILES := \
wifi_hal.cpp \
common.cpp \
@@ -84,6 +86,8 @@ LOCAL_C_INCLUDES += \
$(TARGET_OUT_HEADERS)/libwpa_client \
$(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
+LOCAL_ADDITIONAL_DEPENDENCIES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
+
LOCAL_SRC_FILES := \
wifi_hal.cpp \
common.cpp \
diff --git a/qcwcn/wifi_hal/cpp_bindings.cpp b/qcwcn/wifi_hal/cpp_bindings.cpp
index 4b6db49..37e7e78 100644
--- a/qcwcn/wifi_hal/cpp_bindings.cpp
+++ b/qcwcn/wifi_hal/cpp_bindings.cpp
@@ -631,6 +631,7 @@ int WifiCommand::requestResponse(WifiRequest& request) {
}
out:
nl_cb_put(cb);
+ mMsg.destroy();
return err;
}
diff --git a/qcwcn/wifi_hal/gscan.cpp b/qcwcn/wifi_hal/gscan.cpp
index c7a43e4..8ae7103 100644
--- a/qcwcn/wifi_hal/gscan.cpp
+++ b/qcwcn/wifi_hal/gscan.cpp
@@ -2230,14 +2230,14 @@ wifi_error GScanCommand::validateGscanConfig(wifi_scan_cmd_params params)
GSCAN_REPORT_EVENT1, GSCAN_REPORT_EVENT2);
return WIFI_ERROR_INVALID_ARGS;
}
- if (params.buckets[i].num_channels < GSCAN_MIN_CHANNELS
- || params.buckets[i].num_channels > (int)MAX_CHANNELS) {
- ALOGE("%s: buckets[%d].num_channels is out of valid range : %d",
- __func__, i, params.buckets[i].num_channels);
- ALOGI("Valid Range : Minimum channels : %d", GSCAN_MIN_CHANNELS);
- ALOGI(" : Maximum channels : %d", (int)MAX_CHANNELS);
+ if (params.buckets[i].num_channels < GSCAN_MIN_CHANNELS) {
+ ALOGI("Number of channels :%d is less than Minimum channels : %d",
+ params.buckets[i].num_channels, GSCAN_MIN_CHANNELS);
return WIFI_ERROR_INVALID_ARGS;
}
+ if (params.buckets[i].num_channels > (int)MAX_CHANNELS)
+ ALOGI("Number of channels :%d is more than Maximum channels : %d",
+ params.buckets[i].num_channels, (int)MAX_CHANNELS);
for(int j=0; j<params.buckets[i].num_channels; j++)
{
diff --git a/wcnss-service/Android.mk b/wcnss-service/Android.mk
index 747195b..a8c89a1 100644
--- a/wcnss-service/Android.mk
+++ b/wcnss-service/Android.mk
@@ -6,16 +6,15 @@ LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/common/inc/
LOCAL_SRC_FILES := wcnss_service.c
ifeq ($(strip $(TARGET_USES_QCOM_WCNSS_QMI)),true)
LOCAL_CFLAGS += -DWCNSS_QMI
-LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/qmi/inc
+LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/qmi-framework/inc
LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/qmi/services
LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/qmi/platform
-LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/qmi/src
-LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/qmi/core/lib/inc
+LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/qmi/inc
LOCAL_SRC_FILES += wcnss_qmi_client.c
endif #TARGET_USES_QCOM_WCNSS_QMI
LOCAL_SHARED_LIBRARIES := libc libcutils libutils liblog
ifeq ($(strip $(TARGET_USES_QCOM_WCNSS_QMI)),true)
-LOCAL_SHARED_LIBRARIES += libqmiservices libqmi libqcci_legacy libqmi_client_qmux
+LOCAL_SHARED_LIBRARIES += libqmiservices libqmi_cci libidl
LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/libmdmdetect/inc
LOCAL_SHARED_LIBRARIES += libmdmdetect
endif #TARGET_USES_QCOM_WCNSS_QMI
diff --git a/wcnss-service/wcnss_qmi_client.c b/wcnss-service/wcnss_qmi_client.c
index ef2cf62..441218d 100644
--- a/wcnss-service/wcnss_qmi_client.c
+++ b/wcnss-service/wcnss_qmi_client.c
@@ -30,7 +30,6 @@ ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#define LOG_TAG "wcnss_qmi"
#include <cutils/log.h>
#include "wcnss_qmi_client.h"
-#include "qmi.h"
#include "qmi_client.h"
#include "device_management_service_v01.h"
#include <cutils/properties.h>
@@ -46,120 +45,23 @@ static qmi_client_type dms_qmi_client;
static int qmi_handle;
static int dms_init_done = FAILED;
-/* Android system property for fetching the modem type */
-#define QMI_UIM_PROPERTY_BASEBAND "ro.baseband"
-
-/* Android system property values for various modem types */
-#define QMI_UIM_PROP_BASEBAND_VALUE_SVLTE_1 "svlte1"
-#define QMI_UIM_PROP_BASEBAND_VALUE_SVLTE_2A "svlte2a"
-#define QMI_UIM_PROP_BASEBAND_VALUE_CSFB "csfb"
-#define QMI_UIM_PROP_BASEBAND_VALUE_SGLTE "sglte"
-#define QMI_UIM_PROP_BASEBAND_VALUE_SGLTE2 "sglte2"
-#define QMI_UIM_PROP_BASEBAND_VALUE_MSM "msm"
-#define QMI_UIM_PROP_BASEBAND_VALUE_APQ "apq"
-#define QMI_UIM_PROP_BASEBAND_VALUE_MDMUSB "mdm"
-#define QMI_UIM_PROP_BASEBAND_VALUE_DSDA "dsda"
-#define QMI_UIM_PROP_BASEBAND_VALUE_DSDA_2 "dsda2"
-
-static char *dms_find_modem_port( char *prop_value_ptr)
-{
- char *qmi_modem_port_ptr = QMI_PORT_RMNET_0;
-
- /* Sanity check */
- if (prop_value_ptr == NULL) {
- ALOGE("%s", "NULL prop_value_ptr, using default port",
- __func__);
- return qmi_modem_port_ptr;
- }
-
- ALOGE("%s: Baseband property value read: %s", __func__,
- prop_value_ptr);
-
- /* Map the port based on the read property */
- if ((strcmp(prop_value_ptr,
- QMI_UIM_PROP_BASEBAND_VALUE_SVLTE_1) == 0) ||
- (strcmp(prop_value_ptr,
- QMI_UIM_PROP_BASEBAND_VALUE_SVLTE_2A) == 0) ||
- (strcmp(prop_value_ptr,
- QMI_UIM_PROP_BASEBAND_VALUE_CSFB) == 0)) {
- qmi_modem_port_ptr = QMI_PORT_RMNET_SDIO_0;
- } else if ((strcmp(prop_value_ptr,
- QMI_UIM_PROP_BASEBAND_VALUE_MDMUSB) == 0) ||
- (strcmp(prop_value_ptr,
- QMI_UIM_PROP_BASEBAND_VALUE_SGLTE2) == 0)) {
- qmi_modem_port_ptr = QMI_PORT_RMNET_USB_0;
- } else if ((strcmp(prop_value_ptr,
- QMI_UIM_PROP_BASEBAND_VALUE_MSM) == 0) ||
- (strcmp(prop_value_ptr,
- QMI_UIM_PROP_BASEBAND_VALUE_APQ) == 0) ||
- (strcmp(prop_value_ptr,
- QMI_UIM_PROP_BASEBAND_VALUE_SGLTE) == 0)) {
- qmi_modem_port_ptr = QMI_PORT_RMNET_0;
- } else if (strcmp(prop_value_ptr,
- QMI_UIM_PROP_BASEBAND_VALUE_DSDA) == 0) {
- /* If it is a DSDA configuration, use the existing API */
- qmi_modem_port_ptr = (char *)QMI_PLATFORM_INTERNAL_USE_PORT_ID;
- } else if (strcmp(prop_value_ptr,
- QMI_UIM_PROP_BASEBAND_VALUE_DSDA_2) == 0) {
- /* If it is a DSDA2 configuration, use the existing API */
- qmi_modem_port_ptr = (char *)QMI_PLATFORM_INTERNAL_USE_PORT_ID;
- } else {
- ALOGE("%s: Property value does not match,using default port:%s",
- __func__, qmi_modem_port_ptr);
- }
-
- ALOGE("%s: QMI port found for modem: %s", __func__, qmi_modem_port_ptr);
-
- return qmi_modem_port_ptr;
-}
-
int wcnss_init_qmi()
{
qmi_client_error_type qmi_client_err;
qmi_idl_service_object_type dms_service;
- char prop_value[PROPERTY_VALUE_MAX];
- char *qmi_modem_port = NULL;
ALOGE("%s: Initialize wcnss QMI Interface", __func__);
+ qmi_client_os_params dms_os_params;
- qmi_handle = qmi_init(NULL, NULL);
- if (qmi_handle < 0) {
- ALOGE("%s: Error while initializing qmi", __func__);
- return FAILED;
- }
-
- dms_service = dms_get_service_object_v01();
- if (dms_service == NULL) {
- ALOGE("%s: Not able to get the service handle", __func__);
- goto exit;
- }
+ memset(&dms_os_params, 0, sizeof(qmi_client_os_params));
+ qmi_client_err = qmi_client_init_instance(dms_get_service_object_v01(),
+ QMI_CLIENT_INSTANCE_ANY, NULL, NULL,
+ &dms_os_params, 5000, &dms_qmi_client);
- /* Find out the modem type */
- memset(prop_value, 0x00, sizeof(prop_value));
- property_get(QMI_UIM_PROPERTY_BASEBAND, prop_value, "");
-
- /* Map to a respective QMI port */
- qmi_modem_port = dms_find_modem_port(prop_value);
- if (qmi_modem_port == NULL) {
- ALOGE("%s: qmi_modem_port is NULL", __func__);
- goto exit;
- }
-
- qmi_client_err = qmi_client_init((const char *)qmi_modem_port,
- dms_service, NULL, dms_service, &dms_qmi_client);
-
- if ((qmi_client_err == QMI_PORT_NOT_OPEN_ERR) &&
- (strcmp(qmi_modem_port, QMI_PORT_RMNET_0) == 0)){
- ALOGE("%s: Retrying with port RMNET_1: %d",
- __func__, qmi_client_err);
- qmi_modem_port = QMI_PORT_RMNET_1;
- qmi_client_err = qmi_client_init((const char *)qmi_modem_port,
- dms_service, NULL, dms_service, &dms_qmi_client);
- }
-
- if (qmi_client_err != QMI_NO_ERR){
+ if(qmi_client_err != QMI_NO_ERR)
+ {
ALOGE("%s: Error while Initializing QMI Client: %d",
- __func__, qmi_client_err);
+ __func__, qmi_client_err);
goto exit;
}
@@ -167,11 +69,6 @@ int wcnss_init_qmi()
return SUCCESS;
exit:
- qmi_handle = qmi_release(qmi_handle);
- if ( qmi_handle < 0 ) {
- ALOGE("%s: Error while releasing qmi %d",
- __func__, qmi_handle);
- }
return FAILED;
}
@@ -236,12 +133,6 @@ void wcnss_qmi_deinit()
__func__, qmi_client_err);
}
- qmi_handle = qmi_release(qmi_handle);
- if (qmi_handle < 0) {
- ALOGE("%s: Error while releasing qmi %d",
- __func__, qmi_handle);
- }
-
dms_init_done = FAILED;
}
#endif