亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? nimu_eth6455.c

?? TI公司的NSP
?? C
?? 第 1 頁 / 共 2 頁
字號:
/**************************************************************************
 * FILE PURPOSE	:  	NIMU Interface for the Ethernet Driver (DSK6455)
 **************************************************************************
 * FILE NAME	:   nimu_eth6455.c
 *
 * DESCRIPTION	:
 *  Ethernet Packet Driver for the DSK6455 rewritten using the NIMU Packet
 *  Architecture guidelines. 

 *	CALL-INs:
 *
 *	CALL-OUTs:
 *
 *	User-Configurable Items:
 *
 *	(C) Copyright 2008, Texas Instruments, Inc.
 *************************************************************************/

#include <stkmain.h>
#include "llpacket.h"

#ifdef _INCLUDE_NIMU_CODE

/* The DSK6455 EMAC Initialization Function. */
int DSK6455EmacInit (STKEVENT_Handle hEvent);

/* This is the NIMU Device Table for the DSK6455 Platform. 
 * This should be defined for each platform. Since the DSK6455 platform
 * has a single network Interface; this has been defined here. If the 
 * platform supports more than one network interface this should be 
 * defined to have a list of "initialization" functions for each of the
 * interfaces. */
NIMU_DEVICE_TABLE_ENTRY NIMUDeviceTable[] = 
{
    DSK6455EmacInit,
    NULL
};

/*********************************************************************
 * STRUCTURE NAME : DSK6455_EMAC_DATA
 *********************************************************************
 * DESCRIPTION   :
 *  The structure is used to store the private data for the DSK6455 
 *  EMAC controller.
 *********************************************************************/
typedef struct DSK6455_EMAC_DATA
{
    PDINFO      pdi;        /* Private Information  */
}DSK6455_EMAC_DATA;

/*********************************************************************
 * FUNCTION NAME : DSK6455EmacStart
 *********************************************************************
 * DESCRIPTION   :
 *  The function is used to initialize and start the DSK6455 EMAC
 *  controller and device.
 *
 * RETURNS       :
 *  0   -   Success
 *  <0  -   Error
 *********************************************************************/
static int DSK6455EmacStart (NETIF_DEVICE* ptr_net_device)
{
    DSK6455_EMAC_DATA*  ptr_pvt_data;

    /* Get the pointer to the private data */
    ptr_pvt_data = (DSK6455_EMAC_DATA *)ptr_net_device->pvt_data;

    /* Call low-level open function */
    if (HwPktOpen(&ptr_pvt_data->pdi) == 1)
    {
        /* Copy the MAC Address into the network interface object here. */
        mmCopy(&ptr_net_device->mac_address[0], &ptr_pvt_data->pdi.bMacAddr[0], 6);

        /* Set the 'initial' Receive Filter */
        ptr_pvt_data->pdi.Filter = ETH_PKTFLT_MULTICAST;
        HwPktSetRx(&ptr_pvt_data->pdi);

        /* Inform the world that we are operational. */
        printf ("DSK6455 EMAC has been started successfully\n");
        return 0;
    }

    /* Error: DSK6455 EMAC failed to start. */
    return -1;
}

/*********************************************************************
 * FUNCTION NAME : DSK6455EmacStop
 *********************************************************************
 * DESCRIPTION   :
 *  The function is used to de-initialize and stop the DSK6455 EMAC
 *  controller and device.
 *
 * RETURNS       :
 *  0   -   Success
 *  <0  -   Error
 *********************************************************************/
static int DSK6455EmacStop (NETIF_DEVICE* ptr_net_device)
{
    DSK6455_EMAC_DATA*  ptr_pvt_data;

    /* Get the pointer to the private data */
    ptr_pvt_data = (DSK6455_EMAC_DATA *)ptr_net_device->pvt_data;

    /* Call low-level close function */
    HwPktClose (&ptr_pvt_data->pdi);

    /* Shut down the Ethernet controller. */    
    HwPktShutdown();

    /* Flush out our pending queue */
    while( PBMQ_count(&ptr_pvt_data->pdi.PBMQ_rx) )
        PBM_free( PBMQ_deq(&ptr_pvt_data->pdi.PBMQ_rx) );
       
    /* EMAC Controller has been stopped. */ 
    return 0;
}

/*********************************************************************
 * FUNCTION NAME : DSK6455EmacPoll
 *********************************************************************
 * DESCRIPTION   :
 *  The function is used to poll the DSK6455 EMAC controller to check
 *  if there has been any activity.
 *********************************************************************/
static void DSK6455EmacPoll (NETIF_DEVICE* ptr_net_device, uint timer_tick)
{
    DSK6455_EMAC_DATA*  ptr_pvt_data;

    /* Get the pointer to the private data */
    ptr_pvt_data = (DSK6455_EMAC_DATA *)ptr_net_device->pvt_data;
    
    /* Poll the driver. */
    _HwPktPoll (&ptr_pvt_data->pdi, timer_tick);
    return;
}

