[VOL-2366] OLT Agent: different packet stats retrieval
Change-Id: Ic121842a5bc0d91b13d2c457608b7366d000cdaa

Change-Id: I148cc24d2b74e625cb789edb638a357e0b1cb16b
diff --git a/VERSION b/VERSION
index fd2a018..8d70082 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.1.0
+3.1.1-dev
diff --git a/agent/Makefile.in b/agent/Makefile.in
index 7512d1e..18da811 100644
--- a/agent/Makefile.in
+++ b/agent/Makefile.in
@@ -42,7 +42,7 @@
 # This specifies the GIT tag in https://github.com/opencord/voltha-protos
 # repo that we need to refer to, to pick the right version of
 # openolt.proto and tech_profile.proto
-OPENOLT_PROTO_VER ?= v4.0.2
+OPENOLT_PROTO_VER ?= v4.0.3
 
 # Variables used for Inband build
 INBAND = "n"
diff --git a/agent/src/stats_collection.cc b/agent/src/stats_collection.cc
index 5b7063a..11766c7 100644
--- a/agent/src/stats_collection.cc
+++ b/agent/src/stats_collection.cc
@@ -49,13 +49,35 @@
     port_stats->set_rx_mcast_packets(-1);
     port_stats->set_rx_bcast_packets(-1);
     port_stats->set_rx_error_packets(-1);
+    port_stats->set_rx_crc_errors(-1);
+    port_stats->set_rx_frames(-1);
+    port_stats->set_rx_frames_64(-1);
+    port_stats->set_rx_frames_65_127(-1);
+    port_stats->set_rx_frames_128_255(-1);
+    port_stats->set_rx_frames_256_511(-1);
+    port_stats->set_rx_frames_512_1023(-1);
+    port_stats->set_rx_frames_1024_1518(-1);
+    port_stats->set_rx_frames_1519_2047(-1);
+    port_stats->set_rx_frames_2048_4095(-1);
+    port_stats->set_rx_frames_4096_9216(-1);
+    port_stats->set_rx_frames_9217_16383(-1);
     port_stats->set_tx_bytes(-1);
     port_stats->set_tx_packets(-1);
     port_stats->set_tx_ucast_packets(-1);
     port_stats->set_tx_mcast_packets(-1);
     port_stats->set_tx_bcast_packets(-1);
     port_stats->set_tx_error_packets(-1);
-    port_stats->set_rx_crc_errors(-1);
+    port_stats->set_tx_frames(-1);
+    port_stats->set_tx_frames_64(-1);
+    port_stats->set_tx_frames_65_127(-1);
+    port_stats->set_tx_frames_128_255(-1);
+    port_stats->set_tx_frames_256_511(-1);
+    port_stats->set_tx_frames_512_1023(-1);
+    port_stats->set_tx_frames_1024_1518(-1);
+    port_stats->set_tx_frames_1519_2047(-1);
+    port_stats->set_tx_frames_2048_4095(-1);
+    port_stats->set_tx_frames_4096_9216(-1);
+    port_stats->set_tx_frames_9217_16383(-1);
     port_stats->set_bip_errors(-1);
 
     return port_stats;
@@ -81,8 +103,8 @@
     bcmos_errno err;
     bcmolt_stat_flags clear_on_read = BCMOLT_STAT_FLAGS_NONE;
     bcmolt_nni_interface_stats nni_stats;
-    bcmolt_onu_itu_pon_stats pon_stats;
     bcmolt_pon_interface_itu_pon_stats itu_pon_stats;
+    bcmolt_internal_nni_enet_stats enet_stat;
 
     switch (intf_ref.intf_type) {
         case BCMOLT_INTERFACE_TYPE_NNI:
@@ -97,12 +119,33 @@
             BCMOLT_MSG_FIELD_GET(&nni_stats, rx_mcast_packets);
             BCMOLT_MSG_FIELD_GET(&nni_stats, rx_bcast_packets);
             BCMOLT_MSG_FIELD_GET(&nni_stats, rx_error_packets);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, rx_frames_64);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, rx_frames_65_127);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, rx_frames_128_255);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, rx_frames_256_511);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, rx_frames_512_1023);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, rx_frames_1024_1518);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, rx_frames_1519_2047);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, rx_frames_2048_4095);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, rx_frames_4096_9216);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, rx_frames_9217_16383);
+
             BCMOLT_MSG_FIELD_GET(&nni_stats, tx_bytes);
             BCMOLT_MSG_FIELD_GET(&nni_stats, tx_packets);
             BCMOLT_MSG_FIELD_GET(&nni_stats, tx_ucast_packets);
             BCMOLT_MSG_FIELD_GET(&nni_stats, tx_mcast_packets);
             BCMOLT_MSG_FIELD_GET(&nni_stats, tx_bcast_packets);
             BCMOLT_MSG_FIELD_GET(&nni_stats, tx_error_packets);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, tx_frames_64);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, tx_frames_65_127);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, tx_frames_128_255);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, tx_frames_256_511);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, tx_frames_512_1023);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, tx_frames_1024_1518);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, tx_frames_1519_2047);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, tx_frames_2048_4095);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, tx_frames_4096_9216);
+            BCMOLT_MSG_FIELD_GET(&nni_stats, tx_frames_9217_16383);
 
             /* call API */
             err = bcmolt_stat_get((bcmolt_oltid)device_id, &nni_stats.hdr, clear_on_read);
@@ -149,20 +192,64 @@
                 OPENOLT_LOG(ERROR, openolt_log_id,  "Failed to retrieve port statistics, intf_id %d, intf_type %d, err = %s\n",
                     (int)intf_ref.intf_id, (int)intf_ref.intf_type, bcmos_strerror(err));
             }
