summaryrefslogtreecommitdiffstats
path: root/src/spdk/intel-ipsec-mb/mb_mgr_datastruct.asm
diff options
context:
space:
mode:
Diffstat (limited to 'src/spdk/intel-ipsec-mb/mb_mgr_datastruct.asm')
-rw-r--r--src/spdk/intel-ipsec-mb/mb_mgr_datastruct.asm330
1 files changed, 330 insertions, 0 deletions
diff --git a/src/spdk/intel-ipsec-mb/mb_mgr_datastruct.asm b/src/spdk/intel-ipsec-mb/mb_mgr_datastruct.asm
new file mode 100644
index 000000000..adc6a2f90
--- /dev/null
+++ b/src/spdk/intel-ipsec-mb/mb_mgr_datastruct.asm
@@ -0,0 +1,330 @@
+;;
+;; Copyright (c) 2012-2019, Intel Corporation
+;;
+;; Redistribution and use in source and binary forms, with or without
+;; modification, are permitted provided that the following conditions are met:
+;;
+;; * Redistributions of source code must retain the above copyright notice,
+;; this list of conditions and the following disclaimer.
+;; * Redistributions in binary form must reproduce the above copyright
+;; notice, this list of conditions and the following disclaimer in the
+;; documentation and/or other materials provided with the distribution.
+;; * Neither the name of Intel Corporation nor the names of its contributors
+;; may be used to endorse or promote products derived from this software
+;; without specific prior written permission.
+;;
+;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+;; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+;; DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+;; FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+;; DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+;; SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+;; CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+;; OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+;; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+;;
+
+%include "include/datastruct.asm"
+%include "constants.asm"
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Define constants
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+%define MAX_AES_JOBS 128
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Define AES_ARGS and AES Out of Order Data Structures
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; AES_ARGS
+;; name size align
+FIELD _aesarg_in, 8*16, 8 ; array of 16 pointers to in text
+FIELD _aesarg_out, 8*16, 8 ; array of 16 pointers to out text
+FIELD _aesarg_keys, 8*16, 8 ; array of 16 pointers to keys
+FIELD _aesarg_IV, 16*16, 64 ; array of 16 128-bit IV's
+FIELD _aesarg_key_tab,16*16*15, 64 ; array of 128-bit round keys
+END_FIELDS
+%assign _AES_ARGS_size _FIELD_OFFSET
+%assign _AES_ARGS_align _STRUCT_ALIGN
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; MB_MGR_AES_OOO
+;; name size align
+FIELD _aes_args, _AES_ARGS_size, _AES_ARGS_align
+FIELD _aes_lens, 16*2, 16
+FIELD _aes_unused_lanes, 8, 8
+FIELD _aes_job_in_lane, 16*8, 8
+FIELD _aes_lanes_in_use, 8, 8
+END_FIELDS
+%assign _MB_MGR_AES_OOO_size _FIELD_OFFSET
+%assign _MB_MGR_AES_OOO_align _STRUCT_ALIGN
+
+_aes_args_in equ _aes_args + _aesarg_in
+_aes_args_out equ _aes_args + _aesarg_out
+_aes_args_keys equ _aes_args + _aesarg_keys
+_aes_args_IV equ _aes_args + _aesarg_IV
+_aes_args_key_tab equ _aes_args + _aesarg_key_tab
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Define XCBC Out of Order Data Structures
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; AES_XCBC_ARGS_X8
+;; name size align
+FIELD _aesxcbcarg_in, 8*8, 8 ; array of 8 pointers to in text
+FIELD _aesxcbcarg_keys, 8*8, 8 ; array of 8 pointers to keys
+FIELD _aesxcbcarg_ICV, 16*8, 32 ; array of 8 128-bit ICV's
+END_FIELDS
+%assign _AES_XCBC_ARGS_X8_size _FIELD_OFFSET
+%assign _AES_XCBC_ARGS_X8_align _STRUCT_ALIGN
+
+START_FIELDS ; XCBC_LANE_DATA
+;;; name size align
+FIELD _xcbc_final_block, 2*16, 32 ; final block with padding
+FIELD _xcbc_job_in_lane, 8, 8 ; pointer to job object
+FIELD _xcbc_final_done, 8, 8 ; offset to start of data
+END_FIELDS
+%assign _XCBC_LANE_DATA_size _FIELD_OFFSET
+%assign _XCBC_LANE_DATA_align _STRUCT_ALIGN
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; MB_MGR_AES_XCBC_OOO
+;; name size align
+FIELD _aes_xcbc_args, _AES_XCBC_ARGS_X8_size, _AES_XCBC_ARGS_X8_align
+FIELD _aes_xcbc_lens, 16, 16
+FIELD _aes_xcbc_unused_lanes, 8, 8
+FIELD _aes_xcbc_ldata, _XCBC_LANE_DATA_size*8, _XCBC_LANE_DATA_align
+END_FIELDS
+%assign _MB_MGR_AES_XCBC_OOO_size _FIELD_OFFSET
+%assign _MB_MGR_AES_XCBC_OOO_align _STRUCT_ALIGN
+
+_aes_xcbc_args_in equ _aes_xcbc_args + _aesxcbcarg_in
+_aes_xcbc_args_keys equ _aes_xcbc_args + _aesxcbcarg_keys
+_aes_xcbc_args_ICV equ _aes_xcbc_args + _aesxcbcarg_ICV
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Define CMAC Out of Order Data Structures
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; MB_MGR_CMAC_OOO
+;; name size align
+FIELD _aes_cmac_args, _AES_ARGS_size, _AES_ARGS_align
+FIELD _aes_cmac_lens, 8*2, 16
+FIELD _aes_cmac_init_done, 8*2, 16
+FIELD _aes_cmac_unused_lanes, 8, 8
+FIELD _aes_cmac_job_in_lane, 8*8, 8
+FIELD _aes_cmac_scratch, 8*16, 32
+END_FIELDS
+%assign _MB_MGR_CMAC_OOO_size _FIELD_OFFSET
+%assign _MB_MGR_CMAC_OOO_align _STRUCT_ALIGN
+
+_aes_cmac_args_in equ _aes_cmac_args + _aesarg_in
+_aes_cmac_args_keys equ _aes_cmac_args + _aesarg_keys
+_aes_cmac_args_IV equ _aes_cmac_args + _aesarg_IV
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Define CCM Out of Order Data Structures
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; MB_MGR_CCM_OOO
+;; name size align
+FIELD _aes_ccm_args, _AES_ARGS_size, _AES_ARGS_align
+FIELD _aes_ccm_lens, 8*2, 16
+FIELD _aes_ccm_init_done, 8*2, 16
+FIELD _aes_ccm_unused_lanes, 8, 8
+FIELD _aes_ccm_job_in_lane, 8*8, 8
+FIELD _aes_ccm_init_blocks, 8*4*16, 32
+END_FIELDS
+%assign _MB_MGR_CCM_OOO_size _FIELD_OFFSET
+%assign _MB_MGR_CCM_OOO_align _STRUCT_ALIGN
+
+_aes_ccm_args_in equ _aes_ccm_args + _aesarg_in
+_aes_ccm_args_keys equ _aes_ccm_args + _aesarg_keys
+_aes_ccm_args_IV equ _aes_ccm_args + _aesarg_IV
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Define DES Out of Order Data Structures
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; DES_ARGS_X16
+;; name size align
+FIELD _desarg_in, 16*8, 8 ; array of 16 pointers to in text
+FIELD _desarg_out, 16*8, 8 ; array of 16 pointers to out text
+FIELD _desarg_keys, 16*8, 8 ; array of 16 pointers to keys
+FIELD _desarg_IV, 16*8, 32 ; array of 16 64-bit IV's
+FIELD _desarg_plen, 16*4, 32 ; array of 16 32-bit partial lens
+FIELD _desarg_blen, 16*4, 32 ; array of 16 32-bit block lens
+FIELD _desarg_lin, 16*8, 8 ; array of 16 pointers to last (block) in text
+FIELD _desarg_lout, 16*8, 8 ; array of 16 pointers to last (block) out text
+END_FIELDS
+%assign _DES_ARGS_X16_size _FIELD_OFFSET
+%assign _DES_ARGS_X16_align _STRUCT_ALIGN
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; MB_MGR_DES_OOO
+;; name size align
+FIELD _des_args, _DES_ARGS_X16_size, _DES_ARGS_X16_align
+FIELD _des_lens, 16*2, 16
+FIELD _des_unused_lanes, 8, 8
+FIELD _des_job_in_lane, 16*8, 8
+FIELD _des_lanes_in_use, 8, 8
+END_FIELDS
+%assign _MB_MGR_DES_OOO_size _FIELD_OFFSET
+%assign _MB_MGR_DES_OOO_align _STRUCT_ALIGN
+
+_des_args_in equ _des_args + _desarg_in
+_des_args_out equ _des_args + _desarg_out
+_des_args_keys equ _des_args + _desarg_keys
+_des_args_IV equ _des_args + _desarg_IV
+_des_args_PLen equ _des_args + _desarg_plen
+_des_args_BLen equ _des_args + _desarg_blen
+_des_args_LIn equ _des_args + _desarg_lin
+_des_args_LOut equ _des_args + _desarg_lout
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Define HMAC Out Of Order Data Structures
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; HMAC_SHA1_LANE_DATA
+;;; name size align
+FIELD _extra_block, 2*64+8, 32 ; final block with padding
+FIELD _job_in_lane, 8, 8 ; pointer to job object
+FIELD _outer_block, 64, 1 ; block containing hash
+FIELD _outer_done, 4, 4 ; boolean flag
+FIELD _extra_blocks, 4, 4 ; num extra blocks (1 or 2)
+FIELD _size_offset, 4, 4 ; offset in extra_block to start of size
+FIELD _start_offset, 4, 4 ; offset to start of data
+END_FIELDS
+
+%assign _HMAC_SHA1_LANE_DATA_size _FIELD_OFFSET
+%assign _HMAC_SHA1_LANE_DATA_align _STRUCT_ALIGN
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; SHA512_LANE_DATA
+;;; name size align
+FIELD _extra_block_sha512, 2* SHA512_BLK_SZ + 16, 32 ; final block with padding, alignment 16 to read in XMM chunks
+FIELD _outer_block_sha512, SHA512_BLK_SZ, 1 ; block containing hash
+FIELD _job_in_lane_sha512, 8, 8 ; pointer to job object
+FIELD _outer_done_sha512, 4, 4 ; boolean flag
+FIELD _extra_blocks_sha512, 4, 4 ; num extra blocks (1 or 2)
+FIELD _size_offset_sha512, 4, 4 ; offset in extra_block to start of size
+FIELD _start_offset_sha512, 4, 4 ; offset to start of data
+END_FIELDS
+%assign _SHA512_LANE_DATA_size _FIELD_OFFSET
+%assign _SHA512_LANE_DATA_align _STRUCT_ALIGN
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; SHA1_ARGS
+;;; name size align
+FIELD _digest, SHA1_DIGEST_SIZE, 32 ; transposed digest
+FIELD _data_ptr_sha1, PTR_SZ*MAX_SHA1_LANES, 8 ; array of pointers to data
+END_FIELDS
+%assign _SHA1_ARGS_size _FIELD_OFFSET
+%assign _SHA1_ARGS_align _STRUCT_ALIGN
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; MB_MGR_HMAC_SHA_1_OOO
+;;; name size align
+FIELD _args, _SHA1_ARGS_size, _SHA1_ARGS_align
+FIELD _lens, 32, 32
+FIELD _unused_lanes, 8, 8
+FIELD _ldata, _HMAC_SHA1_LANE_DATA_size*MAX_SHA1_LANES, _HMAC_SHA1_LANE_DATA_align
+FIELD _num_lanes_inuse_sha1, 4, 4
+END_FIELDS
+%assign _MB_MGR_HMAC_SHA_1_OOO_size _FIELD_OFFSET
+%assign _MB_MGR_HMAC_SHA_1_OOO_align _STRUCT_ALIGN
+
+_args_digest equ _args + _digest
+_args_data_ptr equ _args + _data_ptr_sha1
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; SHA256_ARGS
+;;; name size align
+FIELD _digest_sha256, SHA256_DIGEST_SIZE, 32 ; transposed digest
+FIELD _data_ptr_sha256, PTR_SZ*MAX_SHA256_LANES, 8 ; array of pointers to data
+END_FIELDS
+%assign _SHA256_ARGS_size _FIELD_OFFSET
+%assign _SHA256_ARGS_align _STRUCT_ALIGN
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; MB_MGR_HMAC_SHA_256_OOO
+;;; name size align
+FIELD _args_sha256, _SHA256_ARGS_size, _SHA256_ARGS_align
+FIELD _lens_sha256, 16*2, 16
+FIELD _unused_lanes_sha256, 8, 8
+FIELD _ldata_sha256, _HMAC_SHA1_LANE_DATA_size * MAX_SHA256_LANES, _HMAC_SHA1_LANE_DATA_align
+FIELD _num_lanes_inuse_sha256, 4, 4
+END_FIELDS
+%assign _MB_MGR_HMAC_SHA_256_OOO_size _FIELD_OFFSET
+%assign _MB_MGR_HMAC_SHA_256_OOO_align _STRUCT_ALIGN
+
+_args_digest_sha256 equ _args_sha256 + _digest_sha256
+_args_data_ptr_sha256 equ _args_sha256 + _data_ptr_sha256
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Define HMAC SHA512 Out Of Order Data Structures
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; SHA512_ARGS
+;;; name size align
+FIELD _digest_sha512, SHA512_DIGEST_SIZE, 32 ; transposed digest. 2 lanes, 8 digest words, each 8 bytes long
+FIELD _data_ptr_sha512, MAX_SHA512_LANES * PTR_SZ, 8 ; array of pointers to data
+END_FIELDS
+%assign _SHA512_ARGS_size _FIELD_OFFSET
+%assign _SHA512_ARGS_align _STRUCT_ALIGN
+
+
+;; ---------------------------------------
+START_FIELDS ; MB_MGR_HMAC_SHA512_OOO
+;;; name size align
+FIELD _args_sha512, _SHA512_ARGS_size, _SHA512_ARGS_align
+FIELD _lens_sha512, 16, 16
+FIELD _unused_lanes_sha512, 8, 8
+FIELD _ldata_sha512, _SHA512_LANE_DATA_size * MAX_SHA512_LANES, _SHA512_LANE_DATA_align
+END_FIELDS
+%assign _MB_MGR_HMAC_SHA_512_OOO_size _FIELD_OFFSET
+%assign _MB_MGR_HMAC_SHA_512_OOO_align _STRUCT_ALIGN
+
+_args_digest_sha512 equ _args_sha512 + _digest_sha512
+_args_data_ptr_sha512 equ _args_sha512 + _data_ptr_sha512
+
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;; Define HMAC MD5 Out Of Order Data Structures
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; MD5_ARGS
+;;; name size align
+FIELD _digest_md5, MD5_DIGEST_SIZE, 32 ; transposed digest
+FIELD _data_ptr_md5, MAX_MD5_LANES*PTR_SZ, 8 ; array of pointers to data
+END_FIELDS
+%assign _MD5_ARGS_size _FIELD_OFFSET
+%assign _MD5_ARGS_align _STRUCT_ALIGN
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+START_FIELDS ; MB_MGR_HMAC_MD5_OOO
+;;; name size align
+FIELD _args_md5, _MD5_ARGS_size, _MD5_ARGS_align
+FIELD _lens_md5, MAX_MD5_LANES*2, 16
+FIELD _unused_lanes_md5, 8, 8
+FIELD _ldata_md5, _HMAC_SHA1_LANE_DATA_size * MAX_MD5_LANES, _HMAC_SHA1_LANE_DATA_align
+FIELD _num_lanes_inuse_md5, 4, 8
+END_FIELDS
+%assign _MB_MGR_HMAC_MD5_OOO_size _FIELD_OFFSET
+%assign _MB_MGR_HMAC_MD5_OOO_align _STRUCT_ALIGN
+
+_args_digest_md5 equ _args_md5 + _digest_md5
+_args_data_ptr_md5 equ _args_md5 + _data_ptr_md5