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

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

?? routines.c

?? Intel EtherExpressTM PRO/100+ Ethernet 網卡在Windows2000/xp下的PCI驅動程序源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************
** COPYRIGHT (C) 1994-1997 INTEL CORPORATION                               **
** DEVELOPED FOR MICROSOFT BY INTEL CORP., HILLSBORO, OREGON               **
** HTTP://WWW.INTEL.COM/                                                   **
** THIS FILE IS PART OF THE INTEL ETHEREXPRESS PRO/100B(TM) AND            **
** ETHEREXPRESS PRO/100+(TM) NDIS 5.0 MINIPORT SAMPLE DRIVER               **
****************************************************************************/

/****************************************************************************
Module Name:
    routines.c

This driver runs on the following hardware:
    - 82558 based PCI 10/100Mb ethernet adapters
    (aka Intel EtherExpress(TM) PRO Adapters)

Environment:
    Kernel Mode - Or whatever is the equivalent on WinNT

Revision History
    - JCB 8/14/97 Example Driver Created
    - Dchen 11-01-99    Modified for the new sample driver
*****************************************************************************/

#include "precomp.h"
#pragma hdrstop
#pragma warning (disable: 4514 4706)

//-----------------------------------------------------------------------------
// Procedure:   MdiWrite
//
// Description: This routine will write a value to the specified MII register
//              of an external MDI compliant device (e.g. PHY 100).  The
//              command will execute in polled mode.
//
// Arguments:
//      Adapter - ptr to Adapter object instance
//      RegAddress - The MII register that we are writing to
//      PhyAddress - The MDI address of the Phy component.
//      DataValue - The value that we are writing to the MII register.
//
// Returns:
//      NOTHING
//-----------------------------------------------------------------------------
VOID MdiWrite(
    IN PMP_ADAPTER Adapter,
    IN ULONG RegAddress,
    IN ULONG PhyAddress,
    IN USHORT DataValue)
{
    BOOLEAN bResult;

    // Issue the write command to the MDI control register.
    Adapter->CSRAddress->MDIControl = (((ULONG) DataValue) |
                                          (RegAddress << 16) |
                                          (PhyAddress << 21) |
                                          (MDI_WRITE << 26));

    // wait 20usec before checking status
    NdisStallExecution(20);

    // wait 2 seconds for the mdi write to complete
    MP_STALL_AND_WAIT(Adapter->CSRAddress->MDIControl & MDI_PHY_READY, 2000, bResult);
    
    if (!bResult)
    {
        MP_SET_HARDWARE_ERROR(Adapter);
    }
}


//-----------------------------------------------------------------------------
// Procedure:   MdiRead
//
// Description: This routine will read a value from the specified MII register
//              of an external MDI compliant device (e.g. PHY 100), and return
//              it to the calling routine.  The command will execute in polled
//              mode.
//
// Arguments:
//      Adapter - ptr to Adapter object instance
//      RegAddress - The MII register that we are reading from
//      PhyAddress - The MDI address of the Phy component.
//      Recoverable - Whether the hardware error(if any)if recoverable or not
//
// Results:
//      DataValue - The value that we read from the MII register.
//
// Returns:
//     None
//-----------------------------------------------------------------------------
BOOLEAN MdiRead(
    IN PMP_ADAPTER Adapter,
    IN ULONG RegAddress,
    IN ULONG PhyAddress,
    IN BOOLEAN  Recoverable,
    IN OUT PUSHORT DataValue)
{
    BOOLEAN bResult;
               
    // Issue the read command to the MDI control register.
    Adapter->CSRAddress->MDIControl = ((RegAddress << 16) |
                                          (PhyAddress << 21) |
                                          (MDI_READ << 26));

    // wait 20usec before checking status
    NdisStallExecution(20);

    // Wait up to 2 seconds for the mdi read to complete
    MP_STALL_AND_WAIT(Adapter->CSRAddress->MDIControl & MDI_PHY_READY, 2000, bResult);
    if (!bResult)
    {
        if (!Recoverable)
        {
            MP_SET_NON_RECOVER_ERROR(Adapter);
        }
        MP_SET_HARDWARE_ERROR(Adapter);
        return bResult;
    }

    *DataValue = (USHORT) Adapter->CSRAddress->MDIControl;
    return bResult;

}