/*********************************************************************
 * FUNCTION NAME : DSK6455EmacSend
 *********************************************************************
 * DESCRIPTION   :
 *  The function is the interface routine invoked by the NDK stack to
 *  pass packets to the driver. 
 *
 * RETURNS       :
 *  0   -   Success
 *  <0  -   Error
 *********************************************************************/
static int DSK6455EmacSend (NETIF_DEVICE* ptr_net_device, PBM_Handle hPkt)
{
    DSK6455_EMAC_DATA*  ptr_pvt_data;

    /* Get the pointer to the private data */
    ptr_pvt_data = (DSK6455_EMAC_DATA *)ptr_net_device->pvt_data;

    /* Make sure the driver does not transmit packet less than min. as per the
     * Ethernet standards. */
    if( PBM_getValidLen(hPkt) < 60 )
        PBM_setValidLen (hPkt, 60 );

    /* Transmit the packet only if does not exceed the MTU */
    if(PBM_getValidLen(hPkt) <= 1518 )
    {
        /* Enqueue the packet and send it for transmission. */
        PBMQ_enq (&ptr_pvt_data->pdi.PBMQ_tx, hPkt);

        /* Pass the packet to the controller if the transmitter is free. */
        if(ptr_pvt_data->pdi.TxFree )
            HwPktTxNext(&ptr_pvt_data->pdi);

        /* Packet has been successfully transmitted. */
        return 0;
    }

    /* NOTE: This is a violation and should never occur as the NDK stack should have 
     * fragmented the packet. In this case though we drop and clean the packet we will 
     * still return success. */
    PBM_free (hPkt);
    return 0;
}

/*********************************************************************
 * FUNCTION NAME : DSK6455EmacPktService
 *********************************************************************
 * DESCRIPTION   :
 *  The function is called by the NDK core stack to receive any packets
 *  from the driver.
 *********************************************************************/
static void DSK6455EmacPktService (NETIF_DEVICE* ptr_net_device)
{
    DSK6455_EMAC_DATA*  ptr_pvt_data;
    PBM_Handle          hPacket;

    /* Get the pointer to the private data */
    ptr_pvt_data = (DSK6455_EMAC_DATA *)ptr_net_device->pvt_data;
        
    /* Give all queued packets to the Ether module */
    while (PBMQ_count(&ptr_pvt_data->pdi.PBMQ_rx))
    {
        /* Dequeue a packet from the driver receive queue. */
        hPacket = PBMQ_deq(&ptr_pvt_data->pdi.PBMQ_rx);

        /* Prepare the packet so that it can be passed up the networking stack. 
         * If this 'step' is not done the fields in the packet are not correct
         * and the packet will eventually be dropped.  */
        PBM_setIFRx (hPacket, ptr_net_device);
        
        /* Pass the packet to the NDK Core stack. */    
        NIMUReceivePacket(hPacket);
    }

    /* Work has been completed; the receive queue is empty... */ 
    return;
}

