Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp447817imm; Wed, 18 Jul 2018 05:08:02 -0700 (PDT) X-Google-Smtp-Source: AAOMgpd7I997/ZOZZb7p+scUiFrx1c4UdCym6k/w2v+MxXVkZ9hqd/IxslXVyqaQvrMvltrhYCUo X-Received: by 2002:a63:3046:: with SMTP id w67-v6mr1107898pgw.176.1531915682504; Wed, 18 Jul 2018 05:08:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531915682; cv=none; d=google.com; s=arc-20160816; b=BaNYHnV1kd5FpkMIH/Q1XQ6mLZAQnDfJJYQn9ZxRcgyKIWllRE2aG2klqvEkF+sP2R Gn0mX+0JqknoiVkssnrWB20JNhlU57KjVbn8SjAvYn1X0Cgehbw02t3jTsmbOIeAvxNb kExpXQpS5E5DYTKOAiSvHgY2axX+835Z/yFyIuFnT4DEaG8R5rp6qAEXZElcJfTvoUXC 0RRfoFMRMfNHB13XJLlI2G6wsdB4fCogbNaJiTxS7Da+f0u7EqDxebUT/ARr1J21irLL Pavymc/2soIEvgdnzMj0CI47zWAZd6hzzqDjGcCjnpYzPVH81Vl3iltKP8EXFi15e/43 UJhQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=hjXc4cGQIqXH1nP0Wu1LZ3+8TuMY7ApbpcHxc7x7z78=; b=IulKqx+7zrdcJShItvBlBHeNFEMYuhFXMx3uIrHChCsT98fxuycywPKCst/eHJyzAc Qa59I6N8bZxt+6ZHLAWQNyFOXFMbIex+mMRnB96+0vXkYlpbKfSVhZxxA0gjfukJmer4 6gQke6gdK/kG1kFIJHwotA/6hzXBSVuNqcrWQbtHt+nit596gNppUXKMbb+bIhF/MVSi BtqG/HeGeT5LTkOoKQJwvccKjPZF9/a6PFKef1cTgt4TpXuhFLZ1wRKp481j6J3fam58 3+9HKXMEgm4cTfcX0lh/NMzc/jje12G/8fybWqHhphqU+RXCP7/IWDJ/mzlbABpFJJHJ /wRg== 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 d34-v6si2988039pld.252.2018.07.18.05.07.47; Wed, 18 Jul 2018 05:08:02 -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 S1730312AbeGRMoM (ORCPT + 99 others); Wed, 18 Jul 2018 08:44:12 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:33922 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726297AbeGRMoL (ORCPT ); Wed, 18 Jul 2018 08:44:11 -0400 Received: from pps.filterd (m0098410.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.16.0.22/8.16.0.22) with SMTP id w6IBxSiQ059048 for ; Wed, 18 Jul 2018 08:06:34 -0400 Received: from e06smtp03.uk.ibm.com (e06smtp03.uk.ibm.com [195.75.94.99]) by mx0a-001b2d01.pphosted.com with ESMTP id 2ka3rskyc1-1 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 18 Jul 2018 08:06:33 -0400 Received: from localhost by e06smtp03.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 18 Jul 2018 13:06:30 +0100 Received: from b06cxnps3074.portsmouth.uk.ibm.com (9.149.109.194) by e06smtp03.uk.ibm.com (192.168.101.133) 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 13:06:28 +0100 Received: from d06av22.portsmouth.uk.ibm.com (d06av22.portsmouth.uk.ibm.com [9.149.105.58]) by b06cxnps3074.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id w6IC6Rrr41484472 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 18 Jul 2018 12:06:27 GMT Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6C3BE4C04E; Wed, 18 Jul 2018 15:06:45 +0100 (BST) Received: from d06av22.portsmouth.uk.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 1EBC04C052; Wed, 18 Jul 2018 15:06:45 +0100 (BST) Received: from tuxmaker.boeblingen.de.ibm.com (unknown [9.152.85.9]) by d06av22.portsmouth.uk.ibm.com (Postfix) with ESMTPS; Wed, 18 Jul 2018 15:06:45 +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 14:06:21 +0200 X-Mailer: git-send-email 2.16.4 X-TM-AS-GCONF: 00 x-cbid: 18071812-0012-0000-0000-0000028BA53F X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 18071812-0013-0000-0000-000020BD6965 Message-Id: <20180718120621.66413-1-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=623 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1806210000 definitions=main-1807180137 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