1/* 2 * Copyright 2008-2012 Freescale Semiconductor Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are met: 6 * * Redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer. 8 * * Redistributions in binary form must reproduce the above copyright 9 * notice, this list of conditions and the following disclaimer in the 10 * documentation and/or other materials provided with the distribution. 11 * * Neither the name of Freescale Semiconductor nor the 12 * names of its contributors may be used to endorse or promote products 13 * derived from this software without specific prior written permission. 14 * 15 * 16 * ALTERNATIVELY, this software may be distributed under the terms of the 17 * GNU General Public License ("GPL") as published by the Free Software 18 * Foundation, either version 2 of that License or (at your option) any 19 * later version. 20 * 21 * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY 22 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 23 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24 * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY 25 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 26 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 28 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 34/****************************************************************************** 35 @File fm_mac.c 36 37 @Description FM MAC ... 38*//***************************************************************************/ 39#include "std_ext.h" 40#include "string_ext.h" 41#include "sprint_ext.h" 42#include "error_ext.h" 43#include "fm_ext.h" 44 45#include "fm_common.h" 46#include "fm_mac.h" 47 48 49/* ......................................................................... */ 50 51t_Handle FM_MAC_Config (t_FmMacParams *p_FmMacParam) 52{ 53 t_FmMacControllerDriver *p_FmMacControllerDriver; 54 uint16_t fmClkFreq; 55 56 SANITY_CHECK_RETURN_VALUE(p_FmMacParam, E_INVALID_HANDLE, NULL); 57 58 fmClkFreq = FmGetClockFreq(p_FmMacParam->h_Fm); 59 if (fmClkFreq == 0) 60 { 61 REPORT_ERROR(MAJOR, E_INVALID_STATE, ("Can't get clock for MAC!")); 62 return NULL; 63 } 64 65#if (DPAA_VERSION == 10) 66 if (ENET_SPEED_FROM_MODE(p_FmMacParam->enetMode) < e_ENET_SPEED_10000) 67 p_FmMacControllerDriver = (t_FmMacControllerDriver *)DTSEC_Config(p_FmMacParam); 68 else 69#if FM_MAX_NUM_OF_10G_MACS > 0 70 p_FmMacControllerDriver = (t_FmMacControllerDriver *)TGEC_Config(p_FmMacParam); 71#else 72 p_FmMacControllerDriver = NULL; 73#endif /* FM_MAX_NUM_OF_10G_MACS > 0 */ 74#else 75 p_FmMacControllerDriver = (t_FmMacControllerDriver *)MEMAC_Config(p_FmMacParam); 76#endif /* (DPAA_VERSION == 10) */ 77 78 if (!p_FmMacControllerDriver) 79 return NULL; 80 81 p_FmMacControllerDriver->h_Fm = p_FmMacParam->h_Fm; 82 p_FmMacControllerDriver->enetMode = p_FmMacParam->enetMode; 83 p_FmMacControllerDriver->macId = p_FmMacParam->macId; 84 p_FmMacControllerDriver->resetOnInit = DEFAULT_resetOnInit; 85 86 p_FmMacControllerDriver->clkFreq = fmClkFreq; 87 88 return (t_Handle)p_FmMacControllerDriver; 89} 90 91/* ......................................................................... */ 92 93t_Error FM_MAC_Init (t_Handle h_FmMac) 94{ 95 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 96 97 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 98 99 if (p_FmMacControllerDriver->resetOnInit && 100 !p_FmMacControllerDriver->f_FM_MAC_ConfigResetOnInit && 101 (FmResetMac(p_FmMacControllerDriver->h_Fm, 102 ((ENET_INTERFACE_FROM_MODE(p_FmMacControllerDriver->enetMode) == e_ENET_IF_XGMII) ? 103 e_FM_MAC_10G : e_FM_MAC_1G), 104 p_FmMacControllerDriver->macId) != E_OK)) 105 RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't reset MAC!")); 106 107 if (p_FmMacControllerDriver->f_FM_MAC_Init) 108 return p_FmMacControllerDriver->f_FM_MAC_Init(h_FmMac); 109 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 110} 111 112/* ......................................................................... */ 113 114t_Error FM_MAC_Free (t_Handle h_FmMac) 115{ 116 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 117 118 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 119 120 if (p_FmMacControllerDriver->f_FM_MAC_Free) 121 return p_FmMacControllerDriver->f_FM_MAC_Free(h_FmMac); 122 123 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 124} 125 126/* ......................................................................... */ 127 128t_Error FM_MAC_ConfigResetOnInit (t_Handle h_FmMac, bool enable) 129{ 130 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 131 132 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 133 134 if (p_FmMacControllerDriver->f_FM_MAC_ConfigResetOnInit) 135 return p_FmMacControllerDriver->f_FM_MAC_ConfigResetOnInit(h_FmMac, enable); 136 137 p_FmMacControllerDriver->resetOnInit = enable; 138 139 return E_OK; 140} 141 142/* ......................................................................... */ 143 144t_Error FM_MAC_ConfigLoopback (t_Handle h_FmMac, bool newVal) 145{ 146 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 147 148 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 149 150 if (p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback) 151 return p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback(h_FmMac, newVal); 152 153 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 154} 155 156/* ......................................................................... */ 157 158t_Error FM_MAC_ConfigMaxFrameLength (t_Handle h_FmMac, uint16_t newVal) 159{ 160 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 161 162 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 163 164 if (p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength) 165 return p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength(h_FmMac, newVal); 166 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 167} 168 169/* ......................................................................... */ 170 171t_Error FM_MAC_ConfigWan (t_Handle h_FmMac, bool flag) 172{ 173 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 174 175 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 176 177 if (p_FmMacControllerDriver->f_FM_MAC_ConfigWan) 178 return p_FmMacControllerDriver->f_FM_MAC_ConfigWan(h_FmMac, flag); 179 180 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 181} 182 183/* ......................................................................... */ 184 185t_Error FM_MAC_ConfigPadAndCrc (t_Handle h_FmMac, bool newVal) 186{ 187 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 188 189 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 190 191 if (p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc) 192 return p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc(h_FmMac, newVal); 193 194 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 195} 196 197/* ......................................................................... */ 198 199t_Error FM_MAC_ConfigHalfDuplex (t_Handle h_FmMac, bool newVal) 200{ 201 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 202 203 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 204 205 if (p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex) 206 return p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex(h_FmMac,newVal); 207 208 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 209} 210 211/* ......................................................................... */ 212 213t_Error FM_MAC_ConfigTbiPhyAddr (t_Handle h_FmMac, uint8_t newVal) 214{ 215 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 216 217 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 218 219 if (p_FmMacControllerDriver->f_FM_MAC_ConfigTbiPhyAddr) 220 return p_FmMacControllerDriver->f_FM_MAC_ConfigTbiPhyAddr(h_FmMac,newVal); 221 222 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 223} 224 225/* ......................................................................... */ 226 227t_Error FM_MAC_ConfigLengthCheck (t_Handle h_FmMac, bool newVal) 228{ 229 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 230 231 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 232 233 if (p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck) 234 return p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck(h_FmMac,newVal); 235 236 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 237} 238 239/* ......................................................................... */ 240 241t_Error FM_MAC_ConfigException (t_Handle h_FmMac, e_FmMacExceptions ex, bool enable) 242{ 243 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 244 245 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 246 247 if (p_FmMacControllerDriver->f_FM_MAC_ConfigException) 248 return p_FmMacControllerDriver->f_FM_MAC_ConfigException(h_FmMac, ex, enable); 249 250 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 251} 252 253#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 254/* ......................................................................... */ 255 256t_Error FM_MAC_ConfigSkipFman11Workaround (t_Handle h_FmMac) 257{ 258 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 259 260 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 261 262 if (p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround) 263 return p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround(h_FmMac); 264 265 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 266} 267#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */ 268 269 270/*****************************************************************************/ 271/* Run Time Control */ 272/*****************************************************************************/ 273 274/* ......................................................................... */ 275 276t_Error FM_MAC_Enable (t_Handle h_FmMac, e_CommMode mode) 277{ 278 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 279 280 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 281 282 if (p_FmMacControllerDriver->f_FM_MAC_Enable) 283 return p_FmMacControllerDriver->f_FM_MAC_Enable(h_FmMac, mode); 284 285 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 286} 287 288/* ......................................................................... */ 289 290t_Error FM_MAC_Disable (t_Handle h_FmMac, e_CommMode mode) 291{ 292 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 293 294 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 295 296 if (p_FmMacControllerDriver->f_FM_MAC_Disable) 297 return p_FmMacControllerDriver->f_FM_MAC_Disable(h_FmMac, mode); 298 299 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 300} 301 302t_Error FM_MAC_Resume (t_Handle h_FmMac) 303{ 304 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 305 306 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 307 308 if (p_FmMacControllerDriver->f_FM_MAC_Resume) 309 return p_FmMacControllerDriver->f_FM_MAC_Resume(h_FmMac); 310 311 return E_OK; 312} 313 314/* ......................................................................... */ 315 316t_Error FM_MAC_Enable1588TimeStamp (t_Handle h_FmMac) 317{ 318 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 319 320 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 321 322 if (p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp) 323 return p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp(h_FmMac); 324 325 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 326} 327 328/* ......................................................................... */ 329 330t_Error FM_MAC_Disable1588TimeStamp (t_Handle h_FmMac) 331{ 332 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 333 334 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 335 336 if (p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp) 337 return p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp(h_FmMac); 338 339 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 340} 341 342/* ......................................................................... */ 343 344t_Error FM_MAC_SetTxAutoPauseFrames(t_Handle h_FmMac, 345 uint16_t pauseTime) 346{ 347 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 348 349 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 350 351 if (p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames) 352 return p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames(h_FmMac, 353 pauseTime); 354 355 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 356} 357 358/* ......................................................................... */ 359 360t_Error FM_MAC_SetTxPauseFrames(t_Handle h_FmMac, 361 uint8_t priority, 362 uint16_t pauseTime, 363 uint16_t threshTime) 364{ 365 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 366 367 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 368 369 if (p_FmMacControllerDriver->f_FM_MAC_SetTxPauseFrames) 370 return p_FmMacControllerDriver->f_FM_MAC_SetTxPauseFrames(h_FmMac, 371 priority, 372 pauseTime, 373 threshTime); 374 375 RETURN_ERROR(MAJOR, E_NOT_SUPPORTED, NO_MSG); 376} 377 378/* ......................................................................... */ 379 380t_Error FM_MAC_SetRxIgnorePauseFrames (t_Handle h_FmMac, bool en) 381{ 382 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 383 384 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 385 386 if (p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames) 387 return p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames(h_FmMac, en); 388 389 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 390} 391 392/* ......................................................................... */ 393 394t_Error FM_MAC_SetWakeOnLan (t_Handle h_FmMac, bool en) 395{ 396 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 397 398 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 399 400 if (p_FmMacControllerDriver->f_FM_MAC_SetWakeOnLan) 401 return p_FmMacControllerDriver->f_FM_MAC_SetWakeOnLan(h_FmMac, en); 402 403 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 404} 405 406/* ......................................................................... */ 407 408t_Error FM_MAC_ResetCounters (t_Handle h_FmMac) 409{ 410 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 411 412 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 413 414 if (p_FmMacControllerDriver->f_FM_MAC_ResetCounters) 415 return p_FmMacControllerDriver->f_FM_MAC_ResetCounters(h_FmMac); 416 417 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 418} 419 420/* ......................................................................... */ 421 422t_Error FM_MAC_SetException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable) 423{ 424 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 425 426 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 427 428 if (p_FmMacControllerDriver->f_FM_MAC_SetException) 429 return p_FmMacControllerDriver->f_FM_MAC_SetException(h_FmMac, ex, enable); 430 431 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 432} 433 434/* ......................................................................... */ 435 436t_Error FM_MAC_SetStatistics (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel) 437{ 438 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 439 440 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 441 442 if (p_FmMacControllerDriver->f_FM_MAC_SetStatistics) 443 return p_FmMacControllerDriver->f_FM_MAC_SetStatistics(h_FmMac, statisticsLevel); 444 445 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 446} 447 448/* ......................................................................... */ 449 450t_Error FM_MAC_GetStatistics (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics) 451{ 452 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 453 454 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 455 456 if (p_FmMacControllerDriver->f_FM_MAC_GetStatistics) 457 return p_FmMacControllerDriver->f_FM_MAC_GetStatistics(h_FmMac, p_Statistics); 458 459 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 460} 461 462/* ......................................................................... */ 463 464t_Error FM_MAC_ModifyMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) 465{ 466 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 467 468 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 469 470 if (p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr) 471 return p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr(h_FmMac, p_EnetAddr); 472 473 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 474} 475 476/* ......................................................................... */ 477 478t_Error FM_MAC_AddHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) 479{ 480 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 481 482 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 483 484 if (p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr) 485 return p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr(h_FmMac, p_EnetAddr); 486 487 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 488} 489 490/* ......................................................................... */ 491 492t_Error FM_MAC_RemoveHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) 493{ 494 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 495 496 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 497 498 if (p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr) 499 return p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr(h_FmMac, p_EnetAddr); 500 501 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 502} 503 504/* ......................................................................... */ 505 506t_Error FM_MAC_AddExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) 507{ 508 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 509 510 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 511 512 if (p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr) 513 return p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr(h_FmMac, p_EnetAddr); 514 515 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 516} 517 518/* ......................................................................... */ 519 520t_Error FM_MAC_RemovelExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr) 521{ 522 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 523 524 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 525 526 if (p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr) 527 return p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr(h_FmMac, p_EnetAddr); 528 529 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 530} 531 532/* ......................................................................... */ 533 534t_Error FM_MAC_GetVesrion (t_Handle h_FmMac, uint32_t *macVresion) 535{ 536 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 537 538 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 539 540 if (p_FmMacControllerDriver->f_FM_MAC_GetVersion) 541 return p_FmMacControllerDriver->f_FM_MAC_GetVersion(h_FmMac, macVresion); 542 543 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 544 545} 546 547/* ......................................................................... */ 548 549t_Error FM_MAC_GetId (t_Handle h_FmMac, uint32_t *macId) 550{ 551 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 552 553 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 554 555 if (p_FmMacControllerDriver->f_FM_MAC_GetId) 556 return p_FmMacControllerDriver->f_FM_MAC_GetId(h_FmMac, macId); 557 558 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 559} 560 561/* ......................................................................... */ 562 563t_Error FM_MAC_SetPromiscuous (t_Handle h_FmMac, bool newVal) 564{ 565 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 566 567 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 568 569 if (p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous) 570 return p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous(h_FmMac, newVal); 571 572 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 573} 574 575/* ......................................................................... */ 576 577t_Error FM_MAC_AdjustLink(t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex) 578{ 579 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 580 581 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 582 583 if (p_FmMacControllerDriver->f_FM_MAC_AdjustLink) 584 return p_FmMacControllerDriver->f_FM_MAC_AdjustLink(h_FmMac, speed, fullDuplex); 585 586 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 587} 588 589/* ......................................................................... */ 590 591t_Error FM_MAC_RestartAutoneg(t_Handle h_FmMac) 592{ 593 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 594 595 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 596 597 if (p_FmMacControllerDriver->f_FM_MAC_RestartAutoneg) 598 return p_FmMacControllerDriver->f_FM_MAC_RestartAutoneg(h_FmMac); 599 600 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 601} 602 603/* ......................................................................... */ 604 605t_Error FM_MAC_MII_WritePhyReg (t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data) 606{ 607 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 608 609 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 610 611 if (p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg) 612 return p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg(h_FmMac, phyAddr, reg, data); 613 614 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 615} 616 617/* ......................................................................... */ 618 619t_Error FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t *p_Data) 620{ 621 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 622 623 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 624 625 if (p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg) 626 return p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg(h_FmMac, phyAddr, reg, p_Data); 627 628 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 629} 630 631/* ......................................................................... */ 632 633uint16_t FM_MAC_GetMaxFrameLength(t_Handle h_FmMac) 634{ 635 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 636 637 SANITY_CHECK_RETURN_VALUE(p_FmMacControllerDriver, E_INVALID_HANDLE, 0); 638 639 if (p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength) 640 return p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength(h_FmMac); 641 642 REPORT_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 643 return 0; 644} 645 646#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0)) 647/*****************************************************************************/ 648t_Error FM_MAC_DumpRegs(t_Handle h_FmMac) 649{ 650 t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac; 651 652 SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE); 653 654 if (p_FmMacControllerDriver->f_FM_MAC_DumpRegs) 655 return p_FmMacControllerDriver->f_FM_MAC_DumpRegs(h_FmMac); 656 RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG); 657} 658#endif /* (defined(DEBUG_ERRORS) && ... */ 659