diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/client/StreamClientImpl.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/client/StreamClientImpl.java
index a14f960..cf3cda0 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/client/StreamClientImpl.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/client/StreamClientImpl.java
@@ -397,11 +397,16 @@
         void signalClosed() {
             synchronized (this) {
                 final boolean wasOpen = open.getAndSet(false);
-                if (wasOpen) {
-                    // We lost any valid mastership role.
-                    controller.postEvent(new DeviceAgentEvent(
-                            DeviceAgentEvent.Type.ROLE_NONE, deviceId));
-                }
+                // FIXME: in case of device disconnection, all clients will
+                //  signal role NONE, preventing the DeviceManager to mark the
+                //  device as offline, as only the master can do that. We should
+                //  change the DeviceManager. For now, we disable signaling role
+                //  NONE.
+                // if (wasOpen) {
+                //     // We lost any valid mastership role.
+                //     controller.postEvent(new DeviceAgentEvent(
+                //             DeviceAgentEvent.Type.ROLE_NONE, deviceId));
+                // }
             }
         }
 
diff --git a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/utils/PipeconfHelper.java b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/utils/PipeconfHelper.java
index dec7438..f5afd41 100644
--- a/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/utils/PipeconfHelper.java
+++ b/protocols/p4runtime/ctl/src/main/java/org/onosproject/p4runtime/ctl/utils/PipeconfHelper.java
@@ -22,7 +22,6 @@
 import com.google.protobuf.ExtensionRegistry;
 import com.google.protobuf.TextFormat;
 import org.onosproject.net.pi.model.PiPipeconf;
-import org.onosproject.net.pi.model.PiPipeconfId;
 import org.slf4j.Logger;
 import p4.config.v1.P4InfoOuterClass.P4Info;
 
@@ -44,10 +43,10 @@
     private static final int P4INFO_BROWSER_EXPIRE_TIME_IN_MIN = 10;
     private static final Logger log = getLogger(PipeconfHelper.class);
 
-    private static final Cache<PiPipeconfId, P4InfoBrowser> BROWSERS = CacheBuilder.newBuilder()
+    private static final Cache<Long, P4InfoBrowser> BROWSERS = CacheBuilder.newBuilder()
             .expireAfterAccess(P4INFO_BROWSER_EXPIRE_TIME_IN_MIN, TimeUnit.MINUTES)
             .build();
-    private static final Map<PiPipeconfId, P4Info> P4INFOS = Maps.newConcurrentMap();
+    private static final Map<Long, P4Info> P4INFOS = Maps.newConcurrentMap();
 
     private PipeconfHelper() {
         // hide.
@@ -61,7 +60,7 @@
      * @return P4Info or null
      */
     public static P4Info getP4Info(PiPipeconf pipeconf) {
-        return P4INFOS.computeIfAbsent(pipeconf.id(), piPipeconfId -> {
+        return P4INFOS.computeIfAbsent(pipeconf.fingerprint(), piPipeconfId -> {
             if (!pipeconf.extension(P4_INFO_TEXT).isPresent()) {
                 log.warn("Missing P4Info extension in pipeconf {}", pipeconf.id());
                 return null;
@@ -90,7 +89,7 @@
      */
     public static P4InfoBrowser getP4InfoBrowser(PiPipeconf pipeconf) {
         try {
-            return BROWSERS.get(pipeconf.id(), () -> {
+            return BROWSERS.get(pipeconf.fingerprint(), () -> {
                 P4Info p4info = PipeconfHelper.getP4Info(pipeconf);
                 if (p4info == null) {
                     return null;
