Age | Commit message (Collapse) | Author | Files | Lines |
|
Mark some of the tbf manipulation that is burried in the data
sending routine.. that it should be moved around.
|
|
|
|
The list belongs to the BTS. This makes cleaning this up more easy
and establishes a hierachy of resources that start from the BTS. The
debug_diagram code is now broken.
|
|
The PollController is a friend of the SBAController and is allowed
to access the internal list. The list is hidden from everyone else.
This is done because the calculation of timeout should belong into
the PollController and not into the SBAController.
|
|
Move the code around and then turn it into an object...
|
|
Rely on packet_paging_request returning NULL in case the queue
is empty. We should move the write_packet_paging_request into
a separate file/object as well.
|
|
When a PDCH is disabled all resources should be freed. This is
currently not possible as the PDCH does not know where it belongs
to. On top of that the list (and other resources) should be
properly initialized on construction so that disable() is idempotent
and does not check if it was disabled. During the re-factoring I
noticed that during a sysmobts re-start some resources are not
freed. I left a warning in the code to resolve this issue later.
|
|
Begin to make the BTS a real C++ object with real responsibilities.
The biggest issue will be the pcu_vty.c that might not like C++
at all.
|
|
|
|
This was the last method of gprs_rlcmac_data.cpp to access the
gprs_rlcmac_bts variable.
|
|
|
|
|
|
Similiar to the previous patches
|
|
|
|
|
|
There really shouldn't be too many callers of state. Instead the
tbf should dispatch depending on the internal state. For now
introduce state_is and state_is_not accessor functions so we can
start to see who is using the internal state.
|
|
This is the begin of a long march of turning tbf into a C++ class
and properly hiding the secrets inside this implementation instead
of having it spread across various different files.
|
|
|
|
The timing advance of any TBF is stored when it ends. Whenever a new TBF
with the same TLLI is created (downlink TBF), the stored TA is recalled.
This algorithm assumes that the mobile does not move too fast during
transfer. Also the mobile must start a connection in order to get correct
initial timing advance.
This algorithm does not implement the timing advance procedure as defined
in TS 04.60. To implement the standard timing advance procedure, the BTS
must decode RACH on certain bursts, the mobile is expected to send them.
This requires much more complexity to a transceiver like USRP/UmTRX or
Calypso BTS.
The algorithm was tested at TA >= 8 and works quite well.
|
|
Since we don't know when the IMM.ASS message is sent on it's paging group
on PCH, we will wait for confirm from BTS and start packet flow then.
|
|
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)
|
|
|
|
This is required because uplink assignment (PACCH) is done on a request
by mobile, so the mobile expects that it get this assignment in return.
After that we may assign downlink.
|
|
|
|
Addition to 2b91464862270d72800b6dcc5a521f933fbbd489
|
|
Untested
|
|
In order to do downlink assignment during uplink TBF, the content
resolution must be completed. It is completed when the first Packet
Uplink Ack/Nack message is transmitted to the mobile.
|
|
In order to send control blocks to MS and receive control blocks from MS
(polling), it is required to select one timeslot that the MS must be
able to send and receive. The allocation algorithm must take care of
selecting that slot.
|
|
The new data structure is required to define slot/TFI assigment for MS
with multislot capability.
Now there are two lists for TBFs: uplink and downlink. It is possible to
have different TBFs with same TFI in the same direction, as long as they
are assigned on different timeslots.
See tbf.txt for description.
Note: This does not implement any multislot support. It defines the new
data structure. Currently only the first slot is assigned.
|
|
|
|
The scheduler is triggered at ready-to-send-requesst. It schedules
control blocks, data block and dummy blocks, depending on priority.
It provides upstream ressource by setting USF. The ressources are
assigned, if required. The ressources are dispatched round-robin.
In case of polling, the upstream ressource is given to MS at the
time it will respond to polling request.
|