Path: blob/main/sys/contrib/ncsw/Peripherals/FM/MAC/fm_mac.c
48524 views
/*1* Copyright 2008-2012 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*/313233/******************************************************************************34@File fm_mac.c3536@Description FM MAC ...37*//***************************************************************************/38#include "std_ext.h"39#include "string_ext.h"40#include "sprint_ext.h"41#include "error_ext.h"42#include "fm_ext.h"4344#include "fm_common.h"45#include "fm_mac.h"464748/* ......................................................................... */4950t_Handle FM_MAC_Config (t_FmMacParams *p_FmMacParam)51{52t_FmMacControllerDriver *p_FmMacControllerDriver;53uint16_t fmClkFreq;5455SANITY_CHECK_RETURN_VALUE(p_FmMacParam, E_INVALID_HANDLE, NULL);5657fmClkFreq = FmGetClockFreq(p_FmMacParam->h_Fm);58if (fmClkFreq == 0)59{60REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Can't get clock for MAC!"));61return NULL;62}6364#if (DPAA_VERSION == 10)65if (ENET_SPEED_FROM_MODE(p_FmMacParam->enetMode) < e_ENET_SPEED_10000)66p_FmMacControllerDriver = (t_FmMacControllerDriver *)DTSEC_Config(p_FmMacParam);67else68#if FM_MAX_NUM_OF_10G_MACS > 069p_FmMacControllerDriver = (t_FmMacControllerDriver *)TGEC_Config(p_FmMacParam);70#else71p_FmMacControllerDriver = NULL;72#endif /* FM_MAX_NUM_OF_10G_MACS > 0 */73#else74p_FmMacControllerDriver = (t_FmMacControllerDriver *)MEMAC_Config(p_FmMacParam);75#endif /* (DPAA_VERSION == 10) */7677if (!p_FmMacControllerDriver)78return NULL;7980p_FmMacControllerDriver->h_Fm = p_FmMacParam->h_Fm;81p_FmMacControllerDriver->enetMode = p_FmMacParam->enetMode;82p_FmMacControllerDriver->macId = p_FmMacParam->macId;83p_FmMacControllerDriver->resetOnInit = DEFAULT_resetOnInit;8485p_FmMacControllerDriver->clkFreq = fmClkFreq;8687return (t_Handle)p_FmMacControllerDriver;88}8990/* ......................................................................... */9192t_Error FM_MAC_Init (t_Handle h_FmMac)93{94t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;9596SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);9798if (p_FmMacControllerDriver->resetOnInit &&99!p_FmMacControllerDriver->f_FM_MAC_ConfigResetOnInit &&100(FmResetMac(p_FmMacControllerDriver->h_Fm,101((ENET_INTERFACE_FROM_MODE(p_FmMacControllerDriver->enetMode) == e_ENET_IF_XGMII) ?102e_FM_MAC_10G : e_FM_MAC_1G),103p_FmMacControllerDriver->macId) != E_OK))104RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't reset MAC!"));105106if (p_FmMacControllerDriver->f_FM_MAC_Init)107return p_FmMacControllerDriver->f_FM_MAC_Init(h_FmMac);108RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);109}110111/* ......................................................................... */112113t_Error FM_MAC_Free (t_Handle h_FmMac)114{115t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;116117SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);118119if (p_FmMacControllerDriver->f_FM_MAC_Free)120return p_FmMacControllerDriver->f_FM_MAC_Free(h_FmMac);121122RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);123}124125/* ......................................................................... */126127t_Error FM_MAC_ConfigResetOnInit (t_Handle h_FmMac, bool enable)128{129t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;130131SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);132133if (p_FmMacControllerDriver->f_FM_MAC_ConfigResetOnInit)134return p_FmMacControllerDriver->f_FM_MAC_ConfigResetOnInit(h_FmMac, enable);135136p_FmMacControllerDriver->resetOnInit = enable;137138return E_OK;139}140141/* ......................................................................... */142143t_Error FM_MAC_ConfigLoopback (t_Handle h_FmMac, bool newVal)144{145t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;146147SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);148149if (p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback)150return p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback(h_FmMac, newVal);151152RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);153}154155/* ......................................................................... */156157t_Error FM_MAC_ConfigMaxFrameLength (t_Handle h_FmMac, uint16_t newVal)158{159t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;160161SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);162163if (p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength)164return p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength(h_FmMac, newVal);165RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);166}167168/* ......................................................................... */169170t_Error FM_MAC_ConfigWan (t_Handle h_FmMac, bool flag)171{172t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;173174SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);175176if (p_FmMacControllerDriver->f_FM_MAC_ConfigWan)177return p_FmMacControllerDriver->f_FM_MAC_ConfigWan(h_FmMac, flag);178179RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);180}181182/* ......................................................................... */183184t_Error FM_MAC_ConfigPadAndCrc (t_Handle h_FmMac, bool newVal)185{186t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;187188SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);189190if (p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc)191return p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc(h_FmMac, newVal);192193RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);194}195196/* ......................................................................... */197198t_Error FM_MAC_ConfigHalfDuplex (t_Handle h_FmMac, bool newVal)199{200t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;201202SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);203204if (p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex)205return p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex(h_FmMac,newVal);206207RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);208}209210/* ......................................................................... */211212t_Error FM_MAC_ConfigTbiPhyAddr (t_Handle h_FmMac, uint8_t newVal)213{214t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;215216SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);217218if (p_FmMacControllerDriver->f_FM_MAC_ConfigTbiPhyAddr)219return p_FmMacControllerDriver->f_FM_MAC_ConfigTbiPhyAddr(h_FmMac,newVal);220221RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);222}223224/* ......................................................................... */225226t_Error FM_MAC_ConfigLengthCheck (t_Handle h_FmMac, bool newVal)227{228t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;229230SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);231232if (p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck)233return p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck(h_FmMac,newVal);234235RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);236}237238/* ......................................................................... */239240t_Error FM_MAC_ConfigException (t_Handle h_FmMac, e_FmMacExceptions ex, bool enable)241{242t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;243244SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);245246if (p_FmMacControllerDriver->f_FM_MAC_ConfigException)247return p_FmMacControllerDriver->f_FM_MAC_ConfigException(h_FmMac, ex, enable);248249RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);250}251252#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004253/* ......................................................................... */254255t_Error FM_MAC_ConfigSkipFman11Workaround (t_Handle h_FmMac)256{257t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;258259SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);260261if (p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround)262return p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround(h_FmMac);263264RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);265}266#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */267268269/*****************************************************************************/270/* Run Time Control */271/*****************************************************************************/272273/* ......................................................................... */274275t_Error FM_MAC_Enable (t_Handle h_FmMac, e_CommMode mode)276{277t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;278279SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);280281if (p_FmMacControllerDriver->f_FM_MAC_Enable)282return p_FmMacControllerDriver->f_FM_MAC_Enable(h_FmMac, mode);283284RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);285}286287/* ......................................................................... */288289t_Error FM_MAC_Disable (t_Handle h_FmMac, e_CommMode mode)290{291t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;292293SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);294295if (p_FmMacControllerDriver->f_FM_MAC_Disable)296return p_FmMacControllerDriver->f_FM_MAC_Disable(h_FmMac, mode);297298RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);299}300301t_Error FM_MAC_Resume (t_Handle h_FmMac)302{303t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;304305SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);306307if (p_FmMacControllerDriver->f_FM_MAC_Resume)308return p_FmMacControllerDriver->f_FM_MAC_Resume(h_FmMac);309310return E_OK;311}312313/* ......................................................................... */314315t_Error FM_MAC_Enable1588TimeStamp (t_Handle h_FmMac)316{317t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;318319SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);320321if (p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp)322return p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp(h_FmMac);323324RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);325}326327/* ......................................................................... */328329t_Error FM_MAC_Disable1588TimeStamp (t_Handle h_FmMac)330{331t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;332333SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);334335if (p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp)336return p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp(h_FmMac);337338RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);339}340341/* ......................................................................... */342343t_Error FM_MAC_SetTxAutoPauseFrames(t_Handle h_FmMac,344uint16_t pauseTime)345{346t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;347348SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);349350if (p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames)351return p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames(h_FmMac,352pauseTime);353354RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);355}356357/* ......................................................................... */358359t_Error FM_MAC_SetTxPauseFrames(t_Handle h_FmMac,360uint8_t priority,361uint16_t pauseTime,362uint16_t threshTime)363{364t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;365366SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);367368if (p_FmMacControllerDriver->f_FM_MAC_SetTxPauseFrames)369return p_FmMacControllerDriver->f_FM_MAC_SetTxPauseFrames(h_FmMac,370priority,371pauseTime,372threshTime);373374RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, NO_MSG);375}376377/* ......................................................................... */378379t_Error FM_MAC_SetRxIgnorePauseFrames (t_Handle h_FmMac, bool en)380{381t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;382383SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);384385if (p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames)386return p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames(h_FmMac, en);387388RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);389}390391/* ......................................................................... */392393t_Error FM_MAC_SetWakeOnLan (t_Handle h_FmMac, bool en)394{395t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;396397SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);398399if (p_FmMacControllerDriver->f_FM_MAC_SetWakeOnLan)400return p_FmMacControllerDriver->f_FM_MAC_SetWakeOnLan(h_FmMac, en);401402RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);403}404405/* ......................................................................... */406407t_Error FM_MAC_ResetCounters (t_Handle h_FmMac)408{409t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;410411SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);412413if (p_FmMacControllerDriver->f_FM_MAC_ResetCounters)414return p_FmMacControllerDriver->f_FM_MAC_ResetCounters(h_FmMac);415416RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);417}418419/* ......................................................................... */420421t_Error FM_MAC_SetException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable)422{423t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;424425SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);426427if (p_FmMacControllerDriver->f_FM_MAC_SetException)428return p_FmMacControllerDriver->f_FM_MAC_SetException(h_FmMac, ex, enable);429430RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);431}432433/* ......................................................................... */434435t_Error FM_MAC_SetStatistics (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel)436{437t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;438439SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);440441if (p_FmMacControllerDriver->f_FM_MAC_SetStatistics)442return p_FmMacControllerDriver->f_FM_MAC_SetStatistics(h_FmMac, statisticsLevel);443444RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);445}446447/* ......................................................................... */448449t_Error FM_MAC_GetStatistics (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics)450{451t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;452453SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);454455if (p_FmMacControllerDriver->f_FM_MAC_GetStatistics)456return p_FmMacControllerDriver->f_FM_MAC_GetStatistics(h_FmMac, p_Statistics);457458RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);459}460461/* ......................................................................... */462463t_Error FM_MAC_ModifyMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)464{465t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;466467SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);468469if (p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr)470return p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr(h_FmMac, p_EnetAddr);471472RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);473}474475/* ......................................................................... */476477t_Error FM_MAC_AddHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)478{479t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;480481SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);482483if (p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr)484return p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr(h_FmMac, p_EnetAddr);485486RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);487}488489/* ......................................................................... */490491t_Error FM_MAC_RemoveHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)492{493t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;494495SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);496497if (p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr)498return p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr(h_FmMac, p_EnetAddr);499500RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);501}502503/* ......................................................................... */504505t_Error FM_MAC_AddExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)506{507t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;508509SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);510511if (p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr)512return p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr(h_FmMac, p_EnetAddr);513514RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);515}516517/* ......................................................................... */518519t_Error FM_MAC_RemovelExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)520{521t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;522523SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);524525if (p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr)526return p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr(h_FmMac, p_EnetAddr);527528RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);529}530531/* ......................................................................... */532533t_Error FM_MAC_GetVesrion (t_Handle h_FmMac, uint32_t *macVresion)534{535t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;536537SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);538539if (p_FmMacControllerDriver->f_FM_MAC_GetVersion)540return p_FmMacControllerDriver->f_FM_MAC_GetVersion(h_FmMac, macVresion);541542RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);543544}545546/* ......................................................................... */547548t_Error FM_MAC_GetId (t_Handle h_FmMac, uint32_t *macId)549{550t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;551552SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);553554if (p_FmMacControllerDriver->f_FM_MAC_GetId)555return p_FmMacControllerDriver->f_FM_MAC_GetId(h_FmMac, macId);556557RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);558}559560/* ......................................................................... */561562t_Error FM_MAC_SetPromiscuous (t_Handle h_FmMac, bool newVal)563{564t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;565566SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);567568if (p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous)569return p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous(h_FmMac, newVal);570571RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);572}573574/* ......................................................................... */575576t_Error FM_MAC_AdjustLink(t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex)577{578t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;579580SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);581582if (p_FmMacControllerDriver->f_FM_MAC_AdjustLink)583return p_FmMacControllerDriver->f_FM_MAC_AdjustLink(h_FmMac, speed, fullDuplex);584585RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);586}587588/* ......................................................................... */589590t_Error FM_MAC_RestartAutoneg(t_Handle h_FmMac)591{592t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;593594SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);595596if (p_FmMacControllerDriver->f_FM_MAC_RestartAutoneg)597return p_FmMacControllerDriver->f_FM_MAC_RestartAutoneg(h_FmMac);598599RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);600}601602/* ......................................................................... */603604t_Error FM_MAC_MII_WritePhyReg (t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data)605{606t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;607608SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);609610if (p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg)611return p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg(h_FmMac, phyAddr, reg, data);612613RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);614}615616/* ......................................................................... */617618t_Error FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data)619{620t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;621622SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);623624if (p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg)625return p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg(h_FmMac, phyAddr, reg, p_Data);626627RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);628}629630/* ......................................................................... */631632uint16_t FM_MAC_GetMaxFrameLength(t_Handle h_FmMac)633{634t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;635636SANITY_CHECK_RETURN_VALUE(p_FmMacControllerDriver, E_INVALID_HANDLE, 0);637638if (p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength)639return p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength(h_FmMac);640641REPORT_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);642return 0;643}644645#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0))646/*****************************************************************************/647t_Error FM_MAC_DumpRegs(t_Handle h_FmMac)648{649t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;650651SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);652653if (p_FmMacControllerDriver->f_FM_MAC_DumpRegs)654return p_FmMacControllerDriver->f_FM_MAC_DumpRegs(h_FmMac);655RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);656}657#endif /* (defined(DEBUG_ERRORS) && ... */658659660