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

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

nfp: parse crypto opcode TLV



Parse TLV containing a bitmask of supported crypto operations.
The TLV contains a capability bitmask (supported operations)
and enabled bitmask.  Each operation describes the crypto
protocol quite exhaustively (protocol, AEAD, direction).

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 d3e4dfe0
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -103,6 +103,17 @@ int nfp_net_tlv_caps_parse(struct device *dev, u8 __iomem *ctrl_mem,
			if (length >= 4)
				caps->mbox_cmsg_types = readl(data);
			break;
		case NFP_NET_CFG_TLV_TYPE_CRYPTO_OPS:
			if (length < 32) {
				dev_err(dev,
					"CRYPTO OPS TLV should be at least 32B, is %dB offset:%u\n",
					length, offset);
				return -EINVAL;
			}

			caps->crypto_ops = readl(data);
			caps->crypto_enable_off = data - ctrl_mem + 16;
			break;
		default:
			if (!FIELD_GET(NFP_NET_CFG_TLV_HEADER_REQUIRED, hdr))
				break;
+10 −0
Original line number Diff line number Diff line
@@ -472,6 +472,11 @@
 * Variable, bitmap of control message types supported by the mailbox handler.
 * Bit 0 corresponds to message type 0, bit 1 to 1, etc.  Control messages are
 * encapsulated into simple TLVs, with an end TLV and written to the Mailbox.
 *
 * %NFP_NET_CFG_TLV_TYPE_CRYPTO_OPS:
 * 8 words, bitmaps of supported and enabled crypto operations.
 * First 16B (4 words) contains a bitmap of supported crypto operations,
 * and next 16B contain the enabled operations.
 */
#define NFP_NET_CFG_TLV_TYPE_UNKNOWN		0
#define NFP_NET_CFG_TLV_TYPE_RESERVED		1
@@ -482,6 +487,7 @@
#define NFP_NET_CFG_TLV_TYPE_EXPERIMENTAL1	6
#define NFP_NET_CFG_TLV_TYPE_REPR_CAP		7
#define NFP_NET_CFG_TLV_TYPE_MBOX_CMSG_TYPES	10
#define NFP_NET_CFG_TLV_TYPE_CRYPTO_OPS		11 /* see crypto/fw.h */

struct device;

@@ -492,6 +498,8 @@ struct device;
 * @mbox_len:		vNIC mailbox area length
 * @repr_cap:		capabilities for representors
 * @mbox_cmsg_types:	cmsgs which can be passed through the mailbox
 * @crypto_ops:		supported crypto operations
 * @crypto_enable_off:	offset of crypto ops enable region
 */
struct nfp_net_tlv_caps {
	u32 me_freq_mhz;
@@ -499,6 +507,8 @@ struct nfp_net_tlv_caps {
	unsigned int mbox_len;
	u32 repr_cap;
	u32 mbox_cmsg_types;
	u32 crypto_ops;
	unsigned int crypto_enable_off;
};

int nfp_net_tlv_caps_parse(struct device *dev, u8 __iomem *ctrl_mem,