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

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

?? routines.c

?? Intel EtherExpressTM PRO/100+ Ethernet 網(wǎng)卡在Windows2000/xp下的PCI驅(qū)動程序源代碼
?? 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;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人美女在线观看| 久久久精品tv| 亚洲第一搞黄网站| 欧美日韩aaa| 偷拍自拍另类欧美| 欧美本精品男人aⅴ天堂| 麻豆国产精品官网| 亚洲精品在线三区| 成人v精品蜜桃久久一区| 亚洲人成网站精品片在线观看| 色狠狠综合天天综合综合| 日本伊人午夜精品| 久久综合狠狠综合| 日本韩国一区二区| 韩国在线一区二区| 国产精品激情偷乱一区二区∴| 99精品欧美一区二区三区小说 | 粉嫩高潮美女一区二区三区| 亚洲欧美偷拍三级| 91精品在线麻豆| 成人妖精视频yjsp地址| 亚洲123区在线观看| 中文在线资源观看网站视频免费不卡| 高清久久久久久| 丝袜美腿亚洲色图| 成人欧美一区二区三区白人| 欧美一卡二卡在线| 色哟哟精品一区| 久久99国产精品麻豆| 亚洲自拍另类综合| 亚洲视频电影在线| 国产日韩欧美在线一区| 欧美精品18+| 色婷婷久久综合| 成人精品一区二区三区四区| 国产99久久精品| 黑人精品欧美一区二区蜜桃| 天天av天天翘天天综合网| 亚洲精选视频免费看| 国产日韩亚洲欧美综合| 欧美变态口味重另类| 91精品国产欧美一区二区| 欧美性大战久久久久久久| 99久久夜色精品国产网站| 国产精品一区二区三区乱码| 久久99久久久久| 久久国产精品色| 激情综合五月婷婷| 国产美女av一区二区三区| 韩国av一区二区三区在线观看| 奇米888四色在线精品| 国产精一品亚洲二区在线视频| 国内欧美视频一区二区| 国产乱码字幕精品高清av| 成人一区二区三区| 色婷婷av一区二区三区软件| 欧美日韩在线播放三区| 91精品国产91久久久久久一区二区 | 亚洲一区二区三区小说| 午夜久久久影院| 蜜臀精品一区二区三区在线观看| 97久久精品人人爽人人爽蜜臀| 97成人超碰视| 日韩欧美一级二级三级| 欧美国产一区二区在线观看| 久久影院视频免费| 亚洲欧美一区二区三区久本道91| 亚洲国产成人porn| 国产一区二区不卡在线| 99re成人在线| 国产亚洲欧美色| 婷婷综合另类小说色区| 高清av一区二区| 在线播放中文字幕一区| 久久久久久久av麻豆果冻| 亚洲日本一区二区| 精品一区二区三区在线播放视频 | 日韩成人午夜精品| 不卡高清视频专区| 精品国产一区二区三区不卡| 一区二区三区四区在线| 成人一区二区视频| www久久久久| 欧美aaaaa成人免费观看视频| 99久久久免费精品国产一区二区| 精品国产区一区| 三级精品在线观看| 欧美精品黑人性xxxx| 一区二区三区产品免费精品久久75| 国产精品一区二区三区乱码| 日韩欧美电影在线| 日日夜夜免费精品| 欧美日韩在线亚洲一区蜜芽| 一区二区免费在线| 在线精品视频小说1| 一区二区三区 在线观看视频 | 亚洲va在线va天堂| 欧美午夜在线一二页| 日韩va亚洲va欧美va久久| 欧美一卡二卡在线| 狠狠色综合日日| 国产精品毛片久久久久久久| 成人午夜看片网址| 亚洲自拍偷拍麻豆| 精品欧美一区二区三区精品久久| 男人的j进女人的j一区| 久久老女人爱爱| 在线视频欧美区| 黄色日韩网站视频| 亚洲精品国产无天堂网2021| 欧美日韩卡一卡二| 国产91清纯白嫩初高中在线观看| 18成人在线视频| 91精品国产综合久久福利| 国产69精品久久久久毛片| 亚洲激情在线播放| 精品盗摄一区二区三区| 91亚洲精品一区二区乱码| 青青草国产成人99久久| 国产精品麻豆欧美日韩ww| 欧美剧情电影在线观看完整版免费励志电影 | 欧美国产一区二区在线观看| 欧美色图在线观看| 极品美女销魂一区二区三区| 一区二区三区资源| 2020国产精品| 欧美精品乱码久久久久久按摩| 国产电影精品久久禁18| 男女男精品视频网| 亚洲综合久久久| 国产精品久久一卡二卡| 精品盗摄一区二区三区| 91精品在线麻豆| 欧美日韩成人综合| 日本乱码高清不卡字幕| 丰满亚洲少妇av| 成人小视频在线观看| 国内精品视频666| 麻豆国产精品一区二区三区| 日本中文字幕一区| 日韩激情视频网站| 石原莉奈在线亚洲二区| 日日摸夜夜添夜夜添国产精品 | 亚洲图片激情小说| 国产精品情趣视频| 中文字幕的久久| 国产精品国产三级国产普通话蜜臀| 欧美精品一区二区三区四区| 日韩精品一区二区三区视频| 日韩欧美亚洲一区二区| 日韩精品一区二区三区视频播放| 777亚洲妇女| 久久综合九色综合久久久精品综合| 久久精品一区四区| 国产精品福利一区| 偷窥国产亚洲免费视频| 精品在线一区二区三区| 成人性生交大片免费看中文网站| 97久久超碰精品国产| 8v天堂国产在线一区二区| 日韩你懂的电影在线观看| 国产精品色哟哟网站| 一区二区三区精品视频| 美女国产一区二区| 在线中文字幕不卡| 国产日韩亚洲欧美综合| 亚洲国产精品嫩草影院| 国产凹凸在线观看一区二区| 色综合婷婷久久| 日韩精品一区二区三区中文不卡 | 激情小说欧美图片| av一区二区三区| 69精品人人人人| 美女爽到高潮91| 91一区在线观看| 久久精品视频一区二区三区| 亚洲超碰精品一区二区| 成人短视频下载| 久久综合av免费| 日韩av高清在线观看| 色哟哟精品一区| 一区精品在线播放| 国产精品一区二区果冻传媒| 在线电影院国产精品| 亚洲精品国产精品乱码不99| 国产精品77777竹菊影视小说| 91精品国产入口在线| 亚洲精品成a人| 91麻豆产精品久久久久久| 中文欧美字幕免费| 东方欧美亚洲色图在线| 26uuu国产在线精品一区二区| 另类小说色综合网站| 欧美成人一区二区| 国精产品一区一区三区mba桃花 | 成人av免费在线观看| 中文字幕乱码日本亚洲一区二区| 国产一区二区三区久久久| 久久久99精品免费观看| 国内精品在线播放|