From nobody Fri Nov 28 20:58:23 2025 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 4dJ5HM6xK8z6JH7t for ; Fri, 28 Nov 2025 20:58:23 +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 4dJ5HM4pQ0z3c8b for ; Fri, 28 Nov 2025 20:58:23 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764363503; 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=VFatYG76u5MSdVkAdiJJz4TBxTVKreC9zqg4E2AZ7sHSIaev8Y9e3MqeloYLvW2AWe8RlF 2D/4NY+hPmw27iMLL10L1EyKGI2/d1aCAzsdzVBo5dYgSZu82EFmaY2O6fNg1AiI9SONGo Hi9cfegpGFrQUP7sryCQzr3DprGz4di5XOY51bqFsq6WSx9TCHItFxBUl3bS1N9M7CxBtK NAPnuzl3Uadhu5GhlGFmuASo3b+AlhVRCSmDqu8IOKAp+wdwa/ByGPD2ibGMumM9baGx42 Jw3npV9+OLHl6fEqcx6jsRYz92OFBcpwLxl9qVr3BhSwivVv77avzhZsVOdRsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1764363503; 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=stcA1IxIssCI/1AqDF3YCHLJouiWGA4gHaelxIs1u7qO13H/3mGUeBeZ1PSmY+LPHORJDm 7jEOfReuTtiSAAkY7WeEYuqEWJy+3qj18Ods6NEpbYAmocsqMpS9pNUihpGcOf9oO1r86Y m70YeyAFI7njBHFEgF7vypkY3I0XLeZSguogYA0sJeFyumKs+MbqwSDrl1WSQ1b0ZELME1 rLWKnjubcSm+rIiMyzkpQuBfvYV8IWVU1/2x59RzMbntsd6Im87+Iri8AS11cjfkzKdADm wszY8DUTL1cjLNflUA17OFBckd1TYKR/4XK30bSTxl9cde3bHcQTi2hsqCMaZA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1764363503; a=rsa-sha256; cv=none; b=B1enqZsvz6S+rRSTz6SX8QgwEekD8m/I+Bf0VSEuSGu+VI0bnDUshnc1pNgxqNSR9q60q/ LWVP6tLrWFudaTNEbDmT/GgjuSzWSxTdufITPC8YcYuRGYxg2Z03TxcPuyEm5fnJalqBTn eeEod0NxBmCKaoVEtOCngBoNT9gWYMpClVT01AIdk25OamGvKkt8tN2QyL197PX7VG6KM5 pPyJALflijwodkDhe0xJJPGzrWdCs8rCDRW0o3XyHl5Cogfw1zPOpxzY+MdOK1mU9sezVW E8mGopx1GXrjXuCSsSxJDxUk9ZrVAq8zGNWrvtQLfSowGtbIWhvXb8grbfs/aw== 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 4dJ5HM4LW9z3SP for ; Fri, 28 Nov 2025 20:58:23 +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: 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: 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;