diff options
Diffstat (limited to 'net/rds/recv.c')
-rw-r--r-- | net/rds/recv.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/net/rds/recv.c b/net/rds/recv.c index fdff33c7b432..b426d67f760c 100644 --- a/net/rds/recv.c +++ b/net/rds/recv.c | |||
@@ -195,8 +195,8 @@ void rds_recv_incoming(struct rds_connection *conn, __be32 saddr, __be32 daddr, | |||
195 | * XXX we could spend more on the wire to get more robust failure | 195 | * XXX we could spend more on the wire to get more robust failure |
196 | * detection, arguably worth it to avoid data corruption. | 196 | * detection, arguably worth it to avoid data corruption. |
197 | */ | 197 | */ |
198 | if (be64_to_cpu(inc->i_hdr.h_sequence) < conn->c_next_rx_seq | 198 | if (be64_to_cpu(inc->i_hdr.h_sequence) < conn->c_next_rx_seq && |
199 | && (inc->i_hdr.h_flags & RDS_FLAG_RETRANSMITTED)) { | 199 | (inc->i_hdr.h_flags & RDS_FLAG_RETRANSMITTED)) { |
200 | rds_stats_inc(s_recv_drop_old_seq); | 200 | rds_stats_inc(s_recv_drop_old_seq); |
201 | goto out; | 201 | goto out; |
202 | } | 202 | } |
@@ -432,10 +432,9 @@ int rds_recvmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *msg, | |||
432 | } | 432 | } |
433 | 433 | ||
434 | timeo = wait_event_interruptible_timeout(*sk->sk_sleep, | 434 | timeo = wait_event_interruptible_timeout(*sk->sk_sleep, |
435 | (!list_empty(&rs->rs_notify_queue) | 435 | (!list_empty(&rs->rs_notify_queue) || |
436 | || rs->rs_cong_notify | 436 | rs->rs_cong_notify || |
437 | || rds_next_incoming(rs, &inc)), | 437 | rds_next_incoming(rs, &inc)), timeo); |
438 | timeo); | ||
439 | rdsdebug("recvmsg woke inc %p timeo %ld\n", inc, | 438 | rdsdebug("recvmsg woke inc %p timeo %ld\n", inc, |
440 | timeo); | 439 | timeo); |
441 | if (timeo > 0 || timeo == MAX_SCHEDULE_TIMEOUT) | 440 | if (timeo > 0 || timeo == MAX_SCHEDULE_TIMEOUT) |