rds: tcp: send handshake ping-probe from passive endpoint
authorSowmini Varadhan <sowmini.varadhan@oracle.com>
Wed, 21 Jun 2017 20:40:12 +0000 (13:40 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 22 Jun 2017 15:34:04 +0000 (11:34 -0400)
commit69b92b5b7419846e2a0d61a097b11b17a089e046
treedc21d77a3eed374fb5be93efaa1c0b2ebd2d81b9
parent6d659237657c64e9e2a930865da4c777239b678e
rds: tcp: send handshake ping-probe from passive endpoint

The RDS handshake ping probe added by commit 5916e2c1554f
("RDS: TCP: Enable multipath RDS for TCP") is sent from rds_sendmsg()
before the first data packet is sent to a peer. If the conversation
is not bidirectional  (i.e., one side is always passive and never
invokes rds_sendmsg()) and the passive side restarts its rds_tcp
module, a new HS ping probe needs to be sent, so that the number
of paths can be re-established.

This patch achieves that by sending a HS ping probe from
rds_tcp_accept_one() when c_npaths is 0 (i.e., we have not done
a handshake probe with this peer yet).

Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Tested-by: Jenny Xu <jenny.x.xu@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/rds/rds.h
net/rds/recv.c
net/rds/send.c
net/rds/tcp_listen.c