diff --git a/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/codec/DirectMeterEntryCodec.java b/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/codec/DirectMeterEntryCodec.java
index 0f32417..3be0244 100644
--- a/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/codec/DirectMeterEntryCodec.java
+++ b/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/codec/DirectMeterEntryCodec.java
@@ -17,7 +17,6 @@
 package org.onosproject.p4runtime.ctl.codec;
 
 import org.onosproject.net.pi.model.PiPipeconf;
-import org.onosproject.net.pi.runtime.PiMeterBand;
 import org.onosproject.net.pi.runtime.PiMeterCellConfig;
 import org.onosproject.net.pi.runtime.PiMeterCellHandle;
 import org.onosproject.net.pi.runtime.PiMeterCellId;
@@ -79,14 +78,17 @@
             P4RuntimeOuterClass.DirectMeterEntry message, Object ignored,
             PiPipeconf pipeconf, P4InfoBrowser browser)
             throws CodecException {
-        return PiMeterCellConfig.builder()
-                .withMeterCellId(PiMeterCellId.ofDirect(
-                        CODECS.tableEntry().decode(
-                                message.getTableEntry(), null, pipeconf)))
-                .withMeterBand(new PiMeterBand(message.getConfig().getCir(),
-                                               message.getConfig().getCburst()))
-                .withMeterBand(new PiMeterBand(message.getConfig().getPir(),
-                                               message.getConfig().getPburst()))
-                .build();
+        PiMeterCellId cellId =
+            PiMeterCellId.ofDirect(
+                CODECS.tableEntry().decode(
+                    message.getTableEntry(), null, pipeconf));
+        // When a field is unset, gRPC (P4RT) will return a default value
+        // So, if the meter config is unset, the value of rate and burst will be 0,
+        // while 0 is a meaningful value and not equals to UNSET in P4RT.
+        // We cannot extract the values directly.
+        P4RuntimeOuterClass.MeterConfig p4Config =
+            message.hasConfig() ? message.getConfig() : null;
+
+        return MeterEntryCodec.getPiMeterCellConfig(cellId, p4Config);
     }
 }
diff --git a/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/codec/MeterEntryCodec.java b/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/codec/MeterEntryCodec.java
index f5e0f41..88f0639 100644
--- a/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/codec/MeterEntryCodec.java
+++ b/protocols/p4runtime/utils/src/main/java/org/onosproject/p4runtime/ctl/codec/MeterEntryCodec.java
@@ -122,13 +122,27 @@
                 .getById(message.getMeterId())
                 .getPreamble()
                 .getName();
-        return PiMeterCellConfig.builder()
-                .withMeterCellId(PiMeterCellId.ofIndirect(
-                        PiMeterId.of(meterName), message.getIndex().getIndex()))
-                .withMeterBand(new PiMeterBand(message.getConfig().getCir(),
-                                               message.getConfig().getCburst()))
-                .withMeterBand(new PiMeterBand(message.getConfig().getPir(),
-                                               message.getConfig().getPburst()))
-                .build();
+        PiMeterCellId cellId =
+            PiMeterCellId.ofIndirect(PiMeterId.of(meterName), message.getIndex().getIndex());
+        // When a field is unset, gRPC (P4RT) will return a default value
+        // So, if the meter config is unset, the value of rate and burst will be 0,
+        // while 0 is a meaningful value and not equals to UNSET in P4RT.
+        // We cannot extract the values directly.
+        P4RuntimeOuterClass.MeterConfig p4Config =
+            message.hasConfig() ? message.getConfig() : null;
+
+        return getPiMeterCellConfig(cellId, p4Config);
+    }
+
+    public static PiMeterCellConfig getPiMeterCellConfig(
+            PiMeterCellId cellId, P4RuntimeOuterClass.MeterConfig p4Config) {
+        PiMeterCellConfig.Builder builder =
+            PiMeterCellConfig.builder().withMeterCellId(cellId);
+        if (p4Config != null) {
+            builder = builder
+                .withMeterBand(new PiMeterBand(p4Config.getCir(), p4Config.getCburst()))
+                .withMeterBand(new PiMeterBand(p4Config.getPir(), p4Config.getPburst()));
+        }
+        return builder.build();
     }
 }
