pdch: Move handling of control_ack to a separate method

Kill the unused tfi parameter
diff --git a/src/bts.cpp b/src/bts.cpp
index 7ebbb40..cae50b7 100644
--- a/src/bts.cpp
+++ b/src/bts.cpp
@@ -867,6 +867,99 @@
 	return 0;
 }
 
+void gprs_rlcmac_pdch::rcv_control_ack(RlcMacUplink_t *ul_control_block, uint32_t fn)
+{
+	struct gprs_rlcmac_tbf *tbf;
+	uint32_t tlli = 0;
+
+	tlli = ul_control_block->u.Packet_Control_Acknowledgement.TLLI;
+	tbf = bts()->tbf_by_poll_fn(fn, trx_no(), ts_no);
+	if (!tbf) {
+		LOGP(DRLCMAC, LOGL_NOTICE, "PACKET CONTROL ACK with "
+			"unknown FN=%u TLL=0x%08x (TRX %d TS %d)\n",
+			fn, tlli, trx_no(), ts_no);
+		return;
+	}
+	if (tlli != tbf->tlli) {
+		LOGP(DRLCMAC, LOGL_INFO, "Phone changed TLLI to "
+			"0x%08x\n", tlli);
+		tbf->tlli = tlli;
+	}
+	LOGP(DRLCMAC, LOGL_DEBUG, "RX: [PCU <- BTS] TFI: %u TLLI: 0x%08x Packet Control Ack\n", tbf->tfi, tbf->tlli);
+	tbf->poll_state = GPRS_RLCMAC_POLL_NONE;
+
+	/* check if this control ack belongs to packet uplink ack */
+	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(), tbf->diag, "got CTL-ACK (fin)");
+		if ((tbf->state_flags &
+			(1 << GPRS_RLCMAC_FLAG_TO_UL_ACK))) {
+			tbf->state_flags &=
+				~(1 << GPRS_RLCMAC_FLAG_TO_UL_ACK);
+				LOGP(DRLCMAC, LOGL_NOTICE, "Recovered uplink "
+					"ack for UL TBF=%d\n", tbf->tfi);
+		}
+		tbf_free(tbf);
+		return;
+	}
+	if (tbf->dl_ass_state == GPRS_RLCMAC_DL_ASS_WAIT_ACK) {
+		LOGP(DRLCMAC, LOGL_DEBUG, "TBF: [UPLINK] DOWNLINK ASSIGNED TFI: %u TLLI: 0x%08x \n", tbf->tfi, tbf->tlli);
+		/* reset N3105 */
+		tbf->n3105 = 0;
+		tbf->dl_ass_state = GPRS_RLCMAC_DL_ASS_NONE;
+		debug_diagram(bts(), tbf->diag, "got CTL-ACK DL-ASS");
+		if (tbf->direction == GPRS_RLCMAC_UL_TBF)
+			tbf = bts()->tbf_by_tlli(tbf->tlli,
+						GPRS_RLCMAC_DL_TBF);
+		if (!tbf) {
+			LOGP(DRLCMAC, LOGL_ERROR, "Got ACK, but DL "
+				"TBF is gone\n");
+			return;
+		}
+		tbf_new_state(tbf, GPRS_RLCMAC_FLOW);
+		/* stop pending assignment timer */
+		tbf->stop_timer();
+		if ((tbf->state_flags &
+			(1 << GPRS_RLCMAC_FLAG_TO_DL_ASS))) {
+			tbf->state_flags &=
+				~(1 << GPRS_RLCMAC_FLAG_TO_DL_ASS);
+			LOGP(DRLCMAC, LOGL_NOTICE, "Recovered downlink "
+				"assignment for DL TBF=%d\n", tbf->tfi);
+		}
+		tbf_assign_control_ts(tbf);
+		return;
+	}
+	if (tbf->ul_ass_state == GPRS_RLCMAC_UL_ASS_WAIT_ACK) {
+		LOGP(DRLCMAC, LOGL_DEBUG, "TBF: [DOWNLINK] UPLINK ASSIGNED TFI: %u TLLI: 0x%08x \n", tbf->tfi, tbf->tlli);
+		/* reset N3105 */
+		tbf->n3105 = 0;
+		tbf->ul_ass_state = GPRS_RLCMAC_UL_ASS_NONE;
+		debug_diagram(bts(), tbf->diag, "got CTL-AC UL-ASS");
+#warning "TBF is changing on the way... *sigh*"
+		if (tbf->direction == GPRS_RLCMAC_DL_TBF)
+			tbf = bts()->tbf_by_tlli(tbf->tlli,
+						GPRS_RLCMAC_UL_TBF);
+		if (!tbf) {
+			LOGP(DRLCMAC, LOGL_ERROR, "Got ACK, but UL "
+				"TBF is gone\n");
+			return;
+		}
+		tbf_new_state(tbf, GPRS_RLCMAC_FLOW);
+		if ((tbf->state_flags &
+			(1 << GPRS_RLCMAC_FLAG_TO_UL_ASS))) {
+			tbf->state_flags &=
+				~(1 << GPRS_RLCMAC_FLAG_TO_UL_ASS);
+			LOGP(DRLCMAC, LOGL_NOTICE, "Recovered uplink "
+				"assignment for UL TBF=%d\n", tbf->tfi);
+		}
+		tbf_assign_control_ts(tbf);
+		return;
+	}
+	LOGP(DRLCMAC, LOGL_ERROR, "Error: received PACET CONTROL ACK "
+		"at no request\n");
+}
+
 /* Received Uplink RLC control block. */
 int gprs_rlcmac_pdch::rcv_control_block(
 	bitvec *rlc_block, uint32_t fn)
