Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 232eeb1f authored by Jakub Kicinski's avatar Jakub Kicinski Committed by David S. Miller
Browse files

nfp: add tls init code



Add FW ABI defines and code for basic init of TLS offload.

Signed-off-by: default avatarJakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: default avatarDirk van der Merwe <dirk.vandermerwe@netronome.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d9d2d4c5
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ config NFP
	tristate "Netronome(R) NFP4000/NFP6000 NIC driver"
	depends on PCI && PCI_MSI
	depends on VXLAN || VXLAN=n
	depends on TLS && TLS_DEVICE || TLS_DEVICE=n
	select NET_DEVLINK
	---help---
	  This driver supports the Netronome(R) NFP4000/NFP6000 based
+5 −0
Original line number Diff line number Diff line
@@ -35,6 +35,11 @@ nfp-objs := \
	    nfp_shared_buf.o \
	    nic/main.o

ifeq ($(CONFIG_TLS_DEVICE),y)
nfp-objs += \
	    crypto/tls.o
endif

ifeq ($(CONFIG_NFP_APP_FLOWER),y)
nfp-objs += \
	    flower/action.o \
+4 −0
Original line number Diff line number Diff line
@@ -22,6 +22,10 @@ enum nfp_ccm_type {
	NFP_CCM_TYPE_BPF_MAP_GETNEXT	= 6,
	NFP_CCM_TYPE_BPF_MAP_GETFIRST	= 7,
	NFP_CCM_TYPE_BPF_BPF_EVENT	= 8,
	NFP_CCM_TYPE_CRYPTO_RESET	= 9,
	NFP_CCM_TYPE_CRYPTO_ADD		= 10,
	NFP_CCM_TYPE_CRYPTO_DEL		= 11,
	NFP_CCM_TYPE_CRYPTO_UPDATE	= 12,
	__NFP_CCM_TYPE_MAX,
};

+16 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/* Copyright (C) 2019 Netronome Systems, Inc. */

#ifndef NFP_CRYPTO_H
#define NFP_CRYPTO_H 1

#ifdef CONFIG_TLS_DEVICE
int nfp_net_tls_init(struct nfp_net *nn);
#else
static inline int nfp_net_tls_init(struct nfp_net *nn)
{
	return 0;
}
#endif

#endif
+82 −0
Original line number Diff line number Diff line
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/* Copyright (C) 2019 Netronome Systems, Inc. */

#ifndef NFP_CRYPTO_FW_H
#define NFP_CRYPTO_FW_H 1

#include "../ccm.h"

#define NFP_NET_CRYPTO_OP_TLS_1_2_AES_GCM_128_ENC	0
#define NFP_NET_CRYPTO_OP_TLS_1_2_AES_GCM_128_DEC	1

struct nfp_crypto_reply_simple {
	struct nfp_ccm_hdr hdr;
	__be32 error;
};

struct nfp_crypto_req_reset {
	struct nfp_ccm_hdr hdr;
	__be32 ep_id;
};

#define NFP_NET_TLS_IPVER		GENMASK(15, 12)
#define NFP_NET_TLS_VLAN		GENMASK(11, 0)
#define NFP_NET_TLS_VLAN_UNUSED			4095

struct nfp_crypto_req_add_front {
	struct nfp_ccm_hdr hdr;
	__be32 ep_id;
	u8 resv[3];
	u8 opcode;
	u8 key_len;
	__be16 ipver_vlan __packed;
	u8 l4_proto;
};

struct nfp_crypto_req_add_back {
	__be16 src_port;
	__be16 dst_port;
	__be32 key[8];
	__be32 salt;
	__be32 iv[2];
	__be32 counter;
	__be32 rec_no[2];
	__be32 tcp_seq;
};

struct nfp_crypto_req_add_v4 {
	struct nfp_crypto_req_add_front front;
	__be32 src_ip;
	__be32 dst_ip;
	struct nfp_crypto_req_add_back back;
};

struct nfp_crypto_req_add_v6 {
	struct nfp_crypto_req_add_front front;
	__be32 src_ip[4];
	__be32 dst_ip[4];
	struct nfp_crypto_req_add_back back;
};

struct nfp_crypto_reply_add {
	struct nfp_ccm_hdr hdr;
	__be32 error;
	__be32 handle[2];
};

struct nfp_crypto_req_del {
	struct nfp_ccm_hdr hdr;
	__be32 ep_id;
	__be32 handle[2];
};

struct nfp_crypto_req_update {
	struct nfp_ccm_hdr hdr;
	__be32 ep_id;
	u8 resv[3];
	u8 opcode;
	__be32 handle[2];
	__be32 rec_no[2];
	__be32 tcp_seq;
};
#endif
Loading