diff options
author | Andreas Eversberg <jolly@eversberg.eu> | 2012-08-07 16:00:56 +0200 |
---|---|---|
committer | Andreas Eversberg <jolly@eversberg.eu> | 2012-08-07 16:00:56 +0200 |
commit | 07e97cf8a551b05d7f5f3f9583b68b2eff0f1c23 (patch) | |
tree | 2e5663d0d7d23aa4153b079894f20b94515fbd7c /src/gprs_rlcmac.h | |
parent | cbcd124588abf91be129aee3f37505ca60706de9 (diff) |
Adding single block allocation
It is mandatory to support it because MS may request a single block.
In this case the network must assign a single block.
It is possible to force single block allocation for all uplink requests
on RACH. (VTY option)
Diffstat (limited to 'src/gprs_rlcmac.h')
-rw-r--r-- | src/gprs_rlcmac.h | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/gprs_rlcmac.h b/src/gprs_rlcmac.h index e1c8343f..5890bf06 100644 --- a/src/gprs_rlcmac.h +++ b/src/gprs_rlcmac.h @@ -79,6 +79,7 @@ struct gprs_rlcmac_bts { int (*alloc_algorithm)(struct gprs_rlcmac_tbf *old_tbf, struct gprs_rlcmac_tbf *tbf, uint32_t cust); uint32_t alloc_algorithm_curst; /* options to customize algorithm */ + uint8_t force_two_phase; }; extern struct gprs_rlcmac_bts *gprs_rlcmac_bts; @@ -219,6 +220,7 @@ struct gprs_rlcmac_tbf { extern struct llist_head gprs_rlcmac_ul_tbfs; /* list of uplink TBFs */ extern struct llist_head gprs_rlcmac_dl_tbfs; /* list of downlink TBFs */ +extern struct llist_head gprs_rlcmac_sbas; /* list of single block allocs */ /* * paging entry @@ -229,6 +231,21 @@ struct gprs_rlcmac_paging { uint8_t identity_lv[9]; }; +/* + * single block allocation entry + */ +struct gprs_rlcmac_sba { + struct llist_head list; + uint8_t trx; + uint8_t ts; + uint32_t fn; + uint8_t ta; +}; + +int sba_alloc(uint8_t *_trx, uint8_t *_ts, uint32_t *_fn, uint8_t ta); + +struct gprs_rlcmac_sba *sba_find(uint8_t trx, uint8_t ts, uint32_t fn); + int tfi_alloc(enum gprs_rlcmac_tbf_direction dir, uint8_t *_trx, uint8_t *_ts, int8_t use_trx, int8_t first_ts); @@ -270,9 +287,9 @@ int gprs_rlcmac_rcv_block(uint8_t trx, uint8_t ts, uint8_t *data, uint8_t len, uint32_t fn); int write_immediate_assignment(bitvec * dest, uint8_t downlink, uint8_t ra, - uint32_t fn, uint8_t ta, uint16_t arfcn, uint8_t ts, uint8_t tsc, + uint32_t ref_fn, uint8_t ta, uint16_t arfcn, uint8_t ts, uint8_t tsc, uint8_t tfi, uint8_t usf, uint32_t tlli, uint8_t polling, - uint32_t poll_fn); + uint32_t fn, uint8_t single_block); void write_packet_uplink_assignment(bitvec * dest, uint8_t old_tfi, uint8_t old_downlink, uint32_t tlli, uint8_t use_tlli, |