1/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc.
2 * All rights reserved.
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 @File          fm_mac_ext.h
35
36 @Description   FM MAC ...
37*//***************************************************************************/
38#ifndef __FM_MAC_EXT_H
39#define __FM_MAC_EXT_H
40
41#include "std_ext.h"
42#include "enet_ext.h"
43
44
45/**************************************************************************//**
46
47 @Group         FM_grp Frame Manager API
48
49 @Description   FM API functions, definitions and enums
50
51 @{
52*//***************************************************************************/
53
54/**************************************************************************//**
55 @Group         FM_mac_grp FM MAC
56
57 @Description   FM MAC API functions, definitions and enums
58
59 @{
60*//***************************************************************************/
61
62
63/**************************************************************************//**
64 @Description   FM MAC Exceptions
65*//***************************************************************************/
66typedef enum e_FmMacExceptions {
67    e_FM_MAC_EX_10G_MDIO_SCAN_EVENTMDIO = 0
68   ,e_FM_MAC_EX_10G_MDIO_CMD_CMPL
69   ,e_FM_MAC_EX_10G_REM_FAULT
70   ,e_FM_MAC_EX_10G_LOC_FAULT
71   ,e_FM_MAC_EX_10G_1TX_ECC_ER
72   ,e_FM_MAC_EX_10G_TX_FIFO_UNFL
73   ,e_FM_MAC_EX_10G_TX_FIFO_OVFL
74   ,e_FM_MAC_EX_10G_TX_ER
75   ,e_FM_MAC_EX_10G_RX_FIFO_OVFL
76   ,e_FM_MAC_EX_10G_RX_ECC_ER
77   ,e_FM_MAC_EX_10G_RX_JAB_FRM
78   ,e_FM_MAC_EX_10G_RX_OVRSZ_FRM
79   ,e_FM_MAC_EX_10G_RX_RUNT_FRM
80   ,e_FM_MAC_EX_10G_RX_FRAG_FRM
81   ,e_FM_MAC_EX_10G_RX_LEN_ER
82   ,e_FM_MAC_EX_10G_RX_CRC_ER
83   ,e_FM_MAC_EX_10G_RX_ALIGN_ER
84   ,e_FM_MAC_EX_1G_BAB_RX
85   ,e_FM_MAC_EX_1G_RX_CTL
86   ,e_FM_MAC_EX_1G_GRATEFUL_TX_STP_COMPLET
87   ,e_FM_MAC_EX_1G_BAB_TX
88   ,e_FM_MAC_EX_1G_TX_CTL
89   ,e_FM_MAC_EX_1G_TX_ERR
90   ,e_FM_MAC_EX_1G_LATE_COL
91   ,e_FM_MAC_EX_1G_COL_RET_LMT
92   ,e_FM_MAC_EX_1G_TX_FIFO_UNDRN
93   ,e_FM_MAC_EX_1G_MAG_PCKT
94   ,e_FM_MAC_EX_1G_MII_MNG_RD_COMPLET
95   ,e_FM_MAC_EX_1G_MII_MNG_WR_COMPLET
96   ,e_FM_MAC_EX_1G_GRATEFUL_RX_STP_COMPLET
97   ,e_FM_MAC_EX_1G_TX_DATA_ERR
98   ,e_FM_MAC_EX_1G_RX_DATA_ERR
99   ,e_FM_MAC_EX_1G_1588_TS_RX_ERR
100   ,e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL
101} e_FmMacExceptions;
102
103/**************************************************************************//**
104 @Description   TM MAC statistics level
105*//***************************************************************************/
106typedef enum e_FmMacStatisticsLevel {
107    e_FM_MAC_NONE_STATISTICS = 0,       /**< No statistics */
108    e_FM_MAC_PARTIAL_STATISTICS,        /**< Only error counters are available. Optimized for performance */
109    e_FM_MAC_FULL_STATISTICS            /**< All counters available. Not optimized for performance */
110} e_FmMacStatisticsLevel;
111
112
113/**************************************************************************//**
114 @Function      t_FmMacExceptionCallback
115
116 @Description   Fm Mac Exception Callback from FM MAC to the user
117
118 @Param[in]     h_App             - Handle to the upper layer handler
119
120 @Param[in]     exceptions        - The exception that occurred
121
122
123 @Return        void.
124*//***************************************************************************/
125typedef void (t_FmMacExceptionCallback)(t_Handle h_App, e_FmMacExceptions exceptions);
126
127
128/**************************************************************************//**
129 @Description   TM MAC statistics rfc3635
130*//***************************************************************************/
131typedef struct t_FmMacStatistics {
132/* RMON */
133    uint64_t  eStatPkts64;             /**< r-10G tr-DT 64 byte frame counter */
134    uint64_t  eStatPkts65to127;        /**< r-10G 65 to 127 byte frame counter */
135    uint64_t  eStatPkts128to255;       /**< r-10G 128 to 255 byte frame counter */
136    uint64_t  eStatPkts256to511;       /**< r-10G 256 to 511 byte frame counter */
137    uint64_t  eStatPkts512to1023;      /**< r-10G 512 to 1023 byte frame counter */
138    uint64_t  eStatPkts1024to1518;     /**< r-10G 1024 to 1518 byte frame counter */
139    uint64_t  eStatPkts1519to1522;     /**< r-10G 1519 to 1522 byte good frame count */
140/* */
141    uint64_t  eStatFragments;          /**< Total number of packets that were less than 64 octets long with a wrong CRC.*/
142    uint64_t  eStatJabbers;            /**< Total number of packets longer than valid maximum length octets */
143    uint64_t  eStatsDropEvents;        /**< number of dropped packets due to internal errors of the MAC Client. */
144    uint64_t  eStatCRCAlignErrors;     /**< Incremented when frames of correct length but with CRC error are received.*/
145    uint64_t  eStatUndersizePkts;      /**< Total number of packets that were less than 64 octets long with a good CRC.*/
146    uint64_t  eStatOversizePkts;       /**< T,B.D*/
147/* Pause */
148    uint64_t  teStatPause;             /**< Pause MAC Control received */
149    uint64_t  reStatPause;             /**< Pause MAC Control sent */
150
151/* MIB II */
152    uint64_t  ifInOctets;              /**< Total number of byte received. */
153    uint64_t  ifInPkts;                /**< Total number of packets received.*/
154    uint64_t  ifInMcastPkts;           /**< Total number of multicast frame received*/
155    uint64_t  ifInBcastPkts;           /**< Total number of broadcast frame received */
156    uint64_t  ifInDiscards;            /**< Frames received, but discarded due to problems within the MAC RX. */
157    uint64_t  ifInErrors;              /**< Number of frames received with error:
158                                               - FIFO Overflow Error
159                                               - CRC Error
160                                               - Frame Too Long Error
161                                               - Alignment Error
162                                               - The dedicated Error Code (0xfe, not a code error) was received */
163    uint64_t  ifOutOctets;             /**< Total number of byte sent. */
164    uint64_t  ifOutPkts;               /**< Total number of packets sent .*/
165    uint64_t  ifOutMcastPkts;          /**< Total number of multicast frame sent */
166    uint64_t  ifOutBcastPkts;          /**< Total number of multicast frame sent */
167    uint64_t  ifOutDiscards;           /**< Frames received, but discarded due to problems within the MAC TX N/A!.*/
168    uint64_t  ifOutErrors;             /**< Number of frames transmitted with error:
169                                               - FIFO Overflow Error
170                                               - FIFO Underflow Error
171                                               - Other */
172} t_FmMacStatistics;
173
174
175/**************************************************************************//**
176 @Group         FM_mac_init_grp Initialization Unit
177
178 @Description   FM MAC Initialization Unit
179
180 @{
181*//***************************************************************************/
182
183/**************************************************************************//**
184 @Description   FM MAC config input
185*//***************************************************************************/
186typedef struct t_FmMacParams {
187    uintptr_t                   baseAddr;           /**< Base of memory mapped FM MAC registers */
188    t_EnetAddr                  addr;               /**< MAC address of device; First octet is sent first */
189    uint8_t                     macId;              /**< MAC ID <dTSEC 0-3> <10G 0>         */
190    e_EnetMode                  enetMode;           /**< Ethernet operation mode (MAC-PHY interface and speed) */
191    t_Handle                    h_Fm;               /**< A handle to the FM object this port related to */
192    int                         mdioIrq;            /**< MDIO exceptions interrupt source - not valid for all
193                                                         MACs; MUST be set to 'NO_IRQ' for MACs that don't have
194                                                         mdio-irq, or for polling */
195    t_FmMacExceptionCallback    *f_Event;           /**< MDIO Events Callback Routine         */
196    t_FmMacExceptionCallback    *f_Exception;       /**< Exception Callback Routine         */
197    t_Handle                    h_App;              /**< A handle to an application layer object; This handle will
198                                                         be passed by the driver upon calling the above callbacks */
199} t_FmMacParams;
200
201
202/**************************************************************************//**
203 @Function      FM_MAC_Config
204
205 @Description   Creates descriptor for the FM MAC module.
206
207                The routine returns a handle (descriptor) to the FM MAC object.
208                This descriptor must be passed as first parameter to all other
209                FM MAC function calls.
210
211                No actual initialization or configuration of FM MAC hardware is
212                done by this routine.
213
214 @Param[in]     p_FmMacParam   - Pointer to data structure of parameters
215
216 @Retval        Handle to FM MAC object, or NULL for Failure.
217*//***************************************************************************/
218t_Handle FM_MAC_Config (t_FmMacParams *p_FmMacParam);
219
220/**************************************************************************//**
221 @Function      FM_MAC_Init
222
223 @Description   Initializes the FM MAC module
224
225 @Param[in]     h_FmMac - FM module descriptor
226
227 @Return        E_OK on success; Error code otherwise.
228*//***************************************************************************/
229t_Error  FM_MAC_Init (t_Handle h_FmMac);
230
231/**************************************************************************//**
232 @Function      FM_Free
233
234 @Description   Frees all resources that were assigned to FM MAC module.
235
236                Calling this routine invalidates the descriptor.
237
238 @Param[in]     h_FmMac - FM module descriptor
239
240 @Return        E_OK on success; Error code otherwise.
241*//***************************************************************************/
242t_Error  FM_MAC_Free (t_Handle h_FmMac);
243
244
245/**************************************************************************//**
246 @Group         FM_mac_advanced_init_grp    Advanced Configuration Unit
247
248 @Description   Configuration functions used to change default values.
249
250 @{
251*//***************************************************************************/
252
253/**************************************************************************//**
254 @Function      FM_MAC_ConfigResetOnInit
255
256 @Description   Tell the driver whether to reset the FM MAC before initialization or
257                not. It changes the default configuration [FALSE].
258
259 @Param[in]     h_FmMac    A handle to a FM MAC Module.
260 @Param[in]     enable     When TRUE, FM will be reset before any initialization.
261
262 @Return        E_OK on success; Error code otherwise.
263
264 @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
265*//***************************************************************************/
266t_Error FM_MAC_ConfigResetOnInit (t_Handle h_FmMac, bool enable);
267
268/**************************************************************************//**
269 @Function      FM_MAC_ConfigLoopback
270
271 @Description   Enable/Disable internal loopback mode
272
273 @Param[in]     h_FmMac    A handle to a FM MAC Module.
274 @Param[in]     enable     TRUE to enable or FALSE to disable.
275
276 @Return        E_OK on success; Error code otherwise.
277
278 @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
279*//***************************************************************************/
280t_Error FM_MAC_ConfigLoopback (t_Handle h_FmMac, bool enable);
281
282/**************************************************************************//**
283 @Function      FM_MAC_ConfigMaxFrameLength
284
285 @Description   Setup maximum Frame Length
286
287 @Param[in]     h_FmMac    A handle to a FM MAC Module.
288 @Param[in]     newVal     MAX Frame length
289
290 @Return        E_OK on success; Error code otherwise.
291
292 @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
293*//***************************************************************************/
294t_Error FM_MAC_ConfigMaxFrameLength (t_Handle h_FmMac, uint16_t newVal);
295
296/**************************************************************************//**
297 @Function      FM_MAC_ConfigWan
298
299 @Description   ENABLE WAN mode in 10G MAC
300
301 @Param[in]     h_FmMac    A handle to a FM MAC Module.
302 @Param[in]     enable     TRUE to enable or FALSE to disable.
303
304 @Return        E_OK on success; Error code otherwise.
305
306 @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
307*//***************************************************************************/
308t_Error FM_MAC_ConfigWan (t_Handle h_FmMac, bool enable);
309
310/**************************************************************************//**
311 @Function      FM_MAC_ConfigPadAndCrc
312
313 @Description   Config PAD and CRC mode
314
315 @Param[in]     h_FmMac    A handle to a FM MAC Module.
316 @Param[in]     enable     TRUE to enable or FALSE to disable.
317
318 @Return        E_OK on success; Error code otherwise.
319
320 @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
321*//***************************************************************************/
322t_Error FM_MAC_ConfigPadAndCrc (t_Handle h_FmMac, bool enable);
323
324/**************************************************************************//**
325 @Function      FM_MAC_ConfigHalfDuplex
326
327 @Description   Config Half Duplex Mode
328
329 @Param[in]     h_FmMac    A handle to a FM MAC Module.
330 @Param[in]     enable     TRUE to enable or FALSE to disable.
331
332 @Return        E_OK on success; Error code otherwise.
333
334 @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
335*//***************************************************************************/
336t_Error FM_MAC_ConfigHalfDuplex (t_Handle h_FmMac, bool enable);
337
338/**************************************************************************//**
339 @Function      FM_MAC_ConfigLengthCheck
340
341 @Description   Configure thef frame length checking.
342
343 @Param[in]     h_FmMac    A handle to a FM MAC Module.
344 @Param[in]     enable     TRUE to enable or FALSE to disable.
345
346 @Return        E_OK on success; Error code otherwise.
347
348 @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
349*//***************************************************************************/
350t_Error FM_MAC_ConfigLengthCheck (t_Handle h_FmMac, bool enable);
351
352/**************************************************************************//**
353 @Function      FM_MAC_ConfigException
354
355 @Description   Change Exception selection from default
356
357 @Param[in]     h_FmMac         A handle to a FM MAC Module.
358 @Param[in]     ex              Type of the desired exceptions
359 @Param[in]     enable          TRUE to enable the specified exception, FALSE to disable it.
360
361
362 @Return        E_OK on success; Error code otherwise.
363
364 @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
365*//***************************************************************************/
366t_Error FM_MAC_ConfigException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable);
367
368#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004
369t_Error FM_MAC_ConfigSkipFman11Workaround (t_Handle h_FmMac);
370#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */
371/** @} */ /* end of FM_mac_advanced_init_grp group */
372/** @} */ /* end of FM_mac_init_grp group */
373
374
375/**************************************************************************//**
376 @Group         FM_mac_runtime_control_grp Runtime Control Unit
377
378 @Description   FM MAC Runtime control unit API functions, definitions and enums.
379
380 @{
381*//***************************************************************************/
382
383/**************************************************************************//**
384 @Function      FM_MAC_Enable
385
386 @Description   Enable the MAC
387
388 @Param[in]     h_FmMac    A handle to a FM MAC Module.
389 @Param[in]     mode       Mode of operation (RX, TX, Both)
390
391 @Return        E_OK on success; Error code otherwise.
392
393 @Cautions      Allowed only following FM_MAC_Init().
394*//***************************************************************************/
395t_Error FM_MAC_Enable  (t_Handle h_FmMac,  e_CommMode mode);
396
397/**************************************************************************//**
398 @Function      FM_MAC_Disable
399
400 @Description   DISABLE the MAC
401
402 @Param[in]     h_FmMac    A handle to a FM MAC Module.
403 @Param[in]     mode       Define what part to Disable (RX,  TX or BOTH)
404
405 @Return        E_OK on success; Error code otherwise.
406
407 @Cautions      Allowed only following FM_MAC_Init().
408*//***************************************************************************/
409t_Error FM_MAC_Disable (t_Handle h_FmMac, e_CommMode mode);
410
411/**************************************************************************//**
412 @Function      FM_MAC_Enable1588TimeStamp
413
414 @Description   Enables the TSU operation.
415
416 @Param[in]     h_Fm   - Handle to the PTP as returned from the FM_MAC_PtpConfig.
417
418 @Return        E_OK on success; Error code otherwise.
419
420 @Cautions      Allowed only following FM_MAC_Init().
421*//***************************************************************************/
422t_Error FM_MAC_Enable1588TimeStamp(t_Handle h_Fm);
423
424/**************************************************************************//**
425 @Function      FM_MAC_Disable1588TimeStamp
426
427 @Description   Disables the TSU operation.
428
429 @Param[in]     h_Fm   - Handle to the PTP as returned from the FM_MAC_PtpConfig.
430
431 @Return        E_OK on success; Error code otherwise.
432
433 @Cautions      Allowed only following FM_MAC_Init().
434*//***************************************************************************/
435t_Error FM_MAC_Disable1588TimeStamp(t_Handle h_Fm);
436
437/**************************************************************************//**
438 @Function      FM_MAC_SetTxAutoPauseFrames
439
440 @Description   Enable/Disable transmition of Pause-Frames.
441
442 @Param[in]     h_FmMac     A handle to a FM MAC Module.
443 @Param[in]     pauseTime   Pause quanta value used with transmitted pause frames.
444                            Each quanta represents a 512 bit-times; Note that '0'
445                            as an input here will be used as disabling the
446                            transmission of the pause-frames.
447
448 @Return        E_OK on success; Error code otherwise.
449
450 @Cautions      Allowed only following FM_MAC_Init().
451*//***************************************************************************/
452t_Error FM_MAC_SetTxAutoPauseFrames (t_Handle h_FmMac, uint16_t pauseTime);
453
454/**************************************************************************//**
455 @Function      FM_MAC_SetRxIgnorePauseFrames
456
457 @Description   Enable/Disable ignoring of Pause-Frames.
458
459 @Param[in]     h_FmMac     A handle to a FM MAC Module.
460 @Param[in]     en          boolean indicates whether to ignore the incoming pause
461                            frames or not.
462
463 @Return        E_OK on success; Error code otherwise.
464
465 @Cautions      Allowed only following FM_MAC_Init().
466*//***************************************************************************/
467t_Error FM_MAC_SetRxIgnorePauseFrames (t_Handle h_FmMac, bool en);
468
469/**************************************************************************//**
470 @Function      FM_MAC_ResetCounters
471
472 @Description   reset all statistics counters
473
474 @Param[in]     h_FmMac     A handle to a FM MAC Module.
475
476 @Return        E_OK on success; Error code otherwise.
477
478 @Cautions      Allowed only following FM_MAC_Init().
479*//***************************************************************************/
480t_Error FM_MAC_ResetCounters (t_Handle h_FmMac);
481
482/**************************************************************************//**
483 @Function      FM_MAC_SetException
484
485 @Description   Enable/Disable a specific Exception
486
487 @Param[in]     h_FmMac         A handle to a FM MAC Module.
488 @Param[in]     ex              Type of the desired exceptions
489 @Param[in]     enable          TRUE to enable the specified exception, FALSE to disable it.
490
491
492 @Return        E_OK on success; Error code otherwise.
493
494 @Cautions      Allowed only following FM_MAC_Init().
495*//***************************************************************************/
496t_Error FM_MAC_SetException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable);
497
498/**************************************************************************//**
499 @Function      FM_MAC_SetStatistics
500
501 @Description   Define Statistics level.
502                                Where applicable, the routine also enables the MIB counters
503                                overflow interrupt in order to keep counters accurate
504                                and account for overflows.
505
506 @Param[in]     h_FmMac         A handle to a FM MAC Module.
507 @Param[in]     statisticsLevel Full statistics level provides all standard counters but may
508                                reduce performance. Partial statistics provides only special
509                                event counters (errors etc.). If selected, regular counters (such as
510                                byte/packet) will be invalid and will return -1.
511
512 @Return        E_OK on success; Error code otherwise.
513
514 @Cautions      Allowed only following FM_MAC_Init().
515*//***************************************************************************/
516t_Error FM_MAC_SetStatistics (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel);
517
518/**************************************************************************//**
519 @Function      FM_MAC_GetStatistics
520
521 @Description   get all statistics counters
522
523 @Param[in]     h_FmMac         A handle to a FM MAC Module.
524 @Param[in]     p_Statistics    Staructure with statistics
525
526 @Return        E_OK on success; Error code otherwise.
527
528 @Cautions      Allowed only following FM_Init().
529*//***************************************************************************/
530t_Error FM_MAC_GetStatistics (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics);
531
532/**************************************************************************//**
533 @Function      FM_MAC_ModifyMacAddr
534
535 @Description   Replace the main MAC Address
536
537 @Param[in]     h_FmMac     -   A handle to a FM Module.
538 @Param[in]     p_EnetAddr  -   Ethernet Mac address
539
540 @Return        E_OK on success; Error code otherwise.
541
542 @Cautions      Allowed only after FM_MAC_Init().
543*//***************************************************************************/
544t_Error FM_MAC_ModifyMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
545
546/**************************************************************************//**
547 @Function      FM_MAC_AddHashMacAddr
548
549 @Description   Add an Address to the hash table. This is for filter purpose only.
550
551 @Param[in]     h_FmMac     -   A handle to a FM Module.
552 @Param[in]     p_EnetAddr  -   Ethernet Mac address
553
554 @Return        E_OK on success; Error code otherwise.
555
556 @Cautions      Allowed only following FM_MAC_Init(). It is a filter only address.
557 @Cautions      Some address need to be filterd out in upper FM blocks.
558*//***************************************************************************/
559t_Error FM_MAC_AddHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
560
561/**************************************************************************//**
562 @Function      FM_MAC_RemoveHashMacAddr
563
564 @Description   Delete an Address to the hash table. This is for filter purpose only.
565
566 @Param[in]     h_FmMac     -   A handle to a FM Module.
567 @Param[in]     p_EnetAddr  -   Ethernet Mac address
568
569 @Return        E_OK on success; Error code otherwise.
570
571 @Cautions      Allowed only following FM_MAC_Init().
572*//***************************************************************************/
573t_Error FM_MAC_RemoveHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
574
575/**************************************************************************//**
576 @Function      FM_MAC_AddExactMatchMacAddr
577
578 @Description   Add a unicast or multicast mac address for exact-match filtering
579                (8 on dTSEC, 2 for 10G-MAC)
580
581 @Param[in]     h_FmMac     -   A handle to a FM Module.
582 @Param[in]     p_EnetAddr  -   MAC Address to ADD
583
584 @Return        E_OK on success; Error code otherwise.
585
586 @Cautions      Allowed only after FM_MAC_Init().
587*//***************************************************************************/
588t_Error FM_MAC_AddExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
589
590/**************************************************************************//**
591 @Function      FM_MAC_RemovelExactMatchMacAddr
592
593 @Description   Remove a uni cast or multi cast mac address.
594
595 @Param[in]     h_FmMac     -   A handle to a FM Module.
596 @Param[in]     p_EnetAddr  -   MAC Address to remove
597
598 @Return        E_OK on success; Error code otherwise..
599
600 @Cautions      Allowed only after FM_MAC_Init().
601*//***************************************************************************/
602t_Error FM_MAC_RemovelExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
603
604/**************************************************************************//**
605 @Function      FM_MAC_SetPromiscuous
606
607 @Description   Enable/Disable MAC Promiscuous mode for ALL mac addresses.
608
609 @Param[in]     h_FmMac    - A handle to a FM MAC Module.
610 @Param[in]     enable     - TRUE to enable or FALSE to disable.
611
612 @Return        E_OK on success; Error code otherwise.
613
614 @Cautions      Allowed only after FM_MAC_Init().
615*//***************************************************************************/
616t_Error FM_MAC_SetPromiscuous (t_Handle h_FmMac, bool enable);
617
618/**************************************************************************//**
619 @Function      FM_MAC_AdjustLink
620
621 @Description   Adjusts the Ethernet link with new speed/duplex setup.
622
623 @Param[in]     h_FmMac     - A handle to a FM Module.
624 @Param[in]     speed       - Ethernet speed.
625 @Param[in]     fullDuplex  - TRUE for Full-Duplex mode;
626                              FALSE for Half-Duplex mode.
627
628 @Return        E_OK on success; Error code otherwise.
629*//***************************************************************************/
630t_Error FM_MAC_AdjustLink(t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex);
631
632/**************************************************************************//**
633 @Function      FM_MAC_GetId
634
635 @Description   Return the MAC ID
636
637 @Param[in]     h_FmMac     -   A handle to a FM Module.
638 @Param[out]    p_MacId     -   MAC ID of device
639
640 @Return        E_OK on success; Error code otherwise.
641
642 @Cautions      Allowed only after FM_MAC_Init().
643*//***************************************************************************/
644t_Error FM_MAC_GetId (t_Handle h_FmMac, uint32_t *p_MacId);
645
646/**************************************************************************//**
647 @Function      FM_MAC_GetVesrion
648
649 @Description   Return Mac HW chip version
650
651 @Param[in]     h_FmMac      -   A handle to a FM Module.
652 @Param[out]    p_MacVresion -   Mac version as defined by the chip
653
654 @Return        E_OK on success; Error code otherwise.
655
656 @Cautions      Allowed only after FM_MAC_Init().
657*//***************************************************************************/
658t_Error FM_MAC_GetVesrion (t_Handle h_FmMac, uint32_t *p_MacVresion);
659
660/**************************************************************************//**
661 @Function      FM_MAC_MII_WritePhyReg
662
663 @Description   Write data into Phy Register
664
665 @Param[in]     h_FmMac     -   A handle to a FM Module.
666 @Param[in]     phyAddr     -   Phy Address on the MII bus
667 @Param[in]     reg         -   Register Number.
668 @Param[in]     data        -   Data to write.
669
670 @Return        E_OK on success; Error code otherwise.
671
672 @Cautions      Allowed only after FM_MAC_Init().
673*//***************************************************************************/
674t_Error FM_MAC_MII_WritePhyReg (t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data);
675
676/**************************************************************************//**
677 @Function      FM_MAC_MII_ReadPhyReg
678
679 @Description   Read data from Phy Register
680
681 @Param[in]     h_FmMac     -   A handle to a FM Module.
682 @Param[in]     phyAddr     -   Phy Address on the MII bus
683 @Param[in]     reg         -   Register Number.
684 @Param[out]    p_Data      -   Data from PHY.
685
686 @Return        E_OK on success; Error code otherwise.
687
688 @Cautions      Allowed only after FM_MAC_Init().
689*//***************************************************************************/
690t_Error FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac,  uint8_t phyAddr, uint8_t reg, uint16_t *p_Data);
691
692#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0))
693/**************************************************************************//**
694 @Function      FM_MAC_DumpRegs
695
696 @Description   Dump internal registers
697
698 @Param[in]     h_FmMac     -   A handle to a FM Module.
699
700 @Return        E_OK on success; Error code otherwise.
701
702 @Cautions      Allowed only after FM_MAC_Init().
703*//***************************************************************************/
704t_Error FM_MAC_DumpRegs(t_Handle h_FmMac);
705#endif /* (defined(DEBUG_ERRORS) && ... */
706
707/** @} */ /* end of FM_mac_runtime_control_grp group */
708/** @} */ /* end of FM_mac_grp group */
709/** @} */ /* end of FM_grp group */
710
711
712
713#endif /* __FM_MAC_EXT_H */
714