summaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorSteven J. Magnani <steve@digidescorp.com>2010-03-16 05:22:44 +0000
committerDavid S. Miller <davem@davemloft.net>2010-03-20 14:29:02 -0700
commit73852e8151b7d7a529fbe019ab6d2d0c02d8f3f2 (patch)
tree724151d30c232e38ea947705986cfe60a3359241 /include/linux
parentf5d410f2ea7ba340f11815a56e05b9fa9421c421 (diff)
downloadlinux-stable-73852e8151b7d7a529fbe019ab6d2d0c02d8f3f2.tar.gz
linux-stable-73852e8151b7d7a529fbe019ab6d2d0c02d8f3f2.tar.bz2
linux-stable-73852e8151b7d7a529fbe019ab6d2d0c02d8f3f2.zip
NET_DMA: free skbs periodically
Under NET_DMA, data transfer can grind to a halt when userland issues a large read on a socket with a high RCVLOWAT (i.e., 512 KB for both). This appears to be because the NET_DMA design queues up lots of memcpy operations, but doesn't issue or wait for them (and thus free the associated skbs) until it is time for tcp_recvmesg() to return. The socket hangs when its TCP window goes to zero before enough data is available to satisfy the read. Periodically issue asynchronous memcpy operations, and free skbs for ones that have completed, to prevent sockets from going into zero-window mode. Signed-off-by: Steven J. Magnani <steve@digidescorp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
0 files changed, 0 insertions, 0 deletions