From patchwork Fri Jul 28 19:59:15 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Natale Patriciello X-Patchwork-Id: 795063 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="jeXT76vR"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3xK0Ck23SXz9s65 for ; Sat, 29 Jul 2017 06:03:46 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752842AbdG1UAx (ORCPT ); Fri, 28 Jul 2017 16:00:53 -0400 Received: from mail-wm0-f65.google.com ([74.125.82.65]:38120 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752599AbdG1UAr (ORCPT ); Fri, 28 Jul 2017 16:00:47 -0400 Received: by mail-wm0-f65.google.com with SMTP id y206so5542011wmd.5 for ; Fri, 28 Jul 2017 13:00:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=MlEh6z05WmYJEHlcT68Ev5GKXhGxab5bWpT8mPfwP4Y=; b=jeXT76vRBC8XVdyh60cpwFA6RXmbioNKdzcUmyxZXXtZde7XR5E253I1EUfrWnlFX7 E1q4SM/zKb7TeAMwDp6Gn3t/w1omemZvZ+u0jrizMgkjDy/j9TikHg3dUyawqtp2fp1i pUn2LszPYPQAd0AOA+WACHA79WMsDFCINTgvT0goeFtU7dMd7gAg2BNtMAs3TdEsaf16 xsRT6P5pgdqP/Q25/d1RqC/zGIBqhva5kxFvq9mmWlVhAi/7MubV1c4Jnu1exxFxidH9 pdnz94zkKQBu7TA8MDXOT9zeVCCFIDx79hTDZDnO5IdcRv6TzKHJ/ZBpVdJUnk7uV9es 8D9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=MlEh6z05WmYJEHlcT68Ev5GKXhGxab5bWpT8mPfwP4Y=; b=Ahxj0u1zmGUxqvuTl6086TC4Id25RqykirM27+75uMgnMNxZINDCWwTyJXaZCCzj4G gG8TOsMG9/ljsWG/tBAudWoT3uU86QaswJS9a8HEk7dcWmlcGvZZMDdLanczaZ9YDM/y lAktWE9FMZs8DpwUFocF+B8j0Wc8Z75/V7d5KOy6f4EHkbcISUbU2qUoMW/7EhN+yGtr GEgEOd8AeSborsGxTapqzou5knZOo8c7+7VY9b0n5e/OtJYmspEbsCN3r01G18HVFMox JmVm95eVFM/jyzoX9p3FC6FGLz+qK7hqtMdYhaNSUITxSHC7anp4xgZxwkGCDE9SVj6A vfEA== X-Gm-Message-State: AIVw113bCOWqdJ9lXb8FL5Y4sLQ0FNQXd0Vi1kqBz/0VFSfEH7udtjfj X0M78ljNliJPUA== X-Received: by 10.28.27.23 with SMTP id b23mr2125986wmb.108.1501272046523; Fri, 28 Jul 2017 13:00:46 -0700 (PDT) Received: from judith.localdomain (81.184.183.127.dyn.user.ono.com. [81.184.183.127]) by smtp.gmail.com with ESMTPSA id q10sm27399513wrb.3.2017.07.28.13.00.45 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 28 Jul 2017 13:00:46 -0700 (PDT) From: Natale Patriciello To: "David S . Miller" , Alexey Kuznetsov , James Morris , Hideaki YOSHIFUJI , Patrick McHardy Cc: netdev , Ahmed Said , Natale Patriciello , Francesco Zampognaro , Cesare Roseti Subject: [RFC PATCH v1 1/5] tcp: Added callback for timed sender operations Date: Fri, 28 Jul 2017 21:59:15 +0200 Message-Id: <20170728195919.10099-2-natale.patriciello@gmail.com> X-Mailer: git-send-email 2.13.2 In-Reply-To: <20170728195919.10099-1-natale.patriciello@gmail.com> References: <20170728195919.10099-1-natale.patriciello@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Standard TCP is ACK-clocked, or in other words it must wait for ACKs after sending a full window size bytes. However, in some particular cases, a congestion control would like to be able to tell the TCP implementation when it is possible to send segments through a timer. This patch adds the interface (completely optional) between a congestion control and the TCP implementation. Signed-off-by: Natale Patriciello Tested-by: Ahmed Said --- include/net/tcp.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/net/tcp.h b/include/net/tcp.h index be6223c586fa..bf661ccc53a2 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h @@ -939,6 +939,14 @@ struct tcp_congestion_ops { /* get info for inet_diag (optional) */ size_t (*get_info)(struct sock *sk, u32 ext, int *attr, union tcp_cc_info *info); + /* get the expiration time for the send timer (optional) */ + unsigned long (*get_send_timer_exp_time)(struct sock *sk); + /* no data to transmit at the timer expiration (optional) */ + void (*no_data_to_transmit)(struct sock *sk); + /* the send timer is expired (optional) */ + void (*send_timer_expired)(struct sock *sk); + /* the TCP has sent some segments (optional) */ + void (*segment_sent)(struct sock *sk, u32 sent); char name[TCP_CA_NAME_MAX]; struct module *owner;