From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757654Ab3FCOAG (ORCPT ); Mon, 3 Jun 2013 10:00:06 -0400 Received: from mga14.intel.com ([143.182.124.37]:31234 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754306Ab3FCOAD (ORCPT ); Mon, 3 Jun 2013 10:00:03 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.87,793,1363158000"; d="scan'208";a="311567485" Message-ID: <51ACA15C.4060101@linux.intel.com> Date: Mon, 03 Jun 2013 16:59:56 +0300 From: Eliezer Tamir User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130509 Thunderbird/17.0.6 MIME-Version: 1.0 To: Eric Dumazet CC: David Miller , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Jesse Brandeburg , Don Skidmore , e1000-devel@lists.sourceforge.net, Willem de Bruijn , Ben Hutchings , Andi Kleen , HPA , Eilon Greenstien , Or Gerlitz , Alex Rosenbaum , Eliezer Tamir Subject: Re: [PATCH v8 net-next 5/7] net: simple poll/select low latency socket poll References: <20130603080107.18273.34279.stgit@ladj378.jer.intel.com> <20130603080200.18273.52073.stgit@ladj378.jer.intel.com> <1370265324.24311.136.camel@edumazet-glaptop> In-Reply-To: <1370265324.24311.136.camel@edumazet-glaptop> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 03/06/2013 16:15, Eric Dumazet wrote: > On Mon, 2013-06-03 at 11:02 +0300, Eliezer Tamir wrote: >> sock = file->private_data; >> - return sock->ops->poll(file, sock, wait); >> + >> + poll_result = sock->ops->poll(file, sock, wait); >> + >> + if (!(poll_result & (POLLRDNORM | POLLERR | POLLRDHUP | POLLHUP)) && >> + sk_valid_ll(sock->sk) && sk_poll_ll(sock->sk, 1)) >> + poll_result = sock->ops->poll(file, sock, NULL); >> + >> + return poll_result; >> } >> >> static int sock_mmap(struct file *file, struct vm_area_struct *vma) >> > > > In fact, for TCP, POLLOUT event being ready can also be triggered by > incoming messages, as the ACK might allow the user application to push > more data in the write queue. > > And you might check wait->_key to avoid testing flags that user is not > interested into. yes, comparing to _key is more correct. In any case this needs to be completely rewritten for support for working well with a large number of sockets. -Eliezer