From 8b705f2533fe764d0c23926b85cba1a9aeb35a54 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Fri, 2 Jul 2010 16:18:59 +0200 Subject: [SGSN] SNDCP: re-set total number of fragment length --- openbsc/src/gprs/gprs_sndcp.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'openbsc/src/gprs/gprs_sndcp.c') 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) { -- cgit v1.2.3