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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? llpacket.c

?? dm642網絡傳輸程序
?? C
字號:
//--------------------------------------------------------------------------
// IP Stack
//--------------------------------------------------------------------------
// llPacket.c
//
// Ethernet Packet Driver
//
// Author: Michael A. Denio
// Copyright 1998, 2003 by Texas Instruments Inc.
//-------------------------------------------------------------------------
#include <stkmain.h>
#include "llpacket.h"

//--------------------------------------------------------------------
// PUBLIC FUNCTIONS USED FOR INTIALIZATION AND EVENTS
//--------------------------------------------------------------------
#define MAX_INSTANCE    2

static uint     PktDevCount = 0;        // Number of Net Devices
static PDINFO   pdi[MAX_INSTANCE];      // Private Info about devices

//
// Queue for Received Packets
//
PBMQ    PBMQ_rx;

//--------------------------------------------------------------------
// PUBLIC FUNCTIONS USED BY NETCTRL
//--------------------------------------------------------------------

//--------------------------------------------------------------------
// _llPacketInit()
//
// Opens the packet driver environment and enumerates devices
//--------------------------------------------------------------------
uint _llPacketInit(STKEVENT_Handle hEvent)
{
    int i;

    // Initialize RX Queue
    PBMQ_init(&PBMQ_rx);

    //
    // Initialize the packet driver(s)
    //
    PktDevCount = HwPktInit();

    if( PktDevCount > MAX_INSTANCE )
        PktDevCount = MAX_INSTANCE;

    //
    // Initialize PDINFO for each driver instance
    //
    for(i=0; i<PktDevCount; i++)
    {
        mmZeroInit( &pdi[i], sizeof( PDINFO ) );

        // Set physical index
        pdi[i].PhysIdx     = i;

        // Copy Event Handle
        pdi[i].hEvent      = hEvent;

        // MCast List
        pdi[i].MCastCnt    = 0;

        // Default MAC Address (can be overwritten by HwPktOpen())
        pdi[i].bMacAddr[0] = 0x08;
        pdi[i].bMacAddr[1] = 0x00;
        pdi[i].bMacAddr[2] = 0x28;
        pdi[i].bMacAddr[3] = 0xFF;
        pdi[i].bMacAddr[4] = 0xFF;
        pdi[i].bMacAddr[5] = (UINT8)i;
    }

    return( PktDevCount );
}

//--------------------------------------------------------------------
// _llPacketShutdown()
//
// Called to shutdown packet driver environment
//--------------------------------------------------------------------
void _llPacketShutdown()
{
    PktDevCount = 0;
    HwPktShutdown();

    // Flush out our pending queue
    while( PBMQ_count(&PBMQ_rx) )
        PBM_free( PBMQ_deq(&PBMQ_rx) );
}

//--------------------------------------------------------------------
// _llPacketServiceCheck()
//
// Called to check for packet activity
//--------------------------------------------------------------------
void _llPacketServiceCheck( uint fTimerTick )
{
    uint dev;

    for( dev=0; dev<PktDevCount; dev++ )
        _HwPktPoll( &(pdi[dev]), fTimerTick );
}

//--------------------------------------------------------------------
// PUBLIC FUNCTIONS USED BY THE STACK
//--------------------------------------------------------------------

//--------------------------------------------------------------------
// llPacketOpen()
//
// Opens the packet driver, and request packets of our desired type.
//--------------------------------------------------------------------
uint llPacketOpen( uint dev, HANDLE hEther )
{
    // Our device index is "1" based to the upper layers
    dev--;
    if( dev >= PktDevCount )
        return(0);

    // Init Logical Device
    pdi[dev].hEther = hEther;

    // Call low-level open function
    return( HwPktOpen( &pdi[dev] ) );
}

//--------------------------------------------------------------------
// PacketClose()
//
// Called to shutdown packet driver.
//--------------------------------------------------------------------
void llPacketClose( uint dev )
{
    // Our device index is "1" based to the upper layers
    dev--;
    if( dev >= PktDevCount )
        return;

    // Call low-level close function
    HwPktClose( &pdi[dev] );
}

//--------------------------------------------------------------------
// llPacketSend()
//
// Called to send data to a device. The buffer has been completely
// formatted by the time this call is made, and is ready for
// transmit. The dev parameter is the physical destination device.
//--------------------------------------------------------------------
void llPacketSend( uint dev, PBM_Handle hPkt )
{
    // Our device index is "1" based to the upper layers
    dev--;

    if( PBM_getValidLen(hPkt) < 60 )
        PBM_setValidLen( hPkt, 60 );

    if( dev < PktDevCount && PBM_getValidLen(hPkt) <= 1514 )
    {
        PBMQ_enq( &(pdi[dev].PBMQ_tx), hPkt );

        if( pdi[dev].TxFree )
            HwPktTxNext( &(pdi[dev]) );
    }
    else
        PBM_free( hPkt );
}

