VOL-1494: Add missing field for ofp_stats

Copied over from voltha 1.x protos. Needed
by ofagent

Change-Id: I43ad2c918f309f7d1c5d1f5996154bf2f13df578
diff --git a/go/inter_container/inter_container.pb.go b/go/inter_container/inter_container.pb.go
index 881821f..40ca168 100644
--- a/go/inter_container/inter_container.pb.go
+++ b/go/inter_container/inter_container.pb.go
@@ -59,7 +59,7 @@
 	return proto.EnumName(MessageType_name, int32(x))
 }
 func (MessageType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{0}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{0}
 }
 
 type ErrorCodeCodes int32
@@ -82,7 +82,7 @@
 	return proto.EnumName(ErrorCodeCodes_name, int32(x))
 }
 func (ErrorCodeCodes) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{4, 0}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{4, 0}
 }
 
 type InterAdapterMessageType_Types int32
@@ -94,6 +94,8 @@
 	InterAdapterMessageType_OMCI_RESPONSE    InterAdapterMessageType_Types = 3
 	InterAdapterMessageType_METRICS_REQUEST  InterAdapterMessageType_Types = 4
 	InterAdapterMessageType_METRICS_RESPONSE InterAdapterMessageType_Types = 5
+	InterAdapterMessageType_ONU_IND_REQUEST  InterAdapterMessageType_Types = 6
+	InterAdapterMessageType_ONU_IND_RESPONSE InterAdapterMessageType_Types = 7
 )
 
 var InterAdapterMessageType_Types_name = map[int32]string{
@@ -103,6 +105,8 @@
 	3: "OMCI_RESPONSE",
 	4: "METRICS_REQUEST",
 	5: "METRICS_RESPONSE",
+	6: "ONU_IND_REQUEST",
+	7: "ONU_IND_RESPONSE",
 }
 var InterAdapterMessageType_Types_value = map[string]int32{
 	"FLOW_REQUEST":     0,
@@ -111,13 +115,15 @@
 	"OMCI_RESPONSE":    3,
 	"METRICS_REQUEST":  4,
 	"METRICS_RESPONSE": 5,
+	"ONU_IND_REQUEST":  6,
+	"ONU_IND_RESPONSE": 7,
 }
 
 func (x InterAdapterMessageType_Types) String() string {
 	return proto.EnumName(InterAdapterMessageType_Types_name, int32(x))
 }
 func (InterAdapterMessageType_Types) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{14, 0}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{14, 0}
 }
 
 type StrType struct {
@@ -131,7 +137,7 @@
 func (m *StrType) String() string { return proto.CompactTextString(m) }
 func (*StrType) ProtoMessage()    {}
 func (*StrType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{0}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{0}
 }
 func (m *StrType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_StrType.Unmarshal(m, b)
@@ -169,7 +175,7 @@
 func (m *IntType) String() string { return proto.CompactTextString(m) }
 func (*IntType) ProtoMessage()    {}
 func (*IntType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{1}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{1}
 }
 func (m *IntType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_IntType.Unmarshal(m, b)
@@ -207,7 +213,7 @@
 func (m *BoolType) String() string { return proto.CompactTextString(m) }
 func (*BoolType) ProtoMessage()    {}
 func (*BoolType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{2}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{2}
 }
 func (m *BoolType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_BoolType.Unmarshal(m, b)
@@ -245,7 +251,7 @@
 func (m *Packet) String() string { return proto.CompactTextString(m) }
 func (*Packet) ProtoMessage()    {}
 func (*Packet) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{3}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{3}
 }
 func (m *Packet) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Packet.Unmarshal(m, b)
@@ -282,7 +288,7 @@
 func (m *ErrorCode) String() string { return proto.CompactTextString(m) }
 func (*ErrorCode) ProtoMessage()    {}
 func (*ErrorCode) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{4}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{4}
 }
 func (m *ErrorCode) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ErrorCode.Unmarshal(m, b)
@@ -314,7 +320,7 @@
 func (m *Error) String() string { return proto.CompactTextString(m) }
 func (*Error) ProtoMessage()    {}
 func (*Error) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{5}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{5}
 }
 func (m *Error) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Error.Unmarshal(m, b)
@@ -364,7 +370,7 @@
 func (m *Header) String() string { return proto.CompactTextString(m) }
 func (*Header) ProtoMessage()    {}
 func (*Header) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{6}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{6}
 }
 func (m *Header) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Header.Unmarshal(m, b)
@@ -438,7 +444,7 @@
 func (m *Argument) String() string { return proto.CompactTextString(m) }
 func (*Argument) ProtoMessage()    {}
 func (*Argument) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{7}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{7}
 }
 func (m *Argument) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Argument.Unmarshal(m, b)
@@ -484,7 +490,7 @@
 func (m *InterContainerMessage) String() string { return proto.CompactTextString(m) }
 func (*InterContainerMessage) ProtoMessage()    {}
 func (*InterContainerMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{8}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{8}
 }
 func (m *InterContainerMessage) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterContainerMessage.Unmarshal(m, b)
@@ -532,7 +538,7 @@
 func (m *InterContainerRequestBody) String() string { return proto.CompactTextString(m) }
 func (*InterContainerRequestBody) ProtoMessage()    {}
 func (*InterContainerRequestBody) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{9}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{9}
 }
 func (m *InterContainerRequestBody) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterContainerRequestBody.Unmarshal(m, b)
@@ -592,7 +598,7 @@
 func (m *InterContainerResponseBody) String() string { return proto.CompactTextString(m) }
 func (*InterContainerResponseBody) ProtoMessage()    {}
 func (*InterContainerResponseBody) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{10}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{10}
 }
 func (m *InterContainerResponseBody) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterContainerResponseBody.Unmarshal(m, b)
@@ -638,7 +644,7 @@
 func (m *SwitchCapability) String() string { return proto.CompactTextString(m) }
 func (*SwitchCapability) ProtoMessage()    {}
 func (*SwitchCapability) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{11}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{11}
 }
 func (m *SwitchCapability) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_SwitchCapability.Unmarshal(m, b)
@@ -683,7 +689,7 @@
 func (m *PortCapability) String() string { return proto.CompactTextString(m) }
 func (*PortCapability) ProtoMessage()    {}
 func (*PortCapability) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{12}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{12}
 }
 func (m *PortCapability) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PortCapability.Unmarshal(m, b)
@@ -724,7 +730,7 @@
 func (m *DeviceDiscovered) String() string { return proto.CompactTextString(m) }
 func (*DeviceDiscovered) ProtoMessage()    {}
 func (*DeviceDiscovered) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{13}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{13}
 }
 func (m *DeviceDiscovered) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_DeviceDiscovered.Unmarshal(m, b)
@@ -782,7 +788,7 @@
 func (m *InterAdapterMessageType) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterMessageType) ProtoMessage()    {}
 func (*InterAdapterMessageType) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{14}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{14}
 }
 func (m *InterAdapterMessageType) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterAdapterMessageType.Unmarshal(m, b)
@@ -819,7 +825,7 @@
 func (m *InterAdapterHeader) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterHeader) ProtoMessage()    {}
 func (*InterAdapterHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{15}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{15}
 }
 func (m *InterAdapterHeader) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterAdapterHeader.Unmarshal(m, b)
