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 */
53int 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 */
62int 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 */
71int 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 */
80int 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 */
89int 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 */
98int 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 */
107int 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 */
116int 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 */
125int 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 */
134int 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 */
143int 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 */
152int 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 */
161int 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 */
170int 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 */
179int 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 */
188int 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 */
197int 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 */
206int 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 */
215int 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 */
224int 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 */
234int 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 */
243int 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 */
252int 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 */
261int 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 */
270int 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 */
279int 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 */
287int 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.*/
291int 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 */
298int 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 */
306int 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. */
310int aq_mss_clear_ingress_counters(struct aq_hw_s *hw);
311
312/*! Get Egress SA expired. */
313int aq_mss_get_egress_sa_expired(struct aq_hw_s *hw, u32 *expired);
314/*! Get Egress SA threshold expired. */
315int aq_mss_get_egress_sa_threshold_expired(struct aq_hw_s *hw,
316 u32 *expired);
317/*! Set Egress SA expired. */
318int aq_mss_set_egress_sa_expired(struct aq_hw_s *hw, u32 expired);
319/*! Set Egress SA threshold expired. */
320int aq_mss_set_egress_sa_threshold_expired(struct aq_hw_s *hw,
321 u32 expired);
322
323#endif /* __MACSEC_API_H__ */
324

source code of linux/drivers/net/ethernet/aquantia/atlantic/macsec/macsec_api.h