From: Chris Leech <christopher.leech@intel.com>
To: linux-kernel@vger.kernel.org, netdev@vger.kernel.org
Subject: [PATCH 2/7] [I/OAT] Only offload copies for TCP when there will be a context switch
Date: Tue, 15 Aug 2006 17:53:39 -0700 [thread overview]
Message-ID: <20060816005339.8634.23929.stgit@gitlost.site> (raw)
In-Reply-To: <20060816005337.8634.70033.stgit@gitlost.site>
The performance wins come with having the DMA copy engine doing the copies
in parallel with the context switch. If there is enough data ready on the
socket at recv time just use a regular copy.
Signed-off-by: Chris Leech <christopher.leech@intel.com>
---
net/ipv4/tcp.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c
index 934396b..36f6b64 100644
--- a/net/ipv4/tcp.c
+++ b/net/ipv4/tcp.c
@@ -1105,6 +1105,8 @@ int tcp_recvmsg(struct kiocb *iocb, stru
long timeo;
struct task_struct *user_recv = NULL;
int copied_early = 0;
+ int available = 0;
+ struct sk_buff *skb;
lock_sock(sk);
@@ -1131,7 +1133,11 @@ int tcp_recvmsg(struct kiocb *iocb, stru
#ifdef CONFIG_NET_DMA
tp->ucopy.dma_chan = NULL;
preempt_disable();
- if ((len > sysctl_tcp_dma_copybreak) && !(flags & MSG_PEEK) &&
+ skb = skb_peek_tail(&sk->sk_receive_queue);
+ if (skb)
+ available = TCP_SKB_CB(skb)->seq + skb->len - (*seq);
+ if ((available < target) &&
+ (len > sysctl_tcp_dma_copybreak) && !(flags & MSG_PEEK) &&
!sysctl_tcp_low_latency && __get_cpu_var(softnet_data).net_dma) {
preempt_enable_no_resched();
tp->ucopy.pinned_list = dma_pin_iovec_pages(msg->msg_iov, len);
@@ -1140,7 +1146,6 @@ int tcp_recvmsg(struct kiocb *iocb, stru
#endif
do {
- struct sk_buff *skb;
u32 offset;
/* Are we at urgent data? Stop if we have read anything or have SIGURG pending. */
@@ -1428,7 +1433,6 @@ skip_copy:
#ifdef CONFIG_NET_DMA
if (tp->ucopy.dma_chan) {
- struct sk_buff *skb;
dma_cookie_t done, used;
dma_async_memcpy_issue_pending(tp->ucopy.dma_chan);
next prev parent reply other threads:[~2006-08-16 0:45 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-16 0:53 [PATCH 1/7] [I/OAT] Push pending transactions to hardware more frequently Chris Leech
2006-08-16 0:53 ` Chris Leech [this message]
2006-08-16 0:53 ` [PATCH 3/7] [I/OAT] Don't offload copies for loopback traffic Chris Leech
2006-08-18 18:17 ` Andi Kleen
2006-08-18 21:23 ` David Miller
2006-08-16 0:53 ` [PATCH 4/7] [I/OAT] Remove the wrappers around read(bwl)/write(bwl) in ioatdma Chris Leech
2006-08-18 0:05 ` I/OAT configuration ? Ravinandan Arakali
2006-08-16 0:53 ` [PATCH 5/7] [I/OAT] Remove the use of writeq from the ioatdma driver Chris Leech
2006-08-16 0:53 ` [PATCH 6/7] [I/OAT] Add documentation for the tcp_dma_copybreak sysctl Chris Leech
2006-08-16 0:53 ` [PATCH 7/7] [I/OAT] Add entries to MAINTAINERS for the DMA memcpy subsystem and ioatdma Chris Leech
2006-08-16 4:52 ` Randy.Dunlap
2006-08-16 16:57 ` [PATCH 7/7 v2] " Chris Leech
2006-08-18 7:11 ` [PATCH 1/7] [I/OAT] Push pending transactions to hardware more frequently Pavel Machek
2006-08-18 15:11 ` Chris Leech
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060816005339.8634.23929.stgit@gitlost.site \
--to=christopher.leech@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).