From: Sowmini Varadhan Date: Wed, 16 Nov 2016 21:29:48 +0000 (-0800) Subject: RDS: TCP: set RDS_FLAG_RETRANSMITTED in cp_retrans list X-Git-Tag: v4.10-rc1~202^2~235^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=315ca6d98ed3fd7abe235637c28dd2f9f0a77795;p=platform%2Fkernel%2Flinux-exynos.git RDS: TCP: set RDS_FLAG_RETRANSMITTED in cp_retrans list As noted in rds_recv_incoming() sequence numbers on data packets can decreas for the failover case, and the Rx path is equipped to recover from this, if the RDS_FLAG_RETRANSMITTED is set on the rds header of an incoming message with a suspect sequence number. The RDS_FLAG_RETRANSMITTED is predicated on the RDS_FLAG_RETRANSMITTED flag in the rds_message, so make sure the flag is set on messages queued for retransmission. Signed-off-by: Sowmini Varadhan Acked-by: Santosh Shilimkar Signed-off-by: David S. Miller --- diff --git a/net/rds/tcp_send.c b/net/rds/tcp_send.c index 89d09b4..dcf4742 100644 --- a/net/rds/tcp_send.c +++ b/net/rds/tcp_send.c @@ -100,6 +100,9 @@ int rds_tcp_xmit(struct rds_connection *conn, struct rds_message *rm, set_bit(RDS_MSG_HAS_ACK_SEQ, &rm->m_flags); tc->t_last_expected_una = rm->m_ack_seq + 1; + if (test_bit(RDS_MSG_RETRANSMITTED, &rm->m_flags)) + rm->m_inc.i_hdr.h_flags |= RDS_FLAG_RETRANSMITTED; + rdsdebug("rm %p tcp nxt %u ack_seq %llu\n", rm, rds_tcp_snd_nxt(tc), (unsigned long long)rm->m_ack_seq);