git: c017bceda48c - main - ixgbe: Reject Flow Director with SR-IOV
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 08 Aug 2026 11:59:21 UTC
The branch main has been updated by kbowling:
URL: https://cgit.FreeBSD.org/src/commit/?id=c017bceda48c766780ab1d2239b296242fcf9cf2
commit c017bceda48c766780ab1d2239b296242fcf9cf2
Author: Kevin Bowling <kbowling@FreeBSD.org>
AuthorDate: 2026-08-08 11:11:09 +0000
Commit: Kevin Bowling <kbowling@FreeBSD.org>
CommitDate: 2026-08-08 11:59:13 +0000
ixgbe: Reject Flow Director with SR-IOV
The iflib Flow Director path does not assign filters using the
absolute queue and pool identifiers required by SR-IOV. Reject the
combination during preflight validation rather than allowing an
unsupported configuration to alter the PF receive path.
The loader tunable is fixed before VFs can be created, so validation
also prevents the reverse ordering of this combination.
MFC after: 2 weeks
---
share/man/man4/ix.4 | 3 ++-
sys/dev/ixgbe/if_sriov.c | 5 +++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/share/man/man4/ix.4 b/share/man/man4/ix.4
index 822a8040caf4..33b723c0fcd2 100644
--- a/share/man/man4/ix.4
+++ b/share/man/man4/ix.4
@@ -29,7 +29,7 @@
.\"
.\" * Other names and brands may be claimed as the property of others.
.\"
-.Dd August 7, 2026
+.Dd August 8, 2026
.Dt IX 4
.Os
.Sh NAME
@@ -168,6 +168,7 @@ Enable Flow Director.
Flow Director directs Ethernet packets to the core where the
packet consuming process, application, container,
or microservice is running.
+SR-IOV configuration is rejected when Flow Director is enabled.
.It Va hw.ix.enable_rss
Enable Receive-Side Scaling (RSS).
When RSS is enabled, all of the receive data processing for
diff --git a/sys/dev/ixgbe/if_sriov.c b/sys/dev/ixgbe/if_sriov.c
index ff873d4652f8..4e98b2b5de0c 100644
--- a/sys/dev/ixgbe/if_sriov.c
+++ b/sys/dev/ixgbe/if_sriov.c
@@ -1698,6 +1698,11 @@ ixgbe_iov_validate(struct ixgbe_softc *sc, u16 num_vfs)
if (sc->vfs != NULL || sc->vf_mac_filters != NULL ||
(sc->feat_en & IXGBE_FEATURE_SRIOV))
return (EBUSY);
+ if (sc->feat_en & IXGBE_FEATURE_FDIR) {
+ device_printf(sc->dev,
+ "Flow Director is not supported with SR-IOV\n");
+ return (ENOTSUP);
+ }
if (sc->intr_type != IFLIB_INTR_MSIX) {
device_printf(sc->dev, "SR-IOV requires MSI-X\n");
return (ENOTSUP);