From patchwork Thu Apr 26 19:58:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905364 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="LCbW1NxH"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7Mk3Nljz9s02 for ; Fri, 27 Apr 2018 06:05:06 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756690AbeDZUFE (ORCPT ); Thu, 26 Apr 2018 16:05:04 -0400 Received: from mail-qt0-f193.google.com ([209.85.216.193]:35000 "EHLO mail-qt0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754568AbeDZT7Y (ORCPT ); Thu, 26 Apr 2018 15:59:24 -0400 Received: by mail-qt0-f193.google.com with SMTP id s2-v6so33192331qti.2; Thu, 26 Apr 2018 12:59:24 -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=1poztdlE6w8+puq4AClTP7WgDLDWE34KFv0fYiu4kF0=; b=LCbW1NxHI3bw+MZT2aJom/3ExmhFd/BeuulROtNeiCFKNh1YuXrb7JFiSBjJViXNIG rTpx4ydx2lqEgUtlcha/RadNX0RRXGfjzxAblbarQnsCNGBnjZEb8Jt8a4jmKBpBIkeP GgTwbRtMquoYMjm8HHPnuUkuuaKWONaOEpgUaiXqtbbe2VK6ChfitCU0oTY58gXoymj+ VgIB3lto+VTRvfuQrkGF5kG9qKt6Aun0PFxjvuDGwceWnXGRKxwmh5d33EQ2FYkKgNok Dk7UYHd0zzT58pBO6WgSr+wbu6GAUi0YJCqOAlpf8VlKguViVTjoi+uGYqAett4uBGbm R2nA== 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=1poztdlE6w8+puq4AClTP7WgDLDWE34KFv0fYiu4kF0=; b=Di9jQLYjlpKvi7fXERkY4yj/2NUkJL1R9CIO2QO08GQzviu45Uq/7DPQPAjbIFGHI4 FPtS1vpaHO0RzCgpdZ7UpnFJu8eD38Y2RdH2GqDBVd13lsrMwLF9uMw6TXisPz43uVqD r2sV0S+DNwc1sm/Si59KnOb/T8U/UbE7b8TnCKVk/2W18Tu31fqik9LI8SYF2zwfhFZ7 LDvpaFHoLYRHMUiCfo4LlrnabqpvvQFNnqISKAxqoq+NDYdD5HXhO5GYJucg8+LkBDAQ klPAbs8jmM+E+Jt6B+Xa3Y4/F0sCO+EyU7pjhr0mU8OYuITOWbaoU62Nsn0kKyXWpca5 vCvg== X-Gm-Message-State: ALQs6tDi1HubGnpJu4gWrza6BFm+V6AtPy3XcrAz38A7gcHIC8lS/7x3 QLU5930b7s4g3Ig5jjUXNsk= X-Google-Smtp-Source: AB8JxZrv++MDaYw+PF6PQlx9cifeffH+DLivdJw2gevS8MKGyyeuBSDOLfyMGX06DSfxNiSIyHTCDg== X-Received: by 2002:ac8:e8a:: with SMTP id v10-v6mr37816115qti.376.1524772763748; Thu, 26 Apr 2018 12:59:23 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id u24sm1086481qku.18.2018.04.26.12.59.21 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:22 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id 9B2E51808B4; Thu, 26 Apr 2018 16:59:18 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 01/13] sctp: remove old and unused SCTP_MIN_PMTU Date: Thu, 26 Apr 2018 16:58:50 -0300 Message-Id: <3959797f9a87225ae154a9d3f81cae4fd10f01a1.1524772453.git.marcelo.leitner@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This value is not used anywhere in the code. In essence it is a duplicate of SCTP_DEFAULT_MINSEGMENT, which is used by the stack. SCTP_MIN_PMTU value makes more sense, but we should not change to it now as it would risk breaking applications. So this patch removes SCTP_MIN_PMTU and adjust the comment above it. Signed-off-by: Marcelo Ricardo Leitner --- include/net/sctp/constants.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/net/sctp/constants.h b/include/net/sctp/constants.h index 20ff237c5eb2ff358589b30bbd89d636e41b2d92..86f034b524d46178e4d26e868be3a2bf87acac4a 100644 --- a/include/net/sctp/constants.h +++ b/include/net/sctp/constants.h @@ -254,11 +254,10 @@ enum { SCTP_ARBITRARY_COOKIE_ECHO_LEN = 200 }; #define SCTP_TSN_MAP_SIZE 4096 /* We will not record more than this many duplicate TSNs between two - * SACKs. The minimum PMTU is 576. Remove all the headers and there - * is enough room for 131 duplicate reports. Round down to the + * SACKs. The minimum PMTU is 512. Remove all the headers and there + * is enough room for 117 duplicate reports. Round down to the * nearest power of 2. */ -enum { SCTP_MIN_PMTU = 576 }; enum { SCTP_MAX_DUP_TSNS = 16 }; enum { SCTP_MAX_GABS = 16 }; From patchwork Thu Apr 26 19:58:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905363 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="J9V6OleB"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7MY61vhz9s02 for ; Fri, 27 Apr 2018 06:04:57 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756467AbeDZUEz (ORCPT ); Thu, 26 Apr 2018 16:04:55 -0400 Received: from mail-qk0-f195.google.com ([209.85.220.195]:45494 "EHLO mail-qk0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755255AbeDZT7Z (ORCPT ); Thu, 26 Apr 2018 15:59:25 -0400 Received: by mail-qk0-f195.google.com with SMTP id x22so8785544qkb.12; Thu, 26 Apr 2018 12:59:25 -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=O/ffotxc4uPTiKs9qqtFREgwdsWYUehi9fC9OGAqY6I=; b=J9V6OleBSypNkqt2Qz9zZQxA8IezicV37q4zdlQKE/Z2kgjcjgccVx6eKjnou78JgF d7GDXA4jj9+dKjIfc1OquHyMDF38CEGSdSzRxQETAF7rj32mgs++gb3U71xdrwV60vhz Eo6zD3SKNR+pXsenKECci5SkdcZnrhFvsm1yM785LEQExp3takMIQOrOiZ2xl4fpMn+S iYRlscL0MLotuh3kcVc1+2hGWYgGqFzudnRwPRMPKBBEsrxHxwF0+umRpywynj46LlG2 5+OeDuw93SLnjNekt22JLn5hiIiYiYqJQ/Pwyt55AUOcf+WzwT3W3jnI8R2IamH0SHQU yJlQ== 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=O/ffotxc4uPTiKs9qqtFREgwdsWYUehi9fC9OGAqY6I=; b=fa1UT5DpQwkrFtUHwOKMU+mHt18ymMIyozUxovqxrsbMLvtNY25jvqV9+rxilwkqzT TYj4UKTmGRchSXNRWYHPghoFj4oykyNtS7OoyVuVL8tEPfkwend0dwZIoc6GtIcF4GvT /+HbWnn796FbxOWxRKg0i3qFJjcg606UyAVFhlKf3tY22rsEbwCQyi63MuU6UiTbDZOI 8kXB1JXrRyVqGzCy5n1j0w1HI0aLHIgG/NF+HKvfVqW6OgmW2baGE5eUgNVdzmS6/NAF HFIZydDPpecvQ8DJhJotDKI9uZzGRUYpAwJl3jziq3UVuRHZOcOIGNTJziUyjoKVWm+0 w1JA== X-Gm-Message-State: ALQs6tBY4siWKc8eZjWs1e5Zzm03XtzFrUpL8LzDlG2ZUspQhzEA/N1i lM+2w3PWYj27/lKSmErzY9KyfdUM X-Google-Smtp-Source: AB8JxZr2bHlXoaYrIGhFTSHpMt5I74/GpiwNPSMMjAWc89cd6RhPdzDcHey3OoNdhNoSHxppzQ9W0Q== X-Received: by 10.55.6.145 with SMTP id 139mr34614335qkg.232.1524772764657; Thu, 26 Apr 2018 12:59:24 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id c186sm16036884qke.33.2018.04.26.12.59.21 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:22 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id A27A4181102; Thu, 26 Apr 2018 16:59:18 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 02/13] sctp: move transport pathmtu calc away of sctp_assoc_add_peer Date: Thu, 26 Apr 2018 16:58:51 -0300 Message-Id: X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org There was only one case that sctp_assoc_add_peer couldn't handle, which is when SPP_PMTUD_DISABLE is set and pathmtu not initialized. So add this situation to sctp_transport_route and reuse what was already in there. Signed-off-by: Marcelo Ricardo Leitner --- net/sctp/associola.c | 9 +-------- net/sctp/transport.c | 8 ++++++-- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/net/sctp/associola.c b/net/sctp/associola.c index a8f3b088fcb2ac82f58b7d6fb8894fe712e2bc0a..b3aa95222bd52113295cb246c503c903bdd5c353 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c @@ -652,15 +652,8 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc, */ peer->param_flags = asoc->param_flags; - sctp_transport_route(peer, NULL, sp); - /* Initialize the pmtu of the transport. */ - if (peer->param_flags & SPP_PMTUD_DISABLE) { - if (asoc->pathmtu) - peer->pathmtu = asoc->pathmtu; - else - peer->pathmtu = SCTP_DEFAULT_MAXSEGMENT; - } + sctp_transport_route(peer, NULL, sp); /* If this is the first transport addr on this association, * initialize the association PMTU to the peer's PMTU. diff --git a/net/sctp/transport.c b/net/sctp/transport.c index 47f82bd794d915188bad037463c2aa14175a55ef..c5fc3aed08a18658448b528b07dbb13900686313 100644 --- a/net/sctp/transport.c +++ b/net/sctp/transport.c @@ -307,11 +307,15 @@ void sctp_transport_route(struct sctp_transport *transport, * association's active path for getsockname(). */ if (asoc && (!asoc->peer.primary_path || - (transport == asoc->peer.active_path))) + (transport == asoc->peer.active_path))) opt->pf->to_sk_saddr(&transport->saddr, asoc->base.sk); - } else + } else if ((transport->param_flags & SPP_PMTUD_DISABLE) && + asoc && asoc->pathmtu) { + transport->pathmtu = asoc->pathmtu; + } else { transport->pathmtu = SCTP_DEFAULT_MAXSEGMENT; + } } /* Hold a reference to a transport. */ From patchwork Thu Apr 26 19:58:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905336 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="RhmDJ8Sj"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7FG3xM1z9s02 for ; Fri, 27 Apr 2018 05:59:30 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755400AbeDZT70 (ORCPT ); Thu, 26 Apr 2018 15:59:26 -0400 Received: from mail-qk0-f195.google.com ([209.85.220.195]:35826 "EHLO mail-qk0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754582AbeDZT7X (ORCPT ); Thu, 26 Apr 2018 15:59:23 -0400 Received: by mail-qk0-f195.google.com with SMTP id b131so22321710qkg.2; Thu, 26 Apr 2018 12:59:23 -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=w2wehnQZXd3lHERoBzkeKNGym538zRSdhSrR7OSpOPM=; b=RhmDJ8SjVhNmlfQcnnjBZTHxNtN6YDYmFNi+dgPmYsgy1FeGmgvWMgJMM+93zWli/A G7x66WLF+t+OEwB68T6SqiOIEgX/rdCNvCeaFhpz6BdyX+wSxzM9LTRe5VJm2SWWTTM4 cD7NBjHbXG/R1lovXtRij1TbWfi4FfsSFyvVYo/uCZNNnU5AzW/VsQoElA0JVM+PxCCj 7NDw4p8wHm06qjZjuh0jtTLkgB6LTW0mP9WPeAMVVRa2qclA57vbnJowV0bNczpH4Ero 3OhuZGb7ad9Trmhm32u2RgRm0wB9y5nZc/SVCm1ikDB8TqGyfHv+ALHlUvAyZCgTacQc qXxg== 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=w2wehnQZXd3lHERoBzkeKNGym538zRSdhSrR7OSpOPM=; b=bfFOY9iyLa+KJ5gvchPq/9gDdWzkEU2p4agbBQOBdezEoZ7ZU7hFpkSj4xI4hD60Gn jtbS/IzKEZvHu5X5CdSzv5z0bicNBaq7YCltqvdaD3P/2yCLIkGqMSkLWZCsoah0LJro aSMUk0+FMtaPfZs1WdsiAkM8aK2kAsDw/wGUmKL+Aqg6oR3jd4q+Jpb4XvuocDTxNnbZ gVKl2Tro0rz3meKhZY2ao4LFIDNIPwuJI+1aAVC51d+G8DtYpmVL3Xo2u+Njy/m5Ohou /hspPkNeBVwtwv5WLZjl6jfEi2nhcT2weJGWcI9AFwcNnPREiMTxJhEHO80mMItHFwDO MGSA== X-Gm-Message-State: ALQs6tB0mz1ur42qOv2Ba2Z038H3dVYcqjGe12oqNpxOeWlYyxn8kb/x QbmmmOPBS+aezU4t6hDYveN54Ydi X-Google-Smtp-Source: AIpwx4+8ZKdRwADsj5zGM0I4uuHIstowD+AbFlTME9ndBHb94bZei4vfWbhNT3KdE3lHU063u8anCQ== X-Received: by 10.55.217.202 with SMTP id q71mr35930819qkl.304.1524772762789; Thu, 26 Apr 2018 12:59:22 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id t125sm5138048qkb.90.2018.04.26.12.59.21 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:22 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id B00A2181105; Thu, 26 Apr 2018 16:59:18 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 03/13] sctp: remove an if() that is always true Date: Thu, 26 Apr 2018 16:58:52 -0300 Message-Id: X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org As noticed by Xin Long, the if() here is always true as PMTU can never be 0. Reported-by: Xin Long Signed-off-by: Marcelo Ricardo Leitner --- net/sctp/associola.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/net/sctp/associola.c b/net/sctp/associola.c index b3aa95222bd52113295cb246c503c903bdd5c353..c5ed09cfa8423b17546e3d45f6d06db03af66384 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c @@ -1397,10 +1397,8 @@ void sctp_assoc_sync_pmtu(struct sctp_association *asoc) pmtu = t->pathmtu; } - if (pmtu) { - asoc->pathmtu = pmtu; - asoc->frag_point = sctp_frag_point(asoc, pmtu); - } + asoc->pathmtu = pmtu; + asoc->frag_point = sctp_frag_point(asoc, pmtu); pr_debug("%s: asoc:%p, pmtu:%d, frag_point:%d\n", __func__, asoc, asoc->pathmtu, asoc->frag_point); From patchwork Thu Apr 26 19:58:53 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905365 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="uXXDJIdp"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7Mp2vQnz9s02 for ; Fri, 27 Apr 2018 06:05:10 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755750AbeDZUFC (ORCPT ); Thu, 26 Apr 2018 16:05:02 -0400 Received: from mail-qk0-f193.google.com ([209.85.220.193]:39111 "EHLO mail-qk0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755252AbeDZT7Z (ORCPT ); Thu, 26 Apr 2018 15:59:25 -0400 Received: by mail-qk0-f193.google.com with SMTP id z75so15614342qkb.6; Thu, 26 Apr 2018 12:59:24 -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=fbcbTY9xUIkmJmkNuYkX/SgqO0z0b+BlCAcihgvt+Bk=; b=uXXDJIdp4EQj46g/9kezPylqcfXg23l3kf/2u1j81NiQ54SWHVPJ1ChWJuX6bggvdo j6NcHSGEY1aUhtI4PVZZuThl5PB5EMj5Hh+XnoMzcL55AonSbA23a1Z9kd1RrEJzz1d9 0i3zBS+rGBrU3gsYGL7MsZF9aJQW60CeM8hvbJ7kvcTaZ2yVN8ST7O6pRsoBHq++wbWH OVxN7jjpCQflnV416HwccG3X6rG1xMYeZakEFls947Ft1ZrZmS9KR9G1Ix5PpvM4mV6O z/kXZ9RCvWIbSUwLbNs2DzFM48//sjaee3vWp4TPbPoQ60WGHogkgzoTMyHGMU4NS8+z iD5Q== 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=fbcbTY9xUIkmJmkNuYkX/SgqO0z0b+BlCAcihgvt+Bk=; b=mLM6Qjligo4AyfzwiweW3/l76qaYPfRyTGTtY52bT4dywRSGeNIKKKpJKw/pdBxgjr V3FWZ83hQ3wJeFRVZYfggQlahasdUpESsVo+izcByH+lQqtBijTEl/H4DEoCwfPYsWmA 5azFkLHdUpE9HoFSNr1SB4dmpGlOcsYb0r2LM+BK9HGlySUOxR51o1WQHxlvRrRl3O3k FcJj6oDhN3grpPszuu4XI61FdTT/9xhhyv79oDD/WFAqSEw4YVqYObGIAo2Y7+Q/t9db cvw0nsM+2RGaN7OtU4uyGxo5qhR4AZI1MtBSLSL//HH/woks+bnCpYrw5YXukcMJyuld ydSQ== X-Gm-Message-State: ALQs6tBko4vSnxTUityAkwjXoVLsH8UkRhZqL4Id3q2Et9MISqlstIqP qJ4T0iAgrksTP1GadZFVM4Q= X-Google-Smtp-Source: AB8JxZot+p6hCnQWeV0C+sTcpSldW9to8F3g2ojkiC4IKVXhdgkvRnMR8zX8zR4P3LUQ5eQaIcIZ0g== X-Received: by 10.55.162.143 with SMTP id l137mr35844472qke.200.1524772764308; Thu, 26 Apr 2018 12:59:24 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id f189sm15963134qkj.31.2018.04.26.12.59.21 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:22 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id C0E14181106; Thu, 26 Apr 2018 16:59:18 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 04/13] sctp: introduce sctp_assoc_set_pmtu Date: Thu, 26 Apr 2018 16:58:53 -0300 Message-Id: <681866125037624e9bf6df47bcd6286e0936d129.1524772453.git.marcelo.leitner@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org All changes to asoc PMTU should now go through this wrapper, making it easier to track them and to do other actions upon it. Signed-off-by: Marcelo Ricardo Leitner --- include/net/sctp/structs.h | 1 + net/sctp/associola.c | 21 +++++++++++++-------- net/sctp/socket.c | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 05594b248e5277790cca6542c3680510739ce18b..c5e244be8f1ea99118cac9ada0cfce871cb15d3f 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h @@ -2097,6 +2097,7 @@ int sctp_assoc_update(struct sctp_association *old, __u32 sctp_association_get_next_tsn(struct sctp_association *); +void sctp_assoc_set_pmtu(struct sctp_association *asoc, __u32 pmtu); void sctp_assoc_sync_pmtu(struct sctp_association *asoc); void sctp_assoc_rwnd_increase(struct sctp_association *, unsigned int); void sctp_assoc_rwnd_decrease(struct sctp_association *, unsigned int); diff --git a/net/sctp/associola.c b/net/sctp/associola.c index c5ed09cfa8423b17546e3d45f6d06db03af66384..85b362324084e9ba139a39293a527ef06824e55b 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c @@ -660,13 +660,9 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc, * If not and the current association PMTU is higher than the new * peer's PMTU, reset the association PMTU to the new peer's PMTU. */ - if (asoc->pathmtu) - asoc->pathmtu = min_t(int, peer->pathmtu, asoc->pathmtu); - else - asoc->pathmtu = peer->pathmtu; - - pr_debug("%s: association:%p PMTU set to %d\n", __func__, asoc, - asoc->pathmtu); + sctp_assoc_set_pmtu(asoc, asoc->pathmtu ? + min_t(int, peer->pathmtu, asoc->pathmtu) : + peer->pathmtu); peer->pmtu_pending = 0; @@ -1374,6 +1370,15 @@ sctp_assoc_choose_alter_transport(struct sctp_association *asoc, } } +void sctp_assoc_set_pmtu(struct sctp_association *asoc, __u32 pmtu) +{ + if (asoc->pathmtu != pmtu) + asoc->pathmtu = pmtu; + + pr_debug("%s: asoc:%p, pmtu:%d, frag_point:%d\n", __func__, asoc, + asoc->pathmtu, asoc->frag_point); +} + /* Update the association's pmtu and frag_point by going through all the * transports. This routine is called when a transport's PMTU has changed. */ @@ -1397,7 +1402,7 @@ void sctp_assoc_sync_pmtu(struct sctp_association *asoc) pmtu = t->pathmtu; } - asoc->pathmtu = pmtu; + sctp_assoc_set_pmtu(asoc, pmtu); asoc->frag_point = sctp_frag_point(asoc, pmtu); pr_debug("%s: asoc:%p, pmtu:%d, frag_point:%d\n", __func__, asoc, diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 80835ac26d2c3ce6559f75aaaa0b315fb77d9adf..eeec81d5c485b86076f4e3a4f5dc01fc28fbb91b 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -2539,7 +2539,7 @@ static int sctp_apply_peer_addr_params(struct sctp_paddrparams *params, trans->pathmtu = params->spp_pathmtu; sctp_assoc_sync_pmtu(asoc); } else if (asoc) { - asoc->pathmtu = params->spp_pathmtu; + sctp_assoc_set_pmtu(asoc, params->spp_pathmtu); } else { sp->pathmtu = params->spp_pathmtu; } From patchwork Thu Apr 26 19:58:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905352 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="kBN4UgiC"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7Kg6T2bz9s02 for ; Fri, 27 Apr 2018 06:03:19 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755703AbeDZT7c (ORCPT ); Thu, 26 Apr 2018 15:59:32 -0400 Received: from mail-qt0-f195.google.com ([209.85.216.195]:35007 "EHLO mail-qt0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754582AbeDZT71 (ORCPT ); Thu, 26 Apr 2018 15:59:27 -0400 Received: by mail-qt0-f195.google.com with SMTP id s2-v6so33192495qti.2; Thu, 26 Apr 2018 12:59:26 -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=3szBGDMSZJigYCg64kAIeV+pjatMwi8gZMvW1UHHqcg=; b=kBN4UgiC/p2nxUlvs0NflluDpgUqKWgeiUnnabo/EcZHMXCGkkgoX014nlmgLGDRXo SYAV5uENmEn8U5sbUqXxwKfrf1t9Gd3nF92NiTwXV5BoDIUHGCVCTBjUmOFFusM3y7l7 O+GduJxdYv0QET3SdIjzirUYl9w/KhWi6eoSQaOpnH+7II69RvXZX8wVRr1tHD38+H2E hrMxK24h4Nzr4jUZ0y/Kwl4SvOvrqmGGFOnDUQuV74ZvJYfa3F9MKIOjR330Itww5w0K +UtzPQi18BTNfdUtMkZz3LxBuah2kqm/mDbxGZ5TLsKH8Cy1Wzr+GtiVQtMuulWPkjdP AXYw== 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=3szBGDMSZJigYCg64kAIeV+pjatMwi8gZMvW1UHHqcg=; b=HEFfxnLLLGG1lGWpq6tPonG11rww/+RjWn82yURzPcJ+70IQO2poH0LkPZLgPQZvf9 hfa6aS26LteKvt+jRNR1wwvYgIAzOxgeZdldl5xGgO0ycDG/clsIYyr08OAnREQ4dZ6d 93orJld1RpFcYqb0y3lDKhjw/jyucLy28ZNz4rF4L/uP76gBW02KG2anaK9mmm3P1MPW ocWSKSVXb4dPSW4nR13rAVjnRPCXR/SGRrdt3fgcoc+OQY6SO9e4xdCXeTrV7EG3zsr+ fINWV/kfNKDq3Wn6UXBhBR1NIlT+UR7Fyfm1PZsPSIuSyAUQfCzrudDcl65BOjggipxy lfBw== X-Gm-Message-State: ALQs6tBrgY2l4XnORpcWSZqj5wzpWnkPowg6AGdpYlSiVgt2VVIV9Gs2 K7jgTsxDYbcxUx1DvIQRDkSpmJoo X-Google-Smtp-Source: AIpwx4/L3TbNLTmUa9bfCME8OZ/kTv+BhDI/XK3bxJXJ1p+k3IS8XtQxgagrOlEMCDJUAIQdwBPptA== X-Received: by 2002:ac8:3109:: with SMTP id g9-v6mr37649622qtb.399.1524772766145; Thu, 26 Apr 2018 12:59:26 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id a20sm16023119qkb.17.2018.04.26.12.59.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:25 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id D4DB0181115; Thu, 26 Apr 2018 16:59:18 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 05/13] sctp: introduce sctp_mtu_payload Date: Thu, 26 Apr 2018 16:58:54 -0300 Message-Id: <54cf97d9fb948489ca0dedb5087cc2a0c9233c72.1524772453.git.marcelo.leitner@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When given a MTU, this function calculates how much payload we can carry on it. Without a MTU, it calculates the amount of header overhead we have. So that when we have extra overhead, like the one added for IP options on SELinux patches, it is easier to handle it. Signed-off-by: Marcelo Ricardo Leitner --- include/net/sctp/sctp.h | 19 +++++++++++++++++++ net/sctp/output.c | 25 ++++++++++--------------- net/sctp/socket.c | 7 ++----- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 28b996d6349072fb031de91e10115b688d89b42d..0b98e4683f108670c65a0a7aceaf9a736d54bf29 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h @@ -607,6 +607,25 @@ static inline struct dst_entry *sctp_transport_dst_check(struct sctp_transport * return t->dst; } +/* Calculate max payload size given a MTU, or the total overhead if + * given MTU is zero + */ +static inline __u32 sctp_mtu_payload(const struct sctp_sock *sp, + __u32 mtu, __u32 extra) +{ + __u32 overhead = sizeof(struct sctphdr) + extra; + + if (sp) + overhead += sp->pf->af->net_header_len; + else + overhead += sizeof(struct ipv6hdr); + + if (WARN_ON_ONCE(mtu && mtu <= overhead)) + mtu = overhead; + + return mtu ? mtu - overhead : overhead; +} + static inline bool sctp_transport_pmtu_check(struct sctp_transport *t) { __u32 pmtu = max_t(size_t, SCTP_TRUNC4(dst_mtu(t->dst)), diff --git a/net/sctp/output.c b/net/sctp/output.c index 690d8557bb7bfe20a0a209b6c937c85c764a3bd0..bf4226c3cc1de79f2041d55a68ea53f4fd600b25 100644 --- a/net/sctp/output.c +++ b/net/sctp/output.c @@ -90,8 +90,8 @@ void sctp_packet_config(struct sctp_packet *packet, __u32 vtag, { struct sctp_transport *tp = packet->transport; struct sctp_association *asoc = tp->asoc; + struct sctp_sock *sp = NULL; struct sock *sk; - size_t overhead = sizeof(struct ipv6hdr) + sizeof(struct sctphdr); pr_debug("%s: packet:%p vtag:0x%x\n", __func__, packet, vtag); packet->vtag = vtag; @@ -102,25 +102,20 @@ void sctp_packet_config(struct sctp_packet *packet, __u32 vtag, /* set packet max_size with pathmtu, then calculate overhead */ packet->max_size = tp->pathmtu; + if (asoc) { - struct sctp_sock *sp = sctp_sk(asoc->base.sk); - struct sctp_af *af = sp->pf->af; - - overhead = af->net_header_len + - af->ip_options_len(asoc->base.sk); - overhead += sizeof(struct sctphdr); - packet->overhead = overhead; - packet->size = overhead; - } else { - packet->overhead = overhead; - packet->size = overhead; - return; + sk = asoc->base.sk; + sp = sctp_sk(sk); } + packet->overhead = sctp_mtu_payload(sp, 0, 0); + packet->size = packet->overhead; + + if (!asoc) + return; /* update dst or transport pathmtu if in need */ - sk = asoc->base.sk; if (!sctp_transport_dst_check(tp)) { - sctp_transport_route(tp, NULL, sctp_sk(sk)); + sctp_transport_route(tp, NULL, sp); if (asoc->param_flags & SPP_PMTUD_ENABLE) sctp_assoc_sync_pmtu(asoc); } else if (!sctp_transport_pmtu_check(tp)) { diff --git a/net/sctp/socket.c b/net/sctp/socket.c index eeec81d5c485b86076f4e3a4f5dc01fc28fbb91b..b9d14f57146b8e551c28379e379158231fb40ae7 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -3234,11 +3234,8 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned if (val) { int min_len, max_len; - min_len = SCTP_DEFAULT_MINSEGMENT - af->net_header_len; - min_len -= af->ip_options_len(sk); - min_len -= sizeof(struct sctphdr) + - sizeof(struct sctp_data_chunk); - + min_len = sctp_mtu_payload(sp, SCTP_DEFAULT_MINSEGMENT, + sizeof(struct sctp_data_chunk)); max_len = SCTP_MAX_CHUNK_LEN - sizeof(struct sctp_data_chunk); if (val < min_len || val > max_len) From patchwork Thu Apr 26 19:58:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905338 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="A+XsDH9m"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7FQ6ClJz9s02 for ; Fri, 27 Apr 2018 05:59:38 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755774AbeDZT7e (ORCPT ); Thu, 26 Apr 2018 15:59:34 -0400 Received: from mail-qt0-f196.google.com ([209.85.216.196]:45951 "EHLO mail-qt0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755422AbeDZT71 (ORCPT ); Thu, 26 Apr 2018 15:59:27 -0400 Received: by mail-qt0-f196.google.com with SMTP id j42-v6so5304601qtj.12; Thu, 26 Apr 2018 12:59:27 -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=yFclKj7ZRLPyDXJxiXcBavwd8P13naX+rgXp5w6QQfY=; b=A+XsDH9mUQLC3Rh5jrhRKZIKTHRwk/9ZzdBxolmaxCKg/FZVB4D37lZhLiUbn8QKaI m9vhBHetEVQUXTIc5/DKVSblsP9L+urXAAS+FVwOuK13JlYC0dIRexcseT6bE1kWJrk3 j3qgyzc55M1NP9DNEw55T251/YGU6R3n7oQzfT3P9lBkFk0sA4ZE5lK4Um9X0EZD1666 qv4spR/gQIc8OxrudTb6TQI7YV02CmeMEo3yLa92+wGo4py+TlkdUHnfZXWIw0an12Kd alNPcVt45YPLmsjIc+Y9hDXnBl9B4AYuzN8oH+zGMoqeds7H89ePBLG7KfhuRjqQco0l kXZQ== 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=yFclKj7ZRLPyDXJxiXcBavwd8P13naX+rgXp5w6QQfY=; b=aHvZ9D+tR/70GH5GkcyQpDYII2R6KoYGwMtIACFKFHzB1MMaWoVcczpVV7sk0eViu1 FqH1c3VpCMe1ECInkTqH0nn6LyrSrKIwEmL9f0TkjxQREqjjrHJM24JhYwO4CfasYhG8 FemlcC4MOA17JkWJHpiYhGzfaH7fFz5Q1bnVW1vnJ0m7asf0qwzVtVRJyx3EYufsrIcN /nyE04pNHjuIVbtmouCEYZU7QWicTGKJLOFoCkp5jNhumr5Dk1oi5lpuwWXiQD/oUJzc 4J80/i5Q0JfkOF7kwWlHb0WcR702G3xoixcXLev/SxfBIx4CpRw29r0LfYGsBN6JKrPq aVUg== X-Gm-Message-State: ALQs6tD403S+nPG4YUcGcZ24iaIzlc7sN/Cww+yGfWZhDMvEJd56AwN+ raybxDrbTMwDYZuLeEutk/4= X-Google-Smtp-Source: AB8JxZpPlDawXxxwqobL1LdkDa8tN2fq4NI1Z6PaEFsmtiDIMP9gZi7ggW1VIelQfrUDUrwI5eptwg== X-Received: by 2002:ac8:65d7:: with SMTP id t23-v6mr10160922qto.183.1524772766490; Thu, 26 Apr 2018 12:59:26 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id d21sm5880784qkc.30.2018.04.26.12.59.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:25 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id CA202181110; Thu, 26 Apr 2018 16:59:18 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 06/13] sctp: introduce sctp_assoc_update_frag_point Date: Thu, 26 Apr 2018 16:58:55 -0300 Message-Id: X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org and avoid the open-coded versions of it. Now sctp_datamsg_from_user can just re-use asoc->frag_point as it will always be updated. Signed-off-by: Marcelo Ricardo Leitner --- include/net/sctp/sctp.h | 20 -------------------- include/net/sctp/structs.h | 1 + net/sctp/associola.c | 24 +++++++++++++++++------- net/sctp/chunk.c | 12 +----------- net/sctp/socket.c | 2 +- 5 files changed, 20 insertions(+), 39 deletions(-) diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 0b98e4683f108670c65a0a7aceaf9a736d54bf29..350c65620a4eb35ba2af0d59fef70e2b8b461e44 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h @@ -428,26 +428,6 @@ static inline int sctp_list_single_entry(struct list_head *head) return (head->next != head) && (head->next == head->prev); } -/* Break down data chunks at this point. */ -static inline int sctp_frag_point(const struct sctp_association *asoc, int pmtu) -{ - struct sctp_sock *sp = sctp_sk(asoc->base.sk); - struct sctp_af *af = sp->pf->af; - int frag = pmtu; - - frag -= af->ip_options_len(asoc->base.sk); - frag -= af->net_header_len; - frag -= sizeof(struct sctphdr) + sctp_datachk_len(&asoc->stream); - - if (asoc->user_frag) - frag = min_t(int, frag, asoc->user_frag); - - frag = SCTP_TRUNC4(min_t(int, frag, SCTP_MAX_CHUNK_LEN - - sctp_datachk_len(&asoc->stream))); - - return frag; -} - static inline void sctp_assoc_pending_pmtu(struct sctp_association *asoc) { sctp_assoc_sync_pmtu(asoc); diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index c5e244be8f1ea99118cac9ada0cfce871cb15d3f..ebf809eed33add7905ddd13abf98712a833ae0e0 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h @@ -2097,6 +2097,7 @@ int sctp_assoc_update(struct sctp_association *old, __u32 sctp_association_get_next_tsn(struct sctp_association *); +void sctp_assoc_update_frag_point(struct sctp_association *asoc); void sctp_assoc_set_pmtu(struct sctp_association *asoc, __u32 pmtu); void sctp_assoc_sync_pmtu(struct sctp_association *asoc); void sctp_assoc_rwnd_increase(struct sctp_association *, unsigned int); diff --git a/net/sctp/associola.c b/net/sctp/associola.c index 85b362324084e9ba139a39293a527ef06824e55b..a29025418b96015dd0240013b0a7c636194da67b 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c @@ -666,8 +666,6 @@ struct sctp_transport *sctp_assoc_add_peer(struct sctp_association *asoc, peer->pmtu_pending = 0; - asoc->frag_point = sctp_frag_point(asoc, asoc->pathmtu); - /* The asoc->peer.port might not be meaningful yet, but * initialize the packet structure anyway. */ @@ -1370,10 +1368,26 @@ sctp_assoc_choose_alter_transport(struct sctp_association *asoc, } } +void sctp_assoc_update_frag_point(struct sctp_association *asoc) +{ + int frag = sctp_mtu_payload(sctp_sk(asoc->base.sk), asoc->pathmtu, + sctp_datachk_len(&asoc->stream)); + + if (asoc->user_frag) + frag = min_t(int, frag, asoc->user_frag); + + frag = min_t(int, frag, SCTP_MAX_CHUNK_LEN - + sctp_datachk_len(&asoc->stream)); + + asoc->frag_point = SCTP_TRUNC4(frag); +} + void sctp_assoc_set_pmtu(struct sctp_association *asoc, __u32 pmtu) { - if (asoc->pathmtu != pmtu) + if (asoc->pathmtu != pmtu) { asoc->pathmtu = pmtu; + sctp_assoc_update_frag_point(asoc); + } pr_debug("%s: asoc:%p, pmtu:%d, frag_point:%d\n", __func__, asoc, asoc->pathmtu, asoc->frag_point); @@ -1403,10 +1417,6 @@ void sctp_assoc_sync_pmtu(struct sctp_association *asoc) } sctp_assoc_set_pmtu(asoc, pmtu); - asoc->frag_point = sctp_frag_point(asoc, pmtu); - - pr_debug("%s: asoc:%p, pmtu:%d, frag_point:%d\n", __func__, asoc, - asoc->pathmtu, asoc->frag_point); } /* Should we send a SACK to update our peer? */ diff --git a/net/sctp/chunk.c b/net/sctp/chunk.c index be296d633e951c8df322d560150973b5b2bdce5b..79daa98208c391c780440144d69bc7be875c3476 100644 --- a/net/sctp/chunk.c +++ b/net/sctp/chunk.c @@ -172,8 +172,6 @@ struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc, struct list_head *pos, *temp; struct sctp_chunk *chunk; struct sctp_datamsg *msg; - struct sctp_sock *sp; - struct sctp_af *af; int err; msg = sctp_datamsg_new(GFP_KERNEL); @@ -192,12 +190,7 @@ struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc, /* This is the biggest possible DATA chunk that can fit into * the packet */ - sp = sctp_sk(asoc->base.sk); - af = sp->pf->af; - max_data = asoc->pathmtu - af->net_header_len - - sizeof(struct sctphdr) - sctp_datachk_len(&asoc->stream) - - af->ip_options_len(asoc->base.sk); - max_data = SCTP_TRUNC4(max_data); + max_data = asoc->frag_point; /* If the the peer requested that we authenticate DATA chunks * we need to account for bundling of the AUTH chunks along with @@ -222,9 +215,6 @@ struct sctp_datamsg *sctp_datamsg_from_user(struct sctp_association *asoc, } } - /* Check what's our max considering the above */ - max_data = min_t(size_t, max_data, asoc->frag_point); - /* Set first_len and then account for possible bundles on first frag */ first_len = max_data; diff --git a/net/sctp/socket.c b/net/sctp/socket.c index b9d14f57146b8e551c28379e379158231fb40ae7..21bf457be3ea321457107256c12ccb93e1fbab06 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -3251,7 +3251,7 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned sctp_datachk_len(&asoc->stream); } asoc->user_frag = val; - asoc->frag_point = sctp_frag_point(asoc, asoc->pathmtu); + sctp_assoc_update_frag_point(asoc); } else { if (params.assoc_id && sctp_style(sk, UDP)) return -EINVAL; From patchwork Thu Apr 26 19:58:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905361 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="HBJS3Vta"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7MD3FHCz9s02 for ; Fri, 27 Apr 2018 06:04:40 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756783AbeDZUEi (ORCPT ); Thu, 26 Apr 2018 16:04:38 -0400 Received: from mail-qt0-f195.google.com ([209.85.216.195]:39358 "EHLO mail-qt0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755465AbeDZT73 (ORCPT ); Thu, 26 Apr 2018 15:59:29 -0400 Received: by mail-qt0-f195.google.com with SMTP id f1-v6so16014887qtj.6; Thu, 26 Apr 2018 12:59:28 -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=1bCR6aoosmET1RsHagUkSYqiXqxl6Y1GcI72vJ1c16Q=; b=HBJS3Vta2U+hyed3Fm3/xDWcWTkiCF7e2wk7+IUiSCyVH4VMf0g6fL1U7eiTfypgh5 ddENP7SO/DLKUDNdRNR57uF4NBawV/9W9NNENYh9Eoz8XutAsUVRR0z10WDsi7E79Q5N nj1QPg5lgRjCl0n4pXK4lSJd9uHRu516o9zzHn6Up2UsFmcWV2se2ZsQ9Br3G2mRbOhe c9s/eySkoaR0C95ovTA/Bw6bC5/AYzlN62JxUBlTe8n969HAiPUbTvqkGWnqBZ7D4iA4 S9A0k6hGfw7gGgkC/FOxJ+zJpuRsGdc5OCuafds6w6U4aQLW+0iWI2JSUgWcH63JJrco zXkQ== 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=1bCR6aoosmET1RsHagUkSYqiXqxl6Y1GcI72vJ1c16Q=; b=dSoYCUzZtOmruiny+4Ci+D3sJbC+nY8Uc9zaNmNCuaLAR/DDFkD7dSIaSZQvNsXeu7 HKgLpGAI97MUd0zNj0NrIX2pIr5hrdSuxgw8SPXkMs/RyCGs0vaaq/Bepbj0gTfSUldN BCsMDYc3z0mA9NstOvf1PgqDUHFhGgtVMTlbTEa5hmYPwkYdNlRKGxTMRc3uIU/6PMDj rAruXfRnw5bfnMqtgb5+NrS5TKaFkYW1F4+qMwa1OS+HzyXFZtALcoT+S9uKYaL+hee8 mPPquCJLlcSVj7+yGIMJTCg+29qXPAIb+lnZI+WGh8huIfM/jMfDfPjQu5uum/54SlIB 307g== X-Gm-Message-State: ALQs6tAZQ5XHimxBs2s0t7WeK/n48n5LWE9ejGNYZncBZKDBbb+Plek7 KuyJE9Vs1eixwLkyu0S0urZ66L16 X-Google-Smtp-Source: AB8JxZooV4QnfmyxmorvSDdgBEMqV8rsxXocj+2POmSI9XhQuL6t0GjLwsJgNpRB2to40mVhHoN99Q== X-Received: by 10.12.189.166 with SMTP id n38mr14068978qvg.219.1524772767813; Thu, 26 Apr 2018 12:59:27 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id o189sm15955800qkf.48.2018.04.26.12.59.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:25 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id DECBD181113; Thu, 26 Apr 2018 16:59:18 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 07/13] sctp: remove sctp_assoc_pending_pmtu Date: Thu, 26 Apr 2018 16:58:56 -0300 Message-Id: <9b74ba9efb97c65bb6f670c51953c6e92e50eed1.1524772453.git.marcelo.leitner@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org No need for this helper. Signed-off-by: Marcelo Ricardo Leitner --- include/net/sctp/sctp.h | 6 ------ net/sctp/socket.c | 6 ++++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 350c65620a4eb35ba2af0d59fef70e2b8b461e44..e327acad8e7d0710e30f32d0829116593c1171cf 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h @@ -428,12 +428,6 @@ static inline int sctp_list_single_entry(struct list_head *head) return (head->next != head) && (head->next == head->prev); } -static inline void sctp_assoc_pending_pmtu(struct sctp_association *asoc) -{ - sctp_assoc_sync_pmtu(asoc); - asoc->pmtu_pending = 0; -} - static inline bool sctp_chunk_pending(const struct sctp_chunk *chunk) { return !list_empty(&chunk->list); diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 21bf457be3ea321457107256c12ccb93e1fbab06..a93b60a28cc5fff0ebe299905fb31cb37de43d88 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -1918,8 +1918,10 @@ static int sctp_sendmsg_to_asoc(struct sctp_association *asoc, goto err; } - if (asoc->pmtu_pending) - sctp_assoc_pending_pmtu(asoc); + if (asoc->pmtu_pending) { + sctp_assoc_sync_pmtu(asoc); + asoc->pmtu_pending = 0; + } if (sctp_wspace(asoc) < msg_len) sctp_prsctp_prune(asoc, sinfo, msg_len - sctp_wspace(asoc)); From patchwork Thu Apr 26 19:58:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905362 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="GfW+CX9T"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7MP3Qzrz9s0w for ; Fri, 27 Apr 2018 06:04:49 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754576AbeDZUEs (ORCPT ); Thu, 26 Apr 2018 16:04:48 -0400 Received: from mail-qt0-f194.google.com ([209.85.216.194]:36753 "EHLO mail-qt0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755454AbeDZT72 (ORCPT ); Thu, 26 Apr 2018 15:59:28 -0400 Received: by mail-qt0-f194.google.com with SMTP id q6-v6so3613367qtn.3; Thu, 26 Apr 2018 12:59:27 -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=4YHRygq1IHuBkGLu+UAAqQU88+xWHYOJi8yIfKDhi/I=; b=GfW+CX9TnQMB5m41c2OpQfT9soL2ZL0efhlVHh5Mm5GXrwITYnxxJkAOT64Zi7enPf fmhUyRA6ueeXGMz2yItYnOYl+uZG5NUpmfJLjAanndvlA+x19C9MDrfBMHYxjGg6+o7h SDMgW/Rl01Rmj0sgjEz3Mzfa2A/fRZ5cLxjiUlLoh3xH06cj+EIsJXlQAc4GrqIevaUG UM/AneTEHhQcux8OjqKVuDgyHujcvm7WDXJWywkFvWaSZMlXgRKl2fnYvfZ15JEbyS0h hoTzBwHuKm/czYXOSGsAIeYf45Acfa3sNGYEPuK/hhlMXETWGHv2Pb7uxPLrLm19Iw16 6r7w== 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=4YHRygq1IHuBkGLu+UAAqQU88+xWHYOJi8yIfKDhi/I=; b=JipHgDwGZZ/+dhqIwEcVk8cFEb0Z1CEyelS5Ys55h/TQINi/Af1YQMs8VM8T+iNkTa 21+KSfN25V7T4PFD+8AHw4Z2rPV+2VreCBK6ZooQM9Nr8QodWOBOFNL/UaIYHoZGfbZ9 px9/WyheabWqpLjJ7UauSyhLAJ9l96M92Ta4giZXbgsli8zPoPEkqZ2Ju8LSWfwyUI8s kG0x/yicY/PdfBomWM26ef38Pt4l6dBppue3rTq4BFjFk6l9nGFe7/MIMQk2UDX+32Tp nkes8LBgXRik5cSiVQfizERLFgjdJEwKCGe4t5LFgiE8qiCtBCHQN/qhD780dWBWcJxH /ZqQ== X-Gm-Message-State: ALQs6tBDiSIYIiioUzEwN5uyscaJZCi2r0wssTBD2wq0/f7P2s549pyc CcvggWESJ8RXkIkbZnryLbg= X-Google-Smtp-Source: AB8JxZrF9/uTO75UgvzSUJ55g9+2SW91FBZcYqRH/Q9bxEIBE2MiC4opldTKhl1BNaX29I/W3617wQ== X-Received: by 10.12.139.85 with SMTP id d21mr14038912qvc.164.1524772767440; Thu, 26 Apr 2018 12:59:27 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id 44-v6sm17940363qtq.59.2018.04.26.12.59.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:25 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id E8D6018114A; Thu, 26 Apr 2018 16:59:18 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 08/13] sctp: introduce sctp_dst_mtu Date: Thu, 26 Apr 2018 16:58:57 -0300 Message-Id: X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Which makes sure that the MTU respects the minimum value of SCTP_DEFAULT_MINSEGMENT and that it is correctly aligned. Signed-off-by: Marcelo Ricardo Leitner --- include/net/sctp/sctp.h | 9 +++++++-- net/sctp/associola.c | 6 ++---- net/sctp/transport.c | 6 +++--- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index e327acad8e7d0710e30f32d0829116593c1171cf..4965cbfa7d92c0f60a76dd6e03571f78209dda5a 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h @@ -600,10 +600,15 @@ static inline __u32 sctp_mtu_payload(const struct sctp_sock *sp, return mtu ? mtu - overhead : overhead; } +static inline __u32 sctp_dst_mtu(const struct dst_entry *dst) +{ + return SCTP_TRUNC4(max_t(__u32, dst_mtu(dst), + SCTP_DEFAULT_MINSEGMENT)); +} + static inline bool sctp_transport_pmtu_check(struct sctp_transport *t) { - __u32 pmtu = max_t(size_t, SCTP_TRUNC4(dst_mtu(t->dst)), - SCTP_DEFAULT_MINSEGMENT); + __u32 pmtu = sctp_dst_mtu(t->dst); if (t->pathmtu == pmtu) return true; diff --git a/net/sctp/associola.c b/net/sctp/associola.c index a29025418b96015dd0240013b0a7c636194da67b..039fdb862b1797686bf7e5e911379b5b47ea58f7 100644 --- a/net/sctp/associola.c +++ b/net/sctp/associola.c @@ -1405,11 +1405,9 @@ void sctp_assoc_sync_pmtu(struct sctp_association *asoc) return; /* Get the lowest pmtu of all the transports. */ - list_for_each_entry(t, &asoc->peer.transport_addr_list, - transports) { + list_for_each_entry(t, &asoc->peer.transport_addr_list, transports) { if (t->pmtu_pending && t->dst) { - sctp_transport_update_pmtu( - t, SCTP_TRUNC4(dst_mtu(t->dst))); + sctp_transport_update_pmtu(t, sctp_dst_mtu(t->dst)); t->pmtu_pending = 0; } if (!pmtu || (t->pathmtu < pmtu)) diff --git a/net/sctp/transport.c b/net/sctp/transport.c index c5fc3aed08a18658448b528b07dbb13900686313..ed73a9d91b83eadd3eb8d681fda104fe71562c3f 100644 --- a/net/sctp/transport.c +++ b/net/sctp/transport.c @@ -242,9 +242,9 @@ void sctp_transport_pmtu(struct sctp_transport *transport, struct sock *sk) &transport->fl, sk); } - if (transport->dst) { - transport->pathmtu = SCTP_TRUNC4(dst_mtu(transport->dst)); - } else + if (transport->dst) + transport->pathmtu = sctp_dst_mtu(transport->dst); + else transport->pathmtu = SCTP_DEFAULT_MAXSEGMENT; } From patchwork Thu Apr 26 19:58:58 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905360 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="CFSlBKeo"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7Lj14Fcz9s02 for ; Fri, 27 Apr 2018 06:04:13 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757137AbeDZUEG (ORCPT ); Thu, 26 Apr 2018 16:04:06 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:39123 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755546AbeDZT7a (ORCPT ); Thu, 26 Apr 2018 15:59:30 -0400 Received: by mail-qk0-f196.google.com with SMTP id z75so15614549qkb.6; Thu, 26 Apr 2018 12:59:29 -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=1zLZjJRjLiuEdmh6wgGnl1xXplpgjWE3DHCRa0u/Ptg=; b=CFSlBKeoNyvQBQD++8bN0STeOMkL9O/pFRk80vhtl9sYp26G7O+SGmcjav1gP6OGRT 3awtdaCtuslUkd6n4gsopPf4Q+h9R4LP0DvnxHszneHijBQKakT3wWpK6aZC4PpANiEb 0hZGAv4WrntLfQYZTqT090OKwWr+gAtBK4bsn1pRQCfCG+Ht6wqmPDAqXMZAmAs6jIh+ DTpvdN/PTRL/EMByuCaw2zs2G6U4KLA8/fqfk904qCxX2vZFVnVSzyZ9X1gUnl902GDD ByPzwH2E7vte8SW/Cp0U9zbGFoMm3VQmtTYoZLzO0CtcLpSbu0Q5ILOfYyQDoti+ICyH 57og== 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=1zLZjJRjLiuEdmh6wgGnl1xXplpgjWE3DHCRa0u/Ptg=; b=KN9QPdg7ymsw7hX+xRYSCd302+TRmYasgmcXZxdaObW9y64pVFSGhmmmCpkl9JcB9E Xt1dTEkWqX/8vCnfYsfHTM40HP0jtwuf9+hJlkW1O5kw6bRup7LE4OlL+ArRU1tLz/w9 8557z8unSICdXDkIDIrSJ0glmhJXy0p0lZqsEKJX1laGaFlEdQ0HX18PJESi1RBYb/Wd jxgBzTWDJdB5rsdUXyfte5R0tYhtWqUM/8XH7WeQStEgo9VFZ3ZhxBlnws49QGlY5611 fa+g9wd/qmmcdxT1xsZewX0pkuzZhcdtv1mzOsUvJOE4JeeWV+wS8lbgEVbwAWU9mHNJ VwaQ== X-Gm-Message-State: ALQs6tCGUDJdmzEAmwR8L34zb+VtHnM85matSX/iIkR/C59WTpZ8t2UO KpWbU4hYW9rqzgJCVqXzWZo= X-Google-Smtp-Source: AB8JxZpxG3x8vKOXSF7THjdg+SXIEg/MAFC48hYfW2qLrfWB+8hjRz9x+9XiQWanfblDOPNsn8hO5A== X-Received: by 10.233.237.16 with SMTP id c16mr34953150qkg.344.1524772769217; Thu, 26 Apr 2018 12:59:29 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id u24sm1086627qku.18.2018.04.26.12.59.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:28 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id F16E2181165; Thu, 26 Apr 2018 16:59:18 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 09/13] sctp: remove sctp_transport_pmtu_check Date: Thu, 26 Apr 2018 16:58:58 -0300 Message-Id: X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We are now keeping the MTU information synced between asoc, transport and dst, which makes the check at sctp_packet_config() not needed anymore. As it was the sole caller to this function, lets remove it. Signed-off-by: Marcelo Ricardo Leitner --- include/net/sctp/sctp.h | 12 ------------ net/sctp/output.c | 3 --- 2 files changed, 15 deletions(-) diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h index 4965cbfa7d92c0f60a76dd6e03571f78209dda5a..f66d4435000799f523fbaa34b0a57dbdeebda040 100644 --- a/include/net/sctp/sctp.h +++ b/include/net/sctp/sctp.h @@ -606,16 +606,4 @@ static inline __u32 sctp_dst_mtu(const struct dst_entry *dst) SCTP_DEFAULT_MINSEGMENT)); } -static inline bool sctp_transport_pmtu_check(struct sctp_transport *t) -{ - __u32 pmtu = sctp_dst_mtu(t->dst); - - if (t->pathmtu == pmtu) - return true; - - t->pathmtu = pmtu; - - return false; -} - #endif /* __net_sctp_h__ */ diff --git a/net/sctp/output.c b/net/sctp/output.c index bf4226c3cc1de79f2041d55a68ea53f4fd600b25..e672dee302c7092433a64ed3ed8bfcd183e1f9c8 100644 --- a/net/sctp/output.c +++ b/net/sctp/output.c @@ -118,9 +118,6 @@ void sctp_packet_config(struct sctp_packet *packet, __u32 vtag, sctp_transport_route(tp, NULL, sp); if (asoc->param_flags & SPP_PMTUD_ENABLE) sctp_assoc_sync_pmtu(asoc); - } else if (!sctp_transport_pmtu_check(tp)) { - if (asoc->param_flags & SPP_PMTUD_ENABLE) - sctp_assoc_sync_pmtu(asoc); } /* If there a is a prepend chunk stick it on the list before From patchwork Thu Apr 26 19:58:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905359 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="JCcJBktr"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7Ld4m5Rz9s02 for ; Fri, 27 Apr 2018 06:04:09 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757144AbeDZUEI (ORCPT ); Thu, 26 Apr 2018 16:04:08 -0400 Received: from mail-qt0-f194.google.com ([209.85.216.194]:35012 "EHLO mail-qt0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755509AbeDZT73 (ORCPT ); Thu, 26 Apr 2018 15:59:29 -0400 Received: by mail-qt0-f194.google.com with SMTP id s2-v6so33192656qti.2; Thu, 26 Apr 2018 12:59:29 -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=fh46SbLQZSOVFd1LbCg2lQTIsGd+0Y+S05+A1A2QJMs=; b=JCcJBktrRpRn3xB8chEa2FztcYG4/SAHbDR9OOmbiapOMdaEDwGLG3GNBvVfUxQaqV eWcmUulky8l8OCTkkVIfUsUb4opT0NOsgGqAkgR9HvUxpnqO7jxZ14oPdUXahSlZDMc9 KdYeKrd9fjgJx7pu8rRHRr241+NvOOslE9VS7uPYOPB/2unfo2yvl7K8GwyZjGa3WHSA YFYre7uyKOu/swIBmz5GB35zi96uwjXFUOBwXVcoPdnu6pghCDU5b5eGpmlHO4uGoQzR LgI2CI4dz4UlVAvMbO5x/pn2ZUqJWtnAvL2q6KLjmRPjf/itlPvykZsmVRNbRBdZ1AYf X2Qg== 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=fh46SbLQZSOVFd1LbCg2lQTIsGd+0Y+S05+A1A2QJMs=; b=t1btl86tOC7RVqC6dCTNc76zzctXb9nX/uqd/rpvHAYACUnY5XqJ9x59OZLlAAXit4 aHQvh1dOPRegaM9DbjaqDJP/tMrtQygaa0xu1G33Vk7TZPmDsm7PW9t6aKpfrjLKucXv DyizQ96QPMvc3zjsSOTXm5/A+3iFEaWyPxXD4ThNyAj27GMAHyT0FrHfZJGe+Gmv6QUq 53nIPP2PXXpiH5xBa8YXZAT69m9+9zo72y3dyZ+g3rpIg9rP0U25L9pyO7V9hXd/Yj+C 7Xi2tKFFJAvJHJmc49O8SjvV2XJZbUe0ODVtWhhoRx865cDnXe3f/PyQWqCWSF6xXj5K lI3Q== X-Gm-Message-State: ALQs6tA9em3lqfLL8ZJ30PAFH+oSvHwZWgwWkhWYgwwmBw849ReMeTFP IjSi/kHD179932BD0iAaMPw= X-Google-Smtp-Source: AIpwx492ZuWjhlcLUvqmyoCcA20DftXIJ/HNrrKeAPxuQ2RKTPTCcFIu00xTnpQotlBkrDO2fn5Ckw== X-Received: by 2002:ac8:2d10:: with SMTP id n16-v6mr36141317qta.319.1524772768806; Thu, 26 Apr 2018 12:59:28 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id h3sm15400652qkf.10.2018.04.26.12.59.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:28 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id 0760C1811B3; Thu, 26 Apr 2018 16:59:18 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 10/13] sctp: re-use sctp_transport_pmtu in sctp_transport_route Date: Thu, 26 Apr 2018 16:58:59 -0300 Message-Id: X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org sctp_transport_route currently is very similar to sctp_transport_pmtu plus a few other bits. This patch reuses sctp_transport_pmtu in sctp_transport_route and removes the duplicated code. Also, as all calls to sctp_transport_route were forcing the dst release before calling it, let's just include such release too. Signed-off-by: Marcelo Ricardo Leitner --- net/sctp/socket.c | 6 ++---- net/sctp/transport.c | 35 +++++++++++++++++------------------ 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/net/sctp/socket.c b/net/sctp/socket.c index a93b60a28cc5fff0ebe299905fb31cb37de43d88..bb08d44b838bbbb0ffbf80b194a1291fed4069e4 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -644,16 +644,15 @@ static int sctp_send_asconf_add_ip(struct sock *sk, list_for_each_entry(trans, &asoc->peer.transport_addr_list, transports) { - /* Clear the source and route cache */ - sctp_transport_dst_release(trans); trans->cwnd = min(4*asoc->pathmtu, max_t(__u32, 2*asoc->pathmtu, 4380)); trans->ssthresh = asoc->peer.i.a_rwnd; trans->rto = asoc->rto_initial; sctp_max_rto(asoc, trans); trans->rtt = trans->srtt = trans->rttvar = 0; + /* Clear the source and route cache */ sctp_transport_route(trans, NULL, - sctp_sk(asoc->base.sk)); + sctp_sk(asoc->base.sk)); } } retval = sctp_send_asconf(asoc, chunk); @@ -896,7 +895,6 @@ static int sctp_send_asconf_del_ip(struct sock *sk, */ list_for_each_entry(transport, &asoc->peer.transport_addr_list, transports) { - sctp_transport_dst_release(transport); sctp_transport_route(transport, NULL, sctp_sk(asoc->base.sk)); } diff --git a/net/sctp/transport.c b/net/sctp/transport.c index ed73a9d91b83eadd3eb8d681fda104fe71562c3f..4a95e260b674b3dffe2ffc4c54cf9a330dfac18c 100644 --- a/net/sctp/transport.c +++ b/net/sctp/transport.c @@ -242,6 +242,15 @@ void sctp_transport_pmtu(struct sctp_transport *transport, struct sock *sk) &transport->fl, sk); } + if (transport->param_flags & SPP_PMTUD_DISABLE) { + struct sctp_association *asoc = transport->asoc; + + if (!transport->pathmtu && asoc && asoc->pathmtu) + transport->pathmtu = asoc->pathmtu; + if (transport->pathmtu) + return; + } + if (transport->dst) transport->pathmtu = sctp_dst_mtu(transport->dst); else @@ -290,6 +299,7 @@ void sctp_transport_route(struct sctp_transport *transport, struct sctp_association *asoc = transport->asoc; struct sctp_af *af = transport->af_specific; + sctp_transport_dst_release(transport); af->get_dst(transport, saddr, &transport->fl, sctp_opt2sk(opt)); if (saddr) @@ -297,25 +307,14 @@ void sctp_transport_route(struct sctp_transport *transport, else af->get_saddr(opt, transport, &transport->fl); - if ((transport->param_flags & SPP_PMTUD_DISABLE) && transport->pathmtu) { - return; - } - if (transport->dst) { - transport->pathmtu = SCTP_TRUNC4(dst_mtu(transport->dst)); + sctp_transport_pmtu(transport, sctp_opt2sk(opt)); - /* Initialize sk->sk_rcv_saddr, if the transport is the - * association's active path for getsockname(). - */ - if (asoc && (!asoc->peer.primary_path || - (transport == asoc->peer.active_path))) - opt->pf->to_sk_saddr(&transport->saddr, - asoc->base.sk); - } else if ((transport->param_flags & SPP_PMTUD_DISABLE) && - asoc && asoc->pathmtu) { - transport->pathmtu = asoc->pathmtu; - } else { - transport->pathmtu = SCTP_DEFAULT_MAXSEGMENT; - } + /* Initialize sk->sk_rcv_saddr, if the transport is the + * association's active path for getsockname(). + */ + if (transport->dst && asoc && + (!asoc->peer.primary_path || transport == asoc->peer.active_path)) + opt->pf->to_sk_saddr(&transport->saddr, asoc->base.sk); } /* Hold a reference to a transport. */ From patchwork Thu Apr 26 19:59:00 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905353 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="F/HJs2ZB"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7Kj6pM5z9s02 for ; Fri, 27 Apr 2018 06:03:21 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756911AbeDZUDT (ORCPT ); Thu, 26 Apr 2018 16:03:19 -0400 Received: from mail-qt0-f196.google.com ([209.85.216.196]:41850 "EHLO mail-qt0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752418AbeDZT7c (ORCPT ); Thu, 26 Apr 2018 15:59:32 -0400 Received: by mail-qt0-f196.google.com with SMTP id d3-v6so33210120qth.8; Thu, 26 Apr 2018 12:59:31 -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=0/g+dc1ZMYcxccGPP7h9mqUVl2XMd1RRDidxyxCnk0Q=; b=F/HJs2ZBd9poVBJddNZKlTwuFoZiDo/Hey0NvBAbPXvedJfWOCvi1x4GFsHuNYl3EF Fzte52VGDRK3WcCu9QrTjUNYYMYiHTDMAMdjFOs8VeN6v7nCnbjadEeyrRjtAbZjbcof yjIwcZdXjD52x61pYHhvVOT2MsguR8PQnpY4IKE5SEg+rAred3A0vQMG0IBvCQW5i1q4 jsDT68RuOcMIflwoiXkClV8Y+A9Yp7EkULJSke241kaN1cEMWhXOwwqiUTSkmxI6Mfcl ZVVfkD3VZEGZTMyJazpAxFkFYlv3ZX0bPuYORktKPbBtNxFYoy4syujloGV3bGvs20VI yz3A== 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=0/g+dc1ZMYcxccGPP7h9mqUVl2XMd1RRDidxyxCnk0Q=; b=r8tN+Cpr9Czt5fgf/02NUpUwQPHnrMaptkY2J0N6NOkDsJvbiPAUM0DHBoWJLiUs3V q/P2yTrX77hhLcMmPQCB88K+RXPpKEJaN3gvKvTSthUV+dAXQEJDGE+9BK1wMqXVvdbz Jp85V/ZpJ8tHgRuxy134dn/ONlnoh1KAOMHwW0SFBCZmcF5x5iufR5P1pIpQr7sTiF5V BESFXIILYztfvwUeEuLqIpl2yVUVLe+xUx1OW3UpqSPF1aJMoCD5KcD8mI4uvoGq/yfr NgNcOnVM7lOfC7Gw/2C5fs17QQDrtrxr3biPi7r8wquougeJ6I5sJy+rmxJXAr6b3vp2 +/Tw== X-Gm-Message-State: ALQs6tDKHh4+BvPgJUojeBe0I5DPCu2Ho2y98oEuU/pIx+t7LmKY1u+Q N4G/0tPA3PzQe4lzo9dRa/AgK65k X-Google-Smtp-Source: AB8JxZrA2pHM4QUVOyEUGOwLNs+F1xWBkuu9lcPPyw4Euj0gdAh4ATBmpg/tKJeQlGdzJocm0ELe+g== X-Received: by 2002:ac8:65d7:: with SMTP id t23-v6mr10161150qto.183.1524772771160; Thu, 26 Apr 2018 12:59:31 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id e188sm15263707qkf.16.2018.04.26.12.59.26 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:28 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id 11DF71811C6; Thu, 26 Apr 2018 16:59:19 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 11/13] sctp: honor PMTU_DISABLED when handling icmp Date: Thu, 26 Apr 2018 16:59:00 -0300 Message-Id: <01299c62ca1ec2902de69ed872bea8c1520cce3d.1524772453.git.marcelo.leitner@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org sctp_sendmsg() could trigger PMTU updates even when PMTU_DISABLED was set, as pmtu_pending could be set unconditionally during icmp handling if the socket was in use by the application. This patch fixes it by checking for PMTU_DISABLED when handling such deferred updates. Signed-off-by: Marcelo Ricardo Leitner --- net/sctp/socket.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/net/sctp/socket.c b/net/sctp/socket.c index bb08d44b838bbbb0ffbf80b194a1291fed4069e4..ad8965835d8d51d4eda857b91dfca140710bf7da 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -1893,6 +1893,7 @@ static int sctp_sendmsg_to_asoc(struct sctp_association *asoc, struct sctp_sndrcvinfo *sinfo) { struct sock *sk = asoc->base.sk; + struct sctp_sock *sp = sctp_sk(sk); struct net *net = sock_net(sk); struct sctp_datamsg *datamsg; bool wait_connect = false; @@ -1911,13 +1912,14 @@ static int sctp_sendmsg_to_asoc(struct sctp_association *asoc, goto err; } - if (sctp_sk(sk)->disable_fragments && msg_len > asoc->frag_point) { + if (sp->disable_fragments && msg_len > asoc->frag_point) { err = -EMSGSIZE; goto err; } if (asoc->pmtu_pending) { - sctp_assoc_sync_pmtu(asoc); + if (sp->param_flags & SPP_PMTUD_ENABLE) + sctp_assoc_sync_pmtu(asoc); asoc->pmtu_pending = 0; } @@ -1936,7 +1938,7 @@ static int sctp_sendmsg_to_asoc(struct sctp_association *asoc, if (err) goto err; - if (sctp_sk(sk)->strm_interleave) { + if (sp->strm_interleave) { timeo = sock_sndtimeo(sk, 0); err = sctp_wait_for_connect(asoc, &timeo); if (err) From patchwork Thu Apr 26 19:59:01 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905356 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="H5GxBOdk"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7Kv4YStz9s02 for ; Fri, 27 Apr 2018 06:03:31 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757097AbeDZUD3 (ORCPT ); Thu, 26 Apr 2018 16:03:29 -0400 Received: from mail-qt0-f195.google.com ([209.85.216.195]:43710 "EHLO mail-qt0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755608AbeDZT7b (ORCPT ); Thu, 26 Apr 2018 15:59:31 -0400 Received: by mail-qt0-f195.google.com with SMTP id l11-v6so33188761qtj.10; Thu, 26 Apr 2018 12:59:30 -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=ttF4kYUdhsRI844Bz8FJ3Wamd5FBjb1OKsbqLCz87C4=; b=H5GxBOdkDX50E6hKO6EKcVI7KJZowQ3WnWf4YPytyeMBB5MxTZDSUO5KRYwGmdeXhw +zdQf//Mab9zLwYRdtVm9tfWxSuLCDinPJd5l1I9WwhOWsQveZc/RTFzRyrpbg+3rwkt mUFSuvE7Jqs8hfOLUcTf9RrBF11nAZfLYqd1nwTTkw6vWNgoEMhhr56CwbNx3zsFyQyJ OFyB2M/nTsmMsIZ8awqF6fb8KRKRNDvnLZBgFzNhjCEh+g75qyxzhoRFsCnFdnMWJulb X2pFWMny434gzR9nJwYHTek6AmZUQVQlzVZKptBedmOd3q0fGpeRXbOzJoGQ8oqLtmUX Bx9g== 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=ttF4kYUdhsRI844Bz8FJ3Wamd5FBjb1OKsbqLCz87C4=; b=R1YrDpFnUOeNAFhOA4s6FYr0HFTJQ8vzr1SqYXkGBppiMnt/J5rb4BywyqtL+vrkcl KiLwOoydg+i8qJ6X5rW9+OcIzBJE7CvZV34SkfxbLWrBCJHx7CfSohYqom3RxJ/K7SbL 08+04Q1FEVNK+gRWc0EoBm1aT58OpAFqPETDIsvm0zGE8MgsA3Aqvji0DNmP0xTXSU7K wpluo+Pqv1WAFwXKO74RtzmKR5/M2pc68BQqcQ0mE68pTkvyxxXRIMexWtPctzk/A3U7 aMK3WY5dORo9mXm97ZfYxLv6QaaDe0UQ41Fv/wfqaC0yDZDOR5VYpR/VLqQel8LIAsO7 qscw== X-Gm-Message-State: ALQs6tDsOXzRSv+BludxvDTdIauBw23Lj60O5JHExHVS8UnqbiZYwnjn 66jTZm4ZGVL0QOGKw1bojB4= X-Google-Smtp-Source: AB8JxZohGJ2RqfUcFvdy4YfNp2BdMpvA2w4ssfjSk5DDlcRVkRh+ylSuuZXqQDbaYXNKLpcNxjmtWg== X-Received: by 10.12.158.76 with SMTP id z12mr13978562qve.152.1524772770300; Thu, 26 Apr 2018 12:59:30 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id z135sm5948967qka.1.2018.04.26.12.59.26 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:28 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id 179461811E5; Thu, 26 Apr 2018 16:59:19 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 12/13] sctp: consider idata chunks when setting SCTP_MAXSEG Date: Thu, 26 Apr 2018 16:59:01 -0300 Message-Id: X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org When setting SCTP_MAXSEG sock option, it should consider which kind of data chunk is being used if the asoc is already available, so that the limit better reflect reality. Signed-off-by: Marcelo Ricardo Leitner --- net/sctp/socket.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/net/sctp/socket.c b/net/sctp/socket.c index ad8965835d8d51d4eda857b91dfca140710bf7da..2d35c8ea2470e7f5481bb9675ffd233eb3424d91 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -3233,18 +3233,21 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned return -EINVAL; } + asoc = sctp_id2assoc(sk, params.assoc_id); + if (val) { int min_len, max_len; + __u16 datasize = asoc ? sctp_datachk_len(&asoc->stream) : + sizeof(struct sctp_data_chunk); min_len = sctp_mtu_payload(sp, SCTP_DEFAULT_MINSEGMENT, - sizeof(struct sctp_data_chunk)); - max_len = SCTP_MAX_CHUNK_LEN - sizeof(struct sctp_data_chunk); + datasize); + max_len = SCTP_MAX_CHUNK_LEN - datasize; if (val < min_len || val > max_len) return -EINVAL; } - asoc = sctp_id2assoc(sk, params.assoc_id); if (asoc) { if (val == 0) { val = asoc->pathmtu - af->net_header_len; From patchwork Thu Apr 26 19:59:02 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcelo Ricardo Leitner X-Patchwork-Id: 905358 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@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; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="HWZAcrB7"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40X7Lb6mBvz9s02 for ; Fri, 27 Apr 2018 06:04:07 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757043AbeDZUEE (ORCPT ); Thu, 26 Apr 2018 16:04:04 -0400 Received: from mail-qk0-f194.google.com ([209.85.220.194]:44432 "EHLO mail-qk0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755376AbeDZT7a (ORCPT ); Thu, 26 Apr 2018 15:59:30 -0400 Received: by mail-qk0-f194.google.com with SMTP id z8so10887172qki.11; Thu, 26 Apr 2018 12:59:30 -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=PJWPQZCFOhvRvG+C/EAQ4FgvQqY3BVj/TCPL78rvc1I=; b=HWZAcrB7EET+PXEoytOAZQErJxDxaPPUfqFpXS1S2NurYXHvOggam1TH9OgfEVJi99 ihyzIqWsB05M9YABheQH1qQkhn6ePO85uMUiAmwvSaJBvpWL29Vtbm1amvohZ/FGYeEs FU652qusm/3unZ5Bh8kziSl2UZO0mEwr+Sxfgx3GAL3KzSoKKZv6CcxzeG56YuPTbb1y YQUsuR2SBniXsPFUKr51cWCc9LYU21FJRJcNhsPxD+/0SkTAa742wqOfMguPO5Gu2SY8 kTYv3JmySrCBYc0C7VE6e22cu/ZyKweUNXdYhu3fOAV8bIzgjeczicBS2LvJmpunwVxi msJg== 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=PJWPQZCFOhvRvG+C/EAQ4FgvQqY3BVj/TCPL78rvc1I=; b=cvQ8NeDe9pTb9zvujzOqb5bXv+RzeAJayS9uSseF7jHejwIxatTTuIMDnKxAsKgX9Y 21w5lwt989tAfGT6dQ/kT5571YhAf6Yhzc3oHB8QIx7I31iO5XKaZ3G+Yv2tes2gu4Bt 4wwPOepz98ZGhGJ7h6We/9M6IWld3Qg/FdHNEaBPkm9pljgHvDgroihM1SyM3aP1zU6J 3V9Sbti4O4opfivfZzPxy6Kbu7Mgcg3gC5PpOJ58WBsbUACrRwJtp75N2Mr1Iq19ID5M jxcDXKep2Rx5NamkxqENhm0dyfcKlYlLS6vMCC1nizRE1GMAgI0wfimrIOK3+hllrEx/ apnQ== X-Gm-Message-State: ALQs6tBZxOhslhYdnDEMkj+d0eA65H+n22h0ffjsyETnGb8KIEgsqBv1 33ldS8m0Es3TVTxz+zstO0U= X-Google-Smtp-Source: AB8JxZqsUroytzEq43zW7GBH+58BOnVKcTU+3z+vwuI2zlDqTaJIP8cmie75SA8woqi+ZIXND8dDKw== X-Received: by 10.55.11.65 with SMTP id 62mr36147382qkl.287.1524772769926; Thu, 26 Apr 2018 12:59:29 -0700 (PDT) Received: from localhost.localdomain ([177.10.56.95]) by smtp.gmail.com with ESMTPSA id 44-v6sm17940405qtq.59.2018.04.26.12.59.26 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 26 Apr 2018 12:59:28 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id 209C91811E7; Thu, 26 Apr 2018 16:59:19 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Vlad Yasevich , Neil Horman , Xin Long Subject: [PATCH net-next 13/13] sctp: allow unsetting sockopt MAXSEG Date: Thu, 26 Apr 2018 16:59:02 -0300 Message-Id: <6b7e01ddf9be2954d55af5ea37b636a1f2e8bb89.1524772453.git.marcelo.leitner@gmail.com> X-Mailer: git-send-email 2.14.3 In-Reply-To: References: Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org RFC 6458 Section 8.1.16 says that setting MAXSEG as 0 means that the user is not limiting it, and not that it should set to the *current* maximum, as we are doing. This patch thus allow setting it as 0, effectively removing the user limit. Signed-off-by: Marcelo Ricardo Leitner --- net/sctp/socket.c | 7 ------- 1 file changed, 7 deletions(-) diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 2d35c8ea2470e7f5481bb9675ffd233eb3424d91..1b4593b842b001903f518e90484c763d9d3698f3 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c @@ -3211,7 +3211,6 @@ static int sctp_setsockopt_mappedv4(struct sock *sk, char __user *optval, unsign static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned int optlen) { struct sctp_sock *sp = sctp_sk(sk); - struct sctp_af *af = sp->pf->af; struct sctp_assoc_value params; struct sctp_association *asoc; int val; @@ -3249,12 +3248,6 @@ static int sctp_setsockopt_maxseg(struct sock *sk, char __user *optval, unsigned } if (asoc) { - if (val == 0) { - val = asoc->pathmtu - af->net_header_len; - val -= af->ip_options_len(sk); - val -= sizeof(struct sctphdr) + - sctp_datachk_len(&asoc->stream); - } asoc->user_frag = val; sctp_assoc_update_frag_point(asoc); } else {