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

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

?? celan.c

?? Wince4.2 BSP for SH4 engineering development board
?? C
?? 第 1 頁 / 共 4 頁
字號:
        if (MediumArray[i] == NdisMedium802_3){

            break;

        }

    }

    if (i == MediumArraySize){
        DEBUGMSG(ZONE_INIT|ZONE_ERROR,
            (TEXT("CELAN:Initialize: No supported media\r\n")));
        return( NDIS_STATUS_UNSUPPORTED_MEDIA );

    } else {
        DEBUGMSG(ZONE_INIT, (TEXT("CELAN:Selected media is %d.\r\n"),i));
    }

    *SelectedMediumIndex = i;


    //
    // Set default values.
    //
    IoBaseAddr = DEFAULT_IOBASEADDR;
    InterruptNumber = DEFAULT_INTERRUPTNUMBER;
    MaxMulticastList = DEFAULT_MULTICASTLISTMAX;

    //
    // Allocate memory for the adapter block now.
    //
    Status = NdisAllocateMemory( (PVOID *)&Adapter,
                   sizeof(CELAN_ADAPTER),
                   0,
                   HighestAcceptableMax
                   );

    if (Status != NDIS_STATUS_SUCCESS) {

        DEBUGMSG(ZONE_INIT|ZONE_ERROR,
            (TEXT("CELAN:Initialize: NdisAllocateMemory(CELAN_ADAPTER) failed\r\n")));
        return Status;

    }

    //
    // Clear out the adapter block, which sets all default values to FALSE,
    // or NULL.
    //
    NdisZeroMemory (Adapter, sizeof(CELAN_ADAPTER));

    //
    // Open the configuration space.
    //
    NdisOpenConfiguration(
            &Status,
            &ConfigHandle,
            ConfigurationHandle
            );

    if (Status != NDIS_STATUS_SUCCESS) {

        NdisFreeMemory(Adapter, sizeof(CELAN_ADAPTER), 0);

        DEBUGMSG(ZONE_INIT,
            (TEXT("CELAN:Initialize: NdisOpenconfiguration failed 0x%x\r\n"),
            Status));
        return Status;

    }
	
	//
    // Initialize Statistics
    // 
    Adapter->FrameAlignmentErrors = 0;
    Adapter->CrcErrors = 0;
    Adapter->MissedPackets = 0;

    //
    //  Read in the card type.
    //
    NdisReadConfiguration(
            &Status,
            &ReturnedValue,
            ConfigHandle,
            &CardTypeStr,
            NdisParameterHexInteger
            );
    if (Status == NDIS_STATUS_SUCCESS)
        Adapter->CardType = (UINT)ReturnedValue->ParameterData.IntegerData;
    else
        DEBUGMSG(ZONE_INIT, (TEXT("CELAN:NdisReadConfigration(CardType) failed.\r\n")));

    //
    // Read net address
    //
    NdisReadNetworkAddress(
                    &Status,
                    &NetAddress,
                    &Length,
                    ConfigHandle
                    );

    if ((Length == CELAN_LENGTH_OF_ADDRESS) &&
        (Status == NDIS_STATUS_SUCCESS)) {

        //
        // Save the address that should be used.
        //
        NdisMoveMemory(
                Adapter->StationAddress,
                NetAddress,
                CELAN_LENGTH_OF_ADDRESS
                );

    }

#if NDIS_NT
    //
    // Disallow multiple adapters in the same MP machine because of hardware
    // problems this results in random packet corruption.
    //
    if ((NdisSystemProcessorCount() > 1) &&
        (CelanMiniportBlock.AdapterQueue != NULL)) {

        ConfigError = TRUE;
        ConfigErrorValue = (ULONG)NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION;
        DEBUGMSG(ZONE_INIT,
            (TEXT("CELAN:Initialize: Invalid MP config\r\n")));
        goto RegisterAdapter;
    }
