|
@@ -1123,8 +1123,9 @@ int rds_sendmsg(struct socket *sock, struct msghdr *msg, size_t payload_len)
|
|
|
*/
|
|
|
rds_stats_inc(s_send_queued);
|
|
|
|
|
|
- if (!test_bit(RDS_LL_SEND_FULL, &conn->c_flags))
|
|
|
- rds_send_xmit(conn);
|
|
|
+ ret = rds_send_xmit(conn);
|
|
|
+ if (ret == -ENOMEM || ret == -EAGAIN)
|
|
|
+ queue_delayed_work(rds_wq, &conn->c_send_w, 1);
|
|
|
|
|
|
rds_message_put(rm);
|
|
|
return payload_len;
|
|
@@ -1180,8 +1181,9 @@ rds_send_pong(struct rds_connection *conn, __be16 dport)
|
|
|
rds_stats_inc(s_send_queued);
|
|
|
rds_stats_inc(s_send_pong);
|
|
|
|
|
|
- if (!test_bit(RDS_LL_SEND_FULL, &conn->c_flags))
|
|
|
- queue_delayed_work(rds_wq, &conn->c_send_w, 0);
|
|
|
+ ret = rds_send_xmit(conn);
|
|
|
+ if (ret == -ENOMEM || ret == -EAGAIN)
|
|
|
+ queue_delayed_work(rds_wq, &conn->c_send_w, 1);
|
|
|
|
|
|
rds_message_put(rm);
|
|
|
return 0;
|