From nobody Fri Nov 28 20:58:23 2025 X-Original-To: dev-commits-src-branches@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 4dJ5HT2VNVz6JH7v for ; Fri, 28 Nov 2025 20:58:29 +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" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4dJ5HT14sbz3cLM for ; Fri, 28 Nov 2025 20:58:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764363509; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RvZrJRQHPEPA3WDhaJDEGt8bkDgq5Eo9TAaUDs0iXaE=; b=Au8TiUZhUUWQ6CKBgbF6knARQmORjBmxwLZkYIOHcu0LxdBCBnpa+WBd3ECcCMQxRO7co5 cUU+vbYcyinRm/mVQhCkH8r38IvG1Y3yWcV8gOw0uvxqjI/jMvkNLA8Hb1V2/uNF5721O6 ejg+v1gWhGHNhTQuYJjSVnXdNrdsDw1nOANha7b8oBkAbhR6WPcp94TzvQbycmS4o/KcVK eOb/kGH1Q+KXGTpovqaa57y+3uCHMFCiw0M7GO9z38llBaxwxPYELKcqRMw/kZY4PDhjl2 fnJbm3xc63dUeYIGZF6EXH1j7O1svmlznVSWcLN3Bo3orNJllgqnrButuwfm6g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764363509; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=RvZrJRQHPEPA3WDhaJDEGt8bkDgq5Eo9TAaUDs0iXaE=; b=Y2YErO8jQr3CA8VsVwMlehZns940byfDI5QXN2Z0GFpqTFZ3OAdzUmP2EMOMNoyMhwWTq8 dWr8eOyDJmjFLLs6hUMm6szPKX8JHRgzqa1OFo78HXgEyaxM94G6BepjHlWHsS8cM987Kf 6Jv5Y85uWlopVVvtFCBmU6QkSWDhrU9J0EiFJ1BWwO1nqA2LNJ9OTOrfkCBicSVKGNbih0 9iOgtKwFRBne6UdF3IWmcnI5NqdvpKfL8qryUxzokxu2s/bXDs0j32/RiNxNOxsTmbqNk/ 7j4asHChA1JLmkjL9NxRPLoV61p3+2DwiE2U8gJfF08z3iYgD0du77iphOmBXQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1764363509; a=rsa-sha256; cv=none; b=pyBUD6a8NiqJL0gsKgmkppfZstvVlu3j91t6SBA9mWvJ1h4+BPR4IS4kdtVWn/mjrxqYdB 6dtfXZdlPfS3HfepbdmoepA3YBz7Gi5qua5tyiYnOw8JP32dJSxNtRkSifbM6Yto/pyWPt eSEJ1BNpneTHFIdskK0UyhiY4mtKNl56XjtRAdnRn6jCxb2y7vPDejL0yX10Kdwp8pHrLJ XQYX1yNMMacosCS733dI+2rYzazkPSFjA0Dd5uKtcCnNDG7Z3k/yN+ECd/AJqB1Vv3z4DU 8iyD6bX86hDCuipN72mxmHxomy4li2ta11nefAwIQY3XCkonryzfdrlbkVC6eQ== 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 4dJ5HS4RSfz3F0 for ; Fri, 28 Nov 2025 20:58:28 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 30da7 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Fri, 28 Nov 2025 20:58:23 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Krzysztof Galazka Subject: git: 18e83edd1378 - stable/15 - igb(4): Fix VLAN support on VFs List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-branches@freebsd.org Sender: owner-dev-commits-src-branches@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kgalazka X-Git-Repository: src X-Git-Refname: refs/heads/stable/15 X-Git-Reftype: branch X-Git-Commit: 18e83edd13786718b8c2528b540c91c36275f234 Auto-Submitted: auto-generated Date: Fri, 28 Nov 2025 20:58:23 +0000 Message-Id: <692a0cef.30da7.67d50b8a@gitrepo.freebsd.org> The branch stable/15 has been updated by kgalazka: URL: https://cgit.FreeBSD.org/src/commit/?id=18e83edd13786718b8c2528b540c91c36275f234 commit 18e83edd13786718b8c2528b540c91c36275f234 Author: Krzysztof Galazka AuthorDate: 2025-11-17 15:30:26 +0000 Commit: Krzysztof Galazka CommitDate: 2025-11-28 20:57:44 +0000 igb(4): Fix VLAN support on VFs Virtual Functions are considered untrusted and have no control over VLAN filtering configuration in HW. To allow using VLANs on VF intreface driver has to assume that VLAN HW Filtering is always enabled and pass requests for adding or removing VLAN tags to Physical Function driver using Mailbox API. Signed-off-by: Krzysztof Galazka Approved by: kbowling (mentor) Reviewed by: erj (previous version) Tested by: gowtham.kumar.ks_intel.com Sponsored by: Intel Corporation Differential Revision: https://reviews.freebsd.org/D53245 (cherry picked from commit 1839526b7315cae62efbd2d1493e6243439effcb) --- sys/dev/e1000/if_em.c | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 168648c8c5ea..465e019029d9 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -4023,7 +4023,15 @@ em_if_vlan_register(if_ctx_t ctx, u16 vtag) bit = vtag & 0x1F; sc->shadow_vfta[index] |= (1 << bit); ++sc->num_vlans; - em_if_vlan_filter_write(sc); + if (!sc->vf_ifp) + em_if_vlan_filter_write(sc); + else + /* + * Physical funtion may reject registering VLAN + * but we have no way to inform the stack + * about that. + */ + e1000_vfta_set_vf(&sc->hw, vtag, true); } static void @@ -4036,7 +4044,10 @@ em_if_vlan_unregister(if_ctx_t ctx, u16 vtag) bit = vtag & 0x1F; sc->shadow_vfta[index] &= ~(1 << bit); --sc->num_vlans; - em_if_vlan_filter_write(sc); + if (!sc->vf_ifp) + em_if_vlan_filter_write(sc); + else + e1000_vfta_set_vf(&sc->hw, vtag, false); } static bool @@ -4094,22 +4105,15 @@ em_if_vlan_filter_write(struct e1000_softc *sc) { struct e1000_hw *hw = &sc->hw; - if (sc->vf_ifp) - return; + KASSERT(!sc->vf_ifp, ("VLAN filter write on VF\n")); /* Disable interrupts for lem(4) devices during the filter change */ if (hw->mac.type < em_mac_min) em_if_intr_disable(sc->ctx); for (int i = 0; i < EM_VFTA_SIZE; i++) - if (sc->shadow_vfta[i] != 0) { - /* XXXKB: incomplete VF support, we returned above */ - if (sc->vf_ifp) - e1000_vfta_set_vf(hw, sc->shadow_vfta[i], - true); - else - e1000_write_vfta(hw, i, sc->shadow_vfta[i]); - } + if (sc->shadow_vfta[i] != 0) + e1000_write_vfta(hw, i, sc->shadow_vfta[i]); /* Re-enable interrupts for lem-class devices */ if (hw->mac.type < em_mac_min) @@ -4124,8 +4128,10 @@ em_setup_vlan_hw_support(if_ctx_t ctx) if_t ifp = iflib_get_ifp(ctx); u32 reg; - /* XXXKB: Return early if we are a VF until VF decap and filter - * management is ready and tested. + /* + * Only PFs have control over VLAN HW filtering + * configuration. VFs have to act as if it's always + * enabled. */ if (sc->vf_ifp) return;