rx: Don't count unknown packets as missing
authorSimon Wilkinson <sxw@your-file-system.com>
Mon, 11 Oct 2010 18:08:00 +0000 (14:08 -0400)
committerJeffrey Altman <jaltman@openafs.org>
Thu, 14 Oct 2010 03:03:55 +0000 (20:03 -0700)
Just because a packet is in the transmit queue, don't assume that
the other side has instantly seen it! Currently, if we receive an
ACK packet which doesn't include the entire transmit queue, then we
will end backing off, even if we haven't sent the packets.

Restrict this behaviour to packets which are implicitly acked (or
otherwise) by the sender.

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

src/rx/rx.c

index 082c2b8..8a4bd33 100644 (file)
@@ -4171,8 +4171,10 @@ rxi_ReceiveAckPacket(struct rx_call *call, struct rx_packet *np,
                missing = 1;
            }
        } else {
-           tp->flags &= ~RX_PKTFLAG_ACKED;
-           missing = 1;
+           if (tp->flags & RX_PKTFLAG_ACKED) {
+               tp->flags &= ~RX_PKTFLAG_ACKED;
+               missing = 1;
+           }
        }
 
         /*