/* 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_
#include <linux/types.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 = 0 xffff
* @ ref_escape : Indicate to skip block check if reftag = 0 xffffffff
* @ 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 .
* @ meta_length : metadata length
*/
struct ib_sig_attrs {
u8 check_mask;
struct ib_sig_domain mem;
struct ib_sig_domain wire;
int meta_length;
};
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 |
* | 2 B | 2 B | 4 B |
* - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*/
enum {
IB_SIG_CHECK_GUARD = 0 xc0,
IB_SIG_CHECK_APPTAG = 0 x30,
IB_SIG_CHECK_REFTAG = 0 x0f,
};
/*
* 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_ */
Messung V0.5 in Prozent C=93 H=100 G=96
¤ Dauer der Verarbeitung: 0.10 Sekunden
(vorverarbeitet am 2026-09-29)
¤
*© Formatika GbR, Deutschland