aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2016-09-17 05:49:12 -0400
committerDavid Howells <dhowells@redhat.com>2016-09-17 05:53:21 -0400
commitd01dc4c3c1209e865368d5f8d3b5e08f97326ca9 (patch)
tree8c32fce41fdcf639de475dffac852577a2bc40ab /net
parent78883793f8ac4bb3f97d48db7a8c71d8476bcf98 (diff)
rxrpc: Fix the parsing of soft-ACKs
The soft-ACK parser doesn't increment the pointer into the soft-ACK list, resulting in the first ACK/NACK value being applied to all the relevant packets in the Tx queue. This has the potential to miss retransmissions and cause excessive retransmissions. Fix this by incrementing the pointer. Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'net')
-rw-r--r--net/rxrpc/input.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/rxrpc/input.c b/net/rxrpc/input.c
index f0d9115b9b7e..c1f83d22f9b7 100644
--- a/net/rxrpc/input.c
+++ b/net/rxrpc/input.c
@@ -384,7 +384,7 @@ static void rxrpc_input_soft_acks(struct rxrpc_call *call, u8 *acks,
384 384
385 for (; nr_acks > 0; nr_acks--, seq++) { 385 for (; nr_acks > 0; nr_acks--, seq++) {
386 ix = seq & RXRPC_RXTX_BUFF_MASK; 386 ix = seq & RXRPC_RXTX_BUFF_MASK;
387 switch (*acks) { 387 switch (*acks++) {
388 case RXRPC_ACK_TYPE_ACK: 388 case RXRPC_ACK_TYPE_ACK:
389 call->rxtx_annotations[ix] = RXRPC_TX_ANNO_ACK; 389 call->rxtx_annotations[ix] = RXRPC_TX_ANNO_ACK;
390 break; 390 break;