From patchwork Sun Aug 20 19:04:26 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Long Li X-Patchwork-Id: 9911303 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 99A3A60382 for ; Sun, 20 Aug 2017 19:06:21 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 740342872A for ; Sun, 20 Aug 2017 19:06:21 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 5503B28739; Sun, 20 Aug 2017 19:06:21 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.4 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RCVD_IN_SORBS_SPAM autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CFD5828705 for ; Sun, 20 Aug 2017 19:06:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753437AbdHTTGT (ORCPT ); Sun, 20 Aug 2017 15:06:19 -0400 Received: from a2nlsmtp01-03.prod.iad2.secureserver.net ([198.71.225.37]:44452 "EHLO a2nlsmtp01-03.prod.iad2.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753313AbdHTTGS (ORCPT ); Sun, 20 Aug 2017 15:06:18 -0400 Received: from linuxonhyperv.com ([107.180.71.197]) by : HOSTING RELAY : with SMTP id jVXBdL2bSyEu9jVXBdOW8M; Sun, 20 Aug 2017 12:05:17 -0700 x-originating-ip: 107.180.71.197 Received: from longli by linuxonhyperv.com with local (Exim 4.89) (envelope-from ) id 1djVXB-0000nt-D4; Sun, 20 Aug 2017 12:05:17 -0700 From: Long Li To: Steve French , linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, Christoph Hellwig , Tom Talpey , Matthew Wilcox Cc: Long Li Subject: [Patch v2 02/19] CIFS: SMBD: Add SMBDirect protocol and transport constants Date: Sun, 20 Aug 2017 12:04:26 -0700 Message-Id: <1503255883-3041-3-git-send-email-longli@exchange.microsoft.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1503255883-3041-1-git-send-email-longli@exchange.microsoft.com> References: <1503255883-3041-1-git-send-email-longli@exchange.microsoft.com> X-CMAE-Envelope: MS4wfAYtbagNg5ITwsuCqyXXxtlQgjievCsmPfkBDKtkO7YkDUbJuCOT2vnLCxT0ZMyNPJgdMTV55e76633S/IMcMcXgo/WqGC79rYFqgpTDT4vhIu2YTG2j +aUFaxawksf+H1ZOtYFzDr+uqn8+mROFC/q73uzlN/AhkkftmsZUrs6BxMnEb9rQRxy9qzoM8Bqt+iP1z3IS9/gIZfl/+T2ZvcbM7FQBVyUwSacXW/0UOkmc iMCAB50nkAiIor3ZRpyAngWqQnB1z8WO2/WKXH25B/0Auq4O5Ez08z4N4/zq9iOXC2PdbnWXmOMcvC7SeWhD8lidJV59eI8wUHBE2ZEO9JcSB/Upf5VWuR68 ouMtDg/evomXfRZvyMlphkURGAbFE6ZWbV8R8/QiBJedwhEDlgS4mNrR1KMIvEz/63wY8xlSjHwMu8KLuG/wc9hyicrBZ+1GCyVsYhTf/VMcNo+EOdKZ0b4b f0V3EzrRL8gXI27a Sender: linux-cifs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-cifs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Long Li To prepare for protocol implementation, add constants and user-configurable values in the protocol. Signed-off-by: Long Li --- fs/cifs/smbdirect.c | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++ fs/cifs/smbdirect.h | 20 ++++++++++++++ 2 files changed, 98 insertions(+) create mode 100644 fs/cifs/smbdirect.c create mode 100644 fs/cifs/smbdirect.h diff --git a/fs/cifs/smbdirect.c b/fs/cifs/smbdirect.c new file mode 100644 index 0000000..d785bc1 --- /dev/null +++ b/fs/cifs/smbdirect.c @@ -0,0 +1,78 @@ +/* + * Copyright (C) 2017, Microsoft Corporation. + * + * Author(s): Long Li + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + */ +#include +#include "smbdirect.h" +#include "cifs_debug.h" + +/* SMBD version number */ +#define SMBD_V1 0x0100 + +/* Port numbers for SMBD transport */ +#define SMB_PORT 445 +#define SMBD_PORT 5445 + +/* Address lookup and resolve timeout in ms */ +#define RDMA_RESOLVE_TIMEOUT 5000 + +/* SMBD negotiation timeout in seconds */ +#define SMBD_NEGOTIATE_TIMEOUT 120 + +/* SMBD minimum receive size and fragmented sized defined in [MS-SMBD] */ +#define SMBD_MIN_RECEIVE_SIZE 128 +#define SMBD_MIN_FRAGMENTED_SIZE 131072 + +/* + * Default maximum number of RDMA read/write outstanding on this connection + * This value is possibly decreased during QP creation on hardware limit + */ +#define SMBD_CM_RESPONDER_RESOURCES 32 + +/* Maximum number of retries on data transfer operations */ +#define SMBD_CM_RETRY 6 +/* No need to retry on Receiver Not Ready since SMBD manages credits */ +#define SMBD_CM_RNR_RETRY 0 + +/* + * User configurable initial values per SMBD transport connection + * as defined in [MS-SMBD] 3.1.1.1 + * Those may change after a SMBD negotiation + */ +/* The local peer's maximum number of credits to grant to the peer */ +static int receive_credit_max = 255; +/* The remote peer's credit request of local peer */ +static int send_credit_target = 255; +/* The maximum single message size can be sent to remote peer */ +static int max_send_size = 1364; +/* The maximum fragmented upper-layer payload receive size supported */ +static int max_fragmented_recv_size = 1024 * 1024; +/* The maximum single-message size which can be received */ +static int max_receive_size = 8192; + +/* The timeout to initiate send of a keepalive message on idle */ +static int keep_alive_interval = 120; + +/* + * User configurable initial values for RDMA transport + * The actual values used may be lower and are limited to hardware capabilities + */ +/* Default maximum number of SGEs in a RDMA send/recv */ +static int max_send_sge = SMBDIRECT_MAX_SGE; +static int max_recv_sge = SMBDIRECT_MAX_SGE; +/* Default maximum number of SGEs in a RDMA write/read */ +static int max_frmr_depth = 2048; + +/* If payload is less than this byte, use RDMA send/recv not read/write */ +static int rdma_readwrite_threshold = 4096; diff --git a/fs/cifs/smbdirect.h b/fs/cifs/smbdirect.h new file mode 100644 index 0000000..06eeb0b --- /dev/null +++ b/fs/cifs/smbdirect.h @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2017, Microsoft Corporation. + * + * Author(s): Long Li + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See + * the GNU General Public License for more details. + */ +#ifndef _SMBDIRECT_H +#define _SMBDIRECT_H + +#define SMBDIRECT_MAX_SGE 16 +#endif