diff options
author | David Howells <dhowells@redhat.com> | 2015-04-01 16:43:26 +0200 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2015-04-01 16:49:26 +0200 |
commit | 382d7974de31ef5e64dceee0d9cada3d3864b767 (patch) | |
tree | 6597f5dc2cd2f324ef466a5d9ce234b81231e13a /net/rxrpc/ar-output.c | |
parent | RxRPC: Don't call skb_add_data() if there's no data to copy (diff) | |
download | linux-382d7974de31ef5e64dceee0d9cada3d3864b767.tar.xz linux-382d7974de31ef5e64dceee0d9cada3d3864b767.zip |
RxRPC: Use iov_iter_count() in rxrpc_send_data() instead of the len argument
Use iov_iter_count() in rxrpc_send_data() to get the remaining data length
instead of using the len argument as the len argument is now redundant.
Signed-off-by: David Howells <dhowells@redhat.com>
Diffstat (limited to 'net/rxrpc/ar-output.c')
-rw-r--r-- | net/rxrpc/ar-output.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/net/rxrpc/ar-output.c b/net/rxrpc/ar-output.c index f48dc1aa4840..de8d2f1b08c5 100644 --- a/net/rxrpc/ar-output.c +++ b/net/rxrpc/ar-output.c @@ -546,8 +546,6 @@ static int rxrpc_send_data(struct kiocb *iocb, call->tx_pending = NULL; copied = 0; - if (len > iov_iter_count(&msg->msg_iter)) - len = iov_iter_count(&msg->msg_iter); do { if (!skb) { size_t size, chunk, max, space; @@ -570,8 +568,8 @@ static int rxrpc_send_data(struct kiocb *iocb, max &= ~(call->conn->size_align - 1UL); chunk = max; - if (chunk > len && !more) - chunk = len; + if (chunk > iov_iter_count(&msg->msg_iter) && !more) + chunk = iov_iter_count(&msg->msg_iter); space = chunk + call->conn->size_align; space &= ~(call->conn->size_align - 1UL); @@ -614,11 +612,11 @@ static int rxrpc_send_data(struct kiocb *iocb, sp = rxrpc_skb(skb); /* append next segment of data to the current buffer */ - if (len > 0) { + if (iov_iter_count(&msg->msg_iter) > 0) { int copy = skb_tailroom(skb); ASSERTCMP(copy, >, 0); - if (copy > len) - copy = len; + if (copy > iov_iter_count(&msg->msg_iter)) + copy = iov_iter_count(&msg->msg_iter); if (copy > sp->remain) copy = sp->remain; @@ -630,8 +628,6 @@ static int rxrpc_send_data(struct kiocb *iocb, sp->remain -= copy; skb->mark += copy; copied += copy; - - len -= copy; } /* check for the far side aborting the call or a network error @@ -640,7 +636,8 @@ static int rxrpc_send_data(struct kiocb *iocb, goto call_aborted; /* add the packet to the send queue if it's now full */ - if (sp->remain <= 0 || (!len && !more)) { + if (sp->remain <= 0 || + (iov_iter_count(&msg->msg_iter) == 0 && !more)) { struct rxrpc_connection *conn = call->conn; uint32_t seq; size_t pad; @@ -670,7 +667,7 @@ static int rxrpc_send_data(struct kiocb *iocb, sp->hdr.serviceId = conn->service_id; sp->hdr.flags = conn->out_clientflag; - if (len == 0 && !more) + if (iov_iter_count(&msg->msg_iter) == 0 && !more) sp->hdr.flags |= RXRPC_LAST_PACKET; else if (CIRC_SPACE(call->acks_head, call->acks_tail, call->acks_winsz) > 1) @@ -686,10 +683,11 @@ static int rxrpc_send_data(struct kiocb *iocb, memcpy(skb->head, &sp->hdr, sizeof(struct rxrpc_header)); - rxrpc_queue_packet(call, skb, !iov_iter_count(&msg->msg_iter) && !more); + rxrpc_queue_packet(call, skb, + iov_iter_count(&msg->msg_iter) == 0 && !more); skb = NULL; } - } while (len > 0); + } while (iov_iter_count(&msg->msg_iter) > 0); success: ret = copied; |