From nobody Thu Apr 2 22:20:30 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4fmxBR02qhz6YsD0 for ; Thu, 02 Apr 2026 22:20:31 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4fmxBQ390Cz41rX for ; Thu, 02 Apr 2026 22:20:30 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775168430; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vH7azz5Om5oyuCZM1WpDTZ90ZiA2B7QPUWqX+iDkNZA=; b=KuGOI5ybFgH1bWovIrP1AP5Vs3XqLJDz3KRip+ai8OkG8dpg42P0/QWv5I7UYD9XoPGd6W ZndP81K4KOLhQjTBET74UcDlDa3dqWqiATX+80pfxds4MkN1ptf0jUM3GR7XQaHINmojsG w7UZti6PM+S4YGMPMePLDTCPjZni/Uh9WIqZbbdZmXKPw1hcjF5lTcpaw2mZJqAPDinHLL 5Au4Bpekg29N76VnbBJQaNzUCEc6fCb16KQxip1BMsWlZcVRgDqTv7ZMhJZh/ByCtDQzEJ kcz9P+5JGm3P8kpAeicOTy9CtzftK+I6hSiYMSBDhx8OM/8rdVYlZbId8zI8ug== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1775168430; a=rsa-sha256; cv=none; b=cRyXVx0vqv5oF8uE+ya1yWOIPh3gtat+4nzttsrzedrqjfZHLrv+HcW3/5In6rqOQgWgHj y+f2XVdT6cPRcYDEo6CFhzIJx/oNANFPM+qHrbe3p8NFmOGqStLApM3x6OTf5fQ26wIOpI Ai22NpX6Uy1aNX+BRFtqeYhLG2dhUpqlkal0EFqbdGeIOUAW4/rZbonuxkRd+fCSICWqsj feKEYyiobiRF6ae6dd3Z4kTw667/XZvkRzABOzLSrM/r0hIuKWwUsEVFk+6Kdq2u0929Dv SGZeUR4SRCizO1wO0YfSYGFFIxWqq/d9jWrjSpKJ/m/oBSH2KiU5uVs2OHD8Aw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1775168430; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=vH7azz5Om5oyuCZM1WpDTZ90ZiA2B7QPUWqX+iDkNZA=; b=ODWJQduxC+4P+lPo/jAL5aMjeUwMyG5jNZxB1zarqogzDyVqyb69DCwjz93Rho9uc/3pJ5 1ZF9dKfb8ccstSAcoXV6bTDeO12Fe7GupWWPq4XU96fU7YV+BmIzmHgS60s5jeso8+tusv w33RIKoFSvYLH46OIGCTUv1Z9JrNGI2JP2mIyUU8vSAAm78bq/iteFmlozP9Bsu6L10Fak oaNM84ArLfn5DPujaRo5uVNsnvLfaZcoLrbQxBMbIjXwgIfPfjWLstpePhcXCb3QXjDQND gIRIMPgGugd5QEeWDbWaN2BGtiM0V2lkYhFmlBauAkn1dHZ5QonSRhsd0l/ivg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fmxBQ2SnGz5b6 for ; Thu, 02 Apr 2026 22:20:30 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 4405e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 02 Apr 2026 22:20:30 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org Cc: Arthur Kiyanovski From: Arthur Kiyanovski Subject: git: 10598997a2e3 - stable/15 - ena: Verify that an ENA ring is in netmap only in native mode List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: akiyano X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 10598997a2e34cd7467418b8c83f5e41d5b424fe Auto-Submitted: auto-generated Date: Thu, 02 Apr 2026 22:20:30 +0000 Message-Id: <69ceebae.4405e.43740ac0@gitrepo.freebsd.org> The branch stable/15 has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=10598997a2e34cd7467418b8c83f5e41d5b424fe commit 10598997a2e34cd7467418b8c83f5e41d5b424fe Author: Arthur Kiyanovski AuthorDate: 2026-02-14 01:13:00 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-04-02 22:17:36 +0000 ena: Verify that an ENA ring is in netmap only in native mode netmap operates in two modes: 1) Emulated - netmap handling is done by the network stack, the NIC driver operates transparently to netmap. 2) Native - netmap management is done by the NIC driver. When checking whether a specific ENA ring is running in netmap mode, only the following checks were done: 1. IFCAP_NETMAP - Check whether netmap capability is enabled on the device. 2. NKR_NETMAP_ON - Check whether netmap is actively using this ring. The above checks implied that the netmap mode is native and the ENA driver needs to handle the netmap logic. The code was missing an explicit check on whether native mode is actually on (NAF_NATIVE). This led to a case where though emulated mode was used and a netmap application was turned on, the ENA driver still managed netmap logic partially and caused missing buffers and lack of refill as part of the datapath. Note: Enabling netmap emulated mode is insufficient and there's a need to load a netmap program in order to trigger this use-case. Add an explicit check of whether NAF_NATIVE mode is set. The issue was reported in [1]. [1]: https://github.com/amzn/amzn-drivers/issues/361 Fixes: 358bcc4c6cde ("Add support for ENA NETMAP partial initialization") Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D55697 Sponsored by: Amazon, Inc. (cherry picked from commit 97e84c587d6f86aa883720296449b380adcf6915) --- sys/dev/ena/ena_netmap.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/sys/dev/ena/ena_netmap.c b/sys/dev/ena/ena_netmap.c index 8a220373ec3f..0e8c95fb289a 100644 --- a/sys/dev/ena/ena_netmap.c +++ b/sys/dev/ena/ena_netmap.c @@ -223,9 +223,11 @@ ena_ring_in_netmap(struct ena_adapter *adapter, int qid, enum txrx x) if (if_getcapenable(adapter->ifp) & IFCAP_NETMAP) { na = NA(adapter->ifp); - kring = (x == NR_RX) ? na->rx_rings[qid] : na->tx_rings[qid]; - if (kring->nr_mode == NKR_NETMAP_ON) - return true; + if (na->na_flags & NAF_NATIVE) { + kring = (x == NR_RX) ? na->rx_rings[qid] : na->tx_rings[qid]; + if (kring->nr_mode == NKR_NETMAP_ON) + return true; + } } return false; }