| /* |
| ** Copyright 2017-present Open Networking Foundation |
| ** |
| ** 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. |
| */ |
| |
| #include "bal_stats_hdlr.h" |
| |
| #define BAL_STAT_PRES 1 |
| |
| /********************************************************************\ |
| * Function : asfvolt16_bal_stats_get * |
| * Description : Function to get stats based on * |
| * interface type(NNI/PON/EPON 1G/EPON 10G) * |
| * port number * |
| ********************************************************************/ |
| uint32_t asfvolt16_bal_stats_get(BalIntfType intf_type, uint32_t intf_id, BalInterfaceStatData *statData) |
| { |
| bcmbal_interface_stat interface_stats; |
| |
| bcmos_errno err = BCM_ERR_OK; |
| |
| ASFVOLT_LOG(ASFVOLT_DEBUG, "Get Stats from OLT intf_type %d\n",intf_type); |
| |
| if(intf_type!=BAL_INTF_TYPE__BAL_INTF_TYPE_NNI && intf_type!=BAL_INTF_TYPE__BAL_INTF_TYPE_PON && |
| intf_type!=BAL_INTF_TYPE__BAL_INTF_TYPE_EPON_1G_PATH && |
| intf_type!=BAL_INTF_TYPE__BAL_INTF_TYPE_EPON_10G_PATH) |
| { |
| return BCM_ERR_PARM; |
| } |
| |
| bcmbal_interface_key key = { .intf_id = intf_id, .intf_type = intf_type }; |
| |
| /* Prepare to retrieve stat on NNI interface 0 */ |
| BCMBAL_STAT_INIT(&interface_stats, interface, key); |
| |
| /* Retrieve the Upstream packet and byte counts */ |
| BCMBAL_STAT_PROP_GET(&interface_stats, interface, all_properties); |
| ASFVOLT_LOG(ASFVOLT_DEBUG, "Retrieve the Upstream packet and byte count success\n"); |
| |
| /* Read the NNI stats. |
| * NOTE: When a CLEAR is specified during a NNI stats GET operation, |
| * all of the NNI stats are cleared, even the ones that are not retrieved. |
| */ |
| err = bcmbal_stat_get(DEFAULT_ATERM_ID, &interface_stats.hdr, BCMOS_TRUE); |
| |
| if(err == BCM_ERR_OK) |
| { |
| statData->has_rx_bytes = BAL_STAT_PRES; |
| statData->rx_bytes = interface_stats.data.rx_bytes; |
| statData->has_rx_packets = BAL_STAT_PRES; |
| statData->rx_packets = interface_stats.data.rx_packets; |
| statData->has_rx_ucast_packets = BAL_STAT_PRES; |
| statData->rx_ucast_packets = interface_stats.data.rx_ucast_packets; |
| statData->has_rx_mcast_packets = BAL_STAT_PRES; |
| statData->rx_mcast_packets = interface_stats.data.rx_mcast_packets; |
| statData->has_rx_bcast_packets = BAL_STAT_PRES; |
| statData->rx_bcast_packets = interface_stats.data.rx_bcast_packets; |
| statData->has_rx_error_packets = BAL_STAT_PRES; |
| statData->rx_error_packets = interface_stats.data.rx_error_packets; |
| statData->has_rx_unknown_protos = BAL_STAT_PRES; |
| statData->rx_unknown_protos = interface_stats.data.rx_unknown_protos; |
| statData->has_tx_bytes = BAL_STAT_PRES; |
| statData->tx_bytes = interface_stats.data.tx_bytes; |
| statData->has_tx_packets = BAL_STAT_PRES; |
| statData->tx_packets = interface_stats.data.tx_packets; |
| statData->has_tx_ucast_packets = BAL_STAT_PRES; |
| statData->tx_ucast_packets = interface_stats.data.tx_ucast_packets; |
| statData->has_tx_mcast_packets = BAL_STAT_PRES; |
| statData->tx_mcast_packets = interface_stats.data.tx_mcast_packets; |
| statData->has_tx_bcast_packets = BAL_STAT_PRES; |
| statData->tx_bcast_packets = interface_stats.data.tx_bcast_packets; |
| statData->has_tx_error_packets = BAL_STAT_PRES; |
| statData->tx_error_packets = interface_stats.data.tx_error_packets; |
| statData->has_rx_crc_errors = BAL_STAT_PRES; |
| statData->rx_crc_errors = interface_stats.data.rx_crc_errors; |
| statData->has_bip_errors = BAL_STAT_PRES; |
| statData->bip_errors = interface_stats.data.bip_errors; |
| } |
| |
| return err; |
| } |