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

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

?? interrup.c

?? Wince4.2 BSP for SH4 engineering development board
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
        WriteWord(MMU_CMD,MC_FREEPKT);
    
        // Acknowledge the interrupt
        SelectBank(BANK2);
        WriteWord(INT_REG,ReadWord(INT_REG) & (0xff00 | TX_INT));

        // Re-enable Transmission
        SelectBank(BANK0);
        WriteWord(TCR,ReadWord(TCR)|TCR_ENABLE);

        // Get next interrupt, if any
            CardGetInterruptStatus(Adapter, &InterruptStatus);
    }

    while(InterruptStatus & RCV_INT) {
        USHORT  wStatusWord;
        USHORT  wControlWord;
        // PUSHORT  pwData = (PUSHORT)PacketBuffer;
        PUSHORT pwData = (PUSHORT)Adapter->Lookahead;
        UINT    PacketLength;
        UINT    i;
        
        Adapter->ReceivePacketCount++;

        // Setup pointer address register to point to first byte of Frame
        SelectBank(BANK2);
        WriteWord(POINTER,0xE000);

        // Check for an error
        wStatusWord = ReadWord(DATA_1);
            // DEBUGMSG(ZONE_INTR, (TEXT("CELAN:Statsu word = %04x \r\n"),wStatusWord));
        if(!(wStatusWord & 0xAC00)) {
            // Read packet length
            PacketLength = (0x07ff & ReadWord(DATA_1))-6;
            DEBUGMSG(ZONE_INTR, (TEXT("CELAN:Packet length = %04x \r\n"),PacketLength));

            if (PacketLength>1518) {
                    DEBUGMSG(ZONE_ERROR, (TEXT("CELAN:Packet too big.\r\n")));
                    DEBUGMSG(ZONE_ERROR, (TEXT("CELAN:Packet length = %04x \r\n"),PacketLength));
                PacketLength=1518;
            }

            // Read all data
            for(i=0;i<(PacketLength>>1);i++) {
                *pwData = ReadWord(DATA_1);
                DEBUGMSG(ZONE_INTR, (TEXT("%04x "),*pwData));
                pwData++;
            }

            wControlWord = ReadWord(DATA_1);
            if(wControlWord & 0x2000) {
                *pwData = wControlWord;
                DEBUGMSG(ZONE_INTR, (TEXT("Odd data %04x \r\n"),*pwData));
                PacketLength++;
            }

            DEBUGMSG(ZONE_INTR, (TEXT("\r\n"),*pwData));

            if(PacketLength < Adapter->MaxLookAhead + CELAN_HEADER_SIZE) {
                PacketLength = Adapter->MaxLookAhead + CELAN_HEADER_SIZE;
            }

            if(PacketLength < CELAN_HEADER_SIZE) {
                DEBUGMSG(ZONE_INTR,
                    (TEXT("Calling NdisMEtheIndicateReceive %x, %x, %x, %x, %x, %x, %x\r\n"),
                    Adapter->MiniportAdapterHandle,
                    Adapter,
                    Adapter->Lookahead,
                    PacketLength,
                    NULL,
                    0,
                    0
                    ));
                NdisMEthIndicateReceive(
                    Adapter->MiniportAdapterHandle,
                    (NDIS_HANDLE)Adapter,
                    (PCHAR)Adapter->Lookahead,
                    PacketLength,
                    NULL,
                    0,
                    0
                    );
            } else {
                DEBUGMSG(ZONE_INTR,
                    (TEXT("Calling NdisMEtheIndicateReceive %x, %x, %x, %x, %x, %x, %x\r\n"),
                    Adapter->MiniportAdapterHandle,
                    Adapter,
                    Adapter->Lookahead,
                    CELAN_HEADER_SIZE,
                    Adapter->Lookahead+CELAN_HEADER_SIZE,
                    PacketLength-CELAN_HEADER_SIZE,
                    PacketLength-CELAN_HEADER_SIZE
                    ));
                NdisMEthIndicateReceive(
                    Adapter->MiniportAdapterHandle,
                    (NDIS_HANDLE)Adapter,
                    (PCHAR)Adapter->Lookahead,
                    CELAN_HEADER_SIZE,
                    (PCHAR)Adapter->Lookahead+CELAN_HEADER_SIZE,
                    PacketLength-CELAN_HEADER_SIZE,
                    PacketLength-CELAN_HEADER_SIZE
                    );
            }

            Adapter->FramesRcvGood++;
            
            DEBUGMSG(ZONE_INTR, (TEXT("Calling NdisMEtheIndicateReceiveComplete\r\n")));
            NdisMEthIndicateReceiveComplete(Adapter->MiniportAdapterHandle);

        } else {
            DEBUGMSG(ZONE_ERROR,(TEXT("Receive frame status error (%04x)\r\n"),wStatusWord));
            if (wStatusWord & 0x8000)
                Adapter->FrameAlignmentErrors++;
            if (wStatusWord & 0x2000)
                Adapter->CrcErrors++;
        }

        // Release the memory for the received frame
        WriteWord(MMU_CMD,0x0080);
        while(ReadWord(MMU_CMD)&1);

        // Get next interrupt, if any
        CardGetInterruptStatus(Adapter, &InterruptStatus);
    }
    // Re-enable receiving
    SelectBank(BANK0);
    WriteWord(RCR,Adapter->NicReceiveConfig);

    SelectBank(Bank);

}

