From 1bd9b61222f3a81ffe770fc00b70ded6e760c42b Mon Sep 17 00:00:00 2001 From: Christian Ehrhardt Date: Fri, 1 Jun 2018 09:09:08 +0200 Subject: New upstream version 18.05 Change-Id: Icd4170ddc4f63aeae5d0559490e5195b5349f9c2 Signed-off-by: Christian Ehrhardt --- examples/qos_meter/Makefile | 3 +++ examples/qos_meter/main.c | 39 ++++++++++++++++++++++++++++++--------- examples/qos_meter/main.h | 32 ++++++++++++++++++++------------ examples/qos_meter/meson.build | 1 + 4 files changed, 54 insertions(+), 21 deletions(-) (limited to 'examples/qos_meter') diff --git a/examples/qos_meter/Makefile b/examples/qos_meter/Makefile index 69ac6617..6da24076 100644 --- a/examples/qos_meter/Makefile +++ b/examples/qos_meter/Makefile @@ -23,6 +23,8 @@ CFLAGS += -O3 $(shell pkg-config --cflags libdpdk) LDFLAGS_SHARED = $(shell pkg-config --libs libdpdk) LDFLAGS_STATIC = -Wl,-Bstatic $(shell pkg-config --static --libs libdpdk) +CFLAGS += -DALLOW_EXPERIMENTAL_API + build/$(APP)-shared: $(SRCS-y) Makefile $(PC_FILE) | build $(CC) $(CFLAGS) $(SRCS-y) -o $@ $(LDFLAGS) $(LDFLAGS_SHARED) @@ -48,6 +50,7 @@ RTE_TARGET ?= x86_64-native-linuxapp-gcc include $(RTE_SDK)/mk/rte.vars.mk +CFLAGS += -DALLOW_EXPERIMENTAL_API CFLAGS += -O3 CFLAGS += $(WERROR_FLAGS) diff --git a/examples/qos_meter/main.c b/examples/qos_meter/main.c index f0f9bcaf..42cf4b29 100644 --- a/examples/qos_meter/main.c +++ b/examples/qos_meter/main.c @@ -90,14 +90,23 @@ static uint16_t port_tx; static struct rte_mbuf *pkts_rx[PKT_RX_BURST_MAX]; struct rte_eth_dev_tx_buffer *tx_buffer; -struct rte_meter_srtcm_params app_srtcm_params[] = { - {.cir = 1000000 * 46, .cbs = 2048, .ebs = 2048}, +struct rte_meter_srtcm_params app_srtcm_params = { + .cir = 1000000 * 46, + .cbs = 2048, + .ebs = 2048 }; -struct rte_meter_trtcm_params app_trtcm_params[] = { - {.cir = 1000000 * 46, .pir = 1500000 * 46, .cbs = 2048, .pbs = 2048}, +struct rte_meter_srtcm_profile app_srtcm_profile; + +struct rte_meter_trtcm_params app_trtcm_params = { + .cir = 1000000 * 46, + .pir = 1500000 * 46, + .cbs = 2048, + .pbs = 2048 }; +struct rte_meter_trtcm_profile app_trtcm_profile; + #define APP_FLOWS_MAX 256 FLOW_METER app_flows[APP_FLOWS_MAX]; @@ -105,12 +114,21 @@ FLOW_METER app_flows[APP_FLOWS_MAX]; static int app_configure_flow_table(void) { - uint32_t i, j; + uint32_t i; int ret; - for (i = 0, j = 0; i < APP_FLOWS_MAX; - i ++, j = (j + 1) % RTE_DIM(PARAMS)) { - ret = FUNC_CONFIG(&app_flows[i], &PARAMS[j]); + ret = rte_meter_srtcm_profile_config(&app_srtcm_profile, + &app_srtcm_params); + if (ret) + return ret; + + ret = rte_meter_trtcm_profile_config(&app_trtcm_profile, + &app_trtcm_params); + if (ret) + return ret; + + for (i = 0; i < APP_FLOWS_MAX; i++) { + ret = FUNC_CONFIG(&app_flows[i], &PROFILE); if (ret) return ret; } @@ -135,7 +153,10 @@ app_pkt_handle(struct rte_mbuf *pkt, uint64_t time) enum policer_action action; /* color input is not used for blind modes */ - output_color = (uint8_t) FUNC_METER(&app_flows[flow_id], time, pkt_len, + output_color = (uint8_t) FUNC_METER(&app_flows[flow_id], + &PROFILE, + time, + pkt_len, (enum rte_meter_color) input_color); /* Apply policing and set the output color */ diff --git a/examples/qos_meter/main.h b/examples/qos_meter/main.h index b27e8eb8..f51eb664 100644 --- a/examples/qos_meter/main.h +++ b/examples/qos_meter/main.h @@ -21,44 +21,52 @@ enum policer_action policer_table[e_RTE_METER_COLORS][e_RTE_METER_COLORS] = #if APP_MODE == APP_MODE_FWD -#define FUNC_METER(a,b,c,d) color, flow_id=flow_id, pkt_len=pkt_len, time=time +#define FUNC_METER(m, p, time, pkt_len, pkt_color) \ +({ \ + void *mp = m; \ + void *pp = p; \ + mp = mp; \ + pp = pp; \ + time = time; \ + pkt_len = pkt_len; \ + pkt_color; \ +}) #define FUNC_CONFIG(a, b) 0 -#define PARAMS app_srtcm_params #define FLOW_METER int +#define PROFILE app_srtcm_profile #elif APP_MODE == APP_MODE_SRTCM_COLOR_BLIND -#define FUNC_METER(a,b,c,d) rte_meter_srtcm_color_blind_check(a,b,c) +#define FUNC_METER(m, p, time, pkt_len, pkt_color) \ + rte_meter_srtcm_color_blind_check(m, p, time, pkt_len) #define FUNC_CONFIG rte_meter_srtcm_config -#define PARAMS app_srtcm_params #define FLOW_METER struct rte_meter_srtcm +#define PROFILE app_srtcm_profile #elif (APP_MODE == APP_MODE_SRTCM_COLOR_AWARE) #define FUNC_METER rte_meter_srtcm_color_aware_check #define FUNC_CONFIG rte_meter_srtcm_config -#define PARAMS app_srtcm_params #define FLOW_METER struct rte_meter_srtcm +#define PROFILE app_srtcm_profile #elif (APP_MODE == APP_MODE_TRTCM_COLOR_BLIND) -#define FUNC_METER(a,b,c,d) rte_meter_trtcm_color_blind_check(a,b,c) +#define FUNC_METER(m, p, time, pkt_len, pkt_color) \ + rte_meter_trtcm_color_blind_check(m, p, time, pkt_len) #define FUNC_CONFIG rte_meter_trtcm_config -#define PARAMS app_trtcm_params #define FLOW_METER struct rte_meter_trtcm +#define PROFILE app_trtcm_profile #elif (APP_MODE == APP_MODE_TRTCM_COLOR_AWARE) -#define FUNC_METER rte_meter_trtcm_color_aware_check +#define FUNC_METER rte_meter_trtcm_color_aware_check #define FUNC_CONFIG rte_meter_trtcm_config -#define PARAMS app_trtcm_params #define FLOW_METER struct rte_meter_trtcm +#define PROFILE app_trtcm_profile #else #error Invalid value for APP_MODE #endif - - - #endif /* _MAIN_H_ */ diff --git a/examples/qos_meter/meson.build b/examples/qos_meter/meson.build index ef7779f2..10cd4bc7 100644 --- a/examples/qos_meter/meson.build +++ b/examples/qos_meter/meson.build @@ -7,6 +7,7 @@ # DPDK instance, use 'make' deps += 'meter' +allow_experimental_apis = true sources = files( 'main.c', 'rte_policer.c' ) -- cgit 1.2.3-korg