ACTIVATE/DEACTIVATE recurssion fix.
authorSuresh Kumar Narasimhaiah <suresh.n@samsung.com>
Wed, 20 Mar 2013 11:48:18 +0000 (17:18 +0530)
committerwootak.jung <wootak.jung@samsung.com>
Sun, 24 Mar 2013 08:38:56 +0000 (17:38 +0900)
Change-Id: Ie59306e6855cd002716921dcc3a77245f057226d

src/desc-imcmodem.c

index e2b7f288b4e7ac6fdd4a36ccef3f082637926e63..c1d71dd54e9bf6b5913d19babe877359493d262a 100644 (file)
@@ -372,65 +372,70 @@ static TReturn _hal_setup_netif(CoreObject *co,
        char ifname[IMC_DEVICE_NAME_LEN_MAX];
        int ret = -1;
 
-       /* Open device to send IOCTL command */
-       fd = open(VNET_CH_PATH_BOOT0, O_RDWR);
-       if (fd < 0) {
-               err("Failed to Open [%s] Error: [%s]", VNET_CH_PATH_BOOT0, strerror(errno));
-               return TCORE_RETURN_FAILURE;
-       }
+       if (enable == TRUE) {
+               dbg("ACTIVATE");
+
+               /* Open device to send IOCTL command */
+               fd = open(VNET_CH_PATH_BOOT0, O_RDWR);
+               if (fd < 0) {
+                       err("Failed to Open [%s] Error: [%s]", VNET_CH_PATH_BOOT0, strerror(errno));
+                       return TCORE_RETURN_FAILURE;
+               }
 
-       /*
-        * Send IOCTL to change the Channel to Data mode
-        *
-        * Presently only 2 Contexts are suported
-        */
-       switch (cid) {
-       case 1:
-       {
-               dbg("Send IOCTL: arg 0x05 (0101) HSIC1, cid: [%d]", cid);
-               ret = ioctl(fd, IOCTL_CG_DATA_SEND, 0x05);
-       }
-       break;
+               /*
+                * Send IOCTL to change the Channel to Data mode
+                *
+                * Presently only 2 Contexts are suported
+                */
+               switch (cid) {
+               case 1:
+               {
+                       dbg("Send IOCTL: arg 0x05 (0101) HSIC1, cid: [%d]", cid);
+                       ret = ioctl(fd, IOCTL_CG_DATA_SEND, 0x05);
+               }
+               break;
 
-       case 2:
-       {
-               dbg("Send IOCTL: arg 0x0A (1010) HSIC2, cid: [%d]", cid);
-               ret = ioctl(fd, IOCTL_CG_DATA_SEND, 0xA);
-       }
-       break;
+               case 2:
+               {
+                       dbg("Send IOCTL: arg 0x0A (1010) HSIC2, cid: [%d]", cid);
+                       ret = ioctl(fd, IOCTL_CG_DATA_SEND, 0xA);
+               }
+               break;
 
-       default:
-       {
-               err("More than 2 Contexts are not supported right now!!! cid: [%d]", cid);
-       }
-       }
+               default:
+               {
+                       err("More than 2 Contexts are not supported right now!!! cid: [%d]", cid);
+               }
+               }
 
-       /* Close 'fd' */
-       close(fd);
+               /* Close 'fd' */
+               close(fd);
 
-       /* TODO - Need to handle Failure case */
-       if (ret < 0) {
-               err("[ERROR] IOCTL_CG_DATA_SEND - FAIL [0x%x]", IOCTL_CG_DATA_SEND);
+               /* TODO - Need to handle Failure case */
+               if (ret < 0) {
+                       err("[ERROR] IOCTL_CG_DATA_SEND - FAIL [0x%x]", IOCTL_CG_DATA_SEND);
 
-               /* Invoke callback function */
-               if (func)
-                       func(co, ret, NULL, user_data);
+                       /* Invoke callback function */
+                       if (func)
+                               func(co, ret, NULL, user_data);
 
-               return TCORE_RETURN_FAILURE;
-       } else {
-               dbg("[OK] IOCTL_CG_DATA_SEND - PASS [0x%x]", IOCTL_CG_DATA_SEND);
+                       return TCORE_RETURN_FAILURE;
+               } else {
+                       dbg("[OK] IOCTL_CG_DATA_SEND - PASS [0x%x]", IOCTL_CG_DATA_SEND);
 
-               /* Device name */
-               snprintf(ifname, IMC_DEVICE_NAME_LEN_MAX, "%s%d", IMC_DEVICE_NAME_PREFIX, (cid - 1));
-               dbg("Interface Name: [%s]", ifname);
+                       /* Device name */
+                       snprintf(ifname, IMC_DEVICE_NAME_LEN_MAX, "%s%d", IMC_DEVICE_NAME_PREFIX, (cid - 1));
+                       dbg("Interface Name: [%s]", ifname);
 
-               /* Invoke callback function */
-               if (func)
-                       func(co, ret, ifname, user_data);
+                       /* Invoke callback function */
+                       if (func)
+                               func(co, ret, ifname, user_data);
 
-               return TCORE_RETURN_SUCCESS;
+                       return TCORE_RETURN_SUCCESS;
+               }
+       } else {
+               dbg("DEACTIVATE");
        }
-
 }
 
 /* HAL Operations */