return modembits;
 }
 
+static void gsm_hex_dump_bytes(const char *fname, const u8 *data,
+                              unsigned long len)
+{
+       char *prefix;
+
+       if (!fname) {
+               print_hex_dump(KERN_INFO, "", DUMP_PREFIX_NONE, 16, 1, data, len,
+                              true);
+               return;
+       }
+
+       prefix = kasprintf(GFP_KERNEL, "%s: ", fname);
+       if (!prefix)
+               return;
+       print_hex_dump(KERN_INFO, prefix, DUMP_PREFIX_OFFSET, 16, 1, data, len,
+                      true);
+       kfree(prefix);
+}
+
 /**
  *     gsm_print_packet        -       display a frame for debug
  *     @hdr: header to print before decode
        else
                pr_cont("(F)");
 
-       print_hex_dump_bytes("", DUMP_PREFIX_NONE, data, dlen);
+       gsm_hex_dump_bytes(NULL, data, dlen);
 }
 
 
                }
 
                if (debug & 4)
-                       print_hex_dump_bytes("gsm_data_kick: ",
-                                            DUMP_PREFIX_OFFSET,
-                                            gsm->txframe, len);
+                       gsm_hex_dump_bytes(__func__, gsm->txframe, len);
                if (gsmld_output(gsm, gsm->txframe, len) <= 0)
                        break;
                /* FIXME: Can eliminate one SOF in many more cases */
                return -ENOSPC;
        }
        if (debug & 4)
-               print_hex_dump_bytes("gsmld_output: ", DUMP_PREFIX_OFFSET,
-                                    data, len);
+               gsm_hex_dump_bytes(__func__, data, len);
        return gsm->tty->ops->write(gsm->tty, data, len);
 }
 
        char flags = TTY_NORMAL;
 
        if (debug & 4)
-               print_hex_dump_bytes("gsmld_receive: ", DUMP_PREFIX_OFFSET,
-                                    cp, count);
+               gsm_hex_dump_bytes(__func__, cp, count);
 
        for (; count; count--, cp++) {
                if (fp)