OK, here's a more detailed analysis after reading following specs:
3GPP TS 04.60:
- 5.2.3 Uplink State Flag
- 8.1.1.1 Dynamic allocation uplink RLC data block transfer
- 5.2.4a Multiplexing of GPRS and EGPRS mobile stations
- 11.2.29 Packet Uplink Assignment (USF_GRANULARITY)
3GPP TS 05.02:
- 6.3.2.2.1 "Mapping of uplink packet traffic channel (PDTCH/U) and PACCH/U"
Regarding multiplexing:¶
3GPP TS 04.60 V8.27.0 sec "5.2.4a Multiplexing of GPRS and EGPRS mobile stations" provides valuable information.¶
GPRS and EGPRS mobile stations can be multiplexed dynamically on the same PDCH.
If dynamic or extended dynamic allocation is used, a mobile station in GPRS TBF mode shall be able to detect the USF
that assigns the uplink to that mobile station. The network shall use GMSK modulation, i.e. either CS-1 to CS-4 or
MCS-1 to MCS-4, in those blocks. The other blocks may use 8PSK modulation. A mobile station in EGPRS TBF mode
shall be able to detect the USF that assigns the uplink to that mobile station. The network may use either GMSK
modulation or 8-PSK modulation, i.e. CS-1 to CS-4, MCS-1 to MCS-4 or MCS-5 to MCS-9 in those blocks.
NOTE 1: The stealing bits in the EGPRS GMSK blocks are set to indicate CS-4. The coding and interleaving of the
USF is done as defined for CS-4. That leads to:
1) A GPRS mobile station is able to detect the USF in EGPRS GMSK blocks. The risk that the rest of the
block will be misinterpreted as valid information is low.
2) An EGPRS mobile station cannot differentiate CS-4 blocks from EGPRS GMSK blocks by decoding the
stealing bits only. However, an EGPRS mobile station in EGPRS TBF mode needs only to decode GMSK
blocks assuming either of MCS-1 to MCS-4, in order to determine if they were aimed for it.
If fixed allocation is used, uplink blocks of the PDCH are reserved for only one mobile station at a time. Using fixed
allocation, there is no particular restriction for the multiplexing of GPRS and EGPRS mobile stations on the same
PDCH.
NOTE 2: Due to mobile station synchronisation reasons, special requirements apply for the scheduling, the
modulation and coding scheme and the output power of blocks that are transmitted to a mobile station
with an active uplink or downlink TBF, see 3GPP TS 05.08.
In summary:
- MS in GPRS-only TBF are able to decode CS1-4 and MCS1-4 (aka EGPRS with GMSK modulation)
- GMSK modulation only needs to (must) be used for:
- blocks aimed directly at MS with GPRS-only TBF
- blocks aimed at other MS which contain an USF targeted at MS with GPRS-only TBF
This is the important information we can infer from the specs:
Not all downlink blocks need to be downgraded to GSM if there's at least 1 GPRS-only TBF in the PDCH TS. Only packets which needs to be decoded by it are required, that is:
- blocks aimed directly at MS with GPRS-only TBF
- blocks aimed at other MS which contain an USF targeted at MS with GPRS-only TBF
We can even try to optimise DL block selection by giving priority setting USF for GPRS-only TBF when sending a DL block to a (E)GPRS TBF using (M)CS1-4.
Regarding USF granularity:¶
3GPP TS 04.60 V8.27.0 sec "8.1.1.1 Dynamic allocation uplink RLC data block transfer"¶
Whenever the mobile station detects an assigned USF value on an assigned PDCH, the mobile station shall transmit
either a single RLC/MAC block or a sequence of four RLC/MAC blocks on the same PDCH. The time relation between
an uplink block, which the mobile station shall use for transmission, and the occurrence of the USF value is defined in
3GPP TS 05.02. The number of RLC/MAC blocks to transmit is controlled by the USF_GRANULARITY parameter
characterising the uplink TBF.
11.2.29 Packet Uplink Assignment:¶
USF_GRANULARITY (1 bit field)
This information field indicates the USF granularity to be applied by the mobile station when it is assigned a TBF using
Dynamic Allocation.
0 the mobile station shall transmit one RLC/MAC block
1 the mobile station shall transmit four consecutive RLC/MAC blocks
Then, in 3GPP TS 05.02 version 8.11.0:
h3. 6.3.2.2.1 "Mapping of uplink packet traffic channel (PDTCH/U) and PACCH/U":
If the USF in block B(x-1) indicates that block B(x) shall be used by an MS for which the USF_GRANULARITY is set to 1 (corresponding to 4 blocks) in the last assignment message,
that MS shall also use the three following blocks. The USF corresponding to the last three blocks shall be set to an unused value. The MS may transmit a PDTCH block or a PACCH block
on any of the uplink blocks used by the MS. The occurrence of the PACCH/U associated to a PDTCH/D shall be indicated by the network by polling the MS (see 3GPP TS 04.60).
NOTE: This subclause specifies how the network shall signal that the MS is allowed to use the uplink. The operation of the MS is specified in 3GPP TS 04.60. In particular cases of
fixed allocation, extended dynamic allocation or exclusive allocation, the MS may not need to monitor the USF on all allocated PDCHs.
NOTE: The PDCH/HU is only assigned in exclusive allocation (see 3GPP TS 04.60).
For COMPACT, USF_GRANULARITY should be set to 0 (corresponding to 1 block) for dynamic allocation for the following cases:
i) for odd timeslot numbers (TN) 1, 3, 5, and 7 in nominal and large cells;
ii) for even timeslot numbers (TN) 0, 2, 4, and 6 in large cells.
So without looking into further detail, some considerations:
- If there's not already a UNUSED_USF specific value (3 bits) (there seems to exit USF=FREE but only when using PRACH but we don't use that), then it means by using this mechanism we can handle 1 MS less per PDCH (because we need to leave an unused value)
- spec recommends not using this feature in nominal (normal?) or big cells.
So my proposal:¶
Don't focus on USF granularity (at least for now), and focus on having GPRS+EGPRS multiplexing working fine (only downgrading to (M)CS1-4 DL blocks aimed at GPRS-only TBF or with USF targeted at GPRS-only TBF.
steps:
- Implement "3GPP TS 04.60 sec 5.2.4a Multiplexing of GPRS and EGPRS mobile stations": refactor osmo-pcu to allow all MS in a PDCH TS, add code to decide (M)CS (modulation) based on target MS and USF.
- Add per PDCH TS option: "allow tbf-type gprs/egprs/multiplex" to either allow a specific type or multiplexing, and then osmo-pcu allocates or rejects phone based on that.