xref: /freebsd/sys/contrib/ncsw/inc/Peripherals/fm_mac_ext.h (revision c2c014f24c10f90d85126ac5fbd4d8524de32b1c)
1*852ba100SJustin Hibbits /*
2*852ba100SJustin Hibbits  * Copyright 2008-2012 Freescale Semiconductor Inc.
30aeed3e9SJustin Hibbits  *
40aeed3e9SJustin Hibbits  * Redistribution and use in source and binary forms, with or without
50aeed3e9SJustin Hibbits  * modification, are permitted provided that the following conditions are met:
60aeed3e9SJustin Hibbits  *     * Redistributions of source code must retain the above copyright
70aeed3e9SJustin Hibbits  *       notice, this list of conditions and the following disclaimer.
80aeed3e9SJustin Hibbits  *     * Redistributions in binary form must reproduce the above copyright
90aeed3e9SJustin Hibbits  *       notice, this list of conditions and the following disclaimer in the
100aeed3e9SJustin Hibbits  *       documentation and/or other materials provided with the distribution.
110aeed3e9SJustin Hibbits  *     * Neither the name of Freescale Semiconductor nor the
120aeed3e9SJustin Hibbits  *       names of its contributors may be used to endorse or promote products
130aeed3e9SJustin Hibbits  *       derived from this software without specific prior written permission.
140aeed3e9SJustin Hibbits  *
150aeed3e9SJustin Hibbits  *
160aeed3e9SJustin Hibbits  * ALTERNATIVELY, this software may be distributed under the terms of the
170aeed3e9SJustin Hibbits  * GNU General Public License ("GPL") as published by the Free Software
180aeed3e9SJustin Hibbits  * Foundation, either version 2 of that License or (at your option) any
190aeed3e9SJustin Hibbits  * later version.
200aeed3e9SJustin Hibbits  *
210aeed3e9SJustin Hibbits  * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
220aeed3e9SJustin Hibbits  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
230aeed3e9SJustin Hibbits  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
240aeed3e9SJustin Hibbits  * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
250aeed3e9SJustin Hibbits  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
260aeed3e9SJustin Hibbits  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
270aeed3e9SJustin Hibbits  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
280aeed3e9SJustin Hibbits  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
290aeed3e9SJustin Hibbits  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
300aeed3e9SJustin Hibbits  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
310aeed3e9SJustin Hibbits  */
320aeed3e9SJustin Hibbits 
33*852ba100SJustin Hibbits 
340aeed3e9SJustin Hibbits /**************************************************************************//**
350aeed3e9SJustin Hibbits  @File          fm_mac_ext.h
360aeed3e9SJustin Hibbits 
370aeed3e9SJustin Hibbits  @Description   FM MAC ...
380aeed3e9SJustin Hibbits *//***************************************************************************/
390aeed3e9SJustin Hibbits #ifndef __FM_MAC_EXT_H
400aeed3e9SJustin Hibbits #define __FM_MAC_EXT_H
410aeed3e9SJustin Hibbits 
420aeed3e9SJustin Hibbits #include "std_ext.h"
430aeed3e9SJustin Hibbits #include "enet_ext.h"
440aeed3e9SJustin Hibbits 
450aeed3e9SJustin Hibbits 
460aeed3e9SJustin Hibbits /**************************************************************************//**
470aeed3e9SJustin Hibbits 
480aeed3e9SJustin Hibbits  @Group         FM_grp Frame Manager API
490aeed3e9SJustin Hibbits 
500aeed3e9SJustin Hibbits  @Description   FM API functions, definitions and enums
510aeed3e9SJustin Hibbits 
520aeed3e9SJustin Hibbits  @{
530aeed3e9SJustin Hibbits *//***************************************************************************/
540aeed3e9SJustin Hibbits 
550aeed3e9SJustin Hibbits /**************************************************************************//**
560aeed3e9SJustin Hibbits  @Group         FM_mac_grp FM MAC
570aeed3e9SJustin Hibbits 
580aeed3e9SJustin Hibbits  @Description   FM MAC API functions, definitions and enums
590aeed3e9SJustin Hibbits 
600aeed3e9SJustin Hibbits  @{
610aeed3e9SJustin Hibbits *//***************************************************************************/
620aeed3e9SJustin Hibbits 
63*852ba100SJustin Hibbits #define FM_MAC_NO_PFC   0xff
64*852ba100SJustin Hibbits 
650aeed3e9SJustin Hibbits 
660aeed3e9SJustin Hibbits /**************************************************************************//**
670aeed3e9SJustin Hibbits  @Description   FM MAC Exceptions
680aeed3e9SJustin Hibbits *//***************************************************************************/
690aeed3e9SJustin Hibbits typedef enum e_FmMacExceptions {
70*852ba100SJustin Hibbits     e_FM_MAC_EX_10G_MDIO_SCAN_EVENTMDIO = 0                     /**< 10GEC MDIO scan event interrupt */
71*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_MDIO_CMD_CMPL                               /**< 10GEC MDIO command completion interrupt */
72*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_REM_FAULT                                   /**< 10GEC, mEMAC Remote fault interrupt */
73*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_LOC_FAULT                                   /**< 10GEC, mEMAC Local fault interrupt */
74*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_1TX_ECC_ER                                  /**< 10GEC, mEMAC Transmit frame ECC error interrupt */
75*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_TX_FIFO_UNFL                                /**< 10GEC, mEMAC Transmit FIFO underflow interrupt */
76*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_TX_FIFO_OVFL                                /**< 10GEC, mEMAC Transmit FIFO overflow interrupt */
77*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_TX_ER                                       /**< 10GEC Transmit frame error interrupt */
78*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_RX_FIFO_OVFL                                /**< 10GEC, mEMAC Receive FIFO overflow interrupt */
79*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_RX_ECC_ER                                   /**< 10GEC, mEMAC Receive frame ECC error interrupt */
80*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_RX_JAB_FRM                                  /**< 10GEC Receive jabber frame interrupt */
81*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_RX_OVRSZ_FRM                                /**< 10GEC Receive oversized frame interrupt */
82*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_RX_RUNT_FRM                                 /**< 10GEC Receive runt frame interrupt */
83*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_RX_FRAG_FRM                                 /**< 10GEC Receive fragment frame interrupt */
84*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_RX_LEN_ER                                   /**< 10GEC Receive payload length error interrupt */
85*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_RX_CRC_ER                                   /**< 10GEC Receive CRC error interrupt */
86*852ba100SJustin Hibbits    ,e_FM_MAC_EX_10G_RX_ALIGN_ER                                 /**< 10GEC Receive alignment error interrupt */
87*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_BAB_RX                                       /**< dTSEC Babbling receive error */
88*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_RX_CTL                                       /**< dTSEC Receive control (pause frame) interrupt */
89*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_GRATEFUL_TX_STP_COMPLET                      /**< dTSEC Graceful transmit stop complete */
90*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_BAB_TX                                       /**< dTSEC Babbling transmit error */
91*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_TX_CTL                                       /**< dTSEC Transmit control (pause frame) interrupt */
92*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_TX_ERR                                       /**< dTSEC Transmit error */
93*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_LATE_COL                                     /**< dTSEC Late collision */
94*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_COL_RET_LMT                                  /**< dTSEC Collision retry limit */
95*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_TX_FIFO_UNDRN                                /**< dTSEC Transmit FIFO underrun */
96*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_MAG_PCKT                                     /**< dTSEC Magic Packet detection */
97*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_MII_MNG_RD_COMPLET                           /**< dTSEC MII management read completion */
98*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_MII_MNG_WR_COMPLET                           /**< dTSEC MII management write completion */
99*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_GRATEFUL_RX_STP_COMPLET                      /**< dTSEC Graceful receive stop complete */
100*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_TX_DATA_ERR                                  /**< dTSEC Internal data error on transmit */
101*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_RX_DATA_ERR                                  /**< dTSEC Internal data error on receive */
102*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_1588_TS_RX_ERR                               /**< dTSEC Time-Stamp Receive Error */
103*852ba100SJustin Hibbits    ,e_FM_MAC_EX_1G_RX_MIB_CNT_OVFL                              /**< dTSEC MIB counter overflow */
104*852ba100SJustin Hibbits    ,e_FM_MAC_EX_TS_FIFO_ECC_ERR                                 /**< mEMAC Time-stamp FIFO ECC error interrupt;
105*852ba100SJustin Hibbits                                                                      not supported on T4240/B4860 rev1 chips */
106*852ba100SJustin Hibbits    ,e_FM_MAC_EX_MAGIC_PACKET_INDICATION = e_FM_MAC_EX_1G_MAG_PCKT
107*852ba100SJustin Hibbits                                                                 /**< mEMAC Magic Packet Indication Interrupt */
1080aeed3e9SJustin Hibbits } e_FmMacExceptions;
1090aeed3e9SJustin Hibbits 
1100aeed3e9SJustin Hibbits /**************************************************************************//**
1110aeed3e9SJustin Hibbits  @Description   TM MAC statistics level
1120aeed3e9SJustin Hibbits *//***************************************************************************/
1130aeed3e9SJustin Hibbits typedef enum e_FmMacStatisticsLevel {
1140aeed3e9SJustin Hibbits     e_FM_MAC_NONE_STATISTICS = 0,       /**< No statistics */
115*852ba100SJustin Hibbits     e_FM_MAC_PARTIAL_STATISTICS,        /**< Only error counters are available; Optimized for performance */
116*852ba100SJustin Hibbits     e_FM_MAC_FULL_STATISTICS            /**< All counters available; Not optimized for performance */
1170aeed3e9SJustin Hibbits } e_FmMacStatisticsLevel;
1180aeed3e9SJustin Hibbits 
1190aeed3e9SJustin Hibbits 
120*852ba100SJustin Hibbits #if (DPAA_VERSION >= 11)
121*852ba100SJustin Hibbits /**************************************************************************//**
122*852ba100SJustin Hibbits  @Description   Priority Flow Control Parameters
123*852ba100SJustin Hibbits *//***************************************************************************/
124*852ba100SJustin Hibbits typedef struct t_FmMacPfcParams {
125*852ba100SJustin Hibbits     bool        pfcEnable;                                      /**< Enable/Disable PFC */
126*852ba100SJustin Hibbits 
127*852ba100SJustin Hibbits     uint16_t    pauseQuanta[FM_MAX_NUM_OF_PFC_PRIORITIES];      /**< Pause Quanta per priority to be sent in a pause frame. Each quanta represents a 512 bit-times*/
128*852ba100SJustin Hibbits 
129*852ba100SJustin Hibbits     uint16_t    pauseThresholdQuanta[FM_MAX_NUM_OF_PFC_PRIORITIES];/**< Pause threshold per priority, when timer passes this threshold time a PFC frames is sent again if the port is still congested or BM pool in depletion*/
130*852ba100SJustin Hibbits 
131*852ba100SJustin Hibbits 
132*852ba100SJustin Hibbits } t_FmMacPfcParams;
133*852ba100SJustin Hibbits #endif /* (DPAA_VERSION >= 11) */
134*852ba100SJustin Hibbits 
1350aeed3e9SJustin Hibbits /**************************************************************************//**
1360aeed3e9SJustin Hibbits  @Function      t_FmMacExceptionCallback
1370aeed3e9SJustin Hibbits 
1380aeed3e9SJustin Hibbits  @Description   Fm Mac Exception Callback from FM MAC to the user
1390aeed3e9SJustin Hibbits 
1400aeed3e9SJustin Hibbits  @Param[in]     h_App             - Handle to the upper layer handler
1410aeed3e9SJustin Hibbits 
1420aeed3e9SJustin Hibbits  @Param[in]     exceptions        - The exception that occurred
1430aeed3e9SJustin Hibbits 
1440aeed3e9SJustin Hibbits  @Return        void.
1450aeed3e9SJustin Hibbits *//***************************************************************************/
1460aeed3e9SJustin Hibbits typedef void (t_FmMacExceptionCallback)(t_Handle h_App, e_FmMacExceptions exceptions);
1470aeed3e9SJustin Hibbits 
1480aeed3e9SJustin Hibbits 
1490aeed3e9SJustin Hibbits /**************************************************************************//**
1500aeed3e9SJustin Hibbits  @Description   TM MAC statistics rfc3635
1510aeed3e9SJustin Hibbits *//***************************************************************************/
1520aeed3e9SJustin Hibbits typedef struct t_FmMacStatistics {
1530aeed3e9SJustin Hibbits /* RMON */
1540aeed3e9SJustin Hibbits     uint64_t  eStatPkts64;             /**< r-10G tr-DT 64 byte frame counter */
1550aeed3e9SJustin Hibbits     uint64_t  eStatPkts65to127;        /**< r-10G 65 to 127 byte frame counter */
1560aeed3e9SJustin Hibbits     uint64_t  eStatPkts128to255;       /**< r-10G 128 to 255 byte frame counter */
1570aeed3e9SJustin Hibbits     uint64_t  eStatPkts256to511;       /**< r-10G 256 to 511 byte frame counter */
1580aeed3e9SJustin Hibbits     uint64_t  eStatPkts512to1023;      /**< r-10G 512 to 1023 byte frame counter */
1590aeed3e9SJustin Hibbits     uint64_t  eStatPkts1024to1518;     /**< r-10G 1024 to 1518 byte frame counter */
1600aeed3e9SJustin Hibbits     uint64_t  eStatPkts1519to1522;     /**< r-10G 1519 to 1522 byte good frame count */
1610aeed3e9SJustin Hibbits /* */
1620aeed3e9SJustin Hibbits     uint64_t  eStatFragments;          /**< Total number of packets that were less than 64 octets long with a wrong CRC.*/
1630aeed3e9SJustin Hibbits     uint64_t  eStatJabbers;            /**< Total number of packets longer than valid maximum length octets */
164*852ba100SJustin Hibbits     uint64_t  eStatsDropEvents;        /**< number of dropped packets due to internal errors of the MAC Client (during receive). */
1650aeed3e9SJustin Hibbits     uint64_t  eStatCRCAlignErrors;     /**< Incremented when frames of correct length but with CRC error are received.*/
166*852ba100SJustin Hibbits     uint64_t  eStatUndersizePkts;      /**< Incremented for frames under 64 bytes with a valid FCS and otherwise well formed;
167*852ba100SJustin Hibbits                                             This count does not include range length errors */
168*852ba100SJustin Hibbits     uint64_t  eStatOversizePkts;       /**< Incremented for frames which exceed 1518 (non VLAN) or 1522 (VLAN) and contains
169*852ba100SJustin Hibbits                                             a valid FCS and otherwise well formed */
1700aeed3e9SJustin Hibbits /* Pause */
1710aeed3e9SJustin Hibbits     uint64_t  teStatPause;             /**< Pause MAC Control received */
1720aeed3e9SJustin Hibbits     uint64_t  reStatPause;             /**< Pause MAC Control sent */
1730aeed3e9SJustin Hibbits /* MIB II */
1740aeed3e9SJustin Hibbits     uint64_t  ifInOctets;              /**< Total number of byte received. */
1750aeed3e9SJustin Hibbits     uint64_t  ifInPkts;                /**< Total number of packets received.*/
176*852ba100SJustin Hibbits     uint64_t  ifInUcastPkts;           /**< Total number of unicast frame received;
177*852ba100SJustin Hibbits                                             NOTE: this counter is not supported on dTSEC MAC */
1780aeed3e9SJustin Hibbits     uint64_t  ifInMcastPkts;           /**< Total number of multicast frame received*/
1790aeed3e9SJustin Hibbits     uint64_t  ifInBcastPkts;           /**< Total number of broadcast frame received */
1800aeed3e9SJustin Hibbits     uint64_t  ifInDiscards;            /**< Frames received, but discarded due to problems within the MAC RX. */
1810aeed3e9SJustin Hibbits     uint64_t  ifInErrors;              /**< Number of frames received with error:
1820aeed3e9SJustin Hibbits                                                - FIFO Overflow Error
1830aeed3e9SJustin Hibbits                                                - CRC Error
1840aeed3e9SJustin Hibbits                                                - Frame Too Long Error
1850aeed3e9SJustin Hibbits                                                - Alignment Error
1860aeed3e9SJustin Hibbits                                                - The dedicated Error Code (0xfe, not a code error) was received */
1870aeed3e9SJustin Hibbits     uint64_t  ifOutOctets;             /**< Total number of byte sent. */
1880aeed3e9SJustin Hibbits     uint64_t  ifOutPkts;               /**< Total number of packets sent .*/
189*852ba100SJustin Hibbits     uint64_t  ifOutUcastPkts;          /**< Total number of unicast frame sent;
190*852ba100SJustin Hibbits                                             NOTE: this counter is not supported on dTSEC MAC */
1910aeed3e9SJustin Hibbits     uint64_t  ifOutMcastPkts;          /**< Total number of multicast frame sent */
1920aeed3e9SJustin Hibbits     uint64_t  ifOutBcastPkts;          /**< Total number of multicast frame sent */
1930aeed3e9SJustin Hibbits     uint64_t  ifOutDiscards;           /**< Frames received, but discarded due to problems within the MAC TX N/A!.*/
1940aeed3e9SJustin Hibbits     uint64_t  ifOutErrors;             /**< Number of frames transmitted with error:
1950aeed3e9SJustin Hibbits                                                - FIFO Overflow Error
1960aeed3e9SJustin Hibbits                                                - FIFO Underflow Error
1970aeed3e9SJustin Hibbits                                                - Other */
1980aeed3e9SJustin Hibbits } t_FmMacStatistics;
1990aeed3e9SJustin Hibbits 
2000aeed3e9SJustin Hibbits 
2010aeed3e9SJustin Hibbits /**************************************************************************//**
202*852ba100SJustin Hibbits  @Group         FM_mac_init_grp FM MAC Initialization Unit
2030aeed3e9SJustin Hibbits 
2040aeed3e9SJustin Hibbits  @Description   FM MAC Initialization Unit
2050aeed3e9SJustin Hibbits 
2060aeed3e9SJustin Hibbits  @{
2070aeed3e9SJustin Hibbits *//***************************************************************************/
2080aeed3e9SJustin Hibbits 
2090aeed3e9SJustin Hibbits /**************************************************************************//**
2100aeed3e9SJustin Hibbits  @Description   FM MAC config input
2110aeed3e9SJustin Hibbits *//***************************************************************************/
2120aeed3e9SJustin Hibbits typedef struct t_FmMacParams {
2130aeed3e9SJustin Hibbits     uintptr_t                   baseAddr;           /**< Base of memory mapped FM MAC registers */
2140aeed3e9SJustin Hibbits     t_EnetAddr                  addr;               /**< MAC address of device; First octet is sent first */
215*852ba100SJustin Hibbits     uint8_t                     macId;              /**< MAC ID;
216*852ba100SJustin Hibbits                                                          numbering of dTSEC and 1G-mEMAC:
217*852ba100SJustin Hibbits                                                             0 - FM_MAX_NUM_OF_1G_MACS;
218*852ba100SJustin Hibbits                                                          numbering of 10G-MAC (TGEC) and 10G-mEMAC:
219*852ba100SJustin Hibbits                                                             0 - FM_MAX_NUM_OF_10G_MACS */
220*852ba100SJustin Hibbits     e_EnetMode                  enetMode;           /**< Ethernet operation mode (MAC-PHY interface and speed);
221*852ba100SJustin Hibbits                                                          Note that the speed should indicate the maximum rate that
222*852ba100SJustin Hibbits                                                          this MAC should support rather than the actual speed;
223*852ba100SJustin Hibbits                                                          i.e. user should use the FM_MAC_AdjustLink() routine to
224*852ba100SJustin Hibbits                                                          provide accurate speed;
225*852ba100SJustin Hibbits                                                          In case of mEMAC RGMII mode, the MAC is configured to RGMII
226*852ba100SJustin Hibbits                                                          automatic mode, where actual speed/duplex mode information
227*852ba100SJustin Hibbits                                                          is provided by PHY automatically in-band; FM_MAC_AdjustLink()
228*852ba100SJustin Hibbits                                                          function should be used to switch to manual RGMII speed/duplex mode
229*852ba100SJustin Hibbits                                                          configuration if RGMII PHY doesn't support in-band status signaling;
230*852ba100SJustin Hibbits                                                          In addition, in mEMAC, in case where user is using the higher MACs
231*852ba100SJustin Hibbits                                                          (i.e. the MACs that should support 10G), user should pass here
232*852ba100SJustin Hibbits                                                          speed=10000 even if the interface is not allowing that (e.g. SGMII). */
2330aeed3e9SJustin Hibbits     t_Handle                    h_Fm;               /**< A handle to the FM object this port related to */
2340aeed3e9SJustin Hibbits     int                         mdioIrq;            /**< MDIO exceptions interrupt source - not valid for all
2350aeed3e9SJustin Hibbits                                                          MACs; MUST be set to 'NO_IRQ' for MACs that don't have
2360aeed3e9SJustin Hibbits                                                          mdio-irq, or for polling */
2370aeed3e9SJustin Hibbits     t_FmMacExceptionCallback    *f_Event;           /**< MDIO Events Callback Routine         */
2380aeed3e9SJustin Hibbits     t_FmMacExceptionCallback    *f_Exception;       /**< Exception Callback Routine         */
2390aeed3e9SJustin Hibbits     t_Handle                    h_App;              /**< A handle to an application layer object; This handle will
2400aeed3e9SJustin Hibbits                                                          be passed by the driver upon calling the above callbacks */
2410aeed3e9SJustin Hibbits } t_FmMacParams;
2420aeed3e9SJustin Hibbits 
2430aeed3e9SJustin Hibbits 
2440aeed3e9SJustin Hibbits /**************************************************************************//**
2450aeed3e9SJustin Hibbits  @Function      FM_MAC_Config
2460aeed3e9SJustin Hibbits 
2470aeed3e9SJustin Hibbits  @Description   Creates descriptor for the FM MAC module.
2480aeed3e9SJustin Hibbits 
2490aeed3e9SJustin Hibbits                 The routine returns a handle (descriptor) to the FM MAC object.
2500aeed3e9SJustin Hibbits                 This descriptor must be passed as first parameter to all other
2510aeed3e9SJustin Hibbits                 FM MAC function calls.
2520aeed3e9SJustin Hibbits 
2530aeed3e9SJustin Hibbits                 No actual initialization or configuration of FM MAC hardware is
2540aeed3e9SJustin Hibbits                 done by this routine.
2550aeed3e9SJustin Hibbits 
2560aeed3e9SJustin Hibbits  @Param[in]     p_FmMacParam   - Pointer to data structure of parameters
2570aeed3e9SJustin Hibbits 
2580aeed3e9SJustin Hibbits  @Retval        Handle to FM MAC object, or NULL for Failure.
2590aeed3e9SJustin Hibbits *//***************************************************************************/
2600aeed3e9SJustin Hibbits t_Handle FM_MAC_Config(t_FmMacParams *p_FmMacParam);
2610aeed3e9SJustin Hibbits 
2620aeed3e9SJustin Hibbits /**************************************************************************//**
2630aeed3e9SJustin Hibbits  @Function      FM_MAC_Init
2640aeed3e9SJustin Hibbits 
2650aeed3e9SJustin Hibbits  @Description   Initializes the FM MAC module
2660aeed3e9SJustin Hibbits 
2670aeed3e9SJustin Hibbits  @Param[in]     h_FmMac - FM module descriptor
2680aeed3e9SJustin Hibbits 
2690aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
2700aeed3e9SJustin Hibbits *//***************************************************************************/
2710aeed3e9SJustin Hibbits t_Error  FM_MAC_Init(t_Handle h_FmMac);
2720aeed3e9SJustin Hibbits 
2730aeed3e9SJustin Hibbits /**************************************************************************//**
2740aeed3e9SJustin Hibbits  @Function      FM_Free
2750aeed3e9SJustin Hibbits 
2760aeed3e9SJustin Hibbits  @Description   Frees all resources that were assigned to FM MAC module.
2770aeed3e9SJustin Hibbits 
2780aeed3e9SJustin Hibbits                 Calling this routine invalidates the descriptor.
2790aeed3e9SJustin Hibbits 
2800aeed3e9SJustin Hibbits  @Param[in]     h_FmMac - FM module descriptor
2810aeed3e9SJustin Hibbits 
2820aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
2830aeed3e9SJustin Hibbits *//***************************************************************************/
2840aeed3e9SJustin Hibbits t_Error  FM_MAC_Free(t_Handle h_FmMac);
2850aeed3e9SJustin Hibbits 
2860aeed3e9SJustin Hibbits 
2870aeed3e9SJustin Hibbits /**************************************************************************//**
288*852ba100SJustin Hibbits  @Group         FM_mac_advanced_init_grp    FM MAC Advanced Configuration Unit
2890aeed3e9SJustin Hibbits 
2900aeed3e9SJustin Hibbits  @Description   Configuration functions used to change default values.
2910aeed3e9SJustin Hibbits 
2920aeed3e9SJustin Hibbits  @{
2930aeed3e9SJustin Hibbits *//***************************************************************************/
2940aeed3e9SJustin Hibbits 
2950aeed3e9SJustin Hibbits /**************************************************************************//**
2960aeed3e9SJustin Hibbits  @Function      FM_MAC_ConfigResetOnInit
2970aeed3e9SJustin Hibbits 
2980aeed3e9SJustin Hibbits  @Description   Tell the driver whether to reset the FM MAC before initialization or
299*852ba100SJustin Hibbits                 not. It changes the default configuration [DEFAULT_resetOnInit].
3000aeed3e9SJustin Hibbits 
3010aeed3e9SJustin Hibbits  @Param[in]     h_FmMac    A handle to a FM MAC Module.
3020aeed3e9SJustin Hibbits  @Param[in]     enable     When TRUE, FM will be reset before any initialization.
3030aeed3e9SJustin Hibbits 
3040aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
3050aeed3e9SJustin Hibbits 
3060aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
3070aeed3e9SJustin Hibbits *//***************************************************************************/
3080aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigResetOnInit(t_Handle h_FmMac, bool enable);
3090aeed3e9SJustin Hibbits 
3100aeed3e9SJustin Hibbits /**************************************************************************//**
3110aeed3e9SJustin Hibbits  @Function      FM_MAC_ConfigLoopback
3120aeed3e9SJustin Hibbits 
3130aeed3e9SJustin Hibbits  @Description   Enable/Disable internal loopback mode
3140aeed3e9SJustin Hibbits 
3150aeed3e9SJustin Hibbits  @Param[in]     h_FmMac    A handle to a FM MAC Module.
3160aeed3e9SJustin Hibbits  @Param[in]     enable     TRUE to enable or FALSE to disable.
3170aeed3e9SJustin Hibbits 
3180aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
3190aeed3e9SJustin Hibbits 
3200aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
3210aeed3e9SJustin Hibbits *//***************************************************************************/
3220aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigLoopback(t_Handle h_FmMac, bool enable);
3230aeed3e9SJustin Hibbits 
3240aeed3e9SJustin Hibbits /**************************************************************************//**
3250aeed3e9SJustin Hibbits  @Function      FM_MAC_ConfigMaxFrameLength
3260aeed3e9SJustin Hibbits 
327*852ba100SJustin Hibbits  @Description   Setup maximum Rx Frame Length (in 1G MAC, effects also Tx)
3280aeed3e9SJustin Hibbits 
3290aeed3e9SJustin Hibbits  @Param[in]     h_FmMac    A handle to a FM MAC Module.
3300aeed3e9SJustin Hibbits  @Param[in]     newVal     MAX Frame length
3310aeed3e9SJustin Hibbits 
3320aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
3330aeed3e9SJustin Hibbits 
3340aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
3350aeed3e9SJustin Hibbits *//***************************************************************************/
3360aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigMaxFrameLength(t_Handle h_FmMac, uint16_t newVal);
3370aeed3e9SJustin Hibbits 
3380aeed3e9SJustin Hibbits /**************************************************************************//**
3390aeed3e9SJustin Hibbits  @Function      FM_MAC_ConfigWan
3400aeed3e9SJustin Hibbits 
341*852ba100SJustin Hibbits  @Description   ENABLE WAN mode in 10G-MAC
3420aeed3e9SJustin Hibbits 
3430aeed3e9SJustin Hibbits  @Param[in]     h_FmMac    A handle to a FM MAC Module.
3440aeed3e9SJustin Hibbits  @Param[in]     enable     TRUE to enable or FALSE to disable.
3450aeed3e9SJustin Hibbits 
3460aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
3470aeed3e9SJustin Hibbits 
3480aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
3490aeed3e9SJustin Hibbits *//***************************************************************************/
3500aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigWan(t_Handle h_FmMac, bool enable);
3510aeed3e9SJustin Hibbits 
3520aeed3e9SJustin Hibbits /**************************************************************************//**
3530aeed3e9SJustin Hibbits  @Function      FM_MAC_ConfigPadAndCrc
3540aeed3e9SJustin Hibbits 
3550aeed3e9SJustin Hibbits  @Description   Config PAD and CRC mode
3560aeed3e9SJustin Hibbits 
3570aeed3e9SJustin Hibbits  @Param[in]     h_FmMac    A handle to a FM MAC Module.
3580aeed3e9SJustin Hibbits  @Param[in]     enable     TRUE to enable or FALSE to disable.
3590aeed3e9SJustin Hibbits 
3600aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
3610aeed3e9SJustin Hibbits 
3620aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
363*852ba100SJustin Hibbits                 Not supported on 10G-MAC (i.e. CRC & PAD are added automatically
364*852ba100SJustin Hibbits                 by HW); on mEMAC, this routine supports only PAD (i.e. CRC is
365*852ba100SJustin Hibbits                 added automatically by HW).
3660aeed3e9SJustin Hibbits *//***************************************************************************/
3670aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigPadAndCrc(t_Handle h_FmMac, bool enable);
3680aeed3e9SJustin Hibbits 
3690aeed3e9SJustin Hibbits /**************************************************************************//**
3700aeed3e9SJustin Hibbits  @Function      FM_MAC_ConfigHalfDuplex
3710aeed3e9SJustin Hibbits 
3720aeed3e9SJustin Hibbits  @Description   Config Half Duplex Mode
3730aeed3e9SJustin Hibbits 
3740aeed3e9SJustin Hibbits  @Param[in]     h_FmMac    A handle to a FM MAC Module.
3750aeed3e9SJustin Hibbits  @Param[in]     enable     TRUE to enable or FALSE to disable.
3760aeed3e9SJustin Hibbits 
3770aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
3780aeed3e9SJustin Hibbits 
3790aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
3800aeed3e9SJustin Hibbits *//***************************************************************************/
3810aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigHalfDuplex(t_Handle h_FmMac, bool enable);
3820aeed3e9SJustin Hibbits 
3830aeed3e9SJustin Hibbits /**************************************************************************//**
384*852ba100SJustin Hibbits  @Function      FM_MAC_ConfigTbiPhyAddr
385*852ba100SJustin Hibbits 
386*852ba100SJustin Hibbits  @Description   Configures the address of internal TBI PHY.
387*852ba100SJustin Hibbits 
388*852ba100SJustin Hibbits  @Param[in]     h_FmMac    A handle to a FM MAC Module.
389*852ba100SJustin Hibbits  @Param[in]     newVal     TBI PHY address (1-31).
390*852ba100SJustin Hibbits 
391*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
392*852ba100SJustin Hibbits 
393*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
394*852ba100SJustin Hibbits *//***************************************************************************/
395*852ba100SJustin Hibbits t_Error FM_MAC_ConfigTbiPhyAddr(t_Handle h_FmMac, uint8_t newVal);
396*852ba100SJustin Hibbits 
397*852ba100SJustin Hibbits /**************************************************************************//**
3980aeed3e9SJustin Hibbits  @Function      FM_MAC_ConfigLengthCheck
3990aeed3e9SJustin Hibbits 
400*852ba100SJustin Hibbits  @Description   Configure the frame length checking.
4010aeed3e9SJustin Hibbits 
4020aeed3e9SJustin Hibbits  @Param[in]     h_FmMac    A handle to a FM MAC Module.
4030aeed3e9SJustin Hibbits  @Param[in]     enable     TRUE to enable or FALSE to disable.
4040aeed3e9SJustin Hibbits 
4050aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
4060aeed3e9SJustin Hibbits 
4070aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
4080aeed3e9SJustin Hibbits *//***************************************************************************/
4090aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigLengthCheck(t_Handle h_FmMac, bool enable);
4100aeed3e9SJustin Hibbits 
4110aeed3e9SJustin Hibbits /**************************************************************************//**
4120aeed3e9SJustin Hibbits  @Function      FM_MAC_ConfigException
4130aeed3e9SJustin Hibbits 
4140aeed3e9SJustin Hibbits  @Description   Change Exception selection from default
4150aeed3e9SJustin Hibbits 
4160aeed3e9SJustin Hibbits  @Param[in]     h_FmMac         A handle to a FM MAC Module.
4170aeed3e9SJustin Hibbits  @Param[in]     ex              Type of the desired exceptions
4180aeed3e9SJustin Hibbits  @Param[in]     enable          TRUE to enable the specified exception, FALSE to disable it.
4190aeed3e9SJustin Hibbits 
4200aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
4210aeed3e9SJustin Hibbits 
4220aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Config() and before FM_MAC_Init().
4230aeed3e9SJustin Hibbits *//***************************************************************************/
4240aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable);
4250aeed3e9SJustin Hibbits 
4260aeed3e9SJustin Hibbits #ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004
4270aeed3e9SJustin Hibbits t_Error FM_MAC_ConfigSkipFman11Workaround (t_Handle h_FmMac);
4280aeed3e9SJustin Hibbits #endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */
4290aeed3e9SJustin Hibbits /** @} */ /* end of FM_mac_advanced_init_grp group */
4300aeed3e9SJustin Hibbits /** @} */ /* end of FM_mac_init_grp group */
4310aeed3e9SJustin Hibbits 
4320aeed3e9SJustin Hibbits 
4330aeed3e9SJustin Hibbits /**************************************************************************//**
434*852ba100SJustin Hibbits  @Group         FM_mac_runtime_control_grp FM MAC Runtime Control Unit
4350aeed3e9SJustin Hibbits 
4360aeed3e9SJustin Hibbits  @Description   FM MAC Runtime control unit API functions, definitions and enums.
4370aeed3e9SJustin Hibbits 
4380aeed3e9SJustin Hibbits  @{
4390aeed3e9SJustin Hibbits *//***************************************************************************/
4400aeed3e9SJustin Hibbits 
4410aeed3e9SJustin Hibbits /**************************************************************************//**
4420aeed3e9SJustin Hibbits  @Function      FM_MAC_Enable
4430aeed3e9SJustin Hibbits 
4440aeed3e9SJustin Hibbits  @Description   Enable the MAC
4450aeed3e9SJustin Hibbits 
4460aeed3e9SJustin Hibbits  @Param[in]     h_FmMac    A handle to a FM MAC Module.
4470aeed3e9SJustin Hibbits  @Param[in]     mode       Mode of operation (RX, TX, Both)
4480aeed3e9SJustin Hibbits 
4490aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
4500aeed3e9SJustin Hibbits 
4510aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
4520aeed3e9SJustin Hibbits *//***************************************************************************/
4530aeed3e9SJustin Hibbits t_Error FM_MAC_Enable(t_Handle h_FmMac,  e_CommMode mode);
4540aeed3e9SJustin Hibbits 
4550aeed3e9SJustin Hibbits /**************************************************************************//**
4560aeed3e9SJustin Hibbits  @Function      FM_MAC_Disable
4570aeed3e9SJustin Hibbits 
4580aeed3e9SJustin Hibbits  @Description   DISABLE the MAC
4590aeed3e9SJustin Hibbits 
4600aeed3e9SJustin Hibbits  @Param[in]     h_FmMac    A handle to a FM MAC Module.
4610aeed3e9SJustin Hibbits  @Param[in]     mode       Define what part to Disable (RX,  TX or BOTH)
4620aeed3e9SJustin Hibbits 
4630aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
4640aeed3e9SJustin Hibbits 
4650aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
4660aeed3e9SJustin Hibbits *//***************************************************************************/
4670aeed3e9SJustin Hibbits t_Error FM_MAC_Disable(t_Handle h_FmMac, e_CommMode mode);
4680aeed3e9SJustin Hibbits 
4690aeed3e9SJustin Hibbits /**************************************************************************//**
470*852ba100SJustin Hibbits  @Function      FM_MAC_Resume
471*852ba100SJustin Hibbits 
472*852ba100SJustin Hibbits  @Description   Re-init the MAC after suspend
473*852ba100SJustin Hibbits 
474*852ba100SJustin Hibbits  @Param[in]     h_FmMac    A handle to a FM MAC Module.
475*852ba100SJustin Hibbits 
476*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
477*852ba100SJustin Hibbits 
478*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
479*852ba100SJustin Hibbits *//***************************************************************************/
480*852ba100SJustin Hibbits t_Error FM_MAC_Resume(t_Handle h_FmMac);
481*852ba100SJustin Hibbits 
482*852ba100SJustin Hibbits /**************************************************************************//**
4830aeed3e9SJustin Hibbits  @Function      FM_MAC_Enable1588TimeStamp
4840aeed3e9SJustin Hibbits 
4850aeed3e9SJustin Hibbits  @Description   Enables the TSU operation.
4860aeed3e9SJustin Hibbits 
4870aeed3e9SJustin Hibbits  @Param[in]     h_Fm   - Handle to the PTP as returned from the FM_MAC_PtpConfig.
4880aeed3e9SJustin Hibbits 
4890aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
4900aeed3e9SJustin Hibbits 
4910aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
4920aeed3e9SJustin Hibbits *//***************************************************************************/
4930aeed3e9SJustin Hibbits t_Error FM_MAC_Enable1588TimeStamp(t_Handle h_Fm);
4940aeed3e9SJustin Hibbits 
4950aeed3e9SJustin Hibbits /**************************************************************************//**
4960aeed3e9SJustin Hibbits  @Function      FM_MAC_Disable1588TimeStamp
4970aeed3e9SJustin Hibbits 
4980aeed3e9SJustin Hibbits  @Description   Disables the TSU operation.
4990aeed3e9SJustin Hibbits 
5000aeed3e9SJustin Hibbits  @Param[in]     h_Fm   - Handle to the PTP as returned from the FM_MAC_PtpConfig.
5010aeed3e9SJustin Hibbits 
5020aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
5030aeed3e9SJustin Hibbits 
5040aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
5050aeed3e9SJustin Hibbits *//***************************************************************************/
5060aeed3e9SJustin Hibbits t_Error FM_MAC_Disable1588TimeStamp(t_Handle h_Fm);
5070aeed3e9SJustin Hibbits 
5080aeed3e9SJustin Hibbits /**************************************************************************//**
5090aeed3e9SJustin Hibbits  @Function      FM_MAC_SetTxAutoPauseFrames
5100aeed3e9SJustin Hibbits 
511*852ba100SJustin Hibbits  @Description   Enable/Disable transmission of Pause-Frames.
512*852ba100SJustin Hibbits                 The routine changes the default configuration [DEFAULT_TX_PAUSE_TIME].
5130aeed3e9SJustin Hibbits 
514*852ba100SJustin Hibbits  @Param[in]     h_FmMac       -  A handle to a FM MAC Module.
515*852ba100SJustin Hibbits  @Param[in]     pauseTime     -  Pause quanta value used with transmitted pause frames.
5160aeed3e9SJustin Hibbits                                  Each quanta represents a 512 bit-times; Note that '0'
5170aeed3e9SJustin Hibbits                                  as an input here will be used as disabling the
5180aeed3e9SJustin Hibbits                                  transmission of the pause-frames.
5190aeed3e9SJustin Hibbits 
5200aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
5210aeed3e9SJustin Hibbits 
5220aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
5230aeed3e9SJustin Hibbits *//***************************************************************************/
524*852ba100SJustin Hibbits t_Error FM_MAC_SetTxAutoPauseFrames(t_Handle h_FmMac,
525*852ba100SJustin Hibbits                                     uint16_t pauseTime);
526*852ba100SJustin Hibbits 
527*852ba100SJustin Hibbits  /**************************************************************************//**
528*852ba100SJustin Hibbits  @Function      FM_MAC_SetTxPauseFrames
529*852ba100SJustin Hibbits 
530*852ba100SJustin Hibbits  @Description   Enable/Disable transmission of Pause-Frames.
531*852ba100SJustin Hibbits                 The routine changes the default configuration:
532*852ba100SJustin Hibbits                 pause-time - [DEFAULT_TX_PAUSE_TIME]
533*852ba100SJustin Hibbits                 threshold-time - [0]
534*852ba100SJustin Hibbits 
535*852ba100SJustin Hibbits  @Param[in]     h_FmMac       -  A handle to a FM MAC Module.
536*852ba100SJustin Hibbits  @Param[in]     priority      -  the PFC class of service; use 'FM_MAC_NO_PFC'
537*852ba100SJustin Hibbits                                  to indicate legacy pause support (i.e. no PFC).
538*852ba100SJustin Hibbits  @Param[in]     pauseTime     -  Pause quanta value used with transmitted pause frames.
539*852ba100SJustin Hibbits                                  Each quanta represents a 512 bit-times;
540*852ba100SJustin Hibbits                                  Note that '0' as an input here will be used as disabling the
541*852ba100SJustin Hibbits                                  transmission of the pause-frames.
542*852ba100SJustin Hibbits  @Param[in]     threshTime    -  Pause Threshold equanta value used by the MAC to retransmit pause frame.
543*852ba100SJustin Hibbits                                  if the situation causing a pause frame to be sent didn't finish when the timer
544*852ba100SJustin Hibbits                                  reached the threshold quanta, the MAC will retransmit the pause frame.
545*852ba100SJustin Hibbits                                  Each quanta represents a 512 bit-times.
546*852ba100SJustin Hibbits 
547*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
548*852ba100SJustin Hibbits 
549*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
550*852ba100SJustin Hibbits                 In order for PFC to work properly the user must configure
551*852ba100SJustin Hibbits                 TNUM-aging in the tx-port it is recommended that pre-fetch and
552*852ba100SJustin Hibbits                 rate limit in the tx port should be disabled;
553*852ba100SJustin Hibbits                 PFC is supported only on new mEMAC; i.e. in MACs that don't have
554*852ba100SJustin Hibbits                 PFC support (10G-MAC and dTSEC), user should use 'FM_MAC_NO_PFC'
555*852ba100SJustin Hibbits                 in the 'priority' field.
556*852ba100SJustin Hibbits *//***************************************************************************/
557*852ba100SJustin Hibbits t_Error FM_MAC_SetTxPauseFrames(t_Handle h_FmMac,
558*852ba100SJustin Hibbits                                 uint8_t  priority,
559*852ba100SJustin Hibbits                                 uint16_t pauseTime,
560*852ba100SJustin Hibbits                                 uint16_t threshTime);
5610aeed3e9SJustin Hibbits 
5620aeed3e9SJustin Hibbits /**************************************************************************//**
5630aeed3e9SJustin Hibbits  @Function      FM_MAC_SetRxIgnorePauseFrames
5640aeed3e9SJustin Hibbits 
5650aeed3e9SJustin Hibbits  @Description   Enable/Disable ignoring of Pause-Frames.
5660aeed3e9SJustin Hibbits 
567*852ba100SJustin Hibbits  @Param[in]     h_FmMac    - A handle to a FM MAC Module.
568*852ba100SJustin Hibbits  @Param[in]     en         - boolean indicates whether to ignore the incoming pause
5690aeed3e9SJustin Hibbits                              frames or not.
5700aeed3e9SJustin Hibbits 
5710aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
5720aeed3e9SJustin Hibbits 
5730aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
5740aeed3e9SJustin Hibbits *//***************************************************************************/
5750aeed3e9SJustin Hibbits t_Error FM_MAC_SetRxIgnorePauseFrames(t_Handle h_FmMac, bool en);
5760aeed3e9SJustin Hibbits 
5770aeed3e9SJustin Hibbits /**************************************************************************//**
578*852ba100SJustin Hibbits  @Function      FM_MAC_SetWakeOnLan
579*852ba100SJustin Hibbits 
580*852ba100SJustin Hibbits  @Description   Enable/Disable Wake On Lan support
581*852ba100SJustin Hibbits 
582*852ba100SJustin Hibbits  @Param[in]     h_FmMac    - A handle to a FM MAC Module.
583*852ba100SJustin Hibbits  @Param[in]     en         - boolean indicates whether to enable Wake On Lan
584*852ba100SJustin Hibbits                              support or not.
585*852ba100SJustin Hibbits 
586*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
587*852ba100SJustin Hibbits 
588*852ba100SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
589*852ba100SJustin Hibbits *//***************************************************************************/
590*852ba100SJustin Hibbits t_Error FM_MAC_SetWakeOnLan(t_Handle h_FmMac, bool en);
591*852ba100SJustin Hibbits 
592*852ba100SJustin Hibbits /**************************************************************************//**
5930aeed3e9SJustin Hibbits  @Function      FM_MAC_ResetCounters
5940aeed3e9SJustin Hibbits 
5950aeed3e9SJustin Hibbits  @Description   reset all statistics counters
5960aeed3e9SJustin Hibbits 
597*852ba100SJustin Hibbits  @Param[in]     h_FmMac    - A handle to a FM MAC Module.
5980aeed3e9SJustin Hibbits 
5990aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
6000aeed3e9SJustin Hibbits 
6010aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
6020aeed3e9SJustin Hibbits *//***************************************************************************/
6030aeed3e9SJustin Hibbits t_Error FM_MAC_ResetCounters(t_Handle h_FmMac);
6040aeed3e9SJustin Hibbits 
6050aeed3e9SJustin Hibbits /**************************************************************************//**
6060aeed3e9SJustin Hibbits  @Function      FM_MAC_SetException
6070aeed3e9SJustin Hibbits 
6080aeed3e9SJustin Hibbits  @Description   Enable/Disable a specific Exception
6090aeed3e9SJustin Hibbits 
610*852ba100SJustin Hibbits  @Param[in]     h_FmMac        - A handle to a FM MAC Module.
611*852ba100SJustin Hibbits  @Param[in]     ex             - Type of the desired exceptions
612*852ba100SJustin Hibbits  @Param[in]     enable         - TRUE to enable the specified exception, FALSE to disable it.
6130aeed3e9SJustin Hibbits 
6140aeed3e9SJustin Hibbits 
6150aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
6160aeed3e9SJustin Hibbits 
6170aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
6180aeed3e9SJustin Hibbits *//***************************************************************************/
6190aeed3e9SJustin Hibbits t_Error FM_MAC_SetException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable);
6200aeed3e9SJustin Hibbits 
6210aeed3e9SJustin Hibbits /**************************************************************************//**
6220aeed3e9SJustin Hibbits  @Function      FM_MAC_SetStatistics
6230aeed3e9SJustin Hibbits 
6240aeed3e9SJustin Hibbits  @Description   Define Statistics level.
6250aeed3e9SJustin Hibbits                 Where applicable, the routine also enables the MIB counters
6260aeed3e9SJustin Hibbits                 overflow interrupt in order to keep counters accurate
6270aeed3e9SJustin Hibbits                 and account for overflows.
628*852ba100SJustin Hibbits                 This routine is relevant only for dTSEC.
6290aeed3e9SJustin Hibbits 
630*852ba100SJustin Hibbits  @Param[in]     h_FmMac         - A handle to a FM MAC Module.
631*852ba100SJustin Hibbits  @Param[in]     statisticsLevel - Full statistics level provides all standard counters but may
6320aeed3e9SJustin Hibbits                                   reduce performance. Partial statistics provides only special
6330aeed3e9SJustin Hibbits                                   event counters (errors etc.). If selected, regular counters (such as
6340aeed3e9SJustin Hibbits                                   byte/packet) will be invalid and will return -1.
6350aeed3e9SJustin Hibbits 
6360aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
6370aeed3e9SJustin Hibbits 
6380aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
6390aeed3e9SJustin Hibbits *//***************************************************************************/
6400aeed3e9SJustin Hibbits t_Error FM_MAC_SetStatistics(t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel);
6410aeed3e9SJustin Hibbits 
6420aeed3e9SJustin Hibbits /**************************************************************************//**
6430aeed3e9SJustin Hibbits  @Function      FM_MAC_GetStatistics
6440aeed3e9SJustin Hibbits 
6450aeed3e9SJustin Hibbits  @Description   get all statistics counters
6460aeed3e9SJustin Hibbits 
647*852ba100SJustin Hibbits  @Param[in]     h_FmMac       -  A handle to a FM MAC Module.
648*852ba100SJustin Hibbits  @Param[in]     p_Statistics  -  Structure with statistics
6490aeed3e9SJustin Hibbits 
6500aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
6510aeed3e9SJustin Hibbits 
6520aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_Init().
6530aeed3e9SJustin Hibbits *//***************************************************************************/
6540aeed3e9SJustin Hibbits t_Error FM_MAC_GetStatistics(t_Handle h_FmMac, t_FmMacStatistics *p_Statistics);
6550aeed3e9SJustin Hibbits 
6560aeed3e9SJustin Hibbits /**************************************************************************//**
6570aeed3e9SJustin Hibbits  @Function      FM_MAC_ModifyMacAddr
6580aeed3e9SJustin Hibbits 
6590aeed3e9SJustin Hibbits  @Description   Replace the main MAC Address
6600aeed3e9SJustin Hibbits 
6610aeed3e9SJustin Hibbits  @Param[in]     h_FmMac     -   A handle to a FM Module.
6620aeed3e9SJustin Hibbits  @Param[in]     p_EnetAddr  -   Ethernet Mac address
6630aeed3e9SJustin Hibbits 
6640aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
6650aeed3e9SJustin Hibbits 
6660aeed3e9SJustin Hibbits  @Cautions      Allowed only after FM_MAC_Init().
6670aeed3e9SJustin Hibbits *//***************************************************************************/
6680aeed3e9SJustin Hibbits t_Error FM_MAC_ModifyMacAddr(t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
6690aeed3e9SJustin Hibbits 
6700aeed3e9SJustin Hibbits /**************************************************************************//**
6710aeed3e9SJustin Hibbits  @Function      FM_MAC_AddHashMacAddr
6720aeed3e9SJustin Hibbits 
6730aeed3e9SJustin Hibbits  @Description   Add an Address to the hash table. This is for filter purpose only.
6740aeed3e9SJustin Hibbits 
6750aeed3e9SJustin Hibbits  @Param[in]     h_FmMac     -   A handle to a FM Module.
6760aeed3e9SJustin Hibbits  @Param[in]     p_EnetAddr  -   Ethernet Mac address
6770aeed3e9SJustin Hibbits 
6780aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
6790aeed3e9SJustin Hibbits 
6800aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init(). It is a filter only address.
6810aeed3e9SJustin Hibbits  @Cautions      Some address need to be filterd out in upper FM blocks.
6820aeed3e9SJustin Hibbits *//***************************************************************************/
6830aeed3e9SJustin Hibbits t_Error FM_MAC_AddHashMacAddr(t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
6840aeed3e9SJustin Hibbits 
6850aeed3e9SJustin Hibbits /**************************************************************************//**
6860aeed3e9SJustin Hibbits  @Function      FM_MAC_RemoveHashMacAddr
6870aeed3e9SJustin Hibbits 
6880aeed3e9SJustin Hibbits  @Description   Delete an Address to the hash table. This is for filter purpose only.
6890aeed3e9SJustin Hibbits 
6900aeed3e9SJustin Hibbits  @Param[in]     h_FmMac     -   A handle to a FM Module.
6910aeed3e9SJustin Hibbits  @Param[in]     p_EnetAddr  -   Ethernet Mac address
6920aeed3e9SJustin Hibbits 
6930aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
6940aeed3e9SJustin Hibbits 
6950aeed3e9SJustin Hibbits  @Cautions      Allowed only following FM_MAC_Init().
6960aeed3e9SJustin Hibbits *//***************************************************************************/
6970aeed3e9SJustin Hibbits t_Error FM_MAC_RemoveHashMacAddr(t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
6980aeed3e9SJustin Hibbits 
6990aeed3e9SJustin Hibbits /**************************************************************************//**
7000aeed3e9SJustin Hibbits  @Function      FM_MAC_AddExactMatchMacAddr
7010aeed3e9SJustin Hibbits 
7020aeed3e9SJustin Hibbits  @Description   Add a unicast or multicast mac address for exact-match filtering
7030aeed3e9SJustin Hibbits                 (8 on dTSEC, 2 for 10G-MAC)
7040aeed3e9SJustin Hibbits 
7050aeed3e9SJustin Hibbits  @Param[in]     h_FmMac     -   A handle to a FM Module.
7060aeed3e9SJustin Hibbits  @Param[in]     p_EnetAddr  -   MAC Address to ADD
7070aeed3e9SJustin Hibbits 
7080aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
7090aeed3e9SJustin Hibbits 
7100aeed3e9SJustin Hibbits  @Cautions      Allowed only after FM_MAC_Init().
7110aeed3e9SJustin Hibbits *//***************************************************************************/
7120aeed3e9SJustin Hibbits t_Error FM_MAC_AddExactMatchMacAddr(t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
7130aeed3e9SJustin Hibbits 
7140aeed3e9SJustin Hibbits /**************************************************************************//**
7150aeed3e9SJustin Hibbits  @Function      FM_MAC_RemovelExactMatchMacAddr
7160aeed3e9SJustin Hibbits 
7170aeed3e9SJustin Hibbits  @Description   Remove a uni cast or multi cast mac address.
7180aeed3e9SJustin Hibbits 
7190aeed3e9SJustin Hibbits  @Param[in]     h_FmMac     -   A handle to a FM Module.
7200aeed3e9SJustin Hibbits  @Param[in]     p_EnetAddr  -   MAC Address to remove
7210aeed3e9SJustin Hibbits 
7220aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise..
7230aeed3e9SJustin Hibbits 
7240aeed3e9SJustin Hibbits  @Cautions      Allowed only after FM_MAC_Init().
7250aeed3e9SJustin Hibbits *//***************************************************************************/
7260aeed3e9SJustin Hibbits t_Error FM_MAC_RemovelExactMatchMacAddr(t_Handle h_FmMac, t_EnetAddr *p_EnetAddr);
7270aeed3e9SJustin Hibbits 
7280aeed3e9SJustin Hibbits /**************************************************************************//**
7290aeed3e9SJustin Hibbits  @Function      FM_MAC_SetPromiscuous
7300aeed3e9SJustin Hibbits 
7310aeed3e9SJustin Hibbits  @Description   Enable/Disable MAC Promiscuous mode for ALL mac addresses.
7320aeed3e9SJustin Hibbits 
7330aeed3e9SJustin Hibbits  @Param[in]     h_FmMac    - A handle to a FM MAC Module.
7340aeed3e9SJustin Hibbits  @Param[in]     enable     - TRUE to enable or FALSE to disable.
7350aeed3e9SJustin Hibbits 
7360aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
7370aeed3e9SJustin Hibbits 
7380aeed3e9SJustin Hibbits  @Cautions      Allowed only after FM_MAC_Init().
7390aeed3e9SJustin Hibbits *//***************************************************************************/
7400aeed3e9SJustin Hibbits t_Error FM_MAC_SetPromiscuous(t_Handle h_FmMac, bool enable);
7410aeed3e9SJustin Hibbits 
7420aeed3e9SJustin Hibbits /**************************************************************************//**
7430aeed3e9SJustin Hibbits  @Function      FM_MAC_AdjustLink
7440aeed3e9SJustin Hibbits 
7450aeed3e9SJustin Hibbits  @Description   Adjusts the Ethernet link with new speed/duplex setup.
746*852ba100SJustin Hibbits                 This routine is relevant for dTSEC and mEMAC.
747*852ba100SJustin Hibbits                 In case of mEMAC, this routine is also used for manual
748*852ba100SJustin Hibbits                 re-configuration of RGMII speed and duplex mode for
749*852ba100SJustin Hibbits                 RGMII PHYs not supporting in-band status information
750*852ba100SJustin Hibbits                 to MAC.
7510aeed3e9SJustin Hibbits 
7520aeed3e9SJustin Hibbits  @Param[in]     h_FmMac     - A handle to a FM Module.
7530aeed3e9SJustin Hibbits  @Param[in]     speed       - Ethernet speed.
754*852ba100SJustin Hibbits  @Param[in]     fullDuplex  - TRUE for full-duplex mode;
755*852ba100SJustin Hibbits                               FALSE for half-duplex mode.
7560aeed3e9SJustin Hibbits 
7570aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
7580aeed3e9SJustin Hibbits *//***************************************************************************/
7590aeed3e9SJustin Hibbits t_Error FM_MAC_AdjustLink(t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex);
7600aeed3e9SJustin Hibbits 
7610aeed3e9SJustin Hibbits /**************************************************************************//**
762*852ba100SJustin Hibbits  @Function      FM_MAC_RestartAutoneg
763*852ba100SJustin Hibbits 
764*852ba100SJustin Hibbits  @Description   Restarts the auto-negotiation process.
765*852ba100SJustin Hibbits                 When auto-negotiation process is invoked under traffic the
766*852ba100SJustin Hibbits                 auto-negotiation process between the internal SGMII PHY and the
767*852ba100SJustin Hibbits                 external PHY does not always complete successfully. Calling this
768*852ba100SJustin Hibbits                 function will restart the auto-negotiation process that will end
769*852ba100SJustin Hibbits                 successfully. It is recommended to call this function after issuing
770*852ba100SJustin Hibbits                 auto-negotiation restart command to the Eth Phy.
771*852ba100SJustin Hibbits                 This routine is relevant only for dTSEC.
772*852ba100SJustin Hibbits 
773*852ba100SJustin Hibbits  @Param[in]     h_FmMac     - A handle to a FM Module.
774*852ba100SJustin Hibbits 
775*852ba100SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
776*852ba100SJustin Hibbits *//***************************************************************************/
777*852ba100SJustin Hibbits t_Error FM_MAC_RestartAutoneg(t_Handle h_FmMac);
778*852ba100SJustin Hibbits 
779*852ba100SJustin Hibbits /**************************************************************************//**
7800aeed3e9SJustin Hibbits  @Function      FM_MAC_GetId
7810aeed3e9SJustin Hibbits 
7820aeed3e9SJustin Hibbits  @Description   Return the MAC ID
7830aeed3e9SJustin Hibbits 
7840aeed3e9SJustin Hibbits  @Param[in]     h_FmMac     -   A handle to a FM Module.
7850aeed3e9SJustin Hibbits  @Param[out]    p_MacId     -   MAC ID of device
7860aeed3e9SJustin Hibbits 
7870aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
7880aeed3e9SJustin Hibbits 
7890aeed3e9SJustin Hibbits  @Cautions      Allowed only after FM_MAC_Init().
7900aeed3e9SJustin Hibbits *//***************************************************************************/
7910aeed3e9SJustin Hibbits t_Error FM_MAC_GetId(t_Handle h_FmMac, uint32_t *p_MacId);
7920aeed3e9SJustin Hibbits 
7930aeed3e9SJustin Hibbits /**************************************************************************//**
7940aeed3e9SJustin Hibbits  @Function      FM_MAC_GetVesrion
7950aeed3e9SJustin Hibbits 
7960aeed3e9SJustin Hibbits  @Description   Return Mac HW chip version
7970aeed3e9SJustin Hibbits 
7980aeed3e9SJustin Hibbits  @Param[in]     h_FmMac      -   A handle to a FM Module.
7990aeed3e9SJustin Hibbits  @Param[out]    p_MacVresion -   Mac version as defined by the chip
8000aeed3e9SJustin Hibbits 
8010aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
8020aeed3e9SJustin Hibbits 
8030aeed3e9SJustin Hibbits  @Cautions      Allowed only after FM_MAC_Init().
8040aeed3e9SJustin Hibbits *//***************************************************************************/
8050aeed3e9SJustin Hibbits t_Error FM_MAC_GetVesrion(t_Handle h_FmMac, uint32_t *p_MacVresion);
8060aeed3e9SJustin Hibbits 
8070aeed3e9SJustin Hibbits /**************************************************************************//**
8080aeed3e9SJustin Hibbits  @Function      FM_MAC_MII_WritePhyReg
8090aeed3e9SJustin Hibbits 
8100aeed3e9SJustin Hibbits  @Description   Write data into Phy Register
8110aeed3e9SJustin Hibbits 
8120aeed3e9SJustin Hibbits  @Param[in]     h_FmMac     -   A handle to a FM Module.
8130aeed3e9SJustin Hibbits  @Param[in]     phyAddr     -   Phy Address on the MII bus
8140aeed3e9SJustin Hibbits  @Param[in]     reg         -   Register Number.
8150aeed3e9SJustin Hibbits  @Param[in]     data        -   Data to write.
8160aeed3e9SJustin Hibbits 
8170aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
8180aeed3e9SJustin Hibbits 
8190aeed3e9SJustin Hibbits  @Cautions      Allowed only after FM_MAC_Init().
8200aeed3e9SJustin Hibbits *//***************************************************************************/
8210aeed3e9SJustin Hibbits t_Error FM_MAC_MII_WritePhyReg(t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data);
8220aeed3e9SJustin Hibbits 
8230aeed3e9SJustin Hibbits /**************************************************************************//**
8240aeed3e9SJustin Hibbits  @Function      FM_MAC_MII_ReadPhyReg
8250aeed3e9SJustin Hibbits 
8260aeed3e9SJustin Hibbits  @Description   Read data from Phy Register
8270aeed3e9SJustin Hibbits 
8280aeed3e9SJustin Hibbits  @Param[in]     h_FmMac     -   A handle to a FM Module.
8290aeed3e9SJustin Hibbits  @Param[in]     phyAddr     -   Phy Address on the MII bus
8300aeed3e9SJustin Hibbits  @Param[in]     reg         -   Register Number.
8310aeed3e9SJustin Hibbits  @Param[out]    p_Data      -   Data from PHY.
8320aeed3e9SJustin Hibbits 
8330aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
8340aeed3e9SJustin Hibbits 
8350aeed3e9SJustin Hibbits  @Cautions      Allowed only after FM_MAC_Init().
8360aeed3e9SJustin Hibbits *//***************************************************************************/
8370aeed3e9SJustin Hibbits t_Error FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac,  uint8_t phyAddr, uint8_t reg, uint16_t *p_Data);
8380aeed3e9SJustin Hibbits 
8390aeed3e9SJustin Hibbits #if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0))
8400aeed3e9SJustin Hibbits /**************************************************************************//**
8410aeed3e9SJustin Hibbits  @Function      FM_MAC_DumpRegs
8420aeed3e9SJustin Hibbits 
8430aeed3e9SJustin Hibbits  @Description   Dump internal registers
8440aeed3e9SJustin Hibbits 
8450aeed3e9SJustin Hibbits  @Param[in]     h_FmMac     -   A handle to a FM Module.
8460aeed3e9SJustin Hibbits 
8470aeed3e9SJustin Hibbits  @Return        E_OK on success; Error code otherwise.
8480aeed3e9SJustin Hibbits 
8490aeed3e9SJustin Hibbits  @Cautions      Allowed only after FM_MAC_Init().
8500aeed3e9SJustin Hibbits *//***************************************************************************/
8510aeed3e9SJustin Hibbits t_Error FM_MAC_DumpRegs(t_Handle h_FmMac);
8520aeed3e9SJustin Hibbits #endif /* (defined(DEBUG_ERRORS) && ... */
8530aeed3e9SJustin Hibbits 
8540aeed3e9SJustin Hibbits /** @} */ /* end of FM_mac_runtime_control_grp group */
8550aeed3e9SJustin Hibbits /** @} */ /* end of FM_mac_grp group */
8560aeed3e9SJustin Hibbits /** @} */ /* end of FM_grp group */
8570aeed3e9SJustin Hibbits 
8580aeed3e9SJustin Hibbits 
8590aeed3e9SJustin Hibbits #endif /* __FM_MAC_EXT_H */
860