[PATCH v12-S2 00/11] net/dpaa2 updates
Stephen Hemminger
stephen at networkplumber.org
Fri Oct 16 18:18:18 CEST 2026
On Fri, 16 Oct 2026 12:33:28 +0530
Prashant Gupta <prashant.gupta_3 at nxp.com> wrote:
> Changes in v12:
> - Restore VXLAN rte_flow item documentation in dpaa2.ini to
> keep documentation aligned with PMD capabilities.
> - Fix documentation check failure reported after application
> to next-net.
This is worse not better.
Subject: Re: [PATCH v12-S2 00/11] net/dpaa2: ...
Series applies cleanly to 26.11-rc1 and every commit builds with
-Dwerror=true.
The doc-vs-code problem is not fixed, it is now hidden. Patch 10
removes VXLAN support but leaves "vxlan = Y" in the feature matrix.
check-doc-vs-code.sh passes only because a stray
RTE_FLOW_ITEM_TYPE_VXLAN reference survives in
dpaa2_flow_item_convert().
Pre-existing, separate fix needed: dpaa2_flow_item_convert() allocates
one item too few. For "eth / end" num ends at 1, rte_malloc() gets
1 * sizeof(item), then new_pattern[1] is written for the END marker.
An empty pattern also reads pattern[1] past the end.
for (num = 0; pattern[num].type != RTE_FLOW_ITEM_TYPE_END; num++)
;
new_pattern = rte_malloc(NULL, sizeof(*new_pattern) * (num + 1),
RTE_CACHE_LINE_SIZE);
Patch 06/11 net/dpaa2: set default flow miss action per device
Error:
default_flow = min(fs_entries, dist_queues) - 1 is computed at probe
from hardware attributes, but fs_miss_flow_id is a queue index inside
the TC distribution, and dist_size is nb_rx_queues / num_rx_tc set at
configure time. A DPNI with 16 queues where the app configures 4 Rx
queues gets fs_miss_flow_id 15 with dist_size 4: either MC rejects
dpni_set_rx_fs_dist() and every rte_flow create fails, or unmatched
frames go to an unconfigured queue. The old default (0) was always
valid. fs_entries is the FS table size, not a flow id, and should not
be in this expression at all.
Compute it where dist_size is known and drop the priv field:
tc_cfg.enable = true;
tc_cfg.fs_miss_flow_id = dist_size - 1;
Or keep 0. Either way the release note must say which queue gets
unmatched frames.
Patch 07/11 net/dpaa2: identify Rx mbuf hash information by FLC
Warning:
Commit message says TC and flow id are stored via
rte_mbuf_sched_set(); the code writes m->hash.fdir.hi. Fix the
message.
RTE_MBUF_F_RX_FDIR_ID means hash.fdir.hi holds the id from a MARK
action. This driver has no MARK action, so applications see a
synthetic (tc << 16) | flow value as if it were a mark. Set only
RTE_MBUF_F_RX_FDIR, or implement RTE_FLOW_ACTION_TYPE_MARK.
Patch 09/11 net/dpaa2: parse tunnel and fragmented packet types
Warning:
Parse summary 0x0001 was mapped to RTE_PTYPE_L3_IPV4_EXT (options
present). Now it is L3_IPV4_EXT | L4_FRAG. The slow path treats
options (L3_IP_1_OPT_PRESENT) and fragments (L3_IP_1_*_FRAGMENT) as
independent bits, so one summary code cannot mean both. If 0x0001 is
the fragment code, the mapping should be:
case DPAA2_PKT_TYPE_IPV4_EXT:
m->packet_type = RTE_PTYPE_L2_ETHER |
RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_FRAG;
and the IPV4_EXT/IPV6_EXT names should be changed to match. If it
is the options code, drop L4_FRAG.
Patch 10/11 net/dpaa2: remove unused soft parser driver
Error:
doc/guides/nics/features/dpaa2.ini still has "vxlan = Y". Commit
message and release note both say the item is no longer advertised.
-vxlan = Y
The leftover VXLAN check in dpaa2_flow_item_convert() is what keeps
the doc-vs-code script quiet. Remove it:
- if (pattern[num].type == RTE_FLOW_ITEM_TYPE_VXLAN)
- tunnel_start = 1;
- else if (tunnel_start)
- new_pattern[num].in_tunnel = 1;
Error:
dpaa2_flow_create() does not call dpaa2_flow_validate(), and the
default case in dpaa2_generic_flow_set() sets ret = -ENOTSUP and
breaks out of the switch without leaving the loop; the action loop
then overwrites ret. With the VXLAN/ECPRI cases removed,
"eth / ipv4 / udp / vxlan / end actions queue index 1" now creates a
rule matching all UDP. Fix before (or in) this patch:
default:
DPAA2_PMD_ERR("Invalid flow item[%d] type(%d)",
i, pattern[i].type);
ret = -ENOTSUP;
- break;
+ goto end_flow_set;
Warning:
Removing the VXLAN/ECPRI cases in dpaa2_flow_extract_support() left
two dead "break;" lines after the GRE case.
Leftovers from the removal:
dpaa2_ethdev.h: dpaa2_soft_parser_loaded() prototype
dpaa2_ethdev.h: ss_offset, ss_iova, ss_param_iova in dpaa2_dev_priv
dpaa2_ethdev.h: DPAA2_ECPRI_MAX_EXTRACT_NB
dpaa2_flow.c: #include <sys/mman.h>
Info:
With VXLAN gone nothing sets in_tunnel, so tunnel_start and every
"if (dpaa2_pattern->in_tunnel)" branch in the configure handlers is
dead. Fine as a follow-up.
Patch 11/11 net/dpaa2: rename Rx queue flags
Warning:
Commit message says mechanical rename, but it adds
DPAA2_RX_PRINT_PSR_RESULT_FLAG, which nothing uses. Drop it.
Patch 01/11 net/dpaa2: fix integer overflow in CCSR region mapping
Warning:
Second paragraph of the commit message is wrong. For len 4096 on a
64K-page kernel the old code masked len to 0 and then bumped it to
PAGE_SIZE, so the mapping did not fail. The real defect is that the
old length ignored offset, so a region crossing a page boundary was
not fully mapped. Since this goes to stable, the message should say
that.
Info:
PAGE_SIZE and PAGE_MASK in dpaa2_recycle.c are now unused; remove.
Patch 03/11 net/dpaa2: support larger burst size
Info:
Limit for non-LX2160A (and LX2160A with dpni < 8.7) drops from 65536
to 0xF7FF. Mention that in the commit message. Write 0x37FFF instead
of 229375 so it matches the fsl_dpni.h comment.
More information about the dev
mailing list