13998e2a0SBruce Richardson /* SPDX-License-Identifier: BSD-3-Clause 23998e2a0SBruce Richardson * Copyright(c) 2010-2014 Intel Corporation 3e6541fdeSIntel */ 4e6541fdeSIntel 5e6541fdeSIntel #ifndef _MAIN_H_ 6e6541fdeSIntel #define _MAIN_H_ 7e6541fdeSIntel 8fc8a10d8SIntel enum policer_action { 9fc8a10d8SIntel GREEN = e_RTE_METER_GREEN, 10fc8a10d8SIntel YELLOW = e_RTE_METER_YELLOW, 11fc8a10d8SIntel RED = e_RTE_METER_RED, 12fc8a10d8SIntel DROP = 3, 13fc8a10d8SIntel }; 14fc8a10d8SIntel 15fc8a10d8SIntel enum policer_action policer_table[e_RTE_METER_COLORS][e_RTE_METER_COLORS] = 16fc8a10d8SIntel { 17fc8a10d8SIntel { GREEN, RED, RED}, 18fc8a10d8SIntel { DROP, YELLOW, RED}, 19fc8a10d8SIntel { DROP, DROP, RED} 20fc8a10d8SIntel }; 21fc8a10d8SIntel 22e6541fdeSIntel #if APP_MODE == APP_MODE_FWD 23e6541fdeSIntel 24*c06ddf96SCristian Dumitrescu #define FUNC_METER(m, p, time, pkt_len, pkt_color) \ 25*c06ddf96SCristian Dumitrescu ({ \ 26*c06ddf96SCristian Dumitrescu void *mp = m; \ 27*c06ddf96SCristian Dumitrescu void *pp = p; \ 28*c06ddf96SCristian Dumitrescu mp = mp; \ 29*c06ddf96SCristian Dumitrescu pp = pp; \ 30*c06ddf96SCristian Dumitrescu time = time; \ 31*c06ddf96SCristian Dumitrescu pkt_len = pkt_len; \ 32*c06ddf96SCristian Dumitrescu pkt_color; \ 33*c06ddf96SCristian Dumitrescu }) 34e752649cSSlawomir Mrozowicz #define FUNC_CONFIG(a, b) 0 35e6541fdeSIntel #define FLOW_METER int 36*c06ddf96SCristian Dumitrescu #define PROFILE app_srtcm_profile 37e6541fdeSIntel 38e6541fdeSIntel #elif APP_MODE == APP_MODE_SRTCM_COLOR_BLIND 39e6541fdeSIntel 40*c06ddf96SCristian Dumitrescu #define FUNC_METER(m, p, time, pkt_len, pkt_color) \ 41*c06ddf96SCristian Dumitrescu rte_meter_srtcm_color_blind_check(m, p, time, pkt_len) 42e6541fdeSIntel #define FUNC_CONFIG rte_meter_srtcm_config 43e6541fdeSIntel #define FLOW_METER struct rte_meter_srtcm 44*c06ddf96SCristian Dumitrescu #define PROFILE app_srtcm_profile 45e6541fdeSIntel 46e6541fdeSIntel #elif (APP_MODE == APP_MODE_SRTCM_COLOR_AWARE) 47e6541fdeSIntel 48e6541fdeSIntel #define FUNC_METER rte_meter_srtcm_color_aware_check 49e6541fdeSIntel #define FUNC_CONFIG rte_meter_srtcm_config 50e6541fdeSIntel #define FLOW_METER struct rte_meter_srtcm 51*c06ddf96SCristian Dumitrescu #define PROFILE app_srtcm_profile 52e6541fdeSIntel 53e6541fdeSIntel #elif (APP_MODE == APP_MODE_TRTCM_COLOR_BLIND) 54e6541fdeSIntel 55*c06ddf96SCristian Dumitrescu #define FUNC_METER(m, p, time, pkt_len, pkt_color) \ 56*c06ddf96SCristian Dumitrescu rte_meter_trtcm_color_blind_check(m, p, time, pkt_len) 57e6541fdeSIntel #define FUNC_CONFIG rte_meter_trtcm_config 58e6541fdeSIntel #define FLOW_METER struct rte_meter_trtcm 59*c06ddf96SCristian Dumitrescu #define PROFILE app_trtcm_profile 60e6541fdeSIntel 61e6541fdeSIntel #elif (APP_MODE == APP_MODE_TRTCM_COLOR_AWARE) 62e6541fdeSIntel 63e6541fdeSIntel #define FUNC_METER rte_meter_trtcm_color_aware_check 64e6541fdeSIntel #define FUNC_CONFIG rte_meter_trtcm_config 65e6541fdeSIntel #define FLOW_METER struct rte_meter_trtcm 66*c06ddf96SCristian Dumitrescu #define PROFILE app_trtcm_profile 67e6541fdeSIntel 68e6541fdeSIntel #else 69e6541fdeSIntel #error Invalid value for APP_MODE 70e6541fdeSIntel #endif 71e6541fdeSIntel 72e6541fdeSIntel #endif /* _MAIN_H_ */ 73