Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp1707150rwd; Thu, 25 May 2023 17:17:48 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ69BDhqV0U5eacNQQmtBs6IP6KrsVe2+3HRiIo9z1G3AOYDE0CqOsWH38LZMlASHkJpYfa8 X-Received: by 2002:a17:90a:4f0c:b0:24b:755a:9e99 with SMTP id p12-20020a17090a4f0c00b0024b755a9e99mr440442pjh.31.1685060267897; Thu, 25 May 2023 17:17:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685060267; cv=none; d=google.com; s=arc-20160816; b=0KfoIAtEhCyU4I3nMXycLmepuNHNEtM9wFianeMGd20ZWkpEN+KUGtmjzKrj37SeKH eoDtb85n84EKMshq+jPhii3I/53EmgERWf3YW+cHWGrpa6UGmlYXd0r5jIeQflHSuUqH K4NdYkcXRumRyUo25HqcSml2KpBM2pl05Kh2j5BajhZBvkkA0Nv6JeyXv9c7NWrjvrkm yVj3NKAV/0LLYLCE2utrhVLmZscHBMzVq77gZmqSTPCV4N7ViNHzMPFIWiS202mypZqZ +5j/NZUWj3XCog+71Nfg3IgH86W7f2+ByzSOCdE3ZG+TIV7IoCL8RrDbTqRrNKjZ3kK0 AESg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:mime-version:date :dkim-signature:message-id; bh=cEWHFC+tyHwwjk19PVCSJ1YdwxL9+T4gCvhEfMMt5tI=; b=0zPIkn0wP0fQQlqDqEUZTLAXRcbwRk8/kEj2pujVaAEfe3KIWdNYi1pWe34Rv4vWl/ DC4Swpomuv0bIzJuTWmNuBbLJvQa29wJHdnv7Qc1YkSGEh0aBIGoQGClyb50vSwnP3DM nojUg0ksipYRdxMvsID3S/VbpBt5C+qPi5eaujQN/PIf0SXmkiNQh87NUi/U1Ty4/zih cI59RtS+cbxGQ1WkAVdt6qArTYXBL1TBvlCjBY3EX0FvgDP6wCBBU7Jr+Cwwu4wUeguC L2fk6eYho3GjOFiLjlCJOIf/n8grvY50QqGekBdYoVKY1evpaEVuj4c+BIH5eS5zdsPe ajbQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b="Hbnh35/n"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id t3-20020a17090ad50300b0024e2afd72a3si2614239pju.182.2023.05.25.17.17.35; Thu, 25 May 2023 17:17:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linux.dev header.s=key1 header.b="Hbnh35/n"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linux.dev Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233743AbjEYXnB (ORCPT + 99 others); Thu, 25 May 2023 19:43:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58562 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229590AbjEYXnA (ORCPT ); Thu, 25 May 2023 19:43:00 -0400 Received: from out-34.mta0.migadu.com (out-34.mta0.migadu.com [IPv6:2001:41d0:1004:224b::22]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1EB5312F for ; Thu, 25 May 2023 16:42:59 -0700 (PDT) Message-ID: <7188429a-c380-14c8-57bb-9d05d3ba4e5e@linux.dev> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1685058175; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=cEWHFC+tyHwwjk19PVCSJ1YdwxL9+T4gCvhEfMMt5tI=; b=Hbnh35/ncWfFI5sf/wrM3kOXXVBum+XmbBuy7X03+bbvbaSXBa7oajd2kzFJveRI6famim NP7Jq/gGzFcjlCP59SssUXEh7Bt+liNPx/zQrbjz/lf5TL7QJxgff1KRdDc7irDi9eNgGS x/Ik1cMlCnS9xAjQfxkKx1hWN2dKTsk= Date: Thu, 25 May 2023 16:42:46 -0700 MIME-Version: 1.0 Subject: Re: [PATCH bpf-next 1/2] bpf, net: Support SO_REUSEPORT sockets with bpf_sk_assign Content-Language: en-US To: Lorenz Bauer Cc: Joe Stringer , Martin KaFai Lau , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , David Ahern , Willem de Bruijn , Joe Stringer References: <20230525081923.8596-1-lmb@isovalent.com> X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Martin KaFai Lau In-Reply-To: <20230525081923.8596-1-lmb@isovalent.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Migadu-Flow: FLOW_OUT X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 5/25/23 1:19 AM, Lorenz Bauer wrote: > diff --git a/include/net/inet6_hashtables.h b/include/net/inet6_hashtables.h > index 56f1286583d3..3ba4dc2703da 100644 > --- a/include/net/inet6_hashtables.h > +++ b/include/net/inet6_hashtables.h > @@ -48,6 +48,13 @@ struct sock *__inet6_lookup_established(struct net *net, > const u16 hnum, const int dif, > const int sdif); > > +struct sock *inet6_lookup_reuseport(struct net *net, struct sock *sk, > + struct sk_buff *skb, int doff, > + const struct in6_addr *saddr, > + __be16 sport, > + const struct in6_addr *daddr, > + unsigned short hnum); > + > struct sock *inet6_lookup_listener(struct net *net, > struct inet_hashinfo *hashinfo, > struct sk_buff *skb, int doff, > @@ -85,14 +92,33 @@ static inline struct sock *__inet6_lookup_skb(struct inet_hashinfo *hashinfo, > int iif, int sdif, > bool *refcounted) > { > - struct sock *sk = skb_steal_sock(skb, refcounted); > - > + bool prefetched; > + struct sock *sk = skb_steal_sock(skb, refcounted, &prefetched); > + struct net *net = dev_net(skb_dst(skb)->dev); > + const struct ipv6hdr *ip6h = ipv6_hdr(skb); > + > + if (prefetched) { > + struct sock *reuse_sk = inet6_lookup_reuseport(net, sk, skb, doff, If sk is TCP_ESTABLISHED, I suspect sk->sk_reuseport is 1 (from sk_clone)? If it is, it should still work other than an extra inet6_ehashfn. Does it worth an extra sk->sk_state check or it is overkill? > + &ip6h->saddr, sport, > + &ip6h->daddr, ntohs(dport));