[PATCH net-next 3/3] RDS-TCP: Set up MSG_MORE and MSG_SENDPAGE_NOTLAST as appropriate in rds_tcp_xmit
For the same reasons as 2f53384424 and 35f9c09fe9, rds_tcp_xmit may have multiple pages to send, so use the MSG_MORE and MSG_SENDPAGE_NOTLAST as hints to tcp_sendpage() Signed-off-by: Sowmini Varadhan--- net/rds/tcp_send.c |8 +++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/net/rds/tcp_send.c b/net/rds/tcp_send.c index 53b17ca..5f3e3fa 100644 --- a/net/rds/tcp_send.c +++ b/net/rds/tcp_send.c @@ -83,6 +83,7 @@ int rds_tcp_xmit(struct rds_connection *conn, struct rds_message *rm, struct rds_tcp_connection *tc = conn->c_transport_data; int done = 0; int ret = 0; + int more; if (hdr_off == 0) { /* @@ -116,12 +117,15 @@ int rds_tcp_xmit(struct rds_connection *conn, struct rds_message *rm, goto out; } + more = (rm->data.op_nents > 1 ? (MSG_MORE | MSG_SENDPAGE_NOTLAST) : 0); while (sg < rm->data.op_nents) { + int flags = (MSG_DONTWAIT | MSG_NOSIGNAL | more); + ret = tc->t_sock->ops->sendpage(tc->t_sock, sg_page(>data.op_sg[sg]), rm->data.op_sg[sg].offset + off, rm->data.op_sg[sg].length - off, - MSG_DONTWAIT|MSG_NOSIGNAL); + flags); rdsdebug("tcp sendpage %p:%u:%u ret %d\n", (void *)sg_page(>data.op_sg[sg]), rm->data.op_sg[sg].offset + off, rm->data.op_sg[sg].length - off, ret); @@ -134,6 +138,8 @@ int rds_tcp_xmit(struct rds_connection *conn, struct rds_message *rm, off = 0; sg++; } + if (sg == rm->data.op_nents - 1) + more = 0; } out: -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH net-next 3/3] RDS-TCP: Set up MSG_MORE and MSG_SENDPAGE_NOTLAST as appropriate in rds_tcp_xmit
Hello. On 09/30/2015 04:45 PM, Sowmini Varadhan wrote: For the same reasons as 2f53384424 and 35f9c09fe9, rds_tcp_xmit may have multiple pages to send, so use the MSG_MORE and MSG_SENDPAGE_NOTLAST as hints to tcp_sendpage() Signed-off-by: Sowmini Varadhan--- net/rds/tcp_send.c |8 +++- 1 files changed, 7 insertions(+), 1 deletions(-) diff --git a/net/rds/tcp_send.c b/net/rds/tcp_send.c index 53b17ca..5f3e3fa 100644 --- a/net/rds/tcp_send.c +++ b/net/rds/tcp_send.c [...] @@ -116,12 +117,15 @@ int rds_tcp_xmit(struct rds_connection *conn, struct rds_message *rm, goto out; } + more = (rm->data.op_nents > 1 ? (MSG_MORE | MSG_SENDPAGE_NOTLAST) : 0); No need for either inner or outer parens. while (sg < rm->data.op_nents) { + int flags = (MSG_DONTWAIT | MSG_NOSIGNAL | more); Parens not needed as well. [...] MBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH net-next 3/3] RDS-TCP: Set up MSG_MORE and MSG_SENDPAGE_NOTLAST as appropriate in rds_tcp_xmit
On (09/30/15 08:56), santosh shilimkar wrote: > Your checkpatch.pl should have complained about commit > reference in the change-log. You might want to fix that > for consistency. It didnt. But ok, I'll fix this nit as well. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH net-next 3/3] RDS-TCP: Set up MSG_MORE and MSG_SENDPAGE_NOTLAST as appropriate in rds_tcp_xmit
On 9/30/2015 6:45 AM, Sowmini Varadhan wrote: For the same reasons as 2f53384424 and 35f9c09fe9, rds_tcp_xmit may have multiple pages to send, so use the MSG_MORE and MSG_SENDPAGE_NOTLAST as hints to tcp_sendpage() Signed-off-by: Sowmini Varadhan--- Your checkpatch.pl should have complained about commit reference in the change-log. You might want to fix that for consistency. Patch itself is fine. Acked-by: Santosh Shilimkar -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html