NDIS_STATUS
CelanSend(
    IN NDIS_HANDLE MiniportAdapterContext,
    IN PNDIS_PACKET Packet,
    IN UINT Flags
    )

/*++

Routine Description:


    The CelanSend request instructs a driver to transmit a packet through
    the adapter onto the medium.

Arguments:

    MiniportAdapterContext - Context registered with the wrapper, really
        a pointer to the adapter.

    Packet - A pointer to a descriptor for the packet that is to be
    transmitted.

    SendFlags - Optional send flags

Notes:

    This miniport driver will always accept a send.  This is because
    the Celan has limited send resources and the driver needs packets
    to copy to the adapter immediately after a transmit completes in
    order to keep the adapter as busy as possible.

    This is not required for other adapters, as they have enough
    resources to keep the transmitter busy until the wrapper submits
    the next packet.

--*/

{
    PUCHAR  CurBufAddress;
    UINT    CurBufLen;
    UINT    PacketLength;
    PNDIS_BUFFER    CurBuffer;
    int i;
    USHORT  wFrameHandle;
    USHORT  cwBufferSize;
    BOOL    CurHiByte=FALSE;
    USHORT  CurData;

#define WAIT_LOOP   1000000

    PCELAN_ADAPTER Adapter = (PCELAN_ADAPTER)(MiniportAdapterContext);
    DEBUGMSG(ZONE_FUNCTION, (TEXT("+CELAN:Send\r\n")));

    // Get the packet length and the first buffer
    NdisQueryPacket(Packet,NULL,NULL,&CurBuffer,&PacketLength);
    DEBUGMSG(ZONE_XMIT, (TEXT("The Packet length is %d bytes.\r\n"),PacketLength));
    
    // Skip 0 length copies
    if (PacketLength == 0) {
        return NDIS_STATUS_SUCCESS;
    }

    if (PacketLength >= 0x800) {
        DEBUGMSG(ZONE_ERROR, (TEXT("CelanSend : The Packet is too big(%d bytes)\r\n"),PacketLength));
        return NDIS_STATUS_FAILURE;
    }

    // Calcurate buffer size
    cwBufferSize = 2 + 2 + PacketLength + 1;
    if (cwBufferSize & 1) {
        cwBufferSize++;
    }

    // Allocate TX buffer
    DEBUGMSG(ZONE_XMIT, (TEXT("Allocationg buffers...\r\n")));
    SelectBank(BANK2);
    WriteWord(MMU_CMD,MC_ALLOC|(cwBufferSize>>8));

    // Loop here until the request is satisfied, or we timeout
    for (i=0;(i<WAIT_LOOP)&&!(ReadWord(INT_REG) & ALLOC_INT);i++);
    if(i==WAIT_LOOP) {
        PrintRegs;
        DEBUGMSG(ZONE_ERROR, (TEXT("Allocationg timeout.\r\n")));
        return NDIS_STATUS_FAILURE;
    }

    // Get the allocated packet number
    wFrameHandle = ReadWord(PNR_ARR) >> 8;
    DEBUGMSG(ZONE_XMIT, (TEXT(" Packet #%d is allocated.\r\n"),wFrameHandle));
    
    // Set the packet number to be accessed
    WriteWord(PNR_ARR,wFrameHandle);

    // Initialize pointer
    WriteWord(POINTER,PTR_AUTOINC); // Auto increment mode

    // Get the first non-zero buffer
    NdisQueryBuffer(CurBuffer,(PVOID*)&CurBufAddress,&CurBufLen);
    while(CurBuffer && (CurBufLen == 0)) {
        NdisGetNextBuffer(CurBuffer,&CurBuffer);
        NdisQueryBuffer(CurBuffer,(PVOID*)&CurBufAddress,&CurBufLen);
    }

    // Write the Status word
    WriteWord(DATA_1,0);

    // Write the byte count
    WriteWord(DATA_1,cwBufferSize);
    
    do {
        DEBUGMSG(ZONE_XMIT, (TEXT("Buffer %x = %d byte.\r\n"),CurBufAddress,CurBufLen));

        while(CurBufLen) {
            DEBUGMSG(ZONE_XMIT, (TEXT("%02x "),*CurBufAddress));
            if (CurHiByte) {
                CurData |= (*CurBufAddress)<<8;
                WriteWord(DATA_1,CurData);
                CurHiByte = FALSE;
            } else {
                CurData = *CurBufAddress;
                CurHiByte = TRUE;
            }
            CurBufAddress++;
            CurBufLen--;
            PacketLength--;
        }
        DEBUGMSG(ZONE_XMIT, (TEXT("\r\n")));

        //
        // Move to the next buffer
        //
        NdisGetNextBuffer(CurBuffer, &CurBuffer);

        if (CurBuffer){
            NdisQueryBuffer(CurBuffer, (PVOID *)&CurBufAddress, &CurBufLen);
        }
        //
        // Get address and length of the next buffer
        //
        while (CurBuffer && (CurBufLen == 0)) {
            NdisGetNextBuffer(CurBuffer, &CurBuffer);
            if (CurBuffer){
                NdisQueryBuffer(CurBuffer, (PVOID *)&CurBufAddress, &CurBufLen);
            }
        }
    } while (CurBuffer);
    
    if (PacketLength !=0 ) {
        DEBUGMSG(ZONE_ERROR,(TEXT("Fatal Error, packet length mismatch!!\r\r")));
    }

    // Write control byte
    if (CurHiByte) {
        CurData = CurData | 0x3000;
        WriteWord(DATA_1,CurData);
    } else {
        WriteWord(DATA_1,0x1000);
    }

    // Enqueue Frame number into TX FIFO
    DEBUGMSG(ZONE_XMIT, (TEXT("Start transmission.\r\n")));
    WriteWord(MMU_CMD, MC_ENQUEUE);

    Adapter->FramesXmitGood++;

    DEBUGMSG(ZONE_FUNCTION, (TEXT("-CELAN:Send\r\n")));
    return(NDIS_STATUS_SUCCESS);
}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美韩日一区二区三区四区| 成人精品gif动图一区| 久久久久久久久久久久久女国产乱| 成人免费视频一区二区| 石原莉奈一区二区三区在线观看| 欧美激情一二三区| 亚洲精品一区二区精华| 欧美日韩精品是欧美日韩精品| 国产高清久久久久| 强制捆绑调教一区二区| 夜夜操天天操亚洲| 国产欧美日韩激情| 日韩欧美一区二区三区在线| 国产精品久久三| 蜜臀av性久久久久av蜜臀妖精| 国产精品毛片大码女人| 欧美成人伊人久久综合网| 欧美最新大片在线看| 不卡一区在线观看| 国产精品影视天天线| 婷婷久久综合九色国产成人| 亚洲夂夂婷婷色拍ww47| 国产精品成人免费在线| 久久精品夜色噜噜亚洲aⅴ| 欧美一区二区三区免费观看视频| 欧美午夜寂寞影院| 一本大道久久a久久综合| 成人av片在线观看| 成人精品视频.| 国产福利不卡视频| 国产毛片精品一区| 国内精品视频666| 精品一区二区在线观看| 美女精品自拍一二三四| 美女诱惑一区二区| 另类小说一区二区三区| 日本视频在线一区| 日韩**一区毛片| 日韩电影免费在线观看网站| 8v天堂国产在线一区二区| 色婷婷综合久色| av电影天堂一区二区在线观看| 成人伦理片在线| 9人人澡人人爽人人精品| 99久久婷婷国产精品综合| 99久久夜色精品国产网站| 91色视频在线| 欧美亚洲国产一区在线观看网站| 91极品视觉盛宴| 欧美日韩亚洲不卡| 欧美一区二区三区四区高清| 51午夜精品国产| 欧美电影免费观看高清完整版 | 国产日韩欧美激情| 久久久.com| 中文字幕亚洲在| 亚洲黄色av一区| 婷婷夜色潮精品综合在线| 九九精品视频在线看| 国产老女人精品毛片久久| 成+人+亚洲+综合天堂| aaa亚洲精品一二三区| 国产精品毛片大码女人| 国产精品毛片a∨一区二区三区| 综合在线观看色| 一个色在线综合| 麻豆专区一区二区三区四区五区| 狠狠色伊人亚洲综合成人| 成人午夜短视频| 在线中文字幕一区| 日韩三级精品电影久久久| 2024国产精品| 亚洲免费成人av| 免费成人你懂的| 成人激情午夜影院| 欧美三级视频在线播放| 亚洲精品在线免费观看视频| 国产精品国产三级国产普通话99 | 夜夜嗨av一区二区三区网页| 五月天久久比比资源色| 国产精品一区二区久久不卡| 色婷婷综合久久久久中文| 777久久久精品| 中文字幕一区二区不卡 | 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 亚洲欧美日韩系列| 久久精品国产色蜜蜜麻豆| 成人高清在线视频| 51精品久久久久久久蜜臀| 亚洲国产岛国毛片在线| 天堂蜜桃一区二区三区 | 日韩视频不卡中文| 国产精品高潮呻吟| 久久国产剧场电影| 色视频成人在线观看免| 久久午夜羞羞影院免费观看| 一区二区三区 在线观看视频| 麻豆精品一区二区综合av| 99这里只有久久精品视频| 日韩一区二区免费在线电影| 亚洲男人电影天堂| 国产精品一区二区视频| 欧美一卡在线观看| 一区二区三区国产豹纹内裤在线| 国产精品一区久久久久| 在线不卡一区二区| 亚洲精品自拍动漫在线| 国产成人精品一区二| 日韩一区二区在线观看视频播放| 久久不见久久见中文字幕免费| 综合在线观看色| 精品一区二区三区的国产在线播放 | 欧美精品一区二区三区蜜臀| 亚洲高清一区二区三区| 一本到一区二区三区| 中文字幕中文乱码欧美一区二区| 精品一区二区在线观看| 日韩视频123| 奇米777欧美一区二区| 欧美群妇大交群的观看方式| 亚洲欧美日韩久久精品| 91欧美一区二区| 18成人在线观看| jiyouzz国产精品久久| 日本一区二区三区国色天香| 国模一区二区三区白浆| 欧美成人激情免费网| 免费在线观看不卡| 欧美一区二区久久| 日韩精品1区2区3区| 欧美日韩1区2区| 视频在线观看国产精品| 7777精品伊人久久久大香线蕉| 亚洲国产视频直播| 欧美高清精品3d| 全国精品久久少妇| 日韩精品在线看片z| 一区二区在线观看av| 日韩电影免费在线| 91精品国产综合久久婷婷香蕉 | 日韩亚洲欧美在线| 久久精工是国产品牌吗| 日韩一区和二区| 国精产品一区一区三区mba桃花| 亚洲精品一区二区三区四区高清| 国产综合久久久久久鬼色| 久久久久久久av麻豆果冻| 成人一区在线看| 综合在线观看色| 欧美日韩高清一区| 美腿丝袜在线亚洲一区| 久久久亚洲国产美女国产盗摄| 国产二区国产一区在线观看| 国产精品久久久久久久久动漫| 91天堂素人约啪| 五月婷婷激情综合网| 精品国产乱码久久久久久蜜臀| 国产精品 日产精品 欧美精品| 国产精品视频一二三区| 色8久久人人97超碰香蕉987| 天涯成人国产亚洲精品一区av| 欧美一区在线视频| 国产福利一区二区三区视频在线| 中文字幕在线播放不卡一区| 欧美午夜电影一区| 精品国产人成亚洲区| 国产精品免费丝袜| 91久久久免费一区二区| 日韩电影在线观看电影| 久久精品在线免费观看| 色欧美日韩亚洲| 精品一区二区三区不卡| 亚洲欧洲精品一区二区三区| 欧美酷刑日本凌虐凌虐| 国产精品乡下勾搭老头1| 亚洲精品免费看| 日韩精品专区在线影院观看| 91在线精品一区二区| 日本欧美在线观看| 亚洲色图清纯唯美| 日韩欧美国产午夜精品| 97久久精品人人做人人爽| 免费观看久久久4p| 中文字幕一区二区三| 91精品国产美女浴室洗澡无遮挡| 国产成人精品一区二| 亚洲国产精品欧美一二99| 国产亚洲欧洲997久久综合| 色爱区综合激月婷婷| 风间由美一区二区三区在线观看| 亚洲夂夂婷婷色拍ww47| 欧美韩日一区二区三区| 日韩三级伦理片妻子的秘密按摩| 色婷婷精品大视频在线蜜桃视频| 狠狠狠色丁香婷婷综合激情| 亚洲bdsm女犯bdsm网站| 亚洲欧美一区二区三区久本道91 | 欧美美女一区二区在线观看| 国产综合色精品一区二区三区| 一级精品视频在线观看宜春院 |