net/softnic: fix useless address check
[dpdk.git] / drivers / net / dpaa2 / mc / fsl_dpdmux_cmd.h
1 /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
2  *
3  * Copyright 2013-2016 Freescale Semiconductor Inc.
4  * Copyright 2018-2021 NXP
5  *
6  */
7 #ifndef _FSL_DPDMUX_CMD_H
8 #define _FSL_DPDMUX_CMD_H
9
10 /* DPDMUX Version */
11 #define DPDMUX_VER_MAJOR                6
12 #define DPDMUX_VER_MINOR                9
13
14 #define DPDMUX_CMD_BASE_VERSION         1
15 #define DPDMUX_CMD_VERSION_2            2
16 #define DPDMUX_CMD_VERSION_3            3
17 #define DPDMUX_CMD_VERSION_4            4
18 #define DPDMUX_CMD_ID_OFFSET            4
19
20 #define DPDMUX_CMD(id)  (((id) << DPDMUX_CMD_ID_OFFSET) |\
21                                 DPDMUX_CMD_BASE_VERSION)
22 #define DPDMUX_CMD_V2(id) (((id) << DPDMUX_CMD_ID_OFFSET) | \
23                                 DPDMUX_CMD_VERSION_2)
24 #define DPDMUX_CMD_V3(id)       (((id) << DPDMUX_CMD_ID_OFFSET) |\
25                                 DPDMUX_CMD_VERSION_3)
26 #define DPDMUX_CMD_V4(id)       (((id) << DPDMUX_CMD_ID_OFFSET) |\
27                                 DPDMUX_CMD_VERSION_4)
28
29 /* Command IDs */
30 #define DPDMUX_CMDID_CLOSE                      DPDMUX_CMD(0x800)
31 #define DPDMUX_CMDID_OPEN                       DPDMUX_CMD(0x806)
32 #define DPDMUX_CMDID_CREATE                     DPDMUX_CMD_V4(0x906)
33 #define DPDMUX_CMDID_DESTROY                    DPDMUX_CMD(0x986)
34 #define DPDMUX_CMDID_GET_API_VERSION            DPDMUX_CMD(0xa06)
35
36 #define DPDMUX_CMDID_ENABLE                     DPDMUX_CMD(0x002)
37 #define DPDMUX_CMDID_DISABLE                    DPDMUX_CMD(0x003)
38 #define DPDMUX_CMDID_GET_ATTR                   DPDMUX_CMD_V2(0x004)
39 #define DPDMUX_CMDID_RESET                      DPDMUX_CMD(0x005)
40 #define DPDMUX_CMDID_IS_ENABLED                 DPDMUX_CMD(0x006)
41 #define DPDMUX_CMDID_SET_MAX_FRAME_LENGTH       DPDMUX_CMD(0x0a1)
42 #define DPDMUX_CMDID_GET_MAX_FRAME_LENGTH       DPDMUX_CMD(0x0a2)
43
44 #define DPDMUX_CMDID_UL_RESET_COUNTERS          DPDMUX_CMD(0x0a3)
45
46 #define DPDMUX_CMDID_IF_SET_ACCEPTED_FRAMES     DPDMUX_CMD(0x0a7)
47 #define DPDMUX_CMDID_IF_GET_ATTR                DPDMUX_CMD(0x0a8)
48 #define DPDMUX_CMDID_IF_ENABLE                  DPDMUX_CMD(0x0a9)
49 #define DPDMUX_CMDID_IF_DISABLE                 DPDMUX_CMD(0x0aa)
50
51 #define DPDMUX_CMDID_IF_ADD_L2_RULE             DPDMUX_CMD(0x0b0)
52 #define DPDMUX_CMDID_IF_REMOVE_L2_RULE          DPDMUX_CMD(0x0b1)
53 #define DPDMUX_CMDID_IF_GET_COUNTER             DPDMUX_CMD(0x0b2)
54 #define DPDMUX_CMDID_IF_SET_LINK_CFG            DPDMUX_CMD_V2(0x0b3)
55 #define DPDMUX_CMDID_IF_GET_LINK_STATE          DPDMUX_CMD_V2(0x0b4)
56
57 #define DPDMUX_CMDID_SET_CUSTOM_KEY             DPDMUX_CMD(0x0b5)
58 #define DPDMUX_CMDID_ADD_CUSTOM_CLS_ENTRY       DPDMUX_CMD_V2(0x0b6)
59 #define DPDMUX_CMDID_REMOVE_CUSTOM_CLS_ENTRY    DPDMUX_CMD(0x0b7)
60
61 #define DPDMUX_CMDID_IF_SET_DEFAULT             DPDMUX_CMD(0x0b8)
62 #define DPDMUX_CMDID_IF_GET_DEFAULT             DPDMUX_CMD(0x0b9)
63
64 #define DPDMUX_CMDID_SET_RESETABLE              DPDMUX_CMD(0x0ba)
65 #define DPDMUX_CMDID_GET_RESETABLE              DPDMUX_CMD(0x0bb)
66 #define DPDMUX_CMDID_SET_ERRORS_BEHAVIOR        DPDMUX_CMD(0x0bf)
67
68 #define DPDMUX_MASK(field)        \
69         GENMASK(DPDMUX_##field##_SHIFT + DPDMUX_##field##_SIZE - 1, \
70                 DPDMUX_##field##_SHIFT)
71 #define dpdmux_set_field(var, field, val) \
72         ((var) |= (((val) << DPDMUX_##field##_SHIFT) & DPDMUX_MASK(field)))
73 #define dpdmux_get_field(var, field)      \
74         (((var) & DPDMUX_MASK(field)) >> DPDMUX_##field##_SHIFT)
75
76 #pragma pack(push, 1)
77 struct dpdmux_cmd_open {
78         uint32_t dpdmux_id;
79 };
80
81 struct dpdmux_cmd_create {
82         uint8_t method;
83         uint8_t manip;
84         uint16_t num_ifs;
85         uint16_t default_if;
86         uint16_t pad;
87
88         uint16_t adv_max_dmat_entries;
89         uint16_t adv_max_mc_groups;
90         uint16_t adv_max_vlan_ids;
91         uint16_t mem_size;
92
93         uint64_t options;
94 };
95
96 struct dpdmux_cmd_destroy {
97         uint32_t dpdmux_id;
98 };
99
100 #define DPDMUX_ENABLE_SHIFT     0
101 #define DPDMUX_ENABLE_SIZE      1
102 #define DPDMUX_IS_DEFAULT_SHIFT         1
103 #define DPDMUX_IS_DEFAULT_SIZE          1
104
105 struct dpdmux_rsp_is_enabled {
106         uint8_t en;
107 };
108
109 struct dpdmux_rsp_get_attr {
110         uint8_t method;
111         uint8_t manip;
112         uint16_t num_ifs;
113         uint16_t mem_size;
114         uint16_t default_if;
115
116         uint64_t pad1;
117
118         uint32_t id;
119         uint32_t pad2;
120
121         uint64_t options;
122 };
123
124 struct dpdmux_cmd_set_max_frame_length {
125         uint16_t max_frame_length;
126 };
127
128 struct dpdmux_cmd_get_max_frame_len {
129         uint16_t if_id;
130 };
131
132 struct dpdmux_rsp_get_max_frame_len {
133         uint16_t max_len;
134 };
135
136 #define DPDMUX_ACCEPTED_FRAMES_TYPE_SHIFT       0
137 #define DPDMUX_ACCEPTED_FRAMES_TYPE_SIZE        4
138 #define DPDMUX_UNACCEPTED_FRAMES_ACTION_SHIFT   4
139 #define DPDMUX_UNACCEPTED_FRAMES_ACTION_SIZE    4
140
141 struct dpdmux_cmd_if_set_accepted_frames {
142         uint16_t if_id;
143         uint8_t frames_options;
144 };
145
146 struct dpdmux_cmd_if {
147         uint16_t if_id;
148 };
149
150 struct dpdmux_rsp_if_get_attr {
151         uint8_t pad[3];
152         uint8_t enabled;
153         uint8_t pad1[3];
154         uint8_t accepted_frames_type;
155         uint32_t rate;
156 };
157
158 struct dpdmux_cmd_if_l2_rule {
159         uint16_t if_id;
160         uint8_t mac_addr5;
161         uint8_t mac_addr4;
162         uint8_t mac_addr3;
163         uint8_t mac_addr2;
164         uint8_t mac_addr1;
165         uint8_t mac_addr0;
166
167         uint32_t pad;
168         uint16_t vlan_id;
169 };
170
171 struct dpdmux_cmd_if_get_counter {
172         uint16_t if_id;
173         uint8_t counter_type;
174 };
175
176 struct dpdmux_rsp_if_get_counter {
177         uint64_t pad;
178         uint64_t counter;
179 };
180
181 struct dpdmux_cmd_if_set_link_cfg {
182         uint16_t if_id;
183         uint16_t pad[3];
184
185         uint32_t rate;
186         uint32_t pad1;
187
188         uint64_t options;
189         uint64_t advertising;
190 };
191
192 struct dpdmux_cmd_if_get_link_state {
193         uint16_t if_id;
194 };
195
196 #define DPDMUX_UP_SHIFT                         0
197 #define DPDMUX_UP_SIZE                          1
198 #define DPDMUX_STATE_VALID_SHIFT        1
199 #define DPDMUX_STATE_VALID_SIZE         1
200 struct dpdmux_rsp_if_get_link_state {
201         uint32_t pad;
202         uint8_t up;
203         uint8_t pad1[3];
204
205         uint32_t rate;
206         uint32_t pad2;
207
208         uint64_t options;
209         uint64_t supported;
210         uint64_t advertising;
211 };
212
213 struct dpdmux_rsp_get_api_version {
214         uint16_t major;
215         uint16_t minor;
216 };
217
218 struct dpdmux_set_custom_key {
219         uint64_t pad[6];
220         uint64_t key_cfg_iova;
221 };
222
223 struct dpdmux_cmd_add_custom_cls_entry {
224         uint8_t pad[3];
225         uint8_t key_size;
226         uint16_t entry_index;
227         uint16_t dest_if;
228         uint64_t key_iova;
229         uint64_t mask_iova;
230 };
231
232 struct dpdmux_cmd_remove_custom_cls_entry {
233         uint8_t pad[3];
234         uint8_t key_size;
235         uint32_t pad1;
236         uint64_t key_iova;
237         uint64_t mask_iova;
238 };
239
240 #define DPDMUX_SKIP_RESET_FLAGS_SHIFT    0
241 #define DPDMUX_SKIP_RESET_FLAGS_SIZE     3
242
243 struct dpdmux_cmd_set_skip_reset_flags {
244         uint8_t skip_reset_flags;
245 };
246
247 struct dpdmux_rsp_get_skip_reset_flags {
248         uint8_t skip_reset_flags;
249 };
250
251 #define DPDMUX_ERROR_ACTION_SHIFT               0
252 #define DPDMUX_ERROR_ACTION_SIZE                4
253
254 struct dpdmux_cmd_set_errors_behavior {
255         uint32_t errors;
256         uint16_t flags;
257         uint16_t if_id;
258 };
259
260 #pragma pack(pop)
261 #endif /* _FSL_DPDMUX_CMD_H */