//--------------------------------------------------------------------
// llPacketGetMacAddr()
//
// Called to the MAC address of the specified device.
//--------------------------------------------------------------------
void llPacketGetMacAddr( uint dev, UINT8 *pbData )
{
    // Our device index is "1" based to the upper layers
    dev--;

    if( dev < PktDevCount )
        mmCopy( pbData, pdi[dev].bMacAddr, 6 );
}

//--------------------------------------------------------------------
// llPacketGetMCastMax()
//
// Called to the maxumim multicast addresses that the device can hold.
//--------------------------------------------------------------------
uint llPacketGetMCastMax( uint dev )
{
    // Our device index is "1" based to the upper layers
    dev--;

    if( dev < PktDevCount )
        return( PKT_MAX_MCAST );
    else
        return( 0 );
}

//--------------------------------------------------------------------
// llPacketSetRxFilter()
//
// Called to set the Rx Filter mode of the device. The legal modes
// are defined in ETHER.H
//--------------------------------------------------------------------
void llPacketSetRxFilter( uint dev, uint Filter )
{
    // Our device index is "1" based to the upper layers
    dev--;

    if( dev < PktDevCount && Filter <= ETH_PKTFLT_ALL )
    {
        pdi[dev].Filter = Filter;
        HwPktSetRx( &(pdi[dev]) );
    }
}

//--------------------------------------------------------------------
// llPacketSetMCast()
//
// Called to set the Multicast list for the device.
//--------------------------------------------------------------------
void llPacketSetMCast( uint dev, uint addrcnt, UINT8 *bAddr )
{
    // Our device index is "1" based to the upper layers
    dev--;

    // Copy the multicast list from ETH and update HW driver
    if( dev < PktDevCount && addrcnt <= PKT_MAX_MCAST )
    {
        pdi[dev].MCastCnt = addrcnt;
        mmCopy( pdi[dev].bMCast, bAddr, 6 * addrcnt );
        HwPktSetRx( &(pdi[dev]) );
    }
}

//--------------------------------------------------------------------
// llPacketGetMCast()
//
// Called to get the Multicast list for the device.
//--------------------------------------------------------------------
uint llPacketGetMCast( uint dev, uint max, UINT8 *bAddr )
{
    // Our device index is "1" based to the upper layers
    dev--;

    // Copy the multicast list to ETH
    if( dev < PktDevCount && max >= pdi[dev].MCastCnt && bAddr  )
    {
        mmCopy( bAddr, pdi[dev].bMCast, pdi[dev].MCastCnt * 6 );
        return( pdi[dev].MCastCnt );
    }
    return(0);
}

