[Patch v3 02/19] CIFS: SMBD: Add SMBDirect protocol and transport constants

Long Li longli at microsoft.com
Tue Aug 29 23:00:58 UTC 2017


> -----Original Message-----
> From: Pavel Shilovsky [mailto:piastryyy at gmail.com]
> Sent: Tuesday, August 29, 2017 3:45 PM
> To: Long Li <longli at microsoft.com>
> Cc: Steve French <sfrench at samba.org>; linux-cifs <linux-
> cifs at vger.kernel.org>; samba-technical <samba-technical at lists.samba.org>;
> Kernel Mailing List <linux-kernel at vger.kernel.org>; linux-
> rdma at vger.kernel.org; Christoph Hellwig <hch at infradead.org>; Tom Talpey
> <ttalpey at microsoft.com>; Matthew Wilcox <mawilcox at microsoft.com>;
> Long Li <longli at microsoft.com>
> Subject: Re: [Patch v3 02/19] CIFS: SMBD: Add SMBDirect protocol and
> transport constants
> 
> 2017-08-29 12:28 GMT-07:00 Long Li <longli at exchange.microsoft.com>:
> > From: Long Li <longli at microsoft.com>
> >
> > To prepare for protocol implementation, add constants and
> > user-configurable values in the SMBDirect protocol.
> >
> > Signed-off-by: Long Li <longli at microsoft.com>
> > ---
> >  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 <longli at 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 <linux/module.h>
> > +#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  */
> 
> Since these value are per transport connection, why they are global?
> Shouldn't they be inside a some structure that is created for a particular
> connection? Also the constants below should be defines.

Those are configurable initial values (default values) for all connections.

Each connection has its own values based on those initial values. But connection-based values can change after negotiation is done, or after RDMA hardware capabilities are probed.

> 
> > +/* 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 <longli at 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
> > +
> > +#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 at 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%
> >
> 7C048aaa90c05748ee36a808d4ef2f9564%7C72f988bf86f141af91ab2d7cd011d
> b47%
> >
> 7C1%7C0%7C636396435035660594&sdata=qdY4CwjZ74W7AdqTVklpo8XlWFI6
> fxZ9y3i
> > fPyPQ%2Fcg%3D&reserved=0
> 
> 
> 
> --
> Best regards,
> Pavel Shilovsky


More information about the samba-technical mailing list