patch-2.4.27 linux-2.4.27/net/sctp/tsnmap.c
Next file: linux-2.4.27/net/sctp/ulpevent.c
Previous file: linux-2.4.27/net/sctp/transport.c
Back to the patch index
Back to the overall index
- Lines: 58
- Date:
2004-08-07 16:26:07.112447777 -0700
- Orig file:
linux-2.4.26/net/sctp/tsnmap.c
- Orig date:
2004-04-14 06:05:41.000000000 -0700
diff -urN linux-2.4.26/net/sctp/tsnmap.c linux-2.4.27/net/sctp/tsnmap.c
@@ -1,7 +1,7 @@
/* SCTP kernel reference Implementation
+ * (C) Copyright IBM Corp. 2001, 2004
* Copyright (c) 1999-2000 Cisco, Inc.
* Copyright (c) 1999-2001 Motorola, Inc.
- * Copyright (c) 2001-2003 International Business Machines, Corp.
* Copyright (c) 2001 Intel Corp.
*
* This file is part of the SCTP kernel reference Implementation
@@ -36,6 +36,7 @@
* La Monte H.P. Yarroll <piggy@acm.org>
* Jon Grimm <jgrimm@us.ibm.com>
* Karl Knutson <karl@athena.chicago.il.us>
+ * Sridhar Samudrala <sri@us.ibm.com>
*
* Any bugs reported given to us we will try to fix... any fixes shared will
* be incorporated into the next SCTP release.
@@ -253,6 +254,40 @@
return ended;
}
+/* Mark this and any lower TSN as seen. */
+void sctp_tsnmap_skip(struct sctp_tsnmap *map, __u32 tsn)
+{
+ __s32 gap;
+
+ /* Vacuously mark any TSN which precedes the map base or
+ * exceeds the end of the map.
+ */
+ if (TSN_lt(tsn, map->base_tsn))
+ return;
+ if (!TSN_lt(tsn, map->base_tsn + map->len + map->len))
+ return;
+
+ /* Bump the max. */
+ if (TSN_lt(map->max_tsn_seen, tsn))
+ map->max_tsn_seen = tsn;
+
+ /* Assert: TSN is in range. */
+ gap = tsn - map->base_tsn + 1;
+
+ /* Mark the TSNs as received. */
+ if (gap <= map->len)
+ memset(map->tsn_map, 0x01, gap);
+ else {
+ memset(map->tsn_map, 0x01, map->len);
+ memset(map->overflow_map, 0x01, (gap - map->len));
+ }
+
+ /* Go fixup any internal TSN mapping variables including
+ * cumulative_tsn_ack_point.
+ */
+ sctp_tsnmap_update(map);
+}
+
/********************************************************************
* 2nd Level Abstractions
********************************************************************/
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)