162306a36Sopenharmony_ci/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */ 262306a36Sopenharmony_ci/* Copyright (C) 2019 Netronome Systems, Inc. */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef NFP_CRYPTO_H 562306a36Sopenharmony_ci#define NFP_CRYPTO_H 1 662306a36Sopenharmony_ci 762306a36Sopenharmony_cistruct net_device; 862306a36Sopenharmony_cistruct nfp_net; 962306a36Sopenharmony_cistruct nfp_net_tls_resync_req; 1062306a36Sopenharmony_ci 1162306a36Sopenharmony_cistruct nfp_net_tls_offload_ctx { 1262306a36Sopenharmony_ci __be32 fw_handle[2]; 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci u8 rx_end[0]; 1562306a36Sopenharmony_ci /* Tx only fields follow - Rx side does not have enough driver state 1662306a36Sopenharmony_ci * to fit these 1762306a36Sopenharmony_ci */ 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci u32 next_seq; 2062306a36Sopenharmony_ci}; 2162306a36Sopenharmony_ci 2262306a36Sopenharmony_ci#ifdef CONFIG_TLS_DEVICE 2362306a36Sopenharmony_ciint nfp_net_tls_init(struct nfp_net *nn); 2462306a36Sopenharmony_ciint nfp_net_tls_rx_resync_req(struct net_device *netdev, 2562306a36Sopenharmony_ci struct nfp_net_tls_resync_req *req, 2662306a36Sopenharmony_ci void *pkt, unsigned int pkt_len); 2762306a36Sopenharmony_ci#else 2862306a36Sopenharmony_cistatic inline int nfp_net_tls_init(struct nfp_net *nn) 2962306a36Sopenharmony_ci{ 3062306a36Sopenharmony_ci return 0; 3162306a36Sopenharmony_ci} 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_cistatic inline int 3462306a36Sopenharmony_cinfp_net_tls_rx_resync_req(struct net_device *netdev, 3562306a36Sopenharmony_ci struct nfp_net_tls_resync_req *req, 3662306a36Sopenharmony_ci void *pkt, unsigned int pkt_len) 3762306a36Sopenharmony_ci{ 3862306a36Sopenharmony_ci return -EOPNOTSUPP; 3962306a36Sopenharmony_ci} 4062306a36Sopenharmony_ci#endif 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci/* IPsec related structures and functions */ 4362306a36Sopenharmony_cistruct nfp_ipsec_offload { 4462306a36Sopenharmony_ci u32 seq_hi; 4562306a36Sopenharmony_ci u32 seq_low; 4662306a36Sopenharmony_ci u32 handle; 4762306a36Sopenharmony_ci}; 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci#ifndef CONFIG_NFP_NET_IPSEC 5062306a36Sopenharmony_cistatic inline void nfp_net_ipsec_init(struct nfp_net *nn) 5162306a36Sopenharmony_ci{ 5262306a36Sopenharmony_ci} 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_cistatic inline void nfp_net_ipsec_clean(struct nfp_net *nn) 5562306a36Sopenharmony_ci{ 5662306a36Sopenharmony_ci} 5762306a36Sopenharmony_ci#else 5862306a36Sopenharmony_civoid nfp_net_ipsec_init(struct nfp_net *nn); 5962306a36Sopenharmony_civoid nfp_net_ipsec_clean(struct nfp_net *nn); 6062306a36Sopenharmony_cibool nfp_net_ipsec_tx_prep(struct nfp_net_dp *dp, struct sk_buff *skb, 6162306a36Sopenharmony_ci struct nfp_ipsec_offload *offload_info); 6262306a36Sopenharmony_ciint nfp_net_ipsec_rx(struct nfp_meta_parsed *meta, struct sk_buff *skb); 6362306a36Sopenharmony_ci#endif 6462306a36Sopenharmony_ci 6562306a36Sopenharmony_ci#endif 66