//--------------------------------------------------------------------
// llPacketService()
//
// Called to service packet activity.
//--------------------------------------------------------------------
void llPacketService()
{
    // Give all queued packets to the Ether module
    while( PBMQ_count(&PBMQ_rx) )
        EtherRxPacket( PBMQ_deq(&PBMQ_rx) );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av手机在线观看| 亚洲人快播电影网| 韩国欧美国产1区| 国产亚洲美州欧州综合国| 国产在线精品一区在线观看麻豆| 中文一区二区完整视频在线观看| 精品一区二区日韩| 国产无一区二区| 99久久精品国产网站| 亚洲午夜电影在线| 91精品欧美福利在线观看| 久久99热这里只有精品| 欧美国产精品一区| 色婷婷综合五月| 日本女优在线视频一区二区| 久久亚洲综合色| 91在线云播放| 奇米精品一区二区三区在线观看一 | 欧美精品自拍偷拍| 婷婷一区二区三区| 国产欧美中文在线| 欧美视频在线一区| 国产一区二区主播在线| 亚洲欧洲精品成人久久奇米网| 欧美日韩国产高清一区二区| 国产一区二区中文字幕| 亚洲自拍偷拍av| 26uuu亚洲综合色欧美| 色屁屁一区二区| 久久er精品视频| 亚洲精品国产a| 久久久一区二区三区捆绑**| 欧美视频三区在线播放| 国产乱子伦视频一区二区三区 | 欧美日韩国产123区| 国产精品一区二区91| 樱桃视频在线观看一区| 久久久午夜精品理论片中文字幕| 91成人国产精品| 国产剧情一区在线| 天天综合天天做天天综合| 国产精品久久久久一区二区三区共| 欧美裸体一区二区三区| 成人avav影音| 国产在线播放一区二区三区| 一区二区三区欧美| 国产精品免费视频网站| 日韩欧美亚洲国产另类| 欧美色图一区二区三区| 成人v精品蜜桃久久一区| 热久久国产精品| 五月天婷婷综合| 亚洲色图欧洲色图| 国产欧美综合在线观看第十页| 欧美一区三区四区| 欧美日韩国产欧美日美国产精品| 久久er精品视频| 97精品电影院| 精彩视频一区二区三区| 午夜精品一区在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 欧美激情一区二区三区在线| 日韩视频永久免费| 91精品国产一区二区三区| 在线精品视频免费播放| 一本色道久久综合亚洲aⅴ蜜桃 | 国产一区在线观看麻豆| 日本亚洲视频在线| 午夜精品久久久久久久久久久 | 91免费看视频| thepron国产精品| 成人性生交大片免费看中文网站 | 国产成人综合亚洲91猫咪| 精品一区二区三区久久久| 青草av.久久免费一区| 日日夜夜免费精品| 免费在线看成人av| 免费成人av在线播放| 日本欧洲一区二区| 麻豆精品视频在线观看| 另类欧美日韩国产在线| 久久不见久久见中文字幕免费| 日韩精品免费视频人成| 亚洲成人动漫精品| 欧美aaa在线| 激情深爱一区二区| 国产成人综合亚洲91猫咪| 丰满少妇久久久久久久| 99re这里只有精品视频首页| 一本到三区不卡视频| 欧美中文字幕一区二区三区亚洲| 欧美日韩综合一区| 欧美一区二区三区爱爱| 国产精品激情偷乱一区二区∴| 国产精品色一区二区三区| 亚洲欧美另类图片小说| 亚洲成人综合视频| 蜜臀av亚洲一区中文字幕| 国产精品白丝av| 色综合久久九月婷婷色综合| 欧美日韩国产天堂| 久久亚洲综合色一区二区三区| 国产精品大尺度| 亚洲国产一区在线观看| 加勒比av一区二区| 99视频热这里只有精品免费| 欧美三级视频在线观看| 欧美成人精品福利| 18成人在线观看| 日本强好片久久久久久aaa| 国产一区二区三区蝌蚪| 91在线丨porny丨国产| 56国语精品自产拍在线观看| 国产日产欧产精品推荐色| 亚洲视频在线一区观看| 日韩av中文在线观看| 国产电影一区二区三区| 欧美性大战久久| 国产免费观看久久| 午夜一区二区三区视频| 国产电影一区在线| 欧美日韩dvd在线观看| 国产欧美一区二区三区鸳鸯浴| 一区二区高清在线| 国产精品白丝av| 在线综合亚洲欧美在线视频| 国产精品久久久久一区二区三区 | 国产成a人亚洲精品| 欧美色倩网站大全免费| 欧美高清在线精品一区| 丝袜美腿一区二区三区| 91网站最新网址| 欧美xxxxx牲另类人与| 亚洲在线观看免费视频| 国产大陆精品国产| 日韩欧美亚洲国产另类 | 欧美久久久影院| 中文字幕一区二区三区在线播放| 奇米888四色在线精品| 在线视频国内一区二区| 国产色产综合产在线视频| 日本午夜精品一区二区三区电影| 97se亚洲国产综合在线| 久久久久久久久岛国免费| 视频一区欧美精品| 欧美在线不卡视频| 国产精品精品国产色婷婷| 国产高清在线精品| 精品国产乱码久久久久久蜜臀| 亚洲综合久久av| 99精品久久免费看蜜臀剧情介绍| 国产丝袜欧美中文另类| 国产一区二区三区免费看| 日韩一区二区视频| 日韩主播视频在线| 91麻豆精品国产无毒不卡在线观看| 亚洲另类在线一区| 制服丝袜日韩国产| 午夜免费久久看| 在线免费观看日韩欧美| 亚洲图片你懂的| 91亚洲男人天堂| 一区二区三区中文字幕精品精品| va亚洲va日韩不卡在线观看| 国产精品久久久久久亚洲伦| 国产另类ts人妖一区二区| 久久综合九色综合97_久久久| 日韩电影在线观看电影| 日韩一区二区精品葵司在线| 日本美女一区二区三区视频| 欧美日韩另类一区| 琪琪一区二区三区| 精品乱人伦小说| 国产成人免费av在线| 国产精品麻豆视频| 色www精品视频在线观看| 亚洲欧美电影院| 欧美日韩国产大片| 秋霞午夜av一区二区三区| 精品乱人伦小说| 国产suv精品一区二区883| 中文字幕日韩av资源站| 色一情一伦一子一伦一区| 亚洲欧美色图小说| 91精品免费观看| 国模娜娜一区二区三区| 国产精品看片你懂得| 一本到高清视频免费精品| 日一区二区三区| 久久久亚洲午夜电影| 99精品欧美一区二区蜜桃免费 | 69av一区二区三区| 精品一区二区国语对白| 国产精品三级视频| 欧洲激情一区二区| 久久激情综合网| 亚洲欧洲一区二区在线播放| 欧美亚洲精品一区| 精品夜夜嗨av一区二区三区| 国产精品福利一区二区三区|