diff --git a/src/gprs_rlcmac_sched.cpp b/src/gprs_rlcmac_sched.cpp
index 87a3733..0a72e3b 100644
--- a/src/gprs_rlcmac_sched.cpp
+++ b/src/gprs_rlcmac_sched.cpp
@@ -278,7 +278,6 @@
 	struct msgb *msg = NULL;
 	struct gprs_rlcmac_dl_tbf *tbf, *prio_tbf = NULL;
 	enum tbf_dl_prio prio, max_prio = DL_PRIO_NONE;
-	uint8_t ts = pdch->ts_no;
 
 	uint8_t i, tfi, prio_tfi;
 	int age;
@@ -334,7 +333,7 @@
 		/* next TBF to handle resource is the next one */
 		pdch->next_dl_tfi = (prio_tfi + 1) & 31;
 		/* generate DL data block */
-		msg = prio_tbf->create_dl_acked_block(fn, ts, req_mcs_kind);
+		msg = prio_tbf->create_dl_acked_block(fn, pdch, req_mcs_kind);
 		*is_egprs = prio_tbf->is_egprs_enabled();
 	}
 
diff --git a/src/tbf_dl.cpp b/src/tbf_dl.cpp
index 16dc47b..9214aae 100644
--- a/src/tbf_dl.cpp
+++ b/src/tbf_dl.cpp
@@ -391,7 +391,7 @@
  * Create DL data block
  * The messages are fragmented and forwarded as data blocks.
  */
-struct msgb *gprs_rlcmac_dl_tbf::create_dl_acked_block(uint32_t fn, uint8_t ts, enum mcs_kind req_mcs_kind)
+struct msgb *gprs_rlcmac_dl_tbf::create_dl_acked_block(uint32_t fn, const struct gprs_rlcmac_pdch *pdch, enum mcs_kind req_mcs_kind)
 {
 	int bsn, bsn2 = -1;
 	bool may_combine;
@@ -406,7 +406,7 @@
 	if (may_combine)
 		bsn2 = take_next_bsn(fn, bsn, req_mcs_kind, &may_combine);
 
-	return create_dl_acked_block(fn, ts, bsn, bsn2);
+	return create_dl_acked_block(fn, pdch, bsn, bsn2);
 }
 
 /* old_tbf (UL TBF or DL TBF) will send a Pkt Dl Ass on PACCH to assign tbf.
@@ -621,7 +621,7 @@
 }
 
 struct msgb *gprs_rlcmac_dl_tbf::create_dl_acked_block(
-				const uint32_t fn, const uint8_t ts,
+				const uint32_t fn, const struct gprs_rlcmac_pdch *pdch,
 				int index, int index2)
 {
 	uint8_t *msg_data;
@@ -803,12 +803,12 @@
 				  POLL_ACK_AFTER_FRAMES);
 		}
 
-		rc = check_polling(fn, ts, &new_poll_fn, &rrbp);
+		rc = check_polling(fn, pdch->ts_no, &new_poll_fn, &rrbp);
 		if (rc >= 0) {
-			set_polling(new_poll_fn, ts, PDCH_ULC_POLL_DL_ACK);
+			set_polling(new_poll_fn, pdch->ts_no, PDCH_ULC_POLL_DL_ACK);
 			LOGPTBFDL(this, LOGL_DEBUG,
 				  "Scheduled DL Acknowledgement polling on PACCH (FN=%d, TS=%d)\n",
-				  new_poll_fn, ts);
+				  new_poll_fn, pdch->ts_no);
 
 			m_tx_counter = 0;
 			/* start timer whenever we send the final block */
@@ -828,7 +828,7 @@
 
 			LOGPTBFDL(this, LOGL_INFO,
 				  "Scheduled Ack/Nack polling on FN=%d, TS=%d\n",
-				  new_poll_fn, ts);
+				  new_poll_fn, pdch->ts_no);
 		}
 	}
 
