parent
df72c89e4b
commit
1115f5972c
|
@ -103,7 +103,7 @@ int gprs_bssgp_pcu_rx_dl_ud(struct msgb *msg, struct tlv_parsed *tp)
|
|||
// Create new TBF
|
||||
tfi = tfi_alloc(&trx, &ts);
|
||||
if (tfi < 0) {
|
||||
LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH ressource\n");
|
||||
LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH resource\n");
|
||||
/* FIXME: send reject */
|
||||
return -EBUSY;
|
||||
}
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
LLIST_HEAD(gprs_rlcmac_tbfs);
|
||||
void *rlcmac_tall_ctx;
|
||||
|
||||
/* FIXME: spread ressources on multiple TRX */
|
||||
/* FIXME: spread resources on multiple TRX */
|
||||
int tfi_alloc(uint8_t *_trx, uint8_t *_ts)
|
||||
{
|
||||
struct gprs_rlcmac_bts *bts = gprs_rlcmac_bts;
|
||||
|
|
|
@ -89,7 +89,7 @@ extern struct gprs_rlcmac_bts *gprs_rlcmac_bts;
|
|||
enum gprs_rlcmac_tbf_state {
|
||||
GPRS_RLCMAC_NULL = 0, /* new created TBF */
|
||||
GPRS_RLCMAC_ASSIGN, /* wait for downlink assignment */
|
||||
GPRS_RLCMAC_FLOW, /* RLC/MAC flow, ressource needed */
|
||||
GPRS_RLCMAC_FLOW, /* RLC/MAC flow, resource needed */
|
||||
GPRS_RLCMAC_FINISHED, /* flow finished, wait for release */
|
||||
GPRS_RLCMAC_WAIT_RELEASE,/* wait for release or restart of DL TBF */
|
||||
GPRS_RLCMAC_RELEASING, /* releasing, wait to free TBI/USF */
|
||||
|
|
|
@ -201,13 +201,13 @@ uplink_request:
|
|||
/* create new tbf */
|
||||
tfi = tfi_alloc(&trx, &ts);
|
||||
if (tfi < 0) {
|
||||
LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH ressource\n");
|
||||
LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH resource\n");
|
||||
/* FIXME: send reject */
|
||||
break;
|
||||
}
|
||||
usf = find_free_usf(trx, ts);
|
||||
if (usf < 0) {
|
||||
LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH ressource for USF\n");
|
||||
LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH resource for USF\n");
|
||||
/* FIXME: send reject */
|
||||
break;
|
||||
}
|
||||
|
@ -250,7 +250,7 @@ uplink_request:
|
|||
}
|
||||
tlli = tbf->tlli;
|
||||
}
|
||||
LOGP(DRLCMAC, LOGL_DEBUG, "RX: [PCU <- BTS] TFI: %u TLLI: 0x%08x Packet ressource request\n", tbf->tfi, tbf->tlli);
|
||||
LOGP(DRLCMAC, LOGL_DEBUG, "RX: [PCU <- BTS] TFI: %u TLLI: 0x%08x Packet resource request\n", tbf->tfi, tbf->tlli);
|
||||
#warning FIXME
|
||||
puts("FIXME: UL request during UL request"); exit(0);
|
||||
|
||||
|
@ -823,13 +823,13 @@ int gprs_rlcmac_rcv_rach(uint8_t ra, uint32_t Fn, int16_t qta)
|
|||
// Create new TBF
|
||||
tfi = tfi_alloc(&trx, &ts);
|
||||
if (tfi < 0) {
|
||||
LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH ressource\n");
|
||||
LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH resource\n");
|
||||
/* FIXME: send reject */
|
||||
return -EBUSY;
|
||||
}
|
||||
usf = find_free_usf(trx, ts);
|
||||
if (usf < 0) {
|
||||
LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH ressource for USF\n");
|
||||
LOGP(DRLCMAC, LOGL_NOTICE, "No PDCH resource for USF\n");
|
||||
/* FIXME: send reject */
|
||||
return -EBUSY;
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ int gprs_rlcmac_rcv_rts_block(uint8_t trx, uint8_t ts, uint16_t arfcn,
|
|||
/* store last frame number of RTS */
|
||||
pdch->last_rts_fn = fn;
|
||||
|
||||
/* check uplink ressource for polling */
|
||||
/* check uplink resource for polling */
|
||||
poll_fn = fn + 4;
|
||||
if ((block_nr % 3) == 2)
|
||||
poll_fn ++;
|
||||
|
@ -79,9 +79,9 @@ int gprs_rlcmac_rcv_rts_block(uint8_t trx, uint8_t ts, uint16_t arfcn,
|
|||
"polling at FN=%d of TFI=%d\n", trx, ts, fn, block_nr,
|
||||
poll_fn, tfi);
|
||||
/* use free USF */
|
||||
/* else, we search for uplink ressource */
|
||||
/* else, we search for uplink resource */
|
||||
} else {
|
||||
/* select uplink ressource */
|
||||
/* select uplink resource */
|
||||
for (i = 0, tfi = pdch->next_ul_tfi; i < 32;
|
||||
i++, tfi = (tfi + 1) & 31) {
|
||||
tbf = pdch->tbf[tfi];
|
||||
|
@ -91,8 +91,8 @@ int gprs_rlcmac_rcv_rts_block(uint8_t trx, uint8_t ts, uint16_t arfcn,
|
|||
/* no UL TBF, go next */
|
||||
if (tbf->direction != GPRS_RLCMAC_UL_TBF)
|
||||
continue;
|
||||
/* no UL ressources needed, go next */
|
||||
/* we don't need to give ressources in FINISHED state,
|
||||
/* no UL resources needed, go next */
|
||||
/* we don't need to give resources in FINISHED state,
|
||||
* because we have received all blocks and only poll
|
||||
* for packet control ack. */
|
||||
if (tbf->state != GPRS_RLCMAC_FLOW)
|
||||
|
@ -102,9 +102,9 @@ int gprs_rlcmac_rcv_rts_block(uint8_t trx, uint8_t ts, uint16_t arfcn,
|
|||
usf = tbf->dir.ul.usf;
|
||||
LOGP(DRLCMACSCHED, LOGL_DEBUG, "Received RTS for PDCH: "
|
||||
"TRX=%d TS=%d FN=%d block_nr=%d scheduling "
|
||||
"USF=%d for required uplink ressource of "
|
||||
"USF=%d for required uplink resource of "
|
||||
"TBF=%d\n", trx, ts, fn, block_nr, usf, tfi);
|
||||
/* next TBF to handle ressource is the next one */
|
||||
/* next TBF to handle resource is the next one */
|
||||
pdch->next_ul_tfi = (tfi + 1) & 31;
|
||||
break;
|
||||
}
|
||||
|
@ -138,7 +138,7 @@ int gprs_rlcmac_rcv_rts_block(uint8_t trx, uint8_t ts, uint16_t arfcn,
|
|||
|
||||
/* Prio 2: select data message for downlink */
|
||||
if (!msg) {
|
||||
/* select downlink ressource */
|
||||
/* select downlink resource */
|
||||
for (i = 0, tfi = pdch->next_dl_tfi; i < 32;
|
||||
i++, tfi = (tfi + 1) & 31) {
|
||||
tbf = pdch->tbf[tfi];
|
||||
|
@ -148,14 +148,14 @@ int gprs_rlcmac_rcv_rts_block(uint8_t trx, uint8_t ts, uint16_t arfcn,
|
|||
/* no DL TBF, go next */
|
||||
if (tbf->direction != GPRS_RLCMAC_DL_TBF)
|
||||
continue;
|
||||
/* no DL ressources needed, go next */
|
||||
/* no DL resources needed, go next */
|
||||
if (tbf->state != GPRS_RLCMAC_FLOW
|
||||
&& tbf->state != GPRS_RLCMAC_FINISHED)
|
||||
continue;
|
||||
|
||||
LOGP(DRLCMACSCHED, LOGL_DEBUG, "Scheduling data "
|
||||
"message at RTS for TBF=%d\n", tfi);
|
||||
/* next TBF to handle ressource is the next one */
|
||||
/* next TBF to handle resource is the next one */
|
||||
pdch->next_dl_tfi = (tfi + 1) & 31;
|
||||
/* generate DL data block */
|
||||
msg = gprs_rlcmac_send_data_block_acknowledged(tbf, fn);
|
||||
|
|
|
@ -102,7 +102,7 @@ Handling of LLC Frame on uplink TBF:
|
|||
Polling:
|
||||
In order to poll uplink control block from MS, a special poll state and
|
||||
frame number is stored at TBF. The scheduler reads that value and will not
|
||||
assign uplink ressource for other TBFs at that frame number.
|
||||
assign uplink resource for other TBFs at that frame number.
|
||||
|
||||
When there is no uplink transmission received on the block, a timeout is
|
||||
indicated by layer 1 interface. There are two ways of checking timeout:
|
||||
|
|
Loading…
Reference in New Issue