Path: blob/main/sys/contrib/ncsw/Peripherals/FM/MACSEC/fm_macsec.c
48417 views
/*1* Copyright 2008-2015 Freescale Semiconductor Inc.2*3* Redistribution and use in source and binary forms, with or without4* modification, are permitted provided that the following conditions are met:5* * Redistributions of source code must retain the above copyright6* notice, this list of conditions and the following disclaimer.7* * Redistributions in binary form must reproduce the above copyright8* notice, this list of conditions and the following disclaimer in the9* documentation and/or other materials provided with the distribution.10* * Neither the name of Freescale Semiconductor nor the11* names of its contributors may be used to endorse or promote products12* derived from this software without specific prior written permission.13*14*15* ALTERNATIVELY, this software may be distributed under the terms of the16* GNU General Public License ("GPL") as published by the Free Software17* Foundation, either version 2 of that License or (at your option) any18* later version.19*20* THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY21* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED22* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE23* DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY24* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES25* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;26* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND27* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT28* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS29* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.30*/31/******************************************************************************3233@File fm_macsec.c3435@Description FM MACSEC driver routines implementation.36*//***************************************************************************/3738#include "std_ext.h"39#include "error_ext.h"40#include "xx_ext.h"41#include "string_ext.h"42#include "sprint_ext.h"43#include "debug_ext.h"4445#include "fm_macsec.h"464748/****************************************/49/* API Init unit functions */50/****************************************/51t_Handle FM_MACSEC_Config(t_FmMacsecParams *p_FmMacsecParam)52{53t_FmMacsecControllerDriver *p_FmMacsecControllerDriver;5455SANITY_CHECK_RETURN_VALUE(p_FmMacsecParam, E_INVALID_HANDLE, NULL);5657if (p_FmMacsecParam->guestMode)58p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)FM_MACSEC_GUEST_Config(p_FmMacsecParam);59else60p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)FM_MACSEC_MASTER_Config(p_FmMacsecParam);6162if (!p_FmMacsecControllerDriver)63return NULL;6465return (t_Handle)p_FmMacsecControllerDriver;66}6768t_Error FM_MACSEC_Init(t_Handle h_FmMacsec)69{70t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;7172SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);7374if (p_FmMacsecControllerDriver->f_FM_MACSEC_Init)75return p_FmMacsecControllerDriver->f_FM_MACSEC_Init(h_FmMacsec);7677RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);78}7980t_Error FM_MACSEC_Free(t_Handle h_FmMacsec)81{82t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;8384SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);8586if (p_FmMacsecControllerDriver->f_FM_MACSEC_Free)87return p_FmMacsecControllerDriver->f_FM_MACSEC_Free(h_FmMacsec);8889RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);90}9192t_Error FM_MACSEC_ConfigUnknownSciFrameTreatment(t_Handle h_FmMacsec, e_FmMacsecUnknownSciFrameTreatment treatMode)93{94t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;9596SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);9798if (p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigUnknownSciFrameTreatment)99return p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigUnknownSciFrameTreatment(h_FmMacsec, treatMode);100101RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);102}103104t_Error FM_MACSEC_ConfigInvalidTagsFrameTreatment(t_Handle h_FmMacsec, bool deliverUncontrolled)105{106t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;107108SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);109110if (p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigInvalidTagsFrameTreatment)111return p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigInvalidTagsFrameTreatment(h_FmMacsec, deliverUncontrolled);112113RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);114}115116t_Error FM_MACSEC_ConfigEncryptWithNoChangedTextFrameTreatment(t_Handle h_FmMacsec, bool discardUncontrolled)117{118t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;119120SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);121122if (p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigEncryptWithNoChangedTextFrameTreatment)123return p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigEncryptWithNoChangedTextFrameTreatment(h_FmMacsec, discardUncontrolled);124125RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);126}127128t_Error FM_MACSEC_ConfigUntagFrameTreatment(t_Handle h_FmMacsec, e_FmMacsecUntagFrameTreatment treatMode)129{130t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;131132SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);133134if (p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigUntagFrameTreatment)135return p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigUntagFrameTreatment(h_FmMacsec, treatMode);136137RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);138}139140t_Error FM_MACSEC_ConfigPnExhaustionThreshold(t_Handle h_FmMacsec, uint32_t pnExhThr)141{142t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;143144SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);145146if (p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigPnExhaustionThreshold)147return p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigPnExhaustionThreshold(h_FmMacsec, pnExhThr);148149RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);150}151152t_Error FM_MACSEC_ConfigKeysUnreadable(t_Handle h_FmMacsec)153{154t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;155156SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);157158if (p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigKeysUnreadable)159return p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigKeysUnreadable(h_FmMacsec);160161RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);162}163164t_Error FM_MACSEC_ConfigSectagWithoutSCI(t_Handle h_FmMacsec)165{166t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;167168SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);169170if (p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigSectagWithoutSCI)171return p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigSectagWithoutSCI(h_FmMacsec);172173RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);174}175176t_Error FM_MACSEC_ConfigException(t_Handle h_FmMacsec, e_FmMacsecExceptions exception, bool enable)177{178t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;179180SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);181182if (p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigException)183return p_FmMacsecControllerDriver->f_FM_MACSEC_ConfigException(h_FmMacsec, exception, enable);184185RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);186}187188t_Error FM_MACSEC_GetRevision(t_Handle h_FmMacsec, uint32_t *p_MacsecRevision)189{190t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;191192SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);193194if (p_FmMacsecControllerDriver->f_FM_MACSEC_GetRevision)195return p_FmMacsecControllerDriver->f_FM_MACSEC_GetRevision(h_FmMacsec, p_MacsecRevision);196197RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);198}199200201t_Error FM_MACSEC_Enable(t_Handle h_FmMacsec)202{203t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;204205SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);206207if (p_FmMacsecControllerDriver->f_FM_MACSEC_Enable)208return p_FmMacsecControllerDriver->f_FM_MACSEC_Enable(h_FmMacsec);209210RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);211}212213t_Error FM_MACSEC_Disable(t_Handle h_FmMacsec)214{215t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;216217SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);218219if (p_FmMacsecControllerDriver->f_FM_MACSEC_Disable)220return p_FmMacsecControllerDriver->f_FM_MACSEC_Disable(h_FmMacsec);221222RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);223}224225t_Error FM_MACSEC_SetException(t_Handle h_FmMacsec, e_FmMacsecExceptions exception, bool enable)226{227t_FmMacsecControllerDriver *p_FmMacsecControllerDriver = (t_FmMacsecControllerDriver *)h_FmMacsec;228229SANITY_CHECK_RETURN_ERROR(p_FmMacsecControllerDriver, E_INVALID_HANDLE);230231if (p_FmMacsecControllerDriver->f_FM_MACSEC_SetException)232return p_FmMacsecControllerDriver->f_FM_MACSEC_SetException(h_FmMacsec, exception, enable);233234RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);235}236237238239