On Mon, May 25, 2026 at 03:06:22PM +0100, Anatoly Burakov wrote:
> Currently, each driver has their own code for action parsing, which results
> in a lot of duplication and subtle mismatches in behavior between drivers.
> 
> Add common infrastructure, based on the following assumptions:
> 
> - All drivers support at most 4 actions at once, but usually less
> - Not every action is supported by all drivers
> - We can check a few common things to filter out obviously wrong actions
> - Driver performs semantic checks on all valid actions
> 
> So, the intention is to reject everything we can reasonably reject at the
> outset without knowing anything about the drivers, parametrize what is
> trivial to parametrize, and leave the rest for the driver to implement.
> 
> While we're at it, also add logging infrastructure for Intel common code,
> using the new component name defines that are automatically passed to each
> DPDK driver as it is being built.
> 
> Signed-off-by: Anatoly Burakov <[email protected]>
> ---
<snip>

> +
> +static inline int
> +__flow_action_check_rss(const struct rte_flow_action_rss *rss,
> +             const struct ci_flow_actions_check_param *param,
> +             struct rte_flow_error *error)
> +{
> +     uint32_t qnum, q;
> +
> +     qnum = rss->queue_num;
> +
> +     /* either we have both queues and queue number, or we have neither */
> +     if ((qnum == 0) != (rss->queue == NULL)) {
> +             return rte_flow_error_set(error, EINVAL,
> +                     RTE_FLOW_ERROR_TYPE_ACTION_CONF, rss,
> +                     "If queue number is specified, queue array must also be 
> specified");
> +     }
> +     /* check if queues are monotonic */
> +     for (q = 1; q < qnum; q++) {
> +             if (rss->queue[q] < rss->queue[q - 1]) {
> +                     return rte_flow_error_set(error, EINVAL,
> +                             RTE_FLOW_ERROR_TYPE_ACTION_CONF, rss,
> +                             "RSS queues must be in ascending order");
> +             }
> +             /* if user has requested contiguousness, check that as well */
> +             if (param == NULL || !param->rss_queues_contig)
> +                     continue;
> +             if (rss->queue[q] != rss->queue[0] + q) {
> +                     return rte_flow_error_set(error, EINVAL,
> +                             RTE_FLOW_ERROR_TYPE_ACTION_CONF, rss,
> +                             "RSS queues must be contiguous");
> +             }
> +     }
> +     /* if user has requested to check for queue contiguousness, do it */
> +     if (param != NULL && param->rss_queues_contig) {
> +     }
> +

Empty block, and I don't see it filled in later patches. Is this for future
use, or just an oversight? I see the check for contiguity done in the loop
above.

Reply via email to