Change in osmo-pcu[master]: PTCCH: properly handle RTS.req for PCU_IF_SAPI_PTCCH

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/.

laforge gerrit-no-reply at lists.osmocom.org
Sat Nov 23 08:02:19 UTC 2019


laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-pcu/+/16083 )

Change subject: PTCCH: properly handle RTS.req for PCU_IF_SAPI_PTCCH
......................................................................

PTCCH: properly handle RTS.req for PCU_IF_SAPI_PTCCH

Change-Id: Ib204acce1a7e33f6651b9da2a7b4a9b9ae461093
Related: OS#1545
---
M src/osmo-bts-litecell15/lc15_l1_if.c
M src/osmo-bts-oc2g/oc2g_l1_if.c
M src/osmo-bts-sysmo/sysmo_l1_if.c
M src/pcu_l1_if.cpp
M src/pcu_l1_if.h
5 files changed, 44 insertions(+), 21 deletions(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved



diff --git a/src/osmo-bts-litecell15/lc15_l1_if.c b/src/osmo-bts-litecell15/lc15_l1_if.c
index 1df7941..670263f 100644
--- a/src/osmo-bts-litecell15/lc15_l1_if.c
+++ b/src/osmo-bts-litecell15/lc15_l1_if.c
@@ -161,8 +161,11 @@
 	case GsmL1_Sapi_Pacch:
 		rc = pcu_rx_rts_req_pdtch(fl1h->trx_no, rts_ind->u8Tn,
 			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	case GsmL1_Sapi_Ptcch:
-		// FIXME
+		rc = pcu_rx_rts_req_ptcch(fl1h->trx_no, rts_ind->u8Tn,
+			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	default:
 		break;
 	}
diff --git a/src/osmo-bts-oc2g/oc2g_l1_if.c b/src/osmo-bts-oc2g/oc2g_l1_if.c
index f9768ae..a02e962 100644
--- a/src/osmo-bts-oc2g/oc2g_l1_if.c
+++ b/src/osmo-bts-oc2g/oc2g_l1_if.c
@@ -162,8 +162,11 @@
 	case GsmL1_Sapi_Pacch:
 		rc = pcu_rx_rts_req_pdtch(fl1h->trx_no, rts_ind->u8Tn,
 			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	case GsmL1_Sapi_Ptcch:
-		// FIXME
+		rc = pcu_rx_rts_req_ptcch(fl1h->trx_no, rts_ind->u8Tn,
+			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	default:
 		break;
 	}
diff --git a/src/osmo-bts-sysmo/sysmo_l1_if.c b/src/osmo-bts-sysmo/sysmo_l1_if.c
index 5d127dd..9b310cc 100644
--- a/src/osmo-bts-sysmo/sysmo_l1_if.c
+++ b/src/osmo-bts-sysmo/sysmo_l1_if.c
@@ -144,8 +144,11 @@
 	case GsmL1_Sapi_Pacch:
 		rc = pcu_rx_rts_req_pdtch(fl1h->trx_no, rts_ind->u8Tn,
 			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	case GsmL1_Sapi_Ptcch:
-		// FIXME
+		rc = pcu_rx_rts_req_ptcch(fl1h->trx_no, rts_ind->u8Tn,
+			rts_ind->u32Fn, rts_ind->u8BlockNbr);
+		break;
 	default:
 		break;
 	}
diff --git a/src/pcu_l1_if.cpp b/src/pcu_l1_if.cpp
index 883cb22..9c7724c 100644
--- a/src/pcu_l1_if.cpp
+++ b/src/pcu_l1_if.cpp
@@ -185,24 +185,21 @@
 	msgb_free(msg);
 }
 
-void pcu_l1if_tx_ptcch(msgb *msg, uint8_t trx, uint8_t ts, uint16_t arfcn,
-	uint32_t fn, uint8_t block_nr)
+void pcu_l1if_tx_ptcch(uint8_t trx, uint8_t ts, uint16_t arfcn,
+		       uint32_t fn, uint8_t block_nr,
+		       uint8_t *data, size_t data_len)
 {
 	struct gprs_rlcmac_bts *bts = bts_main_data();
 
 	if (bts->gsmtap_categ_mask & (1 << PCU_GSMTAP_C_DL_PTCCH))
-		gsmtap_send(bts->gsmtap, arfcn, ts, GSMTAP_CHANNEL_PTCCH, 0, fn, 0, 0, msg->data, msg->len);
+		gsmtap_send(bts->gsmtap, arfcn, ts, GSMTAP_CHANNEL_PTCCH, 0, fn, 0, 0, data, data_len);
 #ifdef ENABLE_DIRECT_PHY
 	if (bts->trx[trx].fl1h) {
-		l1if_pdch_req(bts->trx[trx].fl1h, ts, 1, fn, arfcn, block_nr,
-			msg->data, msg->len);
-		msgb_free(msg);
+		l1if_pdch_req(bts->trx[trx].fl1h, ts, 1, fn, arfcn, block_nr, data, data_len);
 		return;
 	}
 #endif
-	pcu_tx_data_req(trx, ts, PCU_IF_SAPI_PTCCH, arfcn, fn, block_nr,
-			msg->data, msg->len);
-	msgb_free(msg);
+	pcu_tx_data_req(trx, ts, PCU_IF_SAPI_PTCCH, arfcn, fn, block_nr, data, data_len);
 }
 
 void pcu_l1if_tx_agch(bitvec * block, int plen)
@@ -361,6 +358,25 @@
 	return gprs_rlcmac_rcv_rts_block(bts_main_data(),
 					trx, ts, fn, block_nr);
 }
+extern "C" int pcu_rx_rts_req_ptcch(uint8_t trx, uint8_t ts,
+	uint32_t fn, uint8_t block_nr)
+{
+	struct gprs_rlcmac_bts *bts = bts_main_data();
+	struct gprs_rlcmac_pdch *pdch;
+
+	/* Prevent buffer overflow */
+	if (trx >= ARRAY_SIZE(bts->trx) || ts >= 8)
+		return -EINVAL;
+
+	/* Make sure PDCH time-slot is enabled */
+	pdch = &bts->trx[trx].pdch[ts];
+	if (!pdch->m_is_enabled)
+		return -EAGAIN;
+
+	pcu_l1if_tx_ptcch(trx, ts, bts->trx[trx].arfcn, fn, block_nr,
+			  pdch->ptcch_msg, GSM_MACBLOCK_LEN);
+	return 0;
+}
 
 static int pcu_rx_rts_req(struct gsm_pcu_if_rts_req *rts_req)
 {
@@ -377,13 +393,8 @@
 			rts_req->fn, rts_req->block_nr);
 		break;
 	case PCU_IF_SAPI_PTCCH:
-		/* FIXME */
-		{
-			struct msgb *msg = msgb_alloc(GSM_MACBLOCK_LEN, "l1_prim");
-			memset(msgb_put(msg, GSM_MACBLOCK_LEN), 0x2b, GSM_MACBLOCK_LEN);
-			pcu_l1if_tx_ptcch(msg, rts_req->trx_nr, rts_req->ts_nr,
-				rts_req->arfcn, rts_req->fn, rts_req->block_nr);
-		}
+		pcu_rx_rts_req_ptcch(rts_req->trx_nr, rts_req->ts_nr,
+			rts_req->fn, rts_req->block_nr);
 		break;
 	default:
 		LOGP(DL1IF, LOGL_ERROR, "Received PCU RTS request with "
diff --git a/src/pcu_l1_if.h b/src/pcu_l1_if.h
index cb2a6df..888ad28 100644
--- a/src/pcu_l1_if.h
+++ b/src/pcu_l1_if.h
@@ -154,8 +154,9 @@
 #ifdef __cplusplus
 void pcu_l1if_tx_pdtch(msgb *msg, uint8_t trx, uint8_t ts, uint16_t arfcn, 
         uint32_t fn, uint8_t block_nr);
-void pcu_l1if_tx_ptcch(msgb *msg, uint8_t trx, uint8_t ts, uint16_t arfcn, 
-        uint32_t fn, uint8_t block_nr);
+void pcu_l1if_tx_ptcch(uint8_t trx, uint8_t ts, uint16_t arfcn,
+		       uint32_t fn, uint8_t block_nr,
+		       uint8_t *data, size_t data_len);
 void pcu_l1if_tx_agch(bitvec * block, int len);
 
 void pcu_l1if_tx_pch(bitvec * block, int plen, const char *imsi);
@@ -174,6 +175,8 @@
 #endif
 int pcu_rx_rts_req_pdtch(uint8_t trx, uint8_t ts,
 	uint32_t fn, uint8_t block_nr);
+int pcu_rx_rts_req_ptcch(uint8_t trx, uint8_t ts,
+	uint32_t fn, uint8_t block_nr);
 
 int pcu_rx_data_ind_pdtch(uint8_t trx, uint8_t ts, uint8_t *data,
 	uint8_t len, uint32_t fn, struct pcu_l1_meas *meas);

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-pcu/+/16083
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-pcu
Gerrit-Branch: master
Gerrit-Change-Id: Ib204acce1a7e33f6651b9da2a7b4a9b9ae461093
Gerrit-Change-Number: 16083
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <axilirator at gmail.com>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-Reviewer: pespin <pespin at sysmocom.de>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20191123/24ebfbd0/attachment.htm>


More information about the gerrit-log mailing list