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