+
             {
-                bcmolt_onu_key key;
+                bcmolt_internal_nni_key key = {};
                 key.pon_ni = (bcmolt_interface)intf_ref.intf_id;
-                BCMOLT_STAT_INIT(&pon_stats, onu, itu_pon_stats, key);
-                BCMOLT_MSG_FIELD_GET(&pon_stats, rx_bytes);
-                BCMOLT_MSG_FIELD_GET(&pon_stats, rx_packets);
-                BCMOLT_MSG_FIELD_GET(&pon_stats, tx_bytes);
+                BCMOLT_STAT_INIT(&enet_stat, internal_nni, enet_stats, key);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_bytes);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_frames);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_frames_64);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_frames_65_127);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_frames_128_255);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_frames_256_511);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_frames_512_1023);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_frames_1024_1518);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_frames_1519_2047);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_frames_2048_4095);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_frames_4096_9216);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, rx_frames_9217_16383);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_bytes);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_frames);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_frames_64);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_frames_65_127);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_frames_128_255);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_frames_256_511);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_frames_512_1023);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_frames_1024_1518);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_frames_1519_2047);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_frames_2048_4095);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_frames_4096_9216);
+                BCMOLT_FIELD_SET_PRESENT(&enet_stat.data, internal_nni_enet_stats_data, tx_frames_9217_16383);
 
                 /* call API */
-                err = bcmolt_stat_get((bcmolt_oltid)device_id, &pon_stats.hdr, clear_on_read);
+                err = bcmolt_stat_get((bcmolt_oltid)device_id, &enet_stat.hdr, clear_on_read);
                 if (err == BCM_ERR_OK) {
-                    port_stats->set_rx_bytes(pon_stats.data.rx_bytes);
-                    port_stats->set_rx_packets(pon_stats.data.rx_packets);
-                    port_stats->set_tx_bytes(pon_stats.data.tx_bytes);
+                    port_stats->set_rx_bytes(enet_stat.data.rx_bytes);
+                    port_stats->set_rx_packets(enet_stat.data.rx_frames);
+                    port_stats->set_rx_packets(enet_stat.data.rx_frames_64);
+                    port_stats->set_rx_packets(enet_stat.data.rx_frames_65_127);
+                    port_stats->set_rx_packets(enet_stat.data.rx_frames_128_255);
+                    port_stats->set_rx_packets(enet_stat.data.rx_frames_256_511);
+                    port_stats->set_rx_packets(enet_stat.data.rx_frames_512_1023);
+                    port_stats->set_rx_packets(enet_stat.data.rx_frames_1024_1518);
+                    port_stats->set_rx_packets(enet_stat.data.rx_frames_1519_2047);
+                    port_stats->set_rx_packets(enet_stat.data.rx_frames_2048_4095);
+                    port_stats->set_rx_packets(enet_stat.data.rx_frames_4096_9216);
+                    port_stats->set_rx_packets(enet_stat.data.rx_frames_9217_16383);
+
+                    port_stats->set_tx_bytes(enet_stat.data.tx_bytes);
+                    port_stats->set_rx_packets(enet_stat.data.tx_frames);
+                    port_stats->set_rx_packets(enet_stat.data.tx_frames_64);
+                    port_stats->set_rx_packets(enet_stat.data.tx_frames_65_127);
+                    port_stats->set_rx_packets(enet_stat.data.tx_frames_128_255);
+                    port_stats->set_rx_packets(enet_stat.data.tx_frames_256_511);
+                    port_stats->set_rx_packets(enet_stat.data.tx_frames_512_1023);
+                    port_stats->set_rx_packets(enet_stat.data.tx_frames_1024_1518);
+                    port_stats->set_rx_packets(enet_stat.data.tx_frames_1519_2047);
+                    port_stats->set_rx_packets(enet_stat.data.tx_frames_2048_4095);
+                    port_stats->set_rx_packets(enet_stat.data.tx_frames_4096_9216);
+                    port_stats->set_rx_packets(enet_stat.data.tx_frames_9217_16383);
                 } else {
                     OPENOLT_LOG(ERROR, openolt_log_id,  "Failed to retrieve port statistics, intf_id %d, intf_type %d, err = %s\n",
                         (int)intf_ref.intf_id, (int)intf_ref.intf_type, bcmos_strerror(err));
diff --git a/agent/test/Makefile b/agent/test/Makefile
index 56bcce7..5245f03 100644
--- a/agent/test/Makefile
+++ b/agent/test/Makefile
@@ -21,7 +21,7 @@
 TOP_DIR=`pwd`
 OPENOLTDEVICE ?= asfvolt16
 
-OPENOLT_PROTO_VER ?= v4.0.2
+OPENOLT_PROTO_VER ?= v4.0.3
 
 ########################################################################
 ##
diff --git a/protos/Makefile b/protos/Makefile
index 2618db3..0cf8a72 100644
--- a/protos/Makefile
+++ b/protos/Makefile
@@ -19,7 +19,7 @@
 # This specifies the GIT tag in https://github.com/opencord/voltha-protos
 # repo that we need to refer to, to pick the right version of
 # openolt.proto, ext_config.proto and tech_profile.proto
-OPENOLT_PROTO_VER ?= v4.0.2
+OPENOLT_PROTO_VER ?= v4.0.3
 
 CXX ?= g++
 CPPFLAGS += `pkg-config --cflags protobuf grpc` -I googleapis/gens -I./