@@ -899,7 +905,7 @@
 func (m *InterAdapterOmciMessage) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterOmciMessage) ProtoMessage()    {}
 func (*InterAdapterOmciMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{16}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{16}
 }
 func (m *InterAdapterOmciMessage) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterAdapterOmciMessage.Unmarshal(m, b)
@@ -941,7 +947,7 @@
 func (m *InterAdapterResponseBody) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterResponseBody) ProtoMessage()    {}
 func (*InterAdapterResponseBody) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{17}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{17}
 }
 func (m *InterAdapterResponseBody) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterAdapterResponseBody.Unmarshal(m, b)
@@ -1091,7 +1097,7 @@
 func (m *InterAdapterMessage) String() string { return proto.CompactTextString(m) }
 func (*InterAdapterMessage) ProtoMessage()    {}
 func (*InterAdapterMessage) Descriptor() ([]byte, []int) {
-	return fileDescriptor_inter_container_80ce0119150605eb, []int{18}
+	return fileDescriptor_inter_container_07f83a25f58b3d1d, []int{18}
 }
 func (m *InterAdapterMessage) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_InterAdapterMessage.Unmarshal(m, b)
@@ -1151,75 +1157,76 @@
 }
 
 func init() {
-	proto.RegisterFile("voltha_protos/inter_container.proto", fileDescriptor_inter_container_80ce0119150605eb)
+	proto.RegisterFile("voltha_protos/inter_container.proto", fileDescriptor_inter_container_07f83a25f58b3d1d)
 }
 
