1/* SPDX-License-Identifier: GPL-2.0 */
2#define NFS4_MAXTAGLEN		20
3
4#define NFS4_enc_cb_null_sz		0
5#define NFS4_dec_cb_null_sz		0
6#define cb_compound_enc_hdr_sz		4
7#define cb_compound_dec_hdr_sz		(3 + (NFS4_MAXTAGLEN >> 2))
8#define sessionid_sz			(NFS4_MAX_SESSIONID_LEN >> 2)
9#define cb_sequence_enc_sz		(sessionid_sz + 4 +             \
10					1 /* no referring calls list yet */)
11#define cb_sequence_dec_sz		(op_dec_sz + sessionid_sz + 4)
12
13#define op_enc_sz			1
14#define op_dec_sz			2
15#define enc_nfs4_fh_sz			(1 + (NFS4_FHSIZE >> 2))
16#define enc_stateid_sz			(NFS4_STATEID_SIZE >> 2)
17#define NFS4_enc_cb_recall_sz		(cb_compound_enc_hdr_sz +       \
18					cb_sequence_enc_sz +            \
19					1 + enc_stateid_sz +            \
20					enc_nfs4_fh_sz)
21
22#define NFS4_dec_cb_recall_sz		(cb_compound_dec_hdr_sz  +      \
23					cb_sequence_dec_sz +            \
24					op_dec_sz)
25#define NFS4_enc_cb_layout_sz		(cb_compound_enc_hdr_sz +       \
26					cb_sequence_enc_sz +            \
27					1 + 3 +                         \
28					enc_nfs4_fh_sz + 4)
29#define NFS4_dec_cb_layout_sz		(cb_compound_dec_hdr_sz  +      \
30					cb_sequence_dec_sz +            \
31					op_dec_sz)
32
33#define NFS4_enc_cb_notify_lock_sz	(cb_compound_enc_hdr_sz +        \
34					cb_sequence_enc_sz +             \
35					2 + 1 +				 \
36					XDR_QUADLEN(NFS4_OPAQUE_LIMIT) + \
37					enc_nfs4_fh_sz)
38#define NFS4_dec_cb_notify_lock_sz	(cb_compound_dec_hdr_sz  +      \
39					cb_sequence_dec_sz +            \
40					op_dec_sz)
41#define enc_cb_offload_info_sz		(1 + 1 + 2 + 1 +		\
42					XDR_QUADLEN(NFS4_VERIFIER_SIZE))
43#define NFS4_enc_cb_offload_sz		(cb_compound_enc_hdr_sz +       \
44					cb_sequence_enc_sz +            \
45					enc_nfs4_fh_sz +		\
46					enc_stateid_sz +		\
47					enc_cb_offload_info_sz)
48#define NFS4_dec_cb_offload_sz		(cb_compound_dec_hdr_sz  +      \
49					cb_sequence_dec_sz +            \
50					op_dec_sz)
51#define NFS4_enc_cb_recall_any_sz	(cb_compound_enc_hdr_sz +       \
52					cb_sequence_enc_sz +            \
53					1 + 1 + 1)
54#define NFS4_dec_cb_recall_any_sz	(cb_compound_dec_hdr_sz  +      \
55					cb_sequence_dec_sz +            \
56					op_dec_sz)
57
58/*
59 * 1: CB_GETATTR opcode (32-bit)
60 * N: file_handle
61 * 1: number of entry in attribute array (32-bit)
62 * 1: entry 0 in attribute array (32-bit)
63 */
64#define NFS4_enc_cb_getattr_sz		(cb_compound_enc_hdr_sz +       \
65					cb_sequence_enc_sz +            \
66					1 + enc_nfs4_fh_sz + 1 + 1)
67/*
68 * 4: fattr_bitmap_maxsz
69 * 1: attribute array len
70 * 2: change attr (64-bit)
71 * 2: size (64-bit)
72 */
73#define NFS4_dec_cb_getattr_sz		(cb_compound_dec_hdr_sz  +      \
74			cb_sequence_dec_sz + 4 + 1 + 2 + 2 + op_dec_sz)
75