#endif


    //
    // Read Bus Type (for NE2/AE2 support)
    //

    NdisReadConfiguration(
            &Status,
            &ReturnedValue,
            ConfigHandle,
            &BusTypeStr,
            NdisParameterHexInteger
            );

    if (Status == NDIS_STATUS_SUCCESS) {

        Adapter->BusType = (UCHAR)ReturnedValue->ParameterData.IntegerData;

    }
    else
        DEBUGMSG(ZONE_INIT, (TEXT("CELAN:NdisReadConfigration(BusType) failed.\r\n")));

    if (!SkipIobaseAndInterrupt) {

        //
        // Read I/O Address
        //
        NdisReadConfiguration(
                &Status,
                &ReturnedValue,
                ConfigHandle,
                &IOAddressStr,
                NdisParameterHexInteger
                );

        if (Status == NDIS_STATUS_SUCCESS) {

            IoBaseAddr = (PVOID)(ReturnedValue->ParameterData.IntegerData);

        } else
        	DEBUGMSG(ZONE_INIT, (TEXT("CELAN:NdisReadConfigration(IOAddress) failed.\r\n")));

        //
        // Check that the value is valid.
        //
        if ((IoBaseAddr < (PVOID)MIN_IOBASEADDR) ||
            (IoBaseAddr > (PVOID)MAX_IOBASEADDR)) {

            ConfigError = TRUE;
            ConfigErrorValue = (ULONG)IoBaseAddr;
            DEBUGMSG(ZONE_INIT,
                (TEXT("CELAN:Intialize: Invalid IoBaseAddr 0x%x\r\n"),
                IoBaseAddr));
            goto RegisterAdapter;

        }

        //
        // Read interrupt number
        //
#if NDIS_NT
        NdisReadConfiguration(
                &Status,
                &ReturnedValue,
                ConfigHandle,
                &InterruptStr,
                NdisParameterHexInteger
                );
#else

        NdisReadConfiguration(
                &Status,
                &ReturnedValue,
                ConfigHandle,
                &InterruptStr,
                NdisParameterInteger
                );
#endif

        if (Status == NDIS_STATUS_SUCCESS) {

            InterruptNumber = (CCHAR)(ReturnedValue->ParameterData.IntegerData);

        } else
        	DEBUGMSG(ZONE_INIT, (TEXT("CELAN:NdisReadConfigration(Interrupt) failed.\r\n")));

        //
        // Verify that the value is valid.
        //
        if ((InterruptNumber < MIN_IRQ) ||
            (InterruptNumber > MAX_IRQ)) {

            ConfigError = TRUE;
            ConfigErrorValue = (ULONG)InterruptNumber;
            DEBUGMSG(ZONE_INIT,
                (TEXT("CELAN:Intialize: Invalid Int 0x%x\r\n"),
                InterruptNumber));
            goto RegisterAdapter;

        }
    }

    //
    // Read MaxMulticastList
    //
    NdisReadConfiguration(
            &Status,
            &ReturnedValue,
            ConfigHandle,
            &MaxMulticastListStr,
            NdisParameterInteger
            );

    if (Status == NDIS_STATUS_SUCCESS) {

        MaxMulticastList = ReturnedValue->ParameterData.IntegerData;
		if (ReturnedValue->ParameterData.IntegerData <= DEFAULT_MULTICASTLISTMAX)
	        MaxMulticastList = ReturnedValue->ParameterData.IntegerData;
    } else
        	DEBUGMSG(ZONE_INIT, (TEXT("CELAN:NdisReadConfigration(Attrbute MemorySize) failed.\r\n")));
	        DEBUGMSG(ZONE_INIT, (TEXT("Status = 0x%x, NDIS_STATUS_SUCCESS = 0x%x\r\n"),Status,NDIS_STATUS_SUCCESS));


