summaryrefslogtreecommitdiffstats
path: root/examples/ip_pipeline/pipeline/pipeline_flow_classification_be.h
blob: 18f5bb42fad00897f93de3850edddf70bea32241 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
/* SPDX-License-Identifier: BSD-3-Clause
 * Copyright(c) 2010-2015 Intel Corporation
 */

#ifndef __INCLUDE_PIPELINE_FLOW_CLASSIFICATION_BE_H__
#define __INCLUDE_PIPELINE_FLOW_CLASSIFICATION_BE_H__

#include "pipeline_common_be.h"

enum pipeline_fc_msg_req_type {
	PIPELINE_FC_MSG_REQ_FLOW_ADD = 0,
	PIPELINE_FC_MSG_REQ_FLOW_ADD_BULK,
	PIPELINE_FC_MSG_REQ_FLOW_DEL,
	PIPELINE_FC_MSG_REQ_FLOW_ADD_DEFAULT,
	PIPELINE_FC_MSG_REQ_FLOW_DEL_DEFAULT,
	PIPELINE_FC_MSG_REQS,
};

#ifndef PIPELINE_FC_FLOW_KEY_MAX_SIZE
#define PIPELINE_FC_FLOW_KEY_MAX_SIZE            64
#endif

/*
 * MSG ADD
 */
struct pipeline_fc_add_msg_req {
	enum pipeline_msg_req_type type;
	enum pipeline_fc_msg_req_type subtype;

	uint8_t key[PIPELINE_FC_FLOW_KEY_MAX_SIZE];

	uint32_t port_id;
	uint32_t flow_id;
};

struct pipeline_fc_add_msg_rsp {
	int status;
	int key_found;
	void *entry_ptr;
};

/*
 * MSG ADD BULK
 */
struct pipeline_fc_add_bulk_flow_req {
	uint8_t key[PIPELINE_FC_FLOW_KEY_MAX_SIZE];
	uint32_t port_id;
	uint32_t flow_id;
};

struct pipeline_fc_add_bulk_flow_rsp {
	int key_found;
	void *entry_ptr;
};

struct pipeline_fc_add_bulk_msg_req {
	enum pipeline_msg_req_type type;
	enum pipeline_fc_msg_req_type subtype;

	struct pipeline_fc_add_bulk_flow_req *req;
	struct pipeline_fc_add_bulk_flow_rsp *rsp;
	uint32_t n_keys;
};

struct pipeline_fc_add_bulk_msg_rsp {
	uint32_t n_keys;
};

/*
 * MSG DEL
 */
struct pipeline_fc_del_msg_req {
	enum pipeline_msg_req_type type;
	enum pipeline_fc_msg_req_type subtype;

	uint8_t key[PIPELINE_FC_FLOW_KEY_MAX_SIZE];
};

struct pipeline_fc_del_msg_rsp {
	int status;
	int key_found;
};

/*
 * MSG ADD DEFAULT
 */
struct pipeline_fc_add_default_msg_req {
	enum pipeline_msg_req_type type;
	enum pipeline_fc_msg_req_type subtype;

	uint32_t port_id;
};

struct pipeline_fc_add_default_msg_rsp {
	int status;
	void *entry_ptr;
};

/*
 * MSG DEL DEFAULT
 */
struct pipeline_fc_del_default_msg_req {
	enum pipeline_msg_req_type type;
	enum pipeline_fc_msg_req_type subtype;
};

struct pipeline_fc_del_default_msg_rsp {
	int status;
};

extern struct pipeline_be_ops pipeline_flow_classification_be_ops;

#endif