From patchwork Mon May 14 17:34:36 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: 913150 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="s+XqRQ6v"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40l7BL2Hm3z9s0q for ; Tue, 15 May 2018 03:35:06 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753121AbeENRfC (ORCPT ); Mon, 14 May 2018 13:35:02 -0400 Received: from mail-qk0-f194.google.com ([209.85.220.194]:37667 "EHLO mail-qk0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752057AbeENRe7 (ORCPT ); Mon, 14 May 2018 13:34:59 -0400 Received: by mail-qk0-f194.google.com with SMTP id 11-v6so10681910qkk.4; Mon, 14 May 2018 10:34:59 -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=YyTtGWVy0MEFTb/349RlJa2wplQBDbZzqD+E0Pe00WY=; b=s+XqRQ6vm94JbNvnodvm2MkRucQKUtyHq6OGui+aYB9CtoZKfj71G2Rh5I9lqRfDpG u/C41TL0qWbVocYSQP7tYnvykk3ffe9/0KkJJyE1DZm2GB+rH2bzJtF98NcAcgmSMiZM qxdmtF0vNpR9y3R+11THI7sYzf3Qu1Pw9b5HAqo1Oo/GpklmMpBQgEJKfSVksrQqXmRv aYUJDOAHKmCYGjsD3rXb1OgGkwwaeQlVtEXw4PxUUvXQOuf4iFUWG4CzKlEpX0YVNQGI GdaoF+iheBzxOC0Fxdqq7TUyAhnqJP3rOfwF9yAev+sPW6OiweKrL/YLyHQDnwSDz+Gg eUjg== 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=YyTtGWVy0MEFTb/349RlJa2wplQBDbZzqD+E0Pe00WY=; b=J5v2Zs83r7c6QJQ0GCzshC2B/fZyy9nIOu1m0dOpoXIJCMZwG6NV0UOWFRpT8pRVOY PEac8O00F3nCAV8vVJwpVKkRDoIBW97XwgzvxAkzgG8udTzXVFFHTwbL/jJ8HiTLoxGJ jAh3l2QA/hI5QOjZMVu726WVTco/LnysmgVXvIWsbwFmBbHL+AsYwqCkRbMfSkauyThQ RpJPwMCnV79ZUtleIGSZApUCulbH0fDg5i6pXylSdE8knj+ypbNKkYHhRnRbY6lNNpEJ 9Z3IdNXcYur1ZhsCKn/Mv6F5jVB5i+gQJcDTGkgG4qzr8Mmua+fZgnpzZP3SkoMAqLpD P0Ew== X-Gm-Message-State: ALKqPwcTOQH9QPvX9uvQef3+7mFVYkd7UxpDJaZi8/WrXNl1SaiWV1PX Yb5Et3F4CQN3zhN4QLv3KBk= X-Google-Smtp-Source: AB8JxZo+LLjw6fQEZUYj2oo3rE/FZ39nC6hFyAkGQ+02+ZRwxU2I4ODxWF/VJi4uX1CZ/+HrbHM7yg== X-Received: by 2002:a37:8687:: with SMTP id i129-v6mr9068563qkd.42.1526319299076; Mon, 14 May 2018 10:34:59 -0700 (PDT) Received: from localhost.localdomain ([45.4.239.227]) by smtp.gmail.com with ESMTPSA id z64-v6sm6360802qke.66.2018.05.14.10.34.56 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 14 May 2018 10:34:57 -0700 (PDT) Received: by localhost.localdomain (Postfix, from userid 1000) id 84D941808CE; Mon, 14 May 2018 14:34:53 -0300 (-03) From: Marcelo Ricardo Leitner To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, Neil Horman , Xin Long , Vlad Yasevich Subject: [PATCH net-next v3 1/8] sctp: add sctp_packet_singleton Date: Mon, 14 May 2018 14:34:36 -0300 Message-Id: <5c6e1ac9cc236d6c9bff13212986e4cd23ea387f.1526318522.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 Factor out the code for generating singletons. It's used only once, but helps to keep the context contained. The const variables are to ease the reading of subsequent calls in there. Signed-off-by: Marcelo Ricardo Leitner --- net/sctp/outqueue.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index dee7cbd5483149024f2f3195db2fe4d473b1a00a..300bd0dfc7c14c9df579dbe2f9e78dd8356ae1a3 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c @@ -776,6 +776,20 @@ void sctp_outq_uncork(struct sctp_outq *q, gfp_t gfp) sctp_outq_flush(q, 0, gfp); } +static int sctp_packet_singleton(struct sctp_transport *transport, + struct sctp_chunk *chunk, gfp_t gfp) +{ + const struct sctp_association *asoc = transport->asoc; + const __u16 sport = asoc->base.bind_addr.port; + const __u16 dport = asoc->peer.port; + const __u32 vtag = asoc->peer.i.init_tag; + struct sctp_packet singleton; + + sctp_packet_init(&singleton, transport, sport, dport); + sctp_packet_config(&singleton, vtag, 0); + sctp_packet_append_chunk(&singleton, chunk); + return sctp_packet_transmit(&singleton, gfp); +} /* * Try to flush an outqueue. @@ -789,10 +803,7 @@ void sctp_outq_uncork(struct sctp_outq *q, gfp_t gfp) static void sctp_outq_flush(struct sctp_outq *q, int rtx_timeout, gfp_t gfp) { struct sctp_packet *packet; - struct sctp_packet singleton; struct sctp_association *asoc = q->asoc; - __u16 sport = asoc->base.bind_addr.port; - __u16 dport = asoc->peer.port; __u32 vtag = asoc->peer.i.init_tag; struct sctp_transport *transport = NULL; struct sctp_transport *new_transport; @@ -905,10 +916,7 @@ static void sctp_outq_flush(struct sctp_outq *q, int rtx_timeout, gfp_t gfp) case SCTP_CID_INIT: case SCTP_CID_INIT_ACK: case SCTP_CID_SHUTDOWN_COMPLETE: - sctp_packet_init(&singleton, transport, sport, dport); - sctp_packet_config(&singleton, vtag, 0); - sctp_packet_append_chunk(&singleton, chunk); - error = sctp_packet_transmit(&singleton, gfp); + error = sctp_packet_singleton(transport, chunk, gfp); if (error < 0) { asoc->base.sk->sk_err = -error; return;