From: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
To: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Cc: Andrew Lunn <andrew+netdev@lunn.ch>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Wen Gu <guwen@linux.alibaba.com>,
Philo Lu <lulie@linux.alibaba.com>,
Vadim Fedorenko <vadim.fedorenko@linux.dev>,
Dong Yibo <dong100@mucse.com>,
Mingyu Wang <25181214217@stu.xidian.edu.cn>,
Heiner Kallweit <hkallweit1@gmail.com>,
Dust Li <dust.li@linux.alibaba.com>,
netdev@vger.kernel.org
Subject: Re: [PATCH net-next v43 0/8] eea: Add basic driver framework for Alibaba Elastic Ethernet Adaptor
Date: Fri, 15 May 2026 14:40:48 +0800 [thread overview]
Message-ID: <1778827248.343426-1-xuanzhuo@linux.alibaba.com> (raw)
In-Reply-To: <20260514095138.80680-1-xuanzhuo@linux.alibaba.com>
Hi Paolo,
Could you please clarify if this patch set is under embargo?
Also, I noticed that this version is very similar to the previous one. Could
you advise on how you would like me to proceed?
Link: https://netdev-ai.bots.linux.dev/sashiko/#/patchset/20260514095138.80680-1-xuanzhuo%40linux.alibaba.com
Thanks
On Thu, 14 May 2026 17:51:30 +0800, Xuan Zhuo <xuanzhuo@linux.alibaba.com> wrote:
> Add a driver framework for EEA that will be available in the future.
>
> This driver is currently quite minimal, implementing only fundamental
> core functionalities. Key features include: I/O queue management via
> adminq, basic PCI-layer operations, and essential RX/TX data
> communication capabilities. It also supports the creation,
> initialization, and management of network devices (netdev). Furthermore,
> the ring structures for both I/O queues and adminq have been abstracted
> into a simple, unified, and reusable library implementation,
> facilitating future extension and maintenance.
>
> v43:
> 1. fix the comments from sashiko
>
> v42:
> 1. fix the comments from Jakub
> 2. fix the comments from sashiko
>
> v41:
> 1. make https://sashiko.dev/ happy
>
> v40:
> 1. fix comments from https://sashiko.dev/
>
> v39:
> 1. fix comments from https://sashiko.dev/#/patchset/20260407122001.22265-1-xuanzhuo%40linux.alibaba.com
>
> v38:
> 1. fix comments from https://sashiko.dev/#/patchset/20260404135144.33166-1-xuanzhuo%40linux.alibaba.com
>
> v36:
> 1. fix comments from https://sashiko.dev/#/patchset/20260323074441.91691-1-xuanzhuo%40linux.alibaba.com
>
> v35:
> 1. fix comments from https://netdev-ai.bots.linux.dev/ai-review.html?id=24371ffc-a1ea-46e1-a6b3-b8cbcbb52efb
>
> v34:
> 1. fix the comments from https://sashiko.dev/#/patchset/20260317015257.79494-1-xuanzhuo%40linux.alibaba.com
>
> v33:
> 1. fix the comments. old version refers enet_bind_new_q_and_cfg, but that is
> changed to eea_bind_q_and_cfg.
>
> v32:
> 1. remove unused parameters from eea_net_ha_reset_remove and eea_create_pp
> 2. call skb_mark_for_recycle for new skb for frag_list skbs
>
> v31:
> 1. remove unused parameter "enet" from eex_rx_post()
>
> v30:
> 1. fix some small problems
>
> v29:
> Address AI-generated review suggestions from the previous version.
>
> v28:
> Address AI-generated review suggestions from the previous version.
>
> v27:
> Address AI-generated review suggestions from the previous version.
>
> v26:
> Adopting suggestions from the previous AI review, another significant
> change is the introduction of an IRQ block to implement IRQ proxying. With
> this design, when an IRQ occurs, we no longer invoke the RX data structure
> directly -- instead, the IRQ block serves as an intermediary proxy. This
> approach offers several advantages: IRQ resources no longer need to be
> reallocated during reset operations, and IRQs are decoupled from RX
> structures. Consequently, when certain errors occur, we can fall back and
> safely reuse the original memory resources.
>
> v25:
> I have adopted most of the suggestions from the AI's feedback. However, I
> believe some of the feedback is incorrect. I have already replied in the
> previous thread. http://lore.kernel.org/all/1770002612.3297296-2-xuanzhuo@linux.alibaba.com
>
> v24:
> 1. Add null checks for enet->rx and enet->tx in eea_get_ethtool_stat to
> prevent errors when reading rx = enet->rx[i] in case enet->rx is null.
> tx is similar. With rtnl protection in place, this check is sufficient.
> 2. Use 'received' as the return value in eea_poll.
>
> v23:
> I have moved netif_set_real_num_queues() out of eea_start_rxtx(), so
> eea_start_rxtx() is now a void function. I believe enet_bind_new_q_and_cfg()
> is a more suitable place to include netif_set_real_num_queues(). In
> eea_active_ring_and_irq(), I first execute request_irq() before interacting
> with the hardware to create queues. Therefore, during the NIC setup process,
> all driver-internal operations (memory allocation, IRQ initialization, sysfs
> configuration, etc.) will be completed before the final notification to the
> hardware.
>
> v22:
> 1. Use the budget from the NAPI poll function as the parameter for
> napi_consume_skb.
> 2. Stop the TX queue when the remaining ring slots cannot hold an SKB.
>
> v21:
> Fix two issues from the previous version:
> 1, a DMA unmap operation was missing.
> 2, RCU APIs were not used in eea_stats. Although the standard practice when
> using RCU would require adding the __rcu annotation to both the rx and
> tx fields, in many cases these fields are read without needing RCU
> protection. Therefore, I do not want to add the __rcu annotation.
> Instead, I use a spin lock to protect modifications to rx and tx.
>
> v20:
> Fix the partially initialized structure passed to db. @Jakub
> http://lore.kernel.org/all/20260113172353.2ae6ef81@kernel.org
>
> v19:
> fix the comments from @Simon Horman
>
> v18:
> v17 with [PATCH] prefix.
>
> v17:
> 1. In `eea_adminq_dev_status`, uniformly use `enet->cfg.rx_ring_num`.
> 2. Add a `struct eea_net_cfg *cfg` parameter to `eea_free_rx` and
> `eea_free_tx`. When called in the normal path, pass `enet->cfg` as
> the argument; when called during initialization, pass the temporary
> `cfg` instead.
> 3. Move the `.ndo_get_stats64` callback into `eea_net.c`.
> 4. In the `.ndo_get_stats64` callback, add a comment explaining how the TX
> and RX statistics are protected by RCU.
>
> /* This function is protected by RCU. Here uses enet->tx and enet->rx
> * to check whether the TX and RX structures are safe to access. In
> * eea_free_rxtx_q_mem, before freeing the TX and RX resources, enet->rx
> * and enet->tx are set to NULL, and synchronize_net is called.
> */
>
>
> v16:
> 1. follow the advices from @ALOK TIWARI
> http://lore.kernel.org/all/5ff95a71-69e5-4cb6-9b2a-5224c983bdc2@oracle.com
>
> v15:
> 1. remove 'default m' from eea kconfig
> 2. free the resources when open failed.
>
> v14:
> 1. some tiny fixes
>
> v13:
> 1. fix some tiny fixes @Simon
>
> v12:
> I encountered some issues with sending the v11 patches, as they were quite
> messy. Therefore, I'm resending them as v12.
>
> v11:
> 1. remove auto clean __free(kfree)
> 2. some tiny fixes
>
> v10:
> 1. name the jump labels after the target @Jakub
> 2. rm __GFP_ZERO from dma_alloc_coherent @Jakub
> v9:
> 1. some fixes for ethtool from http://lore.kernel.org/all/20251027183754.52fe2a2c@kernel.org
>
> v8: 1. rename eea_net_tmp to eea_net_init_ctx
> 2. rm code that allocs memory to destroy queues
> 3. some other minor changes
>
> v7: 1. remove the irrelative code from ethtool commit
> 2. build every commits with W12
>
> v6: Split the big one commit to five commits
> v5: Thanks for the comments from Kalesh Anakkur Purayil, ALOK TIWARI
> v4: Thanks for the comments from Troy Mitchell, Przemek Kitszel, Andrew Lunn, Kalesh Anakkur Purayil
> v3: Thanks for the comments from Paolo Abenchi
> v2: Thanks for the comments from Simon Horman and Andrew Lunn
> v1: Thanks for the comments from Simon Horman and Andrew Lunn
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> Xuan Zhuo (8):
> eea: introduce PCI framework
> eea: introduce ring and descriptor structures
> eea: probe the netdevice and create adminq
> eea: create/destroy rx,tx queues for netdevice open and stop
> eea: implement packet receive logic
> eea: implement packet transmit logic
> eea: introduce ethtool support
> eea: introduce callback for ndo_get_stats64 and register netdev
>
> MAINTAINERS | 8 +
> drivers/net/ethernet/Kconfig | 1 +
> drivers/net/ethernet/Makefile | 1 +
> drivers/net/ethernet/alibaba/Kconfig | 28 +
> drivers/net/ethernet/alibaba/Makefile | 5 +
> drivers/net/ethernet/alibaba/eea/Makefile | 9 +
> drivers/net/ethernet/alibaba/eea/eea_adminq.c | 542 +++++++++++
> drivers/net/ethernet/alibaba/eea/eea_adminq.h | 83 ++
> drivers/net/ethernet/alibaba/eea/eea_desc.h | 138 +++
> .../net/ethernet/alibaba/eea/eea_ethtool.c | 273 ++++++
> .../net/ethernet/alibaba/eea/eea_ethtool.h | 48 +
> drivers/net/ethernet/alibaba/eea/eea_net.c | 887 ++++++++++++++++++
> drivers/net/ethernet/alibaba/eea/eea_net.h | 198 ++++
> drivers/net/ethernet/alibaba/eea/eea_pci.c | 744 +++++++++++++++
> drivers/net/ethernet/alibaba/eea/eea_pci.h | 73 ++
> drivers/net/ethernet/alibaba/eea/eea_ring.c | 249 +++++
> drivers/net/ethernet/alibaba/eea/eea_ring.h | 99 ++
> drivers/net/ethernet/alibaba/eea/eea_rx.c | 814 ++++++++++++++++
> drivers/net/ethernet/alibaba/eea/eea_tx.c | 500 ++++++++++
> 19 files changed, 4700 insertions(+)
> create mode 100644 drivers/net/ethernet/alibaba/Kconfig
> create mode 100644 drivers/net/ethernet/alibaba/Makefile
> create mode 100644 drivers/net/ethernet/alibaba/eea/Makefile
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_adminq.c
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_adminq.h
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_desc.h
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_ethtool.c
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_ethtool.h
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_net.c
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_net.h
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_pci.c
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_pci.h
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_ring.c
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_ring.h
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_rx.c
> create mode 100644 drivers/net/ethernet/alibaba/eea/eea_tx.c
>
> --
> 2.32.0.3.g01195cf9f
>
prev parent reply other threads:[~2026-05-15 6:43 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-14 9:51 [PATCH net-next v43 0/8] eea: Add basic driver framework for Alibaba Elastic Ethernet Adaptor Xuan Zhuo
2026-05-14 9:51 ` [PATCH net-next v43 1/8] eea: introduce PCI framework Xuan Zhuo
2026-05-14 9:51 ` [PATCH net-next v43 2/8] eea: introduce ring and descriptor structures Xuan Zhuo
2026-05-14 9:51 ` [PATCH net-next v43 3/8] eea: probe the netdevice and create adminq Xuan Zhuo
2026-05-14 9:51 ` [PATCH net-next v43 4/8] eea: create/destroy rx,tx queues for netdevice open and stop Xuan Zhuo
2026-05-14 9:51 ` [PATCH net-next v43 5/8] eea: implement packet receive logic Xuan Zhuo
2026-05-14 9:51 ` [PATCH net-next v43 6/8] eea: implement packet transmit logic Xuan Zhuo
2026-05-14 9:51 ` [PATCH net-next v43 7/8] eea: introduce ethtool support Xuan Zhuo
2026-05-14 9:51 ` [PATCH net-next v43 8/8] eea: introduce callback for ndo_get_stats64 and register netdev Xuan Zhuo
2026-05-15 6:40 ` Xuan Zhuo [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1778827248.343426-1-xuanzhuo@linux.alibaba.com \
--to=xuanzhuo@linux.alibaba.com \
--cc=25181214217@stu.xidian.edu.cn \
--cc=andrew+netdev@lunn.ch \
--cc=davem@davemloft.net \
--cc=dong100@mucse.com \
--cc=dust.li@linux.alibaba.com \
--cc=edumazet@google.com \
--cc=guwen@linux.alibaba.com \
--cc=hkallweit1@gmail.com \
--cc=kuba@kernel.org \
--cc=lulie@linux.alibaba.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=vadim.fedorenko@linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox