From nobody Thu Oct 29 03:29:38 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 4jFV8f3tVwz6xfpB for ; Thu, 29 Oct 2026 03:29:38 +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) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 4jFV8f0pwhz4RTM for ; Thu, 29 Oct 2026 03:29:38 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793244578; 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=9i5FiCyB4GUPytb24GT9zLW63xXL6JtGOA/PuucnwSs=; b=xxjuF6mPM5PTVHP+jhwahOI22VH5NCxukZ2Zi1L+PknLvdAkkWgjYMDzTs6QtrRnKOOFW3 f8E1+eb3QpfLIXinTHwGmeaq8ZuYU7NASpuEGpNrh0GfKZBQNd7cGvjhrrEzSyiVRgtre5 lQV++ad1IZqRkptcQkmSiJYadU0tmP93j+s5i2nRuE6+20wsEBmu0JtcfPw3T3T7oYgW4W eyRlSA2ziw/MnvBL5cP8cHnbZeuz144Ekl1jb5aMkkIoOTgD16Y1EhgCJPRBoJwPQg8KSh BAihxfoweUOf8gqNtFM8r7gSJaJBv79R22cFrjogP4roQgmjfk+9TZL5qlHXLQ== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1793244578; b=UJintDbUtK+2GMJC5sp0moY9Q4UTw3ZG0aYA3oZJpwcDIcZjvOU+C56sS/s7XWEkIrV1S+ Zp0Z170npFczbJVrVjj+ISDGYZ8iV5EChY5HJDEGo/Hey8yuOVMJP8/gAOap/riJmR/cZQ rRvSYi9CvRqr04AileDNjGlHd72kfzrAkMNS95x4Hcrg4W6JBktSm21mwYHTCvPrVjplut XpCNBXonFYbPCPBA9+a3T2gNRI4GMtQpkz5naRXOOQ287DXuR9Br1VKNB7N4VM+d6adBrZ OmDFqWF9Iw9PAjEFD81sWRlipJ9Pa9IUwNz4AetIPRUW/puqryeV4yBgIv5ncg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1793244578; 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=9i5FiCyB4GUPytb24GT9zLW63xXL6JtGOA/PuucnwSs=; b=QObaKaWSMTnkERpr5Ronm0F8RU0xP62XLEtGpNqp9aDvi4Qb3pI3mOK4YUl69EL+Fb+D1u SdoMUJ5BsB09/G79W9HhMH1Wj9ksiFw82kCzok41HXvzjx5n/+TiO692mgaQUpUHDW7EXZ c5/4neKsnvbIE8jrS3O8TFVPEMy63PcbA4TaBqUU/eIy2ypeC9dBYVbMamPhouikp8KZCJ infHymrcwLwoPqtOS159pUHM20dGsVP/I48CkLjm3JUOBz3LDWOOG3pfPUFDWK73Pa+1/c Ayu2TTrHyv7lbJoDaT6VIDJskH+cIkRtU0+4j+dtuqu9tPKtfx4TuJyn3whfTw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4jFV8f0TK9zL5J for ; Thu, 29 Oct 2026 03:29:38 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 1fa6b by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Thu, 29 Oct 2026 03:29:38 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Gilad Ben Yakov From: Arthur Kiyanovski Subject: git: a6205766b300 - main - ena: Fix RSS not working after driver reload List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: Commit messages for all branches of the src repository List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list 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: a6205766b300e83d3aa2ddc740707987f3c3c97e Auto-Submitted: auto-generated Date: Thu, 29 Oct 2026 03:29:38 +0000 Message-Id: <6ae2bda2.1fa6b.9b2c519@gitrepo.freebsd.org> The branch main has been updated by akiyano: URL: https://cgit.FreeBSD.org/src/commit/?id=a6205766b300e83d3aa2ddc740707987f3c3c97e commit a6205766b300e83d3aa2ddc740707987f3c3c97e Author: Gilad Ben Yakov AuthorDate: 2026-05-19 10:18:37 +0000 Commit: Arthur Kiyanovski CommitDate: 2026-10-29 03:25:50 +0000 ena: Fix RSS not working after driver reload When reloading the driver (kldunload/kldload), ena_rss_init_default_deferred() is called before ena_attach() completes. At this point, devclass_get_softc() returns NULL for all devices because the adapter structs have not been populated yet. As a result, ena_rss_init_default() is never called and ENA_FLAG_RSS_ACTIVE is never set. Later, in ena_up_complete(), the code checks the flag, finds it unset, and skips ena_rss_configure() entirely. RSS is never initialized, and all traffic is directed to queue 0. Remove the ENA_FLAG_RSS_ACTIVE gate in ena_up_complete() and always call ena_rss_configure(), which initialises the table when tbl_log_size is zero. The deferred SYSINIT is now redundant, so remove it. Reviewed by: cperciva Fixes: 9b8d05b8ac78 ("Add support for Amazon Elastic Network Adapter (ENA) NIC") MFC after: 3 days Sponsored by: Amazon, Inc. --- sys/dev/ena/ena.c | 13 ++++++------- sys/dev/ena/ena_rss.c | 33 --------------------------------- sys/dev/ena/ena_sysctl.c | 2 +- 3 files changed, 7 insertions(+), 41 deletions(-) diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c index b16e8ff324be..74594fdb1496 100644 --- a/sys/dev/ena/ena.c +++ b/sys/dev/ena/ena.c @@ -2133,14 +2133,13 @@ ena_up_complete(struct ena_adapter *adapter) { int rc; - if (likely(ENA_FLAG_ISSET(ENA_FLAG_RSS_ACTIVE, adapter))) { - rc = ena_rss_configure(adapter); - if (rc != 0) { - ena_log(adapter->pdev, ERR, - "Failed to configure RSS\n"); - return (rc); - } + rc = ena_rss_configure(adapter); + if (rc != 0) { + ena_log(adapter->pdev, ERR, + "Failed to configure RSS\n"); + return (rc); } + ENA_FLAG_SET_ATOMIC(ENA_FLAG_RSS_ACTIVE, adapter); rc = ena_change_mtu(adapter->ifp, if_getmtu(adapter->ifp)); if (unlikely(rc != 0)) diff --git a/sys/dev/ena/ena_rss.c b/sys/dev/ena/ena_rss.c index 4680e476bb19..746db69970ca 100644 --- a/sys/dev/ena/ena_rss.c +++ b/sys/dev/ena/ena_rss.c @@ -198,39 +198,6 @@ ena_rss_configure(struct ena_adapter *adapter) return (0); } -static void -ena_rss_init_default_deferred(void *arg) -{ - struct ena_adapter *adapter; - devclass_t dc; - int max; - int rc; - - dc = devclass_find("ena"); - if (unlikely(dc == NULL)) { - ena_log_raw(ERR, "SYSINIT: %s: No devclass ena\n", __func__); - return; - } - - max = devclass_get_maxunit(dc); - while (max-- >= 0) { - adapter = devclass_get_softc(dc, max); - if (adapter != NULL) { - rc = ena_rss_init_default(adapter); - ENA_FLAG_SET_ATOMIC(ENA_FLAG_RSS_ACTIVE, adapter); - if (unlikely(rc != 0)) { - ena_log(adapter->pdev, WARN, - "WARNING: RSS was not properly initialized," - " it will affect bandwidth\n"); - ENA_FLAG_CLEAR_ATOMIC(ENA_FLAG_RSS_ACTIVE, - adapter); - } - } - } -} -SYSINIT(ena_rss_init, SI_SUB_KICK_SCHEDULER, SI_ORDER_SECOND, - ena_rss_init_default_deferred, NULL); - int ena_rss_indir_get(struct ena_adapter *adapter, uint32_t *table) { diff --git a/sys/dev/ena/ena_sysctl.c b/sys/dev/ena/ena_sysctl.c index d244b015df41..62fded932025 100644 --- a/sys/dev/ena/ena_sysctl.c +++ b/sys/dev/ena/ena_sysctl.c @@ -1245,7 +1245,7 @@ ena_sysctl_rss_indir_table_size(SYSCTL_HANDLER_ARGS) int actual_size; actual_size = ena_get_rss_indirection_table_size(adapter); - if (actual_size == 0) + if (!ENA_FLAG_ISSET(ENA_FLAG_RSS_ACTIVE, adapter) || actual_size == 0) return (EOPNOTSUPP); return sysctl_handle_int(oidp, &actual_size, 0, req);