1*4882a593Smuzhiyun /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ 2*4882a593Smuzhiyun /* Copyright (C) 2019 Netronome Systems, Inc. */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #ifndef NFP_CRYPTO_FW_H 5*4882a593Smuzhiyun #define NFP_CRYPTO_FW_H 1 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #include "../ccm.h" 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun #define NFP_NET_CRYPTO_OP_TLS_1_2_AES_GCM_128_ENC 0 10*4882a593Smuzhiyun #define NFP_NET_CRYPTO_OP_TLS_1_2_AES_GCM_128_DEC 1 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun struct nfp_net_tls_resync_req { 13*4882a593Smuzhiyun __be32 fw_handle[2]; 14*4882a593Smuzhiyun __be32 tcp_seq; 15*4882a593Smuzhiyun u8 l3_offset; 16*4882a593Smuzhiyun u8 l4_offset; 17*4882a593Smuzhiyun u8 resv[2]; 18*4882a593Smuzhiyun }; 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun struct nfp_crypto_reply_simple { 21*4882a593Smuzhiyun struct nfp_ccm_hdr hdr; 22*4882a593Smuzhiyun __be32 error; 23*4882a593Smuzhiyun }; 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun struct nfp_crypto_req_reset { 26*4882a593Smuzhiyun struct nfp_ccm_hdr hdr; 27*4882a593Smuzhiyun __be32 ep_id; 28*4882a593Smuzhiyun }; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #define NFP_NET_TLS_IPVER GENMASK(15, 12) 31*4882a593Smuzhiyun #define NFP_NET_TLS_VLAN GENMASK(11, 0) 32*4882a593Smuzhiyun #define NFP_NET_TLS_VLAN_UNUSED 4095 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun struct nfp_crypto_req_add_front { 35*4882a593Smuzhiyun struct nfp_ccm_hdr hdr; 36*4882a593Smuzhiyun __be32 ep_id; 37*4882a593Smuzhiyun u8 resv[3]; 38*4882a593Smuzhiyun u8 opcode; 39*4882a593Smuzhiyun u8 key_len; 40*4882a593Smuzhiyun __be16 ipver_vlan __packed; 41*4882a593Smuzhiyun u8 l4_proto; 42*4882a593Smuzhiyun #define NFP_NET_TLS_NON_ADDR_KEY_LEN 8 43*4882a593Smuzhiyun u8 l3_addrs[0]; 44*4882a593Smuzhiyun }; 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun struct nfp_crypto_req_add_back { 47*4882a593Smuzhiyun __be16 src_port; 48*4882a593Smuzhiyun __be16 dst_port; 49*4882a593Smuzhiyun __be32 key[8]; 50*4882a593Smuzhiyun __be32 salt; 51*4882a593Smuzhiyun __be32 iv[2]; 52*4882a593Smuzhiyun __be32 counter; 53*4882a593Smuzhiyun __be32 rec_no[2]; 54*4882a593Smuzhiyun __be32 tcp_seq; 55*4882a593Smuzhiyun }; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun struct nfp_crypto_req_add_v4 { 58*4882a593Smuzhiyun struct nfp_crypto_req_add_front front; 59*4882a593Smuzhiyun __be32 src_ip; 60*4882a593Smuzhiyun __be32 dst_ip; 61*4882a593Smuzhiyun struct nfp_crypto_req_add_back back; 62*4882a593Smuzhiyun }; 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun struct nfp_crypto_req_add_v6 { 65*4882a593Smuzhiyun struct nfp_crypto_req_add_front front; 66*4882a593Smuzhiyun __be32 src_ip[4]; 67*4882a593Smuzhiyun __be32 dst_ip[4]; 68*4882a593Smuzhiyun struct nfp_crypto_req_add_back back; 69*4882a593Smuzhiyun }; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun struct nfp_crypto_reply_add { 72*4882a593Smuzhiyun struct nfp_ccm_hdr hdr; 73*4882a593Smuzhiyun __be32 error; 74*4882a593Smuzhiyun __be32 handle[2]; 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun struct nfp_crypto_req_del { 78*4882a593Smuzhiyun struct nfp_ccm_hdr hdr; 79*4882a593Smuzhiyun __be32 ep_id; 80*4882a593Smuzhiyun __be32 handle[2]; 81*4882a593Smuzhiyun }; 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun struct nfp_crypto_req_update { 84*4882a593Smuzhiyun struct nfp_ccm_hdr hdr; 85*4882a593Smuzhiyun __be32 ep_id; 86*4882a593Smuzhiyun u8 resv[3]; 87*4882a593Smuzhiyun u8 opcode; 88*4882a593Smuzhiyun __be32 handle[2]; 89*4882a593Smuzhiyun __be32 rec_no[2]; 90*4882a593Smuzhiyun __be32 tcp_seq; 91*4882a593Smuzhiyun }; 92*4882a593Smuzhiyun #endif 93