The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/ncsw/inc/Peripherals/fm_macsec_ext.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    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 */

Cache object: eec9cef1f35f5a30f477379277378d0c


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.