1296177Sjhibbits/* Copyright (c) 2008-2011 Freescale Semiconductor, Inc.
2296177Sjhibbits * All rights reserved.
3296177Sjhibbits *
4296177Sjhibbits * Redistribution and use in source and binary forms, with or without
5296177Sjhibbits * modification, are permitted provided that the following conditions are met:
6296177Sjhibbits *     * Redistributions of source code must retain the above copyright
7296177Sjhibbits *       notice, this list of conditions and the following disclaimer.
8296177Sjhibbits *     * Redistributions in binary form must reproduce the above copyright
9296177Sjhibbits *       notice, this list of conditions and the following disclaimer in the
10296177Sjhibbits *       documentation and/or other materials provided with the distribution.
11296177Sjhibbits *     * Neither the name of Freescale Semiconductor nor the
12296177Sjhibbits *       names of its contributors may be used to endorse or promote products
13296177Sjhibbits *       derived from this software without specific prior written permission.
14296177Sjhibbits *
15296177Sjhibbits *
16296177Sjhibbits * ALTERNATIVELY, this software may be distributed under the terms of the
17296177Sjhibbits * GNU General Public License ("GPL") as published by the Free Software
18296177Sjhibbits * Foundation, either version 2 of that License or (at your option) any
19296177Sjhibbits * later version.
20296177Sjhibbits *
21296177Sjhibbits * THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
22296177Sjhibbits * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23296177Sjhibbits * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24296177Sjhibbits * DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
25296177Sjhibbits * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26296177Sjhibbits * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27296177Sjhibbits * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
28296177Sjhibbits * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29296177Sjhibbits * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30296177Sjhibbits * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31296177Sjhibbits */
32296177Sjhibbits
33296177Sjhibbits/******************************************************************************
34296177Sjhibbits @File          fm_mac.c
35296177Sjhibbits
36296177Sjhibbits @Description   FM MAC ...
37296177Sjhibbits*//***************************************************************************/
38296177Sjhibbits#include "std_ext.h"
39296177Sjhibbits#include "string_ext.h"
40296177Sjhibbits#include "sprint_ext.h"
41296177Sjhibbits#include "error_ext.h"
42296177Sjhibbits#include "fm_ext.h"
43296177Sjhibbits
44296177Sjhibbits#include "fm_common.h"
45296177Sjhibbits#include "fm_mac.h"
46296177Sjhibbits
47296177Sjhibbits
48296177Sjhibbits/* ........................................................................... */
49296177Sjhibbits
50296177Sjhibbitst_Handle FM_MAC_Config (t_FmMacParams *p_FmMacParam)
51296177Sjhibbits{
52296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver;
53296177Sjhibbits
54296177Sjhibbits    SANITY_CHECK_RETURN_VALUE(p_FmMacParam, E_INVALID_HANDLE, NULL);
55296177Sjhibbits
56296177Sjhibbits    if(ENET_SPEED_FROM_MODE(p_FmMacParam->enetMode) < e_ENET_SPEED_10000)
57296177Sjhibbits        p_FmMacControllerDriver = (t_FmMacControllerDriver *)DTSEC_Config(p_FmMacParam);
58296177Sjhibbits    else
59296177Sjhibbits       p_FmMacControllerDriver = (t_FmMacControllerDriver *)TGEC_Config(p_FmMacParam);
60296177Sjhibbits
61296177Sjhibbits    if (!p_FmMacControllerDriver)
62296177Sjhibbits        return NULL;
63296177Sjhibbits
64296177Sjhibbits    p_FmMacControllerDriver->h_Fm           = p_FmMacParam->h_Fm;
65296177Sjhibbits    p_FmMacControllerDriver->enetMode       = p_FmMacParam->enetMode;
66296177Sjhibbits    p_FmMacControllerDriver->macId          = p_FmMacParam->macId;
67296177Sjhibbits    p_FmMacControllerDriver->resetOnInit    = DEFAULT_resetOnInit;
68296177Sjhibbits
69296177Sjhibbits    return (t_Handle)p_FmMacControllerDriver;
70296177Sjhibbits}
71296177Sjhibbits
72296177Sjhibbits/* ........................................................................... */
73296177Sjhibbits
74296177Sjhibbitst_Error FM_MAC_Init (t_Handle h_FmMac)
75296177Sjhibbits{
76296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
77296177Sjhibbits
78296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
79296177Sjhibbits
80296177Sjhibbits    if (p_FmMacControllerDriver->resetOnInit &&
81296177Sjhibbits        (FmResetMac(p_FmMacControllerDriver->h_Fm,
82296177Sjhibbits                    ((ENET_INTERFACE_FROM_MODE(p_FmMacControllerDriver->enetMode) == e_ENET_IF_XGMII) ? e_FM_MAC_10G : e_FM_MAC_1G),
83296177Sjhibbits                     p_FmMacControllerDriver->macId) != E_OK))
84296177Sjhibbits        RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't reset MAC!"));
85296177Sjhibbits
86296177Sjhibbits    if ((p_FmMacControllerDriver->clkFreq = FmGetClockFreq(p_FmMacControllerDriver->h_Fm)) == 0)
87296177Sjhibbits        RETURN_ERROR(MAJOR, E_INVALID_STATE, ("Can't get clock for MAC!"));
88296177Sjhibbits
89296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_Init)
90296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_Init(h_FmMac);
91296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
92296177Sjhibbits}
93296177Sjhibbits
94296177Sjhibbits/* ........................................................................... */
95296177Sjhibbits
96296177Sjhibbitst_Error FM_MAC_Free (t_Handle h_FmMac)
97296177Sjhibbits{
98296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
99296177Sjhibbits
100296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
101296177Sjhibbits
102296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_Free)
103296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_Free(h_FmMac);
104296177Sjhibbits
105296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
106296177Sjhibbits}
107296177Sjhibbits
108296177Sjhibbits/* ........................................................................... */
109296177Sjhibbits
110296177Sjhibbitst_Error FM_MAC_ConfigResetOnInit (t_Handle h_FmMac, bool enable)
111296177Sjhibbits{
112296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
113296177Sjhibbits
114296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
115296177Sjhibbits
116296177Sjhibbits    p_FmMacControllerDriver->resetOnInit = enable;
117296177Sjhibbits
118296177Sjhibbits    return E_OK;
119296177Sjhibbits}
120296177Sjhibbits
121296177Sjhibbits/* ........................................................................... */
122296177Sjhibbits
123296177Sjhibbitst_Error FM_MAC_ConfigLoopback (t_Handle h_FmMac, bool newVal)
124296177Sjhibbits{
125296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
126296177Sjhibbits
127296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
128296177Sjhibbits
129296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback)
130296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_ConfigLoopback(h_FmMac, newVal);
131296177Sjhibbits
132296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
133296177Sjhibbits}
134296177Sjhibbits
135296177Sjhibbits/* ........................................................................... */
136296177Sjhibbits
137296177Sjhibbitst_Error FM_MAC_ConfigMaxFrameLength (t_Handle h_FmMac, uint16_t newVal)
138296177Sjhibbits{
139296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
140296177Sjhibbits
141296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
142296177Sjhibbits
143296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength)
144296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_ConfigMaxFrameLength(h_FmMac, newVal);
145296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
146296177Sjhibbits}
147296177Sjhibbits
148296177Sjhibbits/* ........................................................................... */
149296177Sjhibbits
150296177Sjhibbitst_Error FM_MAC_ConfigWan (t_Handle h_FmMac, bool flag)
151296177Sjhibbits{
152296177Sjhibbits   t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
153296177Sjhibbits
154296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
155296177Sjhibbits
156296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_ConfigWan)
157296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_ConfigWan(h_FmMac, flag);
158296177Sjhibbits
159296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
160296177Sjhibbits}
161296177Sjhibbits
162296177Sjhibbits/* ........................................................................... */
163296177Sjhibbits
164296177Sjhibbitst_Error FM_MAC_ConfigPadAndCrc (t_Handle h_FmMac, bool newVal)
165296177Sjhibbits{
166296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
167296177Sjhibbits
168296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
169296177Sjhibbits
170296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc)
171296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_ConfigPadAndCrc(h_FmMac, newVal);
172296177Sjhibbits
173296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
174296177Sjhibbits}
175296177Sjhibbits
176296177Sjhibbits/* ........................................................................... */
177296177Sjhibbits
178296177Sjhibbitst_Error FM_MAC_ConfigHalfDuplex (t_Handle h_FmMac, bool newVal)
179296177Sjhibbits{
180296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
181296177Sjhibbits
182296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
183296177Sjhibbits
184296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex)
185296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_ConfigHalfDuplex(h_FmMac,newVal);
186296177Sjhibbits
187296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
188296177Sjhibbits}
189296177Sjhibbits
190296177Sjhibbits/* ........................................................................... */
191296177Sjhibbits
192296177Sjhibbitst_Error FM_MAC_ConfigLengthCheck (t_Handle h_FmMac, bool newVal)
193296177Sjhibbits{
194296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
195296177Sjhibbits
196296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
197296177Sjhibbits
198296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck)
199296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_ConfigLengthCheck(h_FmMac,newVal);
200296177Sjhibbits
201296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
202296177Sjhibbits}
203296177Sjhibbits
204296177Sjhibbits/* ........................................................................... */
205296177Sjhibbits
206296177Sjhibbitst_Error FM_MAC_ConfigException (t_Handle h_FmMac, e_FmMacExceptions ex, bool enable)
207296177Sjhibbits{
208296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
209296177Sjhibbits
210296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
211296177Sjhibbits
212296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_ConfigException)
213296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_ConfigException(h_FmMac, ex, enable);
214296177Sjhibbits
215296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
216296177Sjhibbits}
217296177Sjhibbits
218296177Sjhibbits#ifdef FM_TX_ECC_FRMS_ERRATA_10GMAC_A004
219296177Sjhibbits/* ........................................................................... */
220296177Sjhibbits
221296177Sjhibbitst_Error FM_MAC_ConfigSkipFman11Workaround (t_Handle h_FmMac)
222296177Sjhibbits{
223296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
224296177Sjhibbits
225296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
226296177Sjhibbits
227296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround)
228296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_ConfigSkipFman11Workaround(h_FmMac);
229296177Sjhibbits
230296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
231296177Sjhibbits}
232296177Sjhibbits#endif /* FM_TX_ECC_FRMS_ERRATA_10GMAC_A004 */
233296177Sjhibbits
234296177Sjhibbits
235296177Sjhibbits/*****************************************************************************/
236296177Sjhibbits/* Run Time Control                                                          */
237296177Sjhibbits/*****************************************************************************/
238296177Sjhibbits
239296177Sjhibbits/* ........................................................................... */
240296177Sjhibbits
241296177Sjhibbitst_Error FM_MAC_Enable  (t_Handle h_FmMac,  e_CommMode mode)
242296177Sjhibbits{
243296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
244296177Sjhibbits
245296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
246296177Sjhibbits
247296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_Enable)
248296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_Enable(h_FmMac, mode);
249296177Sjhibbits
250296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
251296177Sjhibbits}
252296177Sjhibbits
253296177Sjhibbits/* ........................................................................... */
254296177Sjhibbits
255296177Sjhibbitst_Error FM_MAC_Disable (t_Handle h_FmMac, e_CommMode mode)
256296177Sjhibbits{
257296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
258296177Sjhibbits
259296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
260296177Sjhibbits
261296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_Disable)
262296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_Disable(h_FmMac, mode);
263296177Sjhibbits
264296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
265296177Sjhibbits}
266296177Sjhibbits
267296177Sjhibbits/* ........................................................................... */
268296177Sjhibbits
269296177Sjhibbitst_Error FM_MAC_Enable1588TimeStamp (t_Handle h_FmMac)
270296177Sjhibbits{
271296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
272296177Sjhibbits
273296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
274296177Sjhibbits
275296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp)
276296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_Enable1588TimeStamp(h_FmMac);
277296177Sjhibbits
278296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
279296177Sjhibbits}
280296177Sjhibbits
281296177Sjhibbits/* ........................................................................... */
282296177Sjhibbits
283296177Sjhibbitst_Error FM_MAC_Disable1588TimeStamp (t_Handle h_FmMac)
284296177Sjhibbits{
285296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
286296177Sjhibbits
287296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
288296177Sjhibbits
289296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp)
290296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_Disable1588TimeStamp(h_FmMac);
291296177Sjhibbits
292296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
293296177Sjhibbits}
294296177Sjhibbits
295296177Sjhibbits/* ........................................................................... */
296296177Sjhibbits
297296177Sjhibbitst_Error FM_MAC_SetTxAutoPauseFrames (t_Handle h_FmMac, uint16_t pauseTime)
298296177Sjhibbits{
299296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
300296177Sjhibbits
301296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
302296177Sjhibbits
303296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames)
304296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_SetTxAutoPauseFrames(h_FmMac, pauseTime);
305296177Sjhibbits
306296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
307296177Sjhibbits}
308296177Sjhibbits
309296177Sjhibbits/* ........................................................................... */
310296177Sjhibbits
311296177Sjhibbitst_Error FM_MAC_SetRxIgnorePauseFrames (t_Handle h_FmMac, bool en)
312296177Sjhibbits{
313296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
314296177Sjhibbits
315296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
316296177Sjhibbits
317296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames)
318296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_SetRxIgnorePauseFrames(h_FmMac, en);
319296177Sjhibbits
320296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
321296177Sjhibbits}
322296177Sjhibbits
323296177Sjhibbits/* ........................................................................... */
324296177Sjhibbits
325296177Sjhibbitst_Error FM_MAC_ResetCounters (t_Handle h_FmMac)
326296177Sjhibbits{
327296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
328296177Sjhibbits
329296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
330296177Sjhibbits
331296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_ResetCounters)
332296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_ResetCounters(h_FmMac);
333296177Sjhibbits
334296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
335296177Sjhibbits}
336296177Sjhibbits
337296177Sjhibbits/* ........................................................................... */
338296177Sjhibbits
339296177Sjhibbitst_Error FM_MAC_SetException(t_Handle h_FmMac, e_FmMacExceptions ex, bool enable)
340296177Sjhibbits{
341296177Sjhibbits   t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
342296177Sjhibbits
343296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
344296177Sjhibbits
345296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_SetException)
346296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_SetException(h_FmMac, ex, enable);
347296177Sjhibbits
348296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
349296177Sjhibbits}
350296177Sjhibbits
351296177Sjhibbits/* ........................................................................... */
352296177Sjhibbits
353296177Sjhibbitst_Error FM_MAC_SetStatistics (t_Handle h_FmMac, e_FmMacStatisticsLevel statisticsLevel)
354296177Sjhibbits{
355296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
356296177Sjhibbits
357296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
358296177Sjhibbits
359296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_SetStatistics)
360296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_SetStatistics(h_FmMac, statisticsLevel);
361296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
362296177Sjhibbits}
363296177Sjhibbits
364296177Sjhibbits/* ........................................................................... */
365296177Sjhibbits
366296177Sjhibbitst_Error FM_MAC_GetStatistics (t_Handle h_FmMac, t_FmMacStatistics *p_Statistics)
367296177Sjhibbits{
368296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
369296177Sjhibbits
370296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
371296177Sjhibbits
372296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_GetStatistics)
373296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_GetStatistics(h_FmMac, p_Statistics);
374296177Sjhibbits
375296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
376296177Sjhibbits}
377296177Sjhibbits
378296177Sjhibbits/* ........................................................................... */
379296177Sjhibbits
380296177Sjhibbitst_Error FM_MAC_ModifyMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)
381296177Sjhibbits{
382296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
383296177Sjhibbits
384296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
385296177Sjhibbits
386296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr)
387296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_ModifyMacAddr(h_FmMac, p_EnetAddr);
388296177Sjhibbits
389296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
390296177Sjhibbits}
391296177Sjhibbits
392296177Sjhibbits/* ........................................................................... */
393296177Sjhibbits
394296177Sjhibbitst_Error FM_MAC_AddHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)
395296177Sjhibbits{
396296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
397296177Sjhibbits
398296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
399296177Sjhibbits
400296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr)
401296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_AddHashMacAddr(h_FmMac, p_EnetAddr);
402296177Sjhibbits
403296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
404296177Sjhibbits}
405296177Sjhibbits
406296177Sjhibbits/* ........................................................................... */
407296177Sjhibbits
408296177Sjhibbitst_Error FM_MAC_RemoveHashMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)
409296177Sjhibbits{
410296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
411296177Sjhibbits
412296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
413296177Sjhibbits
414296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr)
415296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_RemoveHashMacAddr(h_FmMac, p_EnetAddr);
416296177Sjhibbits
417296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
418296177Sjhibbits}
419296177Sjhibbits
420296177Sjhibbits/* ........................................................................... */
421296177Sjhibbits
422296177Sjhibbitst_Error FM_MAC_AddExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)
423296177Sjhibbits{
424296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
425296177Sjhibbits
426296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
427296177Sjhibbits
428296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr)
429296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_AddExactMatchMacAddr(h_FmMac, p_EnetAddr);
430296177Sjhibbits
431296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
432296177Sjhibbits}
433296177Sjhibbits
434296177Sjhibbits/* ........................................................................... */
435296177Sjhibbits
436296177Sjhibbitst_Error FM_MAC_RemovelExactMatchMacAddr (t_Handle h_FmMac, t_EnetAddr *p_EnetAddr)
437296177Sjhibbits{
438296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
439296177Sjhibbits
440296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
441296177Sjhibbits
442296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr)
443296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_RemovelExactMatchMacAddr(h_FmMac, p_EnetAddr);
444296177Sjhibbits
445296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
446296177Sjhibbits}
447296177Sjhibbits
448296177Sjhibbits/* ........................................................................... */
449296177Sjhibbits
450296177Sjhibbitst_Error FM_MAC_GetVesrion (t_Handle h_FmMac, uint32_t *macVresion)
451296177Sjhibbits{
452296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
453296177Sjhibbits
454296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
455296177Sjhibbits
456296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_GetVersion)
457296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_GetVersion(h_FmMac, macVresion);
458296177Sjhibbits
459296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
460296177Sjhibbits
461296177Sjhibbits}
462296177Sjhibbits
463296177Sjhibbits/* ........................................................................... */
464296177Sjhibbits
465296177Sjhibbitst_Error FM_MAC_GetId (t_Handle h_FmMac, uint32_t *macId)
466296177Sjhibbits{
467296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
468296177Sjhibbits
469296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
470296177Sjhibbits
471296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_GetId)
472296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_GetId(h_FmMac, macId);
473296177Sjhibbits
474296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
475296177Sjhibbits}
476296177Sjhibbits
477296177Sjhibbits/* ........................................................................... */
478296177Sjhibbits
479296177Sjhibbitst_Error FM_MAC_SetPromiscuous (t_Handle h_FmMac, bool newVal)
480296177Sjhibbits{
481296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
482296177Sjhibbits
483296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
484296177Sjhibbits
485296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous)
486296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_SetPromiscuous(h_FmMac, newVal);
487296177Sjhibbits
488296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
489296177Sjhibbits}
490296177Sjhibbits
491296177Sjhibbits/* ........................................................................... */
492296177Sjhibbits
493296177Sjhibbitst_Error FM_MAC_AdjustLink(t_Handle h_FmMac, e_EnetSpeed speed, bool fullDuplex)
494296177Sjhibbits{
495296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
496296177Sjhibbits
497296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
498296177Sjhibbits
499296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_AdjustLink)
500296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_AdjustLink(h_FmMac, speed, fullDuplex);
501296177Sjhibbits
502296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
503296177Sjhibbits}
504296177Sjhibbits
505296177Sjhibbits/* ........................................................................... */
506296177Sjhibbits
507296177Sjhibbitst_Error FM_MAC_MII_WritePhyReg (t_Handle h_FmMac, uint8_t phyAddr, uint8_t reg, uint16_t data)
508296177Sjhibbits{
509296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
510296177Sjhibbits
511296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
512296177Sjhibbits
513296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg)
514296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_MII_WritePhyReg(h_FmMac, phyAddr, reg, data);
515296177Sjhibbits
516296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
517296177Sjhibbits}
518296177Sjhibbits
519296177Sjhibbits/* ........................................................................... */
520296177Sjhibbits
521296177Sjhibbitst_Error FM_MAC_MII_ReadPhyReg(t_Handle h_FmMac,  uint8_t phyAddr, uint8_t reg, uint16_t *p_Data)
522296177Sjhibbits{
523296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
524296177Sjhibbits
525296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
526296177Sjhibbits
527296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg)
528296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_MII_ReadPhyReg(h_FmMac, phyAddr, reg, p_Data);
529296177Sjhibbits
530296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
531296177Sjhibbits}
532296177Sjhibbits
533296177Sjhibbits/* ........................................................................... */
534296177Sjhibbits
535296177Sjhibbitsuint16_t FM_MAC_GetMaxFrameLength(t_Handle h_FmMac)
536296177Sjhibbits{
537296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
538296177Sjhibbits
539296177Sjhibbits    SANITY_CHECK_RETURN_VALUE(p_FmMacControllerDriver, E_INVALID_HANDLE, 0);
540296177Sjhibbits
541296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength)
542296177Sjhibbits        return p_FmMacControllerDriver->f_FM_MAC_GetMaxFrameLength(h_FmMac);
543296177Sjhibbits
544296177Sjhibbits    REPORT_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
545296177Sjhibbits    return 0;
546296177Sjhibbits}
547296177Sjhibbits
548296177Sjhibbits#if (defined(DEBUG_ERRORS) && (DEBUG_ERRORS > 0))
549296177Sjhibbits/*****************************************************************************/
550296177Sjhibbitst_Error FM_MAC_DumpRegs(t_Handle h_FmMac)
551296177Sjhibbits{
552296177Sjhibbits    t_FmMacControllerDriver *p_FmMacControllerDriver = (t_FmMacControllerDriver *)h_FmMac;
553296177Sjhibbits
554296177Sjhibbits    SANITY_CHECK_RETURN_ERROR(p_FmMacControllerDriver, E_INVALID_HANDLE);
555296177Sjhibbits
556296177Sjhibbits    if (p_FmMacControllerDriver->f_FM_MAC_DumpRegs)
557296177Sjhibbits         return p_FmMacControllerDriver->f_FM_MAC_DumpRegs(h_FmMac);
558296177Sjhibbits    RETURN_ERROR(MINOR, E_NOT_SUPPORTED, NO_MSG);
559296177Sjhibbits}
560296177Sjhibbits#endif /* (defined(DEBUG_ERRORS) && ... */
561