-var fileDescriptor_inter_container_80ce0119150605eb = []byte{
-	// 1045 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0x5b, 0x6f, 0xe3, 0x44,
-	0x18, 0xdd, 0xdc, 0x93, 0x2f, 0xdd, 0x6c, 0x3a, 0xdd, 0xed, 0xa6, 0x17, 0xd4, 0xca, 0xec, 0xa5,
-	0x14, 0x48, 0x45, 0x0b, 0x88, 0x7d, 0x42, 0x69, 0xe2, 0xaa, 0x96, 0xda, 0x26, 0x38, 0x69, 0x91,
-	0x78, 0xb1, 0x1c, 0x7b, 0x9a, 0x5a, 0x75, 0x3c, 0xde, 0x99, 0x71, 0x17, 0x4b, 0x08, 0x89, 0x37,
-	0xfe, 0x01, 0xaf, 0x3c, 0xf1, 0x13, 0xf8, 0x7d, 0x68, 0x2e, 0x4e, 0x93, 0xd0, 0x82, 0x04, 0x4f,
-	0xf6, 0x9c, 0x73, 0xe6, 0xf6, 0x5d, 0x8e, 0x0d, 0x1f, 0xdf, 0x91, 0x90, 0xdf, 0xb8, 0x4e, 0x4c,
-	0x09, 0x27, 0xec, 0x20, 0x88, 0x38, 0xa6, 0x8e, 0x47, 0x22, 0xee, 0x06, 0x11, 0xa6, 0x6d, 0x09,
-	0xa3, 0xb2, 0x12, 0x6d, 0x6e, 0x4c, 0x08, 0x99, 0x84, 0xf8, 0x40, 0xa2, 0xe3, 0xe4, 0xfa, 0xc0,
-	0x8d, 0x52, 0x25, 0xd9, 0xdc, 0x59, 0x5c, 0x87, 0xc4, 0x38, 0xba, 0x0e, 0xc9, 0x07, 0xe7, 0x8b,
-	0x23, 0x2d, 0x30, 0x16, 0x05, 0x21, 0x99, 0x04, 0x9e, 0x1b, 0x3a, 0x3e, 0xbe, 0x0b, 0x3c, 0xac,
-	0x34, 0xc6, 0x16, 0x54, 0x86, 0x9c, 0x8e, 0xd2, 0x18, 0xa3, 0x26, 0x14, 0xee, 0xdc, 0xb0, 0x95,
-	0xdb, 0xcd, 0xed, 0xd5, 0x6c, 0xf1, 0x2a, 0x48, 0x2b, 0xe2, 0xcb, 0x64, 0x41, 0x91, 0xdb, 0x50,
-	0x3d, 0x26, 0x24, 0x5c, 0x66, 0xab, 0x8a, 0x35, 0xa0, 0x3c, 0x70, 0xbd, 0x5b, 0xcc, 0x51, 0x0b,
-	0x2a, 0xb1, 0x9b, 0x86, 0xc4, 0xf5, 0x25, 0xbf, 0x62, 0x67, 0x43, 0xc3, 0x84, 0x9a, 0x49, 0x29,
-	0xa1, 0x5d, 0xe2, 0x63, 0xe3, 0x1b, 0x28, 0x79, 0xc4, 0xc7, 0x0c, 0xbd, 0x84, 0xb5, 0xcb, 0x8b,
-	0xe1, 0xe5, 0x60, 0xd0, 0xb7, 0x47, 0x66, 0xcf, 0xb1, 0xcd, 0xef, 0x2e, 0xcd, 0xe1, 0xa8, 0xf9,
-	0x04, 0xad, 0x03, 0xb2, 0x2e, 0xae, 0x3a, 0x67, 0x56, 0xcf, 0x19, 0x74, 0xec, 0xce, 0xb9, 0x39,
-	0x32, 0xed, 0x61, 0x33, 0x67, 0x9c, 0x40, 0x49, 0x2e, 0x83, 0x5e, 0x43, 0x51, 0x2c, 0x21, 0xb7,
-	0xa9, 0x1f, 0xae, 0xb6, 0xd5, 0xf5, 0xdb, 0xb3, 0x3d, 0x6c, 0x49, 0xa3, 0x75, 0x28, 0x53, 0xec,
-	0x32, 0x12, 0xb5, 0xf2, 0xf2, 0xaa, 0x7a, 0x64, 0xfc, 0x99, 0x83, 0xf2, 0x29, 0x76, 0x7d, 0x4c,
-	0x51, 0x03, 0xf2, 0x81, 0xaf, 0x23, 0x91, 0x0f, 0x7c, 0xf4, 0x16, 0x8a, 0x3c, 0x8d, 0xb1, 0x9c,
-	0xd0, 0x38, 0x5c, 0xcb, 0x56, 0x3e, 0xc7, 0x8c, 0xb9, 0x13, 0x2c, 0x42, 0x60, 0x4b, 0x01, 0xfa,
-	0x08, 0xe0, 0x9a, 0x92, 0xa9, 0xc3, 0x49, 0x1c, 0x78, 0xad, 0x82, 0x5c, 0xa0, 0x26, 0x90, 0x91,
-	0x00, 0xd0, 0x06, 0x54, 0x39, 0xd1, 0x64, 0x51, 0x92, 0x15, 0x4e, 0x14, 0xb5, 0x05, 0xb5, 0x5b,
-	0x9c, 0x6a, 0xae, 0x24, 0xb9, 0xea, 0x2d, 0x4e, 0x15, 0xb9, 0x0d, 0x35, 0x1e, 0x4c, 0x31, 0xe3,
-	0xee, 0x34, 0x6e, 0x95, 0x65, 0x0e, 0xee, 0x01, 0xe3, 0x14, 0xaa, 0x1d, 0x3a, 0x49, 0xa6, 0x38,
-	0xe2, 0x22, 0x13, 0xb7, 0x38, 0xcd, 0x92, 0x78, 0x8b, 0x53, 0xb4, 0x0f, 0xa5, 0x3b, 0x37, 0x4c,
-	0xd4, 0xe1, 0xeb, 0x87, 0xcf, 0xdb, 0xaa, 0xa2, 0xda, 0x59, 0x45, 0xb5, 0x3b, 0x51, 0x6a, 0x2b,
-	0x89, 0x11, 0xc0, 0x0b, 0x4b, 0x94, 0x63, 0x37, 0xab, 0x46, 0x7d, 0x43, 0xf4, 0x06, 0xca, 0x37,
-	0x32, 0x34, 0x3a, 0xb8, 0x8d, 0x2c, 0x04, 0x2a, 0x60, 0xb6, 0x66, 0xd1, 0x1e, 0x14, 0xc7, 0xc4,
-	0x4f, 0xff, 0x71, 0x2f, 0xa9, 0x30, 0xfe, 0xc8, 0xc1, 0xc6, 0xe2, 0x5e, 0x36, 0x7e, 0x9f, 0x60,
-	0xc6, 0x8f, 0x89, 0x9f, 0x8a, 0x6b, 0xd0, 0xd8, 0xd3, 0x09, 0x12, 0xaf, 0xe8, 0x15, 0x14, 0x5d,
-	0x3a, 0x61, 0xad, 0xc2, 0x6e, 0x61, 0xaf, 0x7e, 0xd8, 0xcc, 0xf6, 0xcf, 0x2e, 0x6e, 0x4b, 0x16,
-	0x7d, 0x0a, 0xab, 0x14, 0xb3, 0x98, 0x44, 0x0c, 0x3b, 0x14, 0xbf, 0x4f, 0x02, 0x8a, 0x7d, 0x19,
-	0xe9, 0xaa, 0xdd, 0xcc, 0x08, 0x5b, 0xe3, 0xe8, 0x15, 0x34, 0x28, 0x8e, 0x43, 0x11, 0xf4, 0x85,
-	0xb8, 0xaf, 0x48, 0x74, 0xa4, 0x12, 0x63, 0xf8, 0xb0, 0xb9, 0x7c, 0x4e, 0xb5, 0x8e, 0x3c, 0x68,
-	0x0b, 0x2a, 0x2c, 0xf1, 0x3c, 0xcc, 0x98, 0xae, 0xfe, 0x6c, 0x88, 0x3e, 0x13, 0x65, 0xc6, 0x92,
-	0x90, 0xcb, 0x32, 0x78, 0x2c, 0x18, 0x5a, 0x63, 0xfc, 0x9a, 0x83, 0xe6, 0xf0, 0x43, 0xc0, 0xbd,
-	0x9b, 0xae, 0x1b, 0xbb, 0xe3, 0x20, 0x0c, 0x78, 0x8a, 0x3e, 0x81, 0xa2, 0x8f, 0x99, 0xa7, 0x63,
-	0xfe, 0xa2, 0x3d, 0xdf, 0xe2, 0xe4, 0x3a, 0x76, 0x04, 0x69, 0x4b, 0x09, 0xb2, 0xe0, 0x19, 0x93,
-	0xd3, 0x9d, 0x6b, 0xec, 0xf2, 0x84, 0x62, 0xa6, 0x73, 0xb0, 0xfb, 0xb7, 0x59, 0x4b, 0x3a, 0xbb,
-	0xa1, 0x80, 0x13, 0x3d, 0x36, 0xde, 0x41, 0x63, 0x40, 0x28, 0x9f, 0x3b, 0xc7, 0x5b, 0x28, 0xc6,
-	0x84, 0x72, 0x7d, 0x8e, 0x59, 0xf9, 0x9f, 0x29, 0x43, 0x11, 0x62, 0x5b, 0x0a, 0x8c, 0x9f, 0xa1,
-	0xd9, 0x93, 0xee, 0xd2, 0x0b, 0x98, 0x47, 0xee, 0xb0, 0x88, 0xf2, 0x72, 0x2f, 0x6d, 0x41, 0x2d,
-	0x76, 0x29, 0x8e, 0xb8, 0x13, 0xf8, 0x3a, 0xc1, 0x55, 0x05, 0x58, 0x3e, 0xda, 0x81, 0xba, 0xb2,
-	0x27, 0x47, 0xf6, 0x9b, 0x6a, 0x20, 0x50, 0x90, 0x74, 0x9a, 0x6d, 0xa8, 0xc5, 0xc9, 0x38, 0x0c,
-	0xd8, 0x0d, 0xa6, 0xba, 0x85, 0xee, 0x01, 0xe3, 0xb7, 0x1c, 0xbc, 0x94, 0xc9, 0xea, 0xf8, 0x6e,
-	0xcc, 0x67, 0xe5, 0x2b, 0x66, 0x1a, 0x3f, 0x41, 0x49, 0x3c, 0x19, 0x6a, 0xc2, 0xca, 0xc9, 0x59,
-	0xff, 0xfb, 0x39, 0x67, 0x59, 0x85, 0xa7, 0x1a, 0x19, 0x0e, 0xfa, 0x17, 0x43, 0xb3, 0x99, 0x13,
-	0xa2, 0xfe, 0x79, 0xd7, 0x9a, 0x89, 0xf2, 0x42, 0xa4, 0x11, 0x2d, 0x2a, 0xa0, 0x35, 0x78, 0x76,
-	0x6e, 0x8e, 0x6c, 0xab, 0x3b, 0x9c, 0xe9, 0x8a, 0xe8, 0x39, 0x34, 0xef, 0x41, 0x2d, 0x2d, 0x19,
-	0xbf, 0xe4, 0x01, 0xcd, 0x9f, 0xec, 0x11, 0xa3, 0x79, 0xb7, 0x60, 0x34, 0xaf, 0xb3, 0x48, 0x3f,
-	0x72, 0xa7, 0xb6, 0xbc, 0xd0, 0xff, 0xb6, 0x9e, 0x5d, 0x58, 0xe1, 0x44, 0x7f, 0x16, 0x44, 0x52,
-	0x54, 0x17, 0x00, 0x27, 0x2a, 0x97, 0x96, 0x8f, 0xde, 0xc0, 0xb3, 0x98, 0x92, 0x1f, 0xd3, 0x39,
-	0x51, 0x59, 0x8a, 0x9e, 0x4a, 0x78, 0xa6, 0x5b, 0xf0, 0xa9, 0xca, 0xb2, 0x4f, 0x1d, 0x2d, 0x26,
-	0xa7, 0x3f, 0xf5, 0x82, 0xcc, 0x5f, 0x5a, 0x50, 0x99, 0xaa, 0xd7, 0xec, 0x23, 0xa1, 0x87, 0xc6,
-	0xef, 0x39, 0x68, 0xcd, 0xcf, 0x5a, 0xe8, 0xbe, 0x75, 0x28, 0x33, 0xee, 0xf2, 0x24, 0x6b, 0x3e,
-	0x3d, 0x42, 0xfb, 0xff, 0x6e, 0x43, 0xa7, 0x4f, 0x94, 0x11, 0xa1, 0xaf, 0xa0, 0x48, 0xa6, 0x5e,
-	0xa0, 0xbb, 0x74, 0xe7, 0xa1, 0x90, 0xcf, 0x9d, 0x54, 0x4c, 0x13, 0xf2, 0xe3, 0xda, 0xec, 0xb3,
-	0x66, 0x30, 0x58, 0x7b, 0x20, 0x41, 0xe8, 0x70, 0xc9, 0x33, 0x37, 0x1f, 0x5a, 0xfa, 0xbf, 0xfa,
-	0xe7, 0xfe, 0xb7, 0x50, 0x9f, 0xab, 0x04, 0x54, 0x87, 0xca, 0x7d, 0x3d, 0xaf, 0x40, 0x75, 0xae,
-	0x94, 0x5f, 0xc0, 0x6a, 0xcf, 0xbc, 0xb2, 0xba, 0xa6, 0xd3, 0xb3, 0x86, 0xdd, 0xfe, 0x95, 0x69,
-	0x9b, 0xbd, 0x66, 0xfe, 0xf8, 0xeb, 0x1f, 0xbe, 0x9c, 0x04, 0xfc, 0x26, 0x19, 0xb7, 0x3d, 0x32,
-	0x95, 0x7f, 0x0f, 0x1e, 0xa1, 0xfe, 0x81, 0x3a, 0xe3, 0xe7, 0xfa, 0x9f, 0x61, 0x42, 0x96, 0xff,
-	0x4f, 0x06, 0xf9, 0x71, 0x59, 0x92, 0x47, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x41, 0xcf, 0x9b,
-	0x5d, 0xc9, 0x08, 0x00, 0x00,
+var fileDescriptor_inter_container_07f83a25f58b3d1d = []byte{
+	// 1061 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdb, 0x6e, 0xe3, 0x44,
+	0x18, 0xde, 0x9c, 0x93, 0x3f, 0xdd, 0x34, 0x9d, 0x6e, 0xbb, 0xe9, 0x01, 0xb5, 0x32, 0x7b, 0x28,
+	0x05, 0x52, 0xd1, 0x02, 0x62, 0xaf, 0x50, 0x9a, 0xb8, 0xaa, 0xa5, 0xb6, 0x09, 0x4e, 0x5a, 0x24,
+	0x6e, 0x2c, 0xc7, 0x9e, 0xa6, 0x56, 0x9d, 0x8c, 0x77, 0x66, 0xdc, 0xc5, 0x37, 0x48, 0xdc, 0xf1,
+	0x18, 0x5c, 0xc1, 0x1b, 0xf0, 0x02, 0xbc, 0x18, 0x9a, 0x83, 0x73, 0xa2, 0x05, 0x09, 0xee, 0x66,
+	0xbe, 0xef, 0x9b, 0xd3, 0x7f, 0xf8, 0x6c, 0xf8, 0xf8, 0x81, 0x84, 0xfc, 0xce, 0x75, 0x22, 0x4a,
+	0x38, 0x61, 0x47, 0xc1, 0x84, 0x63, 0xea, 0x78, 0x64, 0xc2, 0xdd, 0x60, 0x82, 0x69, 0x53, 0xc2,
+	0xa8, 0xa8, 0x44, 0xdb, 0x5b, 0x23, 0x42, 0x46, 0x21, 0x3e, 0x92, 0xe8, 0x30, 0xbe, 0x3d, 0x72,
+	0x27, 0x89, 0x92, 0x6c, 0xef, 0x2d, 0xee, 0x43, 0x22, 0x3c, 0xb9, 0x0d, 0xc9, 0x07, 0xe7, 0x8b,
+	0x13, 0x2d, 0x30, 0x16, 0x05, 0x21, 0x19, 0x05, 0x9e, 0x1b, 0x3a, 0x3e, 0x7e, 0x08, 0x3c, 0xac,
+	0x34, 0xc6, 0x0e, 0x94, 0xfa, 0x9c, 0x0e, 0x92, 0x08, 0xa3, 0x3a, 0xe4, 0x1e, 0xdc, 0xb0, 0x91,
+	0xd9, 0xcf, 0x1c, 0x54, 0x6c, 0x31, 0x14, 0xa4, 0x35, 0xe1, 0xcb, 0x64, 0x4e, 0x91, 0xbb, 0x50,
+	0x3e, 0x25, 0x24, 0x5c, 0x66, 0xcb, 0x8a, 0x35, 0xa0, 0xd8, 0x73, 0xbd, 0x7b, 0xcc, 0x51, 0x03,
+	0x4a, 0x91, 0x9b, 0x84, 0xc4, 0xf5, 0x25, 0xbf, 0x62, 0xa7, 0x53, 0xc3, 0x84, 0x8a, 0x49, 0x29,
+	0xa1, 0x6d, 0xe2, 0x63, 0xe3, 0x1b, 0x28, 0x78, 0xc4, 0xc7, 0x0c, 0xbd, 0x84, 0xf5, 0xeb, 0xab,
+	0xfe, 0x75, 0xaf, 0xd7, 0xb5, 0x07, 0x66, 0xc7, 0xb1, 0xcd, 0xef, 0xae, 0xcd, 0xfe, 0xa0, 0xfe,
+	0x0c, 0x6d, 0x02, 0xb2, 0xae, 0x6e, 0x5a, 0x17, 0x56, 0xc7, 0xe9, 0xb5, 0xec, 0xd6, 0xa5, 0x39,
+	0x30, 0xed, 0x7e, 0x3d, 0x63, 0x9c, 0x41, 0x41, 0x6e, 0x83, 0x5e, 0x43, 0x5e, 0x6c, 0x21, 0x8f,
+	0xa9, 0x1e, 0xaf, 0x35, 0xd5, 0xf3, 0x9b, 0xd3, 0x33, 0x6c, 0x49, 0xa3, 0x4d, 0x28, 0x52, 0xec,
+	0x32, 0x32, 0x69, 0x64, 0xe5, 0x53, 0xf5, 0xcc, 0xf8, 0x23, 0x03, 0xc5, 0x73, 0xec, 0xfa, 0x98,
+	0xa2, 0x1a, 0x64, 0x03, 0x5f, 0x47, 0x22, 0x1b, 0xf8, 0xe8, 0x2d, 0xe4, 0x79, 0x12, 0x61, 0xb9,
+	0xa0, 0x76, 0xbc, 0x9e, 0xee, 0x7c, 0x89, 0x19, 0x73, 0x47, 0x58, 0x84, 0xc0, 0x96, 0x02, 0xf4,
+	0x11, 0xc0, 0x2d, 0x25, 0x63, 0x87, 0x93, 0x28, 0xf0, 0x1a, 0x39, 0xb9, 0x41, 0x45, 0x20, 0x03,
+	0x01, 0xa0, 0x2d, 0x28, 0x73, 0xa2, 0xc9, 0xbc, 0x24, 0x4b, 0x9c, 0x28, 0x6a, 0x07, 0x2a, 0xf7,
+	0x38, 0xd1, 0x5c, 0x41, 0x72, 0xe5, 0x7b, 0x9c, 0x28, 0x72, 0x17, 0x2a, 0x3c, 0x18, 0x63, 0xc6,
+	0xdd, 0x71, 0xd4, 0x28, 0xca, 0x1c, 0xcc, 0x00, 0xe3, 0x1c, 0xca, 0x2d, 0x3a, 0x8a, 0xc7, 0x78,
+	0xc2, 0x45, 0x26, 0xee, 0x71, 0x92, 0x26, 0xf1, 0x1e, 0x27, 0xe8, 0x10, 0x0a, 0x0f, 0x6e, 0x18,
+	0xab, 0xcb, 0x57, 0x8f, 0x5f, 0x34, 0x55, 0x45, 0x35, 0xd3, 0x8a, 0x6a, 0xb6, 0x26, 0x89, 0xad,
+	0x24, 0x46, 0x00, 0x1b, 0x96, 0x28, 0xc7, 0x76, 0x5a, 0x8d, 0xfa, 0x85, 0xe8, 0x0d, 0x14, 0xef,
+	0x64, 0x68, 0x74, 0x70, 0x6b, 0x69, 0x08, 0x54, 0xc0, 0x6c, 0xcd, 0xa2, 0x03, 0xc8, 0x0f, 0x89,
+	0x9f, 0xfc, 0xe3, 0x59, 0x52, 0x61, 0xfc, 0x96, 0x81, 0xad, 0xc5, 0xb3, 0x6c, 0xfc, 0x3e, 0xc6,
+	0x8c, 0x9f, 0x12, 0x3f, 0x11, 0xcf, 0xa0, 0x91, 0xa7, 0x13, 0x24, 0x86, 0xe8, 0x15, 0xe4, 0x5d,
+	0x3a, 0x62, 0x8d, 0xdc, 0x7e, 0xee, 0xa0, 0x7a, 0x5c, 0x4f, 0xcf, 0x4f, 0x1f, 0x6e, 0x4b, 0x16,
+	0x7d, 0x0a, 0x6b, 0x14, 0xb3, 0x88, 0x4c, 0x18, 0x76, 0x28, 0x7e, 0x1f, 0x07, 0x14, 0xfb, 0x32,
+	0xd2, 0x65, 0xbb, 0x9e, 0x12, 0xb6, 0xc6, 0xd1, 0x2b, 0xa8, 0x51, 0x1c, 0x85, 0x22, 0xe8, 0x0b,
+	0x71, 0x5f, 0x91, 0xe8, 0x40, 0x25, 0xc6, 0xf0, 0x61, 0x7b, 0xf9, 0x9e, 0x6a, 0x1f, 0x79, 0xd1,
+	0x06, 0x94, 0x58, 0xec, 0x79, 0x98, 0x31, 0x5d, 0xfd, 0xe9, 0x14, 0x7d, 0x26, 0xca, 0x8c, 0xc5,
+	0x21, 0x97, 0x65, 0xf0, 0x54, 0x30, 0xb4, 0xc6, 0xf8, 0x25, 0x03, 0xf5, 0xfe, 0x87, 0x80, 0x7b,
+	0x77, 0x6d, 0x37, 0x72, 0x87, 0x41, 0x18, 0xf0, 0x04, 0x7d, 0x02, 0x79, 0x1f, 0x33, 0x4f, 0xc7,
+	0x7c, 0xa3, 0x39, 0xdf, 0xe2, 0xe4, 0x36, 0x72, 0x04, 0x69, 0x4b, 0x09, 0xb2, 0x60, 0x95, 0xc9,
+	0xe5, 0xce, 0x2d, 0x76, 0x79, 0x4c, 0x31, 0xd3, 0x39, 0xd8, 0xff, 0xdb, 0xaa, 0x25, 0x9d, 0x5d,
+	0x53, 0xc0, 0x99, 0x9e, 0x1b, 0xef, 0xa0, 0xd6, 0x23, 0x94, 0xcf, 0xdd, 0xe3, 0x2d, 0xe4, 0x23,
+	0x42, 0xb9, 0xbe, 0xc7, 0xb4, 0xfc, 0x2f, 0x94, 0xa1, 0x08, 0xb1, 0x2d, 0x05, 0xc6, 0x4f, 0x50,
+	0xef, 0x48, 0x77, 0xe9, 0x04, 0xcc, 0x23, 0x0f, 0x58, 0x44, 0x79, 0xb9, 0x97, 0x76, 0xa0, 0x12,
+	0xb9, 0x14, 0x4f, 0xb8, 0x13, 0xf8, 0x3a, 0xc1, 0x65, 0x05, 0x58, 0x3e, 0xda, 0x83, 0xaa, 0xb2,
+	0x27, 0x47, 0xf6, 0x9b, 0x6a, 0x20, 0x50, 0x90, 0x74, 0x9a, 0x5d, 0xa8, 0x44, 0xf1, 0x30, 0x0c,
+	0xd8, 0x1d, 0xa6, 0xba, 0x85, 0x66, 0x80, 0xf1, 0x67, 0x06, 0x5e, 0xca, 0x64, 0xb5, 0x7c, 0x37,
+	0xe2, 0xd3, 0xf2, 0x15, 0x2b, 0x8d, 0xdf, 0x33, 0x50, 0x10, 0x03, 0x86, 0xea, 0xb0, 0x72, 0x76,
+	0xd1, 0xfd, 0x7e, 0xce, 0x5a, 0xd6, 0xe0, 0xb9, 0x46, 0xfa, 0xbd, 0xee, 0x55, 0xdf, 0xac, 0x67,
+	0x84, 0xa8, 0x7b, 0xd9, 0xb6, 0xa6, 0xa2, 0xac, 0x10, 0x69, 0x44, 0x8b, 0x72, 0x68, 0x1d, 0x56,
+	0x2f, 0xcd, 0x81, 0x6d, 0xb5, 0xfb, 0x53, 0x5d, 0x1e, 0xbd, 0x80, 0xfa, 0x0c, 0xd4, 0xd2, 0x82,
+	0x90, 0x76, 0xaf, 0xae, 0x1d, 0xeb, 0x6a, 0x66, 0x69, 0x45, 0x21, 0x9d, 0x81, 0x5a, 0x5a, 0x32,
+	0x7e, 0xce, 0x02, 0x9a, 0x7f, 0xc5, 0x13, 0xa6, 0xf4, 0x6e, 0xc1, 0x94, 0x5e, 0xa7, 0x59, 0x79,
+	0xe2, 0xfd, 0x4d, 0xf9, 0xf6, 0xff, 0x6d, 0x53, 0xfb, 0xb0, 0xc2, 0x89, 0xfe, 0x84, 0x88, 0x04,
+	0xaa, 0x8e, 0x01, 0x4e, 0x54, 0xde, 0x2d, 0x1f, 0xbd, 0x81, 0xd5, 0x88, 0x92, 0x1f, 0x93, 0x39,
+	0x51, 0x51, 0x8a, 0x9e, 0x4b, 0x78, 0xaa, 0x5b, 0xf0, 0xb4, 0xd2, 0xb2, 0xa7, 0x9d, 0x2c, 0x26,
+	0xb2, 0x3b, 0xf6, 0x82, 0xd4, 0x8b, 0x1a, 0x50, 0x1a, 0xab, 0x61, 0xfa, 0x41, 0xd1, 0x53, 0xe3,
+	0xd7, 0x0c, 0x34, 0xe6, 0x57, 0x2d, 0x74, 0xea, 0x26, 0x14, 0x19, 0x77, 0x79, 0x9c, 0x36, 0xaa,
+	0x9e, 0xa1, 0xc3, 0x7f, 0xb7, 0xac, 0xf3, 0x67, 0xca, 0xb4, 0xd0, 0x57, 0x90, 0x27, 0x63, 0x2f,
+	0xd0, 0x1d, 0xbd, 0xf7, 0x58, 0xc8, 0xe7, 0x6e, 0x2a, 0x96, 0x09, 0xf9, 0x69, 0x65, 0xfa, 0x09,
+	0x34, 0x18, 0xac, 0x3f, 0x92, 0x20, 0x74, 0xbc, 0xe4, 0xaf, 0xdb, 0x8f, 0x6d, 0xfd, 0x5f, 0xbd,
+	0xf6, 0xf0, 0x5b, 0xa8, 0xce, 0x55, 0x02, 0xaa, 0x42, 0x69, 0x56, 0xfa, 0x2b, 0x50, 0x9e, 0xab,
+	0xfa, 0x0d, 0x58, 0xeb, 0x98, 0x37, 0x56, 0xdb, 0x74, 0x3a, 0x56, 0xbf, 0xdd, 0xbd, 0x31, 0x6d,
+	0xb3, 0x53, 0xcf, 0x9e, 0x7e, 0xfd, 0xc3, 0x97, 0xa3, 0x80, 0xdf, 0xc5, 0xc3, 0xa6, 0x47, 0xc6,
+	0xf2, 0x4f, 0xc3, 0x23, 0xd4, 0x3f, 0x52, 0x77, 0xfc, 0x5c, 0xff, 0x5f, 0x8c, 0xc8, 0xf2, 0xbf,
+	0x4c, 0x2f, 0x3b, 0x2c, 0x4a, 0xf2, 0xe4, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x90, 0x60, 0x04,
+	0xd3, 0xf5, 0x08, 0x00, 0x00,
 }
diff --git a/go/voltha.pb b/go/voltha.pb
index 078aa53..6f8610a 100644
--- a/go/voltha.pb
+++ b/go/voltha.pb
Binary files differ
diff --git a/go/voltha/logical_device.pb.go b/go/voltha/logical_device.pb.go
index 0008876..088d55c 100644
--- a/go/voltha/logical_device.pb.go
+++ b/go/voltha/logical_device.pb.go
@@ -35,7 +35,7 @@
 func (m *LogicalPortId) String() string { return proto.CompactTextString(m) }
 func (*LogicalPortId) ProtoMessage()    {}
 func (*LogicalPortId) Descriptor() ([]byte, []int) {
-	return fileDescriptor_logical_device_33972ea6b3a0b7e8, []int{0}
+	return fileDescriptor_logical_device_eab9968d916b9ed2, []int{0}
 }
 func (m *LogicalPortId) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogicalPortId.Unmarshal(m, b)
@@ -70,21 +70,22 @@
 }
 
 type LogicalPort struct {
-	Id                   string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
-	OfpPort              *openflow_13.OfpPort `protobuf:"bytes,2,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
-	DeviceId             string               `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
-	DevicePortNo         uint32               `protobuf:"varint,4,opt,name=device_port_no,json=devicePortNo,proto3" json:"device_port_no,omitempty"`
-	RootPort             bool                 `protobuf:"varint,5,opt,name=root_port,json=rootPort,proto3" json:"root_port,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
-	XXX_unrecognized     []byte               `json:"-"`
-	XXX_sizecache        int32                `json:"-"`
+	Id                   string                    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
+	OfpPort              *openflow_13.OfpPort      `protobuf:"bytes,2,opt,name=ofp_port,json=ofpPort,proto3" json:"ofp_port,omitempty"`
+	DeviceId             string                    `protobuf:"bytes,3,opt,name=device_id,json=deviceId,proto3" json:"device_id,omitempty"`
+	DevicePortNo         uint32                    `protobuf:"varint,4,opt,name=device_port_no,json=devicePortNo,proto3" json:"device_port_no,omitempty"`
+	RootPort             bool                      `protobuf:"varint,5,opt,name=root_port,json=rootPort,proto3" json:"root_port,omitempty"`
+	OfpPortStats         *openflow_13.OfpPortStats `protobuf:"bytes,6,opt,name=ofp_port_stats,json=ofpPortStats,proto3" json:"ofp_port_stats,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
+	XXX_unrecognized     []byte                    `json:"-"`
+	XXX_sizecache        int32                     `json:"-"`
 }
 
 func (m *LogicalPort) Reset()         { *m = LogicalPort{} }
 func (m *LogicalPort) String() string { return proto.CompactTextString(m) }
 func (*LogicalPort) ProtoMessage()    {}
 func (*LogicalPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_logical_device_33972ea6b3a0b7e8, []int{1}
+	return fileDescriptor_logical_device_eab9968d916b9ed2, []int{1}
 }
 func (m *LogicalPort) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogicalPort.Unmarshal(m, b)
