aboutsummaryrefslogtreecommitdiffstats
path: root/openbsc/src/gprs/gprs_sndcp.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2010-07-02 16:18:59 +0200
committerHarald Welte <laforge@gnumonks.org>2010-07-02 16:18:59 +0200
commit8b705f2533fe764d0c23926b85cba1a9aeb35a54 (patch)
treeef13abcfb1ba471c719ec10902fe0b9e2f521e51 /openbsc/src/gprs/gprs_sndcp.c
parent18d1452a92d72946bf35ce91e540494aec32bcd3 (diff)
[SGSN] SNDCP: re-set total number of fragment length
Diffstat (limited to 'openbsc/src/gprs/gprs_sndcp.c')
-rw-r--r--openbsc/src/gprs/gprs_sndcp.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/openbsc/src/gprs/gprs_sndcp.c b/openbsc/src/gprs/gprs_sndcp.c
index 4d7deed9d..d3f02b622 100644
--- a/openbsc/src/gprs/gprs_sndcp.c
+++ b/openbsc/src/gprs/gprs_sndcp.c
@@ -138,6 +138,7 @@ static struct defrag_queue_entry *defrag_get_seg(struct gprs_sndcp_entity *sne,
return NULL;
}
+/* Perform actual defragmentation and create an output packet */
static int defrag_segments(struct gprs_sndcp_entity *sne)
{
struct msgb *msg;
@@ -173,6 +174,8 @@ static int defrag_segments(struct gprs_sndcp_entity *sne)
talloc_free(dqe);
}
+ /* FIXME: cancel timer */
+
/* actually send the N-PDU to the SGSN core code, which then
* hands it off to the correct GTP tunnel + GGSN via gtp_data_req() */
return sgsn_rx_sndcp_ud_ind(&sne->ra_id, sne->lle->llme->tlli,
@@ -220,8 +223,11 @@ static int defrag_input(struct gprs_sndcp_entity *sne, struct msgb *msg, uint8_t
}
/* store the currently de-fragmented PDU number */
sne->defrag.npdu = npdu_num;
+
+ /* Re-set fragmentation state */
sne->defrag.no_more = sne->defrag.highest_seg = sne->defrag.seg_have = 0;
- /* FIXME: Start timer */
+ sne->defrag.tot_len = 0;
+ /* FIXME: (re)start timer */
}
if (sne->defrag.npdu != npdu_num) {