pdch: Remove the bts argument from rcv_control_block
diff --git a/src/bts.cpp b/src/bts.cpp
index 570058e..b98ca4d 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -572,7 +572,7 @@
 }
 
 /* Received Uplink RLC control block. */
-int gprs_rlcmac_pdch::rcv_control_block(struct gprs_rlcmac_bts *bts,
+int gprs_rlcmac_pdch::rcv_control_block(
 	bitvec *rlc_block, uint8_t trx, uint8_t ts,
 	uint32_t fn)
 {
@@ -590,7 +590,7 @@
 	switch (ul_control_block->u.MESSAGE_TYPE) {
 	case MT_PACKET_CONTROL_ACK:
 		tlli = ul_control_block->u.Packet_Control_Acknowledgement.TLLI;
-		tbf = bts->bts->tbf_by_poll_fn(fn, trx, ts);
+		tbf = bts()->tbf_by_poll_fn(fn, trx, ts);
 		if (!tbf) {
 			LOGP(DRLCMAC, LOGL_NOTICE, "PACKET CONTROL ACK with "
 				"unknown FN=%u TLL=0x%08x (TRX %d TS %d)\n",
@@ -610,7 +610,7 @@
 		if (tbf->ul_ack_state == GPRS_RLCMAC_UL_ACK_WAIT_ACK) {
 			LOGP(DRLCMAC, LOGL_DEBUG, "TBF: [UPLINK] END TFI: %u TLLI: 0x%08x \n", tbf->tfi, tbf->tlli);
 			tbf->ul_ack_state = GPRS_RLCMAC_UL_ACK_NONE;
-			debug_diagram(bts->bts, tbf->diag, "got CTL-ACK (fin)");
+			debug_diagram(bts(), tbf->diag, "got CTL-ACK (fin)");
 			if ((tbf->state_flags &
 				(1 << GPRS_RLCMAC_FLAG_TO_UL_ACK))) {
 				tbf->state_flags &=
@@ -626,9 +626,9 @@
 			/* reset N3105 */
 			tbf->n3105 = 0;
 			tbf->dl_ass_state = GPRS_RLCMAC_DL_ASS_NONE;
-			debug_diagram(bts->bts, tbf->diag, "got CTL-ACK DL-ASS");
+			debug_diagram(bts(), tbf->diag, "got CTL-ACK DL-ASS");
 			if (tbf->direction == GPRS_RLCMAC_UL_TBF)
-				tbf = bts->bts->tbf_by_tlli(tbf->tlli,
+				tbf = bts()->tbf_by_tlli(tbf->tlli,
 							GPRS_RLCMAC_DL_TBF);
 			if (!tbf) {
 				LOGP(DRLCMAC, LOGL_ERROR, "Got ACK, but DL "
@@ -653,9 +653,9 @@
 			/* reset N3105 */
 			tbf->n3105 = 0;
 			tbf->ul_ass_state = GPRS_RLCMAC_UL_ASS_NONE;
-			debug_diagram(bts->bts, tbf->diag, "got CTL-AC UL-ASS");
+			debug_diagram(bts(), tbf->diag, "got CTL-AC UL-ASS");
 			if (tbf->direction == GPRS_RLCMAC_DL_TBF)
-				tbf = bts->bts->tbf_by_tlli(tbf->tlli,
+				tbf = bts()->tbf_by_tlli(tbf->tlli,
 							GPRS_RLCMAC_UL_TBF);
 			if (!tbf) {
 				LOGP(DRLCMAC, LOGL_ERROR, "Got ACK, but UL "
@@ -678,7 +678,7 @@
 		break;
 	case MT_PACKET_DOWNLINK_ACK_NACK:
 		tfi = ul_control_block->u.Packet_Downlink_Ack_Nack.DOWNLINK_TFI;
-		tbf = bts->bts->tbf_by_poll_fn(fn, trx, ts);
+		tbf = bts()->tbf_by_poll_fn(fn, trx, ts);
 		if (!tbf) {
 			LOGP(DRLCMAC, LOGL_NOTICE, "PACKET DOWNLINK ACK with "
 				"unknown FN=%u TFI=%d (TRX %d TS %d)\n",
@@ -702,7 +702,7 @@
 		tlli = tbf->tlli;
 		LOGP(DRLCMAC, LOGL_DEBUG, "RX: [PCU <- BTS] TFI: %u TLLI: 0x%08x Packet Downlink Ack/Nack\n", tbf->tfi, tbf->tlli);
 		tbf->poll_state = GPRS_RLCMAC_POLL_NONE;
-		debug_diagram(bts->bts, tbf->diag, "got DL-ACK");
+		debug_diagram(bts(), tbf->diag, "got DL-ACK");
 
 		rc = gprs_rlcmac_downlink_ack(tbf,
 			ul_control_block->u.Packet_Downlink_Ack_Nack.Ack_Nack_Description.FINAL_ACK_INDICATION,
@@ -716,7 +716,7 @@
 		if (ul_control_block->u.Packet_Downlink_Ack_Nack.Exist_Channel_Request_Description) {
 			LOGP(DRLCMAC, LOGL_DEBUG, "MS requests UL TBF in ack "
 				"message, so we provide one:\n");
-			tbf_alloc_ul(bts, tbf->trx_no, tbf->ms_class, tbf->tlli, tbf->ta, tbf);
+			tbf_alloc_ul(bts_data(), tbf->trx_no, tbf->ms_class, tbf->tlli, tbf->ta, tbf);
 			/* schedule uplink assignment */
 			tbf->ul_ass_state = GPRS_RLCMAC_UL_ASS_SEND_ASS;
 		}
@@ -724,7 +724,7 @@
 	case MT_PACKET_RESOURCE_REQUEST:
 		if (ul_control_block->u.Packet_Resource_Request.ID.UnionType) {
 			tlli = ul_control_block->u.Packet_Resource_Request.ID.u.TLLI;
-			tbf = bts->bts->tbf_by_tlli(tlli, GPRS_RLCMAC_UL_TBF);
+			tbf = bts()->tbf_by_tlli(tlli, GPRS_RLCMAC_UL_TBF);
 			if (tbf) {
 				LOGP(DRLCMACUL, LOGL_NOTICE, "Got RACH from "
 					"TLLI=0x%08x while UL TBF=%d still "
@@ -738,7 +738,7 @@
 				struct gprs_rlcmac_tbf *dl_tbf;
 				uint8_t ta;
 
-				if ((dl_tbf = bts->bts->tbf_by_tlli(tlli, GPRS_RLCMAC_DL_TBF))) {
+				if ((dl_tbf = bts()->tbf_by_tlli(tlli, GPRS_RLCMAC_DL_TBF))) {
 					LOGP(DRLCMACUL, LOGL_NOTICE, "Got RACH from "
 						"TLLI=0x%08x while DL TBF=%d still exists. "
 						"Killing pending DL TBF\n", tlli,
@@ -748,20 +748,20 @@
 				LOGP(DRLCMAC, LOGL_DEBUG, "MS requests UL TBF "
 					"in packet ressource request of single "
 					"block, so we provide one:\n");
-				sba = bts->bts->sba()->find(trx, ts, fn);
+				sba = bts()->sba()->find(trx, ts, fn);
 				if (!sba) {
 					LOGP(DRLCMAC, LOGL_NOTICE, "MS requests UL TBF "
 						"in packet ressource request of single "
 						"block, but there is no resource request "
 						"scheduled!\n");
-					rc = bts->bts->timing_advance()->recall(tlli);
+					rc = bts()->timing_advance()->recall(tlli);
 					if (rc >= 0)
 						ta = rc;
 					else
 						ta = 0;
 				} else {
 					ta = sba->ta;
-					bts->bts->timing_advance()->remember(tlli, ta);
+					bts()->timing_advance()->remember(tlli, ta);
 					llist_del(&sba->list);
 					talloc_free(sba);
 				}
@@ -769,7 +769,7 @@
 					ms_class = Decoding::get_ms_class_by_capability(&ul_control_block->u.Packet_Resource_Request.MS_Radio_Access_capability);
 				if (!ms_class)
 					LOGP(DRLCMAC, LOGL_NOTICE, "MS does not give us a class.\n");
-				tbf = tbf_alloc_ul(bts, trx, ms_class, tlli, ta, NULL);
+				tbf = tbf_alloc_ul(bts_data(), trx, ms_class, tlli, ta, NULL);
 				if (!tbf)
 					break;
 				/* set control ts to current MS's TS, until assignment complete */
@@ -784,14 +784,14 @@
 		} else {
 			if (ul_control_block->u.Packet_Resource_Request.ID.u.Global_TFI.UnionType) {
 				tfi = ul_control_block->u.Packet_Resource_Request.ID.u.Global_TFI.u.DOWNLINK_TFI;
-				tbf = tbf_by_tfi(bts, tfi, trx, GPRS_RLCMAC_DL_TBF);
+				tbf = tbf_by_tfi(bts_data(), tfi, trx, GPRS_RLCMAC_DL_TBF);
 				if (!tbf) {
 					LOGP(DRLCMAC, LOGL_NOTICE, "PACKET RESSOURCE REQ unknown downlink TBF=%d\n", tlli);
 					break;
 				}
 			} else {
 				tfi = ul_control_block->u.Packet_Resource_Request.ID.u.Global_TFI.u.UPLINK_TFI;
-				tbf = tbf_by_tfi(bts, tfi, trx, GPRS_RLCMAC_UL_TBF);
+				tbf = tbf_by_tfi(bts_data(), tfi, trx, GPRS_RLCMAC_UL_TBF);
 				if (!tbf) {
 					LOGP(DRLCMAC, LOGL_NOTICE, "PACKET RESSOURCE REQ unknown uplink TBF=%d\n", tlli);
 					break;
@@ -802,14 +802,14 @@
 		LOGP(DRLCMAC, LOGL_ERROR, "RX: [PCU <- BTS] %s TFI: %u TLLI: 0x%08x FIXME: Packet ressource request\n", (tbf->direction == GPRS_RLCMAC_UL_TBF) ? "UL" : "DL", tbf->tfi, tbf->tlli);
 		break;
 	case MT_PACKET_MEASUREMENT_REPORT:
-		sba = bts->bts->sba()->find(trx, ts, fn);
+		sba = bts()->sba()->find(trx, ts, fn);
 		if (!sba) {
 			LOGP(DRLCMAC, LOGL_NOTICE, "MS send measurement "
 				"in packet ressource request of single "
 				"block, but there is no resource request "
 				"scheduled!\n");
 		} else {
-			bts->bts->timing_advance()->remember(ul_control_block->u.Packet_Measurement_Report.TLLI, sba->ta);
+			bts()->timing_advance()->remember(ul_control_block->u.Packet_Measurement_Report.TLLI, sba->ta);
 			llist_del(&sba->list);
 			talloc_free(sba);
 		}
@@ -826,7 +826,6 @@
 /* received RLC/MAC block from L1 */
 int gprs_rlcmac_pdch::rcv_block(uint8_t *data, uint8_t len, uint32_t fn, int8_t rssi)
 {
-	struct gprs_rlcmac_bts *bts = trx->bts->bts_data();
 	unsigned payload = data[0] >> 6;
 	uint8_t trx_no = trx->trx_no;
 	bitvec *block;
@@ -841,7 +840,7 @@
 		if (!block)
 			return -ENOMEM;
 		bitvec_unpack(block, data);
-		rc = rcv_control_block(bts, block, trx_no, ts_no, fn);
+		rc = rcv_control_block(block, trx_no, ts_no, fn);
 		bitvec_free(block);
 		break;
 	case GPRS_RLCMAC_CONTROL_BLOCK_OPT: