Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp867334pxu; Mon, 23 Nov 2020 06:13:50 -0800 (PST) X-Google-Smtp-Source: ABdhPJw3GWLF3dDXaRxh0OQJHSBqmeP1nG4PvyKZSQOVSd/B0Cgk8yxI2WrFFgadYrZKC/RGEHkJ X-Received: by 2002:a17:906:d8b3:: with SMTP id qc19mr42442223ejb.222.1606140830610; Mon, 23 Nov 2020 06:13:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1606140830; cv=none; d=google.com; s=arc-20160816; b=fILnDIDTxrln/wi5qnfut0yR2ebfaw2u2uskL7GMua9KkKXHibRsdzvTKOosksLJYR /TUT/Uz3x5BuoA32wERtsVQZsOeVLcyuM3uGzckrG8b989dD6fXyWQRmXfkzlc1Qm/22 WBQbtyqojKEegX6s/ZdYPl1ComSuqYA49zJqZsl0YisC6Ywr8WeRpHtfUian5AjgZqxG XBRvwye/sF+PeUSjRFZDw04/xdvZOIiYgQws7QbLQw96PYxWam4nEzZrIo/Ysn9Qw0ES OnsrQXZ0rL1xe694Y/KRZdmOq4gCXcPlJcmtsWsXvDlFGj2ungr4oW/XklofhfAog+7g WElw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=NU+ZBtS2PuAoVDCaiYjSDmtYV+rq9r8k1b0Hv3NXBJs=; b=iQsS1IgmwSsaCXMBoIFEI4JCV4vb7KC9x0QBlA+u9Eqg2xPKpZfpg4Z724nsmnI1vc i/oOVY8Sbbz6B6roFPs7/WT9VqRpGKq8dPHunudZ0l/raj0diR5SyFA/tUZG5oBrOxdu sh7WYMn5wHT6OwCSfqEf3it3IBHTQ9gCZXjH5/bZh4CTPrRh8fl2xYfsh1NSms2wD43w PZty0Sa4QhZ4Bv72h98gUN+tHoUUgJDxCy0BcbwWAlQ3+Jx+UvMx6uWxvpU20ECX11sU d5tD9kq4EgoZWPg3cQfUwg1cEF/6xosxM44pzhKsSSA+QO/Mm2syHvRhIqTwcPDrPSTo wGlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=LvN2cgYC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i6si6510933ejx.303.2020.11.23.06.13.26; Mon, 23 Nov 2020 06:13:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=LvN2cgYC; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387738AbgKWOL5 (ORCPT + 99 others); Mon, 23 Nov 2020 09:11:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43380 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730039AbgKWOL4 (ORCPT ); Mon, 23 Nov 2020 09:11:56 -0500 Received: from mail-pl1-x643.google.com (mail-pl1-x643.google.com [IPv6:2607:f8b0:4864:20::643]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A4234C0613CF; Mon, 23 Nov 2020 06:11:56 -0800 (PST) Received: by mail-pl1-x643.google.com with SMTP id l1so655026pld.5; Mon, 23 Nov 2020 06:11:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=NU+ZBtS2PuAoVDCaiYjSDmtYV+rq9r8k1b0Hv3NXBJs=; b=LvN2cgYCtq6+Y48nqWXGL7phbvUQEqHQKhNBlq0qiVygA2NutirJ3tuFZs9eQKKAUN QA/PGelSg8ywUnfxQWvfpLiMjDGk9FJb1e5nsE+w5tybK7W++5HP7UUQ67hi3u8NjIC4 hGJpPZmu5LJYV7nnpOA28h+SQ20FUi1pAPDrn90gu3QbsDfGvlYVsdH2BebL9hX2d/mp i76p6nIV2OA/PIiKLJXcEYQmP4o8iIFqK/kWYHPaVtIQexQ+RgzAGsX6rder3PwzcyYQ rwTMAuoW1a1Fv9Mxtv0jQlsvvHYgSykCQPa+7/tL2yBWyUsrh9pcwLeLlqeEzc8qOJW8 PD0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=NU+ZBtS2PuAoVDCaiYjSDmtYV+rq9r8k1b0Hv3NXBJs=; b=IJXfbTNvDgcPjLQr2rY9I4fBKFhWtKlv5S/TJEAZkFq7ZPpuVaGJTz5SbB3s8nK5bs Z0caerUXBIRlxMEyAazsgCKWneiA0xcsPGl+JtXawOkx6YoAwHJdhgcozkOuWwO+u2oO 9vEMyPqdUnuLYqpftflM9z11UtmogohsGGDPZ/RKM9i3DlRm9wLY7pXCvnZxF7WGxsNI fg6Ge9B0wGvlor9QsmwfesMfCT15SWYp1jZ4lRVBWrOgnugjPTgVc2EdWa3407l0R0oD 5JQDssC4SvGKLWDjIJ/7wiUhOVkR2jrnmi69//PbzfKaNDVVaIjICCrQ5ZugcybDD1gA 9kTw== X-Gm-Message-State: AOAM5323fHx7dE7g2vwmIMyFDncweF6GZAORdiiTAbqdZc6jo1DQopGz wkCQ7DU7wdIW/gSzAq16IgiwVwzsfNqeRbfmUPw= X-Received: by 2002:a17:902:be07:b029:da:c5e:81b6 with SMTP id r7-20020a170902be07b02900da0c5e81b6mr3997870pls.43.1606140716201; Mon, 23 Nov 2020 06:11:56 -0800 (PST) MIME-Version: 1.0 References: <3306b4d8-8689-b0e7-3f6d-c3ad873b7093@intel.com> In-Reply-To: From: Magnus Karlsson Date: Mon, 23 Nov 2020 15:11:45 +0100 Message-ID: Subject: Re: [PATCH 1/3] xsk: replace datagram_poll by sock_poll_wait To: Xuan Zhuo Cc: =?UTF-8?B?QmrDtnJuIFTDtnBlbA==?= , Magnus Karlsson , Jonathan Lemon , "David S. Miller" , Jakub Kicinski , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , Network Development , bpf , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Nov 18, 2020 at 9:26 AM Xuan Zhuo wrote: > > datagram_poll will judge the current socket status (EPOLLIN, EPOLLOUT) > based on the traditional socket information (eg: sk_wmem_alloc), but > this does not apply to xsk. So this patch uses sock_poll_wait instead of > datagram_poll, and the mask is calculated by xsk_poll. > > Signed-off-by: Xuan Zhuo > --- > net/xdp/xsk.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/net/xdp/xsk.c b/net/xdp/xsk.c > index cfbec39..7f0353e 100644 > --- a/net/xdp/xsk.c > +++ b/net/xdp/xsk.c > @@ -477,11 +477,13 @@ static int xsk_sendmsg(struct socket *sock, struct msghdr *m, size_t total_len) > static __poll_t xsk_poll(struct file *file, struct socket *sock, > struct poll_table_struct *wait) > { > - __poll_t mask = datagram_poll(file, sock, wait); > + __poll_t mask = 0; It would indeed be nice to not execute a number of tests in datagram_poll that will never be triggered. It will speed up things for sure. But we need to make sure that removing those flags that datagram_poll sets do not have any bad effects in the code above this. But let us tentatively keep this patch for the next version of the patch set. Just need to figure out how to solve your problem in a nice way first. See discussion in patch 0/3. > struct sock *sk = sock->sk; > struct xdp_sock *xs = xdp_sk(sk); > struct xsk_buff_pool *pool; > > + sock_poll_wait(file, sock, wait); > + > if (unlikely(!xsk_is_bound(xs))) > return mask; > > -- > 1.8.3.1 >