Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753822AbdCPScl (ORCPT ); Thu, 16 Mar 2017 14:32:41 -0400 Received: from mail-pg0-f67.google.com ([74.125.83.67]:34085 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753082AbdCPScj (ORCPT ); Thu, 16 Mar 2017 14:32:39 -0400 Subject: [net-next PATCH 0/5] Add busy poll support for epoll under certain circumstances From: Alexander Duyck To: netdev@vger.kernel.org, linux-kernel@vger.kernel.org Cc: sridhar.samudrala@intel.com, edumazet@google.com, davem@davemloft.net Date: Thu, 16 Mar 2017 11:32:31 -0700 Message-ID: <20170316183142.15806.38824.stgit@localhost.localdomain> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2187 Lines: 48 This patch series is meant to add busy polling support to epoll when all of the sockets on a given epoll are either local or are being sourced by the same NAPI ID. In order to support this the first two patches clean up a few issues we found with the NAPI ID tracking and infrastructure. In the third patch we introduce SO_INCOMING_NAPI_ID so that applications have a means of trying to sort their incoming sockets to identify which requests should be routed where in order to keep the epoll listener aligned to a given Rx queue without having to rely on IRQ pinning. Finally the last two patches refactor the existing busy poll infrastructure to make it so that we can call it without necessarily needing a socket, and enable the bits needed to support epoll when all of the sockets on the epoll either share the same NAPI ID, or simply are reporting no NAPI ID. --- Sridhar Samudrala (5): net: Do not record sender_cpu as napi_id in socket receive paths net: Call sk_mark_napi_id() in the ACK receive path net: Introduce SO_INCOMING_NAPI_ID net: Commonize busy polling code to focus on napi_id instead of socket epoll: Add busy poll support to epoll with socket fds. arch/alpha/include/uapi/asm/socket.h | 2 + arch/avr32/include/uapi/asm/socket.h | 2 + arch/frv/include/uapi/asm/socket.h | 2 + arch/ia64/include/uapi/asm/socket.h | 2 + arch/m32r/include/uapi/asm/socket.h | 2 + arch/mips/include/uapi/asm/socket.h | 2 + arch/mn10300/include/uapi/asm/socket.h | 2 + arch/parisc/include/uapi/asm/socket.h | 2 + arch/powerpc/include/uapi/asm/socket.h | 2 + arch/s390/include/uapi/asm/socket.h | 2 + arch/sparc/include/uapi/asm/socket.h | 2 + arch/xtensa/include/uapi/asm/socket.h | 2 + fs/eventpoll.c | 115 ++++++++++++++++++++++++++++++++ include/net/busy_poll.h | 14 +++- include/uapi/asm-generic/socket.h | 2 + net/core/dev.c | 16 ++-- net/core/sock.c | 22 ++++++ net/ipv4/tcp_ipv4.c | 1 18 files changed, 183 insertions(+), 11 deletions(-) --