diff --git a/core/api/src/main/java/org/onosproject/net/packet/PacketProcessorEntry.java b/core/api/src/main/java/org/onosproject/net/packet/PacketProcessorEntry.java
new file mode 100644
index 0000000..40386fb
--- /dev/null
+++ b/core/api/src/main/java/org/onosproject/net/packet/PacketProcessorEntry.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.net.packet;
+
+/**
+ * Packet processor entry tracking the processor, its priority and
+ * time consumption.
+ */
+public interface PacketProcessorEntry {
+
+    /**
+     * Returns the packet processor.
+     *
+     * @return packet processor
+     */
+    PacketProcessor processor();
+
+    /**
+     * Returns the packet processor priority.
+     *
+     * @return processor priority
+     */
+    int priority();
+
+    /**
+     * Returns the number of invocations.
+     *
+     * @return number of invocations
+     */
+    long invocations();
+
+    /**
+     * Returns the total time, in nanoseconds, spent processing packets.
+     *
+     * @return total time in nanos
+     */
+    long totalNanos();
+
+    /**
+     * Returns the average time, in nanoseconds, spent processing packets.
+     *
+     * @return average time in nanos
+     */
+    long averageNanos();
+}
diff --git a/core/api/src/main/java/org/onosproject/net/packet/PacketService.java b/core/api/src/main/java/org/onosproject/net/packet/PacketService.java
index 98f4d8e..2e7a1b9 100644
--- a/core/api/src/main/java/org/onosproject/net/packet/PacketService.java
+++ b/core/api/src/main/java/org/onosproject/net/packet/PacketService.java
@@ -20,7 +20,6 @@
 import org.onosproject.net.flow.TrafficSelector;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * Service for intercepting data plane packets and for emitting synthetic
@@ -52,13 +51,12 @@
     void removeProcessor(PacketProcessor processor);
 
     /**
-     * Returns priority bindings of all registered packet processors.
+     * Returns priority bindings of all registered packet processor entries.
      *
-     * @return list of existing packet processors
+     * @return list of existing packet processor entries
      */
     @Beta
-    // TODO: Consider returning list of PacketProcessorEntry with processor, priority and stats
-    Map<Integer, PacketProcessor> getProcessors();
+    List<PacketProcessorEntry> getProcessors();
 
     /**
      * Requests that packets matching the given selector are punted from the
diff --git a/core/api/src/test/java/org/onosproject/net/packet/PacketServiceAdapter.java b/core/api/src/test/java/org/onosproject/net/packet/PacketServiceAdapter.java
index c438659..2993ce6 100644
--- a/core/api/src/test/java/org/onosproject/net/packet/PacketServiceAdapter.java
+++ b/core/api/src/test/java/org/onosproject/net/packet/PacketServiceAdapter.java
@@ -19,7 +19,6 @@
 import org.onosproject.net.flow.TrafficSelector;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * Test adapter for packet service.
@@ -34,7 +33,7 @@
     }
 
     @Override
-    public Map<Integer, PacketProcessor> getProcessors() {
+    public List<PacketProcessorEntry> getProcessors() {
         return null;
     }
 
