From nobody Tue Mar 10 19:50:49 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 4fVkyL0ngcz6TxKC for ; Tue, 10 Mar 2026 19:50:50 +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 4fVkyL05jgz3Cdr for ; Tue, 10 Mar 2026 19:50:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1773172250; 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=x8e2oe+gQQKwACs15tZtidE7itqmarUGL+cKoZVjc1M=; b=ChrFFDRZj1EsExzERWTblWIU0sU7zCfHciWbKvwpZvbA4euPaIoZFa+uK9S4xGCGoOWnne pckJ4ysClwPIOzgQE1v050p4vKzExTNHLhQSIFj9BrC137uW824eCmEWYQ/4lKAjX3fKTi LiS2VTN3YbnOWVxoValoQQIHyCIpy00s5vToQ2k9dPIBswZOvYnBIcYHfogTjCaR0qQe2d 5lfCedUtO5AURx4WXclI1DGJEFgLFoJPCW0pJuhtpd0sjlN9u+oqb0eXXljWG4ElS0w3Xv hkUS/ZMTYmbF3Jo4qI+fpenQ1wGpZdRfEtNxIeMTj6D6wsrS+2X/2GUn1sUP4w== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1773172250; a=rsa-sha256; cv=none; b=hCkt2KKAk08oX+T4Uuvk5K5DhyeBvfzQiOf8zbvWI5qqha+f+Uuz+f14JM98zVprk9pAy+ ex687q0Zdb5nUmOzswVRInDfeyhSaSYcnFhcTcD5H6DWGGoixQNosUfHnOZueMh4KnSFJv oIyNjJUWUmXvKbPRFcxxsX5hJXuwgdiq/qYs8k18+6s4+/doLRvje12QiDSxuKyFIy7UEN ZNSbpNgp+kWyPb8T9VJ0sEDhkO2TF+/AJYGgrsf+qtqPjbUtd/vQGcw30Iv90RIYcJ8u59 mlO4iQpQ7x+FDhnbC9IlNZcNZEWsnAXZgbZHV1Cn5NvY9FQiuyBci1qzY5mA2A== 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=1773172250; 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=x8e2oe+gQQKwACs15tZtidE7itqmarUGL+cKoZVjc1M=; b=JKdstGAk08gMJ7PpAHxxyLkDGWLAjIXFyyZxQAW8qomAkCEFsUpnzBXfyVoK3Yn+PVzAJO 8HoLHWezw1MKPX2XQOnOIoxQnslk7ta5w7F9eeO62VyuhGzdNjG6Fjcd24I/FACo2nghDT zosbNAydUdyLwXTbGClpnSkkDN5lJzDbnPsW3Q+Hlj2E7RXF+H+vBLJo5KyWzU1ftIqsTS NedadW4/w0Ylf6GqP40cdkY9LeQNcp6EWsQFoSWann9ch9YDbEx6vlREHIBvfff29y5RTg SR5aLuKLWThlTQ2LPw8/JGbEvdpW+/zLcElnPEs/pWHRK+XiPA00It2QPQP5Eg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4fVkyK6hK9zBDN for ; Tue, 10 Mar 2026 19:50:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 27d73 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Tue, 10 Mar 2026 19:50:49 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: David Arinzon From: Arthur Kiyanovski Subject: git: 97e84c587d6f - main - 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/main X-Git-Reftype: branch X-Git-Commit: 97e84c587d6f86aa883720296449b380adcf6915 Auto-Submitted: auto-generated Date: Tue, 10 Mar 2026 19:50:49 +0000 Message-Id: <69b07619.27d73.841b5b5@gitrepo.freebsd.org> The branch main has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=97e84c587d6f86aa883720296449b380adcf6915 commit 97e84c587d6f86aa883720296449b380adcf6915 Author: David Arinzon AuthorDate: 2026-02-05 14:21:13 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-03-10 19:48:39 +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") MFC after: 2 weeks Sponsored by: Amazon, Inc. Reviewed by: cperciva Differential Revision: https://reviews.freebsd.org/D55697 --- 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; }