1232eeb1fSJakub Kicinski /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ 2232eeb1fSJakub Kicinski /* Copyright (C) 2019 Netronome Systems, Inc. */ 3232eeb1fSJakub Kicinski 4232eeb1fSJakub Kicinski #ifndef NFP_CRYPTO_FW_H 5232eeb1fSJakub Kicinski #define NFP_CRYPTO_FW_H 1 6232eeb1fSJakub Kicinski 7232eeb1fSJakub Kicinski #include "../ccm.h" 8232eeb1fSJakub Kicinski 9232eeb1fSJakub Kicinski #define NFP_NET_CRYPTO_OP_TLS_1_2_AES_GCM_128_ENC 0 10232eeb1fSJakub Kicinski #define NFP_NET_CRYPTO_OP_TLS_1_2_AES_GCM_128_DEC 1 11232eeb1fSJakub Kicinski 126a35ddc5SJakub Kicinski struct nfp_net_tls_resync_req { 136a35ddc5SJakub Kicinski __be32 fw_handle[2]; 146a35ddc5SJakub Kicinski __be32 tcp_seq; 156a35ddc5SJakub Kicinski u8 l3_offset; 166a35ddc5SJakub Kicinski u8 l4_offset; 176a35ddc5SJakub Kicinski u8 resv[2]; 186a35ddc5SJakub Kicinski }; 196a35ddc5SJakub Kicinski 20232eeb1fSJakub Kicinski struct nfp_crypto_reply_simple { 21232eeb1fSJakub Kicinski struct nfp_ccm_hdr hdr; 22232eeb1fSJakub Kicinski __be32 error; 23232eeb1fSJakub Kicinski }; 24232eeb1fSJakub Kicinski 25232eeb1fSJakub Kicinski struct nfp_crypto_req_reset { 26232eeb1fSJakub Kicinski struct nfp_ccm_hdr hdr; 27232eeb1fSJakub Kicinski __be32 ep_id; 28232eeb1fSJakub Kicinski }; 29232eeb1fSJakub Kicinski 30232eeb1fSJakub Kicinski #define NFP_NET_TLS_IPVER GENMASK(15, 12) 31232eeb1fSJakub Kicinski #define NFP_NET_TLS_VLAN GENMASK(11, 0) 32232eeb1fSJakub Kicinski #define NFP_NET_TLS_VLAN_UNUSED 4095 33232eeb1fSJakub Kicinski 34232eeb1fSJakub Kicinski struct nfp_crypto_req_add_front { 35232eeb1fSJakub Kicinski struct nfp_ccm_hdr hdr; 36232eeb1fSJakub Kicinski __be32 ep_id; 37232eeb1fSJakub Kicinski u8 resv[3]; 38232eeb1fSJakub Kicinski u8 opcode; 39232eeb1fSJakub Kicinski u8 key_len; 40232eeb1fSJakub Kicinski __be16 ipver_vlan __packed; 41232eeb1fSJakub Kicinski u8 l4_proto; 4253601c68SJakub Kicinski #define NFP_NET_TLS_NON_ADDR_KEY_LEN 8 43*7f356166SSimon Horman u8 l3_addrs[]; 44232eeb1fSJakub Kicinski }; 45232eeb1fSJakub Kicinski 46232eeb1fSJakub Kicinski struct nfp_crypto_req_add_back { 47232eeb1fSJakub Kicinski __be16 src_port; 48232eeb1fSJakub Kicinski __be16 dst_port; 49232eeb1fSJakub Kicinski __be32 key[8]; 50232eeb1fSJakub Kicinski __be32 salt; 51232eeb1fSJakub Kicinski __be32 iv[2]; 52232eeb1fSJakub Kicinski __be32 counter; 53232eeb1fSJakub Kicinski __be32 rec_no[2]; 54232eeb1fSJakub Kicinski __be32 tcp_seq; 55232eeb1fSJakub Kicinski }; 56232eeb1fSJakub Kicinski 57232eeb1fSJakub Kicinski struct nfp_crypto_req_add_v4 { 58232eeb1fSJakub Kicinski struct nfp_crypto_req_add_front front; 59232eeb1fSJakub Kicinski __be32 src_ip; 60232eeb1fSJakub Kicinski __be32 dst_ip; 61232eeb1fSJakub Kicinski struct nfp_crypto_req_add_back back; 62232eeb1fSJakub Kicinski }; 63232eeb1fSJakub Kicinski 64232eeb1fSJakub Kicinski struct nfp_crypto_req_add_v6 { 65232eeb1fSJakub Kicinski struct nfp_crypto_req_add_front front; 66232eeb1fSJakub Kicinski __be32 src_ip[4]; 67232eeb1fSJakub Kicinski __be32 dst_ip[4]; 68232eeb1fSJakub Kicinski struct nfp_crypto_req_add_back back; 69232eeb1fSJakub Kicinski }; 70232eeb1fSJakub Kicinski 71232eeb1fSJakub Kicinski struct nfp_crypto_reply_add { 72232eeb1fSJakub Kicinski struct nfp_ccm_hdr hdr; 73232eeb1fSJakub Kicinski __be32 error; 74232eeb1fSJakub Kicinski __be32 handle[2]; 75232eeb1fSJakub Kicinski }; 76232eeb1fSJakub Kicinski 77232eeb1fSJakub Kicinski struct nfp_crypto_req_del { 78232eeb1fSJakub Kicinski struct nfp_ccm_hdr hdr; 79232eeb1fSJakub Kicinski __be32 ep_id; 80232eeb1fSJakub Kicinski __be32 handle[2]; 81232eeb1fSJakub Kicinski }; 82232eeb1fSJakub Kicinski 83232eeb1fSJakub Kicinski struct nfp_crypto_req_update { 84232eeb1fSJakub Kicinski struct nfp_ccm_hdr hdr; 85232eeb1fSJakub Kicinski __be32 ep_id; 86232eeb1fSJakub Kicinski u8 resv[3]; 87232eeb1fSJakub Kicinski u8 opcode; 88232eeb1fSJakub Kicinski __be32 handle[2]; 89232eeb1fSJakub Kicinski __be32 rec_no[2]; 90232eeb1fSJakub Kicinski __be32 tcp_seq; 91232eeb1fSJakub Kicinski }; 92232eeb1fSJakub Kicinski #endif 93