diff --git a/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java b/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
index 8827ecc..6e0ab42 100644
--- a/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
+++ b/core/api/src/main/java/org/onosproject/net/device/DefaultPortStatistics.java
@@ -16,6 +16,7 @@
 package org.onosproject.net.device;
 
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.PortNumber;
 
 /**
  * Default implementation of immutable port statistics.
@@ -23,7 +24,7 @@
 public final class DefaultPortStatistics implements PortStatistics {
 
     private final DeviceId deviceId;
-    private final int  port;
+    private final PortNumber portNumber;
     private final long packetsReceived;
     private final long packetsSent;
     private final long bytesReceived;
@@ -36,7 +37,7 @@
     private final long durationNano;
 
     private DefaultPortStatistics(DeviceId deviceId,
-                                  int  port,
+                                  PortNumber portNumber,
                                   long packetsReceived,
                                   long packetsSent,
                                   long bytesReceived,
@@ -48,7 +49,7 @@
                                   long durationSec,
                                   long durationNano) {
         this.deviceId = deviceId;
-        this.port = port;
+        this.portNumber = portNumber;
         this.packetsReceived = packetsReceived;
         this.packetsSent = packetsSent;
         this.bytesReceived = bytesReceived;
@@ -64,7 +65,7 @@
     // Constructor for serializer
     private DefaultPortStatistics() {
         this.deviceId = null;
-        this.port = 0;
+        this.portNumber = null;
         this.packetsReceived = 0;
         this.packetsSent = 0;
         this.bytesReceived = 0;
@@ -88,7 +89,12 @@
 
     @Override
     public int port() {
-        return this.port;
+        return (int) this.portNumber.toLong();
+    }
+
+    @Override
+    public PortNumber portNumber() {
+        return this.portNumber;
     }
 
     @Override
@@ -154,7 +160,7 @@
     @Override
     public String toString() {
         return "device: " + deviceId + ", " +
-                "port: " + this.port + ", " +
+                "port: " + this.portNumber + ", " +
                 "pktRx: " + this.packetsReceived + ", " +
                 "pktTx: " + this.packetsSent + ", " +
                 "byteRx: " + this.bytesReceived + ", " +
@@ -168,7 +174,7 @@
     public static final class Builder {
 
         DeviceId deviceId;
-        int port;
+        PortNumber portNumber;
         long packetsReceived;
         long packetsSent;
         long bytesReceived;
@@ -189,9 +195,23 @@
          *
          * @param port port number
          * @return builder object
+         * @deprecated ONOS 1.12 Magpie
          */
+        @Deprecated
         public Builder setPort(int port) {
-            this.port = port;
+            this.portNumber = PortNumber.portNumber(port);
+
+            return this;
+        }
+
+        /**
+         * Sets port number.
+         *
+         * @param portNumber port number
+         * @return builder object
+         */
+        public Builder setPort(PortNumber portNumber) {
+            this.portNumber = portNumber;
 
             return this;
         }
@@ -336,7 +356,7 @@
         public DefaultPortStatistics build() {
             return new DefaultPortStatistics(
                     deviceId,
-                    port,
+                    portNumber,
                     packetsReceived,
                     packetsSent,
                     bytesReceived,
diff --git a/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java b/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
index 25fb057..3b9f19a 100644
--- a/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
+++ b/core/api/src/main/java/org/onosproject/net/device/PortStatistics.java
@@ -15,6 +15,8 @@
  */
 package org.onosproject.net.device;
 
+import org.onosproject.net.PortNumber;
+
 /**
  * Statistics of a port.
  */
@@ -24,10 +26,19 @@
      * Returns the port number.
      *
      * @return port number
+     * @deprecated ONOS 1.12 Magpie please use portNumber()
      */
+    @Deprecated
     int  port();
 
     /**
+     * Returns the port number.
+     *
+     * @return port number
+     */
+    PortNumber portNumber();
+
+    /**
      * Returns the number of packets received.
      *
      * @return the number of packets received
