xref: /openbmc/linux/fs/nfsd/xdr4cb.h (revision 3959066b)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
206b332a5SJ. Bruce Fields #define NFS4_MAXTAGLEN		20
306b332a5SJ. Bruce Fields 
406b332a5SJ. Bruce Fields #define NFS4_enc_cb_null_sz		0
506b332a5SJ. Bruce Fields #define NFS4_dec_cb_null_sz		0
606b332a5SJ. Bruce Fields #define cb_compound_enc_hdr_sz		4
706b332a5SJ. Bruce Fields #define cb_compound_dec_hdr_sz		(3 + (NFS4_MAXTAGLEN >> 2))
806b332a5SJ. Bruce Fields #define sessionid_sz			(NFS4_MAX_SESSIONID_LEN >> 2)
906b332a5SJ. Bruce Fields #define cb_sequence_enc_sz		(sessionid_sz + 4 +             \
1006b332a5SJ. Bruce Fields 					1 /* no referring calls list yet */)
1106b332a5SJ. Bruce Fields #define cb_sequence_dec_sz		(op_dec_sz + sessionid_sz + 4)
1206b332a5SJ. Bruce Fields 
1306b332a5SJ. Bruce Fields #define op_enc_sz			1
1406b332a5SJ. Bruce Fields #define op_dec_sz			2
1506b332a5SJ. Bruce Fields #define enc_nfs4_fh_sz			(1 + (NFS4_FHSIZE >> 2))
1606b332a5SJ. Bruce Fields #define enc_stateid_sz			(NFS4_STATEID_SIZE >> 2)
1706b332a5SJ. Bruce Fields #define NFS4_enc_cb_recall_sz		(cb_compound_enc_hdr_sz +       \
1806b332a5SJ. Bruce Fields 					cb_sequence_enc_sz +            \
1906b332a5SJ. Bruce Fields 					1 + enc_stateid_sz +            \
2006b332a5SJ. Bruce Fields 					enc_nfs4_fh_sz)
2106b332a5SJ. Bruce Fields 
2206b332a5SJ. Bruce Fields #define NFS4_dec_cb_recall_sz		(cb_compound_dec_hdr_sz  +      \
2306b332a5SJ. Bruce Fields 					cb_sequence_dec_sz +            \
2406b332a5SJ. Bruce Fields 					op_dec_sz)
25c5c707f9SChristoph Hellwig #define NFS4_enc_cb_layout_sz		(cb_compound_enc_hdr_sz +       \
26c5c707f9SChristoph Hellwig 					cb_sequence_enc_sz +            \
27c5c707f9SChristoph Hellwig 					1 + 3 +                         \
28c5c707f9SChristoph Hellwig 					enc_nfs4_fh_sz + 4)
29c5c707f9SChristoph Hellwig #define NFS4_dec_cb_layout_sz		(cb_compound_dec_hdr_sz  +      \
30c5c707f9SChristoph Hellwig 					cb_sequence_dec_sz +            \
31c5c707f9SChristoph Hellwig 					op_dec_sz)
32a188620eSJeff Layton 
33a188620eSJeff Layton #define NFS4_enc_cb_notify_lock_sz	(cb_compound_enc_hdr_sz +        \
34a188620eSJeff Layton 					cb_sequence_enc_sz +             \
35a188620eSJeff Layton 					2 + 1 +				 \
36a188620eSJeff Layton 					XDR_QUADLEN(NFS4_OPAQUE_LIMIT) + \
37a188620eSJeff Layton 					enc_nfs4_fh_sz)
38a188620eSJeff Layton #define NFS4_dec_cb_notify_lock_sz	(cb_compound_dec_hdr_sz  +      \
39a188620eSJeff Layton 					cb_sequence_dec_sz +            \
40a188620eSJeff Layton 					op_dec_sz)
419eb190fcSOlga Kornievskaia #define enc_cb_offload_info_sz		(1 + 1 + 2 + 1 +		\
429eb190fcSOlga Kornievskaia 					XDR_QUADLEN(NFS4_VERIFIER_SIZE))
439eb190fcSOlga Kornievskaia #define NFS4_enc_cb_offload_sz		(cb_compound_enc_hdr_sz +       \
449eb190fcSOlga Kornievskaia 					cb_sequence_enc_sz +            \
459eb190fcSOlga Kornievskaia 					enc_nfs4_fh_sz +		\
469eb190fcSOlga Kornievskaia 					enc_stateid_sz +		\
479eb190fcSOlga Kornievskaia 					enc_cb_offload_info_sz)
489eb190fcSOlga Kornievskaia #define NFS4_dec_cb_offload_sz		(cb_compound_dec_hdr_sz  +      \
499eb190fcSOlga Kornievskaia 					cb_sequence_dec_sz +            \
509eb190fcSOlga Kornievskaia 					op_dec_sz)
51*3959066bSDai Ngo #define NFS4_enc_cb_recall_any_sz	(cb_compound_enc_hdr_sz +       \
52*3959066bSDai Ngo 					cb_sequence_enc_sz +            \
53*3959066bSDai Ngo 					1 + 1 + 1)
54*3959066bSDai Ngo #define NFS4_dec_cb_recall_any_sz	(cb_compound_dec_hdr_sz  +      \
55*3959066bSDai Ngo 					cb_sequence_dec_sz +            \
56*3959066bSDai Ngo 					op_dec_sz)
57