1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
|
/*
* Copyright 2008-2015 Freescale Semiconductor Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of Freescale Semiconductor nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
*
* ALTERNATIVELY, this software may be distributed under the terms of the
* GNU General Public License ("GPL") as published by the Free Software
* Foundation, either version 2 of that License or (at your option) any
* later version.
*
* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/******************************************************************************
@File fm_macsec_master.h
@Description FM MACSEC internal structures and definitions.
*//***************************************************************************/
#ifndef __FM_MACSEC_MASTER_H
#define __FM_MACSEC_MASTER_H
#include "error_ext.h"
#include "std_ext.h"
#include "fm_macsec.h"
#define MACSEC_ICV_SIZE 16
#define MACSEC_SECTAG_SIZE 16
#define MACSEC_SCI_SIZE 8
#define MACSEC_FCS_SIZE 4
/**************************************************************************//**
@Description Exceptions
*//***************************************************************************/
#define FM_MACSEC_EX_TX_SC_0 0x80000000
#define FM_MACSEC_EX_TX_SC(sc) (FM_MACSEC_EX_TX_SC_0 >> (sc))
#define FM_MACSEC_EX_ECC 0x00000001
#define GET_EXCEPTION_FLAG(bitMask, exception, id) switch (exception){ \
case e_FM_MACSEC_EX_TX_SC: \
bitMask = FM_MACSEC_EX_TX_SC(id); break; \
case e_FM_MACSEC_EX_ECC: \
bitMask = FM_MACSEC_EX_ECC; break; \
default: bitMask = 0;break;}
#define FM_MACSEC_USER_EX_SINGLE_BIT_ECC 0x80000000
#define FM_MACSEC_USER_EX_MULTI_BIT_ECC 0x40000000
#define GET_USER_EXCEPTION_FLAG(bitMask, exception) switch (exception){ \
case e_FM_MACSEC_EX_SINGLE_BIT_ECC: \
bitMask = FM_MACSEC_USER_EX_SINGLE_BIT_ECC; break; \
case e_FM_MACSEC_EX_MULTI_BIT_ECC: \
bitMask = FM_MACSEC_USER_EX_MULTI_BIT_ECC; break; \
default: bitMask = 0;break;}
/**************************************************************************//**
@Description Events
*//***************************************************************************/
#define FM_MACSEC_EV_TX_SC_0_NEXT_PN 0x80000000
#define FM_MACSEC_EV_TX_SC_NEXT_PN(sc) (FM_MACSEC_EV_TX_SC_0_NEXT_PN >> (sc))
#define GET_EVENT_FLAG(bitMask, event, id) switch (event){ \
case e_FM_MACSEC_EV_TX_SC_NEXT_PN: \
bitMask = FM_MACSEC_EV_TX_SC_NEXT_PN(id); break; \
default: bitMask = 0;break;}
/**************************************************************************//**
@Description Defaults
*//***************************************************************************/
#define DEFAULT_userExceptions (FM_MACSEC_USER_EX_SINGLE_BIT_ECC |\
FM_MACSEC_USER_EX_MULTI_BIT_ECC)
#define DEFAULT_exceptions (FM_MACSEC_EX_TX_SC(0) |\
FM_MACSEC_EX_TX_SC(1) |\
FM_MACSEC_EX_TX_SC(2) |\
FM_MACSEC_EX_TX_SC(3) |\
FM_MACSEC_EX_TX_SC(4) |\
FM_MACSEC_EX_TX_SC(5) |\
FM_MACSEC_EX_TX_SC(6) |\
FM_MACSEC_EX_TX_SC(7) |\
FM_MACSEC_EX_TX_SC(8) |\
FM_MACSEC_EX_TX_SC(9) |\
FM_MACSEC_EX_TX_SC(10) |\
FM_MACSEC_EX_TX_SC(11) |\
FM_MACSEC_EX_TX_SC(12) |\
FM_MACSEC_EX_TX_SC(13) |\
FM_MACSEC_EX_TX_SC(14) |\
FM_MACSEC_EX_TX_SC(15) |\
FM_MACSEC_EX_ECC )
#define DEFAULT_events (FM_MACSEC_EV_TX_SC_NEXT_PN(0) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(1) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(2) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(3) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(4) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(5) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(6) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(7) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(8) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(9) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(10) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(11) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(12) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(13) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(14) |\
FM_MACSEC_EV_TX_SC_NEXT_PN(15) )
#define DEFAULT_unknownSciFrameTreatment e_FM_MACSEC_UNKNOWN_SCI_FRAME_TREATMENT_DISCARD_BOTH
#define DEFAULT_invalidTagsFrameTreatment FALSE
#define DEFAULT_encryptWithNoChangedTextFrameTreatment FALSE
#define DEFAULT_untagFrameTreatment e_FM_MACSEC_UNTAG_FRAME_TREATMENT_DELIVER_UNCONTROLLED_DISCARD_CONTROLLED
#define DEFAULT_changedTextWithNoEncryptFrameTreatment FALSE
#define DEFAULT_onlyScbIsSetFrameTreatment FALSE
#define DEFAULT_keysUnreadable FALSE
#define DEFAULT_normalMode TRUE
#define DEFAULT_sc0ReservedForPTP FALSE
#define DEFAULT_initNextPn 1
#define DEFAULT_pnExhThr 0xffffffff
#define DEFAULT_sectagOverhead (MACSEC_ICV_SIZE + MACSEC_SECTAG_SIZE)
#define DEFAULT_mflSubtract MACSEC_FCS_SIZE
/**************************************************************************//**
@Description Memory Mapped Registers
*//***************************************************************************/
#if defined(__MWERKS__) && !defined(__GNUC__)
#pragma pack(push,1)
#endif /* defined(__MWERKS__) && ... */
typedef _Packed struct
{
/* MACsec configuration */
volatile uint32_t cfg; /**< MACsec configuration */
volatile uint32_t et; /**< MACsec EtherType */
volatile uint8_t res1[56]; /**< reserved */
volatile uint32_t mfl; /**< Maximum Frame Length */
volatile uint32_t tpnet; /**< TX Packet Number exhaustion threshold */
volatile uint8_t res2[56]; /**< reserved */
volatile uint32_t rxsca; /**< RX SC access select */
volatile uint8_t res3[60]; /**< reserved */
volatile uint32_t txsca; /**< TX SC access select */
volatile uint8_t res4[60]; /**< reserved */
/* RX configuration, status and statistic */
volatile uint32_t rxsci1h; /**< RX Secure Channel Identifier first half */
volatile uint32_t rxsci2h; /**< RX Secure Channel Identifier second half */
volatile uint8_t res5[8]; /**< reserved */
volatile uint32_t ifio1hs; /**< ifInOctets first half Statistic */
volatile uint32_t ifio2hs; /**< ifInOctets second half Statistic */
volatile uint32_t ifiups; /**< ifInUcastPkts Statistic */
volatile uint8_t res6[4]; /**< reserved */
volatile uint32_t ifimps; /**< ifInMulticastPkts Statistic */
volatile uint32_t ifibps; /**< ifInBroadcastPkts Statistic */
volatile uint32_t rxsccfg; /**< RX Secure Channel configuration */
volatile uint32_t rpw; /**< replayWindow */
volatile uint8_t res7[16]; /**< reserved */
volatile uint32_t inov1hs; /**< InOctetsValidated first half Statistic */
volatile uint32_t inov2hs; /**< InOctetsValidated second half Statistic */
volatile uint32_t inod1hs; /**< InOctetsDecrypted first half Statistic */
volatile uint32_t inod2hs; /**< InOctetsDecrypted second half Statistic */
volatile uint32_t rxscipus; /**< RX Secure Channel InPktsUnchecked Statistic */
volatile uint32_t rxscipds; /**< RX Secure Channel InPktsDelayed Statistic */
volatile uint32_t rxscipls; /**< RX Secure Channel InPktsLate Statistic */
volatile uint8_t res8[4]; /**< reserved */
volatile uint32_t rxaninuss[MAX_NUM_OF_SA_PER_SC]; /**< RX AN 0-3 InNotUsingSA Statistic */
volatile uint32_t rxanipuss[MAX_NUM_OF_SA_PER_SC]; /**< RX AN 0-3 InPktsUnusedSA Statistic */
_Packed struct
{
volatile uint32_t rxsacs; /**< RX Security Association configuration and status */
volatile uint32_t rxsanpn; /**< RX Security Association nextPN */
volatile uint32_t rxsalpn; /**< RX Security Association lowestPN */
volatile uint32_t rxsaipos; /**< RX Security Association InPktsOK Statistic */
volatile uint32_t rxsak[4]; /**< RX Security Association key (128 bit) */
volatile uint32_t rxsah[4]; /**< RX Security Association hash (128 bit) */
volatile uint32_t rxsaipis; /**< RX Security Association InPktsInvalid Statistic */
volatile uint32_t rxsaipnvs; /**< RX Security Association InPktsNotValid Statistic */
volatile uint8_t res9[8]; /**< reserved */
} _PackedType fmMacsecRxScSa[NUM_OF_SA_PER_RX_SC];
/* TX configuration, status and statistic */
volatile uint32_t txsci1h; /**< TX Secure Channel Identifier first half */
volatile uint32_t txsci2h; /**< TX Secure Channel Identifier second half */
volatile uint8_t res10[8]; /**< reserved */
volatile uint32_t ifoo1hs; /**< ifOutOctets first half Statistic */
volatile uint32_t ifoo2hs; /**< ifOutOctets second half Statistic */
volatile uint32_t ifoups; /**< ifOutUcastPkts Statistic */
volatile uint32_t opus; /**< OutPktsUntagged Statistic */
volatile uint32_t ifomps; /**< ifOutMulticastPkts Statistic */
volatile uint32_t ifobps; /**< ifOutBroadcastPkts Statistic */
volatile uint32_t txsccfg; /**< TX Secure Channel configuration */
volatile uint32_t optls; /**< OutPktsTooLong Statistic */
volatile uint8_t res11[16]; /**< reserved */
volatile uint32_t oop1hs; /**< OutOctetsProtected first half Statistic */
volatile uint32_t oop2hs; /**< OutOctetsProtected second half Statistic */
volatile uint32_t ooe1hs; /**< OutOctetsEncrypted first half Statistic */
volatile uint32_t ooe2hs; /**< OutOctetsEncrypted second half Statistic */
volatile uint8_t res12[48]; /**< reserved */
_Packed struct
{
volatile uint32_t txsacs; /**< TX Security Association configuration and status */
volatile uint32_t txsanpn; /**< TX Security Association nextPN */
volatile uint32_t txsaopps; /**< TX Security Association OutPktsProtected Statistic */
volatile uint32_t txsaopes; /**< TX Security Association OutPktsEncrypted Statistic */
volatile uint32_t txsak[4]; /**< TX Security Association key (128 bit) */
volatile uint32_t txsah[4]; /**< TX Security Association hash (128 bit) */
volatile uint8_t res13[16]; /**< reserved */
} _PackedType fmMacsecTxScSa[NUM_OF_SA_PER_TX_SC];
volatile uint8_t res14[248]; /**< reserved */
/* Global configuration and status */
volatile uint32_t ip_rev1; /**< MACsec IP Block Revision 1 register */
volatile uint32_t ip_rev2; /**< MACsec IP Block Revision 2 register */
volatile uint32_t evr; /**< MACsec Event Register */
volatile uint32_t ever; /**< MACsec Event Enable Register */
volatile uint32_t evfr; /**< MACsec Event Force Register */
volatile uint32_t err; /**< MACsec Error Register */
volatile uint32_t erer; /**< MACsec Error Enable Register */
volatile uint32_t erfr; /**< MACsec Error Force Register */
volatile uint8_t res15[40]; /**< reserved */
volatile uint32_t meec; /**< MACsec Memory ECC Error Capture Register */
volatile uint32_t idle; /**< MACsec Idle status Register */
volatile uint8_t res16[184]; /**< reserved */
/* DEBUG */
volatile uint32_t rxec; /**< MACsec RX error capture Register */
volatile uint8_t res17[28]; /**< reserved */
volatile uint32_t txec; /**< MACsec TX error capture Register */
volatile uint8_t res18[220]; /**< reserved */
/* Macsec Rx global statistic */
volatile uint32_t ifiocp1hs; /**< ifInOctetsCp first half Statistic */
volatile uint32_t ifiocp2hs; /**< ifInOctetsCp second half Statistic */
volatile uint32_t ifiupcps; /**< ifInUcastPktsCp Statistic */
volatile uint8_t res19[4]; /**< reserved */
volatile uint32_t ifioup1hs; /**< ifInOctetsUp first half Statistic */
volatile uint32_t ifioup2hs; /**< ifInOctetsUp second half Statistic */
volatile uint32_t ifiupups; /**< ifInUcastPktsUp Statistic */
volatile uint8_t res20[4]; /**< reserved */
volatile uint32_t ifimpcps; /**< ifInMulticastPktsCp Statistic */
volatile uint32_t ifibpcps; /**< ifInBroadcastPktsCp Statistic */
volatile uint32_t ifimpups; /**< ifInMulticastPktsUp Statistic */
volatile uint32_t ifibpups; /**< ifInBroadcastPktsUp Statistic */
volatile uint32_t ipwts; /**< InPktsWithoutTag Statistic */
volatile uint32_t ipkays; /**< InPktsKaY Statistic */
volatile uint32_t ipbts; /**< InPktsBadTag Statistic */
volatile uint32_t ipsnfs; /**< InPktsSCINotFound Statistic */
volatile uint32_t ipuecs; /**< InPktsUnsupportedEC Statistic */
volatile uint32_t ipescbs; /**< InPktsEponSingleCopyBroadcast Statistic */
volatile uint32_t iptls; /**< InPktsTooLong Statistic */
volatile uint8_t res21[52]; /**< reserved */
/* Macsec Tx global statistic */
volatile uint32_t opds; /**< OutPktsDiscarded Statistic */
#if (DPAA_VERSION >= 11)
volatile uint8_t res22[124]; /**< reserved */
_Packed struct
{
volatile uint32_t rxsak[8]; /**< RX Security Association key (128/256 bit) */
volatile uint8_t res23[32]; /**< reserved */
} _PackedType rxScSaKey[NUM_OF_SA_PER_RX_SC];
_Packed struct
{
volatile uint32_t txsak[8]; /**< TX Security Association key (128/256 bit) */
volatile uint8_t res24[32]; /**< reserved */
} _PackedType txScSaKey[NUM_OF_SA_PER_TX_SC];
#endif /* (DPAA_VERSION >= 11) */
} _PackedType t_FmMacsecRegs;
#if defined(__MWERKS__) && !defined(__GNUC__)
#pragma pack(pop)
#endif /* defined(__MWERKS__) && ... */
/**************************************************************************//**
@Description General defines
*//***************************************************************************/
#define SCI_HIGH_MASK 0xffffffff00000000LL
#define SCI_LOW_MASK 0x00000000ffffffffLL
#define LONG_SHIFT 32
#define GET_SCI_FIRST_HALF(sci) (uint32_t)((macsecSCI_t)((macsecSCI_t)(sci) & SCI_HIGH_MASK) >> LONG_SHIFT)
#define GET_SCI_SECOND_HALF(sci) (uint32_t)((macsecSCI_t)(sci) & SCI_LOW_MASK)
/**************************************************************************//**
@Description Configuration defines
*//***************************************************************************/
/* masks */
#define CFG_UECT 0x00000800
#define CFG_ESCBT 0x00000400
#define CFG_USFT 0x00000300
#define CFG_ITT 0x00000080
#define CFG_KFT 0x00000040
#define CFG_UFT 0x00000030
#define CFG_KSS 0x00000004
#define CFG_BYPN 0x00000002
#define CFG_S0I 0x00000001
#define ET_TYPE 0x0000ffff
#define MFL_MAX_LEN 0x0000ffff
#define RXSCA_SC_SEL 0x0000000f
#define TXSCA_SC_SEL 0x0000000f
#define IP_REV_1_IP_ID 0xffff0000
#define IP_REV_1_IP_MJ 0x0000ff00
#define IP_REV_1_IP_MM 0x000000ff
#define IP_REV_2_IP_INT 0x00ff0000
#define IP_REV_2_IP_ERR 0x0000ff00
#define IP_REV_2_IP_CFG 0x000000ff
#define MECC_CAP 0x80000000
#define MECC_CET 0x40000000
#define MECC_SERCNT 0x00ff0000
#define MECC_MEMADDR 0x000001ff
/* shifts */
#define CFG_UECT_SHIFT (31-20)
#define CFG_ESCBT_SHIFT (31-21)
#define CFG_USFT_SHIFT (31-23)
#define CFG_ITT_SHIFT (31-24)
#define CFG_KFT_SHIFT (31-25)
#define CFG_UFT_SHIFT (31-27)
#define CFG_KSS_SHIFT (31-29)
#define CFG_BYPN_SHIFT (31-30)
#define CFG_S0I_SHIFT (31-31)
#define IP_REV_1_IP_ID_SHIFT (31-15)
#define IP_REV_1_IP_MJ_SHIFT (31-23)
#define IP_REV_1_IP_MM_SHIFT (31-31)
#define IP_REV_2_IP_INT_SHIFT (31-15)
#define IP_REV_2_IP_ERR_SHIFT (31-23)
#define IP_REV_2_IP_CFG_SHIFT (31-31)
#define MECC_CAP_SHIFT (31-0)
#define MECC_CET_SHIFT (31-1)
#define MECC_SERCNT_SHIFT (31-15)
#define MECC_MEMADDR_SHIFT (31-31)
/**************************************************************************//**
@Description RX SC defines
*//***************************************************************************/
/* masks */
#define RX_SCCFG_SCI_EN_MASK 0x00000800
#define RX_SCCFG_RP_MASK 0x00000400
#define RX_SCCFG_VF_MASK 0x00000300
#define RX_SCCFG_CO_MASK 0x0000003f
/* shifts */
#define RX_SCCFG_SCI_EN_SHIFT (31-20)
#define RX_SCCFG_RP_SHIFT (31-21)
#define RX_SCCFG_VF_SHIFT (31-23)
#define RX_SCCFG_CO_SHIFT (31-31)
#define RX_SCCFG_CS_SHIFT (31-7)
/**************************************************************************//**
@Description RX SA defines
*//***************************************************************************/
/* masks */
#define RX_SACFG_ACTIVE 0x80000000
#define RX_SACFG_AN_MASK 0x00000006
#define RX_SACFG_EN_MASK 0x00000001
/* shifts */
#define RX_SACFG_AN_SHIFT (31-30)
#define RX_SACFG_EN_SHIFT (31-31)
/**************************************************************************//**
@Description TX SC defines
*//***************************************************************************/
/* masks */
#define TX_SCCFG_AN_MASK 0x000c0000
#define TX_SCCFG_ASA_MASK 0x00020000
#define TX_SCCFG_SCE_MASK 0x00010000
#define TX_SCCFG_CO_MASK 0x00003f00
#define TX_SCCFG_CE_MASK 0x00000010
#define TX_SCCFG_PF_MASK 0x00000008
#define TX_SCCFG_AIS_MASK 0x00000004
#define TX_SCCFG_UES_MASK 0x00000002
#define TX_SCCFG_USCB_MASK 0x00000001
/* shifts */
#define TX_SCCFG_AN_SHIFT (31-13)
#define TX_SCCFG_ASA_SHIFT (31-14)
#define TX_SCCFG_SCE_SHIFT (31-15)
#define TX_SCCFG_CO_SHIFT (31-23)
#define TX_SCCFG_CE_SHIFT (31-27)
#define TX_SCCFG_PF_SHIFT (31-28)
#define TX_SCCFG_AIS_SHIFT (31-29)
#define TX_SCCFG_UES_SHIFT (31-30)
#define TX_SCCFG_USCB_SHIFT (31-31)
#define TX_SCCFG_CS_SHIFT (31-7)
/**************************************************************************//**
@Description TX SA defines
*//***************************************************************************/
/* masks */
#define TX_SACFG_ACTIVE 0x80000000
typedef struct
{
void (*f_Isr) (t_Handle h_Arg, uint32_t id);
t_Handle h_SrcHandle;
} t_FmMacsecIntrSrc;
typedef struct
{
e_FmMacsecUnknownSciFrameTreatment unknownSciTreatMode;
bool invalidTagsDeliverUncontrolled;
bool changedTextWithNoEncryptDeliverUncontrolled;
bool onlyScbIsSetDeliverUncontrolled;
bool encryptWithNoChangedTextDiscardUncontrolled;
e_FmMacsecUntagFrameTreatment untagTreatMode;
uint32_t pnExhThr;
bool keysUnreadable;
bool byPassMode;
bool reservedSc0;
uint32_t sectagOverhead;
uint32_t mflSubtract;
} t_FmMacsecDriverParam;
typedef struct
{
t_FmMacsecControllerDriver fmMacsecControllerDriver;
t_Handle h_Fm;
t_FmMacsecRegs *p_FmMacsecRegs;
t_Handle h_FmMac; /**< A handle to the FM MAC object related to */
char fmMacsecModuleName[MODULE_NAME_SIZE];
t_FmMacsecIntrSrc intrMng[NUM_OF_INTER_MODULE_EVENTS];
uint32_t events;
uint32_t exceptions;
uint32_t userExceptions;
t_FmMacsecExceptionsCallback *f_Exception; /**< Exception Callback Routine */
t_Handle h_App; /**< A handle to an application layer object; This handle will
be passed by the driver upon calling the above callbacks */
bool rxScTable[NUM_OF_RX_SC];
uint32_t numRxScAvailable;
bool txScTable[NUM_OF_TX_SC];
uint32_t numTxScAvailable;
t_Handle rxScSpinLock;
t_Handle txScSpinLock;
t_FmMacsecDriverParam *p_FmMacsecDriverParam;
} t_FmMacsec;
#endif /* __FM_MACSEC_MASTER_H */
|