From patchwork Wed May 13 01:34:50 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Dykstra X-Patchwork-Id: 27147 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@bilbo.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from ozlabs.org (ozlabs.org [203.10.76.45]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "mx.ozlabs.org", Issuer "CA Cert Signing Authority" (verified OK)) by bilbo.ozlabs.org (Postfix) with ESMTPS id AD512B7079 for ; Wed, 13 May 2009 11:35:14 +1000 (EST) Received: by ozlabs.org (Postfix) id 9A38DDDFB5; Wed, 13 May 2009 11:35:14 +1000 (EST) Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 312F7DDFB3 for ; Wed, 13 May 2009 11:35:14 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753014AbZEMBfH (ORCPT ); Tue, 12 May 2009 21:35:07 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752307AbZEMBfG (ORCPT ); Tue, 12 May 2009 21:35:06 -0400 Received: from rv-out-0506.google.com ([209.85.198.227]:36249 "EHLO rv-out-0506.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751980AbZEMBfE (ORCPT ); Tue, 12 May 2009 21:35:04 -0400 Received: by rv-out-0506.google.com with SMTP id f9so244994rvb.1 for ; Tue, 12 May 2009 18:35:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:subject:from:to:cc :in-reply-to:references:content-type:date:message-id:mime-version :x-mailer:content-transfer-encoding; bh=/2b6zi3HnvSQGneYG2PF05B37Wn1VYimHU2i8myBVG8=; b=tuRJVQmi9AaArnNVZouDTT9cokkZkW3nmbmJJwcWSni70XgaL3CxgPyA4LFioOXueV MF7Pw1TG/0qilt/npXvH0POf+P3nNzBOAQnshLX0RsX72RZ79JEumdItlFqET0c+3bJh 85jqfY9vYYoLICo9Yc+MG30ldBWQ8SW8nnhUE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=subject:from:to:cc:in-reply-to:references:content-type:date :message-id:mime-version:x-mailer:content-transfer-encoding; b=o/qQftPbu7ydsHeOABv9ixjOOFwJFl+EKPjs2yKP7soFa8Z4wT5+VNgIazyrsC7QGn eAPri6iThfeEd80ucv0q6x2g6/DCalB2VecKG3YLNBj/9UR6FJ3uv6xibpxkGXEkzHLy tl/U82Y50tDoZfUy6tHwXf9FraQ2LKsCiI0EY= Received: by 10.114.57.1 with SMTP id f1mr365712waa.145.1242178504905; Tue, 12 May 2009 18:35:04 -0700 (PDT) Received: from ?192.168.1.111? (216-43-127-213.dsl.mcleodusa.net [216.43.127.213]) by mx.google.com with ESMTPS id l37sm736617waf.40.2009.05.12.18.35.00 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 12 May 2009 18:35:03 -0700 (PDT) Subject: Re: [PATCH] tcp: tcp_prequeue() can use keyed wakeups From: John Dykstra To: Eric Dumazet Cc: "David S. Miller" , Linux Netdev List In-Reply-To: <4A031867.9060806@cosmosbay.com> References: <4A031596.4020904@cosmosbay.com> <4A031867.9060806@cosmosbay.com> Date: Tue, 12 May 2009 20:34:50 -0500 Message-Id: <1242178490.11389.20.camel@merlyn> Mime-Version: 1.0 X-Mailer: Evolution 2.22.3.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Thu, 2009-05-07 at 19:20 +0200, Eric Dumazet wrote: > We can avoid waking up tasks not interested in receive notifications, > using wake_up_interruptible_poll() instead of wake_up_interruptible() Is there any reason why we shouldn't do the same thing on the write side? Compile-tested only. -- John Acked-by: Eric Dumazet --- [PATCH net-next-2.6] tcp: Don't wake up reading threads on write space When TCP frees up write buffer space, avoid waking up tasks that have done a poll() or select() on the same socket specifying read-side events. This is an extension of a read-side patch by Eric Dumazet. Signed-off-by: John Dykstra --- net/core/stream.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/net/core/stream.c b/net/core/stream.c index 8727cea..a37debf 100644 --- a/net/core/stream.c +++ b/net/core/stream.c @@ -33,7 +33,8 @@ void sk_stream_write_space(struct sock *sk) clear_bit(SOCK_NOSPACE, &sock->flags); if (sk->sk_sleep && waitqueue_active(sk->sk_sleep)) - wake_up_interruptible(sk->sk_sleep); + wake_up_interruptible_poll(sk->sk_sleep, POLLOUT | + POLLWRNORM | POLLWRBAND); if (sock->fasync_list && !(sk->sk_shutdown & SEND_SHUTDOWN)) sock_wake_async(sock, SOCK_WAKE_SPACE, POLL_OUT); }