Date: Mon, 01 May 2006 06:46:08 +0200 From: rmgls@wanadoo.dr To: freebsd-current@freebsd.org Subject: re: iwi driver Message-ID: <20060501044610.D404B700008A@mwinf1401.wanadoo.fr>
next in thread | raw e-mail | index | archive | help
On Monday 01 May 2006 00:20, Max Laier wrote:
> Here is a small patch to build a "debug.firmware" sysctl. Should give:
> "iwi_bss/300/191142" for the latest firmware from net/iwi-firmware-kmod
>
> Any comments on the patch? Will commit shortly otherwise.
...
hello all,
many thanks to all who helped.
the problem is solved and the driver works perfectly now.
I will test the patch and report soon.
best regards
Raoul
rmgls@freebsd.org
=====================================
Index: subr_firmware.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /usr/store/mlaier/fcvs/src/sys/kern/subr_firmware.c,v
retrieving revision 1.1
diff -u -r1.1 subr_firmware.c
=2D-- subr_firmware.c 29 Jan 2006 02:52:41 -0000 1.1
+++ subr_firmware.c 30 Apr 2006 22:11:05 -0000
@@ -32,6 +32,8 @@
#include <sys/malloc.h>
#include <sys/queue.h>
#include <sys/taskqueue.h>
+#include <sys/sbuf.h>
+#include <sys/sysctl.h>
#include <sys/systm.h>
#include <sys/lock.h>
#include <sys/mutex.h>
@@ -41,6 +43,8 @@
#include <sys/proc.h>
#include <sys/module.h>
=20
+static int sysctl_debug_firmware(SYSCTL_HANDLER_ARGS);
+
#define FIRMWARE_MAX 30
static char *name_unload =3D "UNLOADING";
static struct firmware firmware_table[FIRMWARE_MAX];
@@ -48,6 +52,49 @@
struct mtx firmware_mtx;
MTX_SYSINIT(firmware, &firmware_mtx, "firmware table", MTX_DEF);
=20
+static int
+sysctl_debug_firmware(SYSCTL_HANDLER_ARGS)
+{
+ struct firmware *fp;
+ struct sbuf sb;
+ int error, i, count =3D 0;
+
+ for (i =3D 0; i < FIRMWARE_MAX; i++) {
+ fp =3D &firmware_table[i];
+ if (fp->name !=3D NULL)
+ count++;
+ }
+
+ if (count =3D=3D 0)
+ return (sysctl_handle_string(oidp, "NONE", 5, req));
+
+ sbuf_new(&sb, NULL, count * 32 + 2, SBUF_FIXEDLEN);
+
+ sbuf_printf(&sb, "\n");
+
+ mtx_lock(&firmware_mtx);
+ for (i =3D 0; i < FIRMWARE_MAX; i++) {
+ fp =3D &firmware_table[i];
+ if (fp->name !=3D NULL) {
+ if (count-- <=3D 0)
+ sbuf_printf(&sb, "...\n");
+ else
+ sbuf_printf(&sb, "\t%16s/%u/%zi\n", fp->name,
+ fp->version, fp->datasize);
+ }
+ }
+ mtx_unlock(&firmware_mtx);
+
+ sbuf_trim(&sb);
+ sbuf_finish(&sb);
+ error =3D sysctl_handle_string(oidp, sbuf_data(&sb), sbuf_len(&sb), req);
+ sbuf_delete(&sb);
+
+ return (error);
+}
+SYSCTL_OID(_debug, OID_AUTO, firmware, CTLTYPE_STRING|CTLFLAG_RD, NULL, 0,
+ sysctl_debug_firmware, "A", "Loaded firmware images");
+
/*
* Register a firmware image with the specified name. The
* image name must not already be registered. If this is a
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060501044610.D404B700008A>
