File Index
Files and directories
Sign in
FILE

fw.h

File preview with syntax highlighting.

linux-6.19.14/drivers/net/ethernet/netronome/nfp/bpf/fw.h 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_H
  5#define NFP_BPF_FW_H 1
  6
  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 breaking
 12 * our FW ABI.  In that case we will do translation in the driver.
 13 */
 14#define NFP_BPF_SCALAR_VALUE		1
 15#define NFP_BPF_MAP_VALUE		4
 16#define NFP_BPF_STACK			6
 17#define NFP_BPF_PACKET_DATA		8
 18
 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 messages
 56 */
 57
 58/* BPF ABIv2 fixed-length control message fields */
 59#define CMSG_MAP_KEY_LW			16
 60#define CMSG_MAP_VALUE_LW		16
 61
 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#endif
~/ Read-only file preview.