#include <Copyright.h>
/********************************************************************************
* header.c
*
* DESCRIPTION:
*        This sample shows how to enable/disable CPU port's ingress and egress
*        Header mode. For more information about Header mode, please refer to
*        88E6063 Data Book. Header mode sould be handled by Ethernet Device/Driver
*        as well, since 88E6063, with header mode enabled, sends out a packet with
*        header, which cannot be recognized by regular Ethernet device/driver,
*        and expects header for every received packet.
*
* DEPENDENCIES:
*        88E6051, 88E6052, and 88E6021 are not supporting this feature.
*
* FILE REVISION NUMBER:
*
* COMMENTS:
*        WARNING!!
*        When Header mode for the CPU port is enabled, Ethernet Device/Driver
*        which connects to the CPU port should understand Header Format.
*        If Ethernet Device does not know about Header mode, then user may set
*        the device to Promiscuous mode in order to receive packets from QD's CPU
*        port. After that, it is Ethernet Device Driver's responsibility to handle
*        Header properly.
*******************************************************************************/

#include "msSample.h"

GT_STATUS sampleHeaderEnable(GT_QD_DEV *dev,GT_BOOL en)
{
    GT_STATUS status;

    /*
     *    Enable/Disable Header mode
    */
    if((status = gprtSetHeaderMode(dev,dev->cpuPortNum, en)) != GT_OK)
    {
        MSG_PRINT(("gprtSetHeaderMode return Failed\n"));
        return status;
    }

    return GT_OK;
}
