static void
fill_attributes(struct rte_flow_attr *attr,
- uint64_t *flow_attrs, uint16_t group)
+ uint64_t *flow_attrs, uint16_t group, uint8_t max_priority)
{
uint8_t i;
for (i = 0; i < MAX_ATTRS_NUM; i++) {
attr->transfer = 1;
}
attr->group = group;
+ attr->priority = rte_rand_max(max_priority);
}
struct rte_flow *
uint16_t hairpinq,
uint64_t encap_data,
uint64_t decap_data,
+ uint16_t dst_port,
+ uint8_t core_idx,
+ uint8_t rx_queues_count,
+ bool unique_data,
+ uint8_t max_priority,
struct rte_flow_error *error)
{
struct rte_flow_attr attr;
memset(actions, 0, sizeof(actions));
memset(&attr, 0, sizeof(struct rte_flow_attr));
- fill_attributes(&attr, flow_attrs, group);
+ fill_attributes(&attr, flow_attrs, group, max_priority);
fill_actions(actions, flow_actions,
outer_ip_src, next_table, hairpinq,
- encap_data, decap_data);
+ encap_data, decap_data, core_idx,
+ unique_data, rx_queues_count, dst_port);
- fill_items(items, flow_items, outer_ip_src);
+ fill_items(items, flow_items, outer_ip_src, core_idx);
flow = rte_flow_create(port_id, &attr, items, actions, error);
return flow;