diff --git a/userspace/snmpd/WR-SWITCH-MIB.txt b/userspace/snmpd/WR-SWITCH-MIB.txt
index 814186411b4ea395920062d46189b8c4c09094b8..87b49974764633570faab8d65ad16153eb39b23a 100644
--- a/userspace/snmpd/WR-SWITCH-MIB.txt
+++ b/userspace/snmpd/WR-SWITCH-MIB.txt
@@ -412,135 +412,6 @@ ptpDeltaRxSX OBJECT-TYPE
             "Fixed Rx latency on Slave side"
     ::= { wrsPpsiGlobalsX 17 }
 
--- per-port (.4)
-wrsPortsTableX OBJECT-TYPE
-    SYNTAX      SEQUENCE OF wrsPortsEntryX
-    MAX-ACCESS  not-accessible
-    STATUS      current
-    DESCRIPTION
-            "Information for each port"
-    ::= { wrsPpsi 4 }
-
-wrsPortsEntryX OBJECT-TYPE
-    SYNTAX      WrsPortsEntryX
-    MAX-ACCESS  not-accessible
-    STATUS      current
-    DESCRIPTION
-            "An entry containing ports statuses"
-    INDEX   { wrsPortIndex }
-    ::= { wrsPortsTableX 1 }
-
-WrsPortsEntryX ::=
-    SEQUENCE {
-        portLink             INTEGER,
-        portMode             INTEGER,
-        portLocked           INTEGER,
-        portPeer             OCTET STRING,
-        portSfpVN            DisplayString,
-        portSfpPN            DisplayString,
-        portSfpVS            DisplayString,
-        portSfpInDB          INTEGER,
-        portSfpGbE           INTEGER,
-        portSfpError         INTEGER
-    }
-
-portLinkX OBJECT-TYPE
-    SYNTAX         INTEGER {
-                        NA(0),
-                        down(1),
-                        up(2)
-    }
-    MAX-ACCESS     read-only
-    STATUS         current
-    DESCRIPTION
-            "Whether the link is up or down"
-    ::= { wrsPortsEntryX 1 }
-
-portModeX OBJECT-TYPE
-    SYNTAX         INTEGER {
-                        unknown(0),
-                        master(1),
-                        slave(2),
-                        non-wr(3),
-                        auto(4)
-    }
-    MAX-ACCESS     read-only
-    STATUS         current
-    DESCRIPTION
-            "Whether the port is master or slave"
-    ::= { wrsPortsEntryX 2 }
-
-portLockedX OBJECT-TYPE
-    SYNTAX         INTEGER {
-                        NA(0),
-                        not-locked(1),
-                        locked(2)
-    }
-    MAX-ACCESS     read-only
-    STATUS         current
-    DESCRIPTION
-            "Whether the peers are locked or not"
-    ::= { wrsPortsEntryX 3 }
-
-portPeerX OBJECT-TYPE
-    SYNTAX         OCTET STRING (SIZE(8))
-    MAX-ACCESS     read-only
-    STATUS         current
-    DESCRIPTION
-            "the ClockID of the peer, if available. Or 0"
-    ::= { wrsPortsEntryX 4 }
-
-portSfpVNX OBJECT-TYPE
-    SYNTAX         DisplayString (SIZE (0..32))
-    MAX-ACCESS     read-only
-    STATUS         current
-    DESCRIPTION
-            "Vendor Name of SFP"
-    ::= { wrsPortsEntryX 5 }
-
-portSfpPNX OBJECT-TYPE
-    SYNTAX         DisplayString (SIZE (0..32))
-    MAX-ACCESS     read-only
-    STATUS         current
-    DESCRIPTION
-            "Part Number of SFP"
-    ::= { wrsPortsEntryX 6 }
-
-portSfpVSX OBJECT-TYPE
-    SYNTAX         DisplayString (SIZE (0..32))
-    MAX-ACCESS     read-only
-    STATUS         current
-    DESCRIPTION
-            "Vendor serial number of SFP"
-    ::= { wrsPortsEntryX 7 }
-
-portSfpInDBX OBJECT-TYPE
-    SYNTAX         INTEGER {NA(0), not-in-Data-Base(1), in-Data-Base(2)}
-    MAX-ACCESS     read-only
-    STATUS         current
-    DESCRIPTION
-            "Whether the SFP is in data base or not"
-    ::= { wrsPortsEntryX 8 }
-
-portSfpGbEX OBJECT-TYPE
-    SYNTAX         INTEGER {NA(0), not-GbE(1), GbE(2)}
-    MAX-ACCESS     read-only
-    STATUS         current
-    DESCRIPTION
-            "Whether the SFP is 1 GbE"
-    ::= { wrsPortsEntryX 9 }
-
-portSfpErrorX OBJECT-TYPE
-    SYNTAX         INTEGER {
-                        NA(0),
-                        SFP-ok(1),
-                        SFP-Error(2)
-    }
-    MAX-ACCESS     read-only
-    STATUS         current
-    DESCRIPTION
-            "Problem with SFP configuration. Port has to be always 1GbE. Port has to be in data base as long as support WR."
-    ::= { wrsPortsEntryX 10 }
 
 -- Versions (4) are all just strings, several of them
 