//-----------------------------------------------------------------------------
// Procedure:   DumpStatsCounters
//
// Description: This routine will dump and reset the 82557's internal
//              Statistics counters.  The current stats dump values will be
//              added to the "Adapter's" overall statistics.
// Arguments:
//      Adapter - ptr to Adapter object instance
//
// Returns:
//      NOTHING
//-----------------------------------------------------------------------------
VOID DumpStatsCounters(
    IN PMP_ADAPTER Adapter)
{
    BOOLEAN bResult;

    // The query is for a driver statistic, so we need to first
    // update our statistics in software.

    // clear the dump counters complete DWORD
    Adapter->StatsCounters->CommandComplete = 0;

    NdisAcquireSpinLock(&Adapter->Lock);
    
    // Dump and reset the hardware's statistic counters
    D100IssueScbCommand(Adapter, SCB_CUC_DUMP_RST_STAT, TRUE);

    // Restore the resume transmit software flag.  After the dump counters
    // command is issued, we should do a WaitSCB before issuing the next send.
    Adapter->ResumeWait = TRUE;
    
    NdisReleaseSpinLock(&Adapter->Lock);

    // wait up to 2 seconds for the dump/reset to complete
    MP_STALL_AND_WAIT(Adapter->StatsCounters->CommandComplete == 0xA007, 2000, bResult);
    if (!bResult)
    {
        MP_SET_HARDWARE_ERROR(Adapter);
        return;
    }

    // Output the debug counters to the debug terminal.
    DBGPRINT(MP_INFO, ("Good Transmits %d\n", Adapter->StatsCounters->XmtGoodFrames));
    DBGPRINT(MP_INFO, ("Good Receives %d\n", Adapter->StatsCounters->RcvGoodFrames));
    DBGPRINT(MP_INFO, ("Max Collisions %d\n", Adapter->StatsCounters->XmtMaxCollisions));
    DBGPRINT(MP_INFO, ("Late Collisions %d\n", Adapter->StatsCounters->XmtLateCollisions));
    DBGPRINT(MP_INFO, ("Transmit Underruns %d\n", Adapter->StatsCounters->XmtUnderruns));
    DBGPRINT(MP_INFO, ("Transmit Lost CRS %d\n", Adapter->StatsCounters->XmtLostCRS));
    DBGPRINT(MP_INFO, ("Transmits Deferred %d\n", Adapter->StatsCounters->XmtDeferred));
    DBGPRINT(MP_INFO, ("One Collision xmits %d\n", Adapter->StatsCounters->XmtSingleCollision));
    DBGPRINT(MP_INFO, ("Mult Collision xmits %d\n", Adapter->StatsCounters->XmtMultCollisions));
    DBGPRINT(MP_INFO, ("Total Collisions %d\n", Adapter->StatsCounters->XmtTotalCollisions));

    DBGPRINT(MP_INFO, ("Receive CRC errors %d\n", Adapter->StatsCounters->RcvCrcErrors));
    DBGPRINT(MP_INFO, ("Receive Alignment errors %d\n", Adapter->StatsCounters->RcvAlignmentErrors));
    DBGPRINT(MP_INFO, ("Receive no resources %d\n", Adapter->StatsCounters->RcvResourceErrors));
    DBGPRINT(MP_INFO, ("Receive overrun errors %d\n", Adapter->StatsCounters->RcvOverrunErrors));
    DBGPRINT(MP_INFO, ("Receive CDT errors %d\n", Adapter->StatsCounters->RcvCdtErrors));
    DBGPRINT(MP_INFO, ("Receive short frames %d\n", Adapter->StatsCounters->RcvShortFrames));

    // update packet counts
    Adapter->GoodTransmits += Adapter->StatsCounters->XmtGoodFrames;
    Adapter->GoodReceives += Adapter->StatsCounters->RcvGoodFrames;

    // update transmit error counts
    Adapter->TxAbortExcessCollisions += Adapter->StatsCounters->XmtMaxCollisions;
    Adapter->TxLateCollisions += Adapter->StatsCounters->XmtLateCollisions;
    Adapter->TxDmaUnderrun += Adapter->StatsCounters->XmtUnderruns;
    Adapter->TxLostCRS += Adapter->StatsCounters->XmtLostCRS;
    Adapter->TxOKButDeferred += Adapter->StatsCounters->XmtDeferred;
    Adapter->OneRetry += Adapter->StatsCounters->XmtSingleCollision;
    Adapter->MoreThanOneRetry += Adapter->StatsCounters->XmtMultCollisions;
    Adapter->TotalRetries += Adapter->StatsCounters->XmtTotalCollisions;

    // update receive error counts
    Adapter->RcvCrcErrors += Adapter->StatsCounters->RcvCrcErrors;
    Adapter->RcvAlignmentErrors += Adapter->StatsCounters->RcvAlignmentErrors;
    Adapter->RcvResourceErrors += Adapter->StatsCounters->RcvResourceErrors;
    Adapter->RcvDmaOverrunErrors += Adapter->StatsCounters->RcvOverrunErrors;
    Adapter->RcvCdtFrames += Adapter->StatsCounters->RcvCdtErrors;
    Adapter->RcvRuntErrors += Adapter->StatsCounters->RcvShortFrames;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美α欧美αv大片| 欧美国产激情二区三区| 国产成人在线观看| 亚洲精品乱码久久久久久久久| 欧美肥妇free| 97久久人人超碰| 国产一区在线不卡| 日韩av一区二区三区四区| 国产精品美女久久久久aⅴ | 日韩欧美国产三级电影视频| 一本到不卡精品视频在线观看| 久久91精品久久久久久秒播| 图片区小说区区亚洲影院| 亚洲欧美日韩在线播放| 国产亚洲美州欧州综合国| 欧美日韩国产小视频| 99国产欧美久久久精品| 国产剧情在线观看一区二区| 日韩福利视频导航| 亚洲一区二区三区激情| ㊣最新国产の精品bt伙计久久| 久久影院视频免费| 日韩亚洲欧美一区二区三区| 欧美日韩精品是欧美日韩精品| 色综合天天视频在线观看| 成人性生交大片免费看视频在线| 狠狠狠色丁香婷婷综合激情 | 欧美变态口味重另类| 91麻豆精品国产综合久久久久久| 色婷婷亚洲婷婷| 色综合天天综合网国产成人综合天| 国产91精品免费| 国产精品2024| 国产高清视频一区| 国产精品亚洲午夜一区二区三区| 久久99精品久久只有精品| 蜜桃久久av一区| 激情小说欧美图片| 看片的网站亚洲| 精品一区二区在线视频| 久久电影网电视剧免费观看| 毛片av一区二区| 韩国女主播一区二区三区| 国精产品一区一区三区mba桃花 | 成人精品一区二区三区中文字幕| 国产精品一区二区果冻传媒| 国产精品一色哟哟哟| 国产成人综合网站| 国产精品12区| av高清不卡在线| 欧美在线观看视频一区二区三区| 欧美日韩在线一区二区| 欧美一区二区久久| 久久免费视频一区| 国产精品丝袜久久久久久app| 国产精品卡一卡二卡三| 亚洲欧洲另类国产综合| 亚洲自拍偷拍九九九| 偷拍自拍另类欧美| 国内成人自拍视频| 成人精品国产免费网站| 91福利资源站| 欧美大片一区二区三区| 国产精品乱人伦| 亚洲三级在线观看| 亚洲第四色夜色| 国产在线国偷精品免费看| 99热国产精品| 3d动漫精品啪啪| 国产日韩欧美精品电影三级在线| 国产精品人妖ts系列视频| 亚洲图片欧美视频| 国产最新精品免费| 在线观看免费一区| 欧美一区二区三区四区视频| 久久久久国产成人精品亚洲午夜| 亚洲欧美一区二区三区国产精品| 性欧美疯狂xxxxbbbb| 紧缚捆绑精品一区二区| 91亚洲午夜精品久久久久久| 在线不卡a资源高清| 国产日韩av一区| 天天影视涩香欲综合网| 成人视屏免费看| 在线成人午夜影院| 中文字幕日韩一区| 日本欧美久久久久免费播放网| 国产又粗又猛又爽又黄91精品| 欧美综合一区二区三区| 国产亚洲欧美激情| 日本亚洲免费观看| 99在线精品一区二区三区| 欧美一级专区免费大片| 成人免费一区二区三区在线观看| 日韩avvvv在线播放| 99精品在线免费| 精品国产在天天线2019| 亚洲成人自拍网| 成人黄色av网站在线| 日韩一级免费观看| 亚洲一区二区美女| 国产suv精品一区二区6| 69堂精品视频| 一二三四区精品视频| 国产成人精品www牛牛影视| 欧美一区二区视频在线观看2020 | 亚洲色欲色欲www| 激情综合色综合久久综合| 欧美亚洲日本国产| 亚洲欧洲99久久| 国产一区二区视频在线| 91麻豆精品国产91| 一区二区三区电影在线播| 国产成人99久久亚洲综合精品| 欧美变态tickle挠乳网站| 亚洲1区2区3区视频| 91同城在线观看| 国产精品视频线看| 国产精品一级片| 日韩精品一区二区三区蜜臀| 五月激情综合婷婷| 欧美专区日韩专区| 亚洲综合色婷婷| 91女神在线视频| 亚洲欧美一区二区视频| 成人av手机在线观看| 国产欧美日韩精品一区| 国产资源在线一区| 久久影院午夜论| 国产成人8x视频一区二区| 久久久久久一二三区| 国内精品久久久久影院色| 精品国产伦理网| 国产一区二区三区免费播放| 精品欧美一区二区久久| 麻豆国产欧美一区二区三区| 日韩欧美的一区二区| 青草av.久久免费一区| 欧美日韩高清一区| 欧美aaaaa成人免费观看视频| 91麻豆精品国产自产在线| 蜜臂av日日欢夜夜爽一区| 日韩欧美一级二级三级久久久| 精品亚洲国内自在自线福利| 久久综合99re88久久爱| 粉嫩绯色av一区二区在线观看| 中文字幕第一区二区| 91亚洲国产成人精品一区二三| 亚洲精品成人a在线观看| 欧美性猛交一区二区三区精品| 午夜亚洲福利老司机| 欧美成人一区二区三区片免费| 麻豆视频观看网址久久| 国产视频一区不卡| 91麻豆精品在线观看| 一区二区在线观看av| 欧美日韩国产高清一区| 九九在线精品视频| 国产欧美一区二区精品仙草咪| 99精品1区2区| 日韩高清欧美激情| 国产亚洲视频系列| 色综合色狠狠天天综合色| 亚洲第一福利视频在线| 日韩欧美在线123| 成人深夜在线观看| 夜夜精品视频一区二区| 日韩一区二区在线看| 从欧美一区二区三区| 亚洲在线视频网站| 亚洲精品一线二线三线无人区| 成人性生交大片免费看中文网站| 亚洲一区二区三区三| 精品99一区二区| 色先锋资源久久综合| 免费看日韩a级影片| 欧美精彩视频一区二区三区| 欧美中文字幕一区| 韩国毛片一区二区三区| 一区二区三区四区国产精品| 日韩一区二区三免费高清| a在线欧美一区| 日韩成人一级片| 日韩一区在线播放| 欧美tickling网站挠脚心| 91麻豆免费看| 国产福利一区二区三区| 亚洲国产精品久久久久婷婷884| www国产亚洲精品久久麻豆| 欧美写真视频网站| 国产99精品视频| 日韩电影一区二区三区四区| 日本一区二区三区电影| 日韩欧美中文字幕精品| 在线亚洲一区观看| 国产成人在线影院| 蜜桃视频免费观看一区| 亚洲午夜久久久久中文字幕久| 欧美激情中文字幕| 精品久久久久久无|