aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/include
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2013-06-21 14:06:18 +0200
committerHarald Welte <laforge@gnumonks.org>2013-06-21 14:06:18 +0200
commitabadd543466a551cd1609aa452ceccf9815fecd6 (patch)
tree384aee29441ed73952a29d6729e51db0bed152d5 /openbsc/include
parent22ce59826a77bf02f10773d16463a3896874c72a (diff)
GPRS LLC: Add non-standard method of sequence number recovery
In some situations (like MS reboot without prior DETACH or SGSN reboot without prior MS detach), the LLC sequence numbers for UI mode could be different on both sides. The LLC spec unfortunately doesn't permit us to send something like a FRMR in this case, but instructs us to silently discard the frame. At that time the remote LLC entity will re-transmit the frame with the same seqeunce number over and over again, which we will drop again and again. The mthod used now will keep track of the last received UI sequence number. If that number is retransmitted for three times in a row, then we accept this sequence number and recover from that point on.
Diffstat (limited to 'openbsc/include')
-rw-r--r--openbsc/include/openbsc/gprs_llc.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/openbsc/include/openbsc/gprs_llc.h b/openbsc/include/openbsc/gprs_llc.h
index e3fc82ef9..4be7b1f18 100644
--- a/openbsc/include/openbsc/gprs_llc.h
+++ b/openbsc/include/openbsc/gprs_llc.h
@@ -126,6 +126,10 @@ struct gprs_llc_lle {
uint16_t vu_send;
uint16_t vu_recv;
+ /* non-standard LLC state */
+ uint16_t vu_recv_last;
+ uint16_t vu_recv_duplicates;
+
/* Overflow Counter for ABM */
uint32_t oc_i_send;
uint32_t oc_i_recv;