diff --git a/mbtk/libgsw_lib/gsw_data_interface.c b/mbtk/libgsw_lib/gsw_data_interface.c
index abb8676..1c21210 100755
--- a/mbtk/libgsw_lib/gsw_data_interface.c
+++ b/mbtk/libgsw_lib/gsw_data_interface.c
@@ -742,7 +742,7 @@
 int gsw_data_call_deinit(void)
 {
     int ret;
-    if(data_init_flag == 0 && data_info_handle == NULL)
+    if(data_init_flag == 0 || data_info_handle == NULL)
     {
         return GSW_HAL_NORMAL_FAIL;
     }
@@ -767,7 +767,7 @@
  */
 int gsw_data_call_set_apn(Link_Info_s *LinkInf)
 {
-    if(data_init_flag == 0 && data_info_handle == NULL)
+    if(data_init_flag == 0 || data_info_handle == NULL)
     {
         return GSW_HAL_NORMAL_FAIL;
     }
@@ -788,21 +788,21 @@
     if(strcmp(LinkInf->normalProtocol,"IP") == 0)
     {
         ip_type = MBTK_IP_TYPE_IP;
-        LOGE("pdp_type(protocol) is IP\n");
+        LOGE("pdp_type(protocol) is IP");
     }
     else if(strcmp(LinkInf->normalProtocol,"IPV6") == 0)
     {
         ip_type = MBTK_IP_TYPE_IPV6;
-        LOGE("pdp_type(protocol) is IPV6\n");
+        LOGE("pdp_type(protocol) is IPV6");
     }
     else if(strcmp(LinkInf->normalProtocol,"IPV4V6") == 0)
     {
         ip_type = MBTK_IP_TYPE_IPV4V6;
-        LOGE("pdp_type(protocol) is IPV4V6\n");
+        LOGE("pdp_type(protocol) is IPV4V6");
     }
     else
     {
-        LOGE("pdp_type(protocol) error\n");
+        LOGE("pdp_type(protocol) error");
         return GSW_HAL_NORMAL_FAIL;
     }
 
@@ -871,7 +871,7 @@
     int ret = -1;
     int cid = -1;
     uint8_t cid_temp = 0;
-    if(data_init_flag == 0 && data_info_handle == NULL)
+    if(data_init_flag == 0 || data_info_handle == NULL)
     {
         return GSW_HAL_NORMAL_FAIL;
     }
@@ -931,7 +931,7 @@
     int ret = -1;
     int cid = -1;
     uint8_t cid_temp = 0;
-    if(data_init_flag == 0 && data_info_handle == NULL)
+    if(data_init_flag == 0 || data_info_handle == NULL)
     {
         return GSW_HAL_NORMAL_FAIL;
     }
@@ -974,6 +974,11 @@
  */
 int gsw_get_data_call_pkt_stats(int linkid, gsw_data_pkt_stats *data_pkt)
 {
+    
+    if(data_init_flag == 0 || data_info_handle == NULL)
+    {
+        return GSW_HAL_NORMAL_FAIL;
+    }
     char temp_linkid[12] = {0};
     char interface_name[32] = {0};
     sprintf(temp_linkid,"%d",linkid+1);
