diff --git a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/DriverUtil.java b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/DriverUtil.java
index af997c4..cc5dc70 100644
--- a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/DriverUtil.java
+++ b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/DriverUtil.java
@@ -114,9 +114,10 @@
     /**
      * RPC interfaces message.
      */
-    static final String RPC_IFS =
-            "<interfaces><interface><ifPhyType>Ethernet</ifPhyType" +
-                    "></interface></interfaces>";
+    static final String RPC_IFS = "<interfaces><interface><ifPhyType>Ethernet" +
+            "</ifPhyType><ifName></ifName><ifNumber></ifNumber>" +
+            "<ifDynamicInfo></ifDynamicInfo><ifStatistics></ifStatistics>" +
+            "</interface></interfaces>";
 
     /**
      * RPC ifm message.
diff --git a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiDeviceDescription.java b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiDeviceDescription.java
index bcb7f4c..7c0a478 100644
--- a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiDeviceDescription.java
+++ b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiDeviceDescription.java
@@ -17,6 +17,7 @@
 package org.onosproject.drivers.huawei;
 
 import com.google.common.collect.ImmutableList;
+import org.apache.commons.lang.StringUtils;
 import org.onosproject.net.Device;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.device.DefaultDeviceDescription;
@@ -37,7 +38,6 @@
 
 import static com.google.common.base.Preconditions.checkNotNull;
 import static org.onosproject.drivers.huawei.DriverUtil.DEV_INFO_FAILURE;
-import static org.onosproject.drivers.huawei.DriverUtil.INT_INFO_FAILURE;
 import static org.onosproject.drivers.huawei.DriverUtil.RPC_CLOSE;
 import static org.onosproject.drivers.huawei.DriverUtil.RPC_CLOSE_FILTER;
 import static org.onosproject.drivers.huawei.DriverUtil.RPC_CLOSE_GET;
@@ -177,17 +177,21 @@
 
     @Override
     public Collection<PortStatistics> discoverPortStatistics() {
-        return ImmutableList.copyOf(getPortStatistics(getInterfaces()));
+        String interfaces = getInterfaces();
+        if (StringUtils.isNotBlank(interfaces)) {
+            Collection<PortStatistics> portStats = getPortStatistics(interfaces);
+            return ImmutableList.copyOf(portStats);
+        }
+        return null;
     }
 
     private String getInterfaces() {
         NetconfSession session = getNetconfSession();
-        String interfaces;
+        String interfaces = null;
         try {
             interfaces = session.get(getInterfacesReq());
         } catch (IOException e) {
-            throw new IllegalArgumentException(
-                    new NetconfException(INT_INFO_FAILURE, e.getCause()));
+            log.info("Failed to retrive interface {} ", e.getMessage());
         }
         return interfaces;
     }
diff --git a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java
index 5d56ddc..236fbf7 100644
--- a/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java
+++ b/drivers/huawei/driver/src/main/java/org/onosproject/drivers/huawei/HuaweiXmlParser.java
@@ -238,8 +238,6 @@
         DefaultPortStatistics.Builder builder = DefaultPortStatistics.builder();
 
         if (INTERFACES.contains(ifType)) {
-            Element info = ifElement.element(DYN_INFO);
-
             int port = Integer.parseInt(getPortNum(ifElement.element(IF_NUM)
                                                            .getText()));
             Element statInfo = ifElement.element(IF_STATS);