@@ -709,7 +580,155 @@ wrsTempThresholdPSR OBJECT-TYPE
 --wrsSpllState            OBJECT IDENTIFIER ::= { wrsExpertStatus 3 }
 --wrsPstatsTable          OBJECT IDENTIFIER ::= { wrsExpertStatus 4 }
 --wrsPtpDataTable         OBJECT IDENTIFIER ::= { wrsExpertStatus 5 }
---wrsPortStatusTable      OBJECT IDENTIFIER ::= { wrsExpertStatus 6 }
+-- per-port (.6.1.6)
+wrsPortStatusTable OBJECT-TYPE
+    SYNTAX      SEQUENCE OF WrsPortStatusEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+            "Information for each port"
+    ::= { wrsExpertStatus 6 }
+
+wrsPortStatusEntry OBJECT-TYPE
+    SYNTAX      WrsPortStatusEntry
+    MAX-ACCESS  not-accessible
+    STATUS      current
+    DESCRIPTION
+            "An entry containing ports statuses"
+    INDEX   { wrsPortStatusIndex }
+    ::= { wrsPortStatusTable 1 }
+
+WrsPortStatusEntry ::=
+    SEQUENCE {
+        wrsPortStatusIndex       Unsigned32,
+        wrsPortStatusPortName    DisplayString,
+        wrsPortStatusLink        INTEGER,
+        wrsPortStatusMode        INTEGER,
+        wrsPortStatusLocked      INTEGER,
+        wrsPortStatusPeer        OCTET STRING,
+        wrsPortStatusSfpVN       DisplayString,
+        wrsPortStatusSfpPN       DisplayString,
+        wrsPortStatusSfpVS       DisplayString,
+        wrsPortStatusSfpInDB     INTEGER,
+        wrsPortStatusSfpGbE      INTEGER,
+        wrsPortStatusSfpError    INTEGER
+    }
+
+wrsPortStatusIndex OBJECT-TYPE
+    SYNTAX         Unsigned32
+    MAX-ACCESS     not-accessible
+    STATUS         current
+    DESCRIPTION
+            "Index for wrsPortStatusTable"
+    ::= { wrsPortStatusEntry 1 }
+
+wrsPortStatusPortName OBJECT-TYPE
+    SYNTAX         DisplayString (SIZE (0..12))
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION
+            "Name of port"
+    ::= { wrsPortStatusEntry 2 }
+
+wrsPortStatusLink OBJECT-TYPE
+    SYNTAX         INTEGER {
+                        na(0),
+                        down(1),
+                        up(2)
+    }
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION
+            "Whether the link is up or down"
+    ::= { wrsPortStatusEntry 3 }
+
+wrsPortStatusMode OBJECT-TYPE
+    SYNTAX         INTEGER {
+                        unknown(0),
+                        master(1),
+                        slave(2),
+                        nonWr(3),
+                        auto(4)
+    }
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION
+            "Whether the port is master or slave"
+    ::= { wrsPortStatusEntry 4 }
+
+wrsPortStatusLocked OBJECT-TYPE
+    SYNTAX         INTEGER {
+                        na(0),
+                        notLocked(1),
+                        locked(2)
+    }
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION
+            "Whether the peers are locked or not"
+    ::= { wrsPortStatusEntry 5 }
+
+wrsPortStatusPeer OBJECT-TYPE
+    SYNTAX         OCTET STRING (SIZE(8))
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION
+            "the ClockID of the peer, if available. Or 0"
+    ::= { wrsPortStatusEntry 6 }
+
+wrsPortStatusSfpVN OBJECT-TYPE
+    SYNTAX         DisplayString (SIZE (0..32))
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION
+            "Vendor Name of SFP"
+    ::= { wrsPortStatusEntry 7 }
+
+wrsPortStatusSfpPN OBJECT-TYPE
+    SYNTAX         DisplayString (SIZE (0..32))
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION
+            "Part Number of SFP"
+    ::= { wrsPortStatusEntry 8 }
+
+wrsPortStatusSfpVS OBJECT-TYPE
+    SYNTAX         DisplayString (SIZE (0..32))
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION
+            "Vendor serial number of SFP"
+    ::= { wrsPortStatusEntry 9 }
+
+wrsPortStatusSfpInDB OBJECT-TYPE
+    SYNTAX         INTEGER {na(0), notInDataBase(1), inDataBase(2)}
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION
+            "Whether the SFP is in data base or not"
+    ::= { wrsPortStatusEntry 10 }
+
+wrsPortStatusSfpGbE OBJECT-TYPE
+    SYNTAX         INTEGER {na(0), linkNotGbE(1), linkGbE(2)}
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION
+            "Whether the SFP is 1 GbE"
+    ::= { wrsPortStatusEntry 11 }
+
+wrsPortStatusSfpError OBJECT-TYPE
+    SYNTAX         INTEGER {
+                        na(0),
+                        sfpOk(1),
+                        sfpError(2),
+                        portDown(3)
+    }
+    MAX-ACCESS     read-only
+    STATUS         current
+    DESCRIPTION
+            "Problem with SFP configuration. Port has to be always 1GbE. Port has to be in data base as long as support WR."
+    ::= { wrsPortStatusEntry 12 }
+
 --wrsNetworking
 --Configuration
 
