xref: /freebsd/sys/contrib/ncsw/Peripherals/FM/MAC/fm_mac.c (revision c2c014f24c10f90d85126ac5fbd4d8524de32b1c)
1*852ba100SJustin Hibbits /*
2*852ba100SJustin Hibbits  * Copyright 2008-2012 Freescale Semiconductor Inc.
30aeed3e9SJustin Hibbits  *
40aeed3e9SJustin Hibbits  * Redistribution and use in source and binary forms, with or without
50aeed3e9SJustin Hibbits  * modification, are permitted provided that the following conditions are met:
60aeed3e9SJustin Hibbits  *     * Redistributions of source code must retain the above copyright
70aeed3e9SJustin Hibbits  *       notice, this list of conditions and the following disclaimer.
80aeed3e9SJustin Hibbits  *     * Redistributions in binary form must reproduce the above copyright
90aeed3e9SJustin Hibbits  *       notice, this list of conditions and the following disclaimer in the
100aeed3e9SJustin Hibbits  *       documentation and/or other materials provided with the distribution.
110aeed3e9SJustin Hibbits  *     * Neither the name of Freescale Semiconductor nor the
120aeed3e9SJustin Hibbits  *       names of its contributors may be used to endorse or promote products
130aeed3e9SJustin Hibbits  *       derived from this software without specific prior written permission.
140aeed3e9SJustin Hibbits  *
150aeed3e9SJustin Hibbits  *
160aeed3e9SJustin Hibbits  * ALTERNATIVELY, this software may be distributed under the terms of the
170aeed3e9SJustin Hibbits  * GNU General Public License ("GPL") as published by the Free Software
180aeed3e9SJustin Hibbits  * Foundation, either version 2 of that License or (at your option) any
190aeed3e9SJustin Hibbits  * later version.
200aeed3e9SJustin Hibbits  *
210aeed3e9SJustin Hibbits  * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
220aeed3e9SJustin Hibbits  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
230aeed3e9SJustin Hibbits  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
240aeed3e9SJustin Hibbits  * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
250aeed3e9SJustin Hibbits  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
260aeed3e9SJustin Hibbits  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
270aeed3e9SJustin Hibbits  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
280aeed3e9SJustin Hibbits  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
290aeed3e9SJustin Hibbits  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
300aeed3e9SJustin Hibbits  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
310aeed3e9SJustin Hibbits  */
320aeed3e9SJustin Hibbits 
33*852ba100SJustin Hibbits 
340aeed3e9SJustin Hibbits /******************************************************************************
350aeed3e9SJustin Hibbits  @File          fm_mac.c
360aeed3e9SJustin Hibbits 
370aeed3e9SJustin Hibbits  @Description   FM MAC ...
380aeed3e9SJustin Hibbits *//***************************************************************************/
390aeed3e9SJustin Hibbits #include "std_ext.h"
400aeed3e9SJustin Hibbits #include "string_ext.h"
410aeed3e9SJustin Hibbits #include "sprint_ext.h"
420aeed3e9SJustin Hibbits #include "error_ext.h"
430aeed3e9SJustin Hibbits #include "fm_ext.h"
440aeed3e9SJustin Hibbits 
450aeed3e9SJustin Hibbits #include "fm_common.h"
460aeed3e9SJustin Hibbits #include "fm_mac.h"
470aeed3e9SJustin Hibbits 
480aeed3e9SJustin Hibbits 
49*852ba100SJustin Hibbits /* ......................................................................... */
500aeed3e9SJustin Hibbits 
FM_MAC_Config(t_FmMacParams * p_FmMacParam)510aeed3e9SJustin Hibbits t_Handle FM_MAC_Config (t_FmMacParams *p_FmMacParam)
520aeed3e9SJustin Hibbits {
530aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver;
54*852ba100SJustin Hibbits     uint16_t                fmClkFreq;
550aeed3e9SJustin Hibbits 
560aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_VALUE(p_FmMacParam, E_INVALID_HANDLE, NULL);
570aeed3e9SJustin Hibbits 
58*852ba100SJustin Hibbits     fmClkFreq = FmGetClockFreq(p_FmMacParam->h_Fm);
59*852ba100SJustin Hibbits     if (fmClkFreq == 0)
60*852ba100SJustin Hibbits     {
61*852ba100SJustin Hibbits         REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Can't get clock for MAC!"));
62*852ba100SJustin Hibbits         return NULL;
63*852ba100SJustin Hibbits     }
64*852ba100SJustin Hibbits 
65*852ba100SJustin Hibbits #if (DPAA_VERSION == 10)
660aeed3e9SJustin Hibbits     if (ENET_SPEED_FROM_MODE(p_FmMacParam->enetMode) < e_ENET_SPEED_10000)
670aeed3e9SJustin Hibbits         p_FmMacControllerDriver = (t_FmMacControllerDriver *)DTSEC_Config(p_FmMacParam);
680aeed3e9SJustin Hibbits     else
69*852ba100SJustin Hibbits #if FM_MAX_NUM_OF_10G_MACS > 0
700aeed3e9SJustin Hibbits         p_FmMacControllerDriver = (t_FmMacControllerDriver *)TGEC_Config(p_FmMacParam);
71*852ba100SJustin Hibbits #else
72*852ba100SJustin Hibbits         p_FmMacControllerDriver = NULL;
73*852ba100SJustin Hibbits #endif /* FM_MAX_NUM_OF_10G_MACS > 0 */
74*852ba100SJustin Hibbits #else
75*852ba100SJustin Hibbits     p_FmMacControllerDriver = (t_FmMacControllerDriver *)MEMAC_Config(p_FmMacParam);
76*852ba100SJustin Hibbits #endif /* (DPAA_VERSION == 10) */
770aeed3e9SJustin Hibbits 
780aeed3e9SJustin Hibbits     if (!p_FmMacControllerDriver)
790aeed3e9SJustin Hibbits         return NULL;
800aeed3e9SJustin Hibbits 
810aeed3e9SJustin Hibbits     p_FmMacControllerDriver->h_Fm           = p_FmMacParam->h_Fm;
820aeed3e9SJustin Hibbits     p_FmMacControllerDriver->enetMode       = p_FmMacParam->enetMode;
830aeed3e9SJustin Hibbits     p_FmMacControllerDriver->macId          = p_FmMacParam->macId;
840aeed3e9SJustin Hibbits     p_FmMacControllerDriver->resetOnInit    = DEFAULT_resetOnInit;
850aeed3e9SJustin Hibbits 
86*852ba100SJustin Hibbits     p_FmMacControllerDriver->clkFreq        = fmClkFreq;
87*852ba100SJustin Hibbits 
880aeed3e9SJustin Hibbits     return (t_Handle)p_FmMacControllerDriver;
890aeed3e9SJustin Hibbits }
900aeed3e9SJustin Hibbits 
91*852ba100SJustin Hibbits /* ......................................................................... */
920aeed3e9SJustin Hibbits 
FM_MAC_Init(t_Handle h_FmMac)930aeed3e9SJustin Hibbits t_Error FM_MAC_Init (t_Handle h_FmMac)
940aeed3e9SJustin Hibbits {
950aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
960aeed3e9SJustin Hibbits 
970aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
980aeed3e9SJustin Hibbits 
990aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->resetOnInit &&
100*852ba100SJustin Hibbits         !p_FmMacControllerDriver->f_FM_MAC_ConfigResetOnInit &&
1010aeed3e9SJustin Hibbits         (FmResetMac(p_FmMacControllerDriver->h_Fm,
102*852ba100SJustin Hibbits                     ((ENET_INTERFACE_FROM_MODE(p_FmMacControllerDriver->enetMode) == e_ENET_IF_XGMII) ?
103*852ba100SJustin Hibbits                         e_FM_MAC_10G : e_FM_MAC_1G),
1040aeed3e9SJustin Hibbits                     p_FmMacControllerDriver->macId) != E_OK))
1050aeed3e9SJustin Hibbits         RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't reset MAC!"));
1060aeed3e9SJustin Hibbits 
1070aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_Init)
1080aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_Init(h_FmMac);
1090aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
1100aeed3e9SJustin Hibbits }
1110aeed3e9SJustin Hibbits 
112*852ba100SJustin Hibbits /* ......................................................................... */
1130aeed3e9SJustin Hibbits 
FM_MAC_Free(t_Handle h_FmMac)1140aeed3e9SJustin Hibbits t_Error FM_MAC_Free (t_Handle h_FmMac)
1150aeed3e9SJustin Hibbits {
1160aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
1170aeed3e9SJustin Hibbits 
1180aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
1190aeed3e9SJustin Hibbits 
1200aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_Free)
1210aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_Free(h_FmMac);
1220aeed3e9SJustin Hibbits 
1230aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
1240aeed3e9SJustin Hibbits }
1250aeed3e9SJustin Hibbits 
126*852ba100SJustin Hibbits /* ......................................................................... */
1270aeed3e9SJustin Hibbits 
FM_MAC_ConfigResetOnInit(t_Handle h_FmMac,bool enable)1280aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigResetOnInit (t_Handle h_FmMac, bool enable)
1290aeed3e9SJustin Hibbits {
1300aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
1310aeed3e9SJustin Hibbits 
1320aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
1330aeed3e9SJustin Hibbits 
134*852ba100SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ConfigResetOnInit)
135*852ba100SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ConfigResetOnInit(h_FmMac, enable);
136*852ba100SJustin Hibbits 
1370aeed3e9SJustin Hibbits     p_FmMacControllerDriver->resetOnInit = enable;
1380aeed3e9SJustin Hibbits 
1390aeed3e9SJustin Hibbits     return E_OK;
1400aeed3e9SJustin Hibbits }
1410aeed3e9SJustin Hibbits 
142*852ba100SJustin Hibbits /* ......................................................................... */
1430aeed3e9SJustin Hibbits 
FM_MAC_ConfigLoopback(t_Handle h_FmMac,bool newVal)1440aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigLoopback (t_Handle h_FmMac, bool newVal)
1450aeed3e9SJustin Hibbits {
1460aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
1470aeed3e9SJustin Hibbits 
1480aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
1490aeed3e9SJustin Hibbits 
1500aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback)
1510aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback(h_FmMac, newVal);
1520aeed3e9SJustin Hibbits 
1530aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
1540aeed3e9SJustin Hibbits }
1550aeed3e9SJustin Hibbits 
156*852ba100SJustin Hibbits /* ......................................................................... */
1570aeed3e9SJustin Hibbits 
FM_MAC_ConfigMaxFrameLength(t_Handle h_FmMac,uint16_t newVal)1580aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigMaxFrameLength (t_Handle h_FmMac, uint16_t newVal)
1590aeed3e9SJustin Hibbits {
1600aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
1610aeed3e9SJustin Hibbits 
1620aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
1630aeed3e9SJustin Hibbits 
1640aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength)
1650aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength(h_FmMac, newVal);
1660aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
1670aeed3e9SJustin Hibbits }
1680aeed3e9SJustin Hibbits 
169*852ba100SJustin Hibbits /* ......................................................................... */
1700aeed3e9SJustin Hibbits 
FM_MAC_ConfigWan(t_Handle h_FmMac,bool flag)1710aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigWan (t_Handle h_FmMac, bool flag)
1720aeed3e9SJustin Hibbits {
1730aeed3e9SJustin Hibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
1740aeed3e9SJustin Hibbits 
1750aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
1760aeed3e9SJustin Hibbits 
1770aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ConfigWan)
1780aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ConfigWan(h_FmMac, flag);
1790aeed3e9SJustin Hibbits 
1800aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
1810aeed3e9SJustin Hibbits }
1820aeed3e9SJustin Hibbits 
183*852ba100SJustin Hibbits /* ......................................................................... */
1840aeed3e9SJustin Hibbits 
FM_MAC_ConfigPadAndCrc(t_Handle h_FmMac,bool newVal)1850aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigPadAndCrc (t_Handle h_FmMac, bool newVal)
1860aeed3e9SJustin Hibbits {
1870aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
1880aeed3e9SJustin Hibbits 
1890aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
1900aeed3e9SJustin Hibbits 
1910aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc)
1920aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc(h_FmMac, newVal);
1930aeed3e9SJustin Hibbits 
1940aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
1950aeed3e9SJustin Hibbits }
1960aeed3e9SJustin Hibbits 
197*852ba100SJustin Hibbits /* ......................................................................... */
1980aeed3e9SJustin Hibbits 
FM_MAC_ConfigHalfDuplex(t_Handle h_FmMac,bool newVal)1990aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigHalfDuplex (t_Handle h_FmMac, bool newVal)
2000aeed3e9SJustin Hibbits {
2010aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
2020aeed3e9SJustin Hibbits 
2030aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
2040aeed3e9SJustin Hibbits 
2050aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex)
2060aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex(h_FmMac,newVal);
2070aeed3e9SJustin Hibbits 
2080aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
2090aeed3e9SJustin Hibbits }
2100aeed3e9SJustin Hibbits 
211*852ba100SJustin Hibbits /* ......................................................................... */
212*852ba100SJustin Hibbits 
FM_MAC_ConfigTbiPhyAddr(t_Handle h_FmMac,uint8_t newVal)213*852ba100SJustin Hibbits t_Error FM_MAC_ConfigTbiPhyAddr (t_Handle h_FmMac, uint8_t newVal)
214*852ba100SJustin Hibbits {
215*852ba100SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
216*852ba100SJustin Hibbits 
217*852ba100SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
218*852ba100SJustin Hibbits 
219*852ba100SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ConfigTbiPhyAddr)
220*852ba100SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ConfigTbiPhyAddr(h_FmMac,newVal);
221*852ba100SJustin Hibbits 
222*852ba100SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
223*852ba100SJustin Hibbits }
224*852ba100SJustin Hibbits 
225*852ba100SJustin Hibbits /* ......................................................................... */
2260aeed3e9SJustin Hibbits 
FM_MAC_ConfigLengthCheck(t_Handle h_FmMac,bool newVal)2270aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigLengthCheck (t_Handle h_FmMac, bool newVal)
2280aeed3e9SJustin Hibbits {
2290aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
2300aeed3e9SJustin Hibbits 
2310aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
2320aeed3e9SJustin Hibbits 
2330aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck)
2340aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck(h_FmMac,newVal);
2350aeed3e9SJustin Hibbits 
2360aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
2370aeed3e9SJustin Hibbits }
2380aeed3e9SJustin Hibbits 
239*852ba100SJustin Hibbits /* ......................................................................... */
2400aeed3e9SJustin Hibbits 
FM_MAC_ConfigException(t_Handle h_FmMac,e_FmMacExceptions ex,bool enable)2410aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigException (t_Handle h_FmMac, e_FmMacExceptions ex, bool enable)
2420aeed3e9SJustin Hibbits {
2430aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
2440aeed3e9SJustin Hibbits 
2450aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
2460aeed3e9SJustin Hibbits 
2470aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ConfigException)
2480aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ConfigException(h_FmMac, ex, enable);
2490aeed3e9SJustin Hibbits 
2500aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
2510aeed3e9SJustin Hibbits }
2520aeed3e9SJustin Hibbits 
2530aeed3e9SJustin Hibbits #ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004
254*852ba100SJustin Hibbits /* ......................................................................... */
2550aeed3e9SJustin Hibbits 
FM_MAC_ConfigSkipFman11Workaround(t_Handle h_FmMac)2560aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigSkipFman11Workaround (t_Handle h_FmMac)
2570aeed3e9SJustin Hibbits {
2580aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
2590aeed3e9SJustin Hibbits 
2600aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
2610aeed3e9SJustin Hibbits 
2620aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround)
2630aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround(h_FmMac);
2640aeed3e9SJustin Hibbits 
2650aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
2660aeed3e9SJustin Hibbits }
2670aeed3e9SJustin Hibbits #endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */
2680aeed3e9SJustin Hibbits 
2690aeed3e9SJustin Hibbits 
2700aeed3e9SJustin Hibbits /*****************************************************************************/
2710aeed3e9SJustin Hibbits /* Run Time Control                                                          */
2720aeed3e9SJustin Hibbits /*****************************************************************************/
2730aeed3e9SJustin Hibbits 
274*852ba100SJustin Hibbits /* ......................................................................... */
2750aeed3e9SJustin Hibbits 
FM_MAC_Enable(t_Handle h_FmMac,e_CommMode mode)2760aeed3e9SJustin Hibbits t_Error FM_MAC_Enable  (t_Handle h_FmMac,  e_CommMode mode)
2770aeed3e9SJustin Hibbits {
2780aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
2790aeed3e9SJustin Hibbits 
2800aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
2810aeed3e9SJustin Hibbits 
2820aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_Enable)
2830aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_Enable(h_FmMac, mode);
2840aeed3e9SJustin Hibbits 
2850aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
2860aeed3e9SJustin Hibbits }
2870aeed3e9SJustin Hibbits 
288*852ba100SJustin Hibbits /* ......................................................................... */
2890aeed3e9SJustin Hibbits 
FM_MAC_Disable(t_Handle h_FmMac,e_CommMode mode)2900aeed3e9SJustin Hibbits t_Error FM_MAC_Disable (t_Handle h_FmMac, e_CommMode mode)
2910aeed3e9SJustin Hibbits {
2920aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
2930aeed3e9SJustin Hibbits 
2940aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
2950aeed3e9SJustin Hibbits 
2960aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_Disable)
2970aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_Disable(h_FmMac, mode);
2980aeed3e9SJustin Hibbits 
2990aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
3000aeed3e9SJustin Hibbits }
3010aeed3e9SJustin Hibbits 
FM_MAC_Resume(t_Handle h_FmMac)302*852ba100SJustin Hibbits t_Error FM_MAC_Resume (t_Handle h_FmMac)
303*852ba100SJustin Hibbits {
304*852ba100SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
305*852ba100SJustin Hibbits 
306*852ba100SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
307*852ba100SJustin Hibbits 
308*852ba100SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_Resume)
309*852ba100SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_Resume(h_FmMac);
310*852ba100SJustin Hibbits 
311*852ba100SJustin Hibbits     return E_OK;
312*852ba100SJustin Hibbits }
313*852ba100SJustin Hibbits 
314*852ba100SJustin Hibbits /* ......................................................................... */
3150aeed3e9SJustin Hibbits 
FM_MAC_Enable1588TimeStamp(t_Handle h_FmMac)3160aeed3e9SJustin Hibbits t_Error FM_MAC_Enable1588TimeStamp (t_Handle h_FmMac)
3170aeed3e9SJustin Hibbits {
3180aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
3190aeed3e9SJustin Hibbits 
3200aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
3210aeed3e9SJustin Hibbits 
3220aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp)
3230aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp(h_FmMac);
3240aeed3e9SJustin Hibbits 
3250aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
3260aeed3e9SJustin Hibbits }
3270aeed3e9SJustin Hibbits 
328*852ba100SJustin Hibbits /* ......................................................................... */
3290aeed3e9SJustin Hibbits 
FM_MAC_Disable1588TimeStamp(t_Handle h_FmMac)3300aeed3e9SJustin Hibbits t_Error FM_MAC_Disable1588TimeStamp (t_Handle h_FmMac)
3310aeed3e9SJustin Hibbits {
3320aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
3330aeed3e9SJustin Hibbits 
3340aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
3350aeed3e9SJustin Hibbits 
3360aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp)
3370aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp(h_FmMac);
3380aeed3e9SJustin Hibbits 
3390aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
3400aeed3e9SJustin Hibbits }
3410aeed3e9SJustin Hibbits 
342*852ba100SJustin Hibbits /* ......................................................................... */
3430aeed3e9SJustin Hibbits 
FM_MAC_SetTxAutoPauseFrames(t_Handle h_FmMac,uint16_t pauseTime)344*852ba100SJustin Hibbits t_Error FM_MAC_SetTxAutoPauseFrames(t_Handle h_FmMac,
345*852ba100SJustin Hibbits                                     uint16_t pauseTime)
3460aeed3e9SJustin Hibbits {
3470aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
3480aeed3e9SJustin Hibbits 
3490aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
3500aeed3e9SJustin Hibbits 
3510aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames)
352*852ba100SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames(h_FmMac,
353*852ba100SJustin Hibbits                                                                       pauseTime);
3540aeed3e9SJustin Hibbits 
3550aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
3560aeed3e9SJustin Hibbits }
3570aeed3e9SJustin Hibbits 
358*852ba100SJustin Hibbits /* ......................................................................... */
359*852ba100SJustin Hibbits 
FM_MAC_SetTxPauseFrames(t_Handle h_FmMac,uint8_t priority,uint16_t pauseTime,uint16_t threshTime)360*852ba100SJustin Hibbits t_Error FM_MAC_SetTxPauseFrames(t_Handle h_FmMac,
361*852ba100SJustin Hibbits                                 uint8_t  priority,
362*852ba100SJustin Hibbits                                 uint16_t pauseTime,
363*852ba100SJustin Hibbits                                 uint16_t threshTime)
364*852ba100SJustin Hibbits {
365*852ba100SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
366*852ba100SJustin Hibbits 
367*852ba100SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
368*852ba100SJustin Hibbits 
369*852ba100SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_SetTxPauseFrames)
370*852ba100SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_SetTxPauseFrames(h_FmMac,
371*852ba100SJustin Hibbits                                                                   priority,
372*852ba100SJustin Hibbits                                                                   pauseTime,
373*852ba100SJustin Hibbits                                                                   threshTime);
374*852ba100SJustin Hibbits 
375*852ba100SJustin Hibbits     RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, NO_MSG);
376*852ba100SJustin Hibbits }
377*852ba100SJustin Hibbits 
378*852ba100SJustin Hibbits /* ......................................................................... */
3790aeed3e9SJustin Hibbits 
FM_MAC_SetRxIgnorePauseFrames(t_Handle h_FmMac,bool en)3800aeed3e9SJustin Hibbits t_Error FM_MAC_SetRxIgnorePauseFrames (t_Handle h_FmMac, bool en)
3810aeed3e9SJustin Hibbits {
3820aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
3830aeed3e9SJustin Hibbits 
3840aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
3850aeed3e9SJustin Hibbits 
3860aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames)
3870aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames(h_FmMac, en);
3880aeed3e9SJustin Hibbits 
3890aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
3900aeed3e9SJustin Hibbits }
3910aeed3e9SJustin Hibbits 
392*852ba100SJustin Hibbits /* ......................................................................... */
393*852ba100SJustin Hibbits 
FM_MAC_SetWakeOnLan(t_Handle h_FmMac,bool en)394*852ba100SJustin Hibbits t_Error FM_MAC_SetWakeOnLan (t_Handle h_FmMac, bool en)
395*852ba100SJustin Hibbits {
396*852ba100SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
397*852ba100SJustin Hibbits 
398*852ba100SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
399*852ba100SJustin Hibbits 
400*852ba100SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_SetWakeOnLan)
401*852ba100SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_SetWakeOnLan(h_FmMac, en);
402*852ba100SJustin Hibbits 
403*852ba100SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
404*852ba100SJustin Hibbits }
405*852ba100SJustin Hibbits 
406*852ba100SJustin Hibbits /* ......................................................................... */
4070aeed3e9SJustin Hibbits 
FM_MAC_ResetCounters(t_Handle h_FmMac)4080aeed3e9SJustin Hibbits t_Error FM_MAC_ResetCounters (t_Handle h_FmMac)
4090aeed3e9SJustin Hibbits {
4100aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
4110aeed3e9SJustin Hibbits 
4120aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
4130aeed3e9SJustin Hibbits 
4140aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ResetCounters)
4150aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ResetCounters(h_FmMac);
4160aeed3e9SJustin Hibbits 
4170aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
4180aeed3e9SJustin Hibbits }
4190aeed3e9SJustin Hibbits 
420*852ba100SJustin Hibbits /* ......................................................................... */
4210aeed3e9SJustin Hibbits 
FM_MAC_SetException(t_Handle h_FmMac,e_FmMacExceptions ex,bool enable)4220aeed3e9SJustin Hibbits t_Error FM_MAC_SetException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable)
4230aeed3e9SJustin Hibbits {
4240aeed3e9SJustin Hibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
4250aeed3e9SJustin Hibbits 
4260aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
4270aeed3e9SJustin Hibbits 
4280aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_SetException)
4290aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_SetException(h_FmMac, ex, enable);
4300aeed3e9SJustin Hibbits 
4310aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
4320aeed3e9SJustin Hibbits }
4330aeed3e9SJustin Hibbits 
434*852ba100SJustin Hibbits /* ......................................................................... */
4350aeed3e9SJustin Hibbits 
FM_MAC_SetStatistics(t_Handle h_FmMac,e_FmMacStatisticsLevel statisticsLevel)4360aeed3e9SJustin Hibbits t_Error FM_MAC_SetStatistics (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel)
4370aeed3e9SJustin Hibbits {
4380aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
4390aeed3e9SJustin Hibbits 
4400aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
4410aeed3e9SJustin Hibbits 
4420aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_SetStatistics)
4430aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_SetStatistics(h_FmMac, statisticsLevel);
444*852ba100SJustin Hibbits 
4450aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
4460aeed3e9SJustin Hibbits }
4470aeed3e9SJustin Hibbits 
448*852ba100SJustin Hibbits /* ......................................................................... */
4490aeed3e9SJustin Hibbits 
FM_MAC_GetStatistics(t_Handle h_FmMac,t_FmMacStatistics * p_Statistics)4500aeed3e9SJustin Hibbits t_Error FM_MAC_GetStatistics (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics)
4510aeed3e9SJustin Hibbits {
4520aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
4530aeed3e9SJustin Hibbits 
4540aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
4550aeed3e9SJustin Hibbits 
4560aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_GetStatistics)
4570aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_GetStatistics(h_FmMac, p_Statistics);
4580aeed3e9SJustin Hibbits 
4590aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
4600aeed3e9SJustin Hibbits }
4610aeed3e9SJustin Hibbits 
462*852ba100SJustin Hibbits /* ......................................................................... */
4630aeed3e9SJustin Hibbits 
FM_MAC_ModifyMacAddr(t_Handle h_FmMac,t_EnetAddr * p_EnetAddr)4640aeed3e9SJustin Hibbits t_Error FM_MAC_ModifyMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)
4650aeed3e9SJustin Hibbits {
4660aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
4670aeed3e9SJustin Hibbits 
4680aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
4690aeed3e9SJustin Hibbits 
4700aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr)
4710aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr(h_FmMac, p_EnetAddr);
4720aeed3e9SJustin Hibbits 
4730aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
4740aeed3e9SJustin Hibbits }
4750aeed3e9SJustin Hibbits 
476*852ba100SJustin Hibbits /* ......................................................................... */
4770aeed3e9SJustin Hibbits 
FM_MAC_AddHashMacAddr(t_Handle h_FmMac,t_EnetAddr * p_EnetAddr)4780aeed3e9SJustin Hibbits t_Error FM_MAC_AddHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)
4790aeed3e9SJustin Hibbits {
4800aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
4810aeed3e9SJustin Hibbits 
4820aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
4830aeed3e9SJustin Hibbits 
4840aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr)
4850aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr(h_FmMac, p_EnetAddr);
4860aeed3e9SJustin Hibbits 
4870aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
4880aeed3e9SJustin Hibbits }
4890aeed3e9SJustin Hibbits 
490*852ba100SJustin Hibbits /* ......................................................................... */
4910aeed3e9SJustin Hibbits 
FM_MAC_RemoveHashMacAddr(t_Handle h_FmMac,t_EnetAddr * p_EnetAddr)4920aeed3e9SJustin Hibbits t_Error FM_MAC_RemoveHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)
4930aeed3e9SJustin Hibbits {
4940aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
4950aeed3e9SJustin Hibbits 
4960aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
4970aeed3e9SJustin Hibbits 
4980aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr)
4990aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr(h_FmMac, p_EnetAddr);
5000aeed3e9SJustin Hibbits 
5010aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
5020aeed3e9SJustin Hibbits }
5030aeed3e9SJustin Hibbits 
504*852ba100SJustin Hibbits /* ......................................................................... */
5050aeed3e9SJustin Hibbits 
FM_MAC_AddExactMatchMacAddr(t_Handle h_FmMac,t_EnetAddr * p_EnetAddr)5060aeed3e9SJustin Hibbits t_Error FM_MAC_AddExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)
5070aeed3e9SJustin Hibbits {
5080aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
5090aeed3e9SJustin Hibbits 
5100aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
5110aeed3e9SJustin Hibbits 
5120aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr)
5130aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr(h_FmMac, p_EnetAddr);
5140aeed3e9SJustin Hibbits 
5150aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
5160aeed3e9SJustin Hibbits }
5170aeed3e9SJustin Hibbits 
518*852ba100SJustin Hibbits /* ......................................................................... */
5190aeed3e9SJustin Hibbits 
FM_MAC_RemovelExactMatchMacAddr(t_Handle h_FmMac,t_EnetAddr * p_EnetAddr)5200aeed3e9SJustin Hibbits t_Error FM_MAC_RemovelExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)
5210aeed3e9SJustin Hibbits {
5220aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
5230aeed3e9SJustin Hibbits 
5240aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
5250aeed3e9SJustin Hibbits 
5260aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr)
5270aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr(h_FmMac, p_EnetAddr);
5280aeed3e9SJustin Hibbits 
5290aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
5300aeed3e9SJustin Hibbits }
5310aeed3e9SJustin Hibbits 
532*852ba100SJustin Hibbits /* ......................................................................... */
5330aeed3e9SJustin Hibbits 
FM_MAC_GetVesrion(t_Handle h_FmMac,uint32_t * macVresion)5340aeed3e9SJustin Hibbits t_Error FM_MAC_GetVesrion (t_Handle h_FmMac, uint32_t *macVresion)
5350aeed3e9SJustin Hibbits {
5360aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
5370aeed3e9SJustin Hibbits 
5380aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
5390aeed3e9SJustin Hibbits 
5400aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_GetVersion)
5410aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_GetVersion(h_FmMac, macVresion);
5420aeed3e9SJustin Hibbits 
5430aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
5440aeed3e9SJustin Hibbits 
5450aeed3e9SJustin Hibbits }
5460aeed3e9SJustin Hibbits 
547*852ba100SJustin Hibbits /* ......................................................................... */
5480aeed3e9SJustin Hibbits 
FM_MAC_GetId(t_Handle h_FmMac,uint32_t * macId)5490aeed3e9SJustin Hibbits t_Error FM_MAC_GetId (t_Handle h_FmMac, uint32_t *macId)
5500aeed3e9SJustin Hibbits {
5510aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
5520aeed3e9SJustin Hibbits 
5530aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
5540aeed3e9SJustin Hibbits 
5550aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_GetId)
5560aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_GetId(h_FmMac, macId);
5570aeed3e9SJustin Hibbits 
5580aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
5590aeed3e9SJustin Hibbits }
5600aeed3e9SJustin Hibbits 
561*852ba100SJustin Hibbits /* ......................................................................... */
5620aeed3e9SJustin Hibbits 
FM_MAC_SetPromiscuous(t_Handle h_FmMac,bool newVal)5630aeed3e9SJustin Hibbits t_Error FM_MAC_SetPromiscuous (t_Handle h_FmMac, bool newVal)
5640aeed3e9SJustin Hibbits {
5650aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
5660aeed3e9SJustin Hibbits 
5670aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
5680aeed3e9SJustin Hibbits 
5690aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous)
5700aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous(h_FmMac, newVal);
5710aeed3e9SJustin Hibbits 
5720aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
5730aeed3e9SJustin Hibbits }
5740aeed3e9SJustin Hibbits 
575*852ba100SJustin Hibbits /* ......................................................................... */
5760aeed3e9SJustin Hibbits 
FM_MAC_AdjustLink(t_Handle h_FmMac,e_EnetSpeed speed,bool fullDuplex)5770aeed3e9SJustin Hibbits t_Error FM_MAC_AdjustLink(t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex)
5780aeed3e9SJustin Hibbits {
5790aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
5800aeed3e9SJustin Hibbits 
5810aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
5820aeed3e9SJustin Hibbits 
5830aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_AdjustLink)
5840aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_AdjustLink(h_FmMac, speed, fullDuplex);
5850aeed3e9SJustin Hibbits 
5860aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
5870aeed3e9SJustin Hibbits }
5880aeed3e9SJustin Hibbits 
589*852ba100SJustin Hibbits /* ......................................................................... */
590*852ba100SJustin Hibbits 
FM_MAC_RestartAutoneg(t_Handle h_FmMac)591*852ba100SJustin Hibbits t_Error FM_MAC_RestartAutoneg(t_Handle h_FmMac)
592*852ba100SJustin Hibbits {
593*852ba100SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
594*852ba100SJustin Hibbits 
595*852ba100SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
596*852ba100SJustin Hibbits 
597*852ba100SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_RestartAutoneg)
598*852ba100SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_RestartAutoneg(h_FmMac);
599*852ba100SJustin Hibbits 
600*852ba100SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
601*852ba100SJustin Hibbits }
602*852ba100SJustin Hibbits 
603*852ba100SJustin Hibbits /* ......................................................................... */
6040aeed3e9SJustin Hibbits 
FM_MAC_MII_WritePhyReg(t_Handle h_FmMac,uint8_t phyAddr,uint8_t reg,uint16_t data)6050aeed3e9SJustin Hibbits t_Error FM_MAC_MII_WritePhyReg (t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data)
6060aeed3e9SJustin Hibbits {
6070aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
6080aeed3e9SJustin Hibbits 
6090aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
6100aeed3e9SJustin Hibbits 
6110aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg)
6120aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg(h_FmMac, phyAddr, reg, data);
6130aeed3e9SJustin Hibbits 
6140aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
6150aeed3e9SJustin Hibbits }
6160aeed3e9SJustin Hibbits 
617*852ba100SJustin Hibbits /* ......................................................................... */
6180aeed3e9SJustin Hibbits 
FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac,uint8_t phyAddr,uint8_t reg,uint16_t * p_Data)6190aeed3e9SJustin Hibbits t_Error FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac,  uint8_t phyAddr, uint8_t reg, uint16_t *p_Data)
6200aeed3e9SJustin Hibbits {
6210aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
6220aeed3e9SJustin Hibbits 
6230aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
6240aeed3e9SJustin Hibbits 
6250aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg)
6260aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg(h_FmMac, phyAddr, reg, p_Data);
6270aeed3e9SJustin Hibbits 
6280aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
6290aeed3e9SJustin Hibbits }
6300aeed3e9SJustin Hibbits 
631*852ba100SJustin Hibbits /* ......................................................................... */
6320aeed3e9SJustin Hibbits 
FM_MAC_GetMaxFrameLength(t_Handle h_FmMac)6330aeed3e9SJustin Hibbits uint16_t FM_MAC_GetMaxFrameLength(t_Handle h_FmMac)
6340aeed3e9SJustin Hibbits {
6350aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
6360aeed3e9SJustin Hibbits 
6370aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_VALUE(p_FmMacControllerDriver, E_INVALID_HANDLE, 0);
6380aeed3e9SJustin Hibbits 
6390aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength)
6400aeed3e9SJustin Hibbits         return p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength(h_FmMac);
6410aeed3e9SJustin Hibbits 
6420aeed3e9SJustin Hibbits     REPORT_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
6430aeed3e9SJustin Hibbits     return 0;
6440aeed3e9SJustin Hibbits }
6450aeed3e9SJustin Hibbits 
6460aeed3e9SJustin Hibbits #if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0))
6470aeed3e9SJustin Hibbits /*****************************************************************************/
FM_MAC_DumpRegs(t_Handle h_FmMac)6480aeed3e9SJustin Hibbits t_Error FM_MAC_DumpRegs(t_Handle h_FmMac)
6490aeed3e9SJustin Hibbits {
6500aeed3e9SJustin Hibbits     t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
6510aeed3e9SJustin Hibbits 
6520aeed3e9SJustin Hibbits     SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
6530aeed3e9SJustin Hibbits 
6540aeed3e9SJustin Hibbits     if (p_FmMacControllerDriver->f_FM_MAC_DumpRegs)
6550aeed3e9SJustin Hibbits          return p_FmMacControllerDriver->f_FM_MAC_DumpRegs(h_FmMac);
6560aeed3e9SJustin Hibbits     RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
6570aeed3e9SJustin Hibbits }
6580aeed3e9SJustin Hibbits #endif /* (defined(DEBUG_ERRORS) && ... */
659