@@ -884,92 +977,7 @@
 	LOGP(DRLCMAC, LOGL_DEBUG, "------------------------- RX : Uplink Control Block -------------------------\n");
 	switch (ul_control_block->u.MESSAGE_TYPE) {
 	case MT_PACKET_CONTROL_ACK:
-		tlli = ul_control_block->u.Packet_Control_Acknowledgement.TLLI;
-		tbf = bts()->tbf_by_poll_fn(fn, trx_no(), ts_no);
-		if (!tbf) {
-			LOGP(DRLCMAC, LOGL_NOTICE, "PACKET CONTROL ACK with "
-				"unknown FN=%u TLL=0x%08x (TRX %d TS %d)\n",
-				fn, tlli, trx_no(), ts_no);
-			break;
-		}
-		tfi = tbf->tfi;
-		if (tlli != tbf->tlli) {
-			LOGP(DRLCMAC, LOGL_INFO, "Phone changed TLLI to "
-				"0x%08x\n", tlli);
-			tbf->tlli = tlli;
-		}
-		LOGP(DRLCMAC, LOGL_DEBUG, "RX: [PCU <- BTS] TFI: %u TLLI: 0x%08x Packet Control Ack\n", tbf->tfi, tbf->tlli);
-		tbf->poll_state = GPRS_RLCMAC_POLL_NONE;
-
-		/* check if this control ack belongs to packet uplink ack */
-		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(), tbf->diag, "got CTL-ACK (fin)");
-			if ((tbf->state_flags &
-				(1 << GPRS_RLCMAC_FLAG_TO_UL_ACK))) {
-				tbf->state_flags &=
-					~(1 << GPRS_RLCMAC_FLAG_TO_UL_ACK);
-				LOGP(DRLCMAC, LOGL_NOTICE, "Recovered uplink "
-					"ack for UL TBF=%d\n", tbf->tfi);
-			}
-			tbf_free(tbf);
-			break;
-		}
-		if (tbf->dl_ass_state == GPRS_RLCMAC_DL_ASS_WAIT_ACK) {
-			LOGP(DRLCMAC, LOGL_DEBUG, "TBF: [UPLINK] DOWNLINK ASSIGNED TFI: %u TLLI: 0x%08x \n", tbf->tfi, tbf->tlli);
-			/* reset N3105 */
-			tbf->n3105 = 0;
-			tbf->dl_ass_state = GPRS_RLCMAC_DL_ASS_NONE;
-			debug_diagram(bts(), tbf->diag, "got CTL-ACK DL-ASS");
-			if (tbf->direction == GPRS_RLCMAC_UL_TBF)
-				tbf = bts()->tbf_by_tlli(tbf->tlli,
-							GPRS_RLCMAC_DL_TBF);
-			if (!tbf) {
-				LOGP(DRLCMAC, LOGL_ERROR, "Got ACK, but DL "
-					"TBF is gone\n");
-				break;
-			}
-			tbf_new_state(tbf, GPRS_RLCMAC_FLOW);
-			/* stop pending assignment timer */
-			tbf->stop_timer();
-			if ((tbf->state_flags &
-				(1 << GPRS_RLCMAC_FLAG_TO_DL_ASS))) {
-				tbf->state_flags &=
-					~(1 << GPRS_RLCMAC_FLAG_TO_DL_ASS);
-				LOGP(DRLCMAC, LOGL_NOTICE, "Recovered downlink "
-					"assignment for DL TBF=%d\n", tbf->tfi);
-			}
-			tbf_assign_control_ts(tbf);
-			break;
-		}
-		if (tbf->ul_ass_state == GPRS_RLCMAC_UL_ASS_WAIT_ACK) {
-			LOGP(DRLCMAC, LOGL_DEBUG, "TBF: [DOWNLINK] UPLINK ASSIGNED TFI: %u TLLI: 0x%08x \n", tbf->tfi, tbf->tlli);
-			/* reset N3105 */
-			tbf->n3105 = 0;
-			tbf->ul_ass_state = GPRS_RLCMAC_UL_ASS_NONE;
-			debug_diagram(bts(), tbf->diag, "got CTL-AC UL-ASS");
-			if (tbf->direction == GPRS_RLCMAC_DL_TBF)
-				tbf = bts()->tbf_by_tlli(tbf->tlli,
-							GPRS_RLCMAC_UL_TBF);
-			if (!tbf) {
-				LOGP(DRLCMAC, LOGL_ERROR, "Got ACK, but UL "
-					"TBF is gone\n");
-				break;
-			}
-			tbf_new_state(tbf, GPRS_RLCMAC_FLOW);
-			if ((tbf->state_flags &
-				(1 << GPRS_RLCMAC_FLAG_TO_UL_ASS))) {
-				tbf->state_flags &=
-					~(1 << GPRS_RLCMAC_FLAG_TO_UL_ASS);
-				LOGP(DRLCMAC, LOGL_NOTICE, "Recovered uplink "
-					"assignment for UL TBF=%d\n", tbf->tfi);
-			}
-			tbf_assign_control_ts(tbf);
-			break;
-		}
-		LOGP(DRLCMAC, LOGL_ERROR, "Error: received PACET CONTROL ACK "
-			"at no request\n");
+		rcv_control_ack(ul_control_block, fn);
 		break;
 	case MT_PACKET_DOWNLINK_ACK_NACK:
 		tfi = ul_control_block->u.Packet_Downlink_Ack_Nack.DOWNLINK_TFI;