1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* Atlantic Network Driver |
3 | * Copyright (C) 2020 Marvell International Ltd. |
4 | */ |
5 | |
6 | #ifndef __MACSEC_API_H__ |
7 | #define __MACSEC_API_H__ |
8 | |
9 | #include "aq_hw.h" |
10 | #include "macsec_struct.h" |
11 | |
12 | #define NUMROWS_INGRESSPRECTLFRECORD 24 |
13 | #define ROWOFFSET_INGRESSPRECTLFRECORD 0 |
14 | |
15 | #define NUMROWS_INGRESSPRECLASSRECORD 48 |
16 | #define ROWOFFSET_INGRESSPRECLASSRECORD 0 |
17 | |
18 | #define NUMROWS_INGRESSPOSTCLASSRECORD 48 |
19 | #define ROWOFFSET_INGRESSPOSTCLASSRECORD 0 |
20 | |
21 | #define NUMROWS_INGRESSSCRECORD 32 |
22 | #define ROWOFFSET_INGRESSSCRECORD 0 |
23 | |
24 | #define NUMROWS_INGRESSSARECORD 32 |
25 | #define ROWOFFSET_INGRESSSARECORD 32 |
26 | |
27 | #define NUMROWS_INGRESSSAKEYRECORD 32 |
28 | #define ROWOFFSET_INGRESSSAKEYRECORD 0 |
29 | |
30 | #define NUMROWS_INGRESSPOSTCTLFRECORD 24 |
31 | #define ROWOFFSET_INGRESSPOSTCTLFRECORD 0 |
32 | |
33 | #define NUMROWS_EGRESSCTLFRECORD 24 |
34 | #define ROWOFFSET_EGRESSCTLFRECORD 0 |
35 | |
36 | #define NUMROWS_EGRESSCLASSRECORD 48 |
37 | #define ROWOFFSET_EGRESSCLASSRECORD 0 |
38 | |
39 | #define NUMROWS_EGRESSSCRECORD 32 |
40 | #define ROWOFFSET_EGRESSSCRECORD 0 |
41 | |
42 | #define NUMROWS_EGRESSSARECORD 32 |
43 | #define ROWOFFSET_EGRESSSARECORD 32 |
44 | |
45 | #define NUMROWS_EGRESSSAKEYRECORD 32 |
46 | #define ROWOFFSET_EGRESSSAKEYRECORD 96 |
47 | |
48 | /*! Read the raw table data from the specified row of the Egress CTL |
49 | * Filter table, and unpack it into the fields of rec. |
50 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
51 | * table_index - The table row to read (max 23). |
52 | */ |
53 | int aq_mss_get_egress_ctlf_record(struct aq_hw_s *hw, |
54 | struct aq_mss_egress_ctlf_record *rec, |
55 | u16 table_index); |
56 | |
57 | /*! Pack the fields of rec, and write the packed data into the |
58 | * specified row of the Egress CTL Filter table. |
59 | * rec - [IN] The bitfield values to write to the table row. |
60 | * table_index - The table row to write(max 23). |
61 | */ |
62 | int aq_mss_set_egress_ctlf_record(struct aq_hw_s *hw, |
63 | const struct aq_mss_egress_ctlf_record *rec, |
64 | u16 table_index); |
65 | |
66 | /*! Read the raw table data from the specified row of the Egress |
67 | * Packet Classifier table, and unpack it into the fields of rec. |
68 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
69 | * table_index - The table row to read (max 47). |
70 | */ |
71 | int aq_mss_get_egress_class_record(struct aq_hw_s *hw, |
72 | struct aq_mss_egress_class_record *rec, |
73 | u16 table_index); |
74 | |
75 | /*! Pack the fields of rec, and write the packed data into the |
76 | * specified row of the Egress Packet Classifier table. |
77 | * rec - [IN] The bitfield values to write to the table row. |
78 | * table_index - The table row to write (max 47). |
79 | */ |
80 | int aq_mss_set_egress_class_record(struct aq_hw_s *hw, |
81 | const struct aq_mss_egress_class_record *rec, |
82 | u16 table_index); |
83 | |
84 | /*! Read the raw table data from the specified row of the Egress SC |
85 | * Lookup table, and unpack it into the fields of rec. |
86 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
87 | * table_index - The table row to read (max 31). |
88 | */ |
89 | int aq_mss_get_egress_sc_record(struct aq_hw_s *hw, |
90 | struct aq_mss_egress_sc_record *rec, |
91 | u16 table_index); |
92 | |
93 | /*! Pack the fields of rec, and write the packed data into the |
94 | * specified row of the Egress SC Lookup table. |
95 | * rec - [IN] The bitfield values to write to the table row. |
96 | * table_index - The table row to write (max 31). |
97 | */ |
98 | int aq_mss_set_egress_sc_record(struct aq_hw_s *hw, |
99 | const struct aq_mss_egress_sc_record *rec, |
100 | u16 table_index); |
101 | |
102 | /*! Read the raw table data from the specified row of the Egress SA |
103 | * Lookup table, and unpack it into the fields of rec. |
104 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
105 | * table_index - The table row to read (max 31). |
106 | */ |
107 | int aq_mss_get_egress_sa_record(struct aq_hw_s *hw, |
108 | struct aq_mss_egress_sa_record *rec, |
109 | u16 table_index); |
110 | |
111 | /*! Pack the fields of rec, and write the packed data into the |
112 | * specified row of the Egress SA Lookup table. |
113 | * rec - [IN] The bitfield values to write to the table row. |
114 | * table_index - The table row to write (max 31). |
115 | */ |
116 | int aq_mss_set_egress_sa_record(struct aq_hw_s *hw, |
117 | const struct aq_mss_egress_sa_record *rec, |
118 | u16 table_index); |
119 | |
120 | /*! Read the raw table data from the specified row of the Egress SA |
121 | * Key Lookup table, and unpack it into the fields of rec. |
122 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
123 | * table_index - The table row to read (max 31). |
124 | */ |
125 | int aq_mss_get_egress_sakey_record(struct aq_hw_s *hw, |
126 | struct aq_mss_egress_sakey_record *rec, |
127 | u16 table_index); |
128 | |
129 | /*! Pack the fields of rec, and write the packed data into the |
130 | * specified row of the Egress SA Key Lookup table. |
131 | * rec - [IN] The bitfield values to write to the table row. |
132 | * table_index - The table row to write (max 31). |
133 | */ |
134 | int aq_mss_set_egress_sakey_record(struct aq_hw_s *hw, |
135 | const struct aq_mss_egress_sakey_record *rec, |
136 | u16 table_index); |
137 | |
138 | /*! Read the raw table data from the specified row of the Ingress |
139 | * Pre-MACSec CTL Filter table, and unpack it into the fields of rec. |
140 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
141 | * table_index - The table row to read (max 23). |
142 | */ |
143 | int aq_mss_get_ingress_prectlf_record(struct aq_hw_s *hw, |
144 | struct aq_mss_ingress_prectlf_record *rec, |
145 | u16 table_index); |
146 | |
147 | /*! Pack the fields of rec, and write the packed data into the |
148 | * specified row of the Ingress Pre-MACSec CTL Filter table. |
149 | * rec - [IN] The bitfield values to write to the table row. |
150 | * table_index - The table row to write(max 23). |
151 | */ |
152 | int aq_mss_set_ingress_prectlf_record(struct aq_hw_s *hw, |
153 | const struct aq_mss_ingress_prectlf_record *rec, |
154 | u16 table_index); |
155 | |
156 | /*! Read the raw table data from the specified row of the Ingress |
157 | * Pre-MACSec Packet Classifier table, and unpack it into the fields of rec. |
158 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
159 | * table_index - The table row to read (max 47). |
160 | */ |
161 | int aq_mss_get_ingress_preclass_record(struct aq_hw_s *hw, |
162 | struct aq_mss_ingress_preclass_record *rec, |
163 | u16 table_index); |
164 | |
165 | /*! Pack the fields of rec, and write the packed data into the |
166 | * specified row of the Ingress Pre-MACSec Packet Classifier table. |
167 | * rec - [IN] The bitfield values to write to the table row. |
168 | * table_index - The table row to write(max 47). |
169 | */ |
170 | int aq_mss_set_ingress_preclass_record(struct aq_hw_s *hw, |
171 | const struct aq_mss_ingress_preclass_record *rec, |
172 | u16 table_index); |
173 | |
174 | /*! Read the raw table data from the specified row of the Ingress SC |
175 | * Lookup table, and unpack it into the fields of rec. |
176 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
177 | * table_index - The table row to read (max 31). |
178 | */ |
179 | int aq_mss_get_ingress_sc_record(struct aq_hw_s *hw, |
180 | struct aq_mss_ingress_sc_record *rec, |
181 | u16 table_index); |
182 | |
183 | /*! Pack the fields of rec, and write the packed data into the |
184 | * specified row of the Ingress SC Lookup table. |
185 | * rec - [IN] The bitfield values to write to the table row. |
186 | * table_index - The table row to write(max 31). |
187 | */ |
188 | int aq_mss_set_ingress_sc_record(struct aq_hw_s *hw, |
189 | const struct aq_mss_ingress_sc_record *rec, |
190 | u16 table_index); |
191 | |
192 | /*! Read the raw table data from the specified row of the Ingress SA |
193 | * Lookup table, and unpack it into the fields of rec. |
194 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
195 | * table_index - The table row to read (max 31). |
196 | */ |
197 | int aq_mss_get_ingress_sa_record(struct aq_hw_s *hw, |
198 | struct aq_mss_ingress_sa_record *rec, |
199 | u16 table_index); |
200 | |
201 | /*! Pack the fields of rec, and write the packed data into the |
202 | * specified row of the Ingress SA Lookup table. |
203 | * rec - [IN] The bitfield values to write to the table row. |
204 | * table_index - The table row to write(max 31). |
205 | */ |
206 | int aq_mss_set_ingress_sa_record(struct aq_hw_s *hw, |
207 | const struct aq_mss_ingress_sa_record *rec, |
208 | u16 table_index); |
209 | |
210 | /*! Read the raw table data from the specified row of the Ingress SA |
211 | * Key Lookup table, and unpack it into the fields of rec. |
212 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
213 | * table_index - The table row to read (max 31). |
214 | */ |
215 | int aq_mss_get_ingress_sakey_record(struct aq_hw_s *hw, |
216 | struct aq_mss_ingress_sakey_record *rec, |
217 | u16 table_index); |
218 | |
219 | /*! Pack the fields of rec, and write the packed data into the |
220 | * specified row of the Ingress SA Key Lookup table. |
221 | * rec - [IN] The bitfield values to write to the table row. |
222 | * table_index - The table row to write(max 31). |
223 | */ |
224 | int aq_mss_set_ingress_sakey_record(struct aq_hw_s *hw, |
225 | const struct aq_mss_ingress_sakey_record *rec, |
226 | u16 table_index); |
227 | |
228 | /*! Read the raw table data from the specified row of the Ingress |
229 | * Post-MACSec Packet Classifier table, and unpack it into the |
230 | * fields of rec. |
231 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
232 | * table_index - The table row to read (max 48). |
233 | */ |
234 | int aq_mss_get_ingress_postclass_record(struct aq_hw_s *hw, |
235 | struct aq_mss_ingress_postclass_record *rec, |
236 | u16 table_index); |
237 | |
238 | /*! Pack the fields of rec, and write the packed data into the |
239 | * specified row of the Ingress Post-MACSec Packet Classifier table. |
240 | * rec - [IN] The bitfield values to write to the table row. |
241 | * table_index - The table row to write(max 48). |
242 | */ |
243 | int aq_mss_set_ingress_postclass_record(struct aq_hw_s *hw, |
244 | const struct aq_mss_ingress_postclass_record *rec, |
245 | u16 table_index); |
246 | |
247 | /*! Read the raw table data from the specified row of the Ingress |
248 | * Post-MACSec CTL Filter table, and unpack it into the fields of rec. |
249 | * rec - [OUT] The raw table row data will be unpacked into the fields of rec. |
250 | * table_index - The table row to read (max 23). |
251 | */ |
252 | int aq_mss_get_ingress_postctlf_record(struct aq_hw_s *hw, |
253 | struct aq_mss_ingress_postctlf_record *rec, |
254 | u16 table_index); |
255 | |
256 | /*! Pack the fields of rec, and write the packed data into the |
257 | * specified row of the Ingress Post-MACSec CTL Filter table. |
258 | * rec - [IN] The bitfield values to write to the table row. |
259 | * table_index - The table row to write(max 23). |
260 | */ |
261 | int aq_mss_set_ingress_postctlf_record(struct aq_hw_s *hw, |
262 | const struct aq_mss_ingress_postctlf_record *rec, |
263 | u16 table_index); |
264 | |
265 | /*! Read the counters for the specified SC, and unpack them into the |
266 | * fields of counters. |
267 | * counters - [OUT] The raw table row data will be unpacked here. |
268 | * sc_index - The table row to read (max 31). |
269 | */ |
270 | int aq_mss_get_egress_sc_counters(struct aq_hw_s *hw, |
271 | struct aq_mss_egress_sc_counters *counters, |
272 | u16 sc_index); |
273 | |
274 | /*! Read the counters for the specified SA, and unpack them into the |
275 | * fields of counters. |
276 | * counters - [OUT] The raw table row data will be unpacked here. |
277 | * sa_index - The table row to read (max 31). |
278 | */ |
279 | int aq_mss_get_egress_sa_counters(struct aq_hw_s *hw, |
280 | struct aq_mss_egress_sa_counters *counters, |
281 | u16 sa_index); |
282 | |
283 | /*! Read the counters for the common egress counters, and unpack them |
284 | * into the fields of counters. |
285 | * counters - [OUT] The raw table row data will be unpacked here. |
286 | */ |
287 | int aq_mss_get_egress_common_counters(struct aq_hw_s *hw, |
288 | struct aq_mss_egress_common_counters *counters); |
289 | |
290 | /*! Clear all Egress counters to 0.*/ |
291 | int aq_mss_clear_egress_counters(struct aq_hw_s *hw); |
292 | |
293 | /*! Read the counters for the specified SA, and unpack them into the |
294 | * fields of counters. |
295 | * counters - [OUT] The raw table row data will be unpacked here. |
296 | * sa_index - The table row to read (max 31). |
297 | */ |
298 | int aq_mss_get_ingress_sa_counters(struct aq_hw_s *hw, |
299 | struct aq_mss_ingress_sa_counters *counters, |
300 | u16 sa_index); |
301 | |
302 | /*! Read the counters for the common ingress counters, and unpack them |
303 | * into the fields of counters. |
304 | * counters - [OUT] The raw table row data will be unpacked here. |
305 | */ |
306 | int aq_mss_get_ingress_common_counters(struct aq_hw_s *hw, |
307 | struct aq_mss_ingress_common_counters *counters); |
308 | |
309 | /*! Clear all Ingress counters to 0. */ |
310 | int aq_mss_clear_ingress_counters(struct aq_hw_s *hw); |
311 | |
312 | /*! Get Egress SA expired. */ |
313 | int aq_mss_get_egress_sa_expired(struct aq_hw_s *hw, u32 *expired); |
314 | /*! Get Egress SA threshold expired. */ |
315 | int aq_mss_get_egress_sa_threshold_expired(struct aq_hw_s *hw, |
316 | u32 *expired); |
317 | /*! Set Egress SA expired. */ |
318 | int aq_mss_set_egress_sa_expired(struct aq_hw_s *hw, u32 expired); |
319 | /*! Set Egress SA threshold expired. */ |
320 | int aq_mss_set_egress_sa_threshold_expired(struct aq_hw_s *hw, |
321 | u32 expired); |
322 | |
323 | #endif /* __MACSEC_API_H__ */ |
324 | |