[PATCH] osmo-bts[master]: Introduce + use LOG/DEBUGP with frame number prefixing/printing

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

Harald Welte gerrit-no-reply at lists.osmocom.org
Thu Feb 22 11:32:39 UTC 2018


Hello Jenkins Builder,

I'd like you to reexamine a change.  Please visit

    https://gerrit.osmocom.org/6676

to look at the new patch set (#2).

Introduce + use LOG/DEBUGP with frame number prefixing/printing

Let's make sure whenever we do have a frame number, we print it as
context in the related log line

Change-Id: I751d5ddb3322fce489bc241459738cbcc55c890b
---
M include/osmo-bts/logging.h
M src/common/l1sap.c
M src/osmo-bts-litecell15/l1_if.c
M src/osmo-bts-litecell15/tch.c
M src/osmo-bts-octphy/l1_if.c
M src/osmo-bts-octphy/l1_tch.c
M src/osmo-bts-sysmo/l1_if.c
M src/osmo-bts-sysmo/tch.c
M src/osmo-bts-virtual/l1_if.c
9 files changed, 118 insertions(+), 125 deletions(-)


  git pull ssh://gerrit.osmocom.org:29418/osmo-bts refs/changes/76/6676/2

diff --git a/include/osmo-bts/logging.h b/include/osmo-bts/logging.h
index b1b44d5..68f379c 100644
--- a/include/osmo-bts/logging.h
+++ b/include/osmo-bts/logging.h
@@ -27,4 +27,16 @@
 
 int bts_log_init(const char *category_mask);
 
+/* LOGP with gsm_time prefix */
+#define LOGPGT(ss, lvl, gt, fmt, args...) \
+	LOGP(ss, lvl, "%s " fmt, osmo_dump_gsmtime(gt), ## args)
+#define DEBUGPGT(ss, gt, fmt, args...) \
+	LOGP(ss, LOGL_DEBUG, "%s " fmt, osmo_dump_gsmtime(gt), ## args)
+
+/* LOGP with frame number prefix */
+#define LOGPFN(ss, lvl, fn, fmt, args...) \
+	LOGP(ss, lvl, "%s " fmt, gsm_fn_as_gsmtime_str(fn), ## args)
+#define DEBUGPFN(ss, fn, fmt, args...) \
+	LOGP(ss, LOGL_DEBUG, "%s " fmt, gsm_fn_as_gsmtime_str(fn), ## args)
+
 #endif /* _LOGGING_H */
diff --git a/src/common/l1sap.c b/src/common/l1sap.c
index 1deee83..01b454c 100644
--- a/src/common/l1sap.c
+++ b/src/common/l1sap.c
@@ -451,13 +451,13 @@
 	struct gsm_bts_role_bts *btsb = bts->role;
 	int frames_expired;
 
-	DEBUGP(DL1P, "MPH_INFO time ind %u\n", info_time_ind->fn);
+	DEBUGPFN(DL1P, info_time_ind->fn, "Rx MPH_INFO time ind\n");
 
 	/* Calculate and check frame difference */
 	frames_expired = info_time_ind->fn - btsb->gsm_time.fn;
 	if (frames_expired > 1) {
 		if (btsb->gsm_time.fn)
-			LOGP(DL1P, LOGL_ERROR,
+			LOGPFN(DL1P, LOGL_ERROR, info_time_ind->fn,
 			     "Invalid condition detected: Frame difference is %"PRIu32"-%"PRIu32"=%d > 1!\n",
 			     info_time_ind->fn, btsb->gsm_time.fn, frames_expired);
 	}
@@ -506,12 +506,13 @@
 
 	lchan = get_active_lchan_by_chan_nr(trx, info_meas_ind->chan_nr);
 	if (!lchan) {
-		LOGP(DL1P, LOGL_ERROR, "No lchan for MPH INFO MEAS IND (chan_nr=%u)\n",
-		     info_meas_ind->chan_nr);
+		LOGPFN(DL1P, LOGL_ERROR, info_meas_ind->fn,
+			"No lchan for MPH INFO MEAS IND (chan_nr=%u)\n", info_meas_ind->chan_nr);
 		return 0;
 	}
 
-	DEBUGP(DL1P, "%s MPH_INFO meas ind, ta_offs_qbits=%d, ber10k=%d, inv_rssi=%u\n",
+	DEBUGPFN(DL1P, info_meas_ind->fn,
+		"%s MPH_INFO meas ind, ta_offs_qbits=%d, ber10k=%d, inv_rssi=%u\n",
 		gsm_lchan_name(lchan), info_meas_ind->ta_offs_qbits,
 		info_meas_ind->ber10k, info_meas_ind->inv_rssi);
 
@@ -546,9 +547,9 @@
 	switch (info->type) {
 	case PRIM_INFO_TIME:
 		if (trx != trx->bts->c0) {
-			LOGP(DL1P, LOGL_NOTICE, "BTS model is sending us "
-			     "PRIM_INFO_TIME for TRX %u, please fix it\n",
-			     trx->nr);
+			LOGPFN(DL1P, LOGL_NOTICE, info->u.time_ind.fn,
+				"BTS model is sending us PRIM_INFO_TIME for TRX %u, please fix it\n",
+				trx->nr);
 			rc = -1;
 		} else
 			rc = l1sap_info_time_ind(trx->bts, l1sap,
@@ -654,14 +655,14 @@
 	/* de-queue response message (loopback) */
 	loop_msg = msgb_dequeue(&lchan->dl_tch_queue);
 	if (!loop_msg) {
-		LOGP(DL1P, LOGL_NOTICE, "%s %s: no looped PDTCH message, sending empty\n",
-		     gsm_lchan_name(lchan), osmo_dump_gsmtime(tm));
+		LOGPGT(DL1P, LOGL_NOTICE, tm, "%s: no looped PDTCH message, sending empty\n",
+		     gsm_lchan_name(lchan));
 		/* empty downlink message */
 		p = msgb_put(msg, GSM_MACBLOCK_LEN);
 		memset(p, 0, GSM_MACBLOCK_LEN);
 	} else {
-		LOGP(DL1P, LOGL_NOTICE, "%s %s: looped PDTCH message of %u bytes\n",
-		     gsm_lchan_name(lchan), osmo_dump_gsmtime(tm), msgb_l2len(loop_msg));
+		LOGPGT(DL1P, LOGL_NOTICE, tm, "%s: looped PDTCH message of %u bytes\n",
+		     gsm_lchan_name(lchan), msgb_l2len(loop_msg));
 		/* copy over data from queued response message */
 		p = msgb_put(msg, msgb_l2len(loop_msg));
 		memcpy(p, msgb_l2(loop_msg), msgb_l2len(loop_msg));
@@ -693,13 +694,11 @@
 
 	gsm_fn2gsmtime(&g_time, fn);
 
-	DEBUGP(DL1P, "Rx PH-RTS.ind %s chan_nr=0x%02x link_id=0x%02xd\n",
-		osmo_dump_gsmtime(&g_time), chan_nr, link_id);
+	DEBUGPGT(DL1P, &g_time, "Rx PH-RTS.ind chan_nr=0x%02x link_id=0x%02xd\n", chan_nr, link_id);
 
 	/* reuse PH-RTS.ind for PH-DATA.req */
 	if (!msg) {
-		LOGP(DL1P, LOGL_FATAL, "RTS without msg to be reused. Please "
-			"fix!\n");
+		LOGPGT(DL1P, LOGL_FATAL, &g_time, "RTS without msg to be reused. Please fix!\n");
 		abort();
 	}
 	msgb_trim(msg, sizeof(*l1sap));
@@ -736,7 +735,7 @@
 	} else if (!(chan_nr & 0x80)) { /* only TCH/F, TCH/H, SDCCH/4 and SDCCH/8 have C5 bit cleared */
 		lchan = get_active_lchan_by_chan_nr(trx, chan_nr);
 		if (!lchan) {
-			LOGP(DL1P, LOGL_ERROR, "No lchan for PH-RTS.ind (chan_nr=%u)\n", chan_nr);
+			LOGPGT(DL1P, LOGL_ERROR, &g_time, "No lchan for PH-RTS.ind (chan_nr=%u)\n", chan_nr);
 			return 0;
 		}
 		if (L1SAP_IS_LINK_SACCH(link_id)) {
@@ -789,8 +788,7 @@
 			memcpy(p, fill_frame, GSM_MACBLOCK_LEN);
 	}
 
-	DEBUGP(DL1P, "Tx PH-DATA.req %s chan_nr=0x%02x link_id=0x%02x\n",
-		osmo_dump_gsmtime(&g_time), chan_nr, link_id);
+	DEBUGPGT(DL1P, &g_time, "Tx PH-DATA.req chan_nr=0x%02x link_id=0x%02x\n", chan_nr, link_id);
 
 	l1sap_down(trx, l1sap);
 
@@ -877,11 +875,11 @@
 
 	gsm_fn2gsmtime(&g_time, fn);
 
-	DEBUGP(DL1P, "Rx TCH-RTS.ind %s chan_nr=0x%02x\n", osmo_dump_gsmtime(&g_time), chan_nr);
+	DEBUGPGT(DL1P, &g_time, "Rx TCH-RTS.ind chan_nr=0x%02x\n", chan_nr);
 
 	lchan = get_active_lchan_by_chan_nr(trx, chan_nr);
 	if (!lchan) {
-		LOGP(DL1P, LOGL_ERROR, "No lchan for PH-RTS.ind (chan_nr=%u)\n", chan_nr);
+		LOGPGT(DL1P, LOGL_ERROR, &g_time, "No lchan for PH-RTS.ind (chan_nr=%u)\n", chan_nr);
 		return 0;
 	}
 
@@ -898,8 +896,7 @@
 	/* get a msgb from the dl_tx_queue */
 	resp_msg = msgb_dequeue(&lchan->dl_tch_queue);
 	if (!resp_msg) {
-		LOGP(DL1P, LOGL_DEBUG, "%s DL TCH Tx queue underrun\n",
-			gsm_lchan_name(lchan));
+		DEBUGPGT(DL1P, &g_time, "%s DL TCH Tx queue underrun\n", gsm_lchan_name(lchan));
 		resp_l1sap = &empty_l1sap;
 	} else if(!rtppayload_is_valid(lchan, resp_msg)) {
 		msgb_free(resp_msg);
@@ -917,7 +914,7 @@
 
 	/* check for pending REL_IND */
 	if (lchan->pending_rel_ind_msg) {
-		LOGP(DRSL, LOGL_INFO, "%s Forward REL_IND to L3\n", gsm_lchan_name(lchan));
+		LOGPGT(DRSL, LOGL_INFO, &g_time, "%s Forward REL_IND to L3\n", gsm_lchan_name(lchan));
 		/* Forward it to L3 */
 		rc = abis_bts_rsl_sendmsg(lchan->pending_rel_ind_msg);
 		lchan->pending_rel_ind_msg = NULL;
@@ -932,7 +929,7 @@
 	resp_l1sap->u.tch.fn = fn;
 	resp_l1sap->u.tch.marker = marker;
 
-	DEBUGP(DL1P, "Tx TCH.req %s chan_nr=0x%02x\n", osmo_dump_gsmtime(&g_time), chan_nr);
+	DEBUGPGT(DL1P, &g_time, "Tx TCH.req chan_nr=0x%02x\n", chan_nr);
 
 	l1sap_down(trx, resp_l1sap);
 
@@ -1034,13 +1031,13 @@
 
 	gsm_fn2gsmtime(&g_time, fn);
 
-	DEBUGP(DL1P, "Rx PH-DATA.ind %s chan_nr=0x%02x link_id=0x%02x len=%d\n",
-		osmo_dump_gsmtime(&g_time), chan_nr, link_id, len);
+	DEBUGPGT(DL1P, &g_time, "Rx PH-DATA.ind chan_nr=0x%02x link_id=0x%02x len=%d\n",
+		 chan_nr, link_id, len);
 
 	if (ts_is_pdch(&trx->ts[tn])) {
 		lchan = get_lchan_by_chan_nr(trx, chan_nr);
 		if (!lchan)
-			LOGP(DL1P, LOGL_ERROR, "No lchan for chan_nr=0x%02x\n", chan_nr);
+			LOGPGT(DL1P, LOGL_ERROR, &g_time, "No lchan for chan_nr=0x%02x\n", chan_nr);
 		if (lchan && lchan->loopback && !L1SAP_IS_PTCCH(fn)) {
 			/* we are in loopback mode (for BER testing)
 			 * mode and need to enqeue the frame to be
@@ -1076,7 +1073,7 @@
 
 	lchan = get_active_lchan_by_chan_nr(trx, chan_nr);
 	if (!lchan) {
-		LOGP(DL1P, LOGL_ERROR, "No lchan for chan_nr=%d\n", chan_nr);
+		LOGPGT(DL1P, LOGL_ERROR, &g_time, "No lchan for chan_nr=%d\n", chan_nr);
 		return 0;
 	}
 
@@ -1096,8 +1093,7 @@
 		le = &lchan->lapdm_ch.lapdm_acch;
 		/* save the SACCH L1 header in the lchan struct for RSL MEAS RES */
 		if (len < 2) {
-			LOGP(DL1P, LOGL_NOTICE, "SACCH with size %u<2 !?!\n",
-				len);
+			LOGPGT(DL1P, LOGL_NOTICE, &g_time, "SACCH with size %u<2 !?!\n", len);
 			return -EINVAL;
 		}
 		/* Some brilliant engineer decided that the ordering of
@@ -1141,11 +1137,11 @@
 
 	gsm_fn2gsmtime(&g_time, fn);
 
-	LOGP(DL1P, LOGL_INFO, "Rx TCH.ind %s chan_nr=0x%02x\n", osmo_dump_gsmtime(&g_time), chan_nr);
+	LOGPGT(DL1P, LOGL_INFO, &g_time, "Rx TCH.ind chan_nr=0x%02x\n", chan_nr);
 
 	lchan = get_active_lchan_by_chan_nr(trx, chan_nr);
 	if (!lchan) {
-		LOGP(DL1P, LOGL_ERROR, "No lchan for TCH.ind (chan_nr=%u)\n", chan_nr);
+		LOGPGT(DL1P, LOGL_ERROR, &g_time, "No lchan for TCH.ind (chan_nr=%u)\n", chan_nr);
 		return 0;
 	}
 
@@ -1172,7 +1168,8 @@
 		/* Only clear the marker bit once we have sent a RTP packet with it */
 		lchan->rtp_tx_marker = false;
 	} else {
-		DEBUGP(DRTP, "Skipping RTP frame with lost payload\n");
+		DEBUGPGT(DRTP, &g_time, "Skipping RTP frame with lost payload (chan_nr=0x%02x)\n",
+			 chan_nr);
 		if (lchan->abis_ip.rtp_socket)
 			osmo_rtp_skipped_frame(lchan->abis_ip.rtp_socket, fn_ms_adj(fn, lchan));
 		lchan->rtp_tx_marker = true;
@@ -1191,13 +1188,13 @@
 	struct lapdm_channel *lc;
 	uint8_t acc_delay;
 
-	DEBUGP(DL1P, "Rx PH-RA.ind");
+	DEBUGPFN(DL1P, rach_ind->fn, "Rx PH-RA.ind");
 
 	lc = &trx->ts[0].lchan[CCCH_LCHAN].lapdm_ch;
 
 	/* check for under/overflow / sign */
 	if (!check_acc_delay(rach_ind, btsb, &acc_delay)) {
-		LOGP(DL1C, LOGL_INFO, "ignoring RACH request %u > max_ta(%u)\n",
+		LOGPFN(DL1C, LOGL_INFO, rach_ind->fn, "ignoring RACH request %u > max_ta(%u)\n",
 		     acc_delay, btsb->max_ta);
 		return 0;
 	}
@@ -1213,7 +1210,7 @@
 	if ((trx == bts->c0 && L1SAP_IS_PACKET_RACH(rach_ind->ra)) ||
 		(trx == bts->c0 && rach_ind->is_11bit)) {
 
-		LOGP(DL1P, LOGL_INFO, "RACH for packet access (toa=%d, ra=%d)\n",
+		LOGPFN(DL1P, LOGL_INFO, rach_ind->fn, "RACH for packet access (toa=%d, ra=%d)\n",
 			rach_ind->acc_delay, rach_ind->ra);
 
 		pcu_tx_rach_ind(bts, rach_ind->acc_delay << 2,
@@ -1222,7 +1219,7 @@
 		return 0;
 	}
 
-	LOGP(DL1P, LOGL_INFO, "RACH for RR access (toa=%d, ra=%d)\n",
+	LOGPFN(DL1P, LOGL_INFO, rach_ind->fn, "RACH for RR access (toa=%d, ra=%d)\n",
 		rach_ind->acc_delay, rach_ind->ra);
 	lapdm_phsap_up(&l1sap->oph, &lc->lapdm_dcch);
 
diff --git a/src/osmo-bts-litecell15/l1_if.c b/src/osmo-bts-litecell15/l1_if.c
index 12c2470..35d31f4 100644
--- a/src/osmo-bts-litecell15/l1_if.c
+++ b/src/osmo-bts-litecell15/l1_if.c
@@ -343,8 +343,7 @@
 	int len;
 
 	if (!msg) {
-		LOGP(DL1C, LOGL_FATAL, "PH-DATA.req without msg. "
-			"Please fix!\n");
+		LOGPFN(DL1C, LOGL_FATAL, l1sap->u.data.fn, "PH-DATA.req without msg. Please fix!\n");
 		abort();
 	}
 
@@ -394,7 +393,7 @@
 		else
 			sapi = GsmL1_Sapi_Agch;
 	} else {
-		LOGP(DL1C, LOGL_NOTICE, "unknown prim %d op %d "
+		LOGPFN(DL1C, LOGL_NOTICE, u32Fn, "unknown prim %d op %d "
 			"chan_nr %d link_id %d\n", l1sap->oph.primitive,
 			l1sap->oph.operation, chan_nr, link_id);
 		msgb_free(l1msg);
@@ -457,7 +456,7 @@
 			memcpy(l1p->u.phDataReq.msgUnitParam.u8Buffer, msg->l2h,
 			       msgb_l2len(msg));
 		}
-		LOGP(DL1P, LOGL_DEBUG, "PH-DATA.req(%s)\n",
+		LOGPFN(DL1P, LOGL_DEBUG, u32Fn, "PH-DATA.req(%s)\n",
 		     osmo_hexdump(l1p->u.phDataReq.msgUnitParam.u8Buffer,
 					  l1p->u.phDataReq.msgUnitParam.u8Size));
 	} else {
@@ -469,7 +468,7 @@
 
 	/* send message to DSP's queue */
 	if (osmo_wqueue_enqueue(&fl1->write_q[MQ_L1_WRITE], l1msg) != 0) {
-		LOGP(DL1P, LOGL_ERROR, "MQ_L1_WRITE queue full. Dropping msg.\n");
+		LOGPFN(DL1P, LOGL_ERROR, u32Fn, "MQ_L1_WRITE queue full. Dropping msg.\n");
 		msgb_free(l1msg);
 	} else
 		dtx_int_signal(lchan);
@@ -838,8 +837,7 @@
 
 	gsm_fn2gsmtime(&g_time, rts_ind->u32Fn);
 
-	DEBUGP(DL1P, "Rx PH-RTS.ind %02u/%02u/%02u SAPI=%s\n",
-		g_time.t1, g_time.t2, g_time.t3,
+	DEBUGPGT(DL1P, &g_time, "Rx PH-RTS.ind SAPI=%s\n",
 		get_value_string(lc15bts_l1sapi_names, rts_ind->sapi));
 
 	/* in all other cases, we need to allocate a new PH-DATA.ind
@@ -877,7 +875,7 @@
 
 	/* transmit */
 	if (osmo_wqueue_enqueue(&fl1->write_q[MQ_L1_WRITE], resp_msg) != 0) {
-		LOGP(DL1C, LOGL_ERROR, "MQ_L1_WRITE queue full. Dropping msg.\n");
+		LOGPGT(DL1C, LOGL_ERROR, &g_time, "MQ_L1_WRITE queue full. Dropping msg.\n");
 		msgb_free(resp_msg);
 	}
 
@@ -933,24 +931,23 @@
 
 	chan_nr = chan_nr_by_sapi(&trx->ts[data_ind->u8Tn], data_ind->sapi,
 		data_ind->subCh, data_ind->u8Tn, data_ind->u32Fn);
+	fn = data_ind->u32Fn;
+	link_id =  (data_ind->sapi == GsmL1_Sapi_Sacch) ? LID_SACCH : LID_DEDIC;
+	gsm_fn2gsmtime(&g_time, fn);
+
 	if (!chan_nr) {
-		LOGP(DL1C, LOGL_ERROR, "PH-DATA-INDICATION for unknown sapi %s (%d)\n",
+		LOGPGT(DL1C, LOGL_ERROR, &g_time, "PH-DATA-INDICATION for unknown sapi %s (%d)\n",
 		     get_value_string(lc15bts_l1sapi_names, data_ind->sapi), data_ind->sapi);
 		msgb_free(l1p_msg);
 		return ENOTSUP;
 	}
-	fn = data_ind->u32Fn;
-	link_id =  (data_ind->sapi == GsmL1_Sapi_Sacch) ? LID_SACCH : LID_DEDIC;
 
 	process_meas_res(trx, chan_nr, &data_ind->measParam, fn);
 
-	gsm_fn2gsmtime(&g_time, fn);
 
-	DEBUGP(DL1P, "Rx PH-DATA.ind %s %s (hL2 %08x): %s\n",
-		get_value_string(lc15bts_l1sapi_names, data_ind->sapi),
-		osmo_dump_gsmtime(&g_time), (uint32_t)data_ind->hLayer2,
-		osmo_hexdump(data_ind->msgUnitParam.u8Buffer,
-			     data_ind->msgUnitParam.u8Size));
+	DEBUGPGT(DL1P, &g_time, "Rx PH-DATA.ind %s (hL2 %08x): %s\n",
+		get_value_string(lc15bts_l1sapi_names, data_ind->sapi), (uint32_t)data_ind->hLayer2,
+		osmo_hexdump(data_ind->msgUnitParam.u8Buffer, data_ind->msgUnitParam.u8Size));
 	dump_meas_res(LOGL_DEBUG, &data_ind->measParam);
 
 	/* check for TCH */
@@ -1028,12 +1025,10 @@
 
 	if ((ra_ind->msgUnitParam.u8Size != 1) &&
 		(ra_ind->msgUnitParam.u8Size != 2)) {
-		LOGP(DL1C, LOGL_ERROR, "PH-RACH-INDICATION has %d bits\n",
-			ra_ind->sapi);
+		LOGPFN(DL1P, LOGL_ERROR, ra_ind->u32Fn, "PH-RACH-INDICATION has %d bits\n", ra_ind->sapi);
 		msgb_free(l1p_msg);
 		return 0;
 	}
-
 
 	if (ra_ind->msgUnitParam.u8Size == 2) {
 		is_11bit = 1;
diff --git a/src/osmo-bts-litecell15/tch.c b/src/osmo-bts-litecell15/tch.c
index c61712f..0becfc4 100644
--- a/src/osmo-bts-litecell15/tch.c
+++ b/src/osmo-bts-litecell15/tch.c
@@ -369,7 +369,7 @@
 		return -EAGAIN;
 
 	if (data_ind->msgUnitParam.u8Size < 1) {
-		LOGP(DL1P, LOGL_DEBUG, "chan_nr %d Rx Payload size 0\n", chan_nr);
+		LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "chan_nr %d Rx Payload size 0\n", chan_nr);
 		/* Push empty payload to upper layers */
 		rmsg = msgb_alloc_headroom(256, 128, "L1P-to-RTP");
 		return add_l1sap_header(trx, rmsg, lchan, chan_nr, data_ind->u32Fn,
@@ -408,31 +408,31 @@
 	case GsmL1_TchPlType_Amr_SidFirstP1:
 		if (lchan->type != GSM_LCHAN_TCH_H)
 			goto err_payload_match;
-		LOGP(DL1P, LOGL_DEBUG, "DTX: received SID_FIRST_P1 from L1 "
+		LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "DTX: received SID_FIRST_P1 from L1 "
 		     "(%d bytes)\n", payload_len);
 		break;
 	case GsmL1_TchPlType_Amr_SidFirstP2:
 		if (lchan->type != GSM_LCHAN_TCH_H)
 			goto err_payload_match;
-		LOGP(DL1P, LOGL_DEBUG, "DTX: received SID_FIRST_P2 from L1 "
+		LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "DTX: received SID_FIRST_P2 from L1 "
 		     "(%d bytes)\n", payload_len);
 		break;
 	case GsmL1_TchPlType_Amr_SidFirstInH:
 		if (lchan->type != GSM_LCHAN_TCH_H)
 			goto err_payload_match;
 		lchan->rtp_tx_marker = true;
-		LOGP(DL1P, LOGL_DEBUG, "DTX: received SID_FIRST_INH from L1 "
+		LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "DTX: received SID_FIRST_INH from L1 "
 		     "(%d bytes)\n", payload_len);
 		break;
 	case GsmL1_TchPlType_Amr_SidUpdateInH:
 		if (lchan->type != GSM_LCHAN_TCH_H)
 			goto err_payload_match;
 		lchan->rtp_tx_marker = true;
-		LOGP(DL1P, LOGL_DEBUG, "DTX: received SID_UPDATE_INH from L1 "
+		LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "DTX: received SID_UPDATE_INH from L1 "
 		     "(%d bytes)\n", payload_len);
 		break;
 	default:
-		LOGP(DL1P, LOGL_NOTICE, "%s Rx Payload Type %s is unsupported\n",
+		LOGPFN(DL1P, LOGL_NOTICE, data_ind->u32Fn, "%s Rx Payload Type %s is unsupported\n",
 			gsm_lchan_name(lchan),
 			get_value_string(lc15bts_tch_pl_names, payload_type));
 		break;
@@ -469,9 +469,8 @@
 	return 0;
 
 err_payload_match:
-	LOGP(DL1P, LOGL_ERROR, "%s Rx Payload Type %s incompatible with lchan\n",
-		gsm_lchan_name(lchan),
-		get_value_string(lc15bts_tch_pl_names, payload_type));
+	LOGPFN(DL1P, LOGL_ERROR, data_ind->u32Fn, "%s Rx Payload Type %s incompatible with lchan\n",
+		gsm_lchan_name(lchan), get_value_string(lc15bts_tch_pl_names, payload_type));
 	return -EINVAL;
 }
 
diff --git a/src/osmo-bts-octphy/l1_if.c b/src/osmo-bts-octphy/l1_if.c
index 8dc3e8f..cb0ea05 100644
--- a/src/osmo-bts-octphy/l1_if.c
+++ b/src/osmo-bts-octphy/l1_if.c
@@ -478,7 +478,7 @@
 	int rc;
 
 	if (!msg) {
-		LOGP(DL1C, LOGL_FATAL, "L1SAP PH-DATA.req without msg. "
+		LOGPFN(DL1C, LOGL_FATAL, l1sap->u.data.fn, "L1SAP PH-DATA.req without msg. "
 		     "Please fix!\n");
 		abort();
 	}
@@ -518,10 +518,8 @@
 	} else if (L1SAP_IS_CHAN_AGCH_PCH(chan_nr)) {
 		sapi = cOCTVC1_GSM_SAPI_ENUM_PCH_AGCH;
 	} else {
-		LOGP(DL1C, LOGL_NOTICE, "unknown prim %d op %d "
-		     "chan_nr %d link_id %d\n",
-		     l1sap->oph.primitive, l1sap->oph.operation,
-		     chan_nr, link_id);
+		LOGPFN(DL1C, LOGL_NOTICE, u32Fn, "unknown prim %d op %d chan_nr %d link_id %d\n",
+		     l1sap->oph.primitive, l1sap->oph.operation, chan_nr, link_id);
 		rc = -EINVAL;
 		goto done;
 	}
@@ -531,7 +529,7 @@
 
 		l1msg = l1p_msgb_alloc();
 		if (!l1msg) {
-			LOGP(DL1C, LOGL_FATAL, "L1SAP PH-DATA.req msg alloc failed\n");
+			LOGPFN(DL1C, LOGL_FATAL, u32Fn, "L1SAP PH-DATA.req msg alloc failed\n");
 			rc = -ENOMEM;
 			goto done;
 		}
@@ -593,7 +591,7 @@
 	if (msg) {
 		nmsg = l1p_msgb_alloc();
 		if (!nmsg) {
-			LOGP(DL1C, LOGL_FATAL, "L1SAP PH-TCH.req msg alloc failed\n");
+			LOGPFN(DL1C, LOGL_FATAL, u32Fn, "L1SAP PH-TCH.req msg alloc failed\n");
 			return -ENOMEM;
 		}
 
@@ -950,8 +948,7 @@
 
 	gsm_fn2gsmtime(&g_time, fn);
 
-	DEBUGP(DL1P, "Rx PH-RTS.ind %02u/%02u/%02u SAPI=%s\n",
-	       g_time.t1, g_time.t2, g_time.t3,
+	DEBUGPGT(DL1P, &g_time, "Rx PH-RTS.ind SAPI=%s\n",
 	       get_value_string(octphy_l1sapi_names, sapi));
 
 	/* in case we need to forward primitive to common part */
@@ -1032,14 +1029,14 @@
 		/* send empty frame request */
 		rc = Logical_Channel_Empty_Frame_Cmd(empty_frame_req);
 		if (cOCTVC1_RC_OK != rc) {
-			LOGP(DL1P, LOGL_ERROR,
+			LOGPGT(DL1P, LOGL_ERROR, &g_time,
 			     "Sending Empty Frame Request Failed! (%s)\n",
 			     octvc1_rc2string(rc));
 		}
 		break;
 #endif
 	default:
-		LOGP(DL1P, LOGL_ERROR, "SAPI %s not handled via L1SAP!\n",
+		LOGPGT(DL1P, LOGL_ERROR, &g_time, "SAPI %s not handled via L1SAP!\n",
 			get_value_string(octphy_l1sapi_names, sapi));
 #if 0
 		data_req->Data.ulDataLength = GSM_MACBLOCK_LEN;
@@ -1078,8 +1075,7 @@
 	/* chan_nr and link_id */
 	chan_nr = chan_nr_by_sapi(&trx->ts[ts_num], sapi, sc, ts_num, fn);
 	if (!chan_nr) {
-		LOGP(DL1C, LOGL_ERROR,
-		     "Rx PH-DATA.ind for unknown L1 SAPI %s\n",
+		LOGPFN(DL1C, LOGL_ERROR, fn, "Rx PH-DATA.ind for unknown L1 SAPI %s\n",
 		     get_value_string(octphy_l1sapi_names, sapi));
 		return ENOTSUP;
 	}
@@ -1095,11 +1091,10 @@
 	process_meas_res(trx, chan_nr, fn, data_ind->Data.ulDataLength,
 			 &data_ind->MeasurementInfo);
 
-	DEBUGP(DL1C, "Rx PH-DATA.ind %s: %s data_len:%d \n",
-	       get_value_string(octphy_l1sapi_names, sapi),
-	       osmo_hexdump(data_ind->Data.abyDataContent,
-			    data_ind->Data.ulDataLength),
-	       data_ind->Data.ulDataLength);
+	DEBUGPFN(DL1C, fn, "Rx PH-DATA.ind %s: %s data_len:%d \n",
+		 get_value_string(octphy_l1sapi_names, sapi),
+		 osmo_hexdump(data_ind->Data.abyDataContent, data_ind->Data.ulDataLength),
+		 data_ind->Data.ulDataLength);
 
 	/* check for TCH */
 	if (sapi == cOCTVC1_GSM_SAPI_ENUM_TCHF ||
@@ -1187,15 +1182,15 @@
 
 	dump_meas_res(LOGL_DEBUG, &ra_ind->MeasurementInfo);
 
+	fn = ra_ind->ulFrameNumber;
+	ra = ra_ind->abyMsg[0];
+
 	if (ra_ind->ulMsgLength != 1) {
-		LOGP(DL1C, LOGL_ERROR, "Rx PH-RACH.ind has lenghth %d > 1\n",
-		     ra_ind->ulMsgLength);
+		LOGPFN(DL1C, LOGL_ERROR, fn, "Rx PH-RACH.ind has lenghth %d > 1\n", ra_ind->ulMsgLength);
 		msgb_free(l1p_msg);
 		return 0;
 	}
 
-	fn = ra_ind->ulFrameNumber;
-	ra = ra_ind->abyMsg[0];
 	/* check for under/overflow / sign */
 	if (ra_ind->MeasurementInfo.sBurstTiming < 0)
 		acc_delay = 0;
diff --git a/src/osmo-bts-octphy/l1_tch.c b/src/osmo-bts-octphy/l1_tch.c
index 38fb9fb..eee24aa 100644
--- a/src/osmo-bts-octphy/l1_tch.c
+++ b/src/osmo-bts-octphy/l1_tch.c
@@ -188,6 +188,7 @@
 	uint32_t payload_type = data_ind->Data.ulPayloadType;
 	uint8_t *payload = data_ind->Data.abyDataContent;
 
+	uint32_t fn = data_ind->Data.ulFrameNumber;
 	uint16_t b_total = data_ind->MeasurementInfo.usBERTotalBitCnt;
 	uint16_t b_error = data_ind->MeasurementInfo.usBERCnt;
 	uint16_t ber10k = b_total ? BER_10K * b_error / b_total : 0;
@@ -199,7 +200,7 @@
 	    &trx->ts[L1SAP_CHAN2TS(chan_nr)].lchan[l1sap_chan2ss(chan_nr)];
 
 	if (data_ind->Data.ulDataLength < 1) {
-		LOGP(DL1P, LOGL_DEBUG, "chan_nr %d Rx Payload size 0\n", chan_nr);
+		LOGPFN(DL1P, LOGL_DEBUG, fn, "chan_nr %d Rx Payload size 0\n", chan_nr);
 		/* Push empty payload to upper layers */
 		rmsg = msgb_alloc_headroom(256, 128, "L1P-to-RTP");
 		return add_l1sap_header(trx, rmsg, lchan, chan_nr,
@@ -226,15 +227,13 @@
 			goto err_payload_match;
 		break;
 	default:
-		LOGP(DL1P, LOGL_NOTICE,
-		     "%s Rx Payload Type %d is unsupported\n",
+		LOGPFN(DL1P, LOGL_NOTICE, fn, "%s Rx Payload Type %d is unsupported\n",
 		     gsm_lchan_name(lchan), payload_type);
 		break;
 	}
 
-	LOGP(DL1P, LOGL_DEBUG, "%s Rx codec frame (%u): %s\n",
-	     gsm_lchan_name(lchan), payload_len, osmo_hexdump(payload,
-							      payload_len));
+	LOGPFN(DL1P, LOGL_DEBUG, fn, "%s Rx codec frame (%u): %s\n", gsm_lchan_name(lchan),
+		payload_len, osmo_hexdump(payload, payload_len));
 
 	switch (payload_type) {
 	case cOCTVC1_GSM_PAYLOAD_TYPE_ENUM_FULL_RATE:
@@ -256,7 +255,7 @@
 		rmsg = l1_to_rtppayload_amr(payload, payload_len,
 				&lchan->tch.amr_mr);
 #else
-		LOGP(DL1P, LOGL_ERROR, "OctPHY only supports FR!\n");
+		LOGPFN(DL1P, LOGL_ERROR, fn, "OctPHY only supports FR!\n");
 		return -1;
 #endif
 		break;
@@ -270,8 +269,7 @@
 	return 0;
 
 err_payload_match:
-	LOGP(DL1P, LOGL_ERROR,
-	     "%s Rx Payload Type %d incompatible with lchan\n",
+	LOGPFN(DL1P, LOGL_ERROR, fn, "%s Rx Payload Type %d incompatible with lchan\n",
 	     gsm_lchan_name(lchan), payload_type);
 	return -EINVAL;
 }
diff --git a/src/osmo-bts-sysmo/l1_if.c b/src/osmo-bts-sysmo/l1_if.c
index 44ba3de..cc1337b 100644
--- a/src/osmo-bts-sysmo/l1_if.c
+++ b/src/osmo-bts-sysmo/l1_if.c
@@ -390,7 +390,7 @@
 		else
 			sapi = GsmL1_Sapi_Agch;
 	} else {
-		LOGP(DL1C, LOGL_NOTICE, "unknown prim %d op %d "
+		LOGPFN(DL1C, LOGL_NOTICE, u32Fn, "unknown prim %d op %d "
 			"chan_nr %d link_id %d\n", l1sap->oph.primitive,
 			l1sap->oph.operation, chan_nr, link_id);
 		msgb_free(l1msg);
@@ -453,7 +453,7 @@
 			memcpy(l1p->u.phDataReq.msgUnitParam.u8Buffer, msg->l2h,
 			       msgb_l2len(msg));
 		}
-		LOGP(DL1P, LOGL_DEBUG, "PH-DATA.req(%s)\n",
+		LOGPFN(DL1P, LOGL_DEBUG, u32Fn, "PH-DATA.req(%s)\n",
 		     osmo_hexdump(l1p->u.phDataReq.msgUnitParam.u8Buffer,
 					  l1p->u.phDataReq.msgUnitParam.u8Size));
 	} else {
@@ -465,7 +465,7 @@
 
 	/* send message to DSP's queue */
 	if (osmo_wqueue_enqueue(&fl1->write_q[MQ_L1_WRITE], l1msg) != 0) {
-		LOGP(DL1P, LOGL_ERROR, "MQ_L1_WRITE queue full. Dropping msg.\n");
+		LOGPFN(DL1P, LOGL_ERROR, u32Fn, "MQ_L1_WRITE queue full. Dropping msg.\n");
 		msgb_free(l1msg);
 	} else
 		dtx_int_signal(lchan);
@@ -834,8 +834,7 @@
 
 	gsm_fn2gsmtime(&g_time, rts_ind->u32Fn);
 
-	DEBUGP(DL1P, "Rx PH-RTS.ind %02u/%02u/%02u SAPI=%s\n",
-		g_time.t1, g_time.t2, g_time.t3,
+	DEBUGPGT(DL1P, &g_time, "Rx PH-RTS.ind SAPI=%s\n",
 		get_value_string(femtobts_l1sapi_names, rts_ind->sapi));
 
 	/* in all other cases, we need to allocate a new PH-DATA.ind
@@ -873,7 +872,7 @@
 
 	/* transmit */
 	if (osmo_wqueue_enqueue(&fl1->write_q[MQ_L1_WRITE], resp_msg) != 0) {
-		LOGP(DL1C, LOGL_ERROR, "MQ_L1_WRITE queue full. Dropping msg.\n");
+		LOGPGT(DL1C, LOGL_ERROR, &g_time, "MQ_L1_WRITE queue full. Dropping msg.\n");
 		msgb_free(resp_msg);
 	}
 
@@ -929,7 +928,7 @@
 	chan_nr = chan_nr_by_sapi(&trx->ts[data_ind->u8Tn], data_ind->sapi,
 		data_ind->subCh, data_ind->u8Tn, data_ind->u32Fn);
 	if (!chan_nr) {
-		LOGP(DL1C, LOGL_ERROR, "PH-DATA-INDICATION for unknown sapi %s (%d)\n",
+		LOGPFN(DL1C, LOGL_ERROR, data_ind->u32Fn, "PH-DATA-INDICATION for unknown sapi %s (%d)\n",
 		     get_value_string(femtobts_l1sapi_names, data_ind->sapi), data_ind->sapi);
 		msgb_free(l1p_msg);
 		return ENOTSUP;
@@ -941,11 +940,9 @@
 
 	gsm_fn2gsmtime(&g_time, fn);
 
-	DEBUGP(DL1P, "Rx PH-DATA.ind %s %s (hL2 %08x): %s\n",
-		get_value_string(femtobts_l1sapi_names, data_ind->sapi),
-		osmo_dump_gsmtime(&g_time), data_ind->hLayer2,
-		osmo_hexdump(data_ind->msgUnitParam.u8Buffer,
-			     data_ind->msgUnitParam.u8Size));
+	DEBUGPGT(DL1P, &g_time, "Rx PH-DATA.ind %s (hL2 %08x): %s\n",
+		get_value_string(femtobts_l1sapi_names, data_ind->sapi), data_ind->hLayer2,
+		osmo_hexdump(data_ind->msgUnitParam.u8Buffer, data_ind->msgUnitParam.u8Size));
 	dump_meas_res(LOGL_DEBUG, &data_ind->measParam);
 
 	/* check for TCH */
@@ -1018,7 +1015,7 @@
 
 	if ((ra_ind->msgUnitParam.u8Size != 1) &&
 		(ra_ind->msgUnitParam.u8Size != 2)) {
-		LOGP(DL1C, LOGL_ERROR, "PH-RACH-INDICATION has %d bits\n",
+		LOGPFN(DL1C, LOGL_ERROR, ra_ind->u32Fn, "PH-RACH-INDICATION has %d bits\n",
 			ra_ind->sapi);
 		msgb_free(l1p_msg);
 		return 0;
diff --git a/src/osmo-bts-sysmo/tch.c b/src/osmo-bts-sysmo/tch.c
index b65628f..4e6e246 100644
--- a/src/osmo-bts-sysmo/tch.c
+++ b/src/osmo-bts-sysmo/tch.c
@@ -514,7 +514,7 @@
 		return -EAGAIN;
 
 	if (data_ind->msgUnitParam.u8Size < 1) {
-		LOGP(DL1P, LOGL_DEBUG, "chan_nr %d Rx Payload size 0\n", chan_nr);
+		LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "chan_nr %d Rx Payload size 0\n", chan_nr);
 		/* Push empty payload to upper layers */
 		rmsg = msgb_alloc_headroom(256, 128, "L1P-to-RTP");
 		return add_l1sap_header(trx, rmsg, lchan, chan_nr, data_ind->u32Fn,
@@ -555,31 +555,31 @@
 	case GsmL1_TchPlType_Amr_SidFirstP1:
 		if (lchan->type != GSM_LCHAN_TCH_H)
 			goto err_payload_match;
-		LOGP(DL1P, LOGL_DEBUG, "DTX: received SID_FIRST_P1 from L1 "
+		LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "DTX: received SID_FIRST_P1 from L1 "
 		     "(%d bytes)\n", payload_len);
 		break;
 	case GsmL1_TchPlType_Amr_SidFirstP2:
 		if (lchan->type != GSM_LCHAN_TCH_H)
 			goto err_payload_match;
-		LOGP(DL1P, LOGL_DEBUG, "DTX: received SID_FIRST_P2 from L1 "
+		LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "DTX: received SID_FIRST_P2 from L1 "
 		     "(%d bytes)\n", payload_len);
 		break;
 	case GsmL1_TchPlType_Amr_SidFirstInH:
 		if (lchan->type != GSM_LCHAN_TCH_H)
 			goto err_payload_match;
 		lchan->rtp_tx_marker = true;
-		LOGP(DL1P, LOGL_DEBUG, "DTX: received SID_FIRST_INH from L1 "
+		LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "DTX: received SID_FIRST_INH from L1 "
 		     "(%d bytes)\n", payload_len);
 		break;
 	case GsmL1_TchPlType_Amr_SidUpdateInH:
 		if (lchan->type != GSM_LCHAN_TCH_H)
 			goto err_payload_match;
 		lchan->rtp_tx_marker = true;
-		LOGP(DL1P, LOGL_DEBUG, "DTX: received SID_UPDATE_INH from L1 "
+		LOGPFN(DL1P, LOGL_DEBUG, data_ind->u32Fn, "DTX: received SID_UPDATE_INH from L1 "
 		     "(%d bytes)\n", payload_len);
 		break;
 	default:
-		LOGP(DL1P, LOGL_NOTICE, "%s Rx Payload Type %s is unsupported\n",
+		LOGPFN(DL1P, LOGL_NOTICE, data_ind->u32Fn, "%s Rx Payload Type %s is unsupported\n",
 			gsm_lchan_name(lchan),
 			get_value_string(femtobts_tch_pl_names, payload_type));
 		break;
@@ -619,7 +619,7 @@
 	return 0;
 
 err_payload_match:
-	LOGP(DL1P, LOGL_ERROR, "%s Rx Payload Type %s incompatible with lchan\n",
+	LOGPFN(DL1P, LOGL_ERROR, data_ind->u32Fn, "%s Rx Payload Type %s incompatible with lchan\n",
 		gsm_lchan_name(lchan),
 		get_value_string(femtobts_tch_pl_names, payload_type));
 	return -EINVAL;
diff --git a/src/osmo-bts-virtual/l1_if.c b/src/osmo-bts-virtual/l1_if.c
index 55c7ee4..01314fa 100644
--- a/src/osmo-bts-virtual/l1_if.c
+++ b/src/osmo-bts-virtual/l1_if.c
@@ -98,7 +98,7 @@
 
 	/* ... or not uplink */
 	if (!(arfcn & GSMTAP_ARFCN_F_UPLINK)) {
-		LOGP(DL1P, LOGL_NOTICE, "Ignoring incoming msg - no uplink flag\n");
+		LOGPFN(DL1P, LOGL_NOTICE, fn, "Ignoring incoming msg - no uplink flag\n");
 		goto nomessage;
 	}
 
@@ -153,22 +153,22 @@
 	case GSMTAP_CHANNEL_AGCH:
 	case GSMTAP_CHANNEL_PCH:
 	case GSMTAP_CHANNEL_BCCH:
-		LOGP(DL1P, LOGL_NOTICE, "Ignore incoming msg - channel type downlink only!\n");
+		LOGPFN(DL1P, LOGL_NOTICE, fn, "Ignore incoming msg - channel type downlink only!\n");
 		goto nomessage;
 	case GSMTAP_CHANNEL_SDCCH:
 	case GSMTAP_CHANNEL_CCCH:
 	case GSMTAP_CHANNEL_CBCH51:
 	case GSMTAP_CHANNEL_CBCH52:
-		LOGP(DL1P, LOGL_NOTICE, "Ignore incoming msg - channel type not supported!\n");
+		LOGPFN(DL1P, LOGL_NOTICE, fn, "Ignore incoming msg - channel type not supported!\n");
 		goto nomessage;
 	default:
-		LOGP(DL1P, LOGL_NOTICE, "Ignore incoming msg - channel type unknown\n");
+		LOGPFN(DL1P, LOGL_NOTICE, fn, "Ignore incoming msg - channel type unknown\n");
 		goto nomessage;
 	}
 
 	/* forward primitive, lsap takes ownership of the msgb. */
 	l1sap_up(pinst->trx, &l1sap);
-	DEBUGP(DL1P, "Message forwarded to layer 2.\n");
+	DEBUGPFN(DL1P, fn, "Message forwarded to layer 2.\n");
 	return;
 
 nomessage:
@@ -316,9 +316,9 @@
 	/* 100% BER is n_bits_total is 0 */
 	float ber = n_bits_total==0 ? 1.0 : (float)n_errors / (float)n_bits_total;
 
-	LOGP(DMEAS, LOGL_DEBUG, "RX L1 frame %s fn=%u chan_nr=0x%02x MS pwr=%ddBm rssi=%.1f dBFS "
+	DEBUGPFN(DMEAS, fn, "RX L1 frame %s chan_nr=0x%02x MS pwr=%ddBm rssi=%.1f dBFS "
 		"ber=%.2f%% (%d/%d bits) L1_ta=%d rqd_ta=%d toa=%.2f\n",
-		gsm_lchan_name(lchan), fn, chan_nr, ms_pwr_dbm(lchan->ts->trx->bts->band, lchan->ms_power),
+		gsm_lchan_name(lchan), chan_nr, ms_pwr_dbm(lchan->ts->trx->bts->band, lchan->ms_power),
 		rssi, ber*100, n_errors, n_bits_total, lchan->meas.l1_info[1], lchan->rqd_ta, toa);
 
 	l1if_fill_meas_res(&l1sap, chan_nr, lchan->rqd_ta + toa, ber, rssi);

-- 
To view, visit https://gerrit.osmocom.org/6676
To unsubscribe, visit https://gerrit.osmocom.org/settings

Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I751d5ddb3322fce489bc241459738cbcc55c890b
Gerrit-PatchSet: 2
Gerrit-Project: osmo-bts
Gerrit-Branch: master
Gerrit-Owner: Harald Welte <laforge at gnumonks.org>
Gerrit-Reviewer: Jenkins Builder



More information about the gerrit-log mailing list