Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b80d049 authored by Steve French's avatar Steve French
Browse files

Charge at least one credit, if server says that it supports multicredit



In SMB2.1 and later the server will usually set the large MTU flag, and
we need to charge at least one credit, if server says that since
it supports multicredit.  Windows seems to let us get away with putting
a zero there, but they confirmed that it is wrong and the spec says
to put one there (if the request is under 64K and the CAP_LARGE_MTU
was returned during protocol negotiation by the server.

CC: Pavel Shilovsky <piastry@etersoft.ru>
Signed-off-by: default avatarSteve French <smfrench@gmail.com>
parent 7f653858
Loading
Loading
Loading
Loading
+8 −1
Original line number Original line Diff line number Diff line
/*
/*
 *   fs/cifs/smb2pdu.c
 *   fs/cifs/smb2pdu.c
 *
 *
 *   Copyright (C) International Business Machines  Corp., 2009, 2012
 *   Copyright (C) International Business Machines  Corp., 2009, 2013
 *                 Etersoft, 2012
 *                 Etersoft, 2012
 *   Author(s): Steve French (sfrench@us.ibm.com)
 *   Author(s): Steve French (sfrench@us.ibm.com)
 *              Pavel Shilovsky (pshilovsky@samba.org) 2012
 *              Pavel Shilovsky (pshilovsky@samba.org) 2012
@@ -108,6 +108,13 @@ smb2_hdr_assemble(struct smb2_hdr *hdr, __le16 smb2_cmd /* command */ ,
	if (!tcon)
	if (!tcon)
		goto out;
		goto out;


	/* BB FIXME when we do write > 64K add +1 for every 64K in req or rsp */
	/* GLOBAL_CAP_LARGE_MTU will only be set if dialect > SMB2.02 */
	/* See sections 2.2.4 and 3.2.4.1.5 of MS-SMB2 */
	if (tcon->ses->server->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU)
		hdr->CreditCharge = cpu_to_le16(1);
	/* else CreditCharge MBZ */

	hdr->TreeId = tcon->tid;
	hdr->TreeId = tcon->tid;
	/* Uid is not converted */
	/* Uid is not converted */
	if (tcon->ses)
	if (tcon->ses)