From ee31b78cfd0945e92a8e11e1460e57886cd5b854 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Sun, 15 Jul 2012 16:27:01 +0200 Subject: Fixed contention resolution issue In order to do downlink assignment during uplink TBF, the content resolution must be completed. It is completed when the first Packet Uplink Ack/Nack message is transmitted to the mobile. --- src/gprs_rlcmac_sched.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'src/gprs_rlcmac_sched.cpp') diff --git a/src/gprs_rlcmac_sched.cpp b/src/gprs_rlcmac_sched.cpp index f88b09b5..cd995166 100644 --- a/src/gprs_rlcmac_sched.cpp +++ b/src/gprs_rlcmac_sched.cpp @@ -69,12 +69,12 @@ int gprs_rlcmac_rcv_rts_block(uint8_t trx, uint8_t ts, uint16_t arfcn, if (tbf->poll_state == GPRS_RLCMAC_POLL_SCHED && tbf->poll_fn == poll_fn) poll_tbf = tbf; + if (tbf->ul_ack_state == GPRS_RLCMAC_UL_ACK_SEND_ACK) + ul_ack_tbf = tbf; if (tbf->dl_ass_state == GPRS_RLCMAC_DL_ASS_SEND_ASS) dl_ass_tbf = tbf; if (tbf->ul_ass_state == GPRS_RLCMAC_UL_ASS_SEND_ASS) ul_ass_tbf = tbf; - if (tbf->ul_ack_state == GPRS_RLCMAC_UL_ACK_SEND_ACK) - ul_ack_tbf = tbf; } llist_for_each_entry(tbf, &gprs_rlcmac_dl_tbfs, list) { /* this trx, this ts */ @@ -88,8 +88,6 @@ int gprs_rlcmac_rcv_rts_block(uint8_t trx, uint8_t ts, uint16_t arfcn, dl_ass_tbf = tbf; if (tbf->ul_ass_state == GPRS_RLCMAC_UL_ASS_SEND_ASS) ul_ass_tbf = tbf; - if (tbf->ul_ack_state == GPRS_RLCMAC_UL_ACK_SEND_ACK) - ul_ack_tbf = tbf; } /* check uplink ressource for polling */ @@ -134,14 +132,14 @@ int gprs_rlcmac_rcv_rts_block(uint8_t trx, uint8_t ts, uint16_t arfcn, if (dl_ass_tbf) { tbf = dl_ass_tbf; msg = gprs_rlcmac_send_packet_downlink_assignment(tbf, fn); - } else + } /* schedule PACKET UPLINK ASSIGNMENT */ - if (ul_ass_tbf) { + if (!msg && ul_ass_tbf) { tbf = ul_ass_tbf; msg = gprs_rlcmac_send_packet_uplink_assignment(tbf, fn); - } else + } /* schedule PACKET UPLINK ACK */ - if (ul_ack_tbf) { + if (!msg && ul_ack_tbf) { tbf = ul_ack_tbf; msg = gprs_rlcmac_send_uplink_ack(tbf, fn); } -- cgit v1.2.3