From owner-freebsd-net@freebsd.org Thu Aug 1 20:06:48 2019 Return-Path: Delivered-To: freebsd-net@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 42FCAC7EE6 for ; Thu, 1 Aug 2019 20:06:48 +0000 (UTC) (envelope-from dkandula@gmail.com) Received: from mail-io1-xd29.google.com (mail-io1-xd29.google.com [IPv6:2607:f8b0:4864:20::d29]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1O1" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4601XR3fnxz4DCG for ; Thu, 1 Aug 2019 20:06:47 +0000 (UTC) (envelope-from dkandula@gmail.com) Received: by mail-io1-xd29.google.com with SMTP id g20so147147127ioc.12 for ; Thu, 01 Aug 2019 13:06:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=rzNvKxTrRZYbbcqRITzMe0L4dvuH0nT5SJoN2JkDSpo=; b=kZoiONMxthA5Qn4H+hY5/ansD9YoUu/pH7hJW9fyzt8Glzzjyit3ymL/iVFZJsoiKA gD5TUNe1Y4DhHK9BK0x7opgGM6iXSdxhApDZMq8/TYYX5rM6KsnpgvSyB6s6QW10DuwW 3nYxqYM/ekNVMXMFiPzQLZLFcrueFM5gIoi/88vho/tp8QruSEVeAqpTDKOPUvKGPdx2 RjkVog4Zdw3x7jp9g2iytApxz63x7ccZfmF/EFFRmmwtlKLKyUlu0MgAY4LhuwIiG+LR t0HfXcdcPU8Irm71Ff6XvbckgTeiPXSY71h/KQUN0AI16SS9EZa33f83aU/anUHbkuhP KtLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=rzNvKxTrRZYbbcqRITzMe0L4dvuH0nT5SJoN2JkDSpo=; b=LvXW35V9BDxVIgQP0Z6JLkLsPmkUKMdBY56N9N0YLAsL2id+yG7R8T8r4lBOvXi+dZ KjPbPMKKoH0OMGu0Qn5PivgRZaLnpr5kWsupoIl7YTr9koqc5zxiZY47Blonr0w9+Fml 0//yaSXKwQc7yt5nTuKMKq7hCVisrlb8HDewec4qy5xnb3jKyt6oGUEK3Tz+8KmXvadk C3nPYbYaG3axJpyCrgqV+HWpNX9Mi56xm95bLO18MnvMJYaPPjKKLCQ+myzH+ijINO1j B6p4H7D79rZvkuXLAF/zYAJWGMrjLq0TOGTZ5QeL+KnzoSkxod3G+nb6aY67mNsxboUK /hbw== X-Gm-Message-State: APjAAAV1/EZEvPL5XY7ZEXCezNlJqDwpgLeS737bZPKMCVATq97tYV0q rLc+zQNDEfpDxwANBhpLq0tV3H+K/qH7vJOOenBud25X X-Google-Smtp-Source: APXvYqxSyl3WJSIdhkBYrRA6quoLdb2OCY2wzu3n3BdROj7sNUUwc0WsmTRJ+s7TRDuggmt7mIcV2TPqsPsKISt3e50= X-Received: by 2002:a5d:9f07:: with SMTP id q7mr47309953iot.21.1564690005522; Thu, 01 Aug 2019 13:06:45 -0700 (PDT) MIME-Version: 1.0 From: Dheeraj Kandula Date: Thu, 1 Aug 2019 16:06:34 -0400 Message-ID: Subject: sol_upcall in FreeBSD 12 To: freebsd-net@freebsd.org X-Rspamd-Queue-Id: 4601XR3fnxz4DCG X-Spamd-Bar: - Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20161025 header.b=kZoiONMx; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (mx1.freebsd.org: domain of dkandula@gmail.com designates 2607:f8b0:4864:20::d29 as permitted sender) smtp.mailfrom=dkandula@gmail.com X-Spamd-Result: default: False [-1.99 / 15.00]; ARC_NA(0.00)[]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20161025]; FROM_HAS_DN(0.00)[]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; FREEMAIL_FROM(0.00)[gmail.com]; MIME_GOOD(-0.10)[multipart/alternative,text/plain]; PREVIOUSLY_DELIVERED(0.00)[freebsd-net@freebsd.org]; TO_DN_NONE(0.00)[]; IP_SCORE_FREEMAIL(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; IP_SCORE(0.00)[ip: (-4.39), ipnet: 2607:f8b0::/32(-3.09), asn: 15169(-2.46), country: US(-0.05)]; TO_MATCH_ENVRCPT_ALL(0.00)[]; DKIM_TRACE(0.00)[gmail.com:+]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; RCVD_IN_DNSWL_NONE(0.00)[9.2.d.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.0.4.6.8.4.0.b.8.f.7.0.6.2.list.dnswl.org : 127.0.5.0]; NEURAL_HAM_SHORT(-0.99)[-0.987,0]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+,1:+,2:~]; FREEMAIL_ENVFROM(0.00)[gmail.com]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[]; DWL_DNSWL_NONE(0.00)[gmail.com.dwl.dnswl.org : 127.0.5.0] Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 01 Aug 2019 20:06:48 -0000 When going through the code of FreeBSD12, I see that the socket code has undergone significant change. The socket is now either a regular socket or a listen socket. The listen socket has two new fields besides others: sol_upcall and sol_upcallarg My understanding is that this callback will be used to notify the accept socket's consumers when the 3 way handshake is completed and the socket is ready to be accepted. However in soisconnected function, when the accept filter is set, the code still sets the receive socket buffer's upcall. Shouldn't we set the sol_upcall in line 3773 below instead. If not, when should the sol_upcall be set. An example will help clarify the usage. 3762 again: 3763 if ((so->so_options & SO_ACCEPTFILTER) == 0) { 3764 TAILQ_REMOVE(&head->sol_incomp, so, so_list); 3765 head->sol_incqlen--; 3766 TAILQ_INSERT_TAIL(&head->sol_comp, so, so_list); 3767 head->sol_qlen++; 3768 so->so_qstate = SQ_COMP; 3769 SOCK_UNLOCK(so); 3770 solisten_wakeup(head); /* unlocks */ 3771 } else { 3772 SOCKBUF_LOCK(&so->so_rcv); 3773 soupcall_set(so, SO_RCV, 3774 head->sol_accept_filter->accf_callback, 3775 head->sol_accept_filter_arg); 3776 so->so_options &= ~SO_ACCEPTFILTER; 3777 ret = head->sol_accept_filter->accf_callback(so, 3778 head->sol_accept_filter_arg, M_NOWAIT); 3779 if (ret == SU_ISCONNECTED) { 3780 soupcall_clear(so, SO_RCV); 3781 SOCKBUF_UNLOCK(&so->so_rcv); 3782 goto again; 3783 } 3784 SOCKBUF_UNLOCK(&so->so_rcv); 3785 SOCK_UNLOCK(so); 3786 SOLISTEN_UNLOCK(head); 3787 } Dheeraj