On 2019-01-31 07:42, Shahaf Shuler wrote:

It is not expected, Mark action can set along w/ RSS.

I therefore tried different things and found that the problem was a misconfiguration of the RSS action. Thanks!

For future relevance, here is a working piece of code for RSS + MARK (+END) action :

struct rte_flow_action action[3]; struct rte_flow_action_mark mark; struct rte_flow_action_rss rss;

memset(action, 0, sizeof(action)); memset(&rss, 0, sizeof(rss));


action[0].type = RTE_FLOW_ACTION_TYPE_MARK; mark.id = _matches.size();
    action[0].conf = &mark;


action[1].type = RTE_FLOW_ACTION_TYPE_RSS; uint16_t queue[RTE_MAX_QUEUES_PER_PORT];
    queue[0] = 0;
//TODO : enable all the queues of interest
    uint8_t rss_key[40];
    struct rte_eth_rss_conf rss_conf;
rss_conf.rss_key = rss_key; rss_conf.rss_key_len = 40; rte_eth_dev_rss_hash_conf_get(port_id, &rss_conf); rss.types = rss_conf.rss_hf; rss.key_len = rss_conf.rss_key_len;
    rss.queue_num = 1;
rss.key = rss_key; rss.queue = queue; rss.level = 0; rss.func = RTE_ETH_HASH_FUNCTION_DEFAULT; action[1].conf = &rss;

    action[2].type = RTE_FLOW_ACTION_TYPE_END;

Thanks!

Tom

Reply via email to