From nobody Sun Aug 9 06:47: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 4hHpNl0mJ3z6n9FP for ; Sun, 09 Aug 2026 06:47:51 +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 4hHpNk1jGtz3Tn1 for ; Sun, 09 Aug 2026 06:47:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1786258070; 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=jnH9mA5mDWApcJhhdPof+ryB7EvoP660zxSALWZ4SK8=; b=fCS4PhHXU3bw3/0GwesuHPyvNQZXhCPR71oHhH+ZJkNTErzWlwFw1AyUXuuLzvzlnbgVLc 4g13iW7eBy++PBMGppf5HE2u4KHnJsSRuiu8xHdpQo+tAhXDpxp8GMeapGhUVd6F3TAIYD YCIAIur+EmuqwUjVgTTdCkZ2x1b8uIaZlaX7c2FRT7cSBm2qaoi2VJ7aWivKlBTbitVZU3 LTToA9bFtxTPAwr97X7mV7uQc1/6rUlrEuyDm9e7EoozHGvxf/dqj/W2coGkq/eC9syTYA 1Jo6pds99LMAEYegLlHQ5Ie129ehOglbx8RBu4gZaLulJuWTk/pG3mMpeYCesA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1786258070; a=rsa-sha256; cv=none; b=tIH84BQlQ9FPoLDPliVFrdmLpR1lm6S5CYERepypBRbVUYFRrFpdm71cWigiUx65kWE16d 9TMqASaFRgg7v4xHWxszAUTolDKFI7BpbCc9WcQN1Mqs9fddM6CGQeBLncI59hmetwnm/c zbx6UvrzPbJcjQDeRslU3ML0eCsmoXoF66D+x74coyA/+opn1M9ISSBuTDzlZdsI0geGRo ahCjBxV2rS8KOp49GRckHJkN55dJl6Tt5/xdcMdAR9/Blum1gxFA1OZZDK5g6nC0SyOFaE zhRQ50TY2OtFAnzcZnzaZs9QWSR4QPgOBt2Xnkus2BeHZ3B/B5NdRT2EH9T3pg== 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=1786258070; 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=jnH9mA5mDWApcJhhdPof+ryB7EvoP660zxSALWZ4SK8=; b=NzMSEtmORI87MFAXu1aYTDlG9KL3eyQmt+D1gFl8nQWJk7jGQ2Hqw/QywUEZWevQjKAvzA uoaRyEjcw3QlZ8Xv5LY6ytRxioOCGegI35xg3CXw5fqtzBGXfbFbgphAU8zbbslJwF8llh 5cCOcN6IPShIOKOILiKBhlHdd0Ej7n75p/xvuHT7h+e/NWIFpZrQnd76cYpHQePFDRw4BD CmzHbe9NX2eTa8YUH3CO/BxBa9RC1C8edtaQfe0hPsogz4utCPuRTVPeckQVpMxLOqisvY pqUqzuxx6NHmpLomTeJwJL6c7Fe7N6hl7ruAVIzU7kZIDi7uk+bmWV80AimTGQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hHpNj71V5z1BBD for ; Sun, 09 Aug 2026 06:47:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 3fa8e by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 09 Aug 2026 06:47:49 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kevin Bowling Subject: git: ceb282bbd62e - main - igb: Report SR-IOV VF status 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: kbowling X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ceb282bbd62eed5e84df9abaede0dd183f66997a Auto-Submitted: auto-generated Date: Sun, 09 Aug 2026 06:47:49 +0000 Message-Id: <6a782295.3fa8e.12bc1488@gitrepo.freebsd.org> The branch main has been updated by kbowling: URL: https://cgit.FreeBSD.org/src/commit/?id=ceb282bbd62eed5e84df9abaede0dd183f66997a commit ceb282bbd62eed5e84df9abaede0dd183f66997a Author: Kevin Bowling AuthorDate: 2026-08-08 17:37:20 +0000 Commit: Kevin Bowling CommitDate: 2026-08-09 06:46:57 +0000 igb: Report SR-IOV VF status Expose the cached per-VF configuration through the iflib VF status method. Report mailbox handshake state, MAC address, access or trunk VLAN mode, hardware queue count, administrator policy, and MDD blocking state without issuing mailbox requests or reading hardware registers. --- sys/dev/e1000/if_em.c | 1 + sys/dev/e1000/if_igb_iov.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++ sys/dev/e1000/if_igb_iov.h | 1 + 3 files changed, 60 insertions(+) diff --git a/sys/dev/e1000/if_em.c b/sys/dev/e1000/if_em.c index 44c5ec7a850c..d9db4677bf62 100644 --- a/sys/dev/e1000/if_em.c +++ b/sys/dev/e1000/if_em.c @@ -665,6 +665,7 @@ static device_method_t igb_if_methods[] = { DEVMETHOD(ifdi_iov_init, igb_if_iov_init), DEVMETHOD(ifdi_iov_uninit, igb_if_iov_uninit), DEVMETHOD(ifdi_iov_vf_add, igb_if_iov_vf_add), + DEVMETHOD(ifdi_vf_status, igb_if_vf_status), #endif DEVMETHOD_END }; diff --git a/sys/dev/e1000/if_igb_iov.c b/sys/dev/e1000/if_igb_iov.c index dc4b23397431..e62ca8aa029c 100644 --- a/sys/dev/e1000/if_igb_iov.c +++ b/sys/dev/e1000/if_igb_iov.c @@ -1995,6 +1995,64 @@ igb_iov_validate(struct e1000_softc *sc, u16 num_vfs) return (0); } +int +igb_if_vf_status(if_ctx_t ctx, nvlist_t *status) +{ + struct e1000_softc *sc; + struct igb_vf *vf; + nvlist_t **vfs; + u_int num_queues; + int error, i; + + sc = iflib_get_softc(ctx); + if (sc->num_vfs == 0) + return (ENXIO); + num_queues = sc->hw.mac.type == e1000_82576 ? + IGB_82576_VF_QUEUES : IGB_I350_VF_QUEUES; + vfs = mallocarray(sc->num_vfs, sizeof(*vfs), M_IGB_IOV, + M_WAITOK | M_ZERO); + for (i = 0; i < sc->num_vfs; i++) { + vf = &sc->vfs[i]; + vfs[i] = nvlist_create(0); + nvlist_add_number(vfs[i], IFVF_STATUS_INDEX, i); + nvlist_add_bool(vfs[i], IFVF_STATUS_CONFIGURED, + (vf->flags & IGB_VF_ACTIVE) != 0); + nvlist_add_bool(vfs[i], IFVF_STATUS_INITIALIZED, + (vf->flags & IGB_VF_CTS) != 0); + nvlist_add_binary(vfs[i], IFVF_STATUS_MAC, vf->mac, + ETHER_ADDR_LEN); + if (vf->default_vlan == 0) + nvlist_add_string(vfs[i], IFVF_STATUS_VLAN_MODE, + IFVF_VLAN_MODE_TRUNK); + else { + nvlist_add_string(vfs[i], IFVF_STATUS_VLAN_MODE, + IFVF_VLAN_MODE_ACCESS); + nvlist_add_number(vfs[i], IFVF_STATUS_VLAN, + vf->default_vlan); + } + nvlist_add_number(vfs[i], IFVF_STATUS_VLAN_COUNT, + vf->vlan_count); + nvlist_add_number(vfs[i], IFVF_STATUS_NUM_QUEUES, num_queues); + nvlist_add_bool(vfs[i], IFVF_STATUS_ALLOW_SET_MAC, + (vf->flags & IGB_VF_CAP_MAC) != 0); + nvlist_add_bool(vfs[i], IFVF_STATUS_ALLOW_SET_VLAN, + vf->default_vlan == 0); + nvlist_add_bool(vfs[i], IFVF_STATUS_MAC_ANTI_SPOOF, + (vf->flags & IGB_VF_MAC_ANTI_SPOOF) != 0); + nvlist_add_bool(vfs[i], IFVF_STATUS_ALLOW_PROMISC, + (vf->flags & IGB_VF_ALLOW_PROMISC) != 0); + nvlist_add_bool(vfs[i], IFVF_STATUS_MDD_BLOCKED, + (vf->flags & IGB_VF_MDD_BLOCKED) != 0); + } + nvlist_add_nvlist_array(status, IFVF_STATUS_VFS, + (const nvlist_t * const *)vfs, sc->num_vfs); + error = nvlist_error(status); + for (i = 0; i < sc->num_vfs; i++) + nvlist_destroy(vfs[i]); + free(vfs, M_IGB_IOV); + return (error); +} + int igb_if_iov_init(if_ctx_t ctx, u16 num_vfs, const nvlist_t *config) { diff --git a/sys/dev/e1000/if_igb_iov.h b/sys/dev/e1000/if_igb_iov.h index 8bd576d47649..390e63175c7a 100644 --- a/sys/dev/e1000/if_igb_iov.h +++ b/sys/dev/e1000/if_igb_iov.h @@ -24,6 +24,7 @@ int igb_iov_validate(struct e1000_softc *, u16); int igb_if_iov_init(if_ctx_t, u16, const nvlist_t *); void igb_if_iov_uninit(if_ctx_t); int igb_if_iov_vf_add(if_ctx_t, u16, const nvlist_t *); +int igb_if_vf_status(if_ctx_t, nvlist_t *); void igb_iov_initialize(struct e1000_softc *); void igb_iov_handle_mbx(struct e1000_softc *); void igb_iov_handle_mdd(struct e1000_softc *);