[v5,01/21] CIFS: SMBD: Add SMB Direct protocol initial values and constants
diff mbox series

Message ID 20171018230920.21042-2-longli@exchange.microsoft.com
State New
Headers show
Series
  • CIFS: Implement SMB Direct protocol
Related show

Commit Message

Long Li Oct. 18, 2017, 11:09 p.m. UTC
From: Long Li <longli@microsoft.com>

To prepare for protocol implementation, add constants and user-configurable
values for the SMB Direct protocol.

Signed-off-by: Long Li <longli@microsoft.com>
---
 fs/cifs/smbdirect.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 fs/cifs/smbdirect.h | 21 +++++++++++++++
 2 files changed, 98 insertions(+)
 create mode 100644 fs/cifs/smbdirect.c
 create mode 100644 fs/cifs/smbdirect.h

Comments

Steve French Nov. 1, 2017, 5:21 p.m. UTC | #1
Remember to run scripts/checkpatch - you had some trivial whitespace
errors in this one (also always remember to run sparse compile with
endian checking before submission   ie   make C=1 M=fs/cifs modules
CF=-D__CHECK_ENDIAN__)

On Wed, Oct 18, 2017 at 6:09 PM, Long Li <longli@exchange.microsoft.com> wrote:
> From: Long Li <longli@microsoft.com>
>
> To prepare for protocol implementation, add constants and user-configurable
> values for the SMB Direct protocol.
>
> Signed-off-by: Long Li <longli@microsoft.com>
> ---
>  fs/cifs/smbdirect.c | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  fs/cifs/smbdirect.h | 21 +++++++++++++++
>  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..d3c16f8
> --- /dev/null
> +++ b/fs/cifs/smbdirect.c
> @@ -0,0 +1,77 @@
> +/*
> + *   Copyright (C) 2017, Microsoft Corporation.
> + *
> + *   Author(s): Long Li <longli@microsoft.com>
> + *
> + *   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 "smbdirect.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 */
> +int smbd_receive_credit_max = 255;
> +
> +/* The remote peer's credit request of local peer */
> +int smbd_send_credit_target = 255;
> +
> +/* The maximum single message size can be sent to remote peer */
> +int smbd_max_send_size = 1364;
> +
> +/*  The maximum fragmented upper-layer payload receive size supported */
> +int smbd_max_fragmented_recv_size = 1024 * 1024;
> +
> +/*  The maximum single-message size which can be received */
> +int smbd_max_receive_size = 8192;
> +
> +/* The timeout to initiate send of a keepalive message on idle */
> +int smbd_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 write/read */
> +int smbd_max_frmr_depth = 2048;
> +
> +/* If payload is less than this byte, use RDMA send/recv not read/write */
> +int rdma_readwrite_threshold = 4096;
> diff --git a/fs/cifs/smbdirect.h b/fs/cifs/smbdirect.h
> new file mode 100644
> index 0000000..c55f28b
> --- /dev/null
> +++ b/fs/cifs/smbdirect.h
> @@ -0,0 +1,21 @@
> +/*
> + *   Copyright (C) 2017, Microsoft Corporation.
> + *
> + *   Author(s): Long Li <longli@microsoft.com>
> + *
> + *   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
> +
> +/* Default maximum number of SGEs in a RDMA send/recv */
> +#define SMBDIRECT_MAX_SGE      16
> +#endif
> --
> 2.7.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Long Li Nov. 1, 2017, 6:49 p.m. UTC | #2
> -----Original Message-----

> From: Steve French [mailto:smfrench@gmail.com]

> Sent: Wednesday, November 1, 2017 10:21 AM

> To: Long Li <longli@microsoft.com>

> Cc: linux-cifs@vger.kernel.org; Pavel Shilovskiy <pshilov@microsoft.com>

> Subject: Re: [Patch v5 01/21] CIFS: SMBD: Add SMB Direct protocol initial

> values and constants

> 

> Remember to run scripts/checkpatch - you had some trivial whitespace

> errors in this one (also always remember to run sparse compile with

> endian checking before submission   ie   make C=1 M=fs/cifs modules

> CF=-D__CHECK_ENDIAN__)


Thanks. I will fix those.

> 

> On Wed, Oct 18, 2017 at 6:09 PM, Long Li <longli@exchange.microsoft.com>

> wrote:

> > From: Long Li <longli@microsoft.com>

> >

> > To prepare for protocol implementation, add constants and

> > user-configurable values for the SMB Direct protocol.

> >

> > Signed-off-by: Long Li <longli@microsoft.com>

> > ---

> >  fs/cifs/smbdirect.c | 77

