xref: /openbmc/linux/fs/smb/server/mgmt/ksmbd_ida.h (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
1*38c8a9a5SSteve French /* SPDX-License-Identifier: GPL-2.0-or-later */
2*38c8a9a5SSteve French /*
3*38c8a9a5SSteve French  *   Copyright (C) 2018 Samsung Electronics Co., Ltd.
4*38c8a9a5SSteve French  */
5*38c8a9a5SSteve French 
6*38c8a9a5SSteve French #ifndef __KSMBD_IDA_MANAGEMENT_H__
7*38c8a9a5SSteve French #define __KSMBD_IDA_MANAGEMENT_H__
8*38c8a9a5SSteve French 
9*38c8a9a5SSteve French #include <linux/slab.h>
10*38c8a9a5SSteve French #include <linux/idr.h>
11*38c8a9a5SSteve French 
12*38c8a9a5SSteve French /*
13*38c8a9a5SSteve French  * 2.2.1.6.7 TID Generation
14*38c8a9a5SSteve French  *    The value 0xFFFF MUST NOT be used as a valid TID. All other
15*38c8a9a5SSteve French  *    possible values for TID, including zero (0x0000), are valid.
16*38c8a9a5SSteve French  *    The value 0xFFFF is used to specify all TIDs or no TID,
17*38c8a9a5SSteve French  *    depending upon the context in which it is used.
18*38c8a9a5SSteve French  */
19*38c8a9a5SSteve French int ksmbd_acquire_smb2_tid(struct ida *ida);
20*38c8a9a5SSteve French 
21*38c8a9a5SSteve French /*
22*38c8a9a5SSteve French  * 2.2.1.6.8 UID Generation
23*38c8a9a5SSteve French  *    The value 0xFFFE was declared reserved in the LAN Manager 1.0
24*38c8a9a5SSteve French  *    documentation, so a value of 0xFFFE SHOULD NOT be used as a
25*38c8a9a5SSteve French  *    valid UID.<21> All other possible values for a UID, excluding
26*38c8a9a5SSteve French  *    zero (0x0000), are valid.
27*38c8a9a5SSteve French  */
28*38c8a9a5SSteve French int ksmbd_acquire_smb2_uid(struct ida *ida);
29*38c8a9a5SSteve French int ksmbd_acquire_async_msg_id(struct ida *ida);
30*38c8a9a5SSteve French 
31*38c8a9a5SSteve French int ksmbd_acquire_id(struct ida *ida);
32*38c8a9a5SSteve French 
33*38c8a9a5SSteve French void ksmbd_release_id(struct ida *ida, int id);
34*38c8a9a5SSteve French #endif /* __KSMBD_IDA_MANAGEMENT_H__ */
35