diff options
author | gallatin <gallatin@FreeBSD.org> | 2008-01-15 20:34:49 +0000 |
---|---|---|
committer | gallatin <gallatin@FreeBSD.org> | 2008-01-15 20:34:49 +0000 |
commit | 0957a8f3c9fa6c7e136e9a27bf9226045545ae8f (patch) | |
tree | 01abb766903631b9fe718b5563f563b63e330fdc /sys/dev/mxge/mxge_rss_ethp_z8e.c | |
parent | 691c0d0e077148c83c745945f174b40fcebb9200 (diff) | |
download | FreeBSD-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.c | 47 |
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); + |