Age | Commit message (Collapse) | Author | Files | Lines |
|
Currently the MCS schemes are not supported when the leak rate is
being computed. This leads to a lower value for the leak rate, thus
limiting the throughput to GPRS-like ranges.
Use the payload size reported by GprsCodingScheme instead.
Sponsored-by: On-Waves ehf
|
|
Currently single BSN blocks of size 68 (a single unit from MCS-8)
are put into a MCS-6 block with padding according to TS 44.060
Annex J. Unfortunately, these packets are ignored by the E71. This
might be related to the currently incorrect usage of the puncturing
schemes and the RSB bit.
Avoid downgrading from MCS-8 to MCS-6 if there is no second block
available. Send the block twice instead.
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Add a test for EGPRS two phase access based on RA caps.
Add a test for DL TBFs where data block are encoded with each MCS.
Sponsored-by: On-Waves ehf
|
|
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Currently most offsets are hard-coded which makes it difficult to
access the data units and their headers when padding has to be taken
into account. These offset are already provided by the
gprs_rlc_data_info_init_ul/dl functions.
Change the encoder/decoder to use these values.
Note that some assumptions (bit alignment) are still present in the
code and checked by assertions.
Sponsored-by: On-Waves ehf
|
|
To access EGPRS data blocks, the optional padding must be taken into
account. Whether padding has been used must be dervied from the CPS
field in the header of the RLC EGPRS data message.
Add this function to decode the CPS value and extract that
information.
Sponsored-by: On-Waves ehf
|
|
The offsets of the data areas change when padding is used (see TS
44.060, 9.3.2.1 and Annex J for details).
Extend the parameter lists to pass the with_padding flag and use
that information to compute the correct offsets.
Sponsored-by: On-Waves ehf
|
|
Return the amount of optional padding bits, which is 6*8 for
MCS-3 and MCS-6 and 0 for all other coding schemes. The padding
is needed the encode 68 byte data blocks (MCS-8) with these schemes.
See TS 44.060, 9.3.2.1 and Annex J for details.
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Currently the queue length is overwritten by the remaining chunk
length, which should be added instead. This may result in a lower
CS/MCS value than expected.
Add the chunk length instead if the TBF is present.
Sponsored-by: On-Waves ehf
|
|
Add family handling and the related methods family,
isFamilyCompatible, isCombinable, decToSingleBlock to
GprsCodingScheme.
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Currently the method is hard-coded to support a single BSN only.
MCS-7 to MCS-9 encode 2 data blocks into a single RLC data message.
This commit refactors create_dl_acked_block to process any number
of blocks internally.
Note that this does not extend the parameter list accordingly and
just duplicates the BSN if these MCS are being used.
Sponsored-by: On-Waves ehf
|
|
This adds the following VTY command (config-pcu node):
- mcs <1-9> sets initial DL and UL MCS to the same value
- mcs <1-9> <1-9> sets initial DL and UL MCS separately
- no mcs sets the default values
Sponsored-by: On-Waves ehf
|
|
|
|
This reverts commit 02fddb6c964d797926006898346a0192c6ac41f9.
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Currently only header type 3 (MCS-1 to MCS-4) is supported.
Add header structs to rlc.h and extend
Encoding::rlc_write_dl_data_header accordingly.
Sponsored-by: On-Waves ehf
|
|
entered when the assigment is really sent
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
The PACCH is specific to an MS and may change when a TBF is
established or removed (see TS 44.060, 8.1.1.2.2). For multislot
class type 2 phones, more than one timeslot may be used to transmit
RLC/MAC control messages.
Add a method that returns a set of TS which can be used for the
PACCH.
Sponsored-by: On-Waves ehf
|
|
Currently the selection of a pending control message is done round
robin. It can possibly happen, that a DL assigment is sent on a DL
TBF while an UL assignment is pending. The MS will replace the old
DL TBF in that case, so that it can no longer be used for the PACCH
so that the UL assignment is lost.
Give assigment requests for the same direction a lower priority.
Sponsored-by: On-Waves ehf
|
|
Currently the TBF whose PACCH has been used to send an assigment
is freed if it is in state WAIT_RELEASE. Sometimes this TBF could
be used for several assignments (e.g. an 'old' DL TBF is used to
assign an UL and then a DL TBF). The second of these assigments will
never be sent in that case. On the other hand, the MS replaces a
TBF of the same direction, so the old one can be freed in that case.
Only free the TBF if it is in state WAIT_RELEASE and has the same
direction like the new one.
Sponsored-by: On-Waves ehf
|
|
Tell the MS to use EGPRS if EGPRS is enabled on the TBF.
Note that only downlink TBF will be supported so far.
Sponsored-by: On-Waves ehf
|
|
The EGPRS support will need more information to encode the IMMEDIATE
ASSIGMENT. Instead of adding more parameters pass a pointer to the
TBF unless an SBA shall be done (indicated by tbf == NULL). All
values that can be derived from the TBF and are not needed for an SBA
are removed from the parameter list.
Return a negative value on error.
Sponsored-by: On-Waves ehf
|
|
Move the IA rest encoding into separate functions fpr uplink and
downlink.
Sponsored-by: On-Waves ehf
|
|
Currently bitvec_write_field is used which just sets the bits as
given, while the spec 44.018 assumes LH encoding.
Use the bitvec_write_field_lh function instead.
Sponsored-by: On-Waves ehf
|
|
While the bitvec functions from libosmocore support LH encoding, the
C++ wrapper does not.
Add a bitvec_write_field_lh function that is similar to
bitvec_write_field, but writes L and H instead of ZERO and ONE.
Sponsored-by: On-Waves ehf
|
|
Currently the CCCH flag is cleared and the PACCH flag is set when a
multislot upgrade is scheduled for a downlink TBF, even if the MS has
never confirmed in any way that the PACCH really exists. This can
happen if the MS did not receive the DL IMM.ASS. Since the CCCH flags
gets cleared in that case, the IMM.ASSS is never retried and all
subsequent PACKET DOWNLINK ASSIGNMENTS will fail.
This commit delays the update of these flags until the MS has
responded with a corresponding CONTROL ACK.
Sponsored-by: On-Waves ehf
|
|
Currently the old TFI is always used as ID when a
PACKET DOWNLINK ASSIGNMENT is generated. This fails
if the old TBF has not been fully assigned yet. The
MS will then ignore the PDA.
This commit changes write_packet_downlink_assignment to accept
an additional parameter old_tfi_is_valid and uses the new TBF's
TLLI instead of the olf TFI if that parameter is set to false.
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Currently the tbf->first_ts field is accessed directly to get the
first allocated TS when an immediate assigment is generated. While
this is in principle correct (since in that state no other TBF
exists), a more generic function that always returns the current
(first) PACCH TS would hide the details.
Add a function to return the current first PACCH timeslot.
Note that concurrent TBF are not supported yet, which will not
lead to errors yet, since it is only being used after RACH.
Sponsored-by: On-Waves ehf
|
|
Currently tbf->control_ts is used to look up an incoming poll
response. Since that may eventually change, poll timeouts could
theoretically happen in that case.
Store the real poll TS in tbf->poll_ts at all places where
tbf->poll_fn is set. Do not use tbf->control_ts to look up
outstanding polls.
Sponsored-by: On-Waves ehf
|
|
Ticket: OW#????
Sponsored-by: On-Waves ehf
|
|
Currently there are some places where tbf->control_ts != ts is
evaluated to check, whether ts is a control slot.
Replace these expressions by tbf->is_control_ts(ts) which does
the same whitout exposing internal fields.
Sponsored-by: On-Waves ehf
|