RegisterAdapter:

    //
    // Now to use this information and register with the wrapper
    // and initialize the adapter.
    //

    //
    // First close the configuration space.
    //
    NdisCloseConfiguration(ConfigHandle);

    DEBUGMSG(ZONE_INIT, (TEXT("CELAN:Registering adapter # buffers %ld\r\n"),
        DEFAULT_NUMBUFFERS));
    DEBUGMSG(ZONE_INIT, (TEXT("CELAN:Card type: 0x%x\r\n"), Adapter->CardType));
    DEBUGMSG(ZONE_INIT, (TEXT("CELAN:I/O base addr 0x%lx\r\n"), IoBaseAddr));
    DEBUGMSG(ZONE_INIT, (TEXT("CELAN:interrupt number %ld\r\n"),
        InterruptNumber));
    DEBUGMSG(ZONE_INIT, (TEXT("CELAN:max multicast %ld\r\n"),
        DEFAULT_MULTICASTLISTMAX));
    DEBUGMSG(ZONE_INIT, (TEXT("CELAN:attribute memory address 0x%X\r\n"),
        Adapter->AttributeMemoryAddress));
    DEBUGMSG(ZONE_INIT, (TEXT("CELAN:attribute memory size 0x%X\r\n"),
        Adapter->AttributeMemorySize));
    DEBUGMSG(ZONE_INIT, (TEXT("CELAN:Bus Type: %d\r\n"), Adapter->BusType));



    //
    // Set up the parameters.
    //
    Adapter->NumBuffers = DEFAULT_NUMBUFFERS;
    Adapter->IoBaseAddr = IoBaseAddr;

    Adapter->InterruptNumber = InterruptNumber;

    Adapter->MulticastListMax = MaxMulticastList;
    Adapter->MiniportAdapterHandle = MiniportAdapterHandle;

    Adapter->MaxLookAhead = CELAN_MAX_LOOKAHEAD;

    //
    // Now do the work.
    //
    if (CelanRegisterAdapter(Adapter,
          ConfigurationHandle,
          ConfigError,
          ConfigErrorValue
          ) != NDIS_STATUS_SUCCESS) {

        //
        // CelanRegisterAdapter failed.
        //
        NdisFreeMemory(Adapter, sizeof(CELAN_ADAPTER), 0);
        DEBUGMSG(ZONE_INIT, (TEXT("CELAN:NdisRegisterAdapter failed.\r\n")));

        return NDIS_STATUS_FAILURE;

    }


    DEBUGMSG(ZONE_INIT, (TEXT("CELAN:Initialize succeeded\r\n")));

    DEBUGMSG(ZONE_FUNCTION, (TEXT("-CELAN:Initialize\r\n")));

    return NDIS_STATUS_SUCCESS;
}


#pragma NDIS_PAGEABLE_FUNCTION(CelanRegisterAdapter)
NDIS_STATUS
CelanRegisterAdapter(
    IN PCELAN_ADAPTER Adapter,
    IN NDIS_HANDLE ConfigurationHandle,
    IN BOOLEAN ConfigError,
    IN ULONG ConfigErrorValue
    )

/*++

Routine Description:

    Called when a new adapter should be registered. It allocates space for
    the adapter, initializes the adapter's block, registers resources
    with the wrapper and initializes the physical adapter.

Arguments:

    Adapter - The adapter structure.

    ConfigurationHandle - Handle passed to CelanInitialize.

    ConfigError - Was there an error during configuration reading.

    ConfigErrorValue - Value to log if there is an error.

Return Value:

    Indicates the success or failure of the registration.

--*/

