Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp525097imm; Wed, 18 Jul 2018 06:24:52 -0700 (PDT) X-Google-Smtp-Source: AAOMgpfiCdd7TBU4qi+/mFk0X9jzpLkIIdvJ+jEcj7ZwXM2Ct6cK01ZywMPjBa+/Np3+jZe9Tnqt X-Received: by 2002:a63:571d:: with SMTP id l29-v6mr5618282pgb.296.1531920292701; Wed, 18 Jul 2018 06:24:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531920292; cv=none; d=google.com; s=arc-20160816; b=oj+ujbrZed1mFEO3MDTdvKa2j2P3p5hvrZ8SKZSQcucyiX1CpFnWDUkLmFl+nj6GHd IilM27uNM03s9iwkzz1QmXUaXlBeJP6XUif7n/MKBjIx3Y+tJ4moatdegYWCSVc4/xeG 12h8XlGfbaZNTnLFcigj43wsTDrhnRil+AUBj3NbDQC0D9ec7tHPAlUEKjkFLuMapW6D RoVtAt9sYBCNw1lqDloEnNi0Yc3xUg2MGGZwCbUTbDJ22sh4hGUqsnS+7SeAVAdEnRDH YACnl5zHbgvH7qR09kgORqZlEnk/p46LvVvdDHR4r+NtQxqIEajvTUbim/TfkHKIGF7h 5xYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:references:in-reply-to:date :subject:cc:to:from:arc-authentication-results; bh=hjXc4cGQIqXH1nP0Wu1LZ3+8TuMY7ApbpcHxc7x7z78=; b=IC8a1/BgSvpogWQYJkleo4krg8XoC04bGu/P+NZ86aUfGLa2T3eG2uz6vH8yImbP4G 85oVco4DeqvAekTAW6aHoAKW2tuMmZ8bLSSGoouWekid8OCDTbpCyb/Da7k8BWc517HB keUnaoaU++jLhNBiApuve17QeEW2Dq+Ry+4rfmlJ9PMeGfXDM5HqMx10LdCR5DsdhbPF F4qIcX1pPyHDAUoeQb02MEY/u84WORof8APpGrnHMqiA0p1iPFsoMjRdqcM9MC/eixFe p/xkUBZndhXc9Ap5jvOXbn6sURmhQcRgIh7sflelEfAjD04poANED/SxJtqdbB5qe9xV SGWQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id b22-v6si3216576pls.259.2018.07.18.06.24.37; Wed, 18 Jul 2018 06:24:52 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ibm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731429AbeGROBL (ORCPT + 99 others); Wed, 18 Jul 2018 10:01:11 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:35550 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1731249AbeGROBA (ORCPT ); Wed, 18 Jul 2018 10:01:00 -0400 Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w6IDJQKi056560 for ; Wed, 18 Jul 2018 09:23:05 -0400 Received: from e06smtp07.uk.ibm.com (e06smtp07.uk.ibm.com [195.75.94.103]) by mx0b-001b2d01.pphosted.com with ESMTP id 2ka3xm6q91-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 18 Jul 2018 09:23:05 -0400 Received: from localhost by e06smtp07.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 18 Jul 2018 14:23:02 +0100 Received: from b06cxnps3075.portsmouth.uk.ibm.com (9.149.109.195) by e06smtp07.uk.ibm.com (192.168.101.137) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; (version=TLSv1/SSLv3 cipher=AES256-GCM-SHA384 bits=256/256) Wed, 18 Jul 2018 14:22:59 +0100 Received: from d06av23.portsmouth.uk.ibm.com (d06av23.portsmouth.uk.ibm.com [9.149.105.59]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w6IDMvQa37683248 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 18 Jul 2018 13:22:57 GMT Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 048F1A4051; Wed, 18 Jul 2018 16:23:15 +0100 (BST) Received: from d06av23.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id B92CBA4053; Wed, 18 Jul 2018 16:23:14 +0100 (BST) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by d06av23.portsmouth.uk.ibm.com (Postfix) with ESMTPS; Wed, 18 Jul 2018 16:23:14 +0100 (BST) From: Ursula Braun To: davem@davemloft.net Cc: netdev@vger.kernel.org, linux-s390@vger.kernel.org, schwidefsky@de.ibm.com, heiko.carstens@de.ibm.com, raspl@linux.ibm.com, linux-kernel@vger.kernel.org Subject: [PATCH net 1/3] net/smc: optimize consumer cursor updates Date: Wed, 18 Jul 2018 15:22:49 +0200 X-Mailer: git-send-email 2.16.4 In-Reply-To: <20180718132251.7222-1-ubraun@linux.ibm.com> References: <20180718132251.7222-1-ubraun@linux.ibm.com> X-TM-AS-GCONF: 00 x-cbid: 18071813-0028-0000-0000-000002DD1B85 X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18071813-0029-0000-0000-00002394E4C9 Message-Id: <20180718132251.7222-2-ubraun@linux.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:,, definitions=2018-07-18_03:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 suspectscore=4 phishscore=0 bulkscore=0 spamscore=0 clxscore=1015 lowpriorityscore=0 mlxscore=0 impostorscore=0 mlxlogscore=651 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1806210000 definitions=main-1807180150 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Ursula Braun The SMC protocol requires to send a separate consumer cursor update, if it cannot be piggybacked to updates of the producer cursor. Currently the decision to send a separate consumer cursor update just considers the amount of data already received by the socket program. It does not consider the amount of data already arrived, but not yet consumed by the receiver. Basing the decision on the difference between already confirmed and already arrived data (instead of difference between already confirmed and already consumed data), may lead to a somewhat earlier consumer cursor update send in fast unidirectional traffic scenarios, and thus to better throughput. Signed-off-by: Ursula Braun Suggested-by: Thomas Richter --- net/smc/smc_tx.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/net/smc/smc_tx.c b/net/smc/smc_tx.c index cee666400752..f82886b7d1d8 100644 --- a/net/smc/smc_tx.c +++ b/net/smc/smc_tx.c @@ -495,7 +495,8 @@ void smc_tx_work(struct work_struct *work) void smc_tx_consumer_update(struct smc_connection *conn, bool force) { - union smc_host_cursor cfed, cons; + union smc_host_cursor cfed, cons, prod; + int sender_free = conn->rmb_desc->len; int to_confirm; smc_curs_write(&cons, @@ -505,11 +506,18 @@ void smc_tx_consumer_update(struct smc_connection *conn, bool force) smc_curs_read(&conn->rx_curs_confirmed, conn), conn); to_confirm = smc_curs_diff(conn->rmb_desc->len, &cfed, &cons); + if (to_confirm > conn->rmbe_update_limit) { + smc_curs_write(&prod, + smc_curs_read(&conn->local_rx_ctrl.prod, conn), + conn); + sender_free = conn->rmb_desc->len - + smc_curs_diff(conn->rmb_desc->len, &prod, &cfed); + } if (conn->local_rx_ctrl.prod_flags.cons_curs_upd_req || force || ((to_confirm > conn->rmbe_update_limit) && - ((to_confirm > (conn->rmb_desc->len / 2)) || + ((sender_free <= (conn->rmb_desc->len / 2)) || conn->local_rx_ctrl.prod_flags.write_blocked))) { if ((smc_cdc_get_slot_and_msg_send(conn) < 0) && conn->alert_token_local) { /* connection healthy */ -- 2.16.4