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 51 t_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 93 t_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 114 t_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 128 t_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 144 t_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 158 t_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 171 t_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 185 t_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 199 t_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 213 t_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 227 t_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 241 t_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 256 t_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 276 t_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 290 t_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 302 t_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 316 t_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 330 t_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 344 t_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 360 t_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 380 t_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 394 t_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 408 t_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 422 t_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 436 t_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 450 t_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 464 t_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 478 t_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 492 t_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 506 t_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 520 t_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 534 t_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 549 t_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 563 t_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 577 t_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 591 t_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 605 t_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 619 t_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 633 uint16_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 /*****************************************************************************/ 648 t_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