path mtu don't track nonsequenced packets
authorDerrick Brashear <shadow@dementia.org>
Thu, 10 Jun 2010 15:41:23 +0000 (11:41 -0400)
committerDerrick Brashear <shadow@dementia.org>
Mon, 14 Jun 2010 03:09:50 +0000 (20:09 -0700)
for the purpose of mtu discovery, we need a sequence number to
correlate if a large packet is acked. don't track sequence number
0 packets. a later change adds the mechanics needed for MTU pings

Change-Id: I83d4466115bbd45acdc2777bfbef0ff393dd5a3f
Reviewed-on: http://gerrit.openafs.org/2114
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>

src/rx/rx_packet.c

index 10a77c0..5ec04d2 100644 (file)
@@ -2218,8 +2218,10 @@ rxi_SendPacket(struct rx_call *call, struct rx_connection *conn,
     MUTEX_ENTER(&conn->conn_data_lock);
     p->header.serial = ++conn->serial;
     if (p->length > conn->peer->maxPacketSize) {
-       conn->lastPacketSize = p->length;
-       conn->lastPacketSizeSeq = p->header.seq;
+       if (p->header.seq != 0) {
+           conn->lastPacketSize = p->length;
+           conn->lastPacketSizeSeq = p->header.seq;
+       }
     }
     MUTEX_EXIT(&conn->conn_data_lock);
     /* This is so we can adjust retransmit time-outs better in the face of 
@@ -2372,10 +2374,12 @@ rxi_SendPacketList(struct rx_call *call, struct rx_connection *conn,
     conn->serial += len;
     for (i = 0; i < len; i++) {
        p = list[i];
-       if ((p->length > conn->peer->maxPacketSize) &&
-           (p->length > conn->lastPacketSize)) {
-           conn->lastPacketSize = p->length;
-           conn->lastPacketSizeSeq = p->header.seq;
+       if (p->length > conn->peer->maxPacketSize) {
+           if ((p->header.seq != 0) &&
+               ((i == 0) || (p->length >= conn->lastPacketSize))) {
+               conn->lastPacketSize = p->length;
+               conn->lastPacketSizeSeq = p->header.seq;
+           }
        }
     }
     MUTEX_EXIT(&conn->conn_data_lock);