brintos

brintos / linux-shallow public Read only

0
0
Text · 2.5 KiB · 4268a7e Raw
126 lines · c
1/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */2/* Copyright (C) 2017-2018 Netronome Systems, Inc. */3 4#ifndef NFP_BPF_FW_H5#define NFP_BPF_FW_H 16 7#include <linux/bitops.h>8#include <linux/types.h>9#include "../ccm.h"10 11/* Kernel's enum bpf_reg_type is not uABI so people may change it breaking12 * our FW ABI.  In that case we will do translation in the driver.13 */14#define NFP_BPF_SCALAR_VALUE		115#define NFP_BPF_MAP_VALUE		416#define NFP_BPF_STACK			617#define NFP_BPF_PACKET_DATA		818 19enum bpf_cap_tlv_type {20	NFP_BPF_CAP_TYPE_FUNC		= 1,21	NFP_BPF_CAP_TYPE_ADJUST_HEAD	= 2,22	NFP_BPF_CAP_TYPE_MAPS		= 3,23	NFP_BPF_CAP_TYPE_RANDOM		= 4,24	NFP_BPF_CAP_TYPE_QUEUE_SELECT	= 5,25	NFP_BPF_CAP_TYPE_ADJUST_TAIL	= 6,26	NFP_BPF_CAP_TYPE_ABI_VERSION	= 7,27	NFP_BPF_CAP_TYPE_CMSG_MULTI_ENT	= 8,28};29 30struct nfp_bpf_cap_tlv_func {31	__le32 func_id;32	__le32 func_addr;33};34 35struct nfp_bpf_cap_tlv_adjust_head {36	__le32 flags;37	__le32 off_min;38	__le32 off_max;39	__le32 guaranteed_sub;40	__le32 guaranteed_add;41};42 43#define NFP_BPF_ADJUST_HEAD_NO_META	BIT(0)44 45struct nfp_bpf_cap_tlv_maps {46	__le32 types;47	__le32 max_maps;48	__le32 max_elems;49	__le32 max_key_sz;50	__le32 max_val_sz;51	__le32 max_elem_sz;52};53 54/*55 * Types defined for map related control messages56 */57 58/* BPF ABIv2 fixed-length control message fields */59#define CMSG_MAP_KEY_LW			1660#define CMSG_MAP_VALUE_LW		1661 62enum nfp_bpf_cmsg_status {63	CMSG_RC_SUCCESS			= 0,64	CMSG_RC_ERR_MAP_FD		= 1,65	CMSG_RC_ERR_MAP_NOENT		= 2,66	CMSG_RC_ERR_MAP_ERR		= 3,67	CMSG_RC_ERR_MAP_PARSE		= 4,68	CMSG_RC_ERR_MAP_EXIST		= 5,69	CMSG_RC_ERR_MAP_NOMEM		= 6,70	CMSG_RC_ERR_MAP_E2BIG		= 7,71};72 73struct cmsg_reply_map_simple {74	struct nfp_ccm_hdr hdr;75	__be32 rc;76};77 78struct cmsg_req_map_alloc_tbl {79	struct nfp_ccm_hdr hdr;80	__be32 key_size;		/* in bytes */81	__be32 value_size;		/* in bytes */82	__be32 max_entries;83	__be32 map_type;84	__be32 map_flags;		/* reserved */85};86 87struct cmsg_reply_map_alloc_tbl {88	struct cmsg_reply_map_simple reply_hdr;89	__be32 tid;90};91 92struct cmsg_req_map_free_tbl {93	struct nfp_ccm_hdr hdr;94	__be32 tid;95};96 97struct cmsg_reply_map_free_tbl {98	struct cmsg_reply_map_simple reply_hdr;99	__be32 count;100};101 102struct cmsg_req_map_op {103	struct nfp_ccm_hdr hdr;104	__be32 tid;105	__be32 count;106	__be32 flags;107	u8 data[];108};109 110struct cmsg_reply_map_op {111	struct cmsg_reply_map_simple reply_hdr;112	__be32 count;113	__be32 resv;114	u8 data[];115};116 117struct cmsg_bpf_event {118	struct nfp_ccm_hdr hdr;119	__be32 cpu_id;120	__be64 map_ptr;121	__be32 data_size;122	__be32 pkt_size;123	u8 data[];124};125#endif126