What can I help you with?
NVIDIA DPDK Documentation MLNX_DPDK_22.11_2310.5.1 LTS

METER_MARK Action API Change

The "init_color" and "init_color_valid" members are removed from the "rte_flow_action_meter_mark" structure.

The "init_color" attribute is changeable and can be set per flow rule when the meter_mark action has "color_mode" property set to 1 (Color-Aware).

Copy
Copied!
            

port stop all flow configure 0 queues_number 4 queues_size 64 meters_number 64 port start all add port meter profile srtcm_rfc2697 0 20 0x1000 0x600 0x400 0   # base indirect flow action list command # create indirect meter_mark color-aware action flow indirect_action 0 create action_id 10 ingress list \ actions meter_mark mtr_profile 20 mtr_state 1 mtr_color_mode 1 / end   # prepare indirect action list update – can be applied to any handle of the same type, on all ports. # yellow can be used as the init_color as well. flow indirect_action 0 create action_id 11 flow_conf actions meter_mark_conf mtr_update_init_color red / end # create flows flow pattern_template 0 create ingress pattern_template_id 1 template eth / ipv4 / udp / end flow actions_template 0 create ingress actions_template_id 1 \ template indirect_list handle 10 / jump / end \ mask indirect_list / jump / end   # init_color is not green, the output cannot be green flow template_table 0 create table_id 1 group 1 priority 0 ingress rules_number 64 pattern_template 1 actions_template 1flow queue 0 create 0 template_table 1 pattern_template 0 actions_template 0 postpone no \ pattern eth / ipv4 / udp / end \ actions indirect_list handle 10 conf 11 / jump group 10 / end

Copy
Copied!
            

const struct rte_flow_action meter_mark_indirect_actions_list_obj[2] = { [0] = { .type = RTE_FLOW_ACTION_TYPE_METER_MARK, .conf = {.profile = meter_profile, .color_mode = 1, .state = 1}, },   [1] = { .type = RTE_FLOW_ACTION_TYPE_END }, };   const struct struct rte_flow_indir_action_conf conf = { .ingress = 1 }; struct rte_flow_action_list_handle *meter_mask_indirect_list_handle = rte_flow_action_list_handle_create(port_id, &conf, meter_mark_indirect_actions_list_obj, error);

Copy
Copied!
            

const struct rte_flow_action_indirect_list indirect_actions_list_conf = { .handle = meter_mask_indirect_list_handle, .conf = { [0] = & (const struct rte_flow_indirect_update_flow_meter_mark) { .init_color = RTE_COLOR_RED, /* Or Yellow */ }, }, };   const struct rte_flow_action flow_actions[] = { [0] = { .type = RTE_FLOW_ACTION_TYPE_INDIRECT_LIST, .conf = &indirect_actions_list_conf, [1] = { .type = RTE_FLOW_ACTION_TYPE_JUMP, .conf = &jump_conf, }, [2] = { .type = RTE_FLOW_ACTION_TYPE_END, }, };

© Copyright 2024, NVIDIA. Last updated on Jan 9, 2025.