Netdev List
 help / color / mirror / Atom feed
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
>

      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