[PATCH v3 06/19] net/ixgbe: reimplement syn parser

Burakov, Anatoly anatoly.burakov at intel.com
Mon Oct 5 10:35:28 CEST 2026


On 9/19/2026 6:10 PM, Medvedkin, Vladimir wrote:
> 
> On 9/16/2026 1:18 PM, Anatoly Burakov wrote:
>> Use the new flow graph API and the common parsing framework to implement
>> flow parser for SYN.
>>
>> As a result of this migration, queue index validation has changed:
>>
>> - queue is now validated at parse time against the configured number 
>> of Rx
>>    queues (nb_rx_queues), rather than at install time against the 
>> hardware
>>    maximum (IXGBE_MAX_RX_QUEUE_NUM)
>> - the per-function queue bound check in ixgbe_syn_filter_set() has been
>>    removed as it is no longer needed
>>
>> The syn filter tracking infrastructure is moved completely inside the new
>> engine and is removed from the rest of the driver.
>>
>> Signed-off-by: Anatoly Burakov<anatoly.burakov at intel.com>
>> ---
> <snip>
>> -
>> -    /* Support 2 priorities, the lowest or highest. */
>> -    if (!attr->priority) {
>> -        filter->hig_pri = 0;
>> -    } else if (attr->priority == (uint32_t)~0U) {
>> -        filter->hig_pri = 1;
>> -    } else {
>> -        memset(filter, 0, sizeof(struct rte_eth_syn_filter));
>> -        rte_flow_error_set(error, EINVAL,
>> -            RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY,
>> -            attr, "Priority can be 0 or 0xFFFFFFFF");
>> -        return -rte_errno;
>> -    }
>> -
>> -    return 0;
>> -}
> <snip>
>> +
>> +    /* check priority */
>> +    if (attr->priority != 0 && attr->priority != (uint32_t)~0U) {
>> +        return rte_flow_error_set(error, EINVAL,
>> +            RTE_FLOW_ERROR_TYPE_ATTR_PRIORITY,
>> +            attr, "Priority can be 0 or 0xFFFFFFFF");
>> +    }
>> +
>> +    /* parse requested actions */
>> +    ret = ci_flow_check_actions(actions, &ap_param, &parsed_actions, 
>> error);
>> +    if (ret)
>> +        return ret;
>> +
>> +    q_act = parsed_actions.actions[0]->conf;
>> +
>> +    syn_ctx->syn.queue = q_act->index;
>> +
>> +    /* Support 2 priorities. rte_flow priority 0 is highest */
>> +    syn_ctx->syn.hig_pri = attr->priority == 0;
> seems like inverting priority with the previous implementation

Yes. I am not sure what to do about this, because the previous priority 
is technically wrong, and my current code is correct as far as rte_flow 
API semantics goes. Should this perhaps be a separate fix before the 
refactor? To be perfectly blunt, I don't think many people use syn flows 
so perhaps breaking backwards compatibility won't be a big issue.

>> +
>> +    return 0;
>> +}
> <snip>
> 


-- 
Thanks,
Anatoly


More information about the dev mailing list