* [PATCH 00/13] ENA release 2.15.0
@ 2026-10-13 15:06 Shai Brandes
2026-10-13 15:33 ` Stephen Hemminger
0 siblings, 1 reply; 2+ messages in thread
From: Shai Brandes @ 2026-10-13 15:06 UTC (permalink / raw)
To: stephen; +Cc: dev, Shai Brandes
Hello all,
This series upgrades HAL and fixes two PHC correctness issues,
an LLQ feature version not communicated to the device, and
a failed LLQ configuration zeroing the negotiated tx_max_header_size.
Additionally it adds n-tuple Rx flow steering support through the rte_flow API.
Review and comments are welcome
Best regards,
Shai Brandes
Shai Brandes (13):
net/ena: avoid using un-needed admin response buffers
net/ena/base: fix race in PHC destroy
net/ena/base: fix missing barriers in PHC timestamp read
net/ena/base: rename bounce buffer references
net/ena/base: add LLQ policy inline helper
net/ena/base: fix LLQ feature version sent to device
net/ena/base: deduplicate LLQ entry write and advance
net/ena/base: deduplicate meta caching config flag
net/ena/base: split LLQ info into datapath and config
net/ena/base: fix LLQ config failure flow
net/ena: support flow API for n-tuple Rx steering
net/ena/base: remove x86 Tx LLQ write barrier
net/ena: upgrade driver version to 2.15.0
doc/guides/nics/ena.rst | 26 +
doc/guides/nics/features/ena.ini | 10 +
doc/guides/rel_notes/release_26_11.rst | 6 +
drivers/net/ena/base/ena_com.c | 793 +++++++++++++-----
drivers/net/ena/base/ena_com.h | 134 ++-
.../net/ena/base/ena_defs/ena_admin_defs.h | 83 +-
drivers/net/ena/base/ena_eth_com.c | 131 +--
drivers/net/ena/base/ena_eth_com.h | 18 +-
drivers/net/ena/base/ena_plat_dpdk.h | 8 +
drivers/net/ena/ena_ethdev.c | 73 +-
drivers/net/ena/ena_ethdev.h | 3 +-
drivers/net/ena/ena_flow.c | 542 ++++++++++++
drivers/net/ena/ena_flow.h | 12 +
drivers/net/ena/meson.build | 1 +
14 files changed, 1512 insertions(+), 328 deletions(-)
create mode 100644 drivers/net/ena/ena_flow.c
create mode 100644 drivers/net/ena/ena_flow.h
--
2.17.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH 00/13] ENA release 2.15.0
2026-10-13 15:06 [PATCH 00/13] ENA release 2.15.0 Shai Brandes
@ 2026-10-13 15:33 ` Stephen Hemminger
0 siblings, 0 replies; 2+ messages in thread
From: Stephen Hemminger @ 2026-10-13 15:33 UTC (permalink / raw)
To: Shai Brandes; +Cc: dev
On Tue, 13 Oct 2026 18:06:11 +0300
Shai Brandes <shaibran@amazon.com> wrote:
> Hello all,
> This series upgrades HAL and fixes two PHC correctness issues,
> an LLQ feature version not communicated to the device, and
> a failed LLQ configuration zeroing the negotiated tx_max_header_size.
> Additionally it adds n-tuple Rx flow steering support through the rte_flow API.
> Review and comments are welcome
>
> Best regards,
> Shai Brandes
Running AI review spots several issues:
Review of [PATCH 00/13] net/ena: 2.15.0 (bundle 2177)
Applied to main at 7f615af; every commit built with -Dwerror=true
(gcc, x86-64).
Series level
------------
Error: patch 04 breaks the build (see below).
Warning: patch 11 does not apply to main. doc/guides/nics/features/
ena.ini now ends with "Usage doc" and "Design doc"; rebase.
Info: the stable fixes (02, 03, 06, 10) sit behind refactors, and
06 and 10 depend on context from 01, 05 and 09. Put the fixes first
so they backport without rework.
[PATCH 01/13] net/ena: avoid using un-needed admin response buffers
-------------------------------------------------------------------
Warning: undocumented behaviour change. Besides the move, the
missing-interrupt fallback in
ena_com_wait_and_process_admin_cq_interrupts() changes from
admin_queue->polling = true;
to
ena_com_set_admin_polling_mode(admin_queue->ena_dev, true);
which also writes ENA_REGS_ADMIN_INTR_MASK to the device. Probably
the right thing, but the commit message only talks about response
buffers. Say so in the commit message, or split the wait path
rework into its own patch.
[PATCH 03/13] net/ena/base: fix missing barriers in PHC timestamp read
---------------------------------------------------------------------
Warning: wrong Fixes tag. The req_id poll loop without a barrier
comes from f73f53f7dc7a (v23.11); a14be4dd8693 (v25.11) only added
the statistics block. As tagged, 23.11 and 24.11 will not pick this
up. Use:
Fixes: f73f53f7dc7a ("net/ena: upgrade HAL")
[PATCH 04/13] net/ena/base: rename bounce buffer references
----------------------------------------------------------
Error: build break. The member is renamed in ena_com.h but
ena_eth_com.c still uses the old name until patch 05:
ena_eth_com.c:160: error: 'struct ena_com_llq_pkt_ctrl' has no
member named 'curr_bounce_buf'
Move the ena_eth_com.c renames (curr_bounce_buf, plus
write_header_to_bounce and close_bounce_buffer, which 05 also
renames without mentioning it) into this patch. 05 is then only
the ena_com_sq_is_llq() helper, matching its subject.
[PATCH 08/13] net/ena/base: deduplicate meta caching config flag
---------------------------------------------------------------
Info: removing the field leaves two consecutive blank lines in
struct ena_com_io_sq after mem_queue_type. Drop one.
[PATCH 09/13] net/ena/base: split LLQ info into datapath and config
------------------------------------------------------------------
Warning: this is not "No functional change". The burst limit
divisor changes:
- llq_default_cfg->llq_ring_entry_size_value;
+ llq_info->common.desc_list_entry_size;
They differ when the device does not support the default entry
size and the fallback above picks another one. With a 128 byte
default and a 256 byte fallback, the old code allows twice as many
entries per burst as the device accepts. That is a real bug, present
since the LIMIT_TX_BURST support went in. Split it out:
net/ena/base: fix Tx burst limit with fallback entry size
Fixes: b68309be44c0 ("net/ena/base: update communication layer
for the ENAv2")
Cc: stable@dpdk.org
and keep 09 a pure refactor.
Info: continuation lines of the descs_num_before_header assignments
are not indented:
llq_info->common.descs_num_before_header =
llq_default_cfg->llq_num_decs_before_header;
Indent the second line one more tab, or keep it on one line.
[PATCH 11/13] net/ena: support flow API for n-tuple Rx steering
--------------------------------------------------------------
Warning: an item without spec is rejected for IPV4, IPV6, TCP and
UDP ("IPv4 item requires spec"). In rte_flow a NULL spec means
"match any packet of this protocol". testpmd passes spec == NULL
for items given without fields, so the obvious rule
flow create 0 ingress pattern eth / ipv4 / tcp dst is 80 / end
actions queue index 1 / end
fails. Treat NULL spec as protocol presence with zero masks, e.g.:
case RTE_FLOW_ITEM_TYPE_IPV4:
...
has_ipv4 = true;
if (spec == NULL)
break;
if (mask == NULL)
mask = &rte_flow_item_ipv4_mask;
Same for IPV6, TCP and UDP.
Warning: secondary process. All other admin commands (MTU, RSS,
stats) go through ENA_PROXY because only the primary owns the admin
queue. The flow ops call ena_com_flow_steering_*() directly, so
rte_flow from a secondary submits admin commands from the wrong
process. Proxy them, or simply refuse in ena_flow_ops_get():
if (rte_eal_process_type() != RTE_PROC_PRIMARY)
return -E_RTE_SECONDARY;
Warning: features/ena.ini adds the [rte_flow items] and
[rte_flow actions] tables but not "Flow API = Y" under [Features].
Info:
- ena_infos_get(): the two "&= ~" lines are no-ops (ENA never sets
RTE_ETH_DEV_CAPA_FLOW_RULE_KEEP or RTE_ETH_DEV_FLOW_OPS_THREAD_SAFE)
and dev_infos_get should not write dev->data. Drop them and the
comments.
- ena_flow_create() parses the pattern twice, once inside
ena_flow_validate(). Split the attr/started checks into a helper
and call ena_flow_parse() once.
- adapter->flow_rule_count duplicates
ena_dev->flow_steering.active_rules_cnt. Use the base counter.
- ena_flow_ops_get() logs WARNING when steering is unsupported.
testpmd calls rte_flow_flush() on port close, so this fires on
every close. Use DEBUG or no log.
- ena_flow_query() only returns ENOTSUP; leave .query NULL and
ethdev returns ENOSYS.
- ena_com_flow_steering_remove_rule() and _remove_all_rules() pass
a response buffer they never read. Use
ena_com_execute_admin_command_no_resp() from patch 01.
- ena_com_flow_steering_destroy() leaves dangling pointers. End it
with memset(flow_steering, 0, sizeof(*flow_steering)) like
ena_com_rss_destroy().
[PATCH 12/13] net/ena/base: remove x86 Tx LLQ write barrier
----------------------------------------------------------
Warning: arm_wmb() is a no-op on every non-ARM architecture, not
just x86. ppc64le, riscv and loongarch are weakly ordered and the
driver still builds there. The argument for dropping the barrier
(UC doorbell store flushes WC buffers) is x86 specific, so make the
test x86 specific:
#if defined(RTE_ARCH_X86)
#define ena_llq_wmb() do { } while (0)
#else
#define ena_llq_wmb() rte_wmb()
#endif
(rte_io_wmb() everywhere is the other option, if Graviton testing
shows dmb oshst is enough; on x86 it is a compiler barrier.)
Info: the new comment in ena_com_write_bounce_buffer_to_dev() is
20 lines, half of it history of the old wmb(). History belongs in
the commit message; keep the comment to what the barrier orders and
why x86 does not need it.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-10-13 15:33 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-13 15:06 [PATCH 00/13] ENA release 2.15.0 Shai Brandes
2026-10-13 15:33 ` Stephen Hemminger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox