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 *//***************************************************************************/
66 typedef 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 *//***************************************************************************/
106 typedef 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 *//***************************************************************************/
125 typedef void (t_FmMacExceptionCallback)(t_Handle h_App, e_FmMacExceptions exceptions);
126 
127 
128 /**************************************************************************//**
129  @Description   TM MAC statistics rfc3635
130 *//***************************************************************************/
131 typedef 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 *//***************************************************************************/
186 typedef 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 *//***************************************************************************/
218 t_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 *//***************************************************************************/
229 t_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 *//***************************************************************************/
242 t_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 *//***************************************************************************/
266 t_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 *//***************************************************************************/
280 t_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 *//***************************************************************************/
294 t_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 *//***************************************************************************/
308 t_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 *//***************************************************************************/
322 t_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 *//***************************************************************************/
336 t_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 *//***************************************************************************/
350 t_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 *//***************************************************************************/
366 t_Error FM_MAC_ConfigException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable);
367 
368 #ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004
369 t_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 *//***************************************************************************/
395 t_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 *//***************************************************************************/
409 t_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 *//***************************************************************************/
422 t_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 *//***************************************************************************/
435 t_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 *//***************************************************************************/
452 t_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 *//***************************************************************************/
467 t_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 *//***************************************************************************/
480 t_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 *//***************************************************************************/
496 t_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 *//***************************************************************************/
516 t_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 *//***************************************************************************/
530 t_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 *//***************************************************************************/
544 t_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 *//***************************************************************************/
559 t_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 *//***************************************************************************/
573 t_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 *//***************************************************************************/
588 t_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 *//***************************************************************************/
602 t_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 *//***************************************************************************/
616 t_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 *//***************************************************************************/
630 t_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 *//***************************************************************************/
644 t_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 *//***************************************************************************/
658 t_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 *//***************************************************************************/
674 t_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 *//***************************************************************************/
690 t_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 *//***************************************************************************/
704 t_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