/*********************************************************************

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美三级三级三级爽爽爽| 日韩精品成人一区二区在线| 欧美日韩综合一区| 福利一区二区在线观看| 亚洲国产精品久久不卡毛片| 久久久99久久| 国产日韩一级二级三级| 久久亚洲春色中文字幕久久久| 欧美午夜精品久久久久久超碰| 日本丰满少妇一区二区三区| 91丨porny丨蝌蚪视频| 91丨porny丨蝌蚪视频| 在线视频国内一区二区| 欧美伊人精品成人久久综合97| 99精品在线免费| 91麻豆国产自产在线观看| 色悠悠久久综合| 欧美午夜精品一区二区三区| 欧美日韩你懂得| 日韩免费一区二区三区在线播放| 51久久夜色精品国产麻豆| 欧美一卡2卡三卡4卡5免费| 日韩欧美国产小视频| 国产无一区二区| 亚洲色图色小说| 午夜精品在线视频一区| 日本不卡在线视频| 国产二区国产一区在线观看| 成人h动漫精品一区二| 一本一道久久a久久精品综合蜜臀| 国产精品沙发午睡系列990531| 国产主播一区二区三区| 精品一区二区免费| 国产在线不卡视频| 91在线视频网址| 成人免费视频免费观看| 麻豆精品视频在线观看| 色中色一区二区| 亚洲男同性恋视频| gogo大胆日本视频一区| 中文字幕在线观看不卡视频| 国产成人av福利| 中文成人综合网| 91丨porny丨国产| 国产精品热久久久久夜色精品三区| 国产尤物一区二区在线| 久久噜噜亚洲综合| 国内一区二区视频| 久久午夜免费电影| 国产999精品久久| 久久免费午夜影院| zzijzzij亚洲日本少妇熟睡| 亚洲日本丝袜连裤袜办公室| 日本韩国欧美一区二区三区| 一区二区在线观看不卡| 欧美亚洲国产一区在线观看网站 | 97精品超碰一区二区三区| 亚洲色图制服丝袜| 欧美日韩亚洲综合一区| 久久国产夜色精品鲁鲁99| 国产欧美在线观看一区| 色一情一乱一乱一91av| 琪琪久久久久日韩精品| 国产日本欧洲亚洲| 日本韩国视频一区二区| 免费观看在线综合| 国产精品久久久久久久久动漫 | 666欧美在线视频| 欧美主播一区二区三区| 亚洲日本va午夜在线影院| 欧美激情一区二区三区不卡 | 日韩免费看的电影| 欧美日韩久久久久久| 欧美性色黄大片| aaa国产一区| 波多野结衣一区二区三区| 91天堂素人约啪| 色婷婷综合激情| 欧洲激情一区二区| 欧美高清一级片在线| 91精品国产全国免费观看| 日韩久久免费av| 久久综合狠狠综合久久综合88 | 国产精品久久久久久久岛一牛影视 | 蜜桃久久久久久| 美女视频免费一区| 不卡的av网站| 精品视频全国免费看| 欧美一区二区三区视频免费播放| 日韩欧美一区二区不卡| 久久久91精品国产一区二区三区| 国产精品免费视频观看| 一区二区三区四区亚洲| 日本大胆欧美人术艺术动态| 国产呦精品一区二区三区网站| 成人午夜电影久久影院| 欧美天天综合网| 91精品国产品国语在线不卡| 亚洲欧洲日产国产综合网| 亚洲福利国产精品| 国产一区二区三区四区五区入口 | fc2成人免费人成在线观看播放| 91福利社在线观看| 精品久久久久香蕉网| 自拍偷拍国产亚洲| 久久国产精品99精品国产| 91首页免费视频| 日韩一区二区在线观看视频播放| 国产精品美女久久久久久| 日韩精品视频网| 99久久久精品| 欧美成人一区二区| 亚洲精品视频观看| 国产一区二区在线观看免费| 欧美在线观看18| 精品播放一区二区| 亚洲一区二区三区在线| 亚洲一区二区黄色| av亚洲精华国产精华| 欧美刺激脚交jootjob| 夜夜操天天操亚洲| 成人激情免费视频| 日韩精品一区二区三区三区免费 | 精品无码三级在线观看视频| kk眼镜猥琐国模调教系列一区二区 | 天堂成人国产精品一区| 成人性生交大合| 久久综合久久鬼色| 日韩专区在线视频| 成人午夜短视频| 欧美大片在线观看一区二区| 亚洲成人动漫一区| 91丨porny丨国产| 日本一区二区三级电影在线观看| 久久国产日韩欧美精品| 欧美日韩不卡一区二区| 一区二区在线观看视频在线观看| www.欧美.com| 日韩欧美国产综合在线一区二区三区| 亚洲欧美影音先锋| 成人午夜在线免费| 日本一区二区视频在线观看| 蜜桃av一区二区三区电影| 正在播放一区二区| 亚洲国产成人av网| 欧洲中文字幕精品| 亚洲免费高清视频在线| 播五月开心婷婷综合| 中文字幕亚洲电影| 成人高清在线视频| 国产人成一区二区三区影院| 国模套图日韩精品一区二区 | 国产丶欧美丶日本不卡视频| 国产亚洲一二三区| 国产精品系列在线播放| 久久久噜噜噜久久中文字幕色伊伊 | 欧美va亚洲va香蕉在线| 爽爽淫人综合网网站| 精品国精品国产| 久久91精品久久久久久秒播| 精品久久久久久久久久久院品网 | 天堂一区二区在线| 欧美不卡一二三| 国产一区 二区| 国产精品美女久久久久高潮| 国产suv精品一区二区6| 中文字幕中文字幕一区二区| 91丨porny丨户外露出| 一片黄亚洲嫩模| 欧美性猛片aaaaaaa做受| 亚洲激情校园春色| 欧美一区二区日韩一区二区| 捆绑变态av一区二区三区| 精品国产第一区二区三区观看体验| 蜜乳av一区二区| 欧美国产精品劲爆| 色就色 综合激情| 亚洲国产精品嫩草影院| 欧美一区二区三区四区五区 | 国产91精品一区二区| 亚洲欧洲日韩综合一区二区| aaa欧美色吧激情视频| 亚洲国产视频在线| 欧美zozo另类异族| 成人免费观看视频| 一区二区中文视频| 精品福利一区二区三区免费视频| 成人免费毛片嘿嘿连载视频| 亚洲最大的成人av| 欧美大片一区二区| av亚洲精华国产精华| 日韩精彩视频在线观看| 国产调教视频一区| 欧美午夜精品一区二区三区| 亚洲亚洲人成综合网络| 欧美国产日韩亚洲一区| 欧美男同性恋视频网站| 国产精品99久| 香蕉成人啪国产精品视频综合网| 久久综合九色综合欧美98|