This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/osmocom-net-gprs@lists.osmocom.org/.
Vladimir Rolbin vrolbin at gmail.comI paid attention that when mode "a" used ( 1 ts configuration) 0 is the only usf value allocated in spite of two MSs are involved in the test. I understand that it may be OK if they haven't opened UL TBFs at the same time, but analyzing the source code I didn't find that the local variable usf after getting value delivers it further to tbf->dir.ul.usf[ts] or I'm missing something. I'll try the patch later (in several days). Regards, Vladimir Rolbin On Wed, Sep 25, 2013 at 1:11 PM, Holger Hans Peter Freyther < hfreyther at sysmocom.de> wrote: > On Tue, Sep 24, 2013 at 01:26:17PM +0300, Vladimir Rolbin wrote: > > Hi all, > > > > It looks like usf found (allocated) is never used. I guess something > > like tbf->dir.ul.usf[ts] = usf is missed. > > Hi! > > can you indicate on how to re-produce the problem and how much time > you have spent in analyzing this problem? I have indicated the lack > of test cases in the past. > > I moved the "assignment" (having to pass trx, bts, pdch, ts just > indicates the lack of structure in this code...) into a new method. > It kills code duplication and could fix the issue. I have only compile > tested it. Could you give it a try? > > holger > > > > diff --git a/src/gprs_rlcmac.cpp b/src/gprs_rlcmac.cpp > index 1d1a8c6..695bf47 100644 > --- a/src/gprs_rlcmac.cpp > +++ b/src/gprs_rlcmac.cpp > @@ -402,6 +402,17 @@ next_diagram: > return tbf; > } > > +static void assign_uplink_tbf_usf(struct gprs_rlcmac_bts *bts, > + struct gprs_rlcmac_pdch *pdch, > + int ts, > + struct gprs_rlcmac_tbf *tbf, int8_t usf) > +{ > + bts->trx[tbf->trx].ul_tbf[tbf->tfi] = tbf; > + pdch->ul_tbf[tbf->tfi] = tbf; > + tbf->pdch[ts] = pdch; > + tbf->dir.ul.usf[ts] = usf; > +} > + > /* Slot Allocation: Algorithm A > * > * Assign single slot for uplink and downlink > @@ -433,17 +444,14 @@ int alloc_algorithm_a(struct gprs_rlcmac_bts *bts, > if (tbf->direction == GPRS_RLCMAC_UL_TBF) { > /* if USF available */ > usf = find_free_usf(pdch, ts); > - if (usf >= 0) { > - LOGP(DRLCMAC, LOGL_DEBUG, "- Assign uplink " > - "TS=%d USF=%d\n", ts, usf); > - bts->trx[tbf->trx].ul_tbf[tbf->tfi] = tbf; > - pdch->ul_tbf[tbf->tfi] = tbf; > - tbf->pdch[ts] = pdch; > - } else { > + if (usf < 0) { > LOGP(DRLCMAC, LOGL_NOTICE, "- Failed " > "allocating TS=%d, no USF available\n", > ts); > return -EBUSY; > } > + LOGP(DRLCMAC, LOGL_DEBUG, "- Assign uplink " > + "TS=%d USF=%d\n", ts, usf); > + assign_uplink_tbf_usf(bts, pdch, ts, tbf, usf); > } else { > LOGP(DRLCMAC, LOGL_DEBUG, "- Assign downlink TS=%d\n", ts); > bts->trx[tbf->trx].dl_tbf[tbf->tfi] = tbf; > @@ -859,10 +867,7 @@ int alloc_algorithm_b(struct gprs_rlcmac_bts *bts, > LOGP(DRLCMAC, LOGL_DEBUG, "- Assigning UL > TS " > "%d\n", ts); > pdch = &bts->trx[tbf->trx].pdch[ts]; > - bts->trx[tbf->trx].ul_tbf[tbf->tfi] = tbf; > - pdch->ul_tbf[tbf->tfi] = tbf; > - tbf->pdch[ts] = pdch; > - tbf->dir.ul.usf[ts] = usf[ts]; > + assign_uplink_tbf_usf(bts, pdch, ts, tbf, > usf[ts]); > slotcount++; > if (slotcount == 1) > tbf->first_ts = ts; > > -- > - Holger Freyther <hfreyther at sysmocom.de> http://www.sysmocom.de/ > ======================================================================= > * sysmocom - systems for mobile communications GmbH > * Schivelbeiner Str. 5 > * 10439 Berlin, Germany > * Sitz / Registered office: Berlin, HRB 134158 B > * Geschaeftsfuehrer / Managing Directors: Holger Freyther, Harald Welte > > -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/osmocom-net-gprs/attachments/20130925/982cb3bf/attachment.htm>