This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "UNNAMED PROJECT".
The branch, jerlbeck/wip has been created
at 068a5b3cf79528f2d05f9a6bd7216aefba2ae95c (commit)
- Log -----------------------------------------------------------------
http://cgit.osmocom.org/osmo-pcu/commit/?id=068a5b3cf79528f2d05f9a6bd7216ae…
commit 068a5b3cf79528f2d05f9a6bd7216aefba2ae95c
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Tue Mar 24 15:03:47 2015 +0100
bssgp: log lifetime WIP
http://cgit.osmocom.org/osmo-pcu/commit/?id=35bf6d836a82ea1976532ce39e37862…
commit 35bf6d836a82ea1976532ce39e37862e60c45b45
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Tue Mar 10 11:03:49 2015 +0100
l1: Add log messages and RACH gsmtap (TODO)
TODO:
- commit message
- split
http://cgit.osmocom.org/osmo-pcu/commit/?id=b4c16cabaebe0fad6266aec222007d0…
commit b4c16cabaebe0fad6266aec222007d0a52ddd1fe
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Fri Mar 20 12:02:42 2015 +0100
tbf: Use DL discard hysteresis (TODO)
Currently single LLC blocks are discarded when the expire. If an IP
packet has been fragmented and is therefore distributed over several
LLC frames, the kept fragments are transmitted and then discarded by
the MS. This can cause massive IP packet loss when there are many
fragmented packets (e.g. when trying 'ping -s1800').
Also TCP recovery algorithms (default, SACK) seem to work better,
if a single block of a few packets is missing instead of many single
packets scattered over the TCP stream.
On the other hand, discarding too many packets might disturb the
congestion handling of TCP. Dropping plain TCP ACKs might also hinder
flow control and congestion avoidance.
This commit adds a hysteresis algorithm to the LLC discard loop. If
an LLC message's age reaches the high water mark, further message's
with an age above the low water mark are discarded, too. This is
aborted, if a GMM, a non-UI, or a small message is detected. In
these cases, that message is kept.
TODO:
- make low and high expiry watermarks configurable
- make the keep threshold configurable
http://cgit.osmocom.org/osmo-pcu/commit/?id=502bd1feea9441938498b9240522043…
commit 502bd1feea9441938498b92405220437dc3a91bf
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Fri Mar 20 14:26:05 2015 +0100
tbf: Poll MS on idle DL TBFs
If an MS wants to open a new UL TBF, it can either use (P)RACH or
request one in a Ack/Nack message for a DL TBF (PACCH). When a TBF
becomes idle (LCC queue is empty but the TBF is kept open), there
aren't any Ack/Nack requests that can be used by the MS to ask for an
UL TBF, therefore it has to use the RACH. This leads to many RACH
requests even for a single HTTP transaction, so it takes some time to
retrieve even a simple web page.
This commit modifies the scheduler to regularly send Ack/Nack
requests on idle DL TBFs. It does so by extending the priority based
scheduling algorithm to have 5 priority levels (highest priority
first):
- Control block is pending
- High age (100%) threshold reached (-> request Ack/Nack)
- Data is waiting or there are pending Nacks
- Low age (200ms) threshold reached (-> request Ack/Nack)
- Pending Nacks that have been resent already
- None of the above (-> send DL dummy control block)
The 'age' refers to the time since since the last control block has
been sent on the TBF. This high age threshold is set to
dl-tbf-idle-time or to 50% of T3190 (whichever is smaller), aiming
for at least a poll (and TBF shutdown) after the TBF has expired and
to safely prevent expiry of T3190. So if dl-tbf-idle-time > 200ms,
there will be a poll every 200ms and a final poll after
dl-tbf-idle-time. On high load, the interval between polls can get
higher, but the 'high age' poll should be in place.
This commit implements the scheduling with respect to GSM 44.060,
9.3.1a ("Delayed release of downlink TBF").
Ticket: #556
Sponsored-by: On-Waves ehf
http://cgit.osmocom.org/osmo-pcu/commit/?id=e25b5b91f60f20f61096bc6199a05b5…
commit e25b5b91f60f20f61096bc6199a05b58ee6c6328
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Thu Mar 19 14:21:33 2015 +0100
tbf: Only create dummy frames if necessary
Currently a lot of LLC dummy commands will be generated while waiting
for an ACK for the DL TBF, even if there are blocks that could be
resent instead.
This patch modifies create_dl_acked_block to only call
create_new_bsn() if there is unsent LLC data or m_window is empty.
If the TBF is in state FLOW, no unsent LLC data is left, but there
are blocks left in m_window, those are resent instead.
Sponsored-by: On-Waves ehf
http://cgit.osmocom.org/osmo-pcu/commit/?id=2cbe80b53e54b1ca832b2b30722ffac…
commit 2cbe80b53e54b1ca832b2b30722ffacfa92f6117
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Wed Mar 25 10:48:52 2015 +0100
tbf/test: Add test for delayed release
This tests checks the implementation of the delayed release of an
downlink TBF.
Ticket: #556
Sponsored-by: On-Waves ehf
http://cgit.osmocom.org/osmo-pcu/commit/?id=3bed5d11d210b599f56a1df3a5339b0…
commit 3bed5d11d210b599f56a1df3a5339b0a74cedcff
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Thu Mar 19 11:22:38 2015 +0100
tbf: Implement delayed release of a downlink TBF
Currently a DL TBF is immediately closed, when the LLC queue is
drained. This will lead to a new DL assignment if data is received
afterwards. In addition, it is not possible to keep the PACCH open
to poll the MS for UL establishment requests there.
GSM 44.060, 9.3.1a suggests to delay the release of an inactive TBF
for some time (max 5s).
This commit mainly changes create_new_bsn() to send LLC dummy
commands as filler if no LLC data is available until keep_open()
returns false. The keep_open() functions returns true unless a
configurable time has passed after the LLC data store drained. By
default, that time is not set which causes keep_open() to always
return false, so that delayed release is effectively disabled.
The following VTY commands are added:
- dl-tbf-idle-time <1-5000> to set the delay in ms
- no dl-tbf-idle-time to disable delayed release
Ticket: #556
Sponsored-by: On-Waves ehf
http://cgit.osmocom.org/osmo-pcu/commit/?id=cbb1e70554a08c7d6d1307d68883bc3…
commit cbb1e70554a08c7d6d1307d68883bc38a92fe4f3
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Wed Mar 25 12:21:55 2015 +0100
tbf: Insert LLC dummy command if no frame is available
If a BSN is going to be created but there is no frame stored in
m_llc, an empty LLC message would be created. This shouldn't happen
currently, but this will be a common case, when delayed TBF release
is implemented.
This commit changes create_new_bsn() to create an LLC dummy
command in that case and to put it into the frame buffer.
Sponsored-by: On-Waves ehf
http://cgit.osmocom.org/osmo-pcu/commit/?id=c4952091223e10d9e99fa035e694265…
commit c4952091223e10d9e99fa035e6942656d233aa16
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Tue Mar 24 11:04:19 2015 +0100
tbf: Use put_frame in append_data if the TBF has no data
Currently if append_data() is used when there is no LLC data in the DL TBF,
it will either call reuse_tbf() which in turn will call put_frame(),
or it will append the LLC message to the queue, even if the queue and
the frame buffer are empty. This only happens with the test case so
far, but this would change when idle DL TBFs are kept open for some
time. It results in empty LLC message being sent to the MS (see log
below).
This commit changes append_data to check for this case and to
eventually use put_frame() instead of appending the LLC data to the
queue.
Addresses:
TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=FLOW) downlink (V(A)==0 ..
V(S)==0)
- Sending new block at BSN 0
-- Chunk with length 0 is less than remaining space (20): add length
header to to delimit LLC frame
Complete DL frame for TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=FLOW)len=0
- Dequeue next LLC for TBF(TFI=0 TLLI=0x00000000 DIR=DL STATE=FLOW)
(len=200)
Sponsored-by: On-Waves ehf
http://cgit.osmocom.org/osmo-pcu/commit/?id=005ee7f8626d4733e8fa01f35891542…
commit 005ee7f8626d4733e8fa01f3589154287ed163ed
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Fri Mar 20 14:53:54 2015 +0100
tbf: Add frames_since_last_poll method
This functions calculates the number of frames that have passed since
the last DL poll (RRBP flag set) has been sent. It returns a value
less than zero (fn_now - fn_sched) if the block has been scheduled but
not yet sent.
If the function is called before the first data block has been sent
it will return -1.
If the function is called before the first DL poll is sent, it
returns the number of frames since the first data block has been
sent.
Sponsored-by: On-Waves ehf
http://cgit.osmocom.org/osmo-pcu/commit/?id=2493c660e9cbede4ac43f2584c0a8e6…
commit 2493c660e9cbede4ac43f2584c0a8e6d8625e1dd
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Wed Mar 25 10:05:34 2015 +0100
tbf/test: Fix fn/block_nr in test_tbf_final_ack
Currently fn and block_nr are not incremented correctly. In addition,
the comments around the sending of blocks are not accurate either.
This commit introduces the send_rlc_block helper function which takes
care of the increments, updates the comments to reflect what is
really happening, and adds assertion to verify at least some aspects
of what is now stated in the comments.
Sponsored-by: On-Waves ehf
http://cgit.osmocom.org/osmo-pcu/commit/?id=a3e4509ff9b6ce2de574eaec7d085fc…
commit a3e4509ff9b6ce2de574eaec7d085fc914cfeaab
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Wed Mar 25 09:11:24 2015 +0100
tbf/test: Put BTS setup and DL TBF creation into helper functions
Put the generic parts of test_tbf_final_ack into helper functions to
reduce the size of the test and to avoid too much code duplication
when creating new tests.
Sponsored-by: On-Waves ehf
http://cgit.osmocom.org/osmo-pcu/commit/?id=eceb910fef8b6ebfba5aa9b13ffbccf…
commit eceb910fef8b6ebfba5aa9b13ffbccfe322d9706
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Fri Mar 20 14:41:50 2015 +0100
tbf: Add helper functions for DL TBFs
Some properties of a DL TBF are explicitly calculated within modules
using DL TBFs.
This commit introduces the methods need_control_ts(), have_data(),
is_control_ts() to hide internals of the DL TBF implementation.
Sponsored-by: On-Waves ehf
http://cgit.osmocom.org/osmo-pcu/commit/?id=95340242ed1089e30b9a3045ea55bc9…
commit 95340242ed1089e30b9a3045ea55bc9068432e0b
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Thu Mar 19 13:22:07 2015 +0100
tbf: Refactor create_dl_acked_block
Turn the big nested if statement into a sequence of smaller ones. The
call to create_new_bsn is moved upwards.
Sponsored-by: On-Waves ehf
http://cgit.osmocom.org/osmo-pcu/commit/?id=612e93e36031ab2d50dd66d148f289b…
commit 612e93e36031ab2d50dd66d148f289b2e3580850
Author: Jacob Erlbeck <jerlbeck(a)sysmocom.de>
Date: Fri Mar 20 13:57:27 2015 +0100
llc: Add put_dummy_frame to create an LLC dummy command
The LLC dummy command is needed for RLC block stuffing, e.g. when a
TBF should be kept open if no LLC data is available. The RLC block
headers do not support stuffing, only the last block of a TBF can be
used partially. LLC dummy commands are discarded by the receiver
immediately, because the have an invalid FCS checksum.
This commit adds the function put_dummy_frame, which puts a LLC dummy
command into the frame buffer. The requested length is given as an
argument, but the real length might be adjusted according to the
specification (see GSM 44.064, 6.4.2.2).
Sponsored-by: On-Waves ehf
-----------------------------------------------------------------------
hooks/post-receive
--
UNNAMED PROJECT