summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/zd1211rw/zd_util.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@g5.osdl.org>2006-07-05 13:02:56 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-05 13:02:56 -0700
commite8f75588dd5885868147b329ced4a5093dc6402e (patch)
tree2baffe32d3a7aafe0e3c90434c46b5a59f198478 /drivers/net/wireless/zd1211rw/zd_util.c
parente340221acda6bc0bf05a0ff6e6114902c4307670 (diff)
parent2c1a108890c5b57cf3f7d7909f55c4fae0f52f19 (diff)
Merge branch 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
* 'upstream-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6: (39 commits) [PATCH] myri10ge - Export more parameters to ethtool [PATCH] myri10ge - Use dev_info() when printing parameters after probe [PATCH] myri10ge - Drop ununsed nvidia chipset id [PATCH] myri10ge - Drop unused pm_state [PATCH] Fix freeing of net device [PATCH] remove dead entry in net wan Kconfig [PATCH] NI5010 netcard cleanup [PATCH] lock validator: fix ns83820.c irq-flags bug [PATCH] pcnet32: Cleanup rx buffers after loopback test. [PATCH] pcnet32: Suspend the chip rather than restart when changing multicast/promisc [PATCH] pcnet32: Handle memory allocation failures cleanly when resizing tx/rx rings [PATCH] pcnet32: Use kcalloc instead of kmalloc and memset [PATCH] pcnet32: Fix off-by-one in get_ringparam [PATCH] pcnet32: Use PCI_DEVICE macro [PATCH] pcnet32: Fix Section mismatch error [PATCH] Add support for the Cicada 8201 PHY [PATCH] zd1211rw: disable TX queue during stop [PATCH] ZyDAS ZD1211 USB-WLAN driver [PATCH] softmac: fix build-break from 881ee6999d66c8fc903b429b73bbe6045b38c549 [PATCH] CONFIG_WIRELESS_EXT is neccessary after all ...
Diffstat (limited to 'drivers/net/wireless/zd1211rw/zd_util.c')
-rw-r--r--drivers/net/wireless/zd1211rw/zd_util.c82
1 files changed, 82 insertions, 0 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_util.c b/drivers/net/wireless/zd1211rw/zd_util.c
new file mode 100644
index 00000000000..d20036c15d1
--- /dev/null
+++ b/drivers/net/wireless/zd1211rw/zd_util.c
@@ -0,0 +1,82 @@
+/* zd_util.c
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * Utility program
+ */
+
+#include "zd_def.h"
+#include "zd_util.h"
+
+#ifdef DEBUG
+static char hex(u8 v)
+{
+ v &= 0xf;
+ return (v < 10 ? '0' : 'a' - 10) + v;
+}
+
+static char hex_print(u8 c)
+{
+ return (0x20 <= c && c < 0x7f) ? c : '.';
+}
+
+static void dump_line(const u8 *bytes, size_t size)
+{
+ char c;
+ size_t i;
+
+ size = size <= 8 ? size : 8;
+ printk(KERN_DEBUG "zd1211 %p ", bytes);
+ for (i = 0; i < 8; i++) {
+ switch (i) {
+ case 1:
+ case 5:
+ c = '.';
+ break;
+ case 3:
+ c = ':';
+ break;
+ default:
+ c = ' ';
+ }
+ if (i < size) {
+ printk("%c%c%c", hex(bytes[i] >> 4), hex(bytes[i]), c);
+ } else {
+ printk(" %c", c);
+ }
+ }
+
+ for (i = 0; i < size; i++)
+ printk("%c", hex_print(bytes[i]));
+ printk("\n");
+}
+
+void zd_hexdump(const void *bytes, size_t size)
+{
+ size_t i = 0;
+
+ do {
+ dump_line((u8 *)bytes + i, size-i);
+ i += 8;
+ } while (i < size);
+}
+#endif /* DEBUG */
+
+void *zd_tail(const void *buffer, size_t buffer_size, size_t tail_size)
+{
+ if (buffer_size < tail_size)
+ return NULL;
+ return (u8 *)buffer + (buffer_size - tail_size);
+}