svn commit: r348372 - head/sys/net
Eric Joyner
erj at FreeBSD.org
Wed May 29 22:24:11 UTC 2019
Author: erj
Date: Wed May 29 22:24:10 2019
New Revision: 348372
URL: https://svnweb.freebsd.org/changeset/base/348372
Log:
iflib: provide probe wrapper for vendor drivers
From Jake:
Vendor drivers that exist out-of-tree generally should return
BUS_PROBE_VENDOR from their device probe functions. This helps ensure
that a vendor replacement driver will supersede the in-kernel driver for
a given device.
Currently, if a vendor wants to implement a driver based on iflib, it
will always report BUS_PROBE_DEFAULT.
Add a wrapper function, iflib_device_probe_vendor() which can be used in
place of iflib_device_probe(). This function will just return
BUS_PROBE_VENDOR whenever iflib_device_probe() would return
BUS_PROBE_DEFAULT.
While vendor drivers can already implement such a wrapper themselves,
providing it in the iflib.h header makes it easier for the vendor driver
to do the right thing.
Submitted by: Jacob Keller <jacob.e.keller at intel.com>
Reviewed by: erj@, gallatin@, marius@
MFC after: 1 week
Sponsored by: Intel Corporation
Differential Revision: https://reviews.freebsd.org/D20221
Modified:
head/sys/net/iflib.c
head/sys/net/iflib.h
Modified: head/sys/net/iflib.c
==============================================================================
--- head/sys/net/iflib.c Wed May 29 20:45:31 2019 (r348371)
+++ head/sys/net/iflib.c Wed May 29 22:24:10 2019 (r348372)
@@ -4377,6 +4377,18 @@ iflib_device_probe(device_t dev)
return (ENXIO);
}
+int
+iflib_device_probe_vendor(device_t dev)
+{
+ int probe;
+
+ probe = iflib_device_probe(dev);
+ if (probe == BUS_PROBE_DEFAULT)
+ return (BUS_PROBE_VENDOR);
+ else
+ return (probe);
+}
+
static void
iflib_reset_qvalues(if_ctx_t ctx)
{
Modified: head/sys/net/iflib.h
==============================================================================
--- head/sys/net/iflib.h Wed May 29 20:45:31 2019 (r348371)
+++ head/sys/net/iflib.h Wed May 29 22:24:10 2019 (r348372)
@@ -399,6 +399,13 @@ int iflib_device_suspend(device_t);
int iflib_device_resume(device_t);
int iflib_device_shutdown(device_t);
+/*
+ * Use this instead of iflib_device_probe if the driver should report
+ * BUS_PROBE_VENDOR instead of BUS_PROBE_DEFAULT. (For example, an out-of-tree
+ * driver based on iflib).
+ */
+int iflib_device_probe_vendor(device_t);
+
int iflib_device_iov_init(device_t, uint16_t, const nvlist_t *);
void iflib_device_iov_uninit(device_t);
More information about the svn-src-all
mailing list