WIP: Use current_pacch_slots (TODO)

Ticket: OW#????
Sponsored-by: On-Waves ehf
This commit is contained in:
Jacob Erlbeck 2016-01-28 14:44:48 +01:00
parent 2c4adbfb30
commit 71fb386c98
1 changed files with 19 additions and 10 deletions

View File

@ -378,6 +378,7 @@ int gprs_rlcmac_tbf::update()
return 0;
}
/* TODO: Remove me */
int tbf_assign_control_ts(struct gprs_rlcmac_tbf *tbf)
{
if (tbf->control_ts == 0xff)
@ -925,10 +926,11 @@ struct msgb *gprs_rlcmac_tbf::create_dl_ass(uint32_t fn, uint8_t ts)
if (direction == GPRS_RLCMAC_DL_TBF && !is_control_ts(ts)) {
LOGP(DRLCMAC, LOGL_NOTICE, "Cannot poll for downlink "
"assigment, because MS cannot reply. (TS=%d, "
"first common TS=%d)\n", ts,
first_common_ts);
"first control TS=%d)\n", ts,
first_control_ts());
poll_ass_dl = 0;
}
if (poll_ass_dl) {
if (poll_state == GPRS_RLCMAC_POLL_SCHED &&
ul_ass_state == GPRS_RLCMAC_UL_ASS_WAIT_ACK)
@ -1237,11 +1239,12 @@ uint8_t gprs_rlcmac_tbf::ul_slots() const
size_t i;
if (direction == GPRS_RLCMAC_DL_TBF) {
#if 0 /* This depends on the existence of an concurrent TBF */
if (control_ts < 8)
slots |= 1 << control_ts;
if (first_common_ts < 8)
slots |= 1 << first_common_ts;
#endif
return slots;
}
@ -1254,19 +1257,25 @@ uint8_t gprs_rlcmac_tbf::ul_slots() const
bool gprs_rlcmac_tbf::is_control_ts(uint8_t ts) const
{
return ts == control_ts;
if (!ms())
return ts == control_ts;
return ms()->current_pacch_slots() & (1 << ts);
}
uint8_t gprs_rlcmac_tbf::first_control_ts() const
{
if (!m_ms)
uint8_t bitnum;
if (!ms())
return first_ts;
if (m_ms->dl_tbf() && m_ms->dl_tbf() != this)
return first_common_ts;
bitnum = ffs(ms()->current_pacch_slots());
if (m_ms->ul_tbf() && m_ms->ul_tbf() != this)
return first_common_ts;
if (bitnum == 0) {
LOGP(DRLCMAC, LOGL_ERROR, "%s: No valid PACCH slot\n", name());
return first_ts;
}
return first_ts;
return bitnum - 1;
}