> > +++++++++++++++++++++++++++++++++++++++++++++++++++++

> >  fs/cifs/smbdirect.h | 21 +++++++++++++++

> >  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..d3c16f8

> > --- /dev/null

> > +++ b/fs/cifs/smbdirect.c

> > @@ -0,0 +1,77 @@

> > +/*

> > + *   Copyright (C) 2017, Microsoft Corporation.

> > + *

> > + *   Author(s): Long Li <longli@microsoft.com>

> > + *

> > + *   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 "smbdirect.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 */

> > +int smbd_receive_credit_max = 255;

> > +

> > +/* The remote peer's credit request of local peer */ int

> > +smbd_send_credit_target = 255;

> > +

> > +/* The maximum single message size can be sent to remote peer */ int

> > +smbd_max_send_size = 1364;

> > +

> > +/*  The maximum fragmented upper-layer payload receive size supported

> > +*/ int smbd_max_fragmented_recv_size = 1024 * 1024;

> > +

> > +/*  The maximum single-message size which can be received */ int

> > +smbd_max_receive_size = 8192;

> > +

> > +/* The timeout to initiate send of a keepalive message on idle */ int

> > +smbd_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 write/read */ int

> > +smbd_max_frmr_depth = 2048;

> > +

> > +/* If payload is less than this byte, use RDMA send/recv not

> > +read/write */ int rdma_readwrite_threshold = 4096;

> > diff --git a/fs/cifs/smbdirect.h b/fs/cifs/smbdirect.h new file mode

> > 100644 index 0000000..c55f28b

> > --- /dev/null

> > +++ b/fs/cifs/smbdirect.h

> > @@ -0,0 +1,21 @@

> > +/*

> > + *   Copyright (C) 2017, Microsoft Corporation.

> > + *

> > + *   Author(s): Long Li <longli@microsoft.com>

> > + *

> > + *   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

> > +

> > +/* Default maximum number of SGEs in a RDMA send/recv */

> > +#define SMBDIRECT_MAX_SGE      16

> > +#endif

> > --

> > 2.7.4

> >

> > --

> > To unsubscribe from this list: send the line "unsubscribe linux-cifs"

> > in the body of a message to majordomo@vger.kernel.org More

> majordomo

> > info at

> >

> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fvger.k

> > ernel.org%2Fmajordomo-

> info.html&data=02%7C01%7Clongli%40microsoft.com%

> >

> 7Cdb316e8fda6945138c0c08d5214d000b%7C72f988bf86f141af91ab2d7cd011d

> b47%

> >

> 7C1%7C0%7C636451536959242180&sdata=ZN2BbAM1NRyofTbdc6OvF9Gnvr8

> D7%2FGui

> > XFnNlRE2bs%3D&reserved=0

> 

> 

> 

> --

> Thanks,

> 

> Steve

Patch
diff mbox series

diff --git a/fs/cifs/smbdirect.c b/fs/cifs/smbdirect.c
new file mode 100644
index 0000000..d3c16f8
--- /dev/null
+++ b/fs/cifs/smbdirect.c
@@ -0,0 +1,77 @@ 
+/*
+ *   Copyright (C) 2017, Microsoft Corporation.
+ *
+ *   Author(s): Long Li <longli@microsoft.com>
+ *
+ *   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 "smbdirect.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 */
+int smbd_receive_credit_max = 255;
+
+/* The remote peer's credit request of local peer */
+int smbd_send_credit_target = 255;
+
+/* The maximum single message size can be sent to remote peer */
+int smbd_max_send_size = 1364;
+
+/*  The maximum fragmented upper-layer payload receive size supported */
+int smbd_max_fragmented_recv_size = 1024 * 1024;
+
+/*  The maximum single-message size which can be received */
+int smbd_max_receive_size = 8192;
+
+/* The timeout to initiate send of a keepalive message on idle */
+int smbd_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 write/read */
+int smbd_max_frmr_depth = 2048;
+
+/* If payload is less than this byte, use RDMA send/recv not read/write */
+int rdma_readwrite_threshold = 4096;
diff --git a/fs/cifs/smbdirect.h b/fs/cifs/smbdirect.h
new file mode 100644
index 0000000..c55f28b
--- /dev/null
+++ b/fs/cifs/smbdirect.h
@@ -0,0 +1,21 @@ 
+/*
+ *   Copyright (C) 2017, Microsoft Corporation.
+ *
+ *   Author(s): Long Li <longli@microsoft.com>
+ *
+ *   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
+
+/* Default maximum number of SGEs in a RDMA send/recv */
+#define SMBDIRECT_MAX_SGE	16
+#endif