forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
RDMA/core: Introduce new header file for signature operations
Ease the exhausted ib_verbs.h file and make the code more readable. Signed-off-by: Max Gurtovoy <[email protected]> Signed-off-by: Israel Rukshin <[email protected]> Reviewed-by: Leon Romanovsky <[email protected]> Reviewed-by: Sagi Grimberg <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Signed-off-by: Jason Gunthorpe <[email protected]>
- Loading branch information
1 parent
4b06843
commit 36b1e47
Showing
2 changed files
with
121 additions
and
111 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
/* SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB) */ | ||
/* | ||
* Copyright (c) 2017-2018 Mellanox Technologies. All rights reserved. | ||
*/ | ||
|
||
#ifndef _RDMA_SIGNATURE_H_ | ||
#define _RDMA_SIGNATURE_H_ | ||
|
||
enum ib_signature_prot_cap { | ||
IB_PROT_T10DIF_TYPE_1 = 1, | ||
IB_PROT_T10DIF_TYPE_2 = 1 << 1, | ||
IB_PROT_T10DIF_TYPE_3 = 1 << 2, | ||
}; | ||
|
||
enum ib_signature_guard_cap { | ||
IB_GUARD_T10DIF_CRC = 1, | ||
IB_GUARD_T10DIF_CSUM = 1 << 1, | ||
}; | ||
|
||
/** | ||
* enum ib_signature_type - Signature types | ||
* @IB_SIG_TYPE_NONE: Unprotected. | ||
* @IB_SIG_TYPE_T10_DIF: Type T10-DIF | ||
*/ | ||
enum ib_signature_type { | ||
IB_SIG_TYPE_NONE, | ||
IB_SIG_TYPE_T10_DIF, | ||
}; | ||
|
||
/** | ||
* enum ib_t10_dif_bg_type - Signature T10-DIF block-guard types | ||
* @IB_T10DIF_CRC: Corresponds to T10-PI mandated CRC checksum rules. | ||
* @IB_T10DIF_CSUM: Corresponds to IP checksum rules. | ||
*/ | ||
enum ib_t10_dif_bg_type { | ||
IB_T10DIF_CRC, | ||
IB_T10DIF_CSUM, | ||
}; | ||
|
||
/** | ||
* struct ib_t10_dif_domain - Parameters specific for T10-DIF | ||
* domain. | ||
* @bg_type: T10-DIF block guard type (CRC|CSUM) | ||
* @pi_interval: protection information interval. | ||
* @bg: seed of guard computation. | ||
* @app_tag: application tag of guard block | ||
* @ref_tag: initial guard block reference tag. | ||
* @ref_remap: Indicate wethear the reftag increments each block | ||
* @app_escape: Indicate to skip block check if apptag=0xffff | ||
* @ref_escape: Indicate to skip block check if reftag=0xffffffff | ||
* @apptag_check_mask: check bitmask of application tag. | ||
*/ | ||
struct ib_t10_dif_domain { | ||
enum ib_t10_dif_bg_type bg_type; | ||
u16 pi_interval; | ||
u16 bg; | ||
u16 app_tag; | ||
u32 ref_tag; | ||
bool ref_remap; | ||
bool app_escape; | ||
bool ref_escape; | ||
u16 apptag_check_mask; | ||
}; | ||
|
||
/** | ||
* struct ib_sig_domain - Parameters for signature domain | ||
* @sig_type: specific signauture type | ||
* @sig: union of all signature domain attributes that may | ||
* be used to set domain layout. | ||
*/ | ||
struct ib_sig_domain { | ||
enum ib_signature_type sig_type; | ||
union { | ||
struct ib_t10_dif_domain dif; | ||
} sig; | ||
}; | ||
|
||
/** | ||
* struct ib_sig_attrs - Parameters for signature handover operation | ||
* @check_mask: bitmask for signature byte check (8 bytes) | ||
* @mem: memory domain layout descriptor. | ||
* @wire: wire domain layout descriptor. | ||
*/ | ||
struct ib_sig_attrs { | ||
u8 check_mask; | ||
struct ib_sig_domain mem; | ||
struct ib_sig_domain wire; | ||
}; | ||
|
||
enum ib_sig_err_type { | ||
IB_SIG_BAD_GUARD, | ||
IB_SIG_BAD_REFTAG, | ||
IB_SIG_BAD_APPTAG, | ||
}; | ||
|
||
/* | ||
* Signature check masks (8 bytes in total) according to the T10-PI standard: | ||
* -------- -------- ------------ | ||
* | GUARD | APPTAG | REFTAG | | ||
* | 2B | 2B | 4B | | ||
* -------- -------- ------------ | ||
*/ | ||
enum { | ||
IB_SIG_CHECK_GUARD = 0xc0, | ||
IB_SIG_CHECK_APPTAG = 0x30, | ||
IB_SIG_CHECK_REFTAG = 0x0f, | ||
}; | ||
|
||
/* | ||
* struct ib_sig_err - signature error descriptor | ||
*/ | ||
struct ib_sig_err { | ||
enum ib_sig_err_type err_type; | ||
u32 expected; | ||
u32 actual; | ||
u64 sig_err_offset; | ||
u32 key; | ||
}; | ||
|
||
#endif /* _RDMA_SIGNATURE_H_ */ |