Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/ncsw/inc/Peripherals/fm_macsec_ext.h
48375 views
1
/*
2
* Copyright 2008-2015 Freescale Semiconductor Inc.
3
*
4
* Redistribution and use in source and binary forms, with or without
5
* modification, are permitted provided that the following conditions are met:
6
* * Redistributions of source code must retain the above copyright
7
* notice, this list of conditions and the following disclaimer.
8
* * Redistributions in binary form must reproduce the above copyright
9
* notice, this list of conditions and the following disclaimer in the
10
* documentation and/or other materials provided with the distribution.
11
* * Neither the name of Freescale Semiconductor nor the
12
* names of its contributors may be used to endorse or promote products
13
* derived from this software without specific prior written permission.
14
*
15
*
16
* ALTERNATIVELY, this software may be distributed under the terms of the
17
* GNU General Public License ("GPL") as published by the Free Software
18
* Foundation, either version 2 of that License or (at your option) any
19
* later version.
20
*
21
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
22
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
25
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31
*/
32
33
/**************************************************************************//**
34
@File fm_macsec_ext.h
35
36
@Description FM MACSEC ...
37
*//***************************************************************************/
38
#ifndef __FM_MACSEC_EXT_H
39
#define __FM_MACSEC_EXT_H
40
41
#include "std_ext.h"
42
43
44
/**************************************************************************//**
45
@Group FM_grp Frame Manager API
46
47
@Description FM API functions, definitions and enums
48
49
@{
50
*//***************************************************************************/
51
52
/**************************************************************************//**
53
@Group FM_MACSEC_grp FM MACSEC
54
55
@Description FM MACSEC API functions, definitions and enums
56
57
@{
58
*//***************************************************************************/
59
60
/**************************************************************************//**
61
@Description MACSEC Exceptions
62
*//***************************************************************************/
63
typedef enum e_FmMacsecExceptions {
64
e_FM_MACSEC_EX_SINGLE_BIT_ECC, /**< Single bit ECC error */
65
e_FM_MACSEC_EX_MULTI_BIT_ECC /**< Multi bit ECC error */
66
} e_FmMacsecExceptions;
67
68
69
/**************************************************************************//**
70
@Group FM_MACSEC_init_grp FM-MACSEC Initialization Unit
71
72
@Description FM MACSEC Initialization Unit
73
74
@{
75
*//***************************************************************************/
76
77
/**************************************************************************//**
78
@Function t_FmMacsecExceptionsCallback
79
80
@Description Exceptions user callback routine, will be called upon an
81
exception passing the exception identification.
82
83
@Param[in] h_App A handle to an application layer object; This handle
84
will be passed by the driver upon calling this callback.
85
@Param[in] exception The exception.
86
*//***************************************************************************/
87
typedef void (t_FmMacsecExceptionsCallback) ( t_Handle h_App,
88
e_FmMacsecExceptions exception);
89
90
91
/**************************************************************************//**
92
@Description FM MACSEC config input
93
*//***************************************************************************/
94
typedef struct t_FmMacsecParams {
95
t_Handle h_Fm; /**< A handle to the FM object related to */
96
bool guestMode; /**< Partition-id */
97
union {
98
struct {
99
uint8_t fmMacId; /**< FM MAC id */
100
} guestParams;
101
102
struct {
103
uintptr_t baseAddr; /**< Base of memory mapped FM MACSEC registers */
104
t_Handle h_FmMac; /**< A handle to the FM MAC object related to */
105
t_FmMacsecExceptionsCallback *f_Exception; /**< Exception Callback Routine */
106
t_Handle h_App; /**< A handle to an application layer object; This handle will
107
be passed by the driver upon calling the above callbacks */
108
} nonGuestParams;
109
};
110
} t_FmMacsecParams;
111
112
/**************************************************************************//**
113
@Function FM_MACSEC_Config
114
115
@Description Creates descriptor for the FM MACSEC module;
116
117
The routine returns a handle (descriptor) to the FM MACSEC object;
118
This descriptor must be passed as first parameter to all other
119
FM MACSEC function calls;
120
121
No actual initialization or configuration of FM MACSEC hardware is
122
done by this routine.
123
124
@Param[in] p_FmMacsecParam Pointer to data structure of parameters.
125
126
@Retval Handle to FM MACSEC object, or NULL for Failure.
127
*//***************************************************************************/
128
t_Handle FM_MACSEC_Config(t_FmMacsecParams *p_FmMacsecParam);
129
130
/**************************************************************************//**
131
@Function FM_MACSEC_Init
132
133
@Description Initializes the FM MACSEC module.
134
135
@Param[in] h_FmMacsec FM MACSEC module descriptor.
136
137
@Return E_OK on success; Error code otherwise.
138
*//***************************************************************************/
139
t_Error FM_MACSEC_Init(t_Handle h_FmMacsec);
140
141
/**************************************************************************//**
142
@Function FM_MACSEC_Free
143
144
@Description Frees all resources that were assigned to FM MACSEC module;
145
146
Calling this routine invalidates the descriptor.
147
148
@Param[in] h_FmMacsec FM MACSEC module descriptor.
149
150
@Return E_OK on success; Error code otherwise.
151
*//***************************************************************************/
152
t_Error FM_MACSEC_Free(t_Handle h_FmMacsec);
153
154
155
/**************************************************************************//**
156
@Group FM_MACSEC_advanced_init_grp FM-MACSEC Advanced Configuration Unit
157
158
@Description Configuration functions used to change default values.
159
160
@{
161
*//***************************************************************************/
162
163
/**************************************************************************//**
164
@Description enum for unknown sci frame treatment
165
*//***************************************************************************/
166
typedef enum e_FmMacsecUnknownSciFrameTreatment {
167
e_FM_MACSEC_UNKNOWN_SCI_FRAME_TREATMENT_DISCARD_BOTH = 0, /**< Controlled port - Strict mode */
168
e_FM_MACSEC_UNKNOWN_SCI_FRAME_TREATMENT_DISCARD_UNCONTROLLED_DELIVER_OR_DISCARD_CONTROLLED, /**< If C bit clear deliver on controlled port, else discard
169
Controlled port - Check or Disable mode */
170
e_FM_MACSEC_UNKNOWN_SCI_FRAME_TREATMENT_DELIVER_UNCONTROLLED_DISCARD_CONTROLLED, /**< Controlled port - Strict mode */
171
e_FM_MACSEC_UNKNOWN_SCI_FRAME_TREATMENT_DELIVER_OR_DISCARD_UNCONTROLLED_DELIVER_OR_DISCARD_CONTROLLED /**< If C bit set deliver on uncontrolled port and discard on controlled port,
172
else discard on uncontrolled port and deliver on controlled port
173
Controlled port - Check or Disable mode */
174
} e_FmMacsecUnknownSciFrameTreatment;
175
176
/**************************************************************************//**
177
@Description enum for untag frame treatment
178
*//***************************************************************************/
179
typedef enum e_FmMacsecUntagFrameTreatment {
180
e_FM_MACSEC_UNTAG_FRAME_TREATMENT_DELIVER_UNCONTROLLED_DISCARD_CONTROLLED = 0, /**< Controlled port - Strict mode */
181
e_FM_MACSEC_UNTAG_FRAME_TREATMENT_DISCARD_BOTH, /**< Controlled port - Strict mode */
182
e_FM_MACSEC_UNTAG_FRAME_TREATMENT_DISCARD_UNCONTROLLED_DELIVER_CONTROLLED_UNMODIFIED /**< Controlled port - Strict mode */
183
} e_FmMacsecUntagFrameTreatment;
184
185
/**************************************************************************//**
186
@Function FM_MACSEC_ConfigUnknownSciFrameTreatment
187
188
@Description Change the treatment for received frames with unknown sci from its default
189
configuration [DEFAULT_unknownSciFrameTreatment].
190
191
@Param[in] h_FmMacsec FM MACSEC module descriptor.
192
@Param[in] treatMode The selected mode.
193
194
@Return E_OK on success; Error code otherwise.
195
196
@Cautions Allowed only following FM_MACSEC_Config() and before FM_MACSEC_Init().
197
*//***************************************************************************/
198
t_Error FM_MACSEC_ConfigUnknownSciFrameTreatment(t_Handle h_FmMacsec, e_FmMacsecUnknownSciFrameTreatment treatMode);
199
200
/**************************************************************************//**
201
@Function FM_MACSEC_ConfigInvalidTagsFrameTreatment
202
203
@Description Change the treatment for received frames with invalid tags or
204
a zero value PN or an invalid ICV from its default configuration
205
[DEFAULT_invalidTagsFrameTreatment].
206
207
@Param[in] h_FmMacsec FM MACSEC module descriptor.
208
@Param[in] deliverUncontrolled If True deliver on the uncontrolled port, else discard;
209
In both cases discard on the controlled port;
210
this provide Strict, Check or Disable mode.
211
212
@Return E_OK on success; Error code otherwise.
213
214
@Cautions Allowed only following FM_MACSEC_Config() and before FM_MACSEC_Init().
215
*//***************************************************************************/
216
t_Error FM_MACSEC_ConfigInvalidTagsFrameTreatment(t_Handle h_FmMacsec, bool deliverUncontrolled);
217
218
/**************************************************************************//**
219
@Function FM_MACSEC_ConfigEncryptWithNoChangedTextFrameTreatment
220
221
@Description Change the treatment for received frames with the Encryption bit
222
set and the Changed Text bit clear from its default configuration
223
[DEFAULT_encryptWithNoChangedTextFrameTreatment].
224
225
@Param[in] h_FmMacsec FM MACSEC module descriptor.
226
@Param[in] discardUncontrolled If True discard on the uncontrolled port, else deliver;
227
In both cases discard on the controlled port;
228
this provide Strict, Check or Disable mode.
229
230
@Return E_OK on success; Error code otherwise.
231
232
@Cautions Allowed only following FM_MACSEC_Config() and before FM_MACSEC_Init().
233
*//***************************************************************************/
234
t_Error FM_MACSEC_ConfigEncryptWithNoChangedTextFrameTreatment(t_Handle h_FmMacsec, bool discardUncontrolled);
235
236
/**************************************************************************//**
237
@Function FM_MACSEC_ConfigChangedTextWithNoEncryptFrameTreatment
238
239
@Description Change the treatment for received frames with the Encryption bit
240
clear and the Changed Text bit set from its default configuration
241
[DEFAULT_changedTextWithNoEncryptFrameTreatment].
242
243
@Param[in] h_FmMacsec FM MACSEC module descriptor.
244
@Param[in] deliverUncontrolled If True deliver on the uncontrolled port, else discard;
245
In both cases discard on the controlled port;
246
this provide Strict, Check or Disable mode.
247
248
@Return E_OK on success; Error code otherwise.
249
250
@Cautions Allowed only following FM_MACSEC_Config() and before FM_MACSEC_Init().
251
*//***************************************************************************/
252
t_Error FM_MACSEC_ConfigChangedTextWithNoEncryptFrameTreatment(t_Handle h_FmMacsec, bool deliverUncontrolled);
253
254
/**************************************************************************//**
255
@Function FM_MACSEC_ConfigUntagFrameTreatment
256
257
@Description Change the treatment for received frames without the MAC security tag (SecTAG)
258
from its default configuration [DEFAULT_untagFrameTreatment].
259
260
@Param[in] h_FmMacsec FM MACSEC module descriptor.
261
@Param[in] treatMode The selected mode.
262
263
@Return E_OK on success; Error code otherwise.
264
265
@Cautions Allowed only following FM_MACSEC_Config() and before FM_MACSEC_Init().
266
*//***************************************************************************/
267
t_Error FM_MACSEC_ConfigUntagFrameTreatment(t_Handle h_FmMacsec, e_FmMacsecUntagFrameTreatment treatMode);
268
269
/**************************************************************************//**
270
@Function FM_MACSEC_ConfigOnlyScbIsSetFrameTreatment
271
272
@Description Change the treatment for received frames with only SCB bit set
273
from its default configuration [DEFAULT_onlyScbIsSetFrameTreatment].
274
275
@Param[in] h_FmMacsec FM MACSEC module descriptor.
276
@Param[in] deliverUncontrolled If True deliver on the uncontrolled port, else discard;
277
In both cases discard on the controlled port;
278
this provide Strict, Check or Disable mode.
279
280
@Return E_OK on success; Error code otherwise.
281
282
@Cautions Allowed only following FM_MACSEC_Config() and before FM_MACSEC_Init().
283
*//***************************************************************************/
284
t_Error FM_MACSEC_ConfigOnlyScbIsSetFrameTreatment(t_Handle h_FmMacsec, bool deliverUncontrolled);
285
286
/**************************************************************************//**
287
@Function FM_MACSEC_ConfigPnExhaustionThreshold
288
289
@Description It's provide the ability to configure a PN exhaustion threshold;
290
When the NextPn crosses this value an interrupt event
291
is asserted to warn that the active SA should re-key.
292
293
@Param[in] h_FmMacsec FM MACSEC module descriptor.
294
@Param[in] pnExhThr If the threshold is reached, an interrupt event
295
is asserted to re-key.
296
297
@Return E_OK on success; Error code otherwise.
298
299
@Cautions Allowed only following FM_MACSEC_Config() and before FM_MACSEC_Init().
300
*//***************************************************************************/
301
t_Error FM_MACSEC_ConfigPnExhaustionThreshold(t_Handle h_FmMacsec, uint32_t pnExhThr);
302
303
/**************************************************************************//**
304
@Function FM_MACSEC_ConfigKeysUnreadable
305
306
@Description Turn on privacy mode; All the keys and their hash values can't be read any more;
307
Can not be cleared unless hard reset.
308
309
@Param[in] h_FmMacsec FM MACSEC module descriptor.
310
311
@Return E_OK on success; Error code otherwise.
312
313
@Cautions Allowed only following FM_MACSEC_Config() and before FM_MACSEC_Init().
314
*//***************************************************************************/
315
t_Error FM_MACSEC_ConfigKeysUnreadable(t_Handle h_FmMacsec);
316
317
/**************************************************************************//**
318
@Function FM_MACSEC_ConfigSectagWithoutSCI
319
320
@Description Promise that all generated Sectag will be without SCI included.
321
322
@Param[in] h_FmMacsec FM MACSEC module descriptor.
323
324
@Return E_OK on success; Error code otherwise.
325
326
@Cautions Allowed only following FM_MACSEC_Config() and before FM_MACSEC_Init().
327
*//***************************************************************************/
328
t_Error FM_MACSEC_ConfigSectagWithoutSCI(t_Handle h_FmMacsec);
329
330
/**************************************************************************//**
331
@Function FM_MACSEC_ConfigException
332
333
@Description Calling this routine changes the internal driver data base
334
from its default selection of exceptions enablement;
335
By default all exceptions are enabled.
336
337
@Param[in] h_FmMacsec FM MACSEC module descriptor.
338
@Param[in] exception The exception to be selected.
339
@Param[in] enable TRUE to enable interrupt, FALSE to mask it.
340
341
@Return E_OK on success; Error code otherwise.
342
343
@Cautions Allowed only following FM_MACSEC_Config() and before FM_MACSEC_Init().
344
*//***************************************************************************/
345
t_Error FM_MACSEC_ConfigException(t_Handle h_FmMacsec, e_FmMacsecExceptions exception, bool enable);
346
347
/** @} */ /* end of FM_MACSEC_advanced_init_grp group */
348
/** @} */ /* end of FM_MACSEC_init_grp group */
349
350
351
/**************************************************************************//**
352
@Group FM_MACSEC_runtime_control_grp FM-MACSEC Runtime Control Data Unit
353
354
@Description FM MACSEC runtime control data unit API functions, definitions and enums.
355
356
@{
357
*//***************************************************************************/
358
359
/**************************************************************************//**
360
@Function FM_MACSEC_GetRevision
361
362
@Description Return MACSEC HW chip revision
363
364
@Param[in] h_FmMacsec FM MACSEC module descriptor.
365
@Param[out] p_MacsecRevision MACSEC revision as defined by the chip.
366
367
@Return E_OK on success; Error code otherwise.
368
369
@Cautions Allowed only after FM_MACSEC_Init().
370
*//***************************************************************************/
371
t_Error FM_MACSEC_GetRevision(t_Handle h_FmMacsec, uint32_t *p_MacsecRevision);
372
373
/**************************************************************************//**
374
@Function FM_MACSEC_Enable
375
376
@Description This routine should be called after MACSEC is initialized for enabling all
377
MACSEC engines according to their existing configuration.
378
379
@Param[in] h_FmMacsec FM MACSEC module descriptor.
380
381
@Return E_OK on success; Error code otherwise.
382
383
@Cautions Allowed only following FM_MACSEC_Init() and when MACSEC is disabled.
384
*//***************************************************************************/
385
t_Error FM_MACSEC_Enable(t_Handle h_FmMacsec);
386
387
/**************************************************************************//**
388
@Function FM_MACSEC_Disable
389
390
@Description This routine may be called when MACSEC is enabled in order to
391
disable all MACSEC engines; The MACSEC is working in bypass mode.
392
393
@Param[in] h_FmMacsec FM MACSEC module descriptor.
394
395
@Return E_OK on success; Error code otherwise.
396
397
@Cautions Allowed only following FM_MACSEC_Init() and when MACSEC is enabled.
398
*//***************************************************************************/
399
t_Error FM_MACSEC_Disable(t_Handle h_FmMacsec);
400
401
/**************************************************************************//**
402
@Function FM_MACSEC_SetException
403
404
@Description Calling this routine enables/disables the specified exception.
405
406
@Param[in] h_FmMacsec FM MACSEC module descriptor.
407
@Param[in] exception The exception to be selected.
408
@Param[in] enable TRUE to enable interrupt, FALSE to mask it.
409
410
@Return E_OK on success; Error code otherwise.
411
412
@Cautions Allowed only following FM_MACSEC_Init().
413
*//***************************************************************************/
414
t_Error FM_MACSEC_SetException(t_Handle h_FmMacsec, e_FmMacsecExceptions exception, bool enable);
415
416
#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0))
417
/**************************************************************************//**
418
@Function FM_MACSEC_DumpRegs
419
420
@Description Dump internal registers.
421
422
@Param[in] h_FmMacsec - FM MACSEC module descriptor.
423
424
@Return E_OK on success; Error code otherwise.
425
426
@Cautions Allowed only after FM_MACSEC_Init().
427
*//***************************************************************************/
428
t_Error FM_MACSEC_DumpRegs(t_Handle h_FmMacsec);
429
#endif /* (defined(DEBUG_ERRORS) && ... */
430
431
#ifdef VERIFICATION_SUPPORT
432
/********************* VERIFICATION ONLY ********************************/
433
/**************************************************************************//**
434
@Function FM_MACSEC_BackdoorSet
435
436
@Description Set register of the MACSEC memory map
437
438
@Param[in] h_FmMacsec FM MACSEC module descriptor.
439
@Param[out] offset Register offset.
440
@Param[out] value Value to write.
441
442
443
@Return None
444
445
@Cautions Allowed only following FM_MACSEC_Init().
446
*//***************************************************************************/
447
t_Error FM_MACSEC_BackdoorSet(t_Handle h_FmMacsec, uint32_t offset, uint32_t value);
448
449
/**************************************************************************//**
450
@Function FM_MACSEC_BackdoorGet
451
452
@Description Read from register of the MACSEC memory map.
453
454
@Param[in] h_FmMacsec FM MACSEC module descriptor.
455
@Param[out] offset Register offset.
456
457
@Return Value read
458
459
@Cautions Allowed only following FM_MACSEC_Init().
460
*//***************************************************************************/
461
uint32_t FM_MACSEC_BackdoorGet(t_Handle h_FmMacsec, uint32_t offset);
462
#endif /* VERIFICATION_SUPPORT */
463
464
/** @} */ /* end of FM_MACSEC_runtime_control_grp group */
465
466
467
/**************************************************************************//**
468
@Group FM_MACSEC_SECY_grp FM-MACSEC SecY
469
470
@Description FM-MACSEC SecY API functions, definitions and enums
471
472
@{
473
*//***************************************************************************/
474
475
typedef uint8_t macsecSAKey_t[32];
476
typedef uint64_t macsecSCI_t;
477
typedef uint8_t macsecAN_t;
478
479
/**************************************************************************//**
480
@Description MACSEC SECY Cipher Suite
481
*//***************************************************************************/
482
typedef enum e_FmMacsecSecYCipherSuite {
483
e_FM_MACSEC_SECY_GCM_AES_128 = 0, /**< GCM-AES-128 */
484
#if (DPAA_VERSION >= 11)
485
e_FM_MACSEC_SECY_GCM_AES_256 /**< GCM-AES-256 */
486
#endif /* (DPAA_VERSION >= 11) */
487
} e_FmMacsecSecYCipherSuite;
488
489
/**************************************************************************//**
490
@Description MACSEC SECY Exceptions
491
*//***************************************************************************/
492
typedef enum e_FmMacsecSecYExceptions {
493
e_FM_MACSEC_SECY_EX_FRAME_DISCARDED /**< Frame Discarded */
494
} e_FmMacsecSecYExceptions;
495
496
/**************************************************************************//**
497
@Description MACSEC SECY Events
498
*//***************************************************************************/
499
typedef enum e_FmMacsecSecYEvents {
500
e_FM_MACSEC_SECY_EV_NEXT_PN /**< Next Packet Number exhaustion threshold reached */
501
} e_FmMacsecSecYEvents;
502
503
/**************************************************************************//**
504
@Collection MACSEC SECY Frame Discarded Descriptor error
505
*//***************************************************************************/
506
typedef uint8_t macsecTxScFrameDiscardedErrSelect_t; /**< typedef for defining Frame Discarded Descriptor errors */
507
508
#define FM_MACSEC_SECY_TX_SC_FRM_DISCAR_ERR_NEXT_PN_ZERO 0x8000 /**< NextPn == 0 */
509
#define FM_MACSEC_SECY_TX_SC_FRM_DISCAR_ERR_SC_DISBALE 0x4000 /**< SC is disable */
510
/* @} */
511
512
/**************************************************************************//**
513
@Function t_FmMacsecSecYExceptionsCallback
514
515
@Description Exceptions user callback routine, will be called upon an
516
exception passing the exception identification.
517
518
@Param[in] h_App A handle to an application layer object; This handle
519
will be passed by the driver upon calling this callback.
520
@Param[in] exception The exception.
521
*//***************************************************************************/
522
typedef void (t_FmMacsecSecYExceptionsCallback) ( t_Handle h_App,
523
e_FmMacsecSecYExceptions exception);
524
525
/**************************************************************************//**
526
@Function t_FmMacsecSecYEventsCallback
527
528
@Description Events user callback routine, will be called upon an
529
event passing the event identification.
530
531
@Param[in] h_App A handle to an application layer object; This handle
532
will be passed by the driver upon calling this callback.
533
@Param[in] event The event.
534
*//***************************************************************************/
535
typedef void (t_FmMacsecSecYEventsCallback) ( t_Handle h_App,
536
e_FmMacsecSecYEvents event);
537
538
/**************************************************************************//**
539
@Description RFC2863 MIB
540
*//***************************************************************************/
541
typedef struct t_MIBStatistics {
542
uint64_t ifInOctets; /**< Total number of byte received */
543
uint64_t ifInPkts; /**< Total number of packets received */
544
uint64_t ifInMcastPkts; /**< Total number of multicast frame received */
545
uint64_t ifInBcastPkts; /**< Total number of broadcast frame received */
546
uint64_t ifInDiscards; /**< Frames received, but discarded due to problems within the MAC RX :
547
- InPktsNoTag,
548
- InPktsLate,
549
- InPktsOverrun */
550
uint64_t ifInErrors; /**< Number of frames received with error:
551
- InPktsBadTag,
552
- InPktsNoSCI,
553
- InPktsNotUsingSA
554
- InPktsNotValid */
555
uint64_t ifOutOctets; /**< Total number of byte sent */
556
uint64_t ifOutPkts; /**< Total number of packets sent */
557
uint64_t ifOutMcastPkts; /**< Total number of multicast frame sent */
558
uint64_t ifOutBcastPkts; /**< Total number of multicast frame sent */
559
uint64_t ifOutDiscards; /**< Frames received, but discarded due to problems within the MAC TX N/A! */
560
uint64_t ifOutErrors; /**< Number of frames transmitted with error:
561
- FIFO Overflow Error
562
- FIFO Underflow Error
563
- Other */
564
} t_MIBStatistics;
565
566
/**************************************************************************//**
567
@Description MACSEC SecY Rx SA Statistics
568
*//***************************************************************************/
569
typedef struct t_FmMacsecSecYRxSaStatistics {
570
uint32_t inPktsOK; /**< The number of frames with resolved SCI, have passed all
571
frame validation frame validation with the validateFrame not set to disable */
572
uint32_t inPktsInvalid; /**< The number of frames with resolved SCI, that have failed frame
573
validation with the validateFrame set to check */
574
uint32_t inPktsNotValid; /**< The number of frames with resolved SCI, discarded on the controlled port,
575
that have failed frame validation with the validateFrame set to strict or the c bit is set */
576
uint32_t inPktsNotUsingSA; /**< The number of frames received with resolved SCI and discarded on disabled or
577
not provisioned SA with validateFrame in the strict mode or the C bit is set */
578
uint32_t inPktsUnusedSA; /**< The number of frames received with resolved SCI on disabled or not provisioned SA
579
with validateFrame not in the strict mode and the C bit is cleared */
580
} t_FmMacsecSecYRxSaStatistics;
581
582
/**************************************************************************//**
583
@Description MACSEC SecY Tx SA Statistics
584
*//***************************************************************************/
585
typedef struct t_FmMacsecSecYTxSaStatistics {
586
uint64_t outPktsProtected; /**< The number of frames, that the user of the controlled port requested to
587
be transmitted, which were integrity protected */
588
uint64_t outPktsEncrypted; /**< The number of frames, that the user of the controlled port requested to
589
be transmitted, which were confidentiality protected */
590
} t_FmMacsecSecYTxSaStatistics;
591
592
/**************************************************************************//**
593
@Description MACSEC SecY Rx SC Statistics
594
*//***************************************************************************/
595
typedef struct t_FmMacsecSecYRxScStatistics {
596
uint64_t inPktsUnchecked; /**< The number of frames with resolved SCI, delivered to the user of a controlled port,
597
that are not validated with the validateFrame set to disable */
598
uint64_t inPktsDelayed; /**< The number of frames with resolved SCI, delivered to the user of a controlled port,
599
that have their PN smaller than the lowest_PN with the validateFrame set to
600
disable or replayProtect disabled */
601
uint64_t inPktsLate; /**< The number of frames with resolved SCI, discarded on the controlled port,
602
that have their PN smaller than the lowest_PN with the validateFrame set to
603
Check or Strict and replayProtect enabled */
604
uint64_t inPktsOK; /**< The number of frames with resolved SCI, have passed all
605
frame validation frame validation with the validateFrame not set to disable */
606
uint64_t inPktsInvalid; /**< The number of frames with resolved SCI, that have failed frame
607
validation with the validateFrame set to check */
608
uint64_t inPktsNotValid; /**< The number of frames with resolved SCI, discarded on the controlled port,
609
that have failed frame validation with the validateFrame set to strict or the c bit is set */
610
uint64_t inPktsNotUsingSA; /**< The number of frames received with resolved SCI and discarded on disabled or
611
not provisioned SA with validateFrame in the strict mode or the C bit is set */
612
uint64_t inPktsUnusedSA; /**< The number of frames received with resolved SCI on disabled or not provisioned SA
613
with validateFrame not in the strict mode and the C bit is cleared */
614
} t_FmMacsecSecYRxScStatistics;
615
616
/**************************************************************************//**
617
@Description MACSEC SecY Tx SC Statistics
618
*//***************************************************************************/
619
typedef struct t_FmMacsecSecYTxScStatistics {
620
uint64_t outPktsProtected; /**< The number of frames, that the user of the controlled port requested to
621
be transmitted, which were integrity protected */
622
uint64_t outPktsEncrypted; /**< The number of frames, that the user of the controlled port requested to
623
be transmitted, which were confidentiality protected */
624
} t_FmMacsecSecYTxScStatistics;
625
626
/**************************************************************************//**
627
@Description MACSEC SecY Statistics
628
*//***************************************************************************/
629
typedef struct t_FmMacsecSecYStatistics {
630
t_MIBStatistics mibCtrlStatistics; /**< Controlled port MIB statistics */
631
t_MIBStatistics mibNonCtrlStatistics; /**< Uncontrolled port MIB statistics */
632
/* Frame verification statistics */
633
uint64_t inPktsUntagged; /**< The number of received packets without the MAC security tag
634
(SecTAG) with validateFrames which is not in the strict mode */
635
uint64_t inPktsNoTag; /**< The number of received packets discarded without the
636
MAC security tag (SecTAG) with validateFrames which is in the strict mode */
637
uint64_t inPktsBadTag; /**< The number of received packets discarded with an invalid
638
SecTAG or a zero value PN or an invalid ICV */
639
uint64_t inPktsUnknownSCI; /**< The number of received packets with unknown SCI with the
640
condition : validateFrames is not in the strict mode and the
641
C bit in the SecTAG is not set */
642
uint64_t inPktsNoSCI; /**< The number of received packets discarded with unknown SCI
643
information with the condition : validateFrames is in the strict mode
644
or the C bit in the SecTAG is set */
645
uint64_t inPktsOverrun; /**< The number of packets discarded because the number of
646
received packets exceeded the cryptographic performance capabilities */
647
/* Frame validation statistics */
648
uint64_t inOctetsValidated; /**< The number of octets of plaintext recovered from received frames with
649
resolved SCI that were integrity protected but not encrypted */
650
uint64_t inOctetsDecrypted; /**< The number of octets of plaintext recovered from received frames with
651
resolved SCI that were integrity protected and encrypted */
652
/* Frame generation statistics */
653
uint64_t outPktsUntagged; /**< The number of frames, that the user of the controlled port requested to
654
be transmitted, with protectFrame false */
655
uint64_t outPktsTooLong; /**< The number of frames, that the user of the controlled port requested to
656
be transmitted, discarded due to length being larger than Maximum Frame Length (MACSEC_MFL) */
657
/* Frame protection statistics */
658
uint64_t outOctetsProtected; /**< The number of octets of User Data in transmitted frames that were
659
integrity protected but not encrypted */
660
uint64_t outOctetsEncrypted; /**< The number of octets of User Data in transmitted frames that were
661
both integrity protected and encrypted */
662
} t_FmMacsecSecYStatistics;
663
664
665
/**************************************************************************//**
666
@Description MACSEC SecY SC Params
667
*//***************************************************************************/
668
typedef struct t_FmMacsecSecYSCParams {
669
macsecSCI_t sci; /**< The secure channel identification of the SC */
670
e_FmMacsecSecYCipherSuite cipherSuite; /**< Cipher suite to be used for the SC */
671
} t_FmMacsecSecYSCParams;
672
673
/**************************************************************************//**
674
@Group FM_MACSEC_SECY_init_grp FM-MACSEC SecY Initialization Unit
675
676
@Description FM-MACSEC SecY Initialization Unit
677
678
@{
679
*//***************************************************************************/
680
681
/**************************************************************************//**
682
@Description enum for validate frames
683
*//***************************************************************************/
684
typedef enum e_FmMacsecValidFrameBehavior {
685
e_FM_MACSEC_VALID_FRAME_BEHAVIOR_DISABLE = 0, /**< disable the validation function */
686
e_FM_MACSEC_VALID_FRAME_BEHAVIOR_CHECK, /**< enable the validation function but only for checking
687
without filtering out invalid frames */
688
e_FM_MACSEC_VALID_FRAME_BEHAVIOR_STRICT /**< enable the validation function and also strictly filter
689
out those invalid frames */
690
} e_FmMacsecValidFrameBehavior;
691
692
/**************************************************************************//**
693
@Description enum for sci insertion
694
*//***************************************************************************/
695
typedef enum e_FmMacsecSciInsertionMode {
696
e_FM_MACSEC_SCI_INSERTION_MODE_EXPLICIT_SECTAG = 0, /**< explicit sci in the sectag */
697
e_FM_MACSEC_SCI_INSERTION_MODE_EXPLICIT_MAC_SA, /**< mac sa is overwritten with the sci*/
698
e_FM_MACSEC_SCI_INSERTION_MODE_IMPLICT_PTP /**< implicit point-to-point sci (pre-shared) */
699
} e_FmMacsecSciInsertionMode;
700
701
/**************************************************************************//**
702
@Description FM MACSEC SecY config input
703
*//***************************************************************************/
704
typedef struct t_FmMacsecSecYParams {
705
t_Handle h_FmMacsec; /**< A handle to the FM MACSEC object */
706
t_FmMacsecSecYSCParams txScParams; /**< Tx SC Params */
707
uint32_t numReceiveChannels; /**< Number of receive channels dedicated to this SecY */
708
t_FmMacsecSecYExceptionsCallback *f_Exception; /**< Callback routine to be called by the driver upon SecY exception */
709
t_FmMacsecSecYEventsCallback *f_Event; /**< Callback routine to be called by the driver upon SecY event */
710
t_Handle h_App; /**< A handle to an application layer object; This handle will
711
be passed by the driver upon calling the above callbacks */
712
} t_FmMacsecSecYParams;
713
714
/**************************************************************************//**
715
@Function FM_MACSEC_SECY_Config
716
717
@Description Creates descriptor for the FM MACSEC SECY module;
718
719
The routine returns a handle (descriptor) to the FM MACSEC SECY object;
720
This descriptor must be passed as first parameter to all other
721
FM MACSEC SECY function calls;
722
No actual initialization or configuration of FM MACSEC SecY hardware is
723
done by this routine.
724
725
@Param[in] p_FmMacsecSecYParam Pointer to data structure of parameters.
726
727
@Return Handle to FM MACSEC SECY object, or NULL for Failure.
728
*//***************************************************************************/
729
t_Handle FM_MACSEC_SECY_Config(t_FmMacsecSecYParams *p_FmMacsecSecYParam);
730
731
/**************************************************************************//**
732
@Function FM_MACSEC_SECY_Init
733
734
@Description Initializes the FM MACSEC SECY module.
735
736
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
737
738
@Return E_OK on success; Error code otherwise.
739
*//***************************************************************************/
740
t_Error FM_MACSEC_SECY_Init(t_Handle h_FmMacsecSecY);
741
742
/**************************************************************************//**
743
@Function FM_MACSEC_SECY_Free
744
745
@Description Frees all resources that were assigned to FM MACSEC SECY module.
746
747
Calling this routine invalidates the descriptor.
748
749
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
750
751
@Return E_OK on success; Error code otherwise.
752
*//***************************************************************************/
753
t_Error FM_MACSEC_SECY_Free(t_Handle h_FmMacsecSecY);
754
755
/**************************************************************************//**
756
@Group FM_MACSEC_SECY_advanced_init_grp FM-MACSEC SecY Advanced Configuration Unit
757
758
@Description Configuration functions used to change default values.
759
760
@{
761
*//***************************************************************************/
762
763
/**************************************************************************//**
764
@Function FM_MACSEC_SECY_ConfigSciInsertionMode
765
766
@Description Calling this routine changes the SCI-insertion-mode in the
767
internal driver data base from its default configuration
768
[DEFAULT_sciInsertionMode]
769
770
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
771
@Param[in] sciInsertionMode Sci insertion mode
772
773
@Return E_OK on success; Error code otherwise.
774
775
@Cautions Allowed only following FM_MACSEC_SECY_Config() and before FM_MACSEC_SECY_Init();
776
777
*//***************************************************************************/
778
t_Error FM_MACSEC_SECY_ConfigSciInsertionMode(t_Handle h_FmMacsecSecY, e_FmMacsecSciInsertionMode sciInsertionMode);
779
780
/**************************************************************************//**
781
@Function FM_MACSEC_SECY_ConfigProtectFrames
782
783
@Description Calling this routine changes the protect-frame mode in the
784
internal driver data base from its default configuration
785
[DEFAULT_protectFrames]
786
787
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
788
@Param[in] protectFrames If FALSE, frames are transmitted without modification
789
790
@Return E_OK on success; Error code otherwise.
791
792
@Cautions Allowed only following FM_MACSEC_SECY_Config() and before FM_MACSEC_SECY_Init();
793
794
*//***************************************************************************/
795
t_Error FM_MACSEC_SECY_ConfigProtectFrames(t_Handle h_FmMacsecSecY, bool protectFrames);
796
797
/**************************************************************************//**
798
@Function FM_MACSEC_SECY_ConfigReplayWindow
799
800
@Description Calling this routine changes the replay-window settings in the
801
internal driver data base from its default configuration
802
[DEFAULT_replayEnable], [DEFAULT_replayWindow]
803
804
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
805
@Param[in] replayProtect; Replay protection function mode
806
@Param[in] replayWindow; The size of the replay window
807
808
@Return E_OK on success; Error code otherwise.
809
810
@Cautions Allowed only following FM_MACSEC_SECY_Config() and before FM_MACSEC_SECY_Init();
811
812
*//***************************************************************************/
813
t_Error FM_MACSEC_SECY_ConfigReplayWindow(t_Handle h_FmMacsecSecY, bool replayProtect, uint32_t replayWindow);
814
815
/**************************************************************************//**
816
@Function FM_MACSEC_SECY_ConfigValidationMode
817
818
@Description Calling this routine changes the frame-validation-behavior mode
819
in the internal driver data base from its default configuration
820
[DEFAULT_validateFrames]
821
822
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
823
@Param[in] validateFrames Validation function mode
824
825
@Return E_OK on success; Error code otherwise.
826
827
@Cautions Allowed only following FM_MACSEC_SECY_Config() and before FM_MACSEC_SECY_Init();
828
829
*//***************************************************************************/
830
t_Error FM_MACSEC_SECY_ConfigValidationMode(t_Handle h_FmMacsecSecY, e_FmMacsecValidFrameBehavior validateFrames);
831
832
/**************************************************************************//**
833
@Function FM_MACSEC_SECY_ConfigConfidentiality
834
835
@Description Calling this routine changes the confidentiality settings in the
836
internal driver data base from its default configuration
837
[DEFAULT_confidentialityEnable], [DEFAULT_confidentialityOffset]
838
839
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
840
@Param[in] confidentialityEnable TRUE - confidentiality protection and integrity protection
841
FALSE - no confidentiality protection, only integrity protection
842
@Param[in] confidentialityOffset The number of initial octets of each MSDU without confidentiality protection
843
common values are 0, 30, and 50
844
845
@Return E_OK on success; Error code otherwise.
846
847
@Cautions Allowed only following FM_MACSEC_SECY_Config() and before FM_MACSEC_SECY_Init();
848
849
*//***************************************************************************/
850
t_Error FM_MACSEC_SECY_ConfigConfidentiality(t_Handle h_FmMacsecSecY, bool confidentialityEnable, uint16_t confidentialityOffset);
851
852
/**************************************************************************//**
853
@Function FM_MACSEC_SECY_ConfigPointToPoint
854
855
@Description configure this SecY to work in point-to-point mode, means that
856
it will have only one rx sc;
857
858
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
859
860
@Return E_OK on success; Error code otherwise.
861
862
@Cautions Allowed only following FM_MACSEC_SECY_Config() and before FM_MACSEC_SECY_Init();
863
Can be called only once in a system; only the first secY that will call this
864
routine will be able to operate in Point-To-Point mode.
865
*//***************************************************************************/
866
t_Error FM_MACSEC_SECY_ConfigPointToPoint(t_Handle h_FmMacsecSecY);
867
868
/**************************************************************************//**
869
@Function FM_MACSEC_SECY_ConfigException
870
871
@Description Calling this routine changes the internal driver data base
872
from its default selection of exceptions enablement;
873
By default all exceptions are enabled.
874
875
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
876
@Param[in] exception The exception to be selected.
877
@Param[in] enable TRUE to enable interrupt, FALSE to mask it.
878
879
@Return E_OK on success; Error code otherwise.
880
881
@Cautions Allowed only following FM_MACSEC_SECY_Config() and before FM_MACSEC_SECY_Init().
882
*//***************************************************************************/
883
t_Error FM_MACSEC_SECY_ConfigException(t_Handle h_FmMacsecSecY, e_FmMacsecSecYExceptions exception, bool enable);
884
885
/**************************************************************************//**
886
@Function FM_MACSEC_SECY_ConfigEvent
887
888
@Description Calling this routine changes the internal driver data base
889
from its default selection of events enablement;
890
By default all events are enabled.
891
892
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
893
@Param[in] event The event to be selected.
894
@Param[in] enable TRUE to enable interrupt, FALSE to mask it.
895
896
@Return E_OK on success; Error code otherwise.
897
898
@Cautions Allowed only following FM_MACSEC_SECY_Config() and before FM_MACSEC_SECY_Init().
899
*//***************************************************************************/
900
t_Error FM_MACSEC_SECY_ConfigEvent(t_Handle h_FmMacsecSecY, e_FmMacsecSecYEvents event, bool enable);
901
902
/** @} */ /* end of FM_MACSEC_SECY_advanced_init_grp group */
903
/** @} */ /* end of FM_MACSEC_SECY_init_grp group */
904
905
906
/**************************************************************************//**
907
@Group FM_MACSEC_SECY_runtime_control_grp FM-MACSEC SecY Runtime Control Unit
908
909
@Description FM MACSEC SECY Runtime control unit API functions, definitions and enums.
910
911
@{
912
*//***************************************************************************/
913
914
/**************************************************************************//**
915
@Function FM_MACSEC_SECY_CreateRxSc
916
917
@Description Create a receive secure channel.
918
919
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
920
@Param[in] scParams secure channel params.
921
922
@Return E_OK on success; Error code otherwise.
923
924
@Cautions Allowed only following FM_MACSEC_SECY_Init().
925
*//***************************************************************************/
926
t_Handle FM_MACSEC_SECY_CreateRxSc(t_Handle h_FmMacsecSecY, t_FmMacsecSecYSCParams *p_ScParams);
927
928
/**************************************************************************//**
929
@Function FM_MACSEC_SECY_DeleteRxSc
930
931
@Description Deleting an initialized secure channel.
932
933
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
934
@Param[in] h_Sc SC handle as returned by FM_MACSEC_SECY_CreateRxSc.
935
936
@Return E_OK on success; Error code otherwise.
937
938
@Cautions Allowed only following FM_MACSEC_SECY_CreateRxSc().
939
*//***************************************************************************/
940
t_Error FM_MACSEC_SECY_DeleteRxSc(t_Handle h_FmMacsecSecY, t_Handle h_Sc);
941
942
/**************************************************************************//**
943
@Function FM_MACSEC_SECY_CreateRxSa
944
945
@Description Create a receive secure association for the secure channel;
946
the SA cannot be used to receive frames until FM_MACSEC_SECY_RxSaEnableReceive is called.
947
948
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
949
@Param[in] h_Sc SC handle as returned by FM_MACSEC_SECY_CreateRxSc.
950
@Param[in] an association number represent the SA.
951
@Param[in] lowestPn the lowest acceptable PN value for a received frame.
952
@Param[in] key the desired key for this SA.
953
954
@Return E_OK on success; Error code otherwise.
955
956
@Cautions Allowed only following FM_MACSEC_SECY_CreateRxSc().
957
*//***************************************************************************/
958
t_Error FM_MACSEC_SECY_CreateRxSa(t_Handle h_FmMacsecSecY, t_Handle h_Sc, macsecAN_t an, uint32_t lowestPn, macsecSAKey_t key);
959
960
/**************************************************************************//**
961
@Function FM_MACSEC_SECY_DeleteRxSa
962
963
@Description Deleting an initialized secure association.
964
965
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
966
@Param[in] h_Sc SC handle as returned by FM_MACSEC_SECY_CreateRxSc.
967
@Param[in] an association number represent the SA.
968
969
@Return E_OK on success; Error code otherwise.
970
971
@Cautions Allowed only following FM_MACSEC_SECY_Init().
972
*//***************************************************************************/
973
t_Error FM_MACSEC_SECY_DeleteRxSa(t_Handle h_FmMacsecSecY, t_Handle h_Sc, macsecAN_t an);
974
975
/**************************************************************************//**
976
@Function FM_MACSEC_SECY_RxSaEnableReceive
977
978
@Description Enabling the SA to receive frames.
979
980
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
981
@Param[in] h_Sc SC handle as returned by FM_MACSEC_SECY_CreateRxSc.
982
@Param[in] an association number represent the SA.
983
984
@Return E_OK on success; Error code otherwise.
985
986
@Cautions Allowed only following FM_MACSEC_SECY_CreateRxSa().
987
*//***************************************************************************/
988
t_Error FM_MACSEC_SECY_RxSaEnableReceive(t_Handle h_FmMacsecSecY, t_Handle h_Sc, macsecAN_t an);
989
990
/**************************************************************************//**
991
@Function FM_MACSEC_SECY_RxSaDisableReceive
992
993
@Description Disabling the SA from receive frames.
994
995
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
996
@Param[in] h_Sc SC handle as returned by FM_MACSEC_SECY_CreateRxSc.
997
@Param[in] an association number represent the SA.
998
999
@Return E_OK on success; Error code otherwise.
1000
1001
@Cautions Allowed only following FM_MACSEC_SECY_CreateRxSa().
1002
*//***************************************************************************/
1003
t_Error FM_MACSEC_SECY_RxSaDisableReceive(t_Handle h_FmMacsecSecY, t_Handle h_Sc, macsecAN_t an);
1004
1005
/**************************************************************************//**
1006
@Function FM_MACSEC_SECY_RxSaUpdateNextPn
1007
1008
@Description Update the next packet number expected on RX;
1009
The value of nextPN shall be set to the greater of its existing value and the
1010
supplied of updtNextPN (802.1AE-2006 10.7.15).
1011
1012
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1013
@Param[in] h_Sc SC handle as returned by FM_MACSEC_SECY_CreateRxSc.
1014
@Param[in] an association number represent the SA.
1015
@Param[in] updtNextPN the next PN value for a received frame.
1016
1017
@Return E_OK on success; Error code otherwise.
1018
1019
@Cautions Allowed only following FM_MACSEC_SECY_CreateRxSa().
1020
*//***************************************************************************/
1021
t_Error FM_MACSEC_SECY_RxSaUpdateNextPn(t_Handle h_FmMacsecSecY, t_Handle h_Sc, macsecAN_t an, uint32_t updtNextPN);
1022
1023
/**************************************************************************//**
1024
@Function FM_MACSEC_SECY_RxSaUpdateLowestPn
1025
1026
@Description Update the lowest packet number expected on RX;
1027
The value of lowestPN shall be set to the greater of its existing value and the
1028
supplied of updtLowestPN (802.1AE-2006 10.7.15).
1029
1030
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1031
@Param[in] h_Sc SC handle as returned by FM_MACSEC_SECY_CreateRxSc.
1032
@Param[in] an association number represent the SA.
1033
@Param[in] updtLowestPN the lowest PN acceptable value for a received frame.
1034
1035
@Return E_OK on success; Error code otherwise.
1036
1037
@Cautions Allowed only following FM_MACSEC_SECY_CreateRxSa().
1038
*//***************************************************************************/
1039
t_Error FM_MACSEC_SECY_RxSaUpdateLowestPn(t_Handle h_FmMacsecSecY, t_Handle h_Sc, macsecAN_t an, uint32_t updtLowestPN);
1040
1041
/**************************************************************************//**
1042
@Function FM_MACSEC_SECY_RxSaModifyKey
1043
1044
@Description Modify the current key of the SA with a new one.
1045
1046
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1047
@Param[in] h_Sc SC handle as returned by FM_MACSEC_SECY_CreateRxSc.
1048
@Param[in] an association number represent the SA.
1049
@Param[in] key new key to replace the current key.
1050
1051
@Return E_OK on success; Error code otherwise.
1052
1053
@Cautions Allowed only following FM_MACSEC_SECY_CreateRxSa().
1054
*//***************************************************************************/
1055
t_Error FM_MACSEC_SECY_RxSaModifyKey(t_Handle h_FmMacsecSecY, t_Handle h_Sc, macsecAN_t an, macsecSAKey_t key);
1056
1057
/**************************************************************************//**
1058
@Function FM_MACSEC_SECY_CreateTxSa
1059
1060
@Description Create a transmit secure association for the secure channel;
1061
the SA cannot be used to transmit frames until FM_MACSEC_SECY_TxSaSetActivate is called;
1062
Only one SA can be active at a time.
1063
1064
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1065
@Param[in] an association number represent the SA.
1066
@Param[in] key the desired key for this SA.
1067
1068
@Return E_OK on success; Error code otherwise.
1069
1070
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1071
*//***************************************************************************/
1072
t_Error FM_MACSEC_SECY_CreateTxSa(t_Handle h_FmMacsecSecY, macsecAN_t an, macsecSAKey_t key);
1073
1074
/**************************************************************************//**
1075
@Function FM_MACSEC_SECY_DeleteTxSa
1076
1077
@Description Deleting an initialized secure association.
1078
1079
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1080
@Param[in] an association number represent the SA.
1081
1082
@Return E_OK on success; Error code otherwise.
1083
1084
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1085
*//***************************************************************************/
1086
t_Error FM_MACSEC_SECY_DeleteTxSa(t_Handle h_FmMacsecSecY, macsecAN_t an);
1087
1088
/**************************************************************************//**
1089
@Function FM_MACSEC_SECY_TxSaModifyKey
1090
1091
@Description Modify the key of the inactive SA with a new one.
1092
1093
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1094
@Param[in] nextActiveAn association number represent the next SA to be activated.
1095
@Param[in] key new key to replace the current key.
1096
1097
@Return E_OK on success; Error code otherwise.
1098
1099
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1100
*//***************************************************************************/
1101
t_Error FM_MACSEC_SECY_TxSaModifyKey(t_Handle h_FmMacsecSecY, macsecAN_t nextActiveAn, macsecSAKey_t key);
1102
1103
/**************************************************************************//**
1104
@Function FM_MACSEC_SECY_TxSaSetActive
1105
1106
@Description Set this SA to the active SA to be used on TX for SC;
1107
only one SA can be active at a time.
1108
1109
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1110
@Param[in] an association number represent the SA.
1111
1112
@Return E_OK on success; Error code otherwise.
1113
1114
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1115
*//***************************************************************************/
1116
t_Error FM_MACSEC_SECY_TxSaSetActive(t_Handle h_FmMacsecSecY, macsecAN_t an);
1117
1118
/**************************************************************************//**
1119
@Function FM_MACSEC_SECY_TxSaGetActive
1120
1121
@Description Get the active SA that being used for TX.
1122
1123
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1124
@Param[out] p_An the active an.
1125
1126
@Return E_OK on success; Error code otherwise.
1127
1128
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1129
*//***************************************************************************/
1130
t_Error FM_MACSEC_SECY_TxSaGetActive(t_Handle h_FmMacsecSecY, macsecAN_t *p_An);
1131
1132
/**************************************************************************//**
1133
@Function FM_MACSEC_SECY_GetStatistics
1134
1135
@Description get all statistics counters.
1136
1137
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1138
@Param[in] p_Statistics Structure with statistics.
1139
1140
@Return E_OK on success; Error code otherwise.
1141
1142
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1143
*//***************************************************************************/
1144
t_Error FM_MACSEC_SECY_GetStatistics(t_Handle h_FmMacsecSecY, t_FmMacsecSecYStatistics *p_Statistics);
1145
1146
/**************************************************************************//**
1147
@Function FM_MACSEC_SECY_RxScGetStatistics
1148
1149
@Description get all statistics counters.
1150
1151
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1152
@Param[in] h_Sc Rx Sc handle.
1153
@Param[in] p_Statistics Structure with statistics.
1154
1155
@Return E_OK on success; Error code otherwise.
1156
1157
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1158
*//***************************************************************************/
1159
t_Error FM_MACSEC_SECY_RxScGetStatistics(t_Handle h_FmMacsecSecY, t_Handle h_Sc, t_FmMacsecSecYRxScStatistics *p_Statistics);
1160
1161
/**************************************************************************//**
1162
@Function FM_MACSEC_SECY_RxSaGetStatistics
1163
1164
@Description get all statistics counters
1165
1166
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1167
@Param[in] h_Sc Rx Sc handle.
1168
@Param[in] an association number represent the SA.
1169
@Param[in] p_Statistics Structure with statistics.
1170
1171
@Return E_OK on success; Error code otherwise.
1172
1173
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1174
*//***************************************************************************/
1175
t_Error FM_MACSEC_SECY_RxSaGetStatistics(t_Handle h_FmMacsecSecY, t_Handle h_Sc, macsecAN_t an, t_FmMacsecSecYRxSaStatistics *p_Statistics);
1176
1177
/**************************************************************************//**
1178
@Function FM_MACSEC_SECY_TxScGetStatistics
1179
1180
@Description get all statistics counters.
1181
1182
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1183
@Param[in] p_Statistics Structure with statistics.
1184
1185
@Return E_OK on success; Error code otherwise.
1186
1187
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1188
*//***************************************************************************/
1189
t_Error FM_MACSEC_SECY_TxScGetStatistics(t_Handle h_FmMacsecSecY, t_FmMacsecSecYTxScStatistics *p_Statistics);
1190
1191
/**************************************************************************//**
1192
@Function FM_MACSEC_SECY_TxSaGetStatistics
1193
1194
@Description get all statistics counters.
1195
1196
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1197
@Param[in] an association number represent the SA.
1198
@Param[in] p_Statistics Structure with statistics.
1199
1200
@Return E_OK on success; Error code otherwise.
1201
1202
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1203
*//***************************************************************************/
1204
t_Error FM_MACSEC_SECY_TxSaGetStatistics(t_Handle h_FmMacsecSecY, macsecAN_t an, t_FmMacsecSecYTxSaStatistics *p_Statistics);
1205
1206
/**************************************************************************//**
1207
@Function FM_MACSEC_SECY_SetException
1208
1209
@Description Calling this routine enables/disables the specified exception.
1210
1211
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1212
@Param[in] exception The exception to be selected.
1213
@Param[in] enable TRUE to enable interrupt, FALSE to mask it.
1214
1215
@Return E_OK on success; Error code otherwise.
1216
1217
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1218
*//***************************************************************************/
1219
t_Error FM_MACSEC_SECY_SetException(t_Handle h_FmMacsecSecY, e_FmMacsecExceptions exception, bool enable);
1220
1221
/**************************************************************************//**
1222
@Function FM_MACSEC_SECY_SetEvent
1223
1224
@Description Calling this routine enables/disables the specified event.
1225
1226
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1227
@Param[in] event The event to be selected.
1228
@Param[in] enable TRUE to enable interrupt, FALSE to mask it.
1229
1230
@Return E_OK on success; Error code otherwise.
1231
1232
@Cautions Allowed only following FM_MACSEC_SECY_Config() and before FM_MACSEC_SECY_Init().
1233
*//***************************************************************************/
1234
t_Error FM_MACSEC_SECY_SetEvent(t_Handle h_FmMacsecSecY, e_FmMacsecSecYEvents event, bool enable);
1235
1236
/**************************************************************************//**
1237
@Function FM_MACSEC_SECY_GetRxScPhysId
1238
1239
@Description return the physical id of the Secure Channel.
1240
1241
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1242
@Param[in] h_Sc SC handle as returned by FM_MACSEC_SECY_CreateRxSc.
1243
@Param[out] p_ScPhysId the SC physical id.
1244
1245
@Return E_OK on success; Error code otherwise.
1246
1247
@Cautions Allowed only following FM_MACSEC_SECY_CreateRxSc().
1248
*//***************************************************************************/
1249
t_Error FM_MACSEC_SECY_GetRxScPhysId(t_Handle h_FmMacsecSecY, t_Handle h_Sc, uint32_t *p_ScPhysId);
1250
1251
/**************************************************************************//**
1252
@Function FM_MACSEC_SECY_GetTxScPhysId
1253
1254
@Description return the physical id of the Secure Channel.
1255
1256
@Param[in] h_FmMacsecSecY FM MACSEC SECY module descriptor.
1257
@Param[out] p_ScPhysId the SC physical id.
1258
1259
@Return E_OK on success; Error code otherwise.
1260
1261
@Cautions Allowed only following FM_MACSEC_SECY_Init().
1262
*//***************************************************************************/
1263
t_Error FM_MACSEC_SECY_GetTxScPhysId(t_Handle h_FmMacsecSecY, uint32_t *p_ScPhysId);
1264
1265
/** @} */ /* end of FM_MACSEC_SECY_runtime_control_grp group */
1266
/** @} */ /* end of FM_MACSEC_SECY_grp group */
1267
/** @} */ /* end of FM_MACSEC_grp group */
1268
/** @} */ /* end of FM_grp group */
1269
1270
1271
#endif /* __FM_MACSEC_EXT_H */
1272
1273