@@ -139,6 +140,13 @@
 	return false
 }
 
+func (m *LogicalPort) GetOfpPortStats() *openflow_13.OfpPortStats {
+	if m != nil {
+		return m.OfpPortStats
+	}
+	return nil
+}
+
 type LogicalPorts struct {
 	Items                []*LogicalPort `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
@@ -150,7 +158,7 @@
 func (m *LogicalPorts) String() string { return proto.CompactTextString(m) }
 func (*LogicalPorts) ProtoMessage()    {}
 func (*LogicalPorts) Descriptor() ([]byte, []int) {
-	return fileDescriptor_logical_device_33972ea6b3a0b7e8, []int{2}
+	return fileDescriptor_logical_device_eab9968d916b9ed2, []int{2}
 }
 func (m *LogicalPorts) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogicalPorts.Unmarshal(m, b)
@@ -203,7 +211,7 @@
 func (m *LogicalDevice) String() string { return proto.CompactTextString(m) }
 func (*LogicalDevice) ProtoMessage()    {}
 func (*LogicalDevice) Descriptor() ([]byte, []int) {
-	return fileDescriptor_logical_device_33972ea6b3a0b7e8, []int{3}
+	return fileDescriptor_logical_device_eab9968d916b9ed2, []int{3}
 }
 func (m *LogicalDevice) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogicalDevice.Unmarshal(m, b)
@@ -290,7 +298,7 @@
 func (m *LogicalDevices) String() string { return proto.CompactTextString(m) }
 func (*LogicalDevices) ProtoMessage()    {}
 func (*LogicalDevices) Descriptor() ([]byte, []int) {
-	return fileDescriptor_logical_device_33972ea6b3a0b7e8, []int{4}
+	return fileDescriptor_logical_device_eab9968d916b9ed2, []int{4}
 }
 func (m *LogicalDevices) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_LogicalDevices.Unmarshal(m, b)
@@ -326,40 +334,41 @@
 }
 
 func init() {
-	proto.RegisterFile("voltha_protos/logical_device.proto", fileDescriptor_logical_device_33972ea6b3a0b7e8)
+	proto.RegisterFile("voltha_protos/logical_device.proto", fileDescriptor_logical_device_eab9968d916b9ed2)
 }
 
-var fileDescriptor_logical_device_33972ea6b3a0b7e8 = []byte{
-	// 488 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x53, 0x4f, 0x6b, 0xd4, 0x40,
-	0x14, 0x37, 0xdd, 0xcd, 0x76, 0xf7, 0x65, 0xbb, 0xc2, 0x48, 0x69, 0xa8, 0x4a, 0x43, 0xf0, 0xb0,
-	0xa5, 0x34, 0x5b, 0xb7, 0x08, 0x7a, 0x10, 0x64, 0x29, 0x95, 0x05, 0x11, 0x99, 0xa3, 0x97, 0x30,
-	0xcd, 0x24, 0xd9, 0x81, 0x6c, 0x5e, 0xc8, 0xcc, 0xb6, 0x57, 0xf5, 0xe2, 0xc7, 0xf1, 0x93, 0xf8,
-	0x25, 0xfc, 0x10, 0x9e, 0x65, 0x66, 0x92, 0xba, 0xe9, 0xea, 0x31, 0xbf, 0x3f, 0xef, 0xfd, 0xde,
-	0x6f, 0x08, 0x84, 0xb7, 0x58, 0xa8, 0x15, 0x8b, 0xab, 0x1a, 0x15, 0xca, 0x59, 0x81, 0xb9, 0x48,
-	0x58, 0x11, 0xf3, 0xf4, 0x56, 0x24, 0x69, 0x64, 0x50, 0x32, 0xb0, 0x9a, 0xe3, 0x67, 0x39, 0x62,
-	0x5e, 0xa4, 0x33, 0x56, 0x89, 0x19, 0x2b, 0x4b, 0x54, 0x4c, 0x09, 0x2c, 0xa5, 0x55, 0x1d, 0xfb,
-	0xdd, 0x49, 0xeb, 0x54, 0xb1, 0x86, 0x39, 0xe9, 0x32, 0x58, 0xa5, 0x65, 0x56, 0xe0, 0x5d, 0xfc,
-	0xf2, 0xd2, 0x0a, 0xc2, 0xd7, 0x70, 0xf0, 0xc1, 0x2e, 0xfe, 0x84, 0xb5, 0x5a, 0x72, 0x32, 0x81,
-	0x3d, 0xc1, 0x7d, 0x27, 0x70, 0xa6, 0x23, 0xba, 0x27, 0x38, 0x39, 0x82, 0xfd, 0x0a, 0x6b, 0x15,
-	0x0b, 0xee, 0xef, 0x19, 0x70, 0x50, 0x19, 0x61, 0xf8, 0xc3, 0x01, 0x6f, 0xcb, 0xba, 0x63, 0xbc,
-	0x80, 0x21, 0x66, 0x55, 0xac, 0xd5, 0xc6, 0xe9, 0xcd, 0x0f, 0xa3, 0xed, 0xfd, 0x2d, 0x49, 0xf7,
-	0x31, 0xab, 0xcc, 0x84, 0xa7, 0x30, 0xb2, 0xc7, 0xeb, 0x65, 0x3d, 0x33, 0x68, 0x68, 0x81, 0x25,
-	0x27, 0x2f, 0x60, 0xd2, 0x90, 0x26, 0x4e, 0x89, 0x7e, 0x3f, 0x70, 0xa6, 0x07, 0x74, 0x6c, 0x51,
-	0x3d, 0xe0, 0x23, 0xea, 0x11, 0x35, 0xa2, 0xb2, 0x5b, 0xdd, 0xc0, 0x99, 0x0e, 0xe9, 0x50, 0x03,
-	0x9a, 0x0e, 0xdf, 0xc0, 0x78, 0x2b, 0xb0, 0x24, 0xa7, 0xe0, 0x0a, 0x95, 0xae, 0xa5, 0xef, 0x04,
-	0xbd, 0xa9, 0x37, 0x7f, 0x12, 0xd9, 0xb2, 0xa2, 0x2d, 0x11, 0xb5, 0x8a, 0xf0, 0x7b, 0xef, 0xbe,
-	0xa7, 0x2b, 0xb3, 0x6f, 0xe7, 0xdc, 0x13, 0xf0, 0x38, 0x53, 0xac, 0x62, 0x6a, 0xd5, 0x76, 0xd5,
-	0xa7, 0xd0, 0x42, 0x4b, 0x4e, 0x4e, 0xa1, 0xcf, 0x53, 0x99, 0x98, 0xc3, 0xfe, 0xd5, 0x85, 0x26,
-	0xa9, 0x91, 0x90, 0x25, 0x3c, 0x96, 0x77, 0x42, 0x25, 0xab, 0x38, 0x4b, 0x99, 0xda, 0xd4, 0xa9,
-	0x34, 0xc7, 0x7a, 0xf3, 0x60, 0xc7, 0xf5, 0x40, 0x47, 0x27, 0x16, 0xb8, 0x6e, 0xbe, 0x75, 0x6d,
-	0xa6, 0x90, 0xbf, 0xc5, 0xba, 0x26, 0xf2, 0x58, 0xa3, 0x57, 0x6d, 0xb9, 0xaf, 0xc0, 0xd5, 0x8d,
-	0x49, 0xff, 0xcb, 0xff, 0xab, 0x58, 0x8c, 0x7e, 0xfd, 0xfe, 0xf9, 0xbc, 0xaf, 0xcf, 0xa6, 0x56,
-	0x4d, 0x2e, 0xc0, 0xd5, 0x59, 0xa4, 0xff, 0xd5, 0x31, 0xf1, 0x48, 0x27, 0xde, 0xb5, 0xa6, 0x16,
-	0xae, 0x76, 0x3d, 0xa2, 0x56, 0x48, 0xde, 0x81, 0x67, 0xe8, 0xbc, 0xc6, 0x4d, 0x25, 0xfd, 0x6f,
-	0xd6, 0x77, 0xb4, 0xe3, 0x7b, 0x6f, 0xf8, 0xd6, 0x0c, 0xd9, 0x3d, 0x14, 0xbe, 0x85, 0x49, 0xe7,
-	0x21, 0x24, 0x39, 0xeb, 0x3e, 0xe3, 0xe1, 0x83, 0xec, 0x56, 0xd6, 0x3c, 0xe4, 0xe2, 0xfc, 0xf3,
-	0x59, 0x2e, 0xd4, 0x6a, 0x73, 0x13, 0x25, 0xb8, 0x36, 0xff, 0x43, 0x82, 0x35, 0x9f, 0x59, 0xcb,
-	0x79, 0xf3, 0x9b, 0xe4, 0xd8, 0x00, 0x37, 0x03, 0x83, 0x5c, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff,
-	0xe6, 0x88, 0x38, 0xe0, 0xac, 0x03, 0x00, 0x00,
+var fileDescriptor_logical_device_eab9968d916b9ed2 = []byte{
+	// 512 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x53, 0x4f, 0x6b, 0x13, 0x41,
+	0x14, 0x77, 0x9b, 0x6c, 0x9a, 0xbc, 0x4d, 0x23, 0x8c, 0x94, 0x2e, 0xad, 0xd2, 0xb0, 0x78, 0x48,
+	0x29, 0x4d, 0x6a, 0x8a, 0xa0, 0x07, 0x41, 0x43, 0xa9, 0x04, 0x44, 0x64, 0xbc, 0x79, 0x59, 0xa6,
+	0x3b, 0x9b, 0xcd, 0x40, 0x92, 0xb7, 0xec, 0x4c, 0xda, 0xab, 0x7a, 0xf1, 0xd3, 0xf9, 0x25, 0xfc,
+	0x08, 0x1e, 0x3c, 0xcb, 0xbc, 0xd9, 0xad, 0xd9, 0xa6, 0x1e, 0xf7, 0xf7, 0xe7, 0xbd, 0xdf, 0xfc,
+	0x1e, 0x0b, 0xd1, 0x0d, 0x2e, 0xcc, 0x5c, 0xc4, 0x79, 0x81, 0x06, 0xf5, 0x68, 0x81, 0x99, 0x4a,
+	0xc4, 0x22, 0x96, 0xe9, 0x8d, 0x4a, 0xd2, 0x21, 0xa1, 0xac, 0xe5, 0x34, 0x87, 0x4f, 0x33, 0xc4,
+	0x6c, 0x91, 0x8e, 0x44, 0xae, 0x46, 0x62, 0xb5, 0x42, 0x23, 0x8c, 0xc2, 0x95, 0x76, 0xaa, 0xc3,
+	0xb0, 0x3e, 0x69, 0x99, 0x1a, 0x51, 0x32, 0xc7, 0x75, 0x06, 0xf3, 0x74, 0x35, 0x5b, 0xe0, 0x6d,
+	0xfc, 0xe2, 0xc2, 0x09, 0xa2, 0x57, 0xb0, 0xf7, 0xc1, 0x2d, 0xfe, 0x84, 0x85, 0x99, 0x4a, 0xd6,
+	0x83, 0x1d, 0x25, 0x43, 0xaf, 0xef, 0x0d, 0x3a, 0x7c, 0x47, 0x49, 0x76, 0x00, 0xbb, 0x39, 0x16,
+	0x26, 0x56, 0x32, 0xdc, 0x21, 0xb0, 0x95, 0x93, 0x30, 0xfa, 0xed, 0x41, 0xb0, 0x61, 0xdd, 0x32,
+	0x9e, 0x43, 0x1b, 0x67, 0x79, 0x6c, 0xd5, 0xe4, 0x0c, 0xc6, 0xfb, 0xc3, 0xcd, 0xfd, 0x15, 0xc9,
+	0x77, 0x71, 0x96, 0xd3, 0x84, 0x23, 0xe8, 0xb8, 0xc7, 0xdb, 0x65, 0x0d, 0x1a, 0xd4, 0x76, 0xc0,
+	0x54, 0xb2, 0xe7, 0xd0, 0x2b, 0x49, 0x8a, 0xb3, 0xc2, 0xb0, 0xd9, 0xf7, 0x06, 0x7b, 0xbc, 0xeb,
+	0x50, 0x3b, 0xe0, 0x23, 0xda, 0x11, 0x05, 0xa2, 0x71, 0x5b, 0xfd, 0xbe, 0x37, 0x68, 0xf3, 0xb6,
+	0x05, 0x68, 0xfe, 0x3b, 0xe8, 0x55, 0x4b, 0x63, 0x6d, 0x84, 0xd1, 0x61, 0x8b, 0x72, 0x1d, 0x3d,
+	0x98, 0xcb, 0x49, 0x78, 0xb7, 0x4c, 0xf7, 0xd9, 0x7e, 0x45, 0xaf, 0xa1, 0xbb, 0xf1, 0x66, 0xcd,
+	0x4e, 0xc0, 0x57, 0x26, 0x5d, 0xea, 0xd0, 0xeb, 0x37, 0x06, 0xc1, 0xf8, 0xc9, 0xd0, 0xf5, 0x3d,
+	0xdc, 0x10, 0x71, 0xa7, 0x88, 0x7e, 0x34, 0xee, 0xaa, 0xbe, 0xa4, 0xc8, 0x5b, 0x8d, 0x1d, 0x43,
+	0x20, 0x85, 0x11, 0xb9, 0x30, 0xf3, 0xaa, 0xee, 0x26, 0x87, 0x0a, 0x9a, 0x4a, 0x76, 0x02, 0x4d,
+	0x99, 0xea, 0x84, 0xba, 0x79, 0xa8, 0x4e, 0x4b, 0x72, 0x92, 0xb0, 0x29, 0x3c, 0xd6, 0xb7, 0xca,
+	0x24, 0xf3, 0x78, 0x96, 0x0a, 0xb3, 0x2e, 0x52, 0x4d, 0x7d, 0x05, 0xe3, 0xfe, 0x96, 0xeb, 0x9e,
+	0x8e, 0xf7, 0x1c, 0x70, 0x55, 0x7e, 0xdb, 0xe6, 0xa9, 0xd3, 0x7f, 0xb7, 0xf1, 0x29, 0x72, 0xd7,
+	0xa2, 0x97, 0xd5, 0x7d, 0x5e, 0x82, 0x6f, 0x5b, 0xd3, 0xe1, 0xd7, 0xff, 0x57, 0x31, 0xe9, 0xfc,
+	0xfa, 0xf3, 0xf3, 0x59, 0xd3, 0x3e, 0x9b, 0x3b, 0x35, 0x3b, 0x07, 0xdf, 0x66, 0xd1, 0xe1, 0x37,
+	0x8f, 0xe2, 0xb1, 0x5a, 0xbc, 0x2b, 0x4b, 0x4d, 0x7c, 0xeb, 0x7a, 0xc4, 0x9d, 0x90, 0xbd, 0x85,
+	0x80, 0xe8, 0xac, 0xc0, 0x75, 0xae, 0xc3, 0xef, 0xce, 0x77, 0xb0, 0xe5, 0x7b, 0x4f, 0x7c, 0x65,
+	0x86, 0xd9, 0x1d, 0x14, 0xbd, 0x81, 0x5e, 0xed, 0x10, 0x9a, 0x9d, 0xd6, 0xcf, 0xb8, 0x7f, 0x2f,
+	0xbb, 0x93, 0x95, 0x87, 0x9c, 0x9c, 0x7d, 0x39, 0xcd, 0x94, 0x99, 0xaf, 0xaf, 0x87, 0x09, 0x2e,
+	0xe9, 0x97, 0x4a, 0xb0, 0x90, 0x23, 0x67, 0x39, 0x2b, 0xff, 0xb4, 0x0c, 0x4b, 0xe0, 0xba, 0x45,
+	0xc8, 0xc5, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x23, 0x92, 0xcd, 0x9e, 0xef, 0x03, 0x00, 0x00,
 }
diff --git a/protos/voltha_protos/logical_device.proto b/protos/voltha_protos/logical_device.proto
index 6e3a233..f5e2fd8 100644
--- a/protos/voltha_protos/logical_device.proto
+++ b/protos/voltha_protos/logical_device.proto
@@ -22,6 +22,7 @@
     string device_id = 3;
     uint32 device_port_no = 4;
     bool root_port = 5;
+    openflow_13.ofp_port_stats ofp_port_stats = 6;
 }
 
 message LogicalPorts {