From 0957a8f3c9fa6c7e136e9a27bf9226045545ae8f Mon Sep 17 00:00:00 2001 From: gallatin Date: Tue, 15 Jan 2008 20:34:49 +0000 Subject: 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. --- sys/dev/mxge/mxge_rss_ethp_z8e.c | 47 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 sys/dev/mxge/mxge_rss_ethp_z8e.c (limited to 'sys/dev/mxge/mxge_rss_ethp_z8e.c') 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 +__FBSDID("$FreeBSD$"); +#include +#include +#include +#include +#include +#include +#include +#include + +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); + -- cgit v1.1