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