gprs: Improve loglevels and log messages for SGSN

Many log levels were DEBUG without any good reason. Also where possible
the details of the MM or PDP context are now logged with LOGMM/PDPCTXP.
diff --git a/openbsc/src/gprs/gprs_gmm.c b/openbsc/src/gprs/gprs_gmm.c
index fa5e82d..a4305e8 100644
--- a/openbsc/src/gprs/gprs_gmm.c
+++ b/openbsc/src/gprs/gprs_gmm.c
@@ -352,7 +352,7 @@
 	uint8_t *ptsig;
 #endif
 
-	DEBUGP(DMM, "<- GPRS ATTACH ACCEPT (new P-TMSI=0x%08x)\n", mm->p_tmsi);
+	LOGMMCTXP(LOGL_INFO, mm, "<- GPRS ATTACH ACCEPT (new P-TMSI=0x%08x)\n", mm->p_tmsi);
 
 	mmctx2msgid(msg, mm);
 
@@ -396,7 +396,7 @@
 {
 	struct gsm48_hdr *gh;
 
-	DEBUGP(DMM, "<- GPRS ATTACH REJECT\n");
+	LOGP(DMM, LOGL_NOTICE, "<- GPRS ATTACH REJECT: %s\n", get_value_string(gmm_cause_names, gmm_cause));
 
 	gh = (struct gsm48_hdr *) msgb_put(msg, sizeof(*gh) + 1);
 	gh->proto_discr = GSM48_PDISC_MM_GPRS;
@@ -426,7 +426,7 @@
 	struct msgb *msg = gsm48_msgb_alloc();
 	struct gsm48_hdr *gh;
 
-	DEBUGP(DMM, "<- GPRS DETACH ACCEPT\n");
+	LOGMMCTXP(LOGL_INFO, mm, "<- GPRS DETACH ACCEPT\n");
 
 	mmctx2msgid(msg, mm);
 
@@ -444,7 +444,7 @@
 	struct msgb *msg = gsm48_msgb_alloc();
 	struct gsm48_hdr *gh;
 
-	DEBUGP(DMM, "<- GPRS IDENTITY REQUEST: mi_type=%02x\n", id_type);
+	LOGMMCTXP(LOGL_DEBUG, mm, "<- GPRS IDENTITY REQUEST: mi_type=%02x\n", id_type);
 
 	mmctx2msgid(msg, mm);
 
@@ -467,7 +467,7 @@
 	struct gsm48_auth_ciph_req *acreq;
 	uint8_t *m_rand, *m_cksn;
 
-	DEBUGP(DMM, "<- GPRS AUTH AND CIPHERING REQ (rand = %s)\n",
+	LOGMMCTXP(LOGL_INFO, mm, "<- GPRS AUTH AND CIPHERING REQ (rand = %s)\n",
 		osmo_hexdump(rand, 16));
 
 	mmctx2msgid(msg, mm);
@@ -507,7 +507,7 @@
 	struct msgb *msg = gsm48_msgb_alloc();
 	struct gsm48_hdr *gh;
 
-	DEBUGP(DMM, "<- GPRS AUTH AND CIPH REJECT\n");
+	LOGMMCTXP(LOGL_NOTICE, mm, "<- GPRS AUTH AND CIPH REJECT\n");
 
 	mmctx2msgid(msg, mm);
 
@@ -582,11 +582,11 @@
 	char mi_string[GSM48_MI_SIZE];
 
 	gsm48_mi_to_string(mi_string, sizeof(mi_string), &gh->data[1], gh->data[0]);
-	DEBUGP(DMM, "-> GMM IDENTITY RESPONSE: mi_type=0x%02x MI(%s) ",
+	LOGMMCTXP(LOGL_DEBUG, ctx, "-> GMM IDENTITY RESPONSE: mi_type=0x%02x MI(%s)\n",
 		mi_type, mi_string);
 
 	if (!ctx) {
-		DEBUGP(DMM, "from unknown TLLI 0x%08x?!?\n", msgb_tlli(msg));
+		DEBUGP(DMM, "from unknown TLLI 0x%08x?!? This should not happen\n", msgb_tlli(msg));
 		return -EINVAL;
 	}
 
@@ -603,9 +603,9 @@
 			struct sgsn_mm_ctx *ictx;
 			ictx = sgsn_mm_ctx_by_imsi(mi_string);
 			if (ictx) {
-				DEBUGP(DMM, "Deleting old MM Context for same IMSI "
-				       "p_tmsi_old=0x%08x, p_tmsi_new=0x%08x\n",
-					ictx->p_tmsi, ctx->p_tmsi);
+				LOGMMCTXP(LOGL_NOTICE, ctx, "Deleting old MM Context for same IMSI "
+				       "p_tmsi_old=0x%08x\n",
+					ictx->p_tmsi);
 				gprs_llgmm_assign(ictx->llme, ictx->tlli,
 						  0xffffffff, GPRS_ALGO_GEA0, NULL);
 				/* FIXME: this is a hard free, we don't
@@ -623,7 +623,6 @@
 		break;
 	}
 
-	DEBUGPC(DMM, "\n");
 	/* Check if we can let the mobile station enter */
 	return gsm48_gmm_authorize(ctx, ctx->t3350_mode);
 }
@@ -641,7 +640,7 @@
 	struct gprs_ra_id ra_id;
 	uint16_t cid;
 
-	DEBUGP(DMM, "-> GMM ATTACH REQUEST ");
+	LOGP(DMM, LOGL_INFO, "-> GMM ATTACH REQUEST ");
 
 	/* As per TS 04.08 Chapter 4.7.1.4, the attach request arrives either
 	 * with a foreign TLLI (P-TMSI that was allocated to the MS before),
@@ -686,6 +685,8 @@
 		goto err_inval;
 	cur += ms_ra_acc_cap_len;
 
+	LOGPC(DMM, LOGL_INFO, "\n");
+
 	/* Optional: Old P-TMSI Signature, Requested READY timer, TMSI Status */
 
 	switch (mi_type) {
@@ -704,7 +705,7 @@
 			if (strncmp(mccmnc, mi_string, 5) &&
 			    (sgsn->cfg.acl_enabled &&
 			     !sgsn_acl_lookup(mi_string))) {
-				LOGP(DMM, LOGL_INFO, "Rejecting ATTACH REQUESET IMSI=%s\n",
+				LOGP(DMM, LOGL_NOTICE, "Rejecting ATTACH REQUEST IMSI=%s\n",
 				     mi_string);
 				return gsm48_tx_gmm_att_rej_oldmsg(msg,
 								GMM_CAUSE_GPRS_NOTALLOWED);
@@ -764,11 +765,10 @@
 	gprs_llgmm_assign(ctx->llme, ctx->tlli, ctx->tlli_new,
 			  GPRS_ALGO_GEA0, NULL);
 
-	DEBUGPC(DMM, "\n");
 	return gsm48_gmm_authorize(ctx, GMM_T3350_MODE_ATT);
 
 err_inval:
-	DEBUGPC(DMM, "\n");
+	LOGPC(DMM, LOGL_INFO, "\n");
 	return gsm48_tx_gmm_att_rej_oldmsg(msg, GMM_CAUSE_SEM_INCORR_MSG);
 }
 
@@ -785,7 +785,7 @@
 
 	/* FIXME: In 24.008 there is an optional P-TMSI and P-TMSI signature IE */
 
-	DEBUGP(DMM, "-> GMM DETACH REQUEST TLLI=0x%08x type=%s %s\n",
+	LOGMMCTXP(LOGL_INFO, ctx, "-> GMM DETACH REQUEST TLLI=0x%08x type=%s %s\n",
 		msgb_tlli(msg), get_value_string(gprs_det_t_mo_strs, detach_type),
 		power_off ? "Power-off" : "");
 
@@ -794,7 +794,7 @@
 
 	/* delete all existing PDP contexts for this MS */
 	llist_for_each_entry_safe(pdp, pdp2, &ctx->pdp_list, list) {
-		LOGP(DMM, LOGL_NOTICE, "Dropping PDP context for NSAPI=%u "
+		LOGMMCTXP(LOGL_NOTICE, ctx, "Dropping PDP context for NSAPI=%u "
 		     "due to GPRS DETACH REQUEST\n", pdp->nsapi);
 		sgsn_delete_pdp_ctx(pdp);
 		/* FIXME: the callback wants to transmit a DEACT PDP CTX ACK,
@@ -819,7 +819,7 @@
 	struct gsm48_ra_upd_ack *rua;
 	uint8_t *mid;
 
-	DEBUGP(DMM, "<- ROUTING AREA UPDATE ACCEPT\n");
+	LOGMMCTXP(LOGL_INFO, mm, "<- ROUTING AREA UPDATE ACCEPT\n");
 
 	mmctx2msgid(msg, mm);
 
@@ -860,7 +860,7 @@
 	struct msgb *msg = gsm48_msgb_alloc();
 	struct gsm48_hdr *gh;
 
-	DEBUGP(DMM, "<- ROUTING AREA UPDATE REJECT\n");
+	LOGP(DMM, LOGL_NOTICE, "<- ROUTING AREA UPDATE REJECT\n");
 
 	gmm_copy_id(msg, old_msg);
 
@@ -888,14 +888,14 @@
 	llist_for_each_entry_safe(pdp, pdp2, &mmctx->pdp_list, list) {
 		if (pdp->nsapi < 8) {
 			if (!(pdp_status[0] & (1 << pdp->nsapi))) {
-				LOGP(DMM, LOGL_NOTICE, "Dropping PDP context for NSAPI=%u "
+				LOGMMCTXP(LOGL_NOTICE, mmctx, "Dropping PDP context for NSAPI=%u "
 					"due to PDP CTX STATUS IE= 0x%02x%02x\n",
 					pdp->nsapi, pdp_status[1], pdp_status[0]);
 				sgsn_delete_pdp_ctx(pdp);
 			}
 		} else {
 			if (!(pdp_status[1] & (1 << (pdp->nsapi - 8)))) {
-				LOGP(DMM, LOGL_NOTICE, "Dropping PDP context for NSAPI=%u "
+				LOGMMCTXP(LOGL_NOTICE, mmctx, "Dropping PDP context for NSAPI=%u "
 					"due to PDP CTX STATUS IE= 0x%02x%02x\n",
 					pdp->nsapi, pdp_status[1], pdp_status[0]);
 				sgsn_delete_pdp_ctx(pdp);
@@ -918,7 +918,7 @@
 	/* Update Type 10.5.5.18 */
 	upd_type = *cur++ & 0x0f;
 
-	DEBUGP(DMM, "-> GMM RA UPDATE REQUEST type=\"%s\" ",
+	LOGP(DMM, LOGL_INFO, "-> GMM RA UPDATE REQUEST type=\"%s\"\n",
 		get_value_string(gprs_upd_t_strs, upd_type));
 
 	/* Old routing area identification 10.5.5.15 */
@@ -939,7 +939,7 @@
 	switch (upd_type) {
 	case GPRS_UPD_T_RA_LA:
 	case GPRS_UPD_T_RA_LA_IMSI_ATT:
-		DEBUGPC(DMM, " unsupported in Mode III, is your SI13 corrupt?\n");
+		LOGP(DMM, LOGL_NOTICE, "Update type %i unsupported in Mode III, is your SI13 corrupt?\n", upd_type);
 		return gsm48_tx_gmm_ra_upd_rej(msg, GMM_CAUSE_PROTO_ERR_UNSPEC);
 		break;
 	case GPRS_UPD_T_RA:
@@ -952,10 +952,9 @@
 	if (!mmctx || mmctx->mm_state == GMM_DEREGISTERED) {
 		/* send a XID reset to re-set all LLC sequence numbers
 		 * in the MS */
-		DEBUGPC(DMM, " LLC XID RESET ");
+		LOGP(DMM, LOGL_NOTICE, "LLC XID RESET\n");
 		gprs_llgmm_reset(llme);
 		/* The MS has to perform GPRS attach */
-		DEBUGPC(DMM, " REJECT\n");
 		/* Device is still IMSI atached for CS but initiate GPRS ATTACH */
 		return gsm48_tx_gmm_ra_upd_rej(msg, GMM_CAUSE_MS_ID_NOT_DERIVED);
 	}
@@ -974,7 +973,6 @@
 
 	rate_ctr_inc(&mmctx->ctrg->ctr[GMM_CTR_RA_UPDATE]);
 
-	DEBUGPC(DMM, " ACCEPT\n");
 #ifdef PTMSI_ALLOC
 	mmctx->p_tmsi_old = mmctx->p_tmsi;
 	mmctx->p_tmsi = sgsn_alloc_ptmsi();
@@ -1008,7 +1006,7 @@
 {
 	struct gsm48_hdr *gh = msgb_l3(msg);
 
-	DEBUGP(DMM, "-> GPRS MM STATUS (cause: %s)\n",
+	LOGMMCTXP(LOGL_INFO, mmctx, "-> GPRS MM STATUS (cause: %s)\n",
 		get_value_string(gmm_cause_names, gh->data[0]));
 
 	return 0;
@@ -1038,6 +1036,7 @@
 	case GSM48_MT_GMM_ATTACH_REQ:
 		rc = gsm48_rx_gmm_att_req(mmctx, msg, llme);
 		break;
+	/* For all the following types mmctx can not be NULL */
 	case GSM48_MT_GMM_ID_RESP:
 		rc = gsm48_rx_gmm_id_resp(mmctx, msg);
 		break;
@@ -1049,7 +1048,7 @@
 		break;
 	case GSM48_MT_GMM_ATTACH_COMPL:
 		/* only in case SGSN offered new P-TMSI */
-		DEBUGP(DMM, "-> ATTACH COMPLETE\n");
+		LOGMMCTXP(LOGL_INFO, mmctx, "-> ATTACH COMPLETE\n");
 		mmctx_timer_stop(mmctx, 3350);
 		mmctx->p_tmsi_old = 0;
 		/* Unassign the old TLLI */
@@ -1060,7 +1059,7 @@
 		break;
 	case GSM48_MT_GMM_RA_UPD_COMPL:
 		/* only in case SGSN offered new P-TMSI */
-		DEBUGP(DMM, "-> ROUTEING AREA UPDATE COMPLETE\n");
+		LOGMMCTXP(LOGL_INFO, mmctx, "-> ROUTEING AREA UPDATE COMPLETE\n");
 		mmctx_timer_stop(mmctx, 3350);
 		mmctx->p_tmsi_old = 0;
 		/* Unassign the old TLLI */
@@ -1070,7 +1069,7 @@
 		rc = 0;
 		break;
 	case GSM48_MT_GMM_PTMSI_REALL_COMPL:
-		DEBUGP(DMM, "-> PTMSI REALLLICATION COMPLETE\n");
+		LOGMMCTXP(LOGL_INFO, mmctx, "-> PTMSI REALLLICATION COMPLETE\n");
 		mmctx_timer_stop(mmctx, 3350);
 		mmctx->p_tmsi_old = 0;
 		/* Unassign the old TLLI */
@@ -1082,7 +1081,7 @@
 		rc = gsm48_rx_gmm_auth_ciph_resp(mmctx, msg);
 		break;
 	default:
-		DEBUGP(DMM, "Unknown GSM 04.08 GMM msg type 0x%02x\n",
+		LOGMMCTXP(LOGL_NOTICE, mmctx, "Unknown GSM 04.08 GMM msg type 0x%02x\n",
 			gh->msg_type);
 		rc = gsm48_tx_gmm_status(mmctx, GMM_CAUSE_MSGT_NOTEXIST_NOTIMPL);
 		break;
@@ -1100,7 +1099,7 @@
 	switch (mm->T) {
 	case 3350:	/* waiting for ATTACH COMPLETE */
 		if (mm->num_T_exp >= 5) {
-			LOGP(DMM, LOGL_NOTICE, "T3350 expired >= 5 times\n");
+			LOGMMCTXP(LOGL_NOTICE, mm, "T3350 expired >= 5 times\n");
 			mm->mm_state = GMM_DEREGISTERED;
 			/* FIXME: should we return some error? */
 			break;
@@ -1121,7 +1120,7 @@
 		break;
 	case 3360:	/* waiting for AUTH AND CIPH RESP */
 		if (mm->num_T_exp >= 5) {
-			LOGP(DMM, LOGL_NOTICE, "T3360 expired >= 5 times\n");
+			LOGMMCTXP(LOGL_NOTICE, mm, "T3360 expired >= 5 times\n");
 			mm->mm_state = GMM_DEREGISTERED;
 			break;
 		}
@@ -1130,7 +1129,7 @@
 		break;
 	case 3370:	/* waiting for IDENTITY RESPONSE */
 		if (mm->num_T_exp >= 5) {
-			LOGP(DMM, LOGL_NOTICE, "T3370 expired >= 5 times\n");
+			LOGMMCTXP(LOGL_NOTICE, mm, "T3370 expired >= 5 times\n");
 			gsm48_tx_gmm_att_rej(mm, GMM_CAUSE_MS_ID_NOT_DERIVED);
 			mm->mm_state = GMM_DEREGISTERED;
 			break;
@@ -1140,7 +1139,7 @@
 		osmo_timer_schedule(&mm->timer, GSM0408_T3370_SECS, 0);
 		break;
 	default:
-		LOGP(DMM, LOGL_ERROR, "timer expired in unknown mode %u\n",
+		LOGMMCTXP(LOGL_ERROR, mm, "timer expired in unknown mode %u\n",
 			mm->T);
 	}
 }
@@ -1195,7 +1194,7 @@
 	struct gsm48_hdr *gh;
 	uint8_t transaction_id = pdp->ti ^ 0x8; /* flip */
 
-	DEBUGP(DMM, "<- ACTIVATE PDP CONTEXT ACK\n");
+	LOGPDPCTXP(LOGL_INFO, pdp, "<- ACTIVATE PDP CONTEXT ACK\n");
 
 	mmctx2msgid(msg, pdp->mm);
 
@@ -1239,7 +1238,7 @@
 	struct gsm48_hdr *gh;
 	uint8_t transaction_id = tid ^ 0x8; /* flip */
 
-	DEBUGP(DMM, "<- ACTIVATE PDP CONTEXT REJ(cause=%u)\n", cause);
+	LOGMMCTXP(LOGL_NOTICE, mm, "<- ACTIVATE PDP CONTEXT REJ(cause=%u)\n", cause);
 
 	mmctx2msgid(msg, mm);
 
@@ -1262,7 +1261,7 @@
 	struct gsm48_hdr *gh;
 	uint8_t transaction_id = tid ^ 0x8; /* flip */
 
-	DEBUGP(DMM, "<- DEACTIVATE PDP CONTEXT REQ\n");
+	LOGMMCTXP(LOGL_INFO, mm, "<- DEACTIVATE PDP CONTEXT REQ\n");
 
 	mmctx2msgid(msg, mm);
 
@@ -1288,7 +1287,7 @@
 	struct gsm48_hdr *gh;
 	uint8_t transaction_id = tid ^ 0x8; /* flip */
 
-	DEBUGP(DMM, "<- DEACTIVATE PDP CONTEXT ACK\n");
+	LOGMMCTXP(LOGL_INFO, mm, "<- DEACTIVATE PDP CONTEXT ACK\n");
 
 	mmctx2msgid(msg, mm);
 
@@ -1316,7 +1315,7 @@
 	struct sgsn_ggsn_ctx *ggsn;
 	struct sgsn_pdp_ctx *pdp;
 
-	DEBUGP(DMM, "-> ACTIVATE PDP CONTEXT REQ: SAPI=%u NSAPI=%u ",
+	LOGMMCTXP(LOGL_INFO, mmctx, "-> ACTIVATE PDP CONTEXT REQ: SAPI=%u NSAPI=%u ",
 		act_req->req_llc_sapi, act_req->req_nsapi);
 
 	/* FIXME: length checks! */
@@ -1364,7 +1363,7 @@
 		break;
 	}
 
-	DEBUGPC(DMM, "\n");
+	LOGPC(DMM, LOGL_INFO, "\n");
 
 	/* put the non-TLV elements in the TLV parser structure to
 	 * pass them on to the SGSN / GTP code */
@@ -1429,12 +1428,12 @@
 	uint8_t transaction_id = (gh->proto_discr >> 4);
 	struct sgsn_pdp_ctx *pdp;
 
-	DEBUGP(DMM, "-> DEACTIVATE PDP CONTEXT REQ (cause: %s)\n",
+	LOGMMCTXP(LOGL_INFO, mm, "-> DEACTIVATE PDP CONTEXT REQ (cause: %s)\n",
 		get_value_string(gsm_cause_names, gh->data[0]));
 
 	pdp = sgsn_pdp_ctx_by_tid(mm, transaction_id);
 	if (!pdp) {
-		LOGP(DMM, LOGL_NOTICE, "Deactivate PDP Context Request for "
+		LOGMMCTXP(LOGL_NOTICE, mm, "Deactivate PDP Context Request for "
 			"non-existing PDP Context (IMSI=%s, TI=%u)\n",
 			mm->imsi, transaction_id);
 		return _gsm48_tx_gsm_deact_pdp_acc(mm, transaction_id);
@@ -1450,11 +1449,11 @@
 	uint8_t transaction_id = (gh->proto_discr >> 4);
 	struct sgsn_pdp_ctx *pdp;
 
-	DEBUGP(DMM, "-> DEACTIVATE PDP CONTEXT ACK\n");
+	LOGMMCTXP(LOGL_INFO, mm, "-> DEACTIVATE PDP CONTEXT ACK\n");
 
 	pdp = sgsn_pdp_ctx_by_tid(mm, transaction_id);
 	if (!pdp) {
-		LOGP(DMM, LOGL_NOTICE, "Deactivate PDP Context Accept for "
+		LOGMMCTXP(LOGL_NOTICE, mm, "Deactivate PDP Context Accept for "
 			"non-existing PDP Context (IMSI=%s, TI=%u)\n",
 			mm->imsi, transaction_id);
 		return 0;
@@ -1467,7 +1466,7 @@
 {
 	struct gsm48_hdr *gh = msgb_l3(msg);
 
-	DEBUGP(DMM, "-> GPRS SM STATUS (cause: %s)\n",
+	LOGMMCTXP(LOGL_INFO, ctx, "-> GPRS SM STATUS (cause: %s)\n",
 		get_value_string(gsm_cause_names, gh->data[0]));
 
 	return 0;
@@ -1482,7 +1481,7 @@
 	switch (pdp->T) {
 	case 3395:	/* waiting for PDP CTX DEACT ACK */
 		if (pdp->num_T_exp >= 4) {
-			LOGP(DMM, LOGL_NOTICE, "T3395 expired >= 5 times\n");
+			LOGPDPCTXP(LOGL_NOTICE, pdp, "T3395 expired >= 5 times\n");
 			pdp->state = PDP_STATE_INACTIVE;
 			sgsn_delete_pdp_ctx(pdp);
 			break;
@@ -1491,7 +1490,7 @@
 		osmo_timer_schedule(&pdp->timer, GSM0408_T3395_SECS, 0);
 		break;
 	default:
-		LOGP(DMM, LOGL_ERROR, "timer expired in unknown mode %u\n",
+		LOGPDPCTXP(LOGL_ERROR, pdp, "timer expired in unknown mode %u\n",
 			pdp->T);
 	}
 }
@@ -1528,12 +1527,12 @@
 	case GSM48_MT_GSM_REQ_PDP_ACT_REJ:
 	case GSM48_MT_GSM_ACT_AA_PDP_REQ:
 	case GSM48_MT_GSM_DEACT_AA_PDP_REQ:
-		DEBUGP(DMM, "Unimplemented GSM 04.08 GSM msg type 0x%02x\n",
+		LOGMMCTXP(LOGL_NOTICE, mmctx, "Unimplemented GSM 04.08 GSM msg type 0x%02x\n",
 			gh->msg_type);
 		rc = gsm48_tx_sm_status(mmctx, GSM_CAUSE_MSGT_NOTEXIST_NOTIMPL);
 		break;
 	default:
-		DEBUGP(DMM, "Unknown GSM 04.08 GSM msg type 0x%02x\n",
+		LOGMMCTXP(LOGL_NOTICE, mmctx, "Unknown GSM 04.08 GSM msg type 0x%02x\n",
 			gh->msg_type);
 		rc = gsm48_tx_sm_status(mmctx, GSM_CAUSE_MSGT_NOTEXIST_NOTIMPL);
 		break;
@@ -1570,7 +1569,7 @@
 		rc = gsm0408_rcv_gsm(mmctx, msg, llme);
 		break;
 	default:
-		DEBUGP(DMM, "Unknown GSM 04.08 discriminator 0x%02x\n",
+		LOGP(DMM, LOGL_NOTICE, "Unknown GSM 04.08 discriminator 0x%02x\n",
 			pdisc);
 		/* FIXME: return status message */
 		break;
@@ -1591,7 +1590,7 @@
 	}
 
 	if (mmctx->mm_state != GMM_REGISTERED_NORMAL) {
-		LOGP(DMM, LOGL_NOTICE, "SUSPEND request while state "
+		LOGMMCTXP(LOGL_NOTICE, mmctx, "SUSPEND request while state "
 			"!= REGISTERED (TLLI=%08x)\n", tlli);
 		return -EINVAL;
 	}
@@ -1616,7 +1615,7 @@
 	}
 
 	if (mmctx->mm_state != GMM_REGISTERED_SUSPENDED) {
-		LOGP(DMM, LOGL_NOTICE, "RESUME request while state "
+		LOGMMCTXP(LOGL_NOTICE, mmctx, "RESUME request while state "
 			"!= SUSPENDED (TLLI=%08x)\n", tlli);
 		/* FIXME: should we not simply ignore it? */
 		return -EINVAL;
diff --git a/openbsc/src/gprs/gprs_llc.c b/openbsc/src/gprs/gprs_llc.c
index 08a95b3..b157bfd 100644
--- a/openbsc/src/gprs/gprs_llc.c
+++ b/openbsc/src/gprs/gprs_llc.c
@@ -45,7 +45,7 @@
 
 	if (gprs_tlli_type(tlli) == TLLI_FOREIGN) {
 		new_tlli = tlli | 0x40000000;
-		DEBUGP(DLLC, "TLLI 0x%08x is foreign, converting to "
+		LOGP(DLLC, LOGL_NOTICE, "TLLI 0x%08x is foreign, converting to "
 			"local TLLI 0x%08x\n", tlli, new_tlli);
 	} else
 		new_tlli = tlli;
@@ -195,7 +195,7 @@
 		struct gprs_llc_llme *llme;
 		/* FIXME: don't use the TLLI but the 0xFFFF unassigned? */
 		llme = llme_alloc(tlli);
-		LOGP(DLLC, LOGL_DEBUG, "LLC RX: unknown TLLI 0x%08x, "
+		LOGP(DLLC, LOGL_NOTICE, "LLC RX: unknown TLLI 0x%08x, "
 			"creating LLME on the fly\n", tlli);
 		lle = &llme->lle[sapi];
 		return lle;
@@ -357,7 +357,7 @@
 		lle = lle_by_tlli_sapi(tlli_foreign2local(msgb_tlli(msg)), sapi);
 	if (!lle) {
 		struct gprs_llc_llme *llme;
-		LOGP(DLLC, LOGL_ERROR, "LLC TX: unknown TLLI 0x%08x, "
+		LOGP(DLLC, LOGL_NOTICE, "LLC TX: unknown TLLI 0x%08x, "
 			"creating LLME on the fly\n", msgb_tlli(msg));
 		llme = llme_alloc(msgb_tlli(msg));
 		lle = &llme->lle[sapi];
diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c
index f92b2de..0c15619 100644
--- a/openbsc/src/gprs/gprs_sgsn.c
+++ b/openbsc/src/gprs/gprs_sgsn.c
@@ -254,7 +254,7 @@
 	 * sgsn_libgtp:cb_data_ind() */
 	if (pdp->lib) {
 		struct pdp_t *lib = pdp->lib;
-		LOGP(DGPRS, LOGL_NOTICE, "freeing PDP context that still "
+		LOGPDPCTXP(LOGL_NOTICE, pdp, "freeing PDP context that still "
 		     "has a libgtp handle attached to it, this shouldn't "
 		     "happen!\n");
 		osmo_generate_backtrace();
@@ -376,7 +376,7 @@
 		gsm48_tx_gsm_deact_pdp_req(pdp, GSM_CAUSE_NET_FAIL);
 	else  {
 		/* FIXME: GPRS paging in case MS is SUSPENDED */
-		LOGP(DGPRS, LOGL_NOTICE, "Hard-dropping PDP ctx due to GGSN "
+		LOGPDPCTXP(LOGL_NOTICE, pdp, "Hard-dropping PDP ctx due to GGSN "
 			"recovery\n");
 		/* FIXME: how to tell this to libgtp? */
 		sgsn_pdp_ctx_free(pdp);
diff --git a/openbsc/src/gprs/sgsn_libgtp.c b/openbsc/src/gprs/sgsn_libgtp.c
index 1a7f078..44e94b3 100644
--- a/openbsc/src/gprs/sgsn_libgtp.c
+++ b/openbsc/src/gprs/sgsn_libgtp.c
@@ -209,7 +209,7 @@
 /* SGSN wants to delete a PDP context */
 int sgsn_delete_pdp_ctx(struct sgsn_pdp_ctx *pctx)
 {
-	LOGP(DGPRS, LOGL_ERROR, "Delete PDP Context\n");
+	LOGPDPCTXP(LOGL_ERROR, pctx, "Delete PDP Context\n");
 
 	/* FIXME: decide if we need teardown or not ! */
 	return gtp_delete_context_req(pctx->ggsn->gsn, pctx->lib, pctx, 1);
@@ -260,7 +260,7 @@
 	struct sgsn_pdp_ctx *pctx = cbp;
 	uint8_t reject_cause;
 
-	DEBUGP(DGPRS, "Received CREATE PDP CTX CONF, cause=%d(%s)\n",
+	LOGPDPCTXP(LOGL_INFO, pctx, "Received CREATE PDP CTX CONF, cause=%d(%s)\n",
 		cause, get_value_string(gtp_cause_strs, cause));
 
 	/* Check for cause value if it was really successful */
@@ -316,7 +316,7 @@
 	struct sgsn_pdp_ctx *pctx = cbp;
 	int rc;
 
-	DEBUGP(DGPRS, "Received DELETE PDP CTX CONF, cause=%d(%s)\n",
+	LOGPDPCTXP(LOGL_INFO, pctx, "Received DELETE PDP CTX CONF, cause=%d(%s)\n",
 		cause, get_value_string(gtp_cause_strs, cause));
 
 	/* Deactivate the SNDCP layer */
@@ -338,7 +338,7 @@
 static int echo_conf(struct pdp_t *pdp, void *cbp, int recovery)
 {
 	if (recovery < 0) {
-		DEBUGP(DGPRS, "GTP Echo Request timed out\n");
+		LOGP(DGPRS, LOGL_NOTICE, "GTP Echo Request timed out\n");
 		/* FIXME: if version == 1, retry with version 0 */
 	} else {
 		DEBUGP(DGPRS, "GTP Rx Echo Response\n");
@@ -353,7 +353,7 @@
 	
 	ggsn = sgsn_ggsn_ctx_by_addr(&peer->sin_addr);
 	if (!ggsn) {
-		DEBUGP(DGPRS, "Received Recovery IE for unknown GGSN\n");
+		LOGP(DGPRS, LOGL_NOTICE, "Received Recovery IE for unknown GGSN\n");
 		return -EINVAL;
 	}