kfree(dbgline);
        if (CAPIMSG_COMMAND(data) == CAPI_DATA_B3 &&
            (CAPIMSG_SUBCOMMAND(data) == CAPI_REQ ||
-            CAPIMSG_SUBCOMMAND(data) == CAPI_IND) &&
-           CAPIMSG_DATALEN(data) > 0) {
+            CAPIMSG_SUBCOMMAND(data) == CAPI_IND)) {
                l = CAPIMSG_DATALEN(data);
+               gig_dbg(level, "   DataLength=%d", l);
+               if (l <= 0 || !(gigaset_debuglevel & DEBUG_LLDATA))
+                       return;
+               if (l > 64)
+                       l = 64; /* arbitrary limit */
                dbgline = kmalloc(3*l, GFP_ATOMIC);
                if (!dbgline)
                        return;
 
        /* don't send further B3 messages if disconnected */
        if (bcs->apconnstate < APCONN_ACTIVE) {
-               gig_dbg(DEBUG_LLDATA, "disconnected, discarding ack");
+               gig_dbg(DEBUG_MCMD, "disconnected, discarding ack");
                return;
        }
 
 
        /* don't send further B3 messages if disconnected */
        if (bcs->apconnstate < APCONN_ACTIVE) {
-               gig_dbg(DEBUG_LLDATA, "disconnected, discarding data");
+               gig_dbg(DEBUG_MCMD, "disconnected, discarding data");
                dev_kfree_skb_any(skb);
                return;
        }
        /* Data64 parameter not present */
 
        /* emit message */
-       dump_rawmsg(DEBUG_LLDATA, "DATA_B3_IND", skb->data);
+       dump_rawmsg(DEBUG_MCMD, __func__, skb->data);
        capi_ctr_handle_message(&iif->ctr, ap->id, skb);
 }
 EXPORT_SYMBOL_GPL(gigaset_skb_rcvd);
        struct cardstate *cs = ctr->driverdata;
        struct gigaset_capi_appl *ap;
 
+       gig_dbg(DEBUG_CMD, "%s [%u] l3cnt=%u blkcnt=%u blklen=%u",
+               __func__, appl, rp->level3cnt, rp->datablkcnt, rp->datablklen);
+
        list_for_each_entry(ap, &iif->appls, ctrlist)
                if (ap->id == appl) {
                        dev_notice(cs->dev,
        struct gigaset_capi_appl *ap, *tmp;
        unsigned ch;
 
+       gig_dbg(DEBUG_CMD, "%s [%u]", __func__, appl);
+
        list_for_each_entry_safe(ap, tmp, &iif->appls, ctrlist)
                if (ap->id == appl) {
                        /* remove from any channels */
        u16 handle = CAPIMSG_HANDLE_REQ(skb->data);
 
        /* frequent message, avoid _cmsg overhead */
-       dump_rawmsg(DEBUG_LLDATA, "DATA_B3_REQ", skb->data);
-
-       gig_dbg(DEBUG_LLDATA,
-               "Receiving data from LL (ch: %d, flg: %x, sz: %d|%d)",
-               channel, flags, msglen, datalen);
+       dump_rawmsg(DEBUG_MCMD, __func__, skb->data);
 
        /* check parameters */
        if (channel == 0 || channel > cs->channels || ncci != 1) {
                            struct gigaset_capi_appl *ap,
                            struct sk_buff *skb)
 {
-       dump_rawmsg(DEBUG_LLDATA, __func__, skb->data);
+       dump_rawmsg(DEBUG_MCMD, __func__, skb->data);
        dev_kfree_skb_any(skb);
 }