1852ba100SJustin Hibbits /* 2852ba100SJustin Hibbits * Copyright 2008-2015 Freescale Semiconductor Inc. 3852ba100SJustin Hibbits * 4852ba100SJustin Hibbits * Redistribution and use in source and binary forms, with or without 5852ba100SJustin Hibbits * modification, are permitted provided that the following conditions are met: 6852ba100SJustin Hibbits * * Redistributions of source code must retain the above copyright 7852ba100SJustin Hibbits * notice, this list of conditions and the following disclaimer. 8852ba100SJustin Hibbits * * Redistributions in binary form must reproduce the above copyright 9852ba100SJustin Hibbits * notice, this list of conditions and the following disclaimer in the 10852ba100SJustin Hibbits * documentation and/or other materials provided with the distribution. 11852ba100SJustin Hibbits * * Neither the name of Freescale Semiconductor nor the 12852ba100SJustin Hibbits * names of its contributors may be used to endorse or promote products 13852ba100SJustin Hibbits * derived from this software without specific prior written permission. 14852ba100SJustin Hibbits * 15852ba100SJustin Hibbits * 16852ba100SJustin Hibbits * ALTERNATIVELY, this software may be distributed under the terms of the 17852ba100SJustin Hibbits * GNU General Public License ("GPL") as published by the Free Software 18852ba100SJustin Hibbits * Foundation, either version 2 of that License or (at your option) any 19852ba100SJustin Hibbits * later version. 20852ba100SJustin Hibbits * 21852ba100SJustin Hibbits * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 22852ba100SJustin Hibbits * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 23852ba100SJustin Hibbits * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24852ba100SJustin Hibbits * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 25852ba100SJustin Hibbits * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 26852ba100SJustin Hibbits * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27852ba100SJustin Hibbits * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 28852ba100SJustin Hibbits * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29852ba100SJustin Hibbits * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30852ba100SJustin Hibbits * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31852ba100SJustin Hibbits */ 32852ba100SJustin Hibbits 33852ba100SJustin Hibbits /****************************************************************************** 34852ba100SJustin Hibbits @File fm_macsec_master.h 35852ba100SJustin Hibbits 36852ba100SJustin Hibbits @Description FM MACSEC internal structures and definitions. 37852ba100SJustin Hibbits *//***************************************************************************/ 38852ba100SJustin Hibbits #ifndef __FM_MACSEC_MASTER_H 39852ba100SJustin Hibbits #define __FM_MACSEC_MASTER_H 40852ba100SJustin Hibbits 41852ba100SJustin Hibbits #include "error_ext.h" 42852ba100SJustin Hibbits #include "std_ext.h" 43852ba100SJustin Hibbits 44852ba100SJustin Hibbits #include "fm_macsec.h" 45852ba100SJustin Hibbits 46852ba100SJustin Hibbits 47852ba100SJustin Hibbits #define MACSEC_ICV_SIZE 16 48852ba100SJustin Hibbits #define MACSEC_SECTAG_SIZE 16 49852ba100SJustin Hibbits #define MACSEC_SCI_SIZE 8 50852ba100SJustin Hibbits #define MACSEC_FCS_SIZE 4 51852ba100SJustin Hibbits 52852ba100SJustin Hibbits /**************************************************************************//** 53852ba100SJustin Hibbits @Description Exceptions 54852ba100SJustin Hibbits *//***************************************************************************/ 55852ba100SJustin Hibbits 56852ba100SJustin Hibbits #define FM_MACSEC_EX_TX_SC_0 0x80000000 57852ba100SJustin Hibbits #define FM_MACSEC_EX_TX_SC(sc) (FM_MACSEC_EX_TX_SC_0 >> (sc)) 58852ba100SJustin Hibbits #define FM_MACSEC_EX_ECC 0x00000001 59852ba100SJustin Hibbits 60852ba100SJustin Hibbits #define GET_EXCEPTION_FLAG(bitMask, exception, id) switch (exception){ \ 61852ba100SJustin Hibbits case e_FM_MACSEC_EX_TX_SC: \ 62852ba100SJustin Hibbits bitMask = FM_MACSEC_EX_TX_SC(id); break; \ 63852ba100SJustin Hibbits case e_FM_MACSEC_EX_ECC: \ 64852ba100SJustin Hibbits bitMask = FM_MACSEC_EX_ECC; break; \ 65852ba100SJustin Hibbits default: bitMask = 0;break;} 66852ba100SJustin Hibbits 67852ba100SJustin Hibbits #define FM_MACSEC_USER_EX_SINGLE_BIT_ECC 0x80000000 68852ba100SJustin Hibbits #define FM_MACSEC_USER_EX_MULTI_BIT_ECC 0x40000000 69852ba100SJustin Hibbits 70852ba100SJustin Hibbits #define GET_USER_EXCEPTION_FLAG(bitMask, exception) switch (exception){ \ 71852ba100SJustin Hibbits case e_FM_MACSEC_EX_SINGLE_BIT_ECC: \ 72852ba100SJustin Hibbits bitMask = FM_MACSEC_USER_EX_SINGLE_BIT_ECC; break; \ 73852ba100SJustin Hibbits case e_FM_MACSEC_EX_MULTI_BIT_ECC: \ 74852ba100SJustin Hibbits bitMask = FM_MACSEC_USER_EX_MULTI_BIT_ECC; break; \ 75852ba100SJustin Hibbits default: bitMask = 0;break;} 76852ba100SJustin Hibbits 77852ba100SJustin Hibbits /**************************************************************************//** 78852ba100SJustin Hibbits @Description Events 79852ba100SJustin Hibbits *//***************************************************************************/ 80852ba100SJustin Hibbits 81852ba100SJustin Hibbits #define FM_MACSEC_EV_TX_SC_0_NEXT_PN 0x80000000 82852ba100SJustin Hibbits #define FM_MACSEC_EV_TX_SC_NEXT_PN(sc) (FM_MACSEC_EV_TX_SC_0_NEXT_PN >> (sc)) 83852ba100SJustin Hibbits 84852ba100SJustin Hibbits #define GET_EVENT_FLAG(bitMask, event, id) switch (event){ \ 85852ba100SJustin Hibbits case e_FM_MACSEC_EV_TX_SC_NEXT_PN: \ 86852ba100SJustin Hibbits bitMask = FM_MACSEC_EV_TX_SC_NEXT_PN(id); break; \ 87852ba100SJustin Hibbits default: bitMask = 0;break;} 88852ba100SJustin Hibbits 89852ba100SJustin Hibbits /**************************************************************************//** 90852ba100SJustin Hibbits @Description Defaults 91852ba100SJustin Hibbits *//***************************************************************************/ 92852ba100SJustin Hibbits #define DEFAULT_userExceptions (FM_MACSEC_USER_EX_SINGLE_BIT_ECC |\ 93852ba100SJustin Hibbits FM_MACSEC_USER_EX_MULTI_BIT_ECC) 94852ba100SJustin Hibbits 95852ba100SJustin Hibbits #define DEFAULT_exceptions (FM_MACSEC_EX_TX_SC(0) |\ 96852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(1) |\ 97852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(2) |\ 98852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(3) |\ 99852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(4) |\ 100852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(5) |\ 101852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(6) |\ 102852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(7) |\ 103852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(8) |\ 104852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(9) |\ 105852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(10) |\ 106852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(11) |\ 107852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(12) |\ 108852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(13) |\ 109852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(14) |\ 110852ba100SJustin Hibbits FM_MACSEC_EX_TX_SC(15) |\ 111852ba100SJustin Hibbits FM_MACSEC_EX_ECC ) 112852ba100SJustin Hibbits 113852ba100SJustin Hibbits #define DEFAULT_events (FM_MACSEC_EV_TX_SC_NEXT_PN(0) |\ 114852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(1) |\ 115852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(2) |\ 116852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(3) |\ 117852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(4) |\ 118852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(5) |\ 119852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(6) |\ 120852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(7) |\ 121852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(8) |\ 122852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(9) |\ 123852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(10) |\ 124852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(11) |\ 125852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(12) |\ 126852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(13) |\ 127852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(14) |\ 128852ba100SJustin Hibbits FM_MACSEC_EV_TX_SC_NEXT_PN(15) ) 129852ba100SJustin Hibbits 130852ba100SJustin Hibbits #define DEFAULT_unknownSciFrameTreatment e_FM_MACSEC_UNKNOWN_SCI_FRAME_TREATMENT_DISCARD_BOTH 131852ba100SJustin Hibbits #define DEFAULT_invalidTagsFrameTreatment FALSE 132852ba100SJustin Hibbits #define DEFAULT_encryptWithNoChangedTextFrameTreatment FALSE 133852ba100SJustin Hibbits #define DEFAULT_untagFrameTreatment e_FM_MACSEC_UNTAG_FRAME_TREATMENT_DELIVER_UNCONTROLLED_DISCARD_CONTROLLED 134852ba100SJustin Hibbits #define DEFAULT_changedTextWithNoEncryptFrameTreatment FALSE 135852ba100SJustin Hibbits #define DEFAULT_onlyScbIsSetFrameTreatment FALSE 136852ba100SJustin Hibbits #define DEFAULT_keysUnreadable FALSE 137852ba100SJustin Hibbits #define DEFAULT_normalMode TRUE 138852ba100SJustin Hibbits #define DEFAULT_sc0ReservedForPTP FALSE 139852ba100SJustin Hibbits #define DEFAULT_initNextPn 1 140852ba100SJustin Hibbits #define DEFAULT_pnExhThr 0xffffffff 141852ba100SJustin Hibbits #define DEFAULT_sectagOverhead (MACSEC_ICV_SIZE + MACSEC_SECTAG_SIZE) 142852ba100SJustin Hibbits #define DEFAULT_mflSubtract MACSEC_FCS_SIZE 143852ba100SJustin Hibbits 144852ba100SJustin Hibbits 145852ba100SJustin Hibbits /**************************************************************************//** 146852ba100SJustin Hibbits @Description Memory Mapped Registers 147852ba100SJustin Hibbits *//***************************************************************************/ 148852ba100SJustin Hibbits 149852ba100SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__) 150852ba100SJustin Hibbits #pragma pack(push,1) 151852ba100SJustin Hibbits #endif /* defined(__MWERKS__) && ... */ 152852ba100SJustin Hibbits 153852ba100SJustin Hibbits typedef _Packed struct 154852ba100SJustin Hibbits { 155852ba100SJustin Hibbits /* MACsec configuration */ 156852ba100SJustin Hibbits volatile uint32_t cfg; /**< MACsec configuration */ 157852ba100SJustin Hibbits volatile uint32_t et; /**< MACsec EtherType */ 158852ba100SJustin Hibbits volatile uint8_t res1[56]; /**< reserved */ 159852ba100SJustin Hibbits volatile uint32_t mfl; /**< Maximum Frame Length */ 160852ba100SJustin Hibbits volatile uint32_t tpnet; /**< TX Packet Number exhaustion threshold */ 161852ba100SJustin Hibbits volatile uint8_t res2[56]; /**< reserved */ 162852ba100SJustin Hibbits volatile uint32_t rxsca; /**< RX SC access select */ 163852ba100SJustin Hibbits volatile uint8_t res3[60]; /**< reserved */ 164852ba100SJustin Hibbits volatile uint32_t txsca; /**< TX SC access select */ 165852ba100SJustin Hibbits volatile uint8_t res4[60]; /**< reserved */ 166852ba100SJustin Hibbits 167852ba100SJustin Hibbits /* RX configuration, status and statistic */ 168852ba100SJustin Hibbits volatile uint32_t rxsci1h; /**< RX Secure Channel Identifier first half */ 169852ba100SJustin Hibbits volatile uint32_t rxsci2h; /**< RX Secure Channel Identifier second half */ 170852ba100SJustin Hibbits volatile uint8_t res5[8]; /**< reserved */ 171852ba100SJustin Hibbits volatile uint32_t ifio1hs; /**< ifInOctets first half Statistic */ 172852ba100SJustin Hibbits volatile uint32_t ifio2hs; /**< ifInOctets second half Statistic */ 173852ba100SJustin Hibbits volatile uint32_t ifiups; /**< ifInUcastPkts Statistic */ 174852ba100SJustin Hibbits volatile uint8_t res6[4]; /**< reserved */ 175852ba100SJustin Hibbits volatile uint32_t ifimps; /**< ifInMulticastPkts Statistic */ 176852ba100SJustin Hibbits volatile uint32_t ifibps; /**< ifInBroadcastPkts Statistic */ 177852ba100SJustin Hibbits volatile uint32_t rxsccfg; /**< RX Secure Channel configuration */ 178852ba100SJustin Hibbits volatile uint32_t rpw; /**< replayWindow */ 179852ba100SJustin Hibbits volatile uint8_t res7[16]; /**< reserved */ 180852ba100SJustin Hibbits volatile uint32_t inov1hs; /**< InOctetsValidated first half Statistic */ 181852ba100SJustin Hibbits volatile uint32_t inov2hs; /**< InOctetsValidated second half Statistic */ 182852ba100SJustin Hibbits volatile uint32_t inod1hs; /**< InOctetsDecrypted first half Statistic */ 183852ba100SJustin Hibbits volatile uint32_t inod2hs; /**< InOctetsDecrypted second half Statistic */ 184852ba100SJustin Hibbits volatile uint32_t rxscipus; /**< RX Secure Channel InPktsUnchecked Statistic */ 185852ba100SJustin Hibbits volatile uint32_t rxscipds; /**< RX Secure Channel InPktsDelayed Statistic */ 186852ba100SJustin Hibbits volatile uint32_t rxscipls; /**< RX Secure Channel InPktsLate Statistic */ 187852ba100SJustin Hibbits volatile uint8_t res8[4]; /**< reserved */ 188852ba100SJustin Hibbits volatile uint32_t rxaninuss[MAX_NUM_OF_SA_PER_SC]; /**< RX AN 0-3 InNotUsingSA Statistic */ 189852ba100SJustin Hibbits volatile uint32_t rxanipuss[MAX_NUM_OF_SA_PER_SC]; /**< RX AN 0-3 InPktsUnusedSA Statistic */ 190852ba100SJustin Hibbits _Packed struct 191852ba100SJustin Hibbits { 192852ba100SJustin Hibbits volatile uint32_t rxsacs; /**< RX Security Association configuration and status */ 193852ba100SJustin Hibbits volatile uint32_t rxsanpn; /**< RX Security Association nextPN */ 194852ba100SJustin Hibbits volatile uint32_t rxsalpn; /**< RX Security Association lowestPN */ 195852ba100SJustin Hibbits volatile uint32_t rxsaipos; /**< RX Security Association InPktsOK Statistic */ 196852ba100SJustin Hibbits volatile uint32_t rxsak[4]; /**< RX Security Association key (128 bit) */ 197852ba100SJustin Hibbits volatile uint32_t rxsah[4]; /**< RX Security Association hash (128 bit) */ 198852ba100SJustin Hibbits volatile uint32_t rxsaipis; /**< RX Security Association InPktsInvalid Statistic */ 199852ba100SJustin Hibbits volatile uint32_t rxsaipnvs; /**< RX Security Association InPktsNotValid Statistic */ 200852ba100SJustin Hibbits volatile uint8_t res9[8]; /**< reserved */ 201852ba100SJustin Hibbits } _PackedType fmMacsecRxScSa[NUM_OF_SA_PER_RX_SC]; 202852ba100SJustin Hibbits 203852ba100SJustin Hibbits /* TX configuration, status and statistic */ 204852ba100SJustin Hibbits volatile uint32_t txsci1h; /**< TX Secure Channel Identifier first half */ 205852ba100SJustin Hibbits volatile uint32_t txsci2h; /**< TX Secure Channel Identifier second half */ 206852ba100SJustin Hibbits volatile uint8_t res10[8]; /**< reserved */ 207852ba100SJustin Hibbits volatile uint32_t ifoo1hs; /**< ifOutOctets first half Statistic */ 208852ba100SJustin Hibbits volatile uint32_t ifoo2hs; /**< ifOutOctets second half Statistic */ 209852ba100SJustin Hibbits volatile uint32_t ifoups; /**< ifOutUcastPkts Statistic */ 210852ba100SJustin Hibbits volatile uint32_t opus; /**< OutPktsUntagged Statistic */ 211852ba100SJustin Hibbits volatile uint32_t ifomps; /**< ifOutMulticastPkts Statistic */ 212852ba100SJustin Hibbits volatile uint32_t ifobps; /**< ifOutBroadcastPkts Statistic */ 213852ba100SJustin Hibbits volatile uint32_t txsccfg; /**< TX Secure Channel configuration */ 214852ba100SJustin Hibbits volatile uint32_t optls; /**< OutPktsTooLong Statistic */ 215852ba100SJustin Hibbits volatile uint8_t res11[16]; /**< reserved */ 216852ba100SJustin Hibbits volatile uint32_t oop1hs; /**< OutOctetsProtected first half Statistic */ 217852ba100SJustin Hibbits volatile uint32_t oop2hs; /**< OutOctetsProtected second half Statistic */ 218852ba100SJustin Hibbits volatile uint32_t ooe1hs; /**< OutOctetsEncrypted first half Statistic */ 219852ba100SJustin Hibbits volatile uint32_t ooe2hs; /**< OutOctetsEncrypted second half Statistic */ 220852ba100SJustin Hibbits volatile uint8_t res12[48]; /**< reserved */ 221852ba100SJustin Hibbits _Packed struct 222852ba100SJustin Hibbits { 223852ba100SJustin Hibbits volatile uint32_t txsacs; /**< TX Security Association configuration and status */ 224852ba100SJustin Hibbits volatile uint32_t txsanpn; /**< TX Security Association nextPN */ 225852ba100SJustin Hibbits volatile uint32_t txsaopps; /**< TX Security Association OutPktsProtected Statistic */ 226852ba100SJustin Hibbits volatile uint32_t txsaopes; /**< TX Security Association OutPktsEncrypted Statistic */ 227852ba100SJustin Hibbits volatile uint32_t txsak[4]; /**< TX Security Association key (128 bit) */ 228852ba100SJustin Hibbits volatile uint32_t txsah[4]; /**< TX Security Association hash (128 bit) */ 229852ba100SJustin Hibbits volatile uint8_t res13[16]; /**< reserved */ 230852ba100SJustin Hibbits } _PackedType fmMacsecTxScSa[NUM_OF_SA_PER_TX_SC]; 231852ba100SJustin Hibbits volatile uint8_t res14[248]; /**< reserved */ 232852ba100SJustin Hibbits 233852ba100SJustin Hibbits /* Global configuration and status */ 234852ba100SJustin Hibbits volatile uint32_t ip_rev1; /**< MACsec IP Block Revision 1 register */ 235852ba100SJustin Hibbits volatile uint32_t ip_rev2; /**< MACsec IP Block Revision 2 register */ 236852ba100SJustin Hibbits volatile uint32_t evr; /**< MACsec Event Register */ 237852ba100SJustin Hibbits volatile uint32_t ever; /**< MACsec Event Enable Register */ 238852ba100SJustin Hibbits volatile uint32_t evfr; /**< MACsec Event Force Register */ 239852ba100SJustin Hibbits volatile uint32_t err; /**< MACsec Error Register */ 240852ba100SJustin Hibbits volatile uint32_t erer; /**< MACsec Error Enable Register */ 241852ba100SJustin Hibbits volatile uint32_t erfr; /**< MACsec Error Force Register */ 242852ba100SJustin Hibbits volatile uint8_t res15[40]; /**< reserved */ 243852ba100SJustin Hibbits volatile uint32_t meec; /**< MACsec Memory ECC Error Capture Register */ 244852ba100SJustin Hibbits volatile uint32_t idle; /**< MACsec Idle status Register */ 245852ba100SJustin Hibbits volatile uint8_t res16[184]; /**< reserved */ 246852ba100SJustin Hibbits /* DEBUG */ 247852ba100SJustin Hibbits volatile uint32_t rxec; /**< MACsec RX error capture Register */ 248852ba100SJustin Hibbits volatile uint8_t res17[28]; /**< reserved */ 249852ba100SJustin Hibbits volatile uint32_t txec; /**< MACsec TX error capture Register */ 250852ba100SJustin Hibbits volatile uint8_t res18[220]; /**< reserved */ 251852ba100SJustin Hibbits 252852ba100SJustin Hibbits /* Macsec Rx global statistic */ 253852ba100SJustin Hibbits volatile uint32_t ifiocp1hs; /**< ifInOctetsCp first half Statistic */ 254852ba100SJustin Hibbits volatile uint32_t ifiocp2hs; /**< ifInOctetsCp second half Statistic */ 255852ba100SJustin Hibbits volatile uint32_t ifiupcps; /**< ifInUcastPktsCp Statistic */ 256852ba100SJustin Hibbits volatile uint8_t res19[4]; /**< reserved */ 257852ba100SJustin Hibbits volatile uint32_t ifioup1hs; /**< ifInOctetsUp first half Statistic */ 258852ba100SJustin Hibbits volatile uint32_t ifioup2hs; /**< ifInOctetsUp second half Statistic */ 259852ba100SJustin Hibbits volatile uint32_t ifiupups; /**< ifInUcastPktsUp Statistic */ 260852ba100SJustin Hibbits volatile uint8_t res20[4]; /**< reserved */ 261852ba100SJustin Hibbits volatile uint32_t ifimpcps; /**< ifInMulticastPktsCp Statistic */ 262852ba100SJustin Hibbits volatile uint32_t ifibpcps; /**< ifInBroadcastPktsCp Statistic */ 263852ba100SJustin Hibbits volatile uint32_t ifimpups; /**< ifInMulticastPktsUp Statistic */ 264852ba100SJustin Hibbits volatile uint32_t ifibpups; /**< ifInBroadcastPktsUp Statistic */ 265852ba100SJustin Hibbits volatile uint32_t ipwts; /**< InPktsWithoutTag Statistic */ 266852ba100SJustin Hibbits volatile uint32_t ipkays; /**< InPktsKaY Statistic */ 267852ba100SJustin Hibbits volatile uint32_t ipbts; /**< InPktsBadTag Statistic */ 268852ba100SJustin Hibbits volatile uint32_t ipsnfs; /**< InPktsSCINotFound Statistic */ 269852ba100SJustin Hibbits volatile uint32_t ipuecs; /**< InPktsUnsupportedEC Statistic */ 270852ba100SJustin Hibbits volatile uint32_t ipescbs; /**< InPktsEponSingleCopyBroadcast Statistic */ 271852ba100SJustin Hibbits volatile uint32_t iptls; /**< InPktsTooLong Statistic */ 272852ba100SJustin Hibbits volatile uint8_t res21[52]; /**< reserved */ 273852ba100SJustin Hibbits 274852ba100SJustin Hibbits /* Macsec Tx global statistic */ 275852ba100SJustin Hibbits volatile uint32_t opds; /**< OutPktsDiscarded Statistic */ 276852ba100SJustin Hibbits #if (DPAA_VERSION >= 11) 277852ba100SJustin Hibbits volatile uint8_t res22[124]; /**< reserved */ 278852ba100SJustin Hibbits _Packed struct 279852ba100SJustin Hibbits { 280852ba100SJustin Hibbits volatile uint32_t rxsak[8]; /**< RX Security Association key (128/256 bit) */ 281852ba100SJustin Hibbits volatile uint8_t res23[32]; /**< reserved */ 282852ba100SJustin Hibbits } _PackedType rxScSaKey[NUM_OF_SA_PER_RX_SC]; 283852ba100SJustin Hibbits _Packed struct 284852ba100SJustin Hibbits { 285852ba100SJustin Hibbits volatile uint32_t txsak[8]; /**< TX Security Association key (128/256 bit) */ 286852ba100SJustin Hibbits volatile uint8_t res24[32]; /**< reserved */ 287852ba100SJustin Hibbits } _PackedType txScSaKey[NUM_OF_SA_PER_TX_SC]; 288852ba100SJustin Hibbits #endif /* (DPAA_VERSION >= 11) */ 289852ba100SJustin Hibbits } _PackedType t_FmMacsecRegs; 290852ba100SJustin Hibbits 291852ba100SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__) 292852ba100SJustin Hibbits #pragma pack(pop) 293852ba100SJustin Hibbits #endif /* defined(__MWERKS__) && ... */ 294852ba100SJustin Hibbits 295852ba100SJustin Hibbits 296852ba100SJustin Hibbits /**************************************************************************//** 297852ba100SJustin Hibbits @Description General defines 298852ba100SJustin Hibbits *//***************************************************************************/ 299852ba100SJustin Hibbits 300852ba100SJustin Hibbits #define SCI_HIGH_MASK 0xffffffff00000000LL 301852ba100SJustin Hibbits #define SCI_LOW_MASK 0x00000000ffffffffLL 302852ba100SJustin Hibbits 303852ba100SJustin Hibbits #define LONG_SHIFT 32 304852ba100SJustin Hibbits 305852ba100SJustin Hibbits #define GET_SCI_FIRST_HALF(sci) (uint32_t)((macsecSCI_t)((macsecSCI_t)(sci) & SCI_HIGH_MASK) >> LONG_SHIFT) 306852ba100SJustin Hibbits #define GET_SCI_SECOND_HALF(sci) (uint32_t)((macsecSCI_t)(sci) & SCI_LOW_MASK) 307852ba100SJustin Hibbits 308852ba100SJustin Hibbits /**************************************************************************//** 309852ba100SJustin Hibbits @Description Configuration defines 310852ba100SJustin Hibbits *//***************************************************************************/ 311852ba100SJustin Hibbits 312852ba100SJustin Hibbits /* masks */ 313852ba100SJustin Hibbits #define CFG_UECT 0x00000800 314852ba100SJustin Hibbits #define CFG_ESCBT 0x00000400 315852ba100SJustin Hibbits #define CFG_USFT 0x00000300 316852ba100SJustin Hibbits #define CFG_ITT 0x00000080 317852ba100SJustin Hibbits #define CFG_KFT 0x00000040 318852ba100SJustin Hibbits #define CFG_UFT 0x00000030 319852ba100SJustin Hibbits #define CFG_KSS 0x00000004 320852ba100SJustin Hibbits #define CFG_BYPN 0x00000002 321852ba100SJustin Hibbits #define CFG_S0I 0x00000001 322852ba100SJustin Hibbits 323852ba100SJustin Hibbits #define ET_TYPE 0x0000ffff 324852ba100SJustin Hibbits 325852ba100SJustin Hibbits #define MFL_MAX_LEN 0x0000ffff 326852ba100SJustin Hibbits 327852ba100SJustin Hibbits #define RXSCA_SC_SEL 0x0000000f 328852ba100SJustin Hibbits 329852ba100SJustin Hibbits #define TXSCA_SC_SEL 0x0000000f 330852ba100SJustin Hibbits 331852ba100SJustin Hibbits #define IP_REV_1_IP_ID 0xffff0000 332852ba100SJustin Hibbits #define IP_REV_1_IP_MJ 0x0000ff00 333852ba100SJustin Hibbits #define IP_REV_1_IP_MM 0x000000ff 334852ba100SJustin Hibbits 335852ba100SJustin Hibbits #define IP_REV_2_IP_INT 0x00ff0000 336852ba100SJustin Hibbits #define IP_REV_2_IP_ERR 0x0000ff00 337852ba100SJustin Hibbits #define IP_REV_2_IP_CFG 0x000000ff 338852ba100SJustin Hibbits 339852ba100SJustin Hibbits #define MECC_CAP 0x80000000 340852ba100SJustin Hibbits #define MECC_CET 0x40000000 341852ba100SJustin Hibbits #define MECC_SERCNT 0x00ff0000 342852ba100SJustin Hibbits #define MECC_MEMADDR 0x000001ff 343852ba100SJustin Hibbits 344852ba100SJustin Hibbits /* shifts */ 345852ba100SJustin Hibbits #define CFG_UECT_SHIFT (31-20) 346852ba100SJustin Hibbits #define CFG_ESCBT_SHIFT (31-21) 347852ba100SJustin Hibbits #define CFG_USFT_SHIFT (31-23) 348852ba100SJustin Hibbits #define CFG_ITT_SHIFT (31-24) 349852ba100SJustin Hibbits #define CFG_KFT_SHIFT (31-25) 350852ba100SJustin Hibbits #define CFG_UFT_SHIFT (31-27) 351852ba100SJustin Hibbits #define CFG_KSS_SHIFT (31-29) 352852ba100SJustin Hibbits #define CFG_BYPN_SHIFT (31-30) 353852ba100SJustin Hibbits #define CFG_S0I_SHIFT (31-31) 354852ba100SJustin Hibbits 355852ba100SJustin Hibbits #define IP_REV_1_IP_ID_SHIFT (31-15) 356852ba100SJustin Hibbits #define IP_REV_1_IP_MJ_SHIFT (31-23) 357852ba100SJustin Hibbits #define IP_REV_1_IP_MM_SHIFT (31-31) 358852ba100SJustin Hibbits 359852ba100SJustin Hibbits #define IP_REV_2_IP_INT_SHIFT (31-15) 360852ba100SJustin Hibbits #define IP_REV_2_IP_ERR_SHIFT (31-23) 361852ba100SJustin Hibbits #define IP_REV_2_IP_CFG_SHIFT (31-31) 362852ba100SJustin Hibbits 363852ba100SJustin Hibbits #define MECC_CAP_SHIFT (31-0) 364852ba100SJustin Hibbits #define MECC_CET_SHIFT (31-1) 365852ba100SJustin Hibbits #define MECC_SERCNT_SHIFT (31-15) 366852ba100SJustin Hibbits #define MECC_MEMADDR_SHIFT (31-31) 367852ba100SJustin Hibbits 368852ba100SJustin Hibbits /**************************************************************************//** 369852ba100SJustin Hibbits @Description RX SC defines 370852ba100SJustin Hibbits *//***************************************************************************/ 371852ba100SJustin Hibbits 372852ba100SJustin Hibbits /* masks */ 373852ba100SJustin Hibbits #define RX_SCCFG_SCI_EN_MASK 0x00000800 374852ba100SJustin Hibbits #define RX_SCCFG_RP_MASK 0x00000400 375852ba100SJustin Hibbits #define RX_SCCFG_VF_MASK 0x00000300 376852ba100SJustin Hibbits #define RX_SCCFG_CO_MASK 0x0000003f 377852ba100SJustin Hibbits 378852ba100SJustin Hibbits /* shifts */ 379852ba100SJustin Hibbits #define RX_SCCFG_SCI_EN_SHIFT (31-20) 380852ba100SJustin Hibbits #define RX_SCCFG_RP_SHIFT (31-21) 381852ba100SJustin Hibbits #define RX_SCCFG_VF_SHIFT (31-23) 382852ba100SJustin Hibbits #define RX_SCCFG_CO_SHIFT (31-31) 383852ba100SJustin Hibbits #define RX_SCCFG_CS_SHIFT (31-7) 384852ba100SJustin Hibbits 385852ba100SJustin Hibbits /**************************************************************************//** 386852ba100SJustin Hibbits @Description RX SA defines 387852ba100SJustin Hibbits *//***************************************************************************/ 388852ba100SJustin Hibbits 389852ba100SJustin Hibbits /* masks */ 390852ba100SJustin Hibbits #define RX_SACFG_ACTIVE 0x80000000 391852ba100SJustin Hibbits #define RX_SACFG_AN_MASK 0x00000006 392852ba100SJustin Hibbits #define RX_SACFG_EN_MASK 0x00000001 393852ba100SJustin Hibbits 394852ba100SJustin Hibbits /* shifts */ 395852ba100SJustin Hibbits #define RX_SACFG_AN_SHIFT (31-30) 396852ba100SJustin Hibbits #define RX_SACFG_EN_SHIFT (31-31) 397852ba100SJustin Hibbits 398852ba100SJustin Hibbits /**************************************************************************//** 399852ba100SJustin Hibbits @Description TX SC defines 400852ba100SJustin Hibbits *//***************************************************************************/ 401852ba100SJustin Hibbits 402852ba100SJustin Hibbits /* masks */ 403852ba100SJustin Hibbits #define TX_SCCFG_AN_MASK 0x000c0000 404852ba100SJustin Hibbits #define TX_SCCFG_ASA_MASK 0x00020000 405852ba100SJustin Hibbits #define TX_SCCFG_SCE_MASK 0x00010000 406852ba100SJustin Hibbits #define TX_SCCFG_CO_MASK 0x00003f00 407852ba100SJustin Hibbits #define TX_SCCFG_CE_MASK 0x00000010 408852ba100SJustin Hibbits #define TX_SCCFG_PF_MASK 0x00000008 409852ba100SJustin Hibbits #define TX_SCCFG_AIS_MASK 0x00000004 410852ba100SJustin Hibbits #define TX_SCCFG_UES_MASK 0x00000002 411852ba100SJustin Hibbits #define TX_SCCFG_USCB_MASK 0x00000001 412852ba100SJustin Hibbits 413852ba100SJustin Hibbits /* shifts */ 414852ba100SJustin Hibbits #define TX_SCCFG_AN_SHIFT (31-13) 415852ba100SJustin Hibbits #define TX_SCCFG_ASA_SHIFT (31-14) 416852ba100SJustin Hibbits #define TX_SCCFG_SCE_SHIFT (31-15) 417852ba100SJustin Hibbits #define TX_SCCFG_CO_SHIFT (31-23) 418852ba100SJustin Hibbits #define TX_SCCFG_CE_SHIFT (31-27) 419852ba100SJustin Hibbits #define TX_SCCFG_PF_SHIFT (31-28) 420852ba100SJustin Hibbits #define TX_SCCFG_AIS_SHIFT (31-29) 421852ba100SJustin Hibbits #define TX_SCCFG_UES_SHIFT (31-30) 422852ba100SJustin Hibbits #define TX_SCCFG_USCB_SHIFT (31-31) 423852ba100SJustin Hibbits #define TX_SCCFG_CS_SHIFT (31-7) 424852ba100SJustin Hibbits 425852ba100SJustin Hibbits /**************************************************************************//** 426852ba100SJustin Hibbits @Description TX SA defines 427852ba100SJustin Hibbits *//***************************************************************************/ 428852ba100SJustin Hibbits 429852ba100SJustin Hibbits /* masks */ 430852ba100SJustin Hibbits #define TX_SACFG_ACTIVE 0x80000000 431852ba100SJustin Hibbits 432852ba100SJustin Hibbits 433852ba100SJustin Hibbits typedef struct 434852ba100SJustin Hibbits { 435852ba100SJustin Hibbits void (*f_Isr) (t_Handle h_Arg, uint32_t id); 436852ba100SJustin Hibbits t_Handle h_SrcHandle; 437852ba100SJustin Hibbits } t_FmMacsecIntrSrc; 438852ba100SJustin Hibbits 439852ba100SJustin Hibbits typedef struct 440852ba100SJustin Hibbits { 441852ba100SJustin Hibbits e_FmMacsecUnknownSciFrameTreatment unknownSciTreatMode; 442852ba100SJustin Hibbits bool invalidTagsDeliverUncontrolled; 443852ba100SJustin Hibbits bool changedTextWithNoEncryptDeliverUncontrolled; 444852ba100SJustin Hibbits bool onlyScbIsSetDeliverUncontrolled; 445852ba100SJustin Hibbits bool encryptWithNoChangedTextDiscardUncontrolled; 446852ba100SJustin Hibbits e_FmMacsecUntagFrameTreatment untagTreatMode; 447852ba100SJustin Hibbits uint32_t pnExhThr; 448852ba100SJustin Hibbits bool keysUnreadable; 449852ba100SJustin Hibbits bool byPassMode; 450852ba100SJustin Hibbits bool reservedSc0; 451852ba100SJustin Hibbits uint32_t sectagOverhead; 452852ba100SJustin Hibbits uint32_t mflSubtract; 453852ba100SJustin Hibbits } t_FmMacsecDriverParam; 454852ba100SJustin Hibbits 455852ba100SJustin Hibbits typedef struct 456852ba100SJustin Hibbits { 457852ba100SJustin Hibbits t_FmMacsecControllerDriver fmMacsecControllerDriver; 458852ba100SJustin Hibbits t_Handle h_Fm; 459852ba100SJustin Hibbits t_FmMacsecRegs *p_FmMacsecRegs; 460852ba100SJustin Hibbits t_Handle h_FmMac; /**< A handle to the FM MAC object related to */ 461852ba100SJustin Hibbits char fmMacsecModuleName[MODULE_NAME_SIZE]; 462852ba100SJustin Hibbits t_FmMacsecIntrSrc intrMng[NUM_OF_INTER_MODULE_EVENTS]; 463852ba100SJustin Hibbits uint32_t events; 464852ba100SJustin Hibbits uint32_t exceptions; 465852ba100SJustin Hibbits uint32_t userExceptions; 466852ba100SJustin Hibbits t_FmMacsecExceptionsCallback *f_Exception; /**< Exception Callback Routine */ 467852ba100SJustin Hibbits t_Handle h_App; /**< A handle to an application layer object; This handle will 468852ba100SJustin Hibbits be passed by the driver upon calling the above callbacks */ 469852ba100SJustin Hibbits bool rxScTable[NUM_OF_RX_SC]; 470852ba100SJustin Hibbits uint32_t numRxScAvailable; 471852ba100SJustin Hibbits bool txScTable[NUM_OF_TX_SC]; 472852ba100SJustin Hibbits uint32_t numTxScAvailable; 473852ba100SJustin Hibbits t_Handle rxScSpinLock; 474852ba100SJustin Hibbits t_Handle txScSpinLock; 475852ba100SJustin Hibbits t_FmMacsecDriverParam *p_FmMacsecDriverParam; 476852ba100SJustin Hibbits } t_FmMacsec; 477852ba100SJustin Hibbits 478852ba100SJustin Hibbits 479852ba100SJustin Hibbits #endif /* __FM_MACSEC_MASTER_H */ 480