{

    //
    // Temporary looping variable.
    //
//    UINT i;

    //
    // General purpose return from NDIS calls
    //
    NDIS_STATUS status;

    //
    // check that NumBuffers <= MAX_XMIT_BUFS
    //

    if (Adapter->NumBuffers > MAX_XMIT_BUFS)
        return(NDIS_STATUS_RESOURCES);

    //
    // Check for a configuration error
    //
    if (ConfigError)
    {
        //
        // Log Error and exit.
        //
        NdisWriteErrorLogEntry(
            Adapter->MiniportAdapterHandle,
            NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION,
            1,
            ConfigErrorValue
            );
        DEBUGMSG(ZONE_INIT,
            (TEXT("CELAN:RegisterAdapter: CelanInitialize had a config error %d\r\n"),
            ConfigErrorValue));

        return(NDIS_STATUS_FAILURE);
    }

    //
    // Inform the wrapper of the physical attributes of this adapter.
    //
    NdisMSetAttributes(
        Adapter->MiniportAdapterHandle,
        (NDIS_HANDLE)Adapter,
        FALSE,
        Adapter->BusType
    );

    //
    // Register the port addresses.
    //
    status = NdisMRegisterIoPortRange(
                 (PVOID *)(&(Adapter->IoPAddr)),
                 Adapter->MiniportAdapterHandle,
                 (ULONG)Adapter->IoBaseAddr,
                 0x20
             );

    if (status != NDIS_STATUS_SUCCESS)
        return(status);

    if (Adapter->IoPAddr == 0)
        return NDIS_STATUS_FAILURE;

    //
    // Initialize the card.
    //
    DEBUGMSG(ZONE_INIT,
        (TEXT("CELAN:RegisterAdapter calling CardInitialize\r\n")));

    if (!CardInitialize(Adapter))
    {
        //
        // Card seems to have failed.
        //

        DEBUGMSG(ZONE_INIT,
            (TEXT("CELAN:RegisterAdapter CardInitialize -- Failed\r\n")));

        RETAILMSG(1,(TEXT("CELAN:RegisterAdapter CardInitialize -- Failed\r\n")));


        NdisWriteErrorLogEntry(
            Adapter->MiniportAdapterHandle,
            NDIS_ERROR_CODE_ADAPTER_NOT_FOUND,
            0
        );

        status = NDIS_STATUS_ADAPTER_NOT_FOUND;

        goto fail2;
    }

    DEBUGMSG(ZONE_INIT,
        (TEXT("CELAN:RegisterAdapter CardInitialize  -- Success\r\n")));


    //
    // Initialize the receive variables.
    //
    Adapter->NicReceiveConfig = RCR_ENABLE | 0x0200; // RCR_REJECT_ERR;


    //
    // Read the Ethernet address off of the PROM.
    //
    if (!CardReadEthernetAddress(Adapter))
    {
        DEBUGMSG(ZONE_INIT,
            (TEXT("CELAN:RegisterAdapter Could not read the ethernet address\r\n")));

        RETAILMSG(1,(TEXT("CELAN:RegisterAdapter Could not read the ethernet address\r\n")));

        NdisWriteErrorLogEntry(
            Adapter->MiniportAdapterHandle,
            NDIS_ERROR_CODE_ADAPTER_NOT_FOUND,
            0
            );

        status = NDIS_STATUS_ADAPTER_NOT_FOUND;

        goto fail2;
    }

    //
    // Now initialize the NIC and Gate Array registers.
    //
//for LAN91C96    Adapter->NicInterruptMask = IM_TX_INT | IM_RCV_INT | IM_RX_OVRN_INT;
	  Adapter->NicInterruptMask = IM_TX_INT | IM_RCV_INT | IM_RX_OVRN_INT | IM_MD_INT;//for LAN91C111

    //
    // Link us on to the chain of adapters for this driver.
    //
    Adapter->NextAdapter = CelanMiniportBlock.AdapterQueue;
    CelanMiniportBlock.AdapterQueue = Adapter;


    //
    // Setup the card based on the initialization information
    //

    DEBUGMSG(ZONE_INIT, (TEXT("CELAN:RegisterAdapter CardSetup\r\n")));

    if (!CardSetup(Adapter))
    {
        //
        // The NIC could not be written to.
        //

        NdisWriteErrorLogEntry(

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合色鬼综合色| 成人av在线影院| 欧美日韩一区高清| 亚洲成人久久影院| 欧美日韩mp4| 日韩激情av在线| 日韩欧美一级在线播放| 韩国av一区二区三区| 国产日韩精品一区| 99久久综合精品| 亚洲精品伦理在线| 欧美日免费三级在线| 日本中文字幕一区| 国产无一区二区| 国产人久久人人人人爽| 成人sese在线| 亚洲国产一二三| 日韩一级免费观看| 国产高清无密码一区二区三区| 欧美—级在线免费片| 色久优优欧美色久优优| 久久精品久久99精品久久| 欧美激情一区二区三区蜜桃视频| 91色porny| 精品一区中文字幕| 一级日本不卡的影视| 日韩你懂的电影在线观看| 99久久亚洲一区二区三区青草| 亚洲成人av在线电影| 久久综合色综合88| 欧美三级中文字幕在线观看| 麻豆91免费看| 亚洲欧美一区二区三区极速播放 | 色综合咪咪久久| 男女性色大片免费观看一区二区 | 精品va天堂亚洲国产| 岛国一区二区三区| 五月婷婷欧美视频| 国产精品视频在线看| 欧美一级日韩免费不卡| 99久久99久久精品免费观看 | 美女www一区二区| 中文字幕在线不卡一区二区三区 | 蜜臂av日日欢夜夜爽一区| 中文字幕一区二区三区蜜月| 欧美丰满嫩嫩电影| 99国产精品国产精品毛片| 国产资源精品在线观看| 亚洲chinese男男1069| 国产精品国产馆在线真实露脸| 欧美日韩成人激情| 色综合久久精品| 国产91丝袜在线18| 精品一区二区日韩| 亚洲成年人网站在线观看| 国产精品美女www爽爽爽| 日韩一区二区免费在线观看| 日本精品视频一区二区三区| 国产黄色精品网站| 久久99精品久久只有精品| 亚洲一区二区三区四区五区黄| 一色桃子久久精品亚洲| 久久久久久亚洲综合| 日韩一区二区在线观看视频| 欧美电影一区二区三区| 欧美视频在线一区二区三区| 91蜜桃视频在线| www.亚洲激情.com| av动漫一区二区| 成人免费va视频| 粉嫩13p一区二区三区| 国产一区二区三区不卡在线观看| 免费看日韩a级影片| 免费成人在线影院| 毛片基地黄久久久久久天堂| 丝袜亚洲另类欧美| 亚洲成av人在线观看| 亚洲午夜电影在线观看| 亚洲一区在线观看视频| 亚洲一区二区三区小说| 亚洲国产视频直播| 日韩国产精品91| 日本不卡123| 久久精品免费看| 激情欧美一区二区三区在线观看| 精品一区二区三区在线播放视频| 蜜臀av在线播放一区二区三区 | 欧美xxxxx裸体时装秀| 日韩欧美一区在线观看| 日韩天堂在线观看| 欧美精品一区二区高清在线观看| 亚洲123区在线观看| 欧美aⅴ一区二区三区视频| 久久99精品视频| 国产精品影音先锋| 成人中文字幕在线| 色婷婷av一区二区三区之一色屋| 欧美日韩国产a| 精品久久五月天| 国产精品三级av在线播放| 中文字幕一区二区三区av| 亚洲尤物视频在线| 麻豆精品视频在线| 国产成人自拍高清视频在线免费播放| 国产精品小仙女| 99re成人在线| 91精品国产乱码久久蜜臀| 久久中文娱乐网| 国产精品二三区| 婷婷中文字幕综合| 国产一区三区三区| 在线视频欧美区| 精品久久久久久无| 18欧美亚洲精品| 日韩制服丝袜av| 国产精品123| 欧美日韩久久久| 久久久久久久久99精品| 亚洲综合丝袜美腿| 国产在线视频精品一区| 色老汉一区二区三区| 欧美精品一区二区三区在线| 洋洋成人永久网站入口| 国产一区二区三区久久悠悠色av| 91在线看国产| 精品久久久三级丝袜| 亚洲在线观看免费视频| 大胆亚洲人体视频| 欧美大肚乱孕交hd孕妇| 亚洲精品欧美专区| 国产成人综合精品三级| 91麻豆精品国产91久久久使用方法 | 国产视频911| 性久久久久久久| 成人晚上爱看视频| 欧美一级片在线看| 亚洲精品国产第一综合99久久| 久久超级碰视频| 欧美日韩一本到| 国产精品欧美一级免费| 另类小说视频一区二区| 在线观看亚洲精品视频| 激情另类小说区图片区视频区| 欧美日韩在线三区| 亚洲柠檬福利资源导航| 国产成a人亚洲精| 欧美xxxxxxxxx| 免费观看日韩电影| 欧美精选在线播放| 一区二区久久久| 99视频超级精品| 国产午夜精品一区二区三区嫩草| 日本不卡1234视频| 欧美日韩你懂的| 亚洲一区二区欧美| 色婷婷综合久久久中文一区二区| 国产欧美一区二区三区网站| 久久99在线观看| 日韩三级在线免费观看| 日韩av一级片| 91精品久久久久久久久99蜜臂| 亚洲一区在线看| 欧美午夜理伦三级在线观看| 亚洲精品国产a| 在线一区二区三区四区| 亚洲女同女同女同女同女同69| 91小视频在线观看| 亚洲欧美视频在线观看视频| 91丨九色丨黑人外教| 自拍偷拍欧美激情| 不卡免费追剧大全电视剧网站| 欧美精彩视频一区二区三区| 国产精品一区二区在线播放| 欧美精品一区二区三区蜜桃 | 日韩国产欧美在线视频| 欧美精品xxxxbbbb| 青青草国产精品亚洲专区无| 欧美一区二区三区播放老司机| 日本91福利区| 欧美成人福利视频| 国产伦精品一区二区三区免费迷 | 日韩欧美在线观看一区二区三区| 日本va欧美va瓶| 久久亚洲影视婷婷| 粉嫩久久99精品久久久久久夜 | 亚洲综合一区二区三区| 欧美人妖巨大在线| 麻豆91精品视频| 中文字幕国产一区二区| 99精品视频免费在线观看| 亚洲精品成人天堂一二三| 欧美日韩激情一区二区| 久久精品国产在热久久| 国产精品青草久久| 欧美午夜精品一区二区蜜桃| 日本美女视频一区二区| 久久久精品免费网站| 91在线国产福利| 日本不卡免费在线视频| 国产精品乱码一区二三区小蝌蚪|