summaryrefslogtreecommitdiffstats
path: root/sys/dev/mxge/mxge_rss_ethp_z8e.c
diff options
context:
space:
mode:
authorgallatin <gallatin@FreeBSD.org>2008-01-15 20:34:49 +0000
committergallatin <gallatin@FreeBSD.org>2008-01-15 20:34:49 +0000
commit0957a8f3c9fa6c7e136e9a27bf9226045545ae8f (patch)
tree01abb766903631b9fe718b5563f563b63e330fdc /sys/dev/mxge/mxge_rss_ethp_z8e.c
parent691c0d0e077148c83c745945f174b40fcebb9200 (diff)
downloadFreeBSD-src-0957a8f3c9fa6c7e136e9a27bf9226045545ae8f.zip
FreeBSD-src-0957a8f3c9fa6c7e136e9a27bf9226045545ae8f.tar.gz
Add optional support to mxge for MSI-X interrupts and multiple receive
queues (which we call slices). The NIC will steer traffic into up to hw.mxge.max_slices different receive rings based on a configurable hash type (hw.mxge.rss_hash_type). Currently the driver defaults to using a single slice, so the default behavior is unchanged. Also, transmit from non-zero slices is disabled currently.
Diffstat (limited to 'sys/dev/mxge/mxge_rss_ethp_z8e.c')
-rw-r--r--sys/dev/mxge/mxge_rss_ethp_z8e.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/sys/dev/mxge/mxge_rss_ethp_z8e.c b/sys/dev/mxge/mxge_rss_ethp_z8e.c
new file mode 100644
index 0000000..ca7be0e
--- /dev/null
+++ b/sys/dev/mxge/mxge_rss_ethp_z8e.c
@@ -0,0 +1,47 @@
+/*
+ * from: FreeBSD: src/sys/tools/fw_stub.awk,v 1.6 2007/03/02 11:42:53 flz
+ */
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD$");
+#include <sys/param.h>
+#include <sys/errno.h>
+#include <sys/kernel.h>
+#include <sys/module.h>
+#include <sys/linker.h>
+#include <sys/firmware.h>
+#include <sys/systm.h>
+#include <dev/mxge/rss_ethp_z8e.h>
+
+static int
+mxge_rss_ethp_z8e_fw_modevent(module_t mod, int type, void *unused)
+{
+ const struct firmware *fp, *parent;
+ int error;
+ switch (type) {
+ case MOD_LOAD:
+
+ fp = firmware_register("mxge_rss_ethp_z8e", rss_ethp_z8e,
+ (size_t)rss_ethp_z8e_length,
+ rss_ethp_z8e_uncompressed_length, NULL);
+ if (fp == NULL)
+ goto fail_0;
+ parent = fp;
+ return (0);
+ fail_0:
+ return (ENXIO);
+ case MOD_UNLOAD:
+ error = firmware_unregister("mxge_rss_ethp_z8e");
+ return (error);
+ }
+ return (EINVAL);
+}
+
+static moduledata_t mxge_rss_ethp_z8e_fw_mod = {
+ "mxge_rss_ethp_z8e_fw",
+ mxge_rss_ethp_z8e_fw_modevent,
+ 0
+};
+DECLARE_MODULE(mxge_rss_ethp_z8e_fw, mxge_rss_ethp_z8e_fw_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
+MODULE_VERSION(mxge_rss_ethp_z8e_fw, 1);
+MODULE_DEPEND(mxge_rss_ethp_z8e_fw, firmware, 1, 1, 1);
+
OpenPOWER on IntegriCloud