From nobody Sun Jul 19 03:09: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 4h2pXz3ltFz6lT2g for ; Sun, 19 Jul 2026 03:09:55 +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 "YR1" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4h2pXz1gTHz3W7b for ; Sun, 19 Jul 2026 03:09:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1784430595; 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=t/r9QvdArCFg5BrTkt8Ak2OzmN+v0CKFSOOeL2Z6GE0=; b=Yh+W34heSCpPmZOxiBF5u3EAAq49RCGwAVEIRjscYH+engca55LIi1XEht5MK58vQk1M/3 UTb5R3K/Mjlafg3DHMg8TaYlk3abBs/EvTQOE0sEu+3YCKCz43y6MgncIWsUvKSATe9yak Omytd9eos6CBS4E1/NAgTxVyIj+K3L1ip8xno2QvZ1BJveUmKuPY5LXym3vaDLG3mV25Gr 3GBZGLFPWjjJChPr3aABy4pWZ3TzqkOS2hXi+SoK8/bg6QLYhkWabEBdjm9R8+OBeQXMBn u0WAssY5ATVeVhpbAb/ZnkwHtOQsRRonUHkn1j+C9+jtVCmrGg5weHKY5BaxZg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1784430595; a=rsa-sha256; cv=none; b=mIjmQZtIpKYmm0MiZLv/zj13yBeYww2T7FIzh5t2ruy3uZkBkt6s7dbFb1vDs+ZwBoLVFK tFZqudTIFDQSWEqwMaYn/IWTFhOAo9uIcSuGurpJTToaJ6lLYFWiCmGZFzoxCoadQFRazP 9m/FRkH4Ftndr7xSaTiijUAWnULnUeQ/k0/cXFdQoiUSvZmDFo4WablcY0jLKtT68oSEIu fQfUrzSDfZ5claKDG5FDeNhJN/v1GE8TPrLzrdR+cKHNGVYiuuq+GxYJxdmeHRpWHhAJ4G 98XxrraZFj4HaoXBIfWY6FCfIsCv0L7BXhoTaqNQ8SlsZsfkVx+uWfJuvZFPrA== 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=1784430595; 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=t/r9QvdArCFg5BrTkt8Ak2OzmN+v0CKFSOOeL2Z6GE0=; b=Fe/PD/tC8r/xaSslat8Uf1TscFuf5Q4yL9FOIvCrwBcLH9VURUT6mCdzpP1biYVwZ5muBI mJg/S+yabg8swdemILRgxK3kiP3t6mbFvVtMeBLz/ZpZWJIfT1rx5QMtcxRqulR63TrrZl SAvQ3eBJ3dsg4PQLyjbpSlOhqZb7u4CrtTxyo+l6ngJveHGf4yA6x4Z4uPK7osniveTjIf Gqq0HQsy26cjhTFws1+F5Q1Lbqu3+xqadIr1Ra4B4qrZ7EzWE3xEdD4fLYS/QbwakO2ALw 8K3mnjlOAlDKL54nNoztSt2Xxm0s1ssurh0XziWb/avKvj79eE5rJJQswYRvEQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4h2pXy6TVszxJs for ; Sun, 19 Jul 2026 03:09:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 186d5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 19 Jul 2026 03:09:49 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Cc: Nick Price From: Adrian Chadd Subject: git: dc12e3e0e72a - main - dpaa2: Apply if_flags and MAC filters in dpaa2_ni_init() 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 List-Id: 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: adrian X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: dc12e3e0e72a73f1ad1a14d8d0fa4e2147151720 Auto-Submitted: auto-generated Date: Sun, 19 Jul 2026 03:09:49 +0000 Message-Id: <6a5c3ffd.186d5.2cc6283@gitrepo.freebsd.org> The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=dc12e3e0e72a73f1ad1a14d8d0fa4e2147151720 commit dc12e3e0e72a73f1ad1a14d8d0fa4e2147151720 Author: Nick Price AuthorDate: 2026-07-19 02:27:36 +0000 Commit: Adrian Chadd CommitDate: 2026-07-19 03:09:30 +0000 dpaa2: Apply if_flags and MAC filters in dpaa2_ni_init() dpaa2_ni_init() only enabled the DPNI object; it never pushed the promiscuous/allmulti state or the multicast filter table to the MC firmware. The SIOCSIFFLAGS handler ignores flag changes that arrive while the interface is down, yet still latches them into sc->if_flags, so a promiscuous mode request made before the first up was silently lost and could never be applied afterwards: the up path runs dpaa2_ni_init(), which did not read the flags, and every later SIOCSIFFLAGS compares against the already-latched value and sees no change. This is exactly what happens when if_bridge adds a dpni member while the dpni is still down, e.g. rc.conf's create_args_bridge0="... addm dpni0" running at bridge clone time, before ifconfig_dpni0="up" is processed. bridge_ioctl_add() puts the member into promiscuous mode at addm time; the request never reaches the firmware, so the DPNI continues to hardware-filter unicast destined to other MACs. ifconfig still reports PROMISC (a stack-level flag), which makes the failure invisible: the host stays reachable only via the DPNI's own MAC address (e.g. with net.link.bridge.inherit_mac=1), while bridged epair/vnet jail traffic is silently dropped on RX. Reapply both pieces of administrative state after enabling the DPNI, as other NIC drivers do in their init path. This also restores multicast memberships joined while the interface was down. PR: 292006 Reported by: jhibbits Signed-off-by: Nick Price Reviewed by: jhibbits Differential Revision: https://reviews.freebsd.org/D58330 --- sys/dev/dpaa2/dpaa2_ni.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sys/dev/dpaa2/dpaa2_ni.c b/sys/dev/dpaa2/dpaa2_ni.c index f85dc41a748c..435b0fdf4085 100644 --- a/sys/dev/dpaa2/dpaa2_ni.c +++ b/sys/dev/dpaa2/dpaa2_ni.c @@ -2491,6 +2491,17 @@ dpaa2_ni_init(void *arg) __func__, error); } + error = dpaa2_ni_setup_if_flags(sc); + if (error) { + device_printf(dev, "%s: failed to update interface flags: " + "error=%d\n", __func__, error); + } + error = dpaa2_ni_update_mac_filters(ifp); + if (error) { + device_printf(dev, "%s: failed to update MAC filters: " + "error=%d\n", __func__, error); + } + DPNI_LOCK(sc); /* Announce we are up and running and can queue packets. */ if_setdrvflagbits(ifp, IFF_DRV_RUNNING, IFF_DRV_OACTIVE);