> -----Original Message----- > From: Pavel Shilovsky [mailto:piastryyy@xxxxxxxxx] > Sent: Tuesday, August 29, 2017 3:45 PM > To: Long Li <longli@xxxxxxxxxxxxx> > Cc: Steve French <sfrench@xxxxxxxxx>; linux-cifs <linux- > cifs@xxxxxxxxxxxxxxx>; samba-technical <samba-technical@xxxxxxxxxxxxxxx>; > Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>; linux- > rdma@xxxxxxxxxxxxxxx; Christoph Hellwig <hch@xxxxxxxxxxxxx>; Tom Talpey > <ttalpey@xxxxxxxxxxxxx>; Matthew Wilcox <mawilcox@xxxxxxxxxxxxx>; > Long Li <longli@xxxxxxxxxxxxx> > 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@xxxxxxxxxxxxxxxxxxxxxx>: > > From: Long Li <longli@xxxxxxxxxxxxx> > > > > To prepare for protocol implementation, add constants and > > user-configurable values in the SMBDirect protocol. > > > > Signed-off-by: Long Li <longli@xxxxxxxxxxxxx> > > --- > > 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@xxxxxxxxxxxxx> > > + * > > + * 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@xxxxxxxxxxxxx> > > + * > > + * 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@xxxxxxxxxxxxxxx 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 ��.n��������+%������w��{.n�����{���fk��ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f