Date: Sun, 9 Aug 2026 10:29:32 +0200 From: A FreeBSD User <freebsd@walstatt-de.de> To: Kevin Bowling <kbowling@FreeBSD.org> Cc: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: c30021fe0df9 - main - ixgbe: Report SR-IOV VF status Message-ID: <20260809102255.72603b04@thor.sb211.local> In-Reply-To: <6a782297.3fa92.45daf9@gitrepo.freebsd.org>
index | next in thread | previous in thread | raw e-mail
[-- Attachment #1 --] Am Tage des Herren Sun, 09 Aug 2026 06:47:51 +0000 Kevin Bowling <kbowling@FreeBSD.org> schrieb: > The branch main has been updated by kbowling: > > URL: https://cgit.FreeBSD.org/src/commit/?id=c30021fe0df9e045a17292dbe50dfc054b69871f > > commit c30021fe0df9e045a17292dbe50dfc054b69871f > Author: Kevin Bowling <kbowling@FreeBSD.org> > AuthorDate: 2026-08-08 17:37:56 +0000 > Commit: Kevin Bowling <kbowling@FreeBSD.org> > CommitDate: 2026-08-09 06:46:57 +0000 > > ixgbe: Report SR-IOV VF status > > Expose cached VF configuration, policy, and runtime state through the > iflib VF status method. Include access or trunk VLAN mode, the queue > count selected by the current virtualization mode, negotiated mailbox > API, whether traffic is enabled, and the MDD-blocked and quarantine > state. > > The query runs under the iflib context lock and does not issue mailbox > requests or read hardware registers. > --- > sys/dev/ixgbe/if_ix.c | 1 + > sys/dev/ixgbe/if_sriov.c | 90 +++++++++++++++++++++++++++++++++++++++++++++ > sys/dev/ixgbe/ixgbe_sriov.h | 1 + > 3 files changed, 92 insertions(+) > > diff --git a/sys/dev/ixgbe/if_ix.c b/sys/dev/ixgbe/if_ix.c > index 545516cb7372..2bdfc20df9bc 100644 > --- a/sys/dev/ixgbe/if_ix.c > +++ b/sys/dev/ixgbe/if_ix.c > @@ -380,6 +380,7 @@ static device_method_t ixgbe_if_methods[] = { > DEVMETHOD(ifdi_iov_init, ixgbe_if_iov_init), > DEVMETHOD(ifdi_iov_uninit, ixgbe_if_iov_uninit), > DEVMETHOD(ifdi_iov_vf_add, ixgbe_if_iov_vf_add), > + DEVMETHOD(ifdi_vf_status, ixgbe_if_vf_status), > #endif /* PCI_IOV */ > DEVMETHOD_END > }; > diff --git a/sys/dev/ixgbe/if_sriov.c b/sys/dev/ixgbe/if_sriov.c > index 4e98b2b5de0c..93555d11e72e 100644 > --- a/sys/dev/ixgbe/if_sriov.c > +++ b/sys/dev/ixgbe/if_sriov.c > @@ -1686,6 +1686,96 @@ ixgbe_mbx_pending(struct ixgbe_softc *sc) > return (false); > } > > +static const char * > +ixgbe_vf_api_version(uint16_t api_ver) > +{ > + switch (api_ver) { > + case ixgbe_mbox_api_10: > + return ("1.0"); > + case ixgbe_mbox_api_20: > + return ("2.0"); > + case ixgbe_mbox_api_11: > + return ("1.1"); > + case ixgbe_mbox_api_12: > + return ("1.2"); > + case ixgbe_mbox_api_13: > + return ("1.3"); > + case ixgbe_mbox_api_14: > + return ("1.4"); > + case ixgbe_mbox_api_15: > + return ("1.5"); > + case ixgbe_mbox_api_16: > + return ("1.6"); > + default: > + return (NULL); > + } > +} > + > +int > +ixgbe_if_vf_status(if_ctx_t ctx, nvlist_t *status) > +{ > + struct ixgbe_softc *sc; > + struct ixgbe_vf *vf; > + const char *api_ver; > + nvlist_t **vfs; > + int error, i; > + > + sc = iflib_get_softc(ctx); > + if (sc->num_vfs == 0) > + return (ENXIO); > + vfs = mallocarray(sc->num_vfs, sizeof(*vfs), M_IXGBE_SRIOV, > + 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 & IXGBE_VF_ACTIVE) != 0); > + nvlist_add_bool(vfs[i], IFVF_STATUS_INITIALIZED, > + (vf->flags & IXGBE_VF_CTS) != 0); > + nvlist_add_binary(vfs[i], IFVF_STATUS_MAC, vf->ether_addr, > + 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->num_vlans); > + nvlist_add_number(vfs[i], IFVF_STATUS_NUM_QUEUES, > + ixgbe_vf_queues(sc->iov_mode)); > + nvlist_add_bool(vfs[i], IFVF_STATUS_ALLOW_SET_MAC, > + (vf->flags & IXGBE_VF_CAP_MAC) != 0); > + nvlist_add_bool(vfs[i], IFVF_STATUS_ALLOW_SET_VLAN, > + (vf->flags & IXGBE_VF_CAP_VLAN) != 0); > + nvlist_add_bool(vfs[i], IFVF_STATUS_MAC_ANTI_SPOOF, > + (vf->flags & IXGBE_VF_ANTI_SPOOF) != 0); > + nvlist_add_bool(vfs[i], IFVF_STATUS_ALLOW_PROMISC, > + (vf->flags & IXGBE_VF_ALLOW_PROMISC) != 0); > + nvlist_add_bool(vfs[i], IFVF_STATUS_TRAFFIC_ENABLED, > + (vf->flags & IXGBE_VF_TRAFFIC_DISABLED) == 0); > + nvlist_add_bool(vfs[i], IFVF_STATUS_MDD_BLOCKED, > + (vf->flags & IXGBE_VF_MDD_BLOCKED) != 0); > + nvlist_add_bool(vfs[i], IFVF_STATUS_QUARANTINED, > + (vf->flags & IXGBE_VF_QUARANTINED) != 0); > + api_ver = ixgbe_vf_api_version(vf->api_ver); > + if (api_ver != NULL) > + nvlist_add_string(vfs[i], IFVF_STATUS_API_VERSION, > + api_ver); > + } > + 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_IXGBE_SRIOV); > + return (error); > +} > + > int > ixgbe_iov_validate(struct ixgbe_softc *sc, u16 num_vfs) > { > diff --git a/sys/dev/ixgbe/ixgbe_sriov.h b/sys/dev/ixgbe/ixgbe_sriov.h > index de0485f6e9a2..3bd86fe06c1b 100644 > --- a/sys/dev/ixgbe/ixgbe_sriov.h > +++ b/sys/dev/ixgbe/ixgbe_sriov.h > @@ -85,6 +85,7 @@ > > int ixgbe_if_iov_vf_add(if_ctx_t, u16, const nvlist_t *); > int ixgbe_if_iov_init(if_ctx_t, u16, const nvlist_t *); > +int ixgbe_if_vf_status(if_ctx_t, nvlist_t *); > int ixgbe_iov_validate(struct ixgbe_softc *, u16); > void ixgbe_if_iov_uninit(if_ctx_t); > void ixgbe_initialize_iov(struct ixgbe_softc *); > The commit seems to disturb build kernel: [...] /usr/src/sys/dev/ixgbe/if_sriov.c:1707:7: error: use of undeclared identifier 'ixgbe_mbox_api_16' 1707 | case ixgbe_mbox_api_16: | ^~~~~~~~~~~~~~~~~ 1 error generated. *** Error code 1 Stop. make[4]: stopped making "all" in /usr/src/sys/modules/ix Kind regards, O. Hartmann -- A FreeBSD user [-- Attachment #2 --] -----BEGIN PGP SIGNATURE----- iJEEARYKADkWIQRQheDybVktG5eW/1Kxzvs8OqokrwUCang6hxsUgAAAAAAEAA5t YW51MiwyLjUrMS4xMiwyLDMACgkQsc77PDqqJK8aJQEA8qrgi3Dscamirurzj0WF h/bglFYnisHtdylovBeJ1U8A/0wI4AvUJ9E9O3uXo/smSJ5oQIQTRtwPuXgVO87c gM4J =PVbu -----END PGP SIGNATURE-----home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20260809102255.72603b04>
