Skip site navigation (1)Skip section navigation (2)
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>