From: Chas Williams Date: Mon, 12 Jun 2006 05:27:07 +0000 (+0000) Subject: DEVEL15-recvackpkt-count-acks-and-open-cong-window-20060612 X-Git-Tag: openafs-devel-1_5_3~63 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=78e16a87d75e1ac5628fd7328966a41bf5e278b7;p=packages%2Fo%2Fopenafs.git DEVEL15-recvackpkt-count-acks-and-open-cong-window-20060612 "the non AFS_GLOBAL_RXLOCK_KERNEL version of rxi_ReceiveAckPacket() wasnt counting 'hard' acks and not opening the congestion window. using rx_Readv() directs the incoming packets into the target iov, and sends a hard ack (skipping soft acks). " (cherry picked from commit b365b06d34a9450dc53ad22e8ecb3f6d922af5f4) --- diff --git a/src/rx/rx.c b/src/rx/rx.c index 206b58998..c56f9c097 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -3611,6 +3611,9 @@ rxi_ReceiveAckPacket(register struct rx_call *call, struct rx_packet *np, if (serial && (tp->header.serial == serial || tp->firstSerial == serial)) rxi_ComputePeerNetStats(call, tp, ap, np); + if (!(tp->flags & RX_PKTFLAG_ACKED)) { + newAckCount++; + } #ifdef AFS_GLOBAL_RXLOCK_KERNEL /* XXX Hack. Because we have to release the global rx lock when sending * packets (osi_NetSend) we drop all acks while we're traversing the tq @@ -3621,9 +3624,6 @@ rxi_ReceiveAckPacket(register struct rx_call *call, struct rx_packet *np, * set the ack bits in the packets and have rxi_Start remove the packets * when it's done transmitting. */ - if (!(tp->flags & RX_PKTFLAG_ACKED)) { - newAckCount++; - } if (call->flags & RX_CALL_TQ_BUSY) { #ifdef RX_ENABLE_LOCKS tp->flags |= RX_PKTFLAG_ACKED;