diff --git a/src/tbf_dl.h b/src/tbf_dl.h
index 2fc4f5f..4fdfbed 100644
--- a/src/tbf_dl.h
+++ b/src/tbf_dl.h
@@ -48,7 +48,8 @@
 	gprs_rlc_window *window();
 
 	int rcvd_dl_ack(bool final_ack, unsigned first_bsn, struct bitvec *rbb);
-	struct msgb *create_dl_acked_block(uint32_t fn, uint8_t ts, enum mcs_kind req_mcs_kind = EGPRS);
+	struct msgb *create_dl_acked_block(uint32_t fn, const gprs_rlcmac_pdch *pdch,
+					   enum mcs_kind req_mcs_kind = EGPRS);
 
 	void request_dl_ack();
 	bool need_poll_for_dl_ack_nack() const;
@@ -100,8 +101,8 @@
 			  bool *may_combine);
 	bool restart_bsn_cycle();
 	int create_new_bsn(const uint32_t fn, enum CodingScheme cs);
-	struct msgb *create_dl_acked_block(const uint32_t fn, const uint8_t ts,
-					int index, int index2 = -1);
+	struct msgb *create_dl_acked_block(const uint32_t fn, const struct gprs_rlcmac_pdch *pdch,
+					   int index, int index2 = -1);
 	int update_window(unsigned first_bsn, const struct bitvec *rbb);
 	int rcvd_dl_final_ack();
 	bool dl_window_stalled() const;
diff --git a/tests/tbf/TbfTest.cpp b/tests/tbf/TbfTest.cpp
index ba357e3..6d57843 100644
--- a/tests/tbf/TbfTest.cpp
+++ b/tests/tbf/TbfTest.cpp
@@ -535,6 +535,7 @@
 {
 	the_pcu = prepare_pcu();
 	struct gprs_rlcmac_bts *bts = bts_alloc(the_pcu, 0);
+	struct gprs_rlcmac_pdch *pdch;
 	uint8_t ts_no = 4;
 	uint8_t ms_class = 45;
 	int rc = 0;
@@ -554,6 +555,7 @@
 	fprintf(stderr, "=== start %s ===\n", __func__);
 
 	setup_bts(bts, ts_no);
+	pdch = &bts->trx[0].pdch[ts_no];
 	/* keep the MS object 10 seconds */
 	OSMO_ASSERT(osmo_tdef_set(the_pcu->T_defs, -2030, 10, OSMO_TDEF_S) == 0);
 
@@ -612,7 +614,7 @@
 	};
 
 	while (ms_dl_tbf(ms)->have_data()) {
-		msg = ms_dl_tbf(ms)->create_dl_acked_block(fn += 4, ts_no);
+		msg = ms_dl_tbf(ms)->create_dl_acked_block(fn += 4, pdch);
 		fprintf(stderr, "MSG = %s\n", msgb_hexdump(msg));
 		if (!msgb_eq_data_print(msg, exp[expected_data - 1], GSM_MACBLOCK_LEN))
 			fprintf(stderr, "%s failed at %u\n", __func__, expected_data);
@@ -2865,7 +2867,7 @@
 	} while(0)
 
 #define MAKE_ACKED(m, tbf, fn, cs, check_unacked) do {			\
-		m = tbf->create_dl_acked_block(fn, tbf->control_ts->ts_no);	\
+		m = tbf->create_dl_acked_block(fn, tbf->control_ts);	\
 		OSMO_ASSERT(m);						\
 		if (check_unacked)					\
 			CHECK_UNACKED(tbf, cs, 0);			\
@@ -2940,7 +2942,7 @@
 
 	NACK(dl_tbf, 0);
 
-	msg = dl_tbf->create_dl_acked_block(fn, dl_tbf->control_ts->ts_no);
+	msg = dl_tbf->create_dl_acked_block(fn, dl_tbf->control_ts);
 	egprs2 = (struct gprs_rlc_dl_header_egprs_2 *) msg->data;
 
 	/* Table 10.4.8a.3.1 of 44.060 */
