1/* 2 * Copyright (C) 2013 Realtek Semiconductor Corp. 3 * All Rights Reserved. 4 * 5 * This program is the proprietary software of Realtek Semiconductor 6 * Corporation and/or its licensors, and only be used, duplicated, 7 * modified or distributed under the authorized license from Realtek. 8 * 9 * ANY USE OF THE SOFTWARE OTHER THAN AS AUTHORIZED UNDER 10 * THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. 11 * 12 * Purpose : RTL8367/RTL8367C switch high-level API 13 * 14 * Feature : The file includes MIB module high-layer API defination 15 * 16 */ 17 18#ifndef __RTK_API_STAT_H__ 19#define __RTK_API_STAT_H__ 20 21/* 22 * Data Type Declaration 23 */ 24typedef rtk_u_long_t rtk_stat_counter_t; 25 26/* global statistic counter structure */ 27typedef struct rtk_stat_global_cntr_s 28{ 29 rtk_uint64 dot1dTpLearnedEntryDiscards; 30}rtk_stat_global_cntr_t; 31 32typedef enum rtk_stat_global_type_e 33{ 34 DOT1D_TP_LEARNED_ENTRY_DISCARDS_INDEX = 58, 35 MIB_GLOBAL_CNTR_END 36}rtk_stat_global_type_t; 37 38/* port statistic counter structure */ 39typedef struct rtk_stat_port_cntr_s 40{ 41 rtk_uint64 ifInOctets; 42 rtk_uint32 dot3StatsFCSErrors; 43 rtk_uint32 dot3StatsSymbolErrors; 44 rtk_uint32 dot3InPauseFrames; 45 rtk_uint32 dot3ControlInUnknownOpcodes; 46 rtk_uint32 etherStatsFragments; 47 rtk_uint32 etherStatsJabbers; 48 rtk_uint32 ifInUcastPkts; 49 rtk_uint32 etherStatsDropEvents; 50 rtk_uint64 etherStatsOctets; 51 rtk_uint32 etherStatsUndersizePkts; 52 rtk_uint32 etherStatsOversizePkts; 53 rtk_uint32 etherStatsPkts64Octets; 54 rtk_uint32 etherStatsPkts65to127Octets; 55 rtk_uint32 etherStatsPkts128to255Octets; 56 rtk_uint32 etherStatsPkts256to511Octets; 57 rtk_uint32 etherStatsPkts512to1023Octets; 58 rtk_uint32 etherStatsPkts1024toMaxOctets; 59 rtk_uint32 etherStatsMcastPkts; 60 rtk_uint32 etherStatsBcastPkts; 61 rtk_uint64 ifOutOctets; 62 rtk_uint32 dot3StatsSingleCollisionFrames; 63 rtk_uint32 dot3StatsMultipleCollisionFrames; 64 rtk_uint32 dot3StatsDeferredTransmissions; 65 rtk_uint32 dot3StatsLateCollisions; 66 rtk_uint32 etherStatsCollisions; 67 rtk_uint32 dot3StatsExcessiveCollisions; 68 rtk_uint32 dot3OutPauseFrames; 69 rtk_uint32 dot1dBasePortDelayExceededDiscards; 70 rtk_uint32 dot1dTpPortInDiscards; 71 rtk_uint32 ifOutUcastPkts; 72 rtk_uint32 ifOutMulticastPkts; 73 rtk_uint32 ifOutBrocastPkts; 74 rtk_uint32 outOampduPkts; 75 rtk_uint32 inOampduPkts; 76 rtk_uint32 pktgenPkts; 77 rtk_uint32 inMldChecksumError; 78 rtk_uint32 inIgmpChecksumError; 79 rtk_uint32 inMldSpecificQuery; 80 rtk_uint32 inMldGeneralQuery; 81 rtk_uint32 inIgmpSpecificQuery; 82 rtk_uint32 inIgmpGeneralQuery; 83 rtk_uint32 inMldLeaves; 84 rtk_uint32 inIgmpLeaves; 85 rtk_uint32 inIgmpJoinsSuccess; 86 rtk_uint32 inIgmpJoinsFail; 87 rtk_uint32 inMldJoinsSuccess; 88 rtk_uint32 inMldJoinsFail; 89 rtk_uint32 inReportSuppressionDrop; 90 rtk_uint32 inLeaveSuppressionDrop; 91 rtk_uint32 outIgmpReports; 92 rtk_uint32 outIgmpLeaves; 93 rtk_uint32 outIgmpGeneralQuery; 94 rtk_uint32 outIgmpSpecificQuery; 95 rtk_uint32 outMldReports; 96 rtk_uint32 outMldLeaves; 97 rtk_uint32 outMldGeneralQuery; 98 rtk_uint32 outMldSpecificQuery; 99 rtk_uint32 inKnownMulticastPkts; 100 rtk_uint32 ifInMulticastPkts; 101 rtk_uint32 ifInBroadcastPkts; 102 rtk_uint32 ifOutDiscards; 103}rtk_stat_port_cntr_t; 104 105/* port statistic counter index */ 106typedef enum rtk_stat_port_type_e 107{ 108 STAT_IfInOctets = 0, 109 STAT_Dot3StatsFCSErrors, 110 STAT_Dot3StatsSymbolErrors, 111 STAT_Dot3InPauseFrames, 112 STAT_Dot3ControlInUnknownOpcodes, 113 STAT_EtherStatsFragments, 114 STAT_EtherStatsJabbers, 115 STAT_IfInUcastPkts, 116 STAT_EtherStatsDropEvents, 117 STAT_EtherStatsOctets, 118 STAT_EtherStatsUnderSizePkts, 119 STAT_EtherOversizeStats, 120 STAT_EtherStatsPkts64Octets, 121 STAT_EtherStatsPkts65to127Octets, 122 STAT_EtherStatsPkts128to255Octets, 123 STAT_EtherStatsPkts256to511Octets, 124 STAT_EtherStatsPkts512to1023Octets, 125 STAT_EtherStatsPkts1024to1518Octets, 126 STAT_EtherStatsMulticastPkts, 127 STAT_EtherStatsBroadcastPkts, 128 STAT_IfOutOctets, 129 STAT_Dot3StatsSingleCollisionFrames, 130 STAT_Dot3StatsMultipleCollisionFrames, 131 STAT_Dot3StatsDeferredTransmissions, 132 STAT_Dot3StatsLateCollisions, 133 STAT_EtherStatsCollisions, 134 STAT_Dot3StatsExcessiveCollisions, 135 STAT_Dot3OutPauseFrames, 136 STAT_Dot1dBasePortDelayExceededDiscards, 137 STAT_Dot1dTpPortInDiscards, 138 STAT_IfOutUcastPkts, 139 STAT_IfOutMulticastPkts, 140 STAT_IfOutBroadcastPkts, 141 STAT_OutOampduPkts, 142 STAT_InOampduPkts, 143 STAT_PktgenPkts, 144 STAT_InMldChecksumError, 145 STAT_InIgmpChecksumError, 146 STAT_InMldSpecificQuery, 147 STAT_InMldGeneralQuery, 148 STAT_InIgmpSpecificQuery, 149 STAT_InIgmpGeneralQuery, 150 STAT_InMldLeaves, 151 STAT_InIgmpInterfaceLeaves, 152 STAT_InIgmpJoinsSuccess, 153 STAT_InIgmpJoinsFail, 154 STAT_InMldJoinsSuccess, 155 STAT_InMldJoinsFail, 156 STAT_InReportSuppressionDrop, 157 STAT_InLeaveSuppressionDrop, 158 STAT_OutIgmpReports, 159 STAT_OutIgmpLeaves, 160 STAT_OutIgmpGeneralQuery, 161 STAT_OutIgmpSpecificQuery, 162 STAT_OutMldReports, 163 STAT_OutMldLeaves, 164 STAT_OutMldGeneralQuery, 165 STAT_OutMldSpecificQuery, 166 STAT_InKnownMulticastPkts, 167 STAT_IfInMulticastPkts, 168 STAT_IfInBroadcastPkts, 169 STAT_IfOutDiscards, 170 STAT_PORT_CNTR_END 171}rtk_stat_port_type_t; 172 173typedef enum rtk_logging_counter_mode_e 174{ 175 LOGGING_MODE_32BIT = 0, 176 LOGGING_MODE_64BIT, 177 LOGGING_MODE_END 178}rtk_logging_counter_mode_t; 179 180typedef enum rtk_logging_counter_type_e 181{ 182 LOGGING_TYPE_PACKET = 0, 183 LOGGING_TYPE_BYTE, 184 LOGGING_TYPE_END 185}rtk_logging_counter_type_t; 186 187typedef enum rtk_stat_lengthMode_e 188{ 189 LENGTH_MODE_EXC_TAG = 0, 190 LENGTH_MODE_INC_TAG, 191 LENGTH_MODE_END 192}rtk_stat_lengthMode_t; 193 194 195 196/* Function Name: 197 * rtk_stat_global_reset 198 * Description: 199 * Reset global MIB counter. 200 * Input: 201 * None 202 * Output: 203 * None 204 * Return: 205 * RT_ERR_OK - OK 206 * RT_ERR_FAILED - Failed 207 * RT_ERR_SMI - SMI access error 208 * Note: 209 * Reset MIB counter of ports. API will use global reset while port mask is all-ports. 210 */ 211extern rtk_api_ret_t rtk_stat_global_reset(void); 212 213/* Function Name: 214 * rtk_stat_port_reset 215 * Description: 216 * Reset per port MIB counter by port. 217 * Input: 218 * port - port id. 219 * Output: 220 * None 221 * Return: 222 * RT_ERR_OK - OK 223 * RT_ERR_FAILED - Failed 224 * RT_ERR_SMI - SMI access error 225 * Note: 226 * 227 */ 228extern rtk_api_ret_t rtk_stat_port_reset(rtk_port_t port); 229 230/* Function Name: 231 * rtk_stat_queueManage_reset 232 * Description: 233 * Reset queue manage MIB counter. 234 * Input: 235 * None 236 * Output: 237 * None 238 * Return: 239 * RT_ERR_OK - OK 240 * RT_ERR_FAILED - Failed 241 * RT_ERR_SMI - SMI access error 242 * Note: 243 * 244 */ 245extern rtk_api_ret_t rtk_stat_queueManage_reset(void); 246 247/* Function Name: 248 * rtk_stat_global_get 249 * Description: 250 * Get global MIB counter 251 * Input: 252 * cntr_idx - global counter index. 253 * Output: 254 * pCntr - global counter value. 255 * Return: 256 * RT_ERR_OK - OK 257 * RT_ERR_FAILED - Failed 258 * RT_ERR_SMI - SMI access error 259 * RT_ERR_INPUT - Invalid input parameters. 260 * Note: 261 * Get global MIB counter by index definition. 262 */ 263extern rtk_api_ret_t rtk_stat_global_get(rtk_stat_global_type_t cntr_idx, rtk_stat_counter_t *pCntr); 264 265/* Function Name: 266 * rtk_stat_global_getAll 267 * Description: 268 * Get all global MIB counter 269 * Input: 270 * None 271 * Output: 272 * pGlobal_cntrs - global counter structure. 273 * Return: 274 * RT_ERR_OK - OK 275 * RT_ERR_FAILED - Failed 276 * RT_ERR_SMI - SMI access error 277 * RT_ERR_INPUT - Invalid input parameters. 278 * Note: 279 * Get all global MIB counter by index definition. 280 */ 281extern rtk_api_ret_t rtk_stat_global_getAll(rtk_stat_global_cntr_t *pGlobal_cntrs); 282 283/* Function Name: 284 * rtk_stat_port_get 285 * Description: 286 * Get per port MIB counter by index 287 * Input: 288 * port - port id. 289 * cntr_idx - port counter index. 290 * Output: 291 * pCntr - MIB retrived counter. 292 * Return: 293 * RT_ERR_OK - OK 294 * RT_ERR_FAILED - Failed 295 * RT_ERR_SMI - SMI access error 296 * Note: 297 * Get per port MIB counter by index definition. 298 */ 299extern rtk_api_ret_t rtk_stat_port_get(rtk_port_t port, rtk_stat_port_type_t cntr_idx, rtk_stat_counter_t *pCntr); 300 301/* Function Name: 302 * rtk_stat_port_getAll 303 * Description: 304 * Get all counters of one specified port in the specified device. 305 * Input: 306 * port - port id. 307 * Output: 308 * pPort_cntrs - buffer pointer of counter value. 309 * Return: 310 * RT_ERR_OK - OK 311 * RT_ERR_FAILED - Failed 312 * RT_ERR_SMI - SMI access error 313 * RT_ERR_INPUT - Invalid input parameters. 314 * Note: 315 * Get all MIB counters of one port. 316 */ 317extern rtk_api_ret_t rtk_stat_port_getAll(rtk_port_t port, rtk_stat_port_cntr_t *pPort_cntrs); 318 319/* Function Name: 320 * rtk_stat_logging_counterCfg_set 321 * Description: 322 * Set the type and mode of Logging Counter 323 * Input: 324 * idx - The index of Logging Counter. Should be even number only.(0,2,4,6,8.....30) 325 * mode - 32 bits or 64 bits mode 326 * type - Packet counter or byte counter 327 * Output: 328 * None. 329 * Return: 330 * RT_ERR_OK - OK 331 * RT_ERR_OUT_OF_RANGE - Out of range. 332 * RT_ERR_FAILED - Failed 333 * RT_ERR_SMI - SMI access error 334 * RT_ERR_INPUT - Invalid input parameters. 335 * Note: 336 * Set the type and mode of Logging Counter. 337 */ 338extern rtk_api_ret_t rtk_stat_logging_counterCfg_set(rtk_uint32 idx, rtk_logging_counter_mode_t mode, rtk_logging_counter_type_t type); 339 340/* Function Name: 341 * rtk_stat_logging_counterCfg_get 342 * Description: 343 * Get the type and mode of Logging Counter 344 * Input: 345 * idx - The index of Logging Counter. Should be even number only.(0,2,4,6,8.....30) 346 * Output: 347 * pMode - 32 bits or 64 bits mode 348 * pType - Packet counter or byte counter 349 * Return: 350 * RT_ERR_OK - OK 351 * RT_ERR_OUT_OF_RANGE - Out of range. 352 * RT_ERR_FAILED - Failed 353 * RT_ERR_NULL_POINTER - NULL Pointer 354 * RT_ERR_SMI - SMI access error 355 * RT_ERR_INPUT - Invalid input parameters. 356 * Note: 357 * Get the type and mode of Logging Counter. 358 */ 359extern rtk_api_ret_t rtk_stat_logging_counterCfg_get(rtk_uint32 idx, rtk_logging_counter_mode_t *pMode, rtk_logging_counter_type_t *pType); 360 361/* Function Name: 362 * rtk_stat_logging_counter_reset 363 * Description: 364 * Reset Logging Counter 365 * Input: 366 * idx - The index of Logging Counter. (0~31) 367 * Output: 368 * None. 369 * Return: 370 * RT_ERR_OK - OK 371 * RT_ERR_OUT_OF_RANGE - Out of range. 372 * RT_ERR_FAILED - Failed 373 * RT_ERR_SMI - SMI access error 374 * Note: 375 * Reset Logging Counter. 376 */ 377extern rtk_api_ret_t rtk_stat_logging_counter_reset(rtk_uint32 idx); 378 379/* Function Name: 380 * rtk_stat_logging_counter_get 381 * Description: 382 * Get Logging Counter 383 * Input: 384 * idx - The index of Logging Counter. (0~31) 385 * Output: 386 * pCnt - Logging counter value 387 * Return: 388 * RT_ERR_OK - OK 389 * RT_ERR_OUT_OF_RANGE - Out of range. 390 * RT_ERR_FAILED - Failed 391 * RT_ERR_SMI - SMI access error 392 * Note: 393 * Get Logging Counter. 394 */ 395extern rtk_api_ret_t rtk_stat_logging_counter_get(rtk_uint32 idx, rtk_uint32 *pCnt); 396 397/* Function Name: 398 * rtk_stat_lengthMode_set 399 * Description: 400 * Set Legnth mode. 401 * Input: 402 * txMode - The length counting mode 403 * rxMode - The length counting mode 404 * Output: 405 * None. 406 * Return: 407 * RT_ERR_OK - OK 408 * RT_ERR_INPUT - Out of range. 409 * RT_ERR_FAILED - Failed 410 * RT_ERR_SMI - SMI access error 411 * Note: 412 * 413 */ 414extern rtk_api_ret_t rtk_stat_lengthMode_set(rtk_stat_lengthMode_t txMode, rtk_stat_lengthMode_t rxMode); 415 416/* Function Name: 417 * rtk_stat_lengthMode_get 418 * Description: 419 * Get Legnth mode. 420 * Input: 421 * None. 422 * Output: 423 * pTxMode - The length counting mode 424 * pRxMode - The length counting mode 425 * Return: 426 * RT_ERR_OK - OK 427 * RT_ERR_INPUT - Out of range. 428 * RT_ERR_FAILED - Failed 429 * RT_ERR_SMI - SMI access error 430 * Note: 431 */ 432extern rtk_api_ret_t rtk_stat_lengthMode_get(rtk_stat_lengthMode_t *pTxMode, rtk_stat_lengthMode_t *pRxMode); 433 434#endif /* __RTK_API_STAT_H__ */ 435 436