<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/18002">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">lapd/lapdm: print user-defined string name instead of (dl=%p)<br><br>At the moment we print the pointer address to identify the log lines<br>belonging to a specific connection. Since pointer addresses are<br>difficult to work with, a human readable ID should be printed instead.<br><br>e.g. "This is LAPD instance for SAPI3 on bts0/trx1/ts5/lchan3"<br><br>Change-Id: Ie6742843fff809edffcac24c4dce4edf66bc71be<br>Closes: OS#1938<br>---<br>M TODO-RELEASE<br>M include/osmocom/gsm/lapd_core.h<br>M include/osmocom/gsm/lapdm.h<br>M src/gsm/lapd_core.c<br>M src/gsm/lapdm.c<br>M src/gsm/libosmogsm.map<br>6 files changed, 264 insertions(+), 314 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/02/18002/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/TODO-RELEASE b/TODO-RELEASE</span><br><span>index bc95b91..bef9afb 100644</span><br><span>--- a/TODO-RELEASE</span><br><span>+++ b/TODO-RELEASE</span><br><span>@@ -10,3 +10,4 @@</span><br><span> gsm           API/ABI change          l1sap.h, added struct members to ph_data_param and ph_tch_param</span><br><span> sim          API/ABI change          new osim_file_desc_find_aid()</span><br><span> sim            API/ABI change          all over the place</span><br><span style="color: hsl(120, 100%, 40%);">+gsm         API/ABI change          add new member to lapd_datalink</span><br><span>diff --git a/include/osmocom/gsm/lapd_core.h b/include/osmocom/gsm/lapd_core.h</span><br><span>index cfc357a..825de7f 100644</span><br><span>--- a/include/osmocom/gsm/lapd_core.h</span><br><span>+++ b/include/osmocom/gsm/lapd_core.h</span><br><span>@@ -14,6 +14,9 @@</span><br><span>  * \file lapd_core.h</span><br><span>  */</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define LOGDL(dl, level, fmt, args...) \</span><br><span style="color: hsl(120, 100%, 40%);">+     LOGP(DLLAPD, level, "(%s) "  fmt, (dl)->name, ## args)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /*! LAPD related primitives (L2<->L3 SAP)*/</span><br><span> enum osmo_dl_prim {</span><br><span>    PRIM_DL_UNIT_DATA,      /*!< DL-UNIT-DATA */</span><br><span>@@ -158,10 +161,13 @@</span><br><span>      uint8_t range_hist; /*!< range of history buffer 2..2^n */</span><br><span>        struct msgb *rcv_buffer; /*!< buffer to assemble the received message */</span><br><span>  struct msgb *cont_res; /*!< buffer to store content resolution data on network side, to detect multiple phones on same channel */</span><br><span style="color: hsl(120, 100%, 40%);">+  char *name; /*!< user-provided name */</span><br><span> };</span><br><span> </span><br><span> void lapd_dl_init(struct lapd_datalink *dl, uint8_t k, uint8_t v_range,</span><br><span>       int maxf);</span><br><span style="color: hsl(120, 100%, 40%);">+void lapd_dl_init2(struct lapd_datalink *dl, uint8_t k, uint8_t v_range,</span><br><span style="color: hsl(120, 100%, 40%);">+  int maxf, const char *name);</span><br><span> void lapd_dl_exit(struct lapd_datalink *dl);</span><br><span> void lapd_dl_reset(struct lapd_datalink *dl);</span><br><span> int lapd_set_mode(struct lapd_datalink *dl, enum lapd_mode mode);</span><br><span>diff --git a/include/osmocom/gsm/lapdm.h b/include/osmocom/gsm/lapdm.h</span><br><span>index 931de80..8003371 100644</span><br><span>--- a/include/osmocom/gsm/lapdm.h</span><br><span>+++ b/include/osmocom/gsm/lapdm.h</span><br><span>@@ -83,13 +83,20 @@</span><br><span> </span><br><span> /* initialize a LAPDm entity */</span><br><span> void lapdm_entity_init(struct lapdm_entity *le, enum lapdm_mode mode, int t200)</span><br><span style="color: hsl(0, 100%, 40%);">-     OSMO_DEPRECATED("Use lapdm_entity_init2() instead");</span><br><span style="color: hsl(120, 100%, 40%);">+        OSMO_DEPRECATED("Use lapdm_entity_init3() instead");</span><br><span> void lapdm_entity_init2(struct lapdm_entity *le, enum lapdm_mode mode,</span><br><span style="color: hsl(0, 100%, 40%);">-                        const int *t200_ms, int n200);</span><br><span style="color: hsl(120, 100%, 40%);">+                        const int *t200_ms, int n200)</span><br><span style="color: hsl(120, 100%, 40%);">+ OSMO_DEPRECATED("Use lapdm_entity_init3() instead");</span><br><span style="color: hsl(120, 100%, 40%);">+void lapdm_entity_init3(struct lapdm_entity *le, enum lapdm_mode mode,</span><br><span style="color: hsl(120, 100%, 40%);">+                        const int *t200_ms, int n200, const char *name_pfx);</span><br><span> void lapdm_channel_init(struct lapdm_channel *lc, enum lapdm_mode mode)</span><br><span style="color: hsl(0, 100%, 40%);">- OSMO_DEPRECATED("Use lapdm_channel_init2() instead");</span><br><span style="color: hsl(120, 100%, 40%);">+       OSMO_DEPRECATED("Use lapdm_channel_init3() instead");</span><br><span> int lapdm_channel_init2(struct lapdm_channel *lc, enum lapdm_mode mode,</span><br><span style="color: hsl(0, 100%, 40%);">-                      const int *t200_ms_dcch, const int *t200_ms_acch, enum gsm_chan_t chan_t);</span><br><span style="color: hsl(120, 100%, 40%);">+                    const int *t200_ms_dcch, const int *t200_ms_acch, enum gsm_chan_t chan_t)</span><br><span style="color: hsl(120, 100%, 40%);">+     OSMO_DEPRECATED("Use lapdm_channel_init3() instead");</span><br><span style="color: hsl(120, 100%, 40%);">+int lapdm_channel_init3(struct lapdm_channel *lc, enum lapdm_mode mode,</span><br><span style="color: hsl(120, 100%, 40%);">+                      const int *t200_ms_dcch, const int *t200_ms_acch, enum gsm_chan_t chan_t,</span><br><span style="color: hsl(120, 100%, 40%);">+                     const char *name_pfx);</span><br><span> /* deinitialize a LAPDm entity */</span><br><span> void lapdm_entity_exit(struct lapdm_entity *le);</span><br><span> void lapdm_channel_exit(struct lapdm_channel *lc);</span><br><span>diff --git a/src/gsm/lapd_core.c b/src/gsm/lapd_core.c</span><br><span>index a0f3c2b..b49ac68 100644</span><br><span>--- a/src/gsm/lapd_core.c</span><br><span>+++ b/src/gsm/lapd_core.c</span><br><span>@@ -1,7 +1,7 @@</span><br><span> /*! \file lapd_core.c</span><br><span>  * LAPD core implementation */</span><br><span> /*</span><br><span style="color: hsl(0, 100%, 40%);">- * (C) 2010-2011 by Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(120, 100%, 40%);">+ * (C) 2010-2020 by Harald Welte <laforge@gnumonks.org></span><br><span>  * (C) 2010-2011 by Andreas Eversberg <jolly@eversberg.eu></span><br><span>  *</span><br><span>  * All Rights Reserved</span><br><span>@@ -203,8 +203,8 @@</span><br><span> {</span><br><span>         if (osmo_timer_pending(&dl->t200))</span><br><span>            return;</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLLAPD, LOGL_INFO, "start T200 (dl=%p, timeout=%d.%06ds)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-          dl, dl->t200_sec, dl->t200_usec);</span><br><span style="color: hsl(120, 100%, 40%);">+  LOGDL(dl, LOGL_INFO, "start T200 (timeout=%d.%06ds)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           dl->t200_sec, dl->t200_usec);</span><br><span>    osmo_timer_schedule(&dl->t200, dl->t200_sec, dl->t200_usec);</span><br><span> }</span><br><span> </span><br><span>@@ -212,7 +212,7 @@</span><br><span> {</span><br><span>        if (osmo_timer_pending(&dl->t203))</span><br><span>            return;</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLLAPD, LOGL_INFO, "start T203 (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+        LOGDL(dl, LOGL_INFO, "start T203\n");</span><br><span>      osmo_timer_schedule(&dl->t203, dl->t203_sec, dl->t203_usec);</span><br><span> }</span><br><span> </span><br><span>@@ -220,7 +220,7 @@</span><br><span> {</span><br><span>        if (!osmo_timer_pending(&dl->t200))</span><br><span>           return;</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLLAPD, LOGL_INFO, "stop T200 (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGDL(dl, LOGL_INFO, "stop T200\n");</span><br><span>       osmo_timer_del(&dl->t200);</span><br><span> }</span><br><span> </span><br><span>@@ -228,14 +228,14 @@</span><br><span> {</span><br><span>      if (!osmo_timer_pending(&dl->t203))</span><br><span>           return;</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLLAPD, LOGL_INFO, "stop T203 (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGDL(dl, LOGL_INFO, "stop T203\n");</span><br><span>       osmo_timer_del(&dl->t203);</span><br><span> }</span><br><span> </span><br><span> static void lapd_dl_newstate(struct lapd_datalink *dl, uint32_t state)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-       LOGP(DLLAPD, LOGL_INFO, "new state %s -> %s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-            lapd_state_name(dl->state), lapd_state_name(state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+   LOGDL(dl, LOGL_INFO, "new state %s -> %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+             lapd_state_name(dl->state), lapd_state_name(state));</span><br><span> </span><br><span>  if (state != LAPD_STATE_MF_EST && dl->state == LAPD_STATE_MF_EST) {</span><br><span>               /* stop T203 on leaving MF EST state, if running */</span><br><span>@@ -255,9 +255,14 @@</span><br><span> </span><br><span> static void *tall_lapd_ctx = NULL;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-/* init datalink instance and allocate history */</span><br><span style="color: hsl(0, 100%, 40%);">-void lapd_dl_init(struct lapd_datalink *dl, uint8_t k, uint8_t v_range,</span><br><span style="color: hsl(0, 100%, 40%);">-        int maxf)</span><br><span style="color: hsl(120, 100%, 40%);">+/*! Initialize LAPD datalink instance and allocate history</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] dl caller-allocated datalink structure</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] k maximum number of unacknowledged frames</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] v_range range of sequence numbers</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] maxf maximum frame size (after defragmentation)</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] human-readable name (will be copied internally) */</span><br><span style="color: hsl(120, 100%, 40%);">+void lapd_dl_init2(struct lapd_datalink *dl, uint8_t k, uint8_t v_range, int maxf,</span><br><span style="color: hsl(120, 100%, 40%);">+                  const char *name)</span><br><span> {</span><br><span>    int m;</span><br><span> </span><br><span>@@ -293,22 +298,27 @@</span><br><span>           }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DLLAPD, LOGL_INFO, "Init DL layer: sequence range = %d, k = %d, "</span><br><span style="color: hsl(0, 100%, 40%);">-                "history range = %d (dl=%p)\n", dl->v_range, dl->k,</span><br><span style="color: hsl(0, 100%, 40%);">-             dl->range_hist, dl);</span><br><span style="color: hsl(120, 100%, 40%);">+       LOGDL(dl, LOGL_INFO, "Init DL layer: sequence range = %d, k = %d, "</span><br><span style="color: hsl(120, 100%, 40%);">+         "history range = %d\n", dl->v_range, dl->k, dl->range_hist);</span><br><span> </span><br><span>  lapd_dl_newstate(dl, LAPD_STATE_IDLE);</span><br><span> </span><br><span>   if (!tall_lapd_ctx)</span><br><span>          tall_lapd_ctx = talloc_named_const(NULL, 1, "lapd context");</span><br><span style="color: hsl(120, 100%, 40%);">+        dl->name = talloc_strdup(tall_lapd_ctx, name);</span><br><span>    dl->tx_hist = talloc_zero_array(tall_lapd_ctx,</span><br><span>                                    struct lapd_history, dl->range_hist);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+void lapd_dl_init(struct lapd_datalink *dl, uint8_t k, uint8_t v_range, int maxf)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+       lapd_dl_init2(dl, k, v_range, maxf, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> /* reset to IDLE state */</span><br><span> void lapd_dl_reset(struct lapd_datalink *dl)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-       LOGP(DLLAPD, LOGL_INFO, "Resetting LAPDm instance\n");</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGDL(dl, LOGL_INFO, "Resetting LAPDm instance\n");</span><br><span>        /* enter idle state (and remove eventual cont_res) */</span><br><span>        lapd_dl_newstate(dl, LAPD_STATE_IDLE);</span><br><span>       /* flush buffer */</span><br><span>@@ -322,7 +332,6 @@</span><br><span>     lapd_stop_t203(dl);</span><br><span>  if (dl->state == LAPD_STATE_IDLE)</span><br><span>                 return;</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLLAPD, LOGL_INFO, "Resetting LAPDm instance (dl=%p)\n", dl);</span><br><span>         /* enter idle state (and remove eventual cont_res) */</span><br><span>        lapd_dl_newstate(dl, LAPD_STATE_IDLE);</span><br><span> }</span><br><span>@@ -339,6 +348,8 @@</span><br><span>    /* free history buffer list */</span><br><span>       talloc_free(dl->tx_hist);</span><br><span>         dl->tx_hist = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+        talloc_free(dl->name);</span><br><span style="color: hsl(120, 100%, 40%);">+     dl->name = NULL;</span><br><span> }</span><br><span> </span><br><span> /*! Set the \ref lapdm_mode of a LAPDm entity */</span><br><span>@@ -389,9 +400,9 @@</span><br><span>       struct lapd_datalink *dl = lctx->dl;</span><br><span>      struct osmo_dlsap_prim dp;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  LOGP(DLLAPD, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-            "sending MDL-ERROR-IND cause %d from state %s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-             cause, lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+       LOGDL(dl, LOGL_NOTICE,</span><br><span style="color: hsl(120, 100%, 40%);">+             "sending MDL-ERROR-IND cause %d from state %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           cause, lapd_state_name(dl->state));</span><br><span>  osmo_prim_init(&dp.oph, 0, PRIM_MDL_ERROR, PRIM_OP_INDICATION, NULL);</span><br><span>    dp.u.error_ind.cause = cause;</span><br><span>        return dl->send_dlsap(&dp, lctx);</span><br><span>@@ -546,7 +557,7 @@</span><br><span>       struct osmo_dlsap_prim dp;</span><br><span>   struct msgb *msg;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DLLAPD, LOGL_DEBUG, "lapd reestablish (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+ LOGDL(dl, LOGL_DEBUG, "LAPD reestablish\n");</span><br><span> </span><br><span>   msg = lapd_msgb_alloc(0, "DUMMY");</span><br><span>         osmo_prim_init(&dp.oph, 0, PRIM_DL_EST, PRIM_OP_REQUEST, msg);</span><br><span>@@ -559,8 +570,7 @@</span><br><span> {</span><br><span>        struct lapd_datalink *dl = data;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    LOGP(DLLAPD, LOGL_INFO, "Timeout T200 state=%s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-            lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+   LOGDL(dl, LOGL_INFO, "Timeout T200 state=%s\n", lapd_state_name(dl->state));</span><br><span> </span><br><span>        switch (dl->state) {</span><br><span>      case LAPD_STATE_SABM_SENT:</span><br><span>@@ -628,8 +638,7 @@</span><br><span>                             int length = dl->tx_hist[h].msg->len;</span><br><span>                          struct lapd_msg_ctx nctx;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                           LOGP(DLLAPD, LOGL_INFO, "retransmit last frame"</span><br><span style="color: hsl(0, 100%, 40%);">-                                       " V(S)=%d (dl=%p)\n", vs, dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                              LOGDL(dl, LOGL_INFO, "retransmit last frame V(S)=%d\n", vs);</span><br><span>                               /* Create I frame (segment) from tx_hist */</span><br><span>                          memcpy(&nctx, &dl->lctx, sizeof(nctx));</span><br><span>                           /* keep nctx.ldp */</span><br><span>@@ -660,8 +669,7 @@</span><br><span>                            } else if (dl->own_busy) {</span><br><span>                                        lapd_send_rnr(&dl->lctx, 1, 1);</span><br><span>                               } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                                        LOGP(DLLAPD, LOGL_INFO, "unhandled, "</span><br><span style="color: hsl(0, 100%, 40%);">-                                         "pls. fix (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                                  LOGDL(dl, LOGL_INFO, "unhandled, pls. fix\n");</span><br><span>                             }</span><br><span>                    }</span><br><span>                    /* restart T200 (PH-READY-TO-SEND) */</span><br><span>@@ -672,14 +680,13 @@</span><br><span>                        /* reestablish */</span><br><span>                    if (!dl->reestablish)</span><br><span>                             break;</span><br><span style="color: hsl(0, 100%, 40%);">-                  LOGP(DLLAPD, LOGL_NOTICE, "N200+1 reached, performing "</span><br><span style="color: hsl(0, 100%, 40%);">-                               "reestablishment. (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                  LOGDL(dl, LOGL_NOTICE, "N200+1 reached, performingreestablishment\n");</span><br><span>                     lapd_reestablish(dl);</span><br><span>                }</span><br><span>            break;</span><br><span>       default:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_INFO, "T200 expired in unexpected "</span><br><span style="color: hsl(0, 100%, 40%);">-                 "dl->state %s (dl=%p)\n", lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGDL(dl, LOGL_INFO, "T200 expired in unexpected dl->state %s)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                       lapd_state_name(dl->state));</span><br><span>      }</span><br><span> }</span><br><span> </span><br><span>@@ -688,12 +695,10 @@</span><br><span> {</span><br><span>      struct lapd_datalink *dl = data;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    LOGP(DLLAPD, LOGL_INFO, "Timeout T203 state=%s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-         lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGDL(dl, LOGL_INFO, "Timeout T203 state=%s\n", lapd_state_name(dl->state));</span><br><span> </span><br><span>        if (dl->state != LAPD_STATE_MF_EST) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_ERROR, "T203 fired outside MF EST state, "</span><br><span style="color: hsl(0, 100%, 40%);">-                  "please fix! (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+               LOGDL(dl, LOGL_ERROR, "T203 fired outside MF EST state, please fix!\n");</span><br><span>           return;</span><br><span>      }</span><br><span> </span><br><span>@@ -703,13 +708,11 @@</span><br><span>        lapd_dl_newstate(dl, LAPD_STATE_TIMER_RECOV);</span><br><span>        /* transmit a supervisory command with P bit set to 1 as follows: */</span><br><span>         if (!dl->own_busy) {</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-              "transmit an RR poll command (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGDL(dl, LOGL_INFO, "transmit an RR poll command\n");</span><br><span>             /* Send RR with P=1 */</span><br><span>               lapd_send_rr(&dl->lctx, 1, 1);</span><br><span>        } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-              "transmit an RNR poll command (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGDL(dl, LOGL_INFO, "transmit an RNR poll command\n");</span><br><span>            /* Send RNR with P=1 */</span><br><span>              lapd_send_rnr(&dl->lctx, 1, 1);</span><br><span>       }</span><br><span>@@ -738,7 +741,7 @@</span><br><span>              if (dl->tx_hist[h].msg) {</span><br><span>                         msgb_free(dl->tx_hist[h].msg);</span><br><span>                    dl->tx_hist[h].msg = NULL;</span><br><span style="color: hsl(0, 100%, 40%);">-                   LOGP(DLLAPD, LOGL_INFO, "ack frame %d\n", i);</span><br><span style="color: hsl(120, 100%, 40%);">+                       LOGDL(dl, LOGL_INFO, "ack frame %d\n", i);</span><br><span>                 }</span><br><span>    }</span><br><span> </span><br><span>@@ -759,7 +762,7 @@</span><br><span>           */</span><br><span>          if (sub_mod(nr, dl->v_ack, dl->v_range)</span><br><span>                                > sub_mod(dl->v_send, dl->v_ack, dl->v_range)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    LOGP(DLLAPD, LOGL_NOTICE, "N(R) sequence error (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                     LOGDL(dl, LOGL_NOTICE, "N(R) sequence error\n");</span><br><span>                   mdl_error(MDL_CAUSE_SEQ_ERR, lctx);</span><br><span>          }</span><br><span>    }</span><br><span>@@ -771,8 +774,7 @@</span><br><span>       * and if there are outstanding I frames, restart T200 */</span><br><span>    if (t200_reset && !rej) {</span><br><span>            if (dl->tx_hist[sub_mod(dl->v_send, 1, dl->range_hist)].msg) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 LOGP(DLLAPD, LOGL_INFO, "start T200, due to unacked I "</span><br><span style="color: hsl(0, 100%, 40%);">-                               "frame(s) (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                  LOGDL(dl, LOGL_INFO, "start T200, due to unacked I frame(s)\n");</span><br><span>                   lapd_start_t200(dl);</span><br><span>                 }</span><br><span>    }</span><br><span>@@ -805,14 +807,12 @@</span><br><span>            prim = PRIM_DL_EST;</span><br><span>          op = PRIM_OP_INDICATION;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            LOGP(DLLAPD, LOGL_INFO, "SABM(E) received in state %s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                     lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(dl, LOGL_INFO, "SABM(E) received in state %s\n", lapd_state_name(dl->state));</span><br><span>             /* 5.7.1 */</span><br><span>          dl->seq_err_cond = 0;</span><br><span>             /* G.2.2 Wrong value of the C/R bit */</span><br><span>               if (lctx->cr == dl->cr.rem2loc.resp) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                             "SABM response error (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                  LOGDL(dl, LOGL_ERROR, "SABM response error\n");</span><br><span>                    msgb_free(msg);</span><br><span>                      mdl_error(MDL_CAUSE_FRM_UNIMPL, lctx);</span><br><span>                       return -EINVAL;</span><br><span>@@ -822,8 +822,7 @@</span><br><span>                 * set, AN MDL-ERROR-INDICATION is sent to MM.</span><br><span>                */</span><br><span>          if (lctx->more || length > lctx->n201) {</span><br><span style="color: hsl(0, 100%, 40%);">-                       LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                             "SABM too large error (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                 LOGDL(dl, LOGL_ERROR, "SABM too large error\n");</span><br><span>                   msgb_free(msg);</span><br><span>                      mdl_error(MDL_CAUSE_UFRM_INC_PARAM, lctx);</span><br><span>                   return -EIO;</span><br><span>@@ -833,8 +832,7 @@</span><br><span>           case LAPD_STATE_IDLE:</span><br><span>                        break;</span><br><span>               case LAPD_STATE_MF_EST:</span><br><span style="color: hsl(0, 100%, 40%);">-                 LOGP(DLLAPD, LOGL_INFO, "SABM command, multiple "</span><br><span style="color: hsl(0, 100%, 40%);">-                          "frame established state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOGDL(dl, LOGL_INFO, "SABM command, multiple frame established state\n");</span><br><span>                  /* If link is lost on the remote side, we start over</span><br><span>                          * and send DL-ESTABLISH indication again. */</span><br><span>                        /* Additionally, continue in case of content resoltion</span><br><span>@@ -846,14 +844,12 @@</span><br><span>                       if (!length) {</span><br><span>                               /* If no content resolution, this is a</span><br><span>                                * re-establishment. */</span><br><span style="color: hsl(0, 100%, 40%);">-                         LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                              "Remote reestablish (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                           LOGDL(dl, LOGL_INFO, "Remote reestablish\n");</span><br><span>                              break;</span><br><span>                       }</span><br><span>                    if (!dl->cont_res) {</span><br><span style="color: hsl(0, 100%, 40%);">-                         LOGP(DLLAPD, LOGL_INFO, "SABM command not "</span><br><span style="color: hsl(0, 100%, 40%);">-                                "allowed in state %s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                              lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                              LOGDL(dl, LOGL_INFO, "SABM command not allowed in state %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                                    lapd_state_name(dl->state));</span><br><span>                                mdl_error(MDL_CAUSE_SABM_MF, lctx);</span><br><span>                          msgb_free(msg);</span><br><span>                              return 0;</span><br><span>@@ -865,9 +861,8 @@</span><br><span> #endif</span><br><span>                            if (memcmp(dl->cont_res->data, msg->data,</span><br><span>                                                           length)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                      LOGP(DLLAPD, LOGL_INFO, "Another SABM "</span><br><span style="color: hsl(0, 100%, 40%);">-                                            "with different content - "</span><br><span style="color: hsl(0, 100%, 40%);">-                                           "ignoring! (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                                    LOGDL(dl, LOGL_INFO, "Another SABM with different content - "</span><br><span style="color: hsl(120, 100%, 40%);">+                                            "ignoring!\n");</span><br><span>                                       msgb_free(msg);</span><br><span>                                      return 0;</span><br><span>                            }</span><br><span>@@ -889,9 +884,8 @@</span><br><span>                       */</span><br><span>                  /* check for contention resoultion */</span><br><span>                        if (dl->tx_hist[0].msg && dl->tx_hist[0].msg->len) {</span><br><span style="color: hsl(0, 100%, 40%);">-                           LOGP(DLLAPD, LOGL_NOTICE, "SABM not allowed "</span><br><span style="color: hsl(0, 100%, 40%);">-                              "during contention resolution (state=%s, dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                                   lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                              LOGDL(dl, LOGL_NOTICE, "SABM not allowed during contention "</span><br><span style="color: hsl(120, 100%, 40%);">+                                      "resolution (state=%s)\n", lapd_state_name(dl->state));</span><br><span>                           mdl_error(MDL_CAUSE_SABM_INFO_NOTALL, lctx);</span><br><span>                         }</span><br><span>                    lapd_send_ua(lctx, length, msg->l3h);</span><br><span>@@ -917,8 +911,7 @@</span><br><span>                       dl->cont_res = lapd_msgb_alloc(length, "CONT RES");</span><br><span>                     memcpy(msgb_put(dl->cont_res, length), msg->l3h,</span><br><span>                               length);</span><br><span style="color: hsl(0, 100%, 40%);">-                        LOGP(DLLAPD, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                            "Store content res. (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGDL(dl, LOGL_NOTICE, "Store content res.\n");</span><br><span>            }</span><br><span>            /* send notification to L3 */</span><br><span>                if (length == 0) {</span><br><span>@@ -932,12 +925,10 @@</span><br><span>           }</span><br><span>            break;</span><br><span>       case LAPD_U_DM:</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_INFO, "DM received in state %s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                  lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(dl, LOGL_INFO, "DM received in state %s\n", lapd_state_name(dl->state));</span><br><span>          /* G.2.2 Wrong value of the C/R bit */</span><br><span>               if (lctx->cr == dl->cr.rem2loc.cmd) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                             "DM command error (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                     LOGDL(dl, LOGL_ERROR, "DM command error\n");</span><br><span>                       msgb_free(msg);</span><br><span>                      mdl_error(MDL_CAUSE_FRM_UNIMPL, lctx);</span><br><span>                       return -EINVAL;</span><br><span>@@ -954,21 +945,18 @@</span><br><span>                      break;</span><br><span>               case LAPD_STATE_MF_EST:</span><br><span>                      if (lctx->p_f) {</span><br><span style="color: hsl(0, 100%, 40%);">-                             LOGP(DLLAPD, LOGL_INFO, "unsolicited DM "</span><br><span style="color: hsl(0, 100%, 40%);">-                                     "response (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                          LOGDL(dl, LOGL_INFO, "unsolicited DM response\n");</span><br><span>                                 mdl_error(MDL_CAUSE_UNSOL_DM_RESP, lctx);</span><br><span>                    } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                                LOGP(DLLAPD, LOGL_INFO, "unsolicited DM "</span><br><span style="color: hsl(0, 100%, 40%);">-                                     "response, multiple frame established "</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                             LOGDL(dl, LOGL_INFO, "unsolicited DM response, "</span><br><span style="color: hsl(120, 100%, 40%);">+                                    "multiple frame established state\n");</span><br><span>                             mdl_error(MDL_CAUSE_UNSOL_DM_RESP_MF, lctx);</span><br><span>                                 /* reestablish */</span><br><span>                            if (!dl->reestablish) {</span><br><span>                                   msgb_free(msg);</span><br><span>                                      return 0;</span><br><span>                            }</span><br><span style="color: hsl(0, 100%, 40%);">-                               LOGP(DLLAPD, LOGL_NOTICE, "Performing "</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "reestablishment. (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                          LOGDL(dl, LOGL_NOTICE, "Performing reestablishment\n");</span><br><span>                            lapd_reestablish(dl);</span><br><span>                        }</span><br><span>                    msgb_free(msg);</span><br><span>@@ -976,16 +964,14 @@</span><br><span>              case LAPD_STATE_TIMER_RECOV:</span><br><span>                         /* FP = 0 (DM is normal in case PF = 1) */</span><br><span>                   if (!lctx->p_f) {</span><br><span style="color: hsl(0, 100%, 40%);">-                            LOGP(DLLAPD, LOGL_INFO, "unsolicited DM "</span><br><span style="color: hsl(0, 100%, 40%);">-                                     "response, multiple frame established "</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                             LOGDL(dl, LOGL_INFO, "unsolicited DM response, multiple frame "</span><br><span style="color: hsl(120, 100%, 40%);">+                                   "established state\n");</span><br><span>                              mdl_error(MDL_CAUSE_UNSOL_DM_RESP_MF, lctx);</span><br><span>                                 msgb_free(msg);</span><br><span>                              /* reestablish */</span><br><span>                            if (!dl->reestablish)</span><br><span>                                     return 0;</span><br><span style="color: hsl(0, 100%, 40%);">-                               LOGP(DLLAPD, LOGL_NOTICE, "Performing "</span><br><span style="color: hsl(0, 100%, 40%);">-                                       "reestablishment. (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                          LOGDL(dl, LOGL_NOTICE, "Performing reestablishment\n");</span><br><span>                            return lapd_reestablish(dl);</span><br><span>                         }</span><br><span>                    break;</span><br><span>@@ -1002,8 +988,7 @@</span><br><span>                case LAPD_STATE_IDLE:</span><br><span>                        /* 5.4.5 all other frame types shall be discarded */</span><br><span>                 default:</span><br><span style="color: hsl(0, 100%, 40%);">-                        LOGP(DLLAPD, LOGL_INFO, "unsolicited DM response! "</span><br><span style="color: hsl(0, 100%, 40%);">-                           "(discarding) (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOGDL(dl, LOGL_INFO, "unsolicited DM response! (discarding)\n");</span><br><span>                   msgb_free(msg);</span><br><span>                      return 0;</span><br><span>            }</span><br><span>@@ -1015,11 +1000,10 @@</span><br><span>          msgb_free(msg);</span><br><span>              break;</span><br><span>       case LAPD_U_UI:</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_INFO, "UI received (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+               LOGDL(dl, LOGL_INFO, "UI received\n");</span><br><span>             /* G.2.2 Wrong value of the C/R bit */</span><br><span>               if (lctx->cr == dl->cr.rem2loc.resp) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    LOGP(DLLAPD, LOGL_ERROR, "UI indicates response "</span><br><span style="color: hsl(0, 100%, 40%);">-                          "error (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                        LOGDL(dl, LOGL_ERROR, "UI indicates response error\n");</span><br><span>                    msgb_free(msg);</span><br><span>                      mdl_error(MDL_CAUSE_FRM_UNIMPL, lctx);</span><br><span>                       return -EINVAL;</span><br><span>@@ -1029,9 +1013,8 @@</span><br><span>               * set, AN MDL-ERROR-INDICATION is sent to MM.</span><br><span>                */</span><br><span>          if (length > lctx->n201 || lctx->more) {</span><br><span style="color: hsl(0, 100%, 40%);">-                       LOGP(DLLAPD, LOGL_ERROR, "UI too large error "</span><br><span style="color: hsl(0, 100%, 40%);">-                                "(%d > N201(%d) or M=%d) (dl=%p)\n", length,</span><br><span style="color: hsl(0, 100%, 40%);">-                               lctx->n201, lctx->more, dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                    LOGDL(dl, LOGL_ERROR, "UI too large error (%d > N201(%d) or M=%d)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                          length, lctx->n201, lctx->more);</span><br><span>                         msgb_free(msg);</span><br><span>                      mdl_error(MDL_CAUSE_UFRM_INC_PARAM, lctx);</span><br><span>                   return -EIO;</span><br><span>@@ -1042,8 +1025,7 @@</span><br><span>                         /* 5.3.3 UI frames received with the length indicator</span><br><span>                         * set to "0" shall be ignored</span><br><span>                      */</span><br><span style="color: hsl(0, 100%, 40%);">-                     LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                      "length=0 (discarding) (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                        LOGDL(dl, LOGL_INFO, "length=0 (discarding)\n");</span><br><span>                   msgb_free(msg);</span><br><span>                      return 0;</span><br><span>            }</span><br><span>@@ -1055,8 +1037,7 @@</span><br><span>            prim = PRIM_DL_REL;</span><br><span>          op = PRIM_OP_INDICATION;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-            LOGP(DLLAPD, LOGL_INFO, "DISC received in state %s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                        lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(dl, LOGL_INFO, "DISC received in state %s\n", lapd_state_name(dl->state));</span><br><span>                /* flush tx and send buffers */</span><br><span>              lapd_dl_flush_tx(dl);</span><br><span>                lapd_dl_flush_send(dl);</span><br><span>@@ -1064,8 +1045,7 @@</span><br><span>              dl->seq_err_cond = 0;</span><br><span>             /* G.2.2 Wrong value of the C/R bit */</span><br><span>               if (lctx->cr == dl->cr.rem2loc.resp) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                             "DISC response error (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                  LOGDL(dl, LOGL_ERROR, "DISC response error\n");</span><br><span>                    msgb_free(msg);</span><br><span>                      mdl_error(MDL_CAUSE_FRM_UNIMPL, lctx);</span><br><span>                       return -EINVAL;</span><br><span>@@ -1076,22 +1056,19 @@</span><br><span>                     * primitive with cause "U frame with incorrect</span><br><span>                          * parameters" is sent to the mobile management entity.</span><br><span>                          */</span><br><span style="color: hsl(0, 100%, 40%);">-                     LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                             "U frame iwth incorrect parameters (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                    LOGDL(dl, LOGL_ERROR, "U frame iwth incorrect parameters\n");</span><br><span>                      msgb_free(msg);</span><br><span>                      mdl_error(MDL_CAUSE_UFRM_INC_PARAM, lctx);</span><br><span>                   return -EIO;</span><br><span>                 }</span><br><span>            switch (dl->state) {</span><br><span>              case LAPD_STATE_IDLE:</span><br><span style="color: hsl(0, 100%, 40%);">-                   LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                      "DISC in idle state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGDL(dl, LOGL_INFO, "DISC in idle state\n");</span><br><span>                      /* send DM with F=P */</span><br><span>                       msgb_free(msg);</span><br><span>                      return lapd_send_dm(lctx);</span><br><span>           case LAPD_STATE_SABM_SENT:</span><br><span style="color: hsl(0, 100%, 40%);">-                      LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                      "DISC in SABM state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGDL(dl, LOGL_INFO, "DISC in SABM state\n");</span><br><span>                      /* 5.4.6.2 send DM with F=P */</span><br><span>                       lapd_send_dm(lctx);</span><br><span>                  /* stop Timer T200 */</span><br><span>@@ -1103,12 +1080,10 @@</span><br><span>                              lctx);</span><br><span>               case LAPD_STATE_MF_EST:</span><br><span>              case LAPD_STATE_TIMER_RECOV:</span><br><span style="color: hsl(0, 100%, 40%);">-                    LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                      "DISC in est state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                    LOGDL(dl, LOGL_INFO, "DISC in est state\n");</span><br><span>                       break;</span><br><span>               case LAPD_STATE_DISC_SENT:</span><br><span style="color: hsl(0, 100%, 40%);">-                      LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                      "DISC in disc state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGDL(dl, LOGL_INFO, "DISC in disc state\n");</span><br><span>                      prim = PRIM_DL_REL;</span><br><span>                  op = PRIM_OP_CONFIRM;</span><br><span>                        break;</span><br><span>@@ -1128,12 +1103,10 @@</span><br><span>             msgb_free(msg);</span><br><span>              break;</span><br><span>       case LAPD_U_UA:</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_INFO, "UA received in state %s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                  lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(dl, LOGL_INFO, "UA received in state %s\n", lapd_state_name(dl->state));</span><br><span>          /* G.2.2 Wrong value of the C/R bit */</span><br><span>               if (lctx->cr == dl->cr.rem2loc.cmd) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     LOGP(DLLAPD, LOGL_ERROR, "UA indicates command "</span><br><span style="color: hsl(0, 100%, 40%);">-                              "error (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                     LOGDL(dl, LOGL_ERROR, "UA indicates command error\n");</span><br><span>                     msgb_free(msg);</span><br><span>                      mdl_error(MDL_CAUSE_FRM_UNIMPL, lctx);</span><br><span>                       return -EINVAL;</span><br><span>@@ -1143,8 +1116,7 @@</span><br><span>               * set, AN MDL-ERROR-INDICATION is sent to MM.</span><br><span>                */</span><br><span>          if (lctx->more || length > lctx->n201) {</span><br><span style="color: hsl(0, 100%, 40%);">-                       LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                             "UA too large error (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGDL(dl, LOGL_ERROR, "UA too large error\n");</span><br><span>                     msgb_free(msg);</span><br><span>                      mdl_error(MDL_CAUSE_UFRM_INC_PARAM, lctx);</span><br><span>                   return -EIO;</span><br><span>@@ -1154,8 +1126,7 @@</span><br><span>                         /* 5.4.1.2 A UA response with the F bit set to "0"</span><br><span>                          * shall be ignored.</span><br><span>                          */</span><br><span style="color: hsl(0, 100%, 40%);">-                     LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                      "F=0 (discarding) (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                     LOGDL(dl, LOGL_INFO, "F=0 (discarding)\n");</span><br><span>                        msgb_free(msg);</span><br><span>                      return 0;</span><br><span>            }</span><br><span>@@ -1164,14 +1135,12 @@</span><br><span>                  break;</span><br><span>               case LAPD_STATE_MF_EST:</span><br><span>              case LAPD_STATE_TIMER_RECOV:</span><br><span style="color: hsl(0, 100%, 40%);">-                    LOGP(DLLAPD, LOGL_INFO, "unsolicited UA response! "</span><br><span style="color: hsl(0, 100%, 40%);">-                           "(discarding) (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOGDL(dl, LOGL_INFO, "unsolicited UA response! (discarding)\n");</span><br><span>                   mdl_error(MDL_CAUSE_UNSOL_UA_RESP, lctx);</span><br><span>                    msgb_free(msg);</span><br><span>                      return 0;</span><br><span>            case LAPD_STATE_DISC_SENT:</span><br><span style="color: hsl(0, 100%, 40%);">-                      LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                      "UA in disconnect state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                       LOGDL(dl, LOGL_INFO, "UA in disconnect state\n");</span><br><span>                  /* stop Timer T200 */</span><br><span>                        lapd_stop_t200(dl);</span><br><span>                  /* go to idle state */</span><br><span>@@ -1184,12 +1153,11 @@</span><br><span>             case LAPD_STATE_IDLE:</span><br><span>                        /* 5.4.5 all other frame types shall be discarded */</span><br><span>                 default:</span><br><span style="color: hsl(0, 100%, 40%);">-                        LOGP(DLLAPD, LOGL_INFO, "unsolicited UA response! "</span><br><span style="color: hsl(0, 100%, 40%);">-                           "(discarding) (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOGDL(dl, LOGL_INFO, "unsolicited UA response! (discarding)\n");</span><br><span>                   msgb_free(msg);</span><br><span>                      return 0;</span><br><span>            }</span><br><span style="color: hsl(0, 100%, 40%);">-               LOGP(DLLAPD, LOGL_INFO, "UA in SABM state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGDL(dl, LOGL_INFO, "UA in SABM state\n");</span><br><span>                /* stop Timer T200 */</span><br><span>                lapd_stop_t200(dl);</span><br><span>          /* compare UA with SABME if contention resolution is applied */</span><br><span>@@ -1197,8 +1165,7 @@</span><br><span>                      if (length != (dl->tx_hist[0].msg->len)</span><br><span>                         || !!memcmp(dl->tx_hist[0].msg->data, msg->l3h,</span><br><span>                                                            length)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                              LOGP(DLLAPD, LOGL_INFO, "**** UA response "</span><br><span style="color: hsl(0, 100%, 40%);">-                                   "mismatches **** (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                           LOGDL(dl, LOGL_INFO, "**** UA response mismatches ****\n");</span><br><span>                                rc = send_dl_simple(PRIM_DL_REL,</span><br><span>                                     PRIM_OP_INDICATION, lctx);</span><br><span>                           msgb_free(msg);</span><br><span>@@ -1222,22 +1189,19 @@</span><br><span>            msgb_free(msg);</span><br><span>              break;</span><br><span>       case LAPD_U_FRMR:</span><br><span style="color: hsl(0, 100%, 40%);">-               LOGP(DLLAPD, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                    "Frame reject received (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGDL(dl, LOGL_NOTICE, "Frame reject received\n");</span><br><span>                 /* send MDL ERROR INIDCATION to L3 */</span><br><span>                mdl_error(MDL_CAUSE_FRMR, lctx);</span><br><span>             msgb_free(msg);</span><br><span>              /* reestablish */</span><br><span>            if (!dl->reestablish)</span><br><span>                     break;</span><br><span style="color: hsl(0, 100%, 40%);">-          LOGP(DLLAPD, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                    "Performing reestablishment. (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGDL(dl, LOGL_NOTICE, "Performing reestablishment\n");</span><br><span>            rc = lapd_reestablish(dl);</span><br><span>           break;</span><br><span>       default:</span><br><span>             /* G.3.1 */</span><br><span style="color: hsl(0, 100%, 40%);">-             LOGP(DLLAPD, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                    "Unnumbered frame not allowed. (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGDL(dl, LOGL_NOTICE, "Unnumbered frame not allowed\n");</span><br><span>          msgb_free(msg);</span><br><span>              mdl_error(MDL_CAUSE_FRM_UNIMPL, lctx);</span><br><span>               return -EINVAL;</span><br><span>@@ -1256,8 +1220,7 @@</span><br><span>               * with the M bit set to "1", an MDL-ERROR-INDICATION</span><br><span>               * primitive with cause "S frame with incorrect</span><br><span>                  * parameters" is sent to the mobile management entity. */</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                     "S frame with incorrect parameters (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGDL(dl, LOGL_ERROR, "S frame with incorrect parameters\n");</span><br><span>              msgb_free(msg);</span><br><span>              mdl_error(MDL_CAUSE_SFRM_INC_PARAM, lctx);</span><br><span>           return -EIO;</span><br><span>@@ -1267,8 +1230,7 @@</span><br><span>          && lctx->p_f</span><br><span>      && dl->state != LAPD_STATE_TIMER_RECOV) {</span><br><span>                /* 5.4.2.2: Inidcate error on supervisory reponse F=1 */</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                    "S frame response with F=1 error (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGDL(dl,  LOGL_NOTICE, "S frame response with F=1 error\n");</span><br><span>              mdl_error(MDL_CAUSE_UNSOL_SPRV_RESP, lctx);</span><br><span>  }</span><br><span> </span><br><span>@@ -1281,15 +1243,13 @@</span><br><span>              /* fall though */</span><br><span>    case LAPD_STATE_SABM_SENT:</span><br><span>   case LAPD_STATE_DISC_SENT:</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DLLAPD, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                    "S frame ignored in this state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGDL(dl, LOGL_NOTICE, "S frame ignored in this state\n");</span><br><span>                 msgb_free(msg);</span><br><span>              return 0;</span><br><span>    }</span><br><span>    switch (lctx->s_u) {</span><br><span>      case LAPD_S_RR:</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_INFO, "RR received in state %s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                  lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(dl, LOGL_INFO, "RR received in state %s\n", lapd_state_name(dl->state));</span><br><span>          /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */</span><br><span>            lapd_acknowledge(lctx);</span><br><span> </span><br><span>@@ -1297,10 +1257,8 @@</span><br><span>                 if (lctx->cr == dl->cr.rem2loc.cmd</span><br><span>              && lctx->p_f) {</span><br><span>                  if (!dl->own_busy && !dl->seq_err_cond) {</span><br><span style="color: hsl(0, 100%, 40%);">-                         LOGP(DLLAPD, LOGL_INFO, "RR frame command "</span><br><span style="color: hsl(0, 100%, 40%);">-                                "with polling bit set and we are not "</span><br><span style="color: hsl(0, 100%, 40%);">-                                "busy, so we reply with RR frame "</span><br><span style="color: hsl(0, 100%, 40%);">-                                     "response (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                            LOGDL(dl, LOGL_INFO, "RR frame command with polling bit set and "</span><br><span style="color: hsl(120, 100%, 40%);">+                                 "we are not busy, so we reply with RR frame response\n");</span><br><span>                            lapd_send_rr(lctx, 1, 0);</span><br><span>                            /* NOTE: In case of sequence error condition,</span><br><span>                                 * the REJ frame has been transmitted when</span><br><span>@@ -1308,18 +1266,15 @@</span><br><span>                                  * done here</span><br><span>                                  */</span><br><span>                  } else if (dl->own_busy) {</span><br><span style="color: hsl(0, 100%, 40%);">-                           LOGP(DLLAPD, LOGL_INFO, "RR frame command "</span><br><span style="color: hsl(0, 100%, 40%);">-                                "with polling bit set and we are busy, "</span><br><span style="color: hsl(0, 100%, 40%);">-                              "so we reply with RR frame response (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                               dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                             LOGDL(dl, LOGL_INFO, "RR frame command with polling bit set and "</span><br><span style="color: hsl(120, 100%, 40%);">+                                 "we are busy, so we reply with RR frame response\n");</span><br><span>                                lapd_send_rnr(lctx, 1, 0);</span><br><span>                   }</span><br><span>            } else if (lctx->cr == dl->cr.rem2loc.resp</span><br><span>                     && lctx->p_f</span><br><span>                      && dl->state == LAPD_STATE_TIMER_RECOV) {</span><br><span style="color: hsl(0, 100%, 40%);">-                    LOGP(DLLAPD, LOGL_INFO, "RR response with F==1, "</span><br><span style="color: hsl(0, 100%, 40%);">-                             "and we are in timer recovery state, so "</span><br><span style="color: hsl(0, 100%, 40%);">-                             "we leave that state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                       LOGDL(dl, LOGL_INFO, "RR response with F==1, and we are in timer recovery "</span><br><span style="color: hsl(120, 100%, 40%);">+                         "state, so we leave that state\n");</span><br><span>                        /* V(S) to the N(R) in the RR frame */</span><br><span>                       dl->v_send = lctx->n_recv;</span><br><span>                     /* stop Timer T200 */</span><br><span>@@ -1332,8 +1287,7 @@</span><br><span> </span><br><span>            break;</span><br><span>       case LAPD_S_RNR:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_INFO, "RNR received in state %s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                 lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(dl, LOGL_INFO, "RNR received in state %s\n", lapd_state_name(dl->state));</span><br><span>                 /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */</span><br><span>            lapd_acknowledge(lctx);</span><br><span> </span><br><span>@@ -1344,40 +1298,33 @@</span><br><span>                if (lctx->p_f) {</span><br><span>                  if (lctx->cr == dl->cr.rem2loc.cmd) {</span><br><span>                          if (!dl->own_busy) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                 LOGP(DLLAPD, LOGL_INFO, "RNR poll "</span><br><span style="color: hsl(0, 100%, 40%);">-                                           "command and we are not busy, "</span><br><span style="color: hsl(0, 100%, 40%);">-                                               "so we reply with RR final "</span><br><span style="color: hsl(0, 100%, 40%);">-                                          "response (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                                  LOGDL(dl, LOGL_INFO, "RNR poll command and we are not busy, "</span><br><span style="color: hsl(120, 100%, 40%);">+                                             "so we reply with RR final response\n");</span><br><span>                                     /* Send RR with F=1 */</span><br><span>                                       lapd_send_rr(lctx, 1, 0);</span><br><span>                            } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                                        LOGP(DLLAPD, LOGL_INFO, "RNR poll "</span><br><span style="color: hsl(0, 100%, 40%);">-                                           "command and we are busy, so "</span><br><span style="color: hsl(0, 100%, 40%);">-                                                "we reply with RNR final "</span><br><span style="color: hsl(0, 100%, 40%);">-                                            "response (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                                  LOGDL(dl, LOGL_INFO, "RNR poll command and we are busy, so "</span><br><span style="color: hsl(120, 100%, 40%);">+                                              "we reply with RNR final response\n");</span><br><span>                                       /* Send RNR with F=1 */</span><br><span>                                      lapd_send_rnr(lctx, 1, 0);</span><br><span>                           }</span><br><span>                    } else if (dl->state == LAPD_STATE_TIMER_RECOV) {</span><br><span style="color: hsl(0, 100%, 40%);">-                            LOGP(DLLAPD, LOGL_INFO, "RNR poll response "</span><br><span style="color: hsl(0, 100%, 40%);">-                                  "and we in timer recovery state, so "</span><br><span style="color: hsl(0, 100%, 40%);">-                                 "we leave that state (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                               LOGDL(dl, LOGL_INFO, "RNR poll response and we in timer recovery "</span><br><span style="color: hsl(120, 100%, 40%);">+                                "state, so we leave that state\n");</span><br><span>                          /* 5.5.7 Clear timer recovery condition */</span><br><span>                           lapd_dl_newstate(dl, LAPD_STATE_MF_EST);</span><br><span>                             /* V(S) to the N(R) in the RNR frame */</span><br><span>                              dl->v_send = lctx->n_recv;</span><br><span>                     }</span><br><span>            } else</span><br><span style="color: hsl(0, 100%, 40%);">-                  LOGP(DLLAPD, LOGL_INFO, "RNR not polling/final state "</span><br><span style="color: hsl(0, 100%, 40%);">-                             "received (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                     LOGDL(dl, LOGL_INFO, "RNR not polling/final state received\n");</span><br><span> </span><br><span>                /* Send message, if possible due to acknowledged data */</span><br><span>             lapd_send_i(lctx, __LINE__);</span><br><span> </span><br><span>             break;</span><br><span>       case LAPD_S_REJ:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_INFO, "REJ received in state %s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                 lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(dl, LOGL_INFO, "REJ received in state %s\n", lapd_state_name(dl->state));</span><br><span>                 /* 5.5.3.1: Acknowlege all tx frames up the the N(R)-1 */</span><br><span>            lapd_acknowledge(lctx);</span><br><span> </span><br><span>@@ -1392,12 +1339,9 @@</span><br><span>                         /* 5.5.3.2 */</span><br><span>                        if (lctx->cr == dl->cr.rem2loc.cmd && lctx->p_f) {</span><br><span>                          if (!dl->own_busy && !dl->seq_err_cond) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                 LOGP(DLLAPD, LOGL_INFO, "REJ poll "</span><br><span style="color: hsl(0, 100%, 40%);">-                                           "command not in timer recovery "</span><br><span style="color: hsl(0, 100%, 40%);">-                                              "state and not in own busy "</span><br><span style="color: hsl(0, 100%, 40%);">-                                          "condition received, so we "</span><br><span style="color: hsl(0, 100%, 40%);">-                                          "respond with RR final "</span><br><span style="color: hsl(0, 100%, 40%);">-                                              "response (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                                  LOGDL(dl, LOGL_INFO, "REJ poll command not in timer recovery "</span><br><span style="color: hsl(120, 100%, 40%);">+                                            "state and not in own busy condition received, so we "</span><br><span style="color: hsl(120, 100%, 40%);">+                                              "respond with RR final response\n");</span><br><span>                                         lapd_send_rr(lctx, 1, 0);</span><br><span>                                    /* NOTE: In case of sequence error</span><br><span>                                    * condition, the REJ frame has been</span><br><span>@@ -1406,29 +1350,22 @@</span><br><span>                                        * here</span><br><span>                                       */</span><br><span>                          } else if (dl->own_busy) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                   LOGP(DLLAPD, LOGL_INFO, "REJ poll "</span><br><span style="color: hsl(0, 100%, 40%);">-                                           "command not in timer recovery "</span><br><span style="color: hsl(0, 100%, 40%);">-                                              "state and in own busy "</span><br><span style="color: hsl(0, 100%, 40%);">-                                              "condition received, so we "</span><br><span style="color: hsl(0, 100%, 40%);">-                                          "respond with RNR final "</span><br><span style="color: hsl(0, 100%, 40%);">-                                             "response (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                                  LOGDL(dl, LOGL_INFO, "REJ poll command not in timer recovery "</span><br><span style="color: hsl(120, 100%, 40%);">+                                            "state and in own busy condition received, so we "</span><br><span style="color: hsl(120, 100%, 40%);">+                                          "respond with RNR final response\n");</span><br><span>                                        lapd_send_rnr(lctx, 1, 0);</span><br><span>                           }</span><br><span>                    } else</span><br><span style="color: hsl(0, 100%, 40%);">-                          LOGP(DLLAPD, LOGL_INFO, "REJ response or not "</span><br><span style="color: hsl(0, 100%, 40%);">-                                        "polling command not in timer recovery "</span><br><span style="color: hsl(0, 100%, 40%);">-                                      "state received (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                            LOGDL(dl, LOGL_INFO, "REJ response or not polling command not "</span><br><span style="color: hsl(120, 100%, 40%);">+                                   "in timer recovery state received\n");</span><br><span>                       /* send MDL ERROR INIDCATION to L3 */</span><br><span>                        if (lctx->cr == dl->cr.rem2loc.resp && lctx->p_f) {</span><br><span style="color: hsl(0, 100%, 40%);">-                            LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                                     "unsolicited supervisory response! (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                                dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                             LOGDL(dl, LOGL_ERROR, "unsolicited supervisory response!\n");</span><br><span>                              mdl_error(MDL_CAUSE_UNSOL_SPRV_RESP, lctx);</span><br><span>                  }</span><br><span> </span><br><span>                } else if (lctx->cr == dl->cr.rem2loc.resp && lctx->p_f) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     LOGP(DLLAPD, LOGL_INFO, "REJ poll response in timer "</span><br><span style="color: hsl(0, 100%, 40%);">-                         "recovery state received (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGDL(dl, LOGL_INFO, "REJ poll response in timer recovery state received\n");</span><br><span>                      /* Clear an existing peer receiver busy condition */</span><br><span>                         dl->peer_busy = 0;</span><br><span>                        /* V(S) and V(A) to the N(R) in the REJ frame */</span><br><span>@@ -1445,12 +1382,9 @@</span><br><span>                    /* 5.5.3.2 */</span><br><span>                        if (lctx->cr == dl->cr.rem2loc.cmd && lctx->p_f) {</span><br><span>                          if (!dl->own_busy && !dl->seq_err_cond) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                 LOGP(DLLAPD, LOGL_INFO, "REJ poll "</span><br><span style="color: hsl(0, 100%, 40%);">-                                           "command in timer recovery "</span><br><span style="color: hsl(0, 100%, 40%);">-                                          "state and not in own busy "</span><br><span style="color: hsl(0, 100%, 40%);">-                                          "condition received, so we "</span><br><span style="color: hsl(0, 100%, 40%);">-                                          "respond with RR final "</span><br><span style="color: hsl(0, 100%, 40%);">-                                              "response (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                                  LOGDL(dl, LOGL_INFO, "REJ poll command in timer recovery "</span><br><span style="color: hsl(120, 100%, 40%);">+                                        "state and not in own busy condition received, so we "</span><br><span style="color: hsl(120, 100%, 40%);">+                                              "respond with RR final response\n");</span><br><span>                                         lapd_send_rr(lctx, 1, 0);</span><br><span>                                    /* NOTE: In case of sequence error</span><br><span>                                    * condition, the REJ frame has been</span><br><span>@@ -1459,18 +1393,14 @@</span><br><span>                                        * here</span><br><span>                                       */</span><br><span>                          } else if (dl->own_busy) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                   LOGP(DLLAPD, LOGL_INFO, "REJ poll "</span><br><span style="color: hsl(0, 100%, 40%);">-                                           "command in timer recovery "</span><br><span style="color: hsl(0, 100%, 40%);">-                                          "state and in own busy "</span><br><span style="color: hsl(0, 100%, 40%);">-                                              "condition received, so we "</span><br><span style="color: hsl(0, 100%, 40%);">-                                          "respond with RNR final "</span><br><span style="color: hsl(0, 100%, 40%);">-                                             "response (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                                  LOGDL(dl, LOGL_INFO, "REJ poll command in timer recovery "</span><br><span style="color: hsl(120, 100%, 40%);">+                                        "state and in own busy condition received, so we "</span><br><span style="color: hsl(120, 100%, 40%);">+                                          "respond with RNR final response\n");</span><br><span>                                        lapd_send_rnr(lctx, 1, 0);</span><br><span>                           }</span><br><span>                    } else</span><br><span style="color: hsl(0, 100%, 40%);">-                          LOGP(DLLAPD, LOGL_INFO, "REJ response or not "</span><br><span style="color: hsl(0, 100%, 40%);">-                                        "polling command in timer recovery "</span><br><span style="color: hsl(0, 100%, 40%);">-                                  "state received (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                            LOGDL(dl, LOGL_INFO, "REJ response or not polling command in "</span><br><span style="color: hsl(120, 100%, 40%);">+                                    "timer recovery state received\n");</span><br><span>          }</span><br><span> </span><br><span>                /* FIXME: 5.5.4.2 2) */</span><br><span>@@ -1481,8 +1411,7 @@</span><br><span>              break;</span><br><span>       default:</span><br><span>             /* G.3.1 */</span><br><span style="color: hsl(0, 100%, 40%);">-             LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                     "Supervisory frame not allowed. (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+               LOGDL(dl, LOGL_ERROR, "Supervisory frame not allowed\n");</span><br><span>          msgb_free(msg);</span><br><span>              mdl_error(MDL_CAUSE_FRM_UNIMPL, lctx);</span><br><span>               return -EINVAL;</span><br><span>@@ -1500,13 +1429,13 @@</span><br><span>    int length = lctx->length;</span><br><span>        int rc;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     LOGP(DLLAPD, LOGL_INFO, "I received in state %s on SAPI(%u) (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-               lapd_state_name(dl->state), lctx->sapi, dl);</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGDL(dl, LOGL_INFO, "I received in state %s on SAPI(%u)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+              lapd_state_name(dl->state), lctx->sapi);</span><br><span> </span><br><span>     /* G.2.2 Wrong value of the C/R bit */</span><br><span>       if (lctx->cr == dl->cr.rem2loc.resp) {</span><br><span style="color: hsl(0, 100%, 40%);">-            LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                     "I frame response not allowed (dl=%p state %s)\n", dl, lapd_state_name(dl->state));</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGDL(dl, LOGL_ERROR, "I frame response not allowed (state %s)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                lapd_state_name(dl->state));</span><br><span>                msgb_free(msg);</span><br><span>              mdl_error(MDL_CAUSE_FRM_UNIMPL, lctx);</span><br><span>               return -EINVAL;</span><br><span>@@ -1517,8 +1446,8 @@</span><br><span>               * to a numerical value L>N201 or L=0, an MDL-ERROR-INDICATION</span><br><span>             * primitive with cause "I frame with incorrect length"</span><br><span>             * is sent to the mobile management entity. */</span><br><span style="color: hsl(0, 100%, 40%);">-          LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                     "I frame length not allowed (dl=%p state %s)\n", dl, lapd_state_name(dl->state));</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(dl, LOGL_ERROR, "I frame length not allowed (state %s)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                  lapd_state_name(dl->state));</span><br><span>                msgb_free(msg);</span><br><span>              mdl_error(MDL_CAUSE_IFRM_INC_LEN, lctx);</span><br><span>             return -EIO;</span><br><span>@@ -1529,8 +1458,8 @@</span><br><span>          * cause "I frame with incorrect use of M bit" is sent to the</span><br><span>       * mobile management entity. */</span><br><span>      if (lctx->more && length < lctx->n201) {</span><br><span style="color: hsl(0, 100%, 40%);">-               LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                     "I frame with M bit too short (dl=%p state %s)\n", dl, lapd_state_name(dl->state));</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGDL(dl, LOGL_ERROR, "I frame with M bit too short (state %s)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                lapd_state_name(dl->state));</span><br><span>                msgb_free(msg);</span><br><span>              mdl_error(MDL_CAUSE_IFRM_INC_MBITS, lctx);</span><br><span>           return -EIO;</span><br><span>@@ -1545,16 +1474,15 @@</span><br><span>               /* fall though */</span><br><span>    case LAPD_STATE_SABM_SENT:</span><br><span>   case LAPD_STATE_DISC_SENT:</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DLLAPD, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                    "I frame ignored in state %s (dl=%p)\n", lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(dl, LOGL_NOTICE, "I frame ignored in state %s\n", lapd_state_name(dl->state));</span><br><span>            msgb_free(msg);</span><br><span>              return 0;</span><br><span>    }</span><br><span> </span><br><span>        /* 5.7.1: N(s) sequence error */</span><br><span>     if (ns != dl->v_recv) {</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DLLAPD, LOGL_NOTICE, "N(S) sequence error: N(S)=%u, "</span><br><span style="color: hsl(0, 100%, 40%);">-                 "V(R)=%u (dl=%p state %s)\n", ns, dl->v_recv, dl, lapd_state_name(dl->state));</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(dl, LOGL_NOTICE, "N(S) sequence error: N(S)=%u, V(R)=%u (state %s)\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                      ns, dl->v_recv, lapd_state_name(dl->state));</span><br><span>             /* discard data */</span><br><span>           msgb_free(msg);</span><br><span>              if (dl->seq_err_cond != 1) {</span><br><span>@@ -1588,8 +1516,7 @@</span><br><span> </span><br><span>  /* Increment receiver state */</span><br><span>       dl->v_recv = inc_mod(dl->v_recv, dl->v_range);</span><br><span style="color: hsl(0, 100%, 40%);">- LOGP(DLLAPD, LOGL_INFO, "incrementing V(R) to %u (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-       dl->v_recv, dl);</span><br><span style="color: hsl(120, 100%, 40%);">+      LOGDL(dl, LOGL_INFO, "incrementing V(R) to %u\n", dl->v_recv);</span><br><span> </span><br><span>      /* 5.5.3.1: Acknowlege all transmitted frames up the the N(R)-1 */</span><br><span>   lapd_acknowledge(lctx); /* V(A) is also set here */</span><br><span>@@ -1598,8 +1525,7 @@</span><br><span>  if (!dl->own_busy) {</span><br><span>              /* if the frame carries a complete segment */</span><br><span>                if (!lctx->more && !dl->rcv_buffer) {</span><br><span style="color: hsl(0, 100%, 40%);">-                     LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                      "message in single I frame (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                    LOGDL(dl, LOGL_INFO, "message in single I frame\n");</span><br><span>                       /* send a DATA INDICATION to L3 */</span><br><span>                   msgb_trim(msg, length);</span><br><span>                      rc = send_dl_l3(PRIM_DL_DATA, PRIM_OP_INDICATION, lctx,</span><br><span>@@ -1607,50 +1533,43 @@</span><br><span>            } else {</span><br><span>                     /* create rcv_buffer */</span><br><span>                      if (!dl->rcv_buffer) {</span><br><span style="color: hsl(0, 100%, 40%);">-                               LOGP(DLLAPD, LOGL_INFO, "message in multiple "</span><br><span style="color: hsl(0, 100%, 40%);">-                                     "I frames (first message) (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                             LOGDL(dl, LOGL_INFO, "message in multiple I frames (first message)\n");</span><br><span>                            dl->rcv_buffer = lapd_msgb_alloc(dl->maxf,</span><br><span>                                     "LAPD RX");</span><br><span>                                dl->rcv_buffer->l3h = dl->rcv_buffer->data;</span><br><span>                      }</span><br><span>                    /* concat. rcv_buffer */</span><br><span>                     if (msgb_l3len(dl->rcv_buffer) + length > dl->maxf) {</span><br><span style="color: hsl(0, 100%, 40%);">-                          LOGP(DLLAPD, LOGL_NOTICE, "Received frame "</span><br><span style="color: hsl(0, 100%, 40%);">-                                   "overflow! (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                         LOGDL(dl, LOGL_NOTICE, "Received frame overflow!\n");</span><br><span>                      } else {</span><br><span>                             memcpy(msgb_put(dl->rcv_buffer, length),</span><br><span>                                  msg->l3h, length);</span><br><span>                        }</span><br><span>                    /* if the last segment was received */</span><br><span>                       if (!lctx->more) {</span><br><span style="color: hsl(0, 100%, 40%);">-                           LOGP(DLLAPD, LOGL_INFO, "message in multiple "</span><br><span style="color: hsl(0, 100%, 40%);">-                                        "I frames (last message) (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                           LOGDL(dl, LOGL_INFO, "message in multiple I frames (last message)\n");</span><br><span>                             rc = send_dl_l3(PRIM_DL_DATA,</span><br><span>                                        PRIM_OP_INDICATION, lctx,</span><br><span>                                    dl->rcv_buffer);</span><br><span>                          dl->rcv_buffer = NULL;</span><br><span>                    } else</span><br><span style="color: hsl(0, 100%, 40%);">-                          LOGP(DLLAPD, LOGL_INFO, "message in multiple "</span><br><span style="color: hsl(0, 100%, 40%);">-                                        "I frames (next message) (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                           LOGDL(dl, LOGL_INFO, "message in multiple I frames (next message)\n");</span><br><span>                     msgb_free(msg);</span><br><span> </span><br><span>          }</span><br><span>    } else</span><br><span style="color: hsl(0, 100%, 40%);">-          LOGP(DLLAPD, LOGL_INFO, "I frame ignored during own receiver "</span><br><span style="color: hsl(0, 100%, 40%);">-                        "busy condition\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGDL(dl, LOGL_INFO, "I frame ignored during own receiver busy condition\n");</span><br><span> </span><br><span>  /* Check for P bit */</span><br><span>        if (lctx->p_f) {</span><br><span>          /* 5.5.2.1 */</span><br><span>                /* check if we are not in own receiver busy */</span><br><span>               if (!dl->own_busy) {</span><br><span style="color: hsl(0, 100%, 40%);">-                 LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                      "we are not busy, send RR (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                     LOGDL(dl, LOGL_INFO, "we are not busy, send RR\n");</span><br><span>                        /* Send RR with F=1 */</span><br><span>                       rc = lapd_send_rr(lctx, 1, 0);</span><br><span>               } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                      "we are busy, send RNR (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                        LOGDL(dl, LOGL_INFO, "we are busy, send RNR\n");</span><br><span>                   /* Send RNR with F=1 */</span><br><span>                      rc = lapd_send_rnr(lctx, 1, 0);</span><br><span>              }</span><br><span>@@ -1667,17 +1586,15 @@</span><br><span>                          rc = dl->update_pending_frames(lctx);</span><br><span> </span><br><span>                         if (rc) {</span><br><span style="color: hsl(0, 100%, 40%);">-                               LOGP(DLLAPD, LOGL_INFO, "we are not busy and "</span><br><span style="color: hsl(0, 100%, 40%);">-                                     "have no pending data, send RR (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                                    dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                             LOGDL(dl, LOGL_INFO, "we are not busy and have no pending data, "</span><br><span style="color: hsl(120, 100%, 40%);">+                                 "send RR\n");</span><br><span>                                /* Send RR with F=0 */</span><br><span>                               return lapd_send_rr(lctx, 0, 0);</span><br><span>                     }</span><br><span>                    /* all I or one RR is sent, we are done */</span><br><span>                   return 0;</span><br><span>            } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-                      "we are busy, send RNR (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                        LOGDL(dl, LOGL_INFO, "we are busy, send RNR\n");</span><br><span>                   /* Send RNR with F=0 */</span><br><span>                      rc = lapd_send_rnr(lctx, 0, 0);</span><br><span>              }</span><br><span>@@ -1705,8 +1622,7 @@</span><br><span>            rc = lapd_rx_i(msg, lctx);</span><br><span>           break;</span><br><span>       default:</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                    "unknown LAPD format (dl=%p)\n", lctx->dl);</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGDL(lctx->dl, LOGL_NOTICE, "unknown LAPD format\n");</span><br><span>          msgb_free(msg);</span><br><span>              rc = -EINVAL;</span><br><span>        }</span><br><span>@@ -1744,11 +1660,9 @@</span><br><span>   struct lapd_msg_ctx nctx;</span><br><span> </span><br><span>        if (msg->len)</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_INFO, "perform establishment with content "</span><br><span style="color: hsl(0, 100%, 40%);">-                 "(SABM) (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGDL(dl, LOGL_INFO, "perform establishment with content (SABM)\n");</span><br><span>       else</span><br><span style="color: hsl(0, 100%, 40%);">-            LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-              "perform normal establishm. (SABM), (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(dl, LOGL_INFO, "perform normal establishm. (SABM)\n");</span><br><span> </span><br><span>   /* Flush send-queue */</span><br><span>       /* Clear send-buffer */</span><br><span>@@ -1803,15 +1717,12 @@</span><br><span>    struct msgb *msg = dp->oph.msg;</span><br><span> </span><br><span>       if (msgb_l3len(msg) == 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-             LOGP(DLLAPD, LOGL_ERROR,</span><br><span style="color: hsl(0, 100%, 40%);">-                     "writing an empty message is not possible. (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGDL(dl, LOGL_ERROR, "writing an empty message is not possible\n");</span><br><span>               msgb_free(msg);</span><br><span>              return -1;</span><br><span>   }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-      "writing message to send-queue: l3len: %d (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-         msgb_l3len(msg), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+    LOGDL(dl, LOGL_INFO, "writing message to send-queue: l3len: %d\n", msgb_l3len(msg));</span><br><span> </span><br><span>   /* Write data into the send queue */</span><br><span>         msgb_enqueue(&dl->send_queue, msg);</span><br><span>@@ -1834,19 +1745,17 @@</span><br><span>         struct lapd_msg_ctx nctx;</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-       LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-      "%s() called from line %d (dl=%p)\n", __func__, line, dl);</span><br><span style="color: hsl(120, 100%, 40%);">+     LOGDL(dl, LOGL_INFO, "%s() called from line %d\n", __func__, line);</span><br><span> </span><br><span>    next_frame:</span><br><span> </span><br><span>      if (dl->peer_busy) {</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_INFO, "peer busy, not sending (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGDL(dl, LOGL_INFO, "peer busy, not sending\n");</span><br><span>          return rc;</span><br><span>   }</span><br><span> </span><br><span>        if (dl->state == LAPD_STATE_TIMER_RECOV) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-              "timer recovery, not sending (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGDL(dl, LOGL_INFO, "timer recovery, not sending\n");</span><br><span>             return rc;</span><br><span>   }</span><br><span> </span><br><span>@@ -1857,9 +1766,8 @@</span><br><span>         * of the error recovery procedures as described in subclauses 5.5.4 and</span><br><span>      * 5.5.7. */</span><br><span>         if (dl->v_send == add_mod(dl->v_ack, k, dl->v_range)) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_INFO, "k frames outstanding, not sending "</span><br><span style="color: hsl(0, 100%, 40%);">-                  "more (k=%u V(S)=%u V(A)=%u) (dl=%p)\n", k, dl->v_send,</span><br><span style="color: hsl(0, 100%, 40%);">-                    dl->v_ack, dl);</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGDL(dl, LOGL_INFO, "k frames outstanding, not sending more "</span><br><span style="color: hsl(120, 100%, 40%);">+                    "(k=%u V(S)=%u V(A)=%u)\n", k, dl->v_send, dl->v_ack);</span><br><span>                 return rc;</span><br><span>   }</span><br><span> </span><br><span>@@ -1875,8 +1783,7 @@</span><br><span>                        /* No more data to be sent */</span><br><span>                        if (!dl->send_buffer)</span><br><span>                             return rc;</span><br><span style="color: hsl(0, 100%, 40%);">-                      LOGP(DLLAPD, LOGL_INFO, "get message from "</span><br><span style="color: hsl(0, 100%, 40%);">-                           "send-queue (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+                        LOGDL(dl, LOGL_INFO, "get message from send-queue\n");</span><br><span>             }</span><br><span> </span><br><span>                /* How much is left in the send-buffer? */</span><br><span>@@ -1885,10 +1792,9 @@</span><br><span>          length = left;</span><br><span>               if (length > lctx->n201)</span><br><span>                       length = lctx->n201;</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_INFO, "msg-len %d sent %d left %d N201 %d "</span><br><span style="color: hsl(0, 100%, 40%);">-                 "length %d first byte %02x (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                        msgb_l3len(dl->send_buffer), dl->send_out, left,</span><br><span style="color: hsl(0, 100%, 40%);">-                  lctx->n201, length, dl->send_buffer->l3h[0], dl);</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGDL(dl, LOGL_INFO, "msg-len %d sent %d left %d N201 %d length %d "</span><br><span style="color: hsl(120, 100%, 40%);">+                      "first byte %02x\n", msgb_l3len(dl->send_buffer), dl->send_out, left,</span><br><span style="color: hsl(120, 100%, 40%);">+                 lctx->n201, length, dl->send_buffer->l3h[0]);</span><br><span>                 /* If message in send-buffer is completely sent */</span><br><span>           if (left == 0) {</span><br><span>                     msgb_free(dl->send_buffer);</span><br><span>@@ -1896,8 +1802,8 @@</span><br><span>                       goto next_message;</span><br><span>           }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DLLAPD, LOGL_INFO, "send I frame %sV(S)=%d (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                   (left > length) ? "segment " : "", dl->v_send, dl);</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGDL(dl, LOGL_INFO, "send I frame %sV(S)=%d\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                  (left > length) ? "segment " : "", dl->v_send);</span><br><span> </span><br><span>          /* Create I frame (segment) and transmit-buffer content */</span><br><span>           msg = lapd_msgb_alloc(length, "LAPD I");</span><br><span>@@ -1929,8 +1835,7 @@</span><br><span>           /* Add length to track how much is already in the tx buffer */</span><br><span>               dl->send_out += length;</span><br><span>   } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_INFO, "resend I frame from tx buffer "</span><br><span style="color: hsl(0, 100%, 40%);">-                      "V(S)=%d (dl=%p)\n", dl->v_send, dl);</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGDL(dl, LOGL_INFO, "resend I frame from tx buffer V(S)=%d\n", dl->v_send);</span><br><span> </span><br><span>                /* Create I frame (segment) from tx_hist */</span><br><span>          length = dl->tx_hist[h].msg->len;</span><br><span>@@ -1978,16 +1883,15 @@</span><br><span>    struct lapd_datalink *dl = lctx->dl;</span><br><span>      struct msgb *msg = dp->oph.msg;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-  LOGP(DLLAPD, LOGL_INFO, "perform suspension (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+        LOGDL(dl, LOGL_INFO, "perform suspension\n");</span><br><span> </span><br><span>  /* put back the send-buffer to the send-queue (first position) */</span><br><span>    if (dl->send_buffer) {</span><br><span style="color: hsl(0, 100%, 40%);">-               LOGP(DLLAPD, LOGL_INFO, "put frame in sendbuffer back to "</span><br><span style="color: hsl(0, 100%, 40%);">-                    "queue (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+             LOGDL(dl, LOGL_INFO, "put frame in sendbuffer back to queue\n");</span><br><span>           llist_add(&dl->send_buffer->list, &dl->send_queue);</span><br><span>                 dl->send_buffer = NULL;</span><br><span>   } else</span><br><span style="color: hsl(0, 100%, 40%);">-          LOGP(DLLAPD, LOGL_INFO, "no frame in sendbuffer (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+            LOGDL(dl, LOGL_INFO, "no frame in sendbuffer\n");</span><br><span> </span><br><span>      /* Clear transmit buffer, but keep send buffer */</span><br><span>    lapd_dl_flush_tx(dl);</span><br><span>@@ -2007,9 +1911,7 @@</span><br><span>        struct msgb *msg = dp->oph.msg;</span><br><span>   struct lapd_msg_ctx nctx;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DLLAPD, LOGL_INFO,</span><br><span style="color: hsl(0, 100%, 40%);">-      "perform re-establishment (SABM) length=%d (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-        msg->len, dl);</span><br><span style="color: hsl(120, 100%, 40%);">+        LOGDL(dl, LOGL_INFO, "perform re-establishment (SABM) length=%d\n", msg->len);</span><br><span> </span><br><span>      /* be sure that history is empty */</span><br><span>  lapd_dl_flush_hist(dl);</span><br><span>@@ -2079,7 +1981,7 @@</span><br><span> </span><br><span>  /* local release */</span><br><span>  if (dp->u.rel_req.mode) {</span><br><span style="color: hsl(0, 100%, 40%);">-            LOGP(DLLAPD, LOGL_INFO, "perform local release (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+             LOGDL(dl, LOGL_INFO, "perform local release\n");</span><br><span>           msgb_free(msg);</span><br><span>              /* stop Timer T200 */</span><br><span>                lapd_stop_t200(dl);</span><br><span>@@ -2099,7 +2001,7 @@</span><br><span>  /* flush tx_hist */</span><br><span>  lapd_dl_flush_hist(dl);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     LOGP(DLLAPD, LOGL_INFO, "perform normal release (DISC) (dl=%p)\n", dl);</span><br><span style="color: hsl(120, 100%, 40%);">+     LOGDL(dl, LOGL_INFO, "perform normal release (DISC)\n");</span><br><span> </span><br><span>       /* Push LAPD header on msgb */</span><br><span>       /* assemble message */</span><br><span>@@ -2224,22 +2126,20 @@</span><br><span>             }</span><br><span>    }</span><br><span>    if (!supported) {</span><br><span style="color: hsl(0, 100%, 40%);">-               LOGP(DLLAPD, LOGL_NOTICE,</span><br><span style="color: hsl(0, 100%, 40%);">-                    "Message %u/%u unsupported. (dl=%p)\n", dp->oph.primitive,</span><br><span style="color: hsl(0, 100%, 40%);">-                 dp->oph.operation, dl);</span><br><span style="color: hsl(120, 100%, 40%);">+               LOGDL(dl, LOGL_NOTICE, "Message %u/%u unsupported\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                     dp->oph.primitive, dp->oph.operation);</span><br><span>           msgb_free(msg);</span><br><span>              return 0;</span><br><span>    }</span><br><span>    if (i == L2DOWNSLLEN) {</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_NOTICE, "Message %u/%u unhandled at this "</span><br><span style="color: hsl(0, 100%, 40%);">-                  "state %s. (dl=%p)\n", dp->oph.primitive,</span><br><span style="color: hsl(0, 100%, 40%);">-                  dp->oph.operation, lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+             LOGDL(dl, LOGL_NOTICE, "Message %u/%u unhandled at this state %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                      dp->oph.primitive, dp->oph.operation, lapd_state_name(dl->state));</span><br><span>            msgb_free(msg);</span><br><span>              return 0;</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DLLAPD, LOGL_INFO, "Message %s received in state %s (dl=%p)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-          l2downstatelist[i].name, lapd_state_name(dl->state), dl);</span><br><span style="color: hsl(120, 100%, 40%);">+  LOGDL(dl, LOGL_INFO, "Message %s received in state %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+           l2downstatelist[i].name, lapd_state_name(dl->state));</span><br><span> </span><br><span>         rc = l2downstatelist[i].rout(dp, lctx);</span><br><span> </span><br><span>diff --git a/src/gsm/lapdm.c b/src/gsm/lapdm.c</span><br><span>index 8084029..d06b929 100644</span><br><span>--- a/src/gsm/lapdm.c</span><br><span>+++ b/src/gsm/lapdm.c</span><br><span>@@ -132,11 +132,12 @@</span><br><span> static int update_pending_frames(struct lapd_msg_ctx *lctx);</span><br><span> </span><br><span> static void lapdm_dl_init(struct lapdm_datalink *dl,</span><br><span style="color: hsl(0, 100%, 40%);">-                          struct lapdm_entity *entity, int t200_ms, uint32_t n200)</span><br><span style="color: hsl(120, 100%, 40%);">+                      struct lapdm_entity *entity, int t200_ms, uint32_t n200,</span><br><span style="color: hsl(120, 100%, 40%);">+                      const char *name)</span><br><span> {</span><br><span>     memset(dl, 0, sizeof(*dl));</span><br><span>  dl->entity = entity;</span><br><span style="color: hsl(0, 100%, 40%);">- lapd_dl_init(&dl->dl, 1, 8, 251); /* Section 5.8.5 of TS 04.06 */</span><br><span style="color: hsl(120, 100%, 40%);">+      lapd_dl_init2(&dl->dl, 1, 8, 251, name); /* Section 5.8.5 of TS 04.06 */</span><br><span>      dl->dl.reestablish = 0; /* GSM uses no reestablish */</span><br><span>     dl->dl.send_ph_data_req = lapdm_send_ph_data_req;</span><br><span>         dl->dl.send_dlsap = send_rslms_dlsap;</span><br><span>@@ -177,10 +178,27 @@</span><br><span> void lapdm_entity_init2(struct lapdm_entity *le, enum lapdm_mode mode,</span><br><span>                   const int *t200_ms, int n200)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+    lapdm_entity_init3(le, mode, t200_ms, n200, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! initialize a LAPDm entity and all datalinks inside</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] le LAPDm entity</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] mode lapdm_mode (BTS/MS)</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] t200_ms per-SAPI array of T200 re-transmission timer in milli-seconds</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] n200 N200 re-transmisison count</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] name human-readable name (will be copied internally)</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+void lapdm_entity_init3(struct lapdm_entity *le, enum lapdm_mode mode,</span><br><span style="color: hsl(120, 100%, 40%);">+                      const int *t200_ms, int n200, const char *name_pfx)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span>       unsigned int i;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     for (i = 0; i < ARRAY_SIZE(le->datalink); i++)</span><br><span style="color: hsl(0, 100%, 40%);">-            lapdm_dl_init(&le->datalink[i], le, t200_ms[i], n200);</span><br><span style="color: hsl(120, 100%, 40%);">+ for (i = 0; i < ARRAY_SIZE(le->datalink); i++) {</span><br><span style="color: hsl(120, 100%, 40%);">+                char name[256];</span><br><span style="color: hsl(120, 100%, 40%);">+               if (name_pfx)</span><br><span style="color: hsl(120, 100%, 40%);">+                 snprintf(name, sizeof(name), "%s[%s]", name_pfx, i == 0 ? "0" : "3");</span><br><span style="color: hsl(120, 100%, 40%);">+           lapdm_dl_init(&le->datalink[i], le, t200_ms[i], n200, name);</span><br><span style="color: hsl(120, 100%, 40%);">+   }</span><br><span> </span><br><span>        lapdm_entity_set_mode(le, mode);</span><br><span> }</span><br><span>@@ -226,14 +244,36 @@</span><br><span> int lapdm_channel_init2(struct lapdm_channel *lc, enum lapdm_mode mode,</span><br><span>                     const int *t200_ms_dcch, const int *t200_ms_acch, enum gsm_chan_t chan_t)</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+        return lapdm_channel_init3(lc, mode, t200_ms_dcch, t200_ms_acch, chan_t, NULL);</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/*! initialize a LAPDm channel and all its channels</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] lc \ref lapdm_channel to be initialized</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] mode \ref lapdm_mode (BTS/MS)</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] t200_ms_dcch per-SAPI array of T200 in milli-seconds for DCCH</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] t200_ms_acch per-SAPI array of T200 in milli-seconds for SACCH</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \param[in] chan_t GSM channel type (to correctly set N200)</span><br><span style="color: hsl(120, 100%, 40%);">+ *  \parma[in] name_pfx human-readable name (copied by function)</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+int lapdm_channel_init3(struct lapdm_channel *lc, enum lapdm_mode mode,</span><br><span style="color: hsl(120, 100%, 40%);">+                  const int *t200_ms_dcch, const int *t200_ms_acch, enum gsm_chan_t chan_t,</span><br><span style="color: hsl(120, 100%, 40%);">+                     const char *name_pfx)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span>     int n200_dcch = get_n200_dcch(chan_t);</span><br><span style="color: hsl(120, 100%, 40%);">+        char name[256];</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!name_pfx)</span><br><span style="color: hsl(120, 100%, 40%);">+                name_pfx = "";</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>   if (n200_dcch < 0)</span><br><span>                return -EINVAL;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     lapdm_entity_init2(&lc->lapdm_acch, mode, t200_ms_acch, N200_TR_SACCH);</span><br><span style="color: hsl(120, 100%, 40%);">+        snprintf(name, sizeof(name), "%s[ACCH]", name_pfx);</span><br><span style="color: hsl(120, 100%, 40%);">+ lapdm_entity_init3(&lc->lapdm_acch, mode, t200_ms_acch, N200_TR_SACCH, name);</span><br><span>         lc->lapdm_acch.lapdm_ch = lc;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    lapdm_entity_init2(&lc->lapdm_dcch, mode, t200_ms_dcch, n200_dcch);</span><br><span style="color: hsl(120, 100%, 40%);">+    snprintf(name, sizeof(name), "%s[DCCH]", name_pfx);</span><br><span style="color: hsl(120, 100%, 40%);">+ lapdm_entity_init3(&lc->lapdm_dcch, mode, t200_ms_dcch, n200_dcch, name);</span><br><span>     lc->lapdm_dcch.lapdm_ch = lc;</span><br><span> </span><br><span>         return 0;</span><br><span>@@ -478,7 +518,7 @@</span><br><span> {</span><br><span>         struct msgb *msg;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DLLAPD, LOGL_NOTICE, "sending MDL-ERROR-IND %d\n", cause);</span><br><span style="color: hsl(120, 100%, 40%);">+     LOGDL(&mctx->dl->dl, LOGL_NOTICE, "sending MDL-ERROR-IND %d\n", cause);</span><br><span>  msg = rsl_rll_simple(RSL_MT_ERROR_IND, mctx->chan_nr, mctx->link_id, 0);</span><br><span>       msgb_tlv_put(msg, RSL_IE_RLM_CAUSE, 1, &cause);</span><br><span>  return rslms_sendmsg(msg, mctx->dl->entity);</span><br><span>@@ -523,7 +563,7 @@</span><br><span>     }</span><br><span> </span><br><span>        if (!rll_msg) {</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_ERROR, "Unsupported op %d, prim %d. Please "</span><br><span style="color: hsl(120, 100%, 40%);">+              LOGDL(dl, LOGL_ERROR, "Unsupported op %d, prim %d. Please "</span><br><span>                        "fix!\n", dp->oph.primitive, dp->oph.operation);</span><br><span>             return -EINVAL;</span><br><span>      }</span><br><span>@@ -592,7 +632,7 @@</span><br><span>                                      LAPDm_CTRL_PF_BIT(msg->l2h[1]));</span><br><span>                  rc = 0;</span><br><span>              } else if (LAPDm_CTRL_is_S(msg->l2h[1])) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   LOGP(DLLAPD, LOGL_ERROR, "Supervisory frame in queue, this shouldn't happen\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                        LOGDL(dl, LOGL_ERROR, "Supervisory frame in queue, this shouldn't happen\n");</span><br><span>          }</span><br><span>    }</span><br><span> </span><br><span>@@ -690,8 +730,7 @@</span><br><span>  mctx.dl = lapdm_datalink_for_sapi(le, sapi);</span><br><span>         /* G.2.1 No action on frames containing an unallocated SAPI. */</span><br><span>      if (!mctx.dl) {</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_NOTICE, "Received frame for unsupported "</span><br><span style="color: hsl(0, 100%, 40%);">-                   "SAPI %d!\n", sapi);</span><br><span style="color: hsl(120, 100%, 40%);">+                LOGP(DLLAPD, LOGL_NOTICE, "Received frame for unsupported SAPI %d!\n", sapi);</span><br><span>              msgb_free(msg);</span><br><span>              return -EIO;</span><br><span>         }</span><br><span>@@ -705,8 +744,7 @@</span><br><span>              mctx.link_id |= LAPDm_ADDR_SAPI(msg->l2h[0]);</span><br><span>             /* G.2.3 EA bit set to "0" is not allowed in GSM */</span><br><span>                if (!LAPDm_ADDR_EA(msg->l2h[0])) {</span><br><span style="color: hsl(0, 100%, 40%);">-                   LOGP(DLLAPD, LOGL_NOTICE, "EA bit 0 is not allowed in "</span><br><span style="color: hsl(0, 100%, 40%);">-                               "GSM\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGDL(lctx.dl, LOGL_NOTICE, "EA bit 0 is not allowed in GSM\n");</span><br><span>                   msgb_free(msg);</span><br><span>                      rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, &mctx);</span><br><span>                      return -EINVAL;</span><br><span>@@ -737,8 +775,7 @@</span><br><span>                        /* 5.3.3 UI frames with invalid SAPI values shall be</span><br><span>                          * discarded</span><br><span>                          */</span><br><span style="color: hsl(0, 100%, 40%);">-                     LOGP(DLLAPD, LOGL_INFO, "sapi=%u (discarding)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-                             lctx.sapi);</span><br><span style="color: hsl(120, 100%, 40%);">+                   LOGDL(lctx.dl, LOGL_INFO, "sapi=%u (discarding)\n", lctx.sapi);</span><br><span>                    msgb_free(msg);</span><br><span>                      return 0;</span><br><span>            }</span><br><span>@@ -755,8 +792,7 @@</span><br><span>                               * MDL-ERROR-INDICATION primitive with cause</span><br><span>                                  * "frame not implemented" is sent to the</span><br><span>                           * mobile management entity. */</span><br><span style="color: hsl(0, 100%, 40%);">-                         LOGP(DLLAPD, LOGL_NOTICE, "we don't support "</span><br><span style="color: hsl(0, 100%, 40%);">-                                     "multi-octet length\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                            LOGDL(lctx.dl, LOGL_NOTICE, "we don't support multi-octet length\n");</span><br><span>                          msgb_free(msg);</span><br><span>                              rsl_rll_error(RLL_CAUSE_FRM_UNIMPL, &mctx);</span><br><span>                              return -EINVAL;</span><br><span>@@ -771,7 +807,7 @@</span><br><span>                memcpy(&mctx.dl->mctx, &mctx, sizeof(mctx.dl->mctx));</span><br><span>          rc =lapdm_rx_not_permitted(le, &lctx);</span><br><span>           if (rc > 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                        LOGP(DLLAPD, LOGL_NOTICE, "received message not permitted\n");</span><br><span style="color: hsl(120, 100%, 40%);">+                      LOGDL(lctx.dl, LOGL_NOTICE, "received message not permitted\n");</span><br><span>                   msgb_free(msg);</span><br><span>                      rsl_rll_error(rc, &mctx);</span><br><span>                        return -EINVAL;</span><br><span>@@ -930,7 +966,7 @@</span><br><span>                if (sapi != 0) {</span><br><span>                     /* According to clause 6, the contention resolution</span><br><span>                   * procedure is only permitted with SAPI value 0 */</span><br><span style="color: hsl(0, 100%, 40%);">-                     LOGP(DLLAPD, LOGL_ERROR, "SAPI != 0 but contention"</span><br><span style="color: hsl(120, 100%, 40%);">+                 LOGDL(&dl->dl, LOGL_ERROR, "SAPI != 0 but contention"</span><br><span>                               "resolution (discarding)\n");</span><br><span>                      msgb_free(msg);</span><br><span>                      return send_rll_simple(RSL_MT_REL_IND, &dl->mctx);</span><br><span>@@ -946,7 +982,7 @@</span><br><span> </span><br><span>  /* check if the layer3 message length exceeds N201 */</span><br><span>        if (length > n201) {</span><br><span style="color: hsl(0, 100%, 40%);">-         LOGP(DLLAPD, LOGL_ERROR, "frame too large: %d > N201(%d) "</span><br><span style="color: hsl(120, 100%, 40%);">+               LOGDL(&dl->dl, LOGL_ERROR, "frame too large: %d > N201(%d) "</span><br><span>                     "(discarding)\n", length, n201);</span><br><span>           msgb_free(msg);</span><br><span>              return send_rll_simple(RSL_MT_REL_IND, &dl->mctx);</span><br><span>@@ -975,7 +1011,7 @@</span><br><span>     int length, ui_bts;</span><br><span> </span><br><span>      if (!le) {</span><br><span style="color: hsl(0, 100%, 40%);">-              LOGP(DLLAPD, LOGL_ERROR, "lapdm_datalink without entity error\n");</span><br><span style="color: hsl(120, 100%, 40%);">+          LOGDL(&dl->dl, LOGL_ERROR, "lapdm_datalink without entity error\n");</span><br><span>                msgb_free(msg);</span><br><span>              return -EMLINK;</span><br><span>      }</span><br><span>@@ -992,8 +1028,7 @@</span><br><span>             le->tx_power = *TLVP_VAL(&tv, RSL_IE_MS_POWER);</span><br><span>       }</span><br><span>    if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DLLAPD, LOGL_ERROR, "unit data request without message "</span><br><span style="color: hsl(0, 100%, 40%);">-                 "error\n");</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGDL(&dl->dl, LOGL_ERROR, "unit data request without message error\n");</span><br><span>            msgb_free(msg);</span><br><span>              return -EINVAL;</span><br><span>      }</span><br><span>@@ -1001,15 +1036,14 @@</span><br><span>  length = TLVP_LEN(&tv, RSL_IE_L3_INFO);</span><br><span>  /* check if the layer3 message length exceeds N201 */</span><br><span>        if (length + ((link_id & 0x40) ? 4 : 2) + !ui_bts > 23) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_ERROR, "frame too large: %d > N201(%d) "</span><br><span style="color: hsl(120, 100%, 40%);">+               LOGDL(&dl->dl, LOGL_ERROR, "frame too large: %d > N201(%d) "</span><br><span>                     "(discarding)\n", length,</span><br><span>                  ((link_id & 0x40) ? 18 : 20) + ui_bts);</span><br><span>          msgb_free(msg);</span><br><span>              return -EIO;</span><br><span>         }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   LOGP(DLLAPD, LOGL_INFO, "sending unit data (tx_power=%d, ta=%d)\n",</span><br><span style="color: hsl(0, 100%, 40%);">-           le->tx_power, le->ta);</span><br><span style="color: hsl(120, 100%, 40%);">+  LOGDL(&dl->dl, LOGL_INFO, "sending unit data (tx_power=%d, ta=%d)\n", le->tx_power, le->ta);</span><br><span> </span><br><span>      /* Remove RLL header from msgb and set length to L3-info */</span><br><span>  msgb_pull_to_l3(msg);</span><br><span>@@ -1041,8 +1075,7 @@</span><br><span> </span><br><span>    rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));</span><br><span>        if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DLLAPD, LOGL_ERROR, "data request without message "</span><br><span style="color: hsl(0, 100%, 40%);">-                      "error\n");</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGDL(&dl->dl, LOGL_ERROR, "data request without message error\n");</span><br><span>                 msgb_free(msg);</span><br><span>              return -EINVAL;</span><br><span>      }</span><br><span>@@ -1068,7 +1101,7 @@</span><br><span>    struct osmo_dlsap_prim dp;</span><br><span> </span><br><span>       if (sapi != 0) {</span><br><span style="color: hsl(0, 100%, 40%);">-                LOGP(DLLAPD, LOGL_ERROR, "SAPI != 0 while suspending\n");</span><br><span style="color: hsl(120, 100%, 40%);">+           LOGDL(&dl->dl, LOGL_ERROR, "SAPI != 0 while suspending\n");</span><br><span>                 msgb_free(msg);</span><br><span>              return -EINVAL;</span><br><span>      }</span><br><span>@@ -1098,7 +1131,7 @@</span><br><span> </span><br><span>        rsl_tlv_parse(&tv, rllh->data, msgb_l2len(msg)-sizeof(*rllh));</span><br><span>        if (!TLVP_PRESENT(&tv, RSL_IE_L3_INFO)) {</span><br><span style="color: hsl(0, 100%, 40%);">-           LOGP(DLLAPD, LOGL_ERROR, "resume without message error\n");</span><br><span style="color: hsl(120, 100%, 40%);">+         LOGDL(&dl->dl, LOGL_ERROR, "resume without message error\n");</span><br><span>               msgb_free(msg);</span><br><span>              return send_rll_simple(RSL_MT_REL_IND, &dl->mctx);</span><br><span>    }</span><br><span>diff --git a/src/gsm/libosmogsm.map b/src/gsm/libosmogsm.map</span><br><span>index a518b28..5ad2d32 100644</span><br><span>--- a/src/gsm/libosmogsm.map</span><br><span>+++ b/src/gsm/libosmogsm.map</span><br><span>@@ -452,6 +452,7 @@</span><br><span> </span><br><span> lapd_dl_exit;</span><br><span> lapd_dl_init;</span><br><span style="color: hsl(120, 100%, 40%);">+lapd_dl_init2;</span><br><span> lapd_dl_reset;</span><br><span> lapd_msgb_alloc;</span><br><span> lapd_ph_data_ind;</span><br><span>@@ -462,6 +463,7 @@</span><br><span> lapdm_channel_exit;</span><br><span> lapdm_channel_init;</span><br><span> lapdm_channel_init2;</span><br><span style="color: hsl(120, 100%, 40%);">+lapdm_channel_init3;</span><br><span> lapdm_channel_reset;</span><br><span> lapdm_channel_set_flags;</span><br><span> lapdm_channel_set_l1;</span><br><span>@@ -471,6 +473,7 @@</span><br><span> lapdm_entity_exit;</span><br><span> lapdm_entity_init;</span><br><span> lapdm_entity_init2;</span><br><span style="color: hsl(120, 100%, 40%);">+lapdm_entity_init3;</span><br><span> lapdm_entity_reset;</span><br><span> lapdm_entity_set_flags;</span><br><span> lapdm_entity_set_mode;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/18002">change 18002</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/libosmocore/+/18002"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ie6742843fff809edffcac24c4dce4edf66bc71be </div>
<div style="display:none"> Gerrit-Change-Number: 18002 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>