The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/ofed/include/rdma/signature.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* SPDX-License-Identifier: (GPL-2.0 OR Linux-OpenIB) */
    2 /*
    3  * Copyright (c) 2017-2018 Mellanox Technologies. All rights reserved.
    4  */
    5 
    6 #ifndef _RDMA_SIGNATURE_H_
    7 #define _RDMA_SIGNATURE_H_
    8 
    9 #include <linux/types.h>
   10 
   11 enum ib_signature_prot_cap {
   12         IB_PROT_T10DIF_TYPE_1 = 1,
   13         IB_PROT_T10DIF_TYPE_2 = 1 << 1,
   14         IB_PROT_T10DIF_TYPE_3 = 1 << 2,
   15 };
   16 
   17 enum ib_signature_guard_cap {
   18         IB_GUARD_T10DIF_CRC     = 1,
   19         IB_GUARD_T10DIF_CSUM    = 1 << 1,
   20 };
   21 
   22 /**
   23  * enum ib_signature_type - Signature types
   24  * @IB_SIG_TYPE_NONE: Unprotected.
   25  * @IB_SIG_TYPE_T10_DIF: Type T10-DIF
   26  */
   27 enum ib_signature_type {
   28         IB_SIG_TYPE_NONE,
   29         IB_SIG_TYPE_T10_DIF,
   30 };
   31 
   32 /**
   33  * enum ib_t10_dif_bg_type - Signature T10-DIF block-guard types
   34  * @IB_T10DIF_CRC: Corresponds to T10-PI mandated CRC checksum rules.
   35  * @IB_T10DIF_CSUM: Corresponds to IP checksum rules.
   36  */
   37 enum ib_t10_dif_bg_type {
   38         IB_T10DIF_CRC,
   39         IB_T10DIF_CSUM,
   40 };
   41 
   42 /**
   43  * struct ib_t10_dif_domain - Parameters specific for T10-DIF
   44  *     domain.
   45  * @bg_type: T10-DIF block guard type (CRC|CSUM)
   46  * @pi_interval: protection information interval.
   47  * @bg: seed of guard computation.
   48  * @app_tag: application tag of guard block
   49  * @ref_tag: initial guard block reference tag.
   50  * @ref_remap: Indicate wethear the reftag increments each block
   51  * @app_escape: Indicate to skip block check if apptag=0xffff
   52  * @ref_escape: Indicate to skip block check if reftag=0xffffffff
   53  * @apptag_check_mask: check bitmask of application tag.
   54  */
   55 struct ib_t10_dif_domain {
   56         enum ib_t10_dif_bg_type bg_type;
   57         u16                     pi_interval;
   58         u16                     bg;
   59         u16                     app_tag;
   60         u32                     ref_tag;
   61         bool                    ref_remap;
   62         bool                    app_escape;
   63         bool                    ref_escape;
   64         u16                     apptag_check_mask;
   65 };
   66 
   67 /**
   68  * struct ib_sig_domain - Parameters for signature domain
   69  * @sig_type: specific signauture type
   70  * @sig: union of all signature domain attributes that may
   71  *     be used to set domain layout.
   72  */
   73 struct ib_sig_domain {
   74         enum ib_signature_type sig_type;
   75         union {
   76                 struct ib_t10_dif_domain dif;
   77         } sig;
   78 };
   79 
   80 /**
   81  * struct ib_sig_attrs - Parameters for signature handover operation
   82  * @check_mask: bitmask for signature byte check (8 bytes)
   83  * @mem: memory domain layout descriptor.
   84  * @wire: wire domain layout descriptor.
   85  * @meta_length: metadata length
   86  */
   87 struct ib_sig_attrs {
   88         u8                      check_mask;
   89         struct ib_sig_domain    mem;
   90         struct ib_sig_domain    wire;
   91         int                     meta_length;
   92 };
   93 
   94 enum ib_sig_err_type {
   95         IB_SIG_BAD_GUARD,
   96         IB_SIG_BAD_REFTAG,
   97         IB_SIG_BAD_APPTAG,
   98 };
   99 
  100 /*
  101  * Signature check masks (8 bytes in total) according to the T10-PI standard:
  102  *  -------- -------- ------------
  103  * | GUARD  | APPTAG |   REFTAG   |
  104  * |  2B    |  2B    |    4B      |
  105  *  -------- -------- ------------
  106  */
  107 enum {
  108         IB_SIG_CHECK_GUARD = 0xc0,
  109         IB_SIG_CHECK_APPTAG = 0x30,
  110         IB_SIG_CHECK_REFTAG = 0x0f,
  111 };
  112 
  113 /*
  114  * struct ib_sig_err - signature error descriptor
  115  */
  116 struct ib_sig_err {
  117         enum ib_sig_err_type    err_type;
  118         u32                     expected;
  119         u32                     actual;
  120         u64                     sig_err_offset;
  121         u32                     key;
  122 };
  123 
  124 #endif /* _RDMA_SIGNATURE_H_ */

Cache object: d38e0e50ba8caf7f03f9e65257bdb1c9


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.