osmo-bts-trx: handle MTS 0b0110 indicating an Access Burst
The PCU may poll the MS requesting an ACKnowledgment message to be sent in form of four Access Bursts instead of Normal Bursts. The BTS has no prior knowledge of the Uplink burst type, so a new MTS value was specified in order to prevent the BTS from trying to decode Access Bursts as a PDTCH block. This patch implements parsing of the new MTS value 0b0110. Signalling RACH.ind to the PCU is to be implemented. Change-Id: I0fbb63006797e6be386d1f76ed97fff098c036fc Related: OS#4006, SYS#4794
This commit is contained in:
parent
493ff0000b
commit
2950c0363d
|
@ -240,6 +240,7 @@ extern const struct trx_sched_multiframe trx_sched_multiframes[];
|
|||
#define TRX_BI_F_TRX_NUM (1 << 4)
|
||||
#define TRX_BI_F_BATCH_IND (1 << 5)
|
||||
#define TRX_BI_F_SHADOW_IND (1 << 6)
|
||||
#define TRX_BI_F_ACCESS_BURST (1 << 7)
|
||||
|
||||
/*! UL burst indication with the corresponding meta info */
|
||||
struct trx_ul_burst_ind {
|
||||
|
|
|
@ -56,6 +56,10 @@ int rx_pdtch_fn(struct l1sched_ts *l1ts, const struct trx_ul_burst_ind *bi)
|
|||
|
||||
LOGL1SB(DL1P, LOGL_DEBUG, l1ts, bi, "Received PDTCH bid=%u\n", bi->bid);
|
||||
|
||||
/* An MS may be polled to send an ACK in form of four Access Bursts */
|
||||
if (bi->flags & TRX_BI_F_ACCESS_BURST)
|
||||
return rx_rach_fn(l1ts, bi);
|
||||
|
||||
/* allocate burst memory, if not already */
|
||||
if (!*bursts_p) {
|
||||
*bursts_p = talloc_zero_size(l1ts, GSM0503_EGPRS_BURSTS_NBITS);
|
||||
|
|
|
@ -826,13 +826,18 @@ static inline int trx_data_parse_mts(struct phy_instance *phy_inst,
|
|||
|
||||
/* | 7 6 5 4 3 2 1 0 | Bitmask / description
|
||||
* | . 0 0 X X . . . | GMSK, 4 TSC sets (0..3)
|
||||
* | . 0 1 0 X . . . | 8-PSK, 2 TSC sets (0..1) */
|
||||
* | . 0 1 0 X . . . | 8-PSK, 2 TSC sets (0..1)
|
||||
* | . 0 1 1 0 . . . | GMSK, Access Burst */
|
||||
if ((mts >> 5) == 0x00) {
|
||||
bi->mod = TRX_MOD_T_GMSK;
|
||||
bi->tsc_set = (mts >> 3) & 0x03;
|
||||
} else if ((mts >> 4) == 0x02) {
|
||||
bi->mod = TRX_MOD_T_8PSK;
|
||||
bi->tsc_set = (mts >> 3) & 0x01;
|
||||
} else if ((mts >> 3) == 0x06) {
|
||||
bi->flags |= TRX_BI_F_ACCESS_BURST;
|
||||
bi->mod = TRX_MOD_T_GMSK;
|
||||
bi->tsc_set = 0;
|
||||
} else {
|
||||
LOGPPHI(phy_inst, DTRX, LOGL_ERROR,
|
||||
"Rx TRXD PDU with unknown or not supported "
|
||||
|
|
Loading…
Reference in New Issue