diff --git a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalDeviceDescription.java b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalDeviceDescription.java
index 8897793..463a74a 100755
--- a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalDeviceDescription.java
+++ b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalDeviceDescription.java
@@ -19,7 +19,6 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.onosproject.drivers.utilities.XmlConfigParser;
 import org.onosproject.net.AnnotationKeys;
 import org.onosproject.net.DefaultAnnotations;
 import org.onosproject.net.PortNumber;
@@ -59,7 +58,7 @@
     @Override
     public List<PortDescription> discoverPortDetails() {
         log.debug("Port description to be added for device {}", data().deviceId());
-        String reply = netconfGetConfig(handler(), getPortsFilter());
+        String reply = netconfGet(handler(), getPortsFilter());
         List<PortDescription> descriptions = parsePorts(reply);
         return ImmutableList.copyOf(descriptions);
     }
@@ -72,9 +71,8 @@
     }
 
     private List<PortDescription> parsePorts(String content) {
-        HierarchicalConfiguration cfg = XmlConfigParser.loadXmlString(content);
+        List<HierarchicalConfiguration> subtrees = configsAt(content, KEY_DATA_PORTS);
         List<PortDescription> portDescriptions = Lists.newArrayList();
-        List<HierarchicalConfiguration> subtrees = cfg.configurationsAt(KEY_DATA_PORTS);
         for (HierarchicalConfiguration portConfig : subtrees) {
             portDescriptions.add(parsePort(portConfig));
         }
diff --git a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalFlowRuleProgrammable.java b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalFlowRuleProgrammable.java
index 01446f2..ba7f833 100644
--- a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalFlowRuleProgrammable.java
+++ b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalFlowRuleProgrammable.java
@@ -17,7 +17,6 @@
 package org.onosproject.drivers.oplink;
 
 import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.onosproject.drivers.utilities.XmlConfigParser;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.driver.AbstractHandlerBehaviour;
 import org.onosproject.net.flow.DefaultFlowEntry;
@@ -75,9 +74,8 @@
 
     private Collection<FlowEntry> parseConnections() {
         log.debug("Fetch connections...");
-        String reply = netconfGetConfig(handler(), getConnectionsFilter());
-        HierarchicalConfiguration cfg = XmlConfigParser.loadXmlString(reply);
-        List<HierarchicalConfiguration> subtrees = cfg.configurationsAt(KEY_DATA_CONNS);
+        String reply = netconfGet(handler(), getConnectionsFilter());
+        List<HierarchicalConfiguration> subtrees = configsAt(reply, KEY_DATA_CONNS);
         Collection<FlowEntry> list = new ArrayList<>();
         for (HierarchicalConfiguration connection : subtrees) {
             list.add(new DefaultFlowEntry(parseConnection(connection), FlowEntry.FlowEntryState.ADDED));
diff --git a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalPowerConfig.java b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalPowerConfig.java
index 92847f9..6aba155 100755
--- a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalPowerConfig.java
+++ b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalPowerConfig.java
@@ -19,10 +19,12 @@
 import com.google.common.collect.Range;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.onosproject.driver.extensions.OplinkAttenuation;
+import org.onosproject.net.Device;
 import org.onosproject.net.Direction;
 import org.onosproject.net.OchSignal;
 import org.onosproject.net.PortNumber;
 import org.onosproject.net.behaviour.PowerConfig;
+import org.onosproject.net.device.DeviceService;
 import org.onosproject.net.driver.AbstractHandlerBehaviour;
 import org.onosproject.net.flow.DefaultFlowRule;
 import org.onosproject.net.flow.DefaultTrafficTreatment;
@@ -33,11 +35,11 @@
 
 import java.util.Optional;
 
-import static org.onosproject.drivers.oplink.OplinkOpticalUtility.MAX_ATTENUATION;
-import static org.onosproject.drivers.oplink.OplinkOpticalUtility.MIN_ATTENUATION;
 import static org.onosproject.drivers.oplink.OplinkOpticalUtility.POWER_MULTIPLIER;
-import static org.slf4j.LoggerFactory.getLogger;
+import static org.onosproject.drivers.oplink.OplinkOpticalUtility.RANGE_ATT;
+import static org.onosproject.drivers.oplink.OplinkOpticalUtility.RANGE_GENERAL;
 import static org.onosproject.drivers.oplink.OplinkNetconfUtility.*;
+import static org.slf4j.LoggerFactory.getLogger;
 
 /**
  * Get current or target port/channel power from an Oplink optical netconf device.
@@ -65,7 +67,6 @@
     // log
     private static final Logger log = getLogger(OplinkOpticalPowerConfig.class);
 
-
     @Override
     public Optional<Long> getTargetPower(PortNumber port, T component) {
         return Optional.ofNullable(acquireTargetPower(port, component));
@@ -162,7 +163,7 @@
     }
 
     private Long acquirePortPower(PortNumber port, String selection) {
-        String reply = netconfGetConfig(handler(), getPortPowerFilter(port, selection));
+        String reply = netconfGet(handler(), getPortPowerFilter(port, selection));
         HierarchicalConfiguration info = configAt(reply, KEY_PORTS_PORT);
         if (info == null) {
             return null;
@@ -172,7 +173,7 @@
 
     private Long acquireChannelAttenuation(PortNumber port, OchSignal channel) {
         log.debug("Get port{} channel{} attenuation...", port, channel.channelSpacing());
-        String reply = netconfGetConfig(handler(), getChannelAttenuationFilter(port, channel));
+        String reply = netconfGet(handler(), getChannelAttenuationFilter(port, channel));
         HierarchicalConfiguration info = configAt(reply, KEY_CONNS);
         if (info == null) {
             return null;
@@ -182,7 +183,7 @@
 
     private Long acquireChannelPower(PortNumber port, OchSignal channel) {
         log.debug("Get port{} channel{} power...", port, channel.channelSpacing());
-        String reply = netconfGetConfig(handler(), getChannelPowerFilter(port, channel));
+        String reply = netconfGet(handler(), getChannelPowerFilter(port, channel));
         HierarchicalConfiguration info = configAt(reply, KEY_DATA_CONNS);
         if (info == null) {
             return null;
@@ -235,7 +236,15 @@
     }
 
     private Range<Long> getPowerRange(PortNumber port, String directionKey, String minKey, String maxKey) {
-        String reply = netconfGetConfig(handler(), getPowerRangeFilter(port, directionKey));
+        // TODO
+        // Optical protection switch does not support power range configuration, it'll reply error.
+        // To prevent replying error log flooding from netconf session when polling all ports information,
+        // use general power range of [-60, 60] instead.
+        if (handler().get(DeviceService.class).getDevice(data().deviceId()).type()
+                == Device.Type.FIBER_SWITCH) {
+            return RANGE_GENERAL;
+        }
+        String reply = netconfGet(handler(), getPowerRangeFilter(port, directionKey));
         HierarchicalConfiguration info = configAt(reply, KEY_PORTS_PORT_PROPERTY);
         if (info == null) {
             return null;
@@ -251,7 +260,7 @@
             return getPowerRange(port, KEY_PORTDIRECT_TX, KEY_PORTPWRCAPMINTX, KEY_PORTPWRCAPMAXTX);
         } else {
             log.debug("Get channel attenuation range...");
-            return Range.closed(MIN_ATTENUATION, MAX_ATTENUATION);
+            return RANGE_ATT;
         }
     }
 
diff --git a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalUtility.java b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalUtility.java
index 9785224..be372f3 100644
--- a/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalUtility.java
+++ b/drivers/oplink/src/main/java/org/onosproject/drivers/oplink/OplinkOpticalUtility.java
@@ -16,6 +16,7 @@
 
 package org.onosproject.drivers.oplink;
 
+import com.google.common.collect.Range;
 import org.onlab.util.Frequency;
 import org.onosproject.core.CoreService;
 import org.onosproject.driver.extensions.OplinkAttenuation;
@@ -61,9 +62,10 @@
     // Power multiply factor, the power accuracy supported by device is 0.01dBm.
     // Transforms the double typed number to long typed power for ONOS.
     public static final int POWER_MULTIPLIER = 100;
-    // Attenuation range supported by device, [0, 25dB].
-    public static final long MIN_ATTENUATION = 0L;
-    public static final long MAX_ATTENUATION = 2500L;
+    // Attenuation range supported by device, [0, 25.5dB].
+    public static final Range<Long> RANGE_ATT = Range.closed(0L, 2550L);
+    // General power range for fiber switch, [-60dBm, 60dBm].
+    public static final Range<Long> RANGE_GENERAL = Range.closed(-6000L, 6000L);
 
     // Default attenuation value if the attenuation instruction is not found.
     private static final int DEFAULT_ATT = 0;