diff --git a/userspace/snmpd/wrsPortStatusTable.c b/userspace/snmpd/wrsPortStatusTable.c
index e03dda44703bf21669d06864239b41a6f1b154a0..4a55b5cf7743330a84ec3009c5bcb658f6c22b63 100644
--- a/userspace/snmpd/wrsPortStatusTable.c
+++ b/userspace/snmpd/wrsPortStatusTable.c
@@ -5,6 +5,8 @@
 struct wrsPortStatusTable_s wrsPortStatusTable_array[WRS_N_PORTS];
 
 static struct pickinfo wrsPortStatusTable_pickinfo[] = {
+	FIELD(wrsPortStatusTable_s, ASN_UNSIGNED, index), /* not reported */
+	FIELD(wrsPortStatusTable_s, ASN_OCTET_STR, port_name),
 	FIELD(wrsPortStatusTable_s, ASN_INTEGER, link_up),
 	FIELD(wrsPortStatusTable_s, ASN_INTEGER, port_mode),
 	FIELD(wrsPortStatusTable_s, ASN_INTEGER, port_locked),
@@ -45,11 +47,11 @@ time_t wrsPortStatusTable_data_fill(unsigned int *n_rows)
 		for (i = 0; i < hal_nports_local; ++i) {
 			/* Assume that number of ports does not change between
 			 * reads */
-			char if_name[10];
-
-			snprintf(if_name, 10, "wr%d", i);
+			snprintf(wrsPortStatusTable_array[i].port_name, 10,
+				 "wr%d", i);
 			port_state = hal_lookup_port(hal_ports,
-						    hal_nports_local, if_name);
+					hal_nports_local,
+					wrsPortStatusTable_array[i].port_name);
 			/* No need to copy all ports structures, only what
 			 * we're interested in.
 			 * Keep value 0 for Not available */
@@ -117,7 +119,7 @@ time_t wrsPortStatusTable_data_fill(unsigned int *n_rows)
 	return time_cur;
 }
 
-#define TT_OID WRS_OID, 6, 4
+#define TT_OID WRSPORTSTATUSTABLE_OID
 #define TT_PICKINFO wrsPortStatusTable_pickinfo
 #define TT_DATA_FILL_FUNC wrsPortStatusTable_data_fill
 #define TT_DATA_ARRAY wrsPortStatusTable_array
diff --git a/userspace/snmpd/wrsPortStatusTable.h b/userspace/snmpd/wrsPortStatusTable.h
index 9ad5a9ab86658f756a6e563cb1174bc1badfb892..a992bcbb11fd28c0f11e6cea357bee3a927376c2 100644
--- a/userspace/snmpd/wrsPortStatusTable.h
+++ b/userspace/snmpd/wrsPortStatusTable.h
@@ -2,12 +2,16 @@
 #define WRS_PORT_STATUS_TABLE_H
 
 #define WRSPORTSTATUSTABLE_CACHE_TIMEOUT 5
+#define WRSPORTSTATUSTABLE_OID WRS_OID, 6, 6
 
 #define WRS_PORT_STATUS_SFP_ERROR_SFP_OK 1	/* ok */
 #define WRS_PORT_STATUS_SFP_ERROR_SFP_ERROR 2	/* error */
 #define WRS_PORT_STATUS_SFP_ERROR_PORT_DOWN 3	/* ok */
 
 struct wrsPortStatusTable_s {
+	uint32_t index;		/* not reported, index fields has to be marked
+				 * as not-accessible in MIB */
+	char port_name[12];	/* port name */
 	ClockIdentity peer_id;
 	/* These can't be "unsigned char" because we scanf a %i in there */
 	unsigned link_up;