1296177Sjhibbits/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc. 2296177Sjhibbits * All rights reserved. 3296177Sjhibbits * 4296177Sjhibbits * Redistribution and use in source and binary forms, with or without 5296177Sjhibbits * modification, are permitted provided that the following conditions are met: 6296177Sjhibbits * * Redistributions of source code must retain the above copyright 7296177Sjhibbits * notice, this list of conditions and the following disclaimer. 8296177Sjhibbits * * Redistributions in binary form must reproduce the above copyright 9296177Sjhibbits * notice, this list of conditions and the following disclaimer in the 10296177Sjhibbits * documentation and/or other materials provided with the distribution. 11296177Sjhibbits * * Neither the name of Freescale Semiconductor nor the 12296177Sjhibbits * names of its contributors may be used to endorse or promote products 13296177Sjhibbits * derived from this software without specific prior written permission. 14296177Sjhibbits * 15296177Sjhibbits * 16296177Sjhibbits * ALTERNATIVELY, this software may be distributed under the terms of the 17296177Sjhibbits * GNU General Public License ("GPL") as published by the Free Software 18296177Sjhibbits * Foundation, either version 2 of that License or (at your option) any 19296177Sjhibbits * later version. 20296177Sjhibbits * 21296177Sjhibbits * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 22296177Sjhibbits * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 23296177Sjhibbits * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24296177Sjhibbits * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 25296177Sjhibbits * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 26296177Sjhibbits * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27296177Sjhibbits * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 28296177Sjhibbits * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29296177Sjhibbits * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30296177Sjhibbits * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31296177Sjhibbits */ 32296177Sjhibbits 33296177Sjhibbits/****************************************************************************** 34296177Sjhibbits @File fm_mac.c 35296177Sjhibbits 36296177Sjhibbits @Description FM MAC ... 37296177Sjhibbits*//***************************************************************************/ 38296177Sjhibbits#include "std_ext.h" 39296177Sjhibbits#include "string_ext.h" 40296177Sjhibbits#include "sprint_ext.h" 41296177Sjhibbits#include "error_ext.h" 42296177Sjhibbits#include "fm_ext.h" 43296177Sjhibbits 44296177Sjhibbits#include "fm_common.h" 45296177Sjhibbits#include "fm_mac.h" 46296177Sjhibbits 47296177Sjhibbits 48296177Sjhibbits/* ........................................................................... */ 49296177Sjhibbits 50296177Sjhibbitst_Handle FM_MAC_Config (t_FmMacParams *p_FmMacParam) 51296177Sjhibbits{ 52296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver; 53296177Sjhibbits 54296177Sjhibbits SANITY_CHECK_RETURN_VALUE(p_FmMacParam, E_INVALID_HANDLE, NULL); 55296177Sjhibbits 56296177Sjhibbits if(ENET_SPEED_FROM_MODE(p_FmMacParam->enetMode) < e_ENET_SPEED_10000) 57296177Sjhibbits p_FmMacControllerDriver = (t_FmMacControllerDriver *)DTSEC_Config(p_FmMacParam); 58296177Sjhibbits else 59296177Sjhibbits p_FmMacControllerDriver = (t_FmMacControllerDriver *)TGEC_Config(p_FmMacParam); 60296177Sjhibbits 61296177Sjhibbits if (!p_FmMacControllerDriver) 62296177Sjhibbits return NULL; 63296177Sjhibbits 64296177Sjhibbits p_FmMacControllerDriver->h_Fm = p_FmMacParam->h_Fm; 65296177Sjhibbits p_FmMacControllerDriver->enetMode = p_FmMacParam->enetMode; 66296177Sjhibbits p_FmMacControllerDriver->macId = p_FmMacParam->macId; 67296177Sjhibbits p_FmMacControllerDriver->resetOnInit = DEFAULT_resetOnInit; 68296177Sjhibbits 69296177Sjhibbits return (t_Handle)p_FmMacControllerDriver; 70296177Sjhibbits} 71296177Sjhibbits 72296177Sjhibbits/* ........................................................................... */ 73296177Sjhibbits 74296177Sjhibbitst_Error FM_MAC_Init (t_Handle h_FmMac) 75296177Sjhibbits{ 76296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 77296177Sjhibbits 78296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 79296177Sjhibbits 80296177Sjhibbits if (p_FmMacControllerDriver->resetOnInit && 81296177Sjhibbits (FmResetMac(p_FmMacControllerDriver->h_Fm, 82296177Sjhibbits ((ENET_INTERFACE_FROM_MODE(p_FmMacControllerDriver->enetMode) == e_ENET_IF_XGMII) ? e_FM_MAC_10G : e_FM_MAC_1G), 83296177Sjhibbits p_FmMacControllerDriver->macId) != E_OK)) 84296177Sjhibbits RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't reset MAC!")); 85296177Sjhibbits 86296177Sjhibbits if ((p_FmMacControllerDriver->clkFreq = FmGetClockFreq(p_FmMacControllerDriver->h_Fm)) == 0) 87296177Sjhibbits RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't get clock for MAC!")); 88296177Sjhibbits 89296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_Init) 90296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_Init(h_FmMac); 91296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 92296177Sjhibbits} 93296177Sjhibbits 94296177Sjhibbits/* ........................................................................... */ 95296177Sjhibbits 96296177Sjhibbitst_Error FM_MAC_Free (t_Handle h_FmMac) 97296177Sjhibbits{ 98296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 99296177Sjhibbits 100296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 101296177Sjhibbits 102296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_Free) 103296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_Free(h_FmMac); 104296177Sjhibbits 105296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 106296177Sjhibbits} 107296177Sjhibbits 108296177Sjhibbits/* ........................................................................... */ 109296177Sjhibbits 110296177Sjhibbitst_Error FM_MAC_ConfigResetOnInit (t_Handle h_FmMac, bool enable) 111296177Sjhibbits{ 112296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 113296177Sjhibbits 114296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 115296177Sjhibbits 116296177Sjhibbits p_FmMacControllerDriver->resetOnInit = enable; 117296177Sjhibbits 118296177Sjhibbits return E_OK; 119296177Sjhibbits} 120296177Sjhibbits 121296177Sjhibbits/* ........................................................................... */ 122296177Sjhibbits 123296177Sjhibbitst_Error FM_MAC_ConfigLoopback (t_Handle h_FmMac, bool newVal) 124296177Sjhibbits{ 125296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 126296177Sjhibbits 127296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 128296177Sjhibbits 129296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback) 130296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback(h_FmMac, newVal); 131296177Sjhibbits 132296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 133296177Sjhibbits} 134296177Sjhibbits 135296177Sjhibbits/* ........................................................................... */ 136296177Sjhibbits 137296177Sjhibbitst_Error FM_MAC_ConfigMaxFrameLength (t_Handle h_FmMac, uint16_t newVal) 138296177Sjhibbits{ 139296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 140296177Sjhibbits 141296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 142296177Sjhibbits 143296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength) 144296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength(h_FmMac, newVal); 145296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 146296177Sjhibbits} 147296177Sjhibbits 148296177Sjhibbits/* ........................................................................... */ 149296177Sjhibbits 150296177Sjhibbitst_Error FM_MAC_ConfigWan (t_Handle h_FmMac, bool flag) 151296177Sjhibbits{ 152296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 153296177Sjhibbits 154296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 155296177Sjhibbits 156296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_ConfigWan) 157296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_ConfigWan(h_FmMac, flag); 158296177Sjhibbits 159296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 160296177Sjhibbits} 161296177Sjhibbits 162296177Sjhibbits/* ........................................................................... */ 163296177Sjhibbits 164296177Sjhibbitst_Error FM_MAC_ConfigPadAndCrc (t_Handle h_FmMac, bool newVal) 165296177Sjhibbits{ 166296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 167296177Sjhibbits 168296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 169296177Sjhibbits 170296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc) 171296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc(h_FmMac, newVal); 172296177Sjhibbits 173296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 174296177Sjhibbits} 175296177Sjhibbits 176296177Sjhibbits/* ........................................................................... */ 177296177Sjhibbits 178296177Sjhibbitst_Error FM_MAC_ConfigHalfDuplex (t_Handle h_FmMac, bool newVal) 179296177Sjhibbits{ 180296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 181296177Sjhibbits 182296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 183296177Sjhibbits 184296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex) 185296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex(h_FmMac,newVal); 186296177Sjhibbits 187296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 188296177Sjhibbits} 189296177Sjhibbits 190296177Sjhibbits/* ........................................................................... */ 191296177Sjhibbits 192296177Sjhibbitst_Error FM_MAC_ConfigLengthCheck (t_Handle h_FmMac, bool newVal) 193296177Sjhibbits{ 194296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 195296177Sjhibbits 196296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 197296177Sjhibbits 198296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck) 199296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck(h_FmMac,newVal); 200296177Sjhibbits 201296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 202296177Sjhibbits} 203296177Sjhibbits 204296177Sjhibbits/* ........................................................................... */ 205296177Sjhibbits 206296177Sjhibbitst_Error FM_MAC_ConfigException (t_Handle h_FmMac, e_FmMacExceptions ex, bool enable) 207296177Sjhibbits{ 208296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 209296177Sjhibbits 210296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 211296177Sjhibbits 212296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_ConfigException) 213296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_ConfigException(h_FmMac, ex, enable); 214296177Sjhibbits 215296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 216296177Sjhibbits} 217296177Sjhibbits 218296177Sjhibbits#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 219296177Sjhibbits/* ........................................................................... */ 220296177Sjhibbits 221296177Sjhibbitst_Error FM_MAC_ConfigSkipFman11Workaround (t_Handle h_FmMac) 222296177Sjhibbits{ 223296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 224296177Sjhibbits 225296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 226296177Sjhibbits 227296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround) 228296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround(h_FmMac); 229296177Sjhibbits 230296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 231296177Sjhibbits} 232296177Sjhibbits#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ 233296177Sjhibbits 234296177Sjhibbits 235296177Sjhibbits/*****************************************************************************/ 236296177Sjhibbits/* Run Time Control */ 237296177Sjhibbits/*****************************************************************************/ 238296177Sjhibbits 239296177Sjhibbits/* ........................................................................... */ 240296177Sjhibbits 241296177Sjhibbitst_Error FM_MAC_Enable (t_Handle h_FmMac, e_CommMode mode) 242296177Sjhibbits{ 243296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 244296177Sjhibbits 245296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 246296177Sjhibbits 247296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_Enable) 248296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_Enable(h_FmMac, mode); 249296177Sjhibbits 250296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 251296177Sjhibbits} 252296177Sjhibbits 253296177Sjhibbits/* ........................................................................... */ 254296177Sjhibbits 255296177Sjhibbitst_Error FM_MAC_Disable (t_Handle h_FmMac, e_CommMode mode) 256296177Sjhibbits{ 257296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 258296177Sjhibbits 259296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 260296177Sjhibbits 261296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_Disable) 262296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_Disable(h_FmMac, mode); 263296177Sjhibbits 264296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 265296177Sjhibbits} 266296177Sjhibbits 267296177Sjhibbits/* ........................................................................... */ 268296177Sjhibbits 269296177Sjhibbitst_Error FM_MAC_Enable1588TimeStamp (t_Handle h_FmMac) 270296177Sjhibbits{ 271296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 272296177Sjhibbits 273296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 274296177Sjhibbits 275296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp) 276296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp(h_FmMac); 277296177Sjhibbits 278296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 279296177Sjhibbits} 280296177Sjhibbits 281296177Sjhibbits/* ........................................................................... */ 282296177Sjhibbits 283296177Sjhibbitst_Error FM_MAC_Disable1588TimeStamp (t_Handle h_FmMac) 284296177Sjhibbits{ 285296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 286296177Sjhibbits 287296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 288296177Sjhibbits 289296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp) 290296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp(h_FmMac); 291296177Sjhibbits 292296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 293296177Sjhibbits} 294296177Sjhibbits 295296177Sjhibbits/* ........................................................................... */ 296296177Sjhibbits 297296177Sjhibbitst_Error FM_MAC_SetTxAutoPauseFrames (t_Handle h_FmMac, uint16_t pauseTime) 298296177Sjhibbits{ 299296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 300296177Sjhibbits 301296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 302296177Sjhibbits 303296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames) 304296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames(h_FmMac, pauseTime); 305296177Sjhibbits 306296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 307296177Sjhibbits} 308296177Sjhibbits 309296177Sjhibbits/* ........................................................................... */ 310296177Sjhibbits 311296177Sjhibbitst_Error FM_MAC_SetRxIgnorePauseFrames (t_Handle h_FmMac, bool en) 312296177Sjhibbits{ 313296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 314296177Sjhibbits 315296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 316296177Sjhibbits 317296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames) 318296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames(h_FmMac, en); 319296177Sjhibbits 320296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 321296177Sjhibbits} 322296177Sjhibbits 323296177Sjhibbits/* ........................................................................... */ 324296177Sjhibbits 325296177Sjhibbitst_Error FM_MAC_ResetCounters (t_Handle h_FmMac) 326296177Sjhibbits{ 327296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 328296177Sjhibbits 329296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 330296177Sjhibbits 331296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_ResetCounters) 332296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_ResetCounters(h_FmMac); 333296177Sjhibbits 334296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 335296177Sjhibbits} 336296177Sjhibbits 337296177Sjhibbits/* ........................................................................... */ 338296177Sjhibbits 339296177Sjhibbitst_Error FM_MAC_SetException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable) 340296177Sjhibbits{ 341296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 342296177Sjhibbits 343296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 344296177Sjhibbits 345296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_SetException) 346296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_SetException(h_FmMac, ex, enable); 347296177Sjhibbits 348296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 349296177Sjhibbits} 350296177Sjhibbits 351296177Sjhibbits/* ........................................................................... */ 352296177Sjhibbits 353296177Sjhibbitst_Error FM_MAC_SetStatistics (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel) 354296177Sjhibbits{ 355296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 356296177Sjhibbits 357296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 358296177Sjhibbits 359296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_SetStatistics) 360296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_SetStatistics(h_FmMac, statisticsLevel); 361296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 362296177Sjhibbits} 363296177Sjhibbits 364296177Sjhibbits/* ........................................................................... */ 365296177Sjhibbits 366296177Sjhibbitst_Error FM_MAC_GetStatistics (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics) 367296177Sjhibbits{ 368296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 369296177Sjhibbits 370296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 371296177Sjhibbits 372296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_GetStatistics) 373296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_GetStatistics(h_FmMac, p_Statistics); 374296177Sjhibbits 375296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 376296177Sjhibbits} 377296177Sjhibbits 378296177Sjhibbits/* ........................................................................... */ 379296177Sjhibbits 380296177Sjhibbitst_Error FM_MAC_ModifyMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) 381296177Sjhibbits{ 382296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 383296177Sjhibbits 384296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 385296177Sjhibbits 386296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr) 387296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr(h_FmMac, p_EnetAddr); 388296177Sjhibbits 389296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 390296177Sjhibbits} 391296177Sjhibbits 392296177Sjhibbits/* ........................................................................... */ 393296177Sjhibbits 394296177Sjhibbitst_Error FM_MAC_AddHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) 395296177Sjhibbits{ 396296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 397296177Sjhibbits 398296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 399296177Sjhibbits 400296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr) 401296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr(h_FmMac, p_EnetAddr); 402296177Sjhibbits 403296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 404296177Sjhibbits} 405296177Sjhibbits 406296177Sjhibbits/* ........................................................................... */ 407296177Sjhibbits 408296177Sjhibbitst_Error FM_MAC_RemoveHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) 409296177Sjhibbits{ 410296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 411296177Sjhibbits 412296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 413296177Sjhibbits 414296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr) 415296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr(h_FmMac, p_EnetAddr); 416296177Sjhibbits 417296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 418296177Sjhibbits} 419296177Sjhibbits 420296177Sjhibbits/* ........................................................................... */ 421296177Sjhibbits 422296177Sjhibbitst_Error FM_MAC_AddExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) 423296177Sjhibbits{ 424296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 425296177Sjhibbits 426296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 427296177Sjhibbits 428296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr) 429296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr(h_FmMac, p_EnetAddr); 430296177Sjhibbits 431296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 432296177Sjhibbits} 433296177Sjhibbits 434296177Sjhibbits/* ........................................................................... */ 435296177Sjhibbits 436296177Sjhibbitst_Error FM_MAC_RemovelExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) 437296177Sjhibbits{ 438296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 439296177Sjhibbits 440296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 441296177Sjhibbits 442296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr) 443296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr(h_FmMac, p_EnetAddr); 444296177Sjhibbits 445296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 446296177Sjhibbits} 447296177Sjhibbits 448296177Sjhibbits/* ........................................................................... */ 449296177Sjhibbits 450296177Sjhibbitst_Error FM_MAC_GetVesrion (t_Handle h_FmMac, uint32_t *macVresion) 451296177Sjhibbits{ 452296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 453296177Sjhibbits 454296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 455296177Sjhibbits 456296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_GetVersion) 457296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_GetVersion(h_FmMac, macVresion); 458296177Sjhibbits 459296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 460296177Sjhibbits 461296177Sjhibbits} 462296177Sjhibbits 463296177Sjhibbits/* ........................................................................... */ 464296177Sjhibbits 465296177Sjhibbitst_Error FM_MAC_GetId (t_Handle h_FmMac, uint32_t *macId) 466296177Sjhibbits{ 467296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 468296177Sjhibbits 469296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 470296177Sjhibbits 471296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_GetId) 472296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_GetId(h_FmMac, macId); 473296177Sjhibbits 474296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 475296177Sjhibbits} 476296177Sjhibbits 477296177Sjhibbits/* ........................................................................... */ 478296177Sjhibbits 479296177Sjhibbitst_Error FM_MAC_SetPromiscuous (t_Handle h_FmMac, bool newVal) 480296177Sjhibbits{ 481296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 482296177Sjhibbits 483296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 484296177Sjhibbits 485296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous) 486296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous(h_FmMac, newVal); 487296177Sjhibbits 488296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 489296177Sjhibbits} 490296177Sjhibbits 491296177Sjhibbits/* ........................................................................... */ 492296177Sjhibbits 493296177Sjhibbitst_Error FM_MAC_AdjustLink(t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex) 494296177Sjhibbits{ 495296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 496296177Sjhibbits 497296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 498296177Sjhibbits 499296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_AdjustLink) 500296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_AdjustLink(h_FmMac, speed, fullDuplex); 501296177Sjhibbits 502296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 503296177Sjhibbits} 504296177Sjhibbits 505296177Sjhibbits/* ........................................................................... */ 506296177Sjhibbits 507296177Sjhibbitst_Error FM_MAC_MII_WritePhyReg (t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data) 508296177Sjhibbits{ 509296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 510296177Sjhibbits 511296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 512296177Sjhibbits 513296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg) 514296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg(h_FmMac, phyAddr, reg, data); 515296177Sjhibbits 516296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 517296177Sjhibbits} 518296177Sjhibbits 519296177Sjhibbits/* ........................................................................... */ 520296177Sjhibbits 521296177Sjhibbitst_Error FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data) 522296177Sjhibbits{ 523296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 524296177Sjhibbits 525296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 526296177Sjhibbits 527296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg) 528296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg(h_FmMac, phyAddr, reg, p_Data); 529296177Sjhibbits 530296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 531296177Sjhibbits} 532296177Sjhibbits 533296177Sjhibbits/* ........................................................................... */ 534296177Sjhibbits 535296177Sjhibbitsuint16_t FM_MAC_GetMaxFrameLength(t_Handle h_FmMac) 536296177Sjhibbits{ 537296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 538296177Sjhibbits 539296177Sjhibbits SANITY_CHECK_RETURN_VALUE(p_FmMacControllerDriver, E_INVALID_HANDLE, 0); 540296177Sjhibbits 541296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength) 542296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength(h_FmMac); 543296177Sjhibbits 544296177Sjhibbits REPORT_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 545296177Sjhibbits return 0; 546296177Sjhibbits} 547296177Sjhibbits 548296177Sjhibbits#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) 549296177Sjhibbits/*****************************************************************************/ 550296177Sjhibbitst_Error FM_MAC_DumpRegs(t_Handle h_FmMac) 551296177Sjhibbits{ 552296177Sjhibbits t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 553296177Sjhibbits 554296177Sjhibbits SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 555296177Sjhibbits 556296177Sjhibbits if (p_FmMacControllerDriver->f_FM_MAC_DumpRegs) 557296177Sjhibbits return p_FmMacControllerDriver->f_FM_MAC_DumpRegs(h_FmMac); 558296177Sjhibbits RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 559296177Sjhibbits} 560296177Sjhibbits#endif /* (defined(DEBUG_ERRORS) && ... */ 561