diff --git a/src/gprs_rlcmac_sched.cpp b/src/gprs_rlcmac_sched.cpp
index 1857c3c..90710ab 100644
--- a/src/gprs_rlcmac_sched.cpp
+++ b/src/gprs_rlcmac_sched.cpp
@@ -48,7 +48,7 @@
 		ul_tbf = tbf_as_ul_tbf((struct gprs_rlcmac_tbf *)pos->entry);
 		OSMO_ASSERT(ul_tbf);
 		/* this trx, this ts */
-		if (!ul_tbf->is_control_ts(pdch->ts_no))
+		if (!tbf_is_control_ts(ul_tbf, pdch))
 			continue;
 		if (tbf_ul_ack_rts(ul_tbf))
 			tbf_cand->ul_ack = ul_tbf;
@@ -66,7 +66,7 @@
 		dl_tbf = tbf_as_dl_tbf((struct gprs_rlcmac_tbf *)pos->entry);
 		OSMO_ASSERT(dl_tbf);
 		/* this trx, this ts */
-		if (!dl_tbf->is_control_ts(pdch->ts_no))
+		if (!tbf_is_control_ts(dl_tbf, pdch))
 			continue;
 		if (tbf_dl_ass_rts(dl_tbf))
 			tbf_cand->dl_ass = dl_tbf;
@@ -234,17 +234,18 @@
 	unsigned long dl_tbf_idle_msec = osmo_tdef_get(the_pcu->T_defs, -2031, OSMO_TDEF_MS, -1);
 	int age_thresh1 = msecs_to_frames(200);
 	int age_thresh2 = msecs_to_frames(OSMO_MIN(msecs_t3190/2, dl_tbf_idle_msec));
+	const struct gprs_rlcmac_pdch *pdch = &tbf_get_trx(tbf)->pdch[ts];
 
-	if (tbf->is_control_ts(ts) && tbf->need_poll_for_dl_ack_nack())
+	if (tbf_is_control_ts(tbf, pdch) && tbf->need_poll_for_dl_ack_nack())
 		return DL_PRIO_CONTROL;
 
-	if (tbf->is_control_ts(ts) && age > age_thresh2 && age_thresh2 > 0)
+	if (tbf_is_control_ts(tbf, pdch) && age > age_thresh2 && age_thresh2 > 0)
 		return DL_PRIO_HIGH_AGE;
 
 	if ((tbf->state_is(TBF_ST_FLOW) && tbf->have_data()) || w->resend_needed() >= 0)
 		return DL_PRIO_NEW_DATA;
 
-	if (tbf->is_control_ts(ts) && age > age_thresh1 && tbf->keep_open(fn))
+	if (tbf_is_control_ts(tbf, pdch) && age > age_thresh1 && tbf->keep_open(fn))
 		return DL_PRIO_LOW_AGE;
 
 	if (!w->window_empty())
diff --git a/src/pcu_vty_functions.cpp b/src/pcu_vty_functions.cpp
index 1fac787..76baffe 100644
--- a/src/pcu_vty_functions.cpp
+++ b/src/pcu_vty_functions.cpp
@@ -72,7 +72,7 @@
 		VTY_NEWLINE);
 	vty_out(vty, " TS_alloc=");
 	for (int i = 0; i < 8; i++) {
-		bool is_ctrl = tbf->is_control_ts(i);
+		bool is_ctrl = tbf_is_control_ts(tbf, tbf->pdch[i]);
 		if (tbf->pdch[i])
 			vty_out(vty, "%d%s ", i, is_ctrl ? "!" : "");
 	}
diff --git a/src/tbf.cpp b/src/tbf.cpp
index 86b501e..3d9d453 100644
--- a/src/tbf.cpp
+++ b/src/tbf.cpp
@@ -486,7 +486,7 @@
 	uint32_t *poll_fn_, unsigned int *rrbp_) const
 {
 	int rc;
-	if (!is_control_ts(ts)) {
+	if (!tbf_is_control_ts(this, &this->trx->pdch[ts])) {
 		LOGPTBF(this, LOGL_DEBUG, "Polling cannot be "
 			"scheduled in this TS %d (first control TS %d)\n",
 			ts, control_ts);
@@ -751,11 +751,6 @@
 	return slots;
 }
 
-bool gprs_rlcmac_tbf::is_control_ts(uint8_t ts) const
-{
-	return ts == control_ts;
-}
-
 void gprs_rlcmac_tbf::enable_egprs()
 {
 	/* Decrease GPRS TBF count of attached PDCHs */
@@ -886,9 +881,9 @@
 	tbf->poll_timeout(pdch, poll_fn, reason);
 }
 
-bool tbf_is_control_ts(const struct gprs_rlcmac_tbf *tbf, uint8_t ts)
+bool tbf_is_control_ts(const struct gprs_rlcmac_tbf *tbf, const struct gprs_rlcmac_pdch *pdch)
 {
-	return tbf->is_control_ts(ts);
+	return tbf->control_ts == pdch->ts_no;
 }
 
 bool tbf_can_upgrade_to_multislot(const struct gprs_rlcmac_tbf *tbf)
diff --git a/src/tbf.h b/src/tbf.h
index 8155e1d..211b8a7 100644
--- a/src/tbf.h
+++ b/src/tbf.h
@@ -146,7 +146,7 @@
 void tbf_poll_timeout(struct gprs_rlcmac_tbf *tbf, struct gprs_rlcmac_pdch *pdch, uint32_t poll_fn, enum pdch_ulc_tbf_poll_reason reason);
 void tbf_update_state_fsm_name(struct gprs_rlcmac_tbf *tbf);
 const char* tbf_rlcmac_diag(const struct gprs_rlcmac_tbf *tbf);
-bool tbf_is_control_ts(const struct gprs_rlcmac_tbf *tbf, uint8_t ts);
+bool tbf_is_control_ts(const struct gprs_rlcmac_tbf *tbf, const struct gprs_rlcmac_pdch *pdch);
 bool tbf_can_upgrade_to_multislot(const struct gprs_rlcmac_tbf *tbf);
 int tbf_update(struct gprs_rlcmac_tbf *tbf);
 struct gprs_rlcmac_trx *tbf_get_trx(struct gprs_rlcmac_tbf *tbf);
@@ -211,8 +211,6 @@
 	uint8_t dl_slots() const;
 	uint8_t ul_slots() const;
 
-	bool is_control_ts(uint8_t ts) const;
-
 	/* EGPRS */
 	bool is_egprs_enabled() const;
 
diff --git a/src/tbf_dl_ass_fsm.c b/src/tbf_dl_ass_fsm.c
index 37c5a1b..fe959cc 100644
--- a/src/tbf_dl_ass_fsm.c
+++ b/src/tbf_dl_ass_fsm.c
@@ -59,7 +59,7 @@
 	bool old_tfi_is_valid = tbf_is_tfi_assigned(ctx->tbf);
 
 	/* We only use this function in control TS (PACCH) so that MS can always answer the poll */
-	OSMO_ASSERT(tbf_is_control_ts(ctx->tbf, d->ts));
+	OSMO_ASSERT(tbf_is_control_ts(ctx->tbf, &tbf_get_trx(ctx->tbf)->pdch[d->ts]));
 
 	rc = tbf_check_polling(ctx->tbf, d->fn, d->ts, &new_poll_fn, &rrbp);
 	if (rc < 0)
