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

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

?? ixethaccsysend.c

?? INTEL IXP425的VXWORKS BSP
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* ixEthAccSysEnd.c - Intel IXDP425 ixEth Init Module *//* Copyright 2002 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01m,04apr03,m_h  Major revision supports CSR 1.2.1 (mostly MII, polled mode)01k,07oct02,jb  Fix numbering01j,07oct02,jb  Fix naming01i,07oct02,jb  fix IP address01h,23sep02,jb  Adding default IP addresses from config.h01g,05sep02,jb  Changes to support Gold release of Intel Lib01f,19aug02,jb  Fix double inclusion01e,01aug02,jb  Continued developement01d,31jul02,jb  Fixing name errors01c,17jul02,jb  Renamed file, renaming bsp specific routines to segregate Intel                 library01b,10jun02,jb  Modifying to integrate ixEth01a,27may02,jb  Initial version from Intel*//*DESCRIPTIONThis file contains the board-specific routines for Ethernet adapterinitialisation of Intel ixEthAcc devices.*/#include <stddef.h>#include <stdio.h>#include <stdlib.h>#include <assert.h>#include "vxWorks.h"#include "sysLib.h"#include "ctype.h"#include "end.h"			/* Common END structures. */#include "endLib.h"#include "inetLib.h"#undef	ETHER_MAP_IP_MULTICAST#include "etherMultiLib.h"		/* multicast stuff. */#include "ipProto.h"                    /* IP prototypes */#include "logLib.h"#include "net/mbuf.h"#include "net/unixLib.h"#include "net/protosw.h"#include "net/systm.h"#include "net/if_subr.h"#include "net/route.h"#include <inetLib.h>#include <ipProto.h>#include <netinet/in.h>#include <netinet/ip.h>#include <netinet/if_ether.h>#include "sys/socket.h"#include "sys/ioctl.h"#include "sys/times.h"#undef FORCE_CODELETS#include "IxTypes.h"#include "IxEthAcc.h"#include "IxQMgr.h"#include "IxNpeDl.h"#include "IxNpeMh.h"#ifndef FORCE_CODELETS    #include "IxNpeMicrocode.h"#endif /* FORCE_CODELETS */#include "IxOsServices.h"#include "IxEthAcc.h"#include "ixp425.h"	/* Chip level definitions required */#include "config.h"#ifdef INCLUDE_IXETHACCEND/* DEBUG MACROS */#undef SYS_END_DEBUG#ifdef SYS_END_DEBUG    #define DRV_LOG printf#else    #define DRV_LOG#endif /* SYS_END_DEBUG */#ifndef END_LD_STR_SIZE#define      END_LD_STR_SIZE 80#endif/** * @def NPE_B_BUILD * @brief NPE B build to load for the required features * * 1 means Ethernet and Fast Path */#define NPE_B_BUILD 1/** * @def NPE_C_BUILD * @brief NPE C build to load for the required features * * 0 means Ethernet */#define NPE_C_BUILD 0/**< Location of NPE image to download */#define IX_ETHACC_CODELET_NPE_IMG IX_NPEDL_MicrocodeImage #ifdef FORCE_CODELETSIMPORT unsigned IX_NPEDL_MicrocodeImage[];#endif#define NUM_ELEM(vector) (sizeof (vector) / sizeof ((vector)[0]))/* Imports from Monsoon */struct    {    int number; const char *string;    } ixIpProtoValues[] =     {    {IPPROTO_IP,            "IP"},    {IPPROTO_TCP,           "TCP"},    {IPPROTO_UDP,           "UDP"},    {IPPROTO_ICMP,          "ICMP"},    {IPPROTO_IGMP,          "IGMP"}    };/* These are to simplify includes */#define IX_ETH_ACC_MII_STAT_REG          0x1 /* Status Register */#define IX_ETH_ACC_MII_STAT2_REG    0x11 /* Status Register 2*/#define IX_ETH_ACC_MII_SR_AUTO_NEG      0x0020 /* auto negotiation complete */#define IX_ETH_ACC_MII_SR2_FD           0x0200IMPORT END_OBJ*     ixEthAccEndLoad (char *, void *);IMPORT END_TBL_ENTRY    endDevTbl[];IMPORT unsigned char sysMacBase[];/* unsigned char sysIxEthAccEndEnetAddr[6] = { 0x00, 0x02,0xb3,0x3c,0x16,0x95};  */unsigned char sysIxEthAccEndEnetAddr[6] = { 0x00, 0xe0,0x8e,0x3c,0x16,0x95};#if defined(IXDP_ETHACC_IP0_DEFAULT) && defined(IXDP_ETHACC_IP1_DEFAULT)LOCAL char *sysIxEthAccEndIpAddr[IX_ETH_ACC_NUMBER_OF_PORTS] =    {    IXDP_ETHACC_IP0_DEFAULT,    IXDP_ETHACC_IP1_DEFAULT    };#endifLOCAL char      ixpEndLoadStr[IX_ETH_ACC_NUMBER_OF_PORTS][END_LD_STR_SIZE] =     {    { "0:"},    { "0:"},    };typedef struct _IXDP_ETHACC_PHY_CONF    {    BOOL speed100;  /**< 100 Mbits */    BOOL fullDuplex;    /**< Full Duplex */    BOOL autonegotiate; /**< Autonegotiation */    } IXDP_ETHACC_PHY_CONF;PRIVATE IXDP_ETHACC_PHY_CONF ixdp425phyConf[IX_ETH_ACC_NUMBER_OF_PORTS] = {   /*     * Ethernet 0    */    {TRUE,  /* 100 Mbits */     TRUE,  /* Full duplex */     TRUE}, /* Auto Negotiate */   /*     * Ethernet 1    */    {TRUE,  /* 100 Mbits */     TRUE,  /* Full duplex */     TRUE}  /* Auto Negotiate */};#ifdef IXDP_ETHACC_USE_NVRAM_MAC    static UCHAR ixdp425IntelMacPrefix[6] =         {        0x00,        0x02,        0xB3,        0x00,        0x00,        0x00,        };    static UINT32 nvRamNpeMacAddr[IX_ETH_ACC_NUMBER_OF_PORTS] =    {        NV_MAC_ADRS_NPE1,        NV_MAC_ADRS_NPE2,    };#endif /* IXDP_ETHACC_USE_NVRAM_MAC */void ixEthAccEndEthernetLinkStatusMonitor(void);void ixEthernetHdrDump(const char * const mData);void ixIpHdrDump(const char * const mData);IxEthAccStatus ixEthAccMiiReadRtn (UINT8, UINT8, UINT16 *);extern void sysMicroDelay(int microseconds);BOOL ixdp425EthLibInitialised = FALSE;VUINT32 ixEthAccPhyAddresses[IX_ETH_ACC_NUMBER_OF_PORTS];PRIVATE BOOL phyPresent[IXP425_ETH_ACC_MII_MAX_ADDR];PRIVATE char ixnpeMaddrStr[IX_ETH_ACC_NUMBER_OF_PORTS][64];PRIVATE BOOL ixdp425EthAccNPEStarted[IX_ETH_ACC_NUMBER_OF_PORTS];PRIVATE IxQMgrDispatcherFuncPtr dispatcherFunc = 0; #ifdef FORCE_CODELETS/* Do Not call this routine - It is used to force code inclusion */PRIVATE void ixdp425ForceCodlets()    {    ixEthAccCodeletInit();    }#endif /* FORCE_CODELETS */PRIVATE IX_STATUS ixdp425EthAccPhyDetect(void)    {    UINT32 phyNo;    UINT32 phyNoAddr;    for (phyNo=0; phyNo<IX_ETH_ACC_NUMBER_OF_PORTS; phyNo++)        {        ixEthAccPhyAddresses[phyNo] = 0xffffffff;        }    if (ixEthAccMiiPhyScan(phyPresent) == ERROR)        {        return(IX_FAIL);        }     else        {        for (phyNoAddr=0, phyNo=0; phyNoAddr<IXP425_ETH_ACC_MII_MAX_ADDR; phyNoAddr++)            {            if (phyPresent[phyNoAddr] == TRUE)                {                ixEthAccPhyAddresses[phyNo] = phyNoAddr;                if (++phyNo >= IX_ETH_ACC_NUMBER_OF_PORTS)                    break;                }            }        }    ixEthAccPhyAddresses[0] = 0x0d;    ixEthAccPhyAddresses[1] = 0x0;    /* Reset each phy */    for (phyNo=0; phyNo<IX_ETH_ACC_NUMBER_OF_PORTS; phyNo++)        {        if (ixEthAccPhyAddresses[phyNo] == 0xffffffff)            continue;        /* reset the phys */        ixEthAccMiiPhyReset(ixEthAccPhyAddresses[phyNo]);        /* update the phy configuration */        ixEthAccMiiPhyConfig(ixEthAccPhyAddresses[phyNo],                             ixdp425phyConf[phyNo].speed100,                             ixdp425phyConf[phyNo].fullDuplex,                             ixdp425phyConf[phyNo].autonegotiate);         }    return IX_SUCCESS;    }PRIVATE IX_STATUS ixdp425EthAccPhyConfig(int port)    {    UINT32 phyNo;    /* Set the phy properties */    for (phyNo=0; phyNo<IX_ETH_ACC_NUMBER_OF_PORTS; phyNo++)        {        if (phyNo != port || ixEthAccPhyAddresses[phyNo] == 0xffffffff)            continue;        /* update the current configuration */        ixEthAccMiiPhyConfig(ixEthAccPhyAddresses[phyNo],                             ixdp425phyConf[phyNo].speed100,                             ixdp425phyConf[phyNo].fullDuplex,                             ixdp425phyConf[phyNo].autonegotiate);       }    return IX_SUCCESS;   }PRIVATE IX_STATUS ixdp425EthAccPhyInit(int port)    {    UINT32 phyNo;    UINT16 regval;    UINT32 timeout;    static BOOL ethStateMonitorTaskSpawnPassed = FALSE;    /* Set the phy properties */    for (phyNo=0; phyNo<IX_ETH_ACC_NUMBER_OF_PORTS; phyNo++)        {        if (phyNo != port || ixEthAccPhyAddresses[phyNo] == 0xffffffff)            continue;        if (ixdp425phyConf[phyNo].autonegotiate)            {            /* We need to delay here until Autonegotiate is complete */            for ( timeout = 10; timeout; timeout-- )                {                /* A short delay */                sysMicroDelay(500);                /* Must do this read twice */                ixEthAccMiiReadRtn(ixEthAccPhyAddresses[phyNo],  IX_ETH_ACC_MII_STAT_REG, &regval);                ixEthAccMiiReadRtn(ixEthAccPhyAddresses[phyNo],  IX_ETH_ACC_MII_STAT_REG, &regval);                if ((regval & IX_ETH_ACC_MII_SR_AUTO_NEG) != 0)                    break;                }            /* If connect failed, then report it */            if ( (regval & IX_ETH_ACC_MII_SR_AUTO_NEG) == 0 )                {      		        printf("\nixe ETH PHY %d Autonegotiate failed: Disabling\n"                       , ixEthAccPhyAddresses[phyNo]);   /*                  printf("\nixe ETH port %d Autonegotiate failed: Disabling\n" , phyNo);     */#if 0/* allow autonegotiate for later */                ixEthAccPhyAddresses[phyNo] = 0xffffffff;#endif                }            }	}    /*      * Start up the Ethernet Link monitoring task - This will poll     * the link status and update the duplex mode accordingly.     */    if (!ethStateMonitorTaskSpawnPassed)    {	if (ERROR == taskSpawn("ethState", /* Name */			       200,        /* Priority */			       0,          /* Options */			       1024 * 2,   /* Stack Size */			       (FUNCPTR)(ixEthAccEndEthernetLinkStatusMonitor),			       0,0,0,0,0,0,0,0,0,0) )	{	    printf("%s: Warning - Ethernet State monitoring task failed\n"		   "to start. No MAC mode updates can be made.\n",		   "ixdp425EthAccPhyInit");	    ethStateMonitorTaskSpawnPassed = FALSE;	}	else	{	    /*	     * Prevent this task being spawned again	     */	    ethStateMonitorTaskSpawnPassed = TRUE;	}    }        /* Set the MAC to the same duplex mode as the phy */    for (phyNo=0; phyNo<IX_ETH_ACC_NUMBER_OF_PORTS; phyNo++)    {	if (phyNo != port || ixEthAccPhyAddresses[phyNo] == 0xffffffff)	    continue;		/*	 * If Ethernet is auto negotiating then we don't need to set the duplex	 * mode now - the link monitoring task will take care of this.	 * Unless of course the link monitoring task failed to start...	 */	if (!ixdp425phyConf[phyNo].autonegotiate || 	    !ethStateMonitorTaskSpawnPassed)	{	    if (ixdp425phyConf[phyNo].fullDuplex)	    {		ixEthAccPortDuplexModeSet (ixEthAccPhyAddresses[phyNo],					   IX_ETH_ACC_FULL_DUPLEX);	    }	    else	    {		ixEthAccPortDuplexModeSet (ixEthAccPhyAddresses[phyNo],					   IX_ETH_ACC_HALF_DUPLEX);	    }	}	        /* Do a read status to add a delay. Must do this read twice */        ixEthAccMiiReadRtn(ixEthAccPhyAddresses[phyNo],  IX_ETH_ACC_MII_STAT_REG, &regval);        ixEthAccMiiReadRtn(ixEthAccPhyAddresses[phyNo],  IX_ETH_ACC_MII_STAT_REG, &regval);#ifdef SYS_END_DEBUG        printf("\nixe ETH PHY %d configuration:\n"               , ixEthAccPhyAddresses[phyNo]              );         ixEthAccMiiShow(ixEthAccPhyAddresses[phyNo]);#endif /* SYS_END_DEBUG */        }    return(IX_SUCCESS);    }/** * @fn IX_STATUS ixdp425EthAccNpeInit(IxNpeDlNpeId npeId) * * @param npeId - ID of ixe to initialise * * Download microcode to the IXE. This function always downloads the latest * version of NPE microcode available. * * @return IX_SUCCESS - NPE successfuly initialised * @return IX_FAIL - Error initialising NPE */PRIVATE IX_STATUS ixdp425EthAccNpeInit(IxNpeDlNpeId npeId)    {    UINT32 numVersions = 0;    IxNpeDlVersionId versionIdList[IX_NPE_MICROCODE_AVAILABLE_VERSIONS_COUNT];    IxNpeDlVersionId downloadVersionId;    IxNpeDlVersionId uploadVersionId;    UINT32 listSize = 0;    IX_STATUS status;    int i;    downloadVersionId.npeId = npeId;    if (npeId == IX_NPEDL_NPEID_NPEB)    {	downloadVersionId.buildId = NPE_B_BUILD;    }    else    {	downloadVersionId.buildId = NPE_C_BUILD;    }    downloadVersionId.major = 0x0;    downloadVersionId.minor = 0x0;    /* get the version count - there should be at most maxVersions */    status = ixNpeDlAvailableVersionsCountGet (&numVersions);    if (status != IX_SUCCESS)    {        ixOsServLog (LOG_ERROR, "Failed to get version count\n", 0, 0, 0, 0, 0, 0);        return IX_FAIL;    }    else if (numVersions > IX_NPE_MICROCODE_AVAILABLE_VERSIONS_COUNT)    {        ixOsServLog (LOG_ERROR, "Version count is not equal to %d\n", numVersions, 0, 0, 0, 0, 0);        return IX_FAIL;    }    listSize = numVersions;    /* get the list of available versions */    status = ixNpeDlAvailableVersionsListGet (versionIdList, &listSize);    if (status != IX_SUCCESS)    {        ixOsServLog (LOG_ERROR, "Failed to get version list\n", 0, 0, 0, 0, 0, 0);        return IX_FAIL;    }    assert(numVersions == listSize);    /* Get the latest version of NPE code for this feature */    for (i = 0; i < listSize; i++)    {        if (versionIdList[i].npeId == npeId)        {            if (versionIdList[i].buildId == downloadVersionId.buildId)	    {		if (versionIdList[i].major > downloadVersionId.major)                {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩卡一卡二| 国产美女视频91| 国产欧美日韩一区二区三区在线观看| 欧美在线短视频| 91农村精品一区二区在线| 精品影视av免费| 极品美女销魂一区二区三区| 免费美女久久99| 奇米精品一区二区三区在线观看一| 亚洲高清免费观看| 亚洲午夜激情网站| 日本一不卡视频| 国产在线不卡一区| 不卡av免费在线观看| 一本一本久久a久久精品综合麻豆| 国产成人午夜精品影院观看视频| 经典一区二区三区| 国产盗摄精品一区二区三区在线 | 一道本成人在线| av综合在线播放| 99视频精品全部免费在线| 99国产精品久久| 欧美日韩一区二区在线观看| 欧美日韩mp4| 26uuu国产在线精品一区二区| 欧美精品一区二区久久婷婷 | 大白屁股一区二区视频| 波多野洁衣一区| 欧美在线观看视频在线| 欧美一区二区视频在线观看2020| 欧美日韩电影在线| 精品sm在线观看| 成人免费在线播放视频| 一个色在线综合| 激情综合网天天干| 一本到不卡精品视频在线观看| 欧美性色欧美a在线播放| 日韩视频不卡中文| 亚洲欧洲国产专区| 奇米色一区二区| 99久久精品国产观看| 69堂亚洲精品首页| 中文字幕日韩av资源站| 免费视频最近日韩| 色婷婷久久综合| 久久影音资源网| 亚洲午夜久久久久中文字幕久| 九九**精品视频免费播放| 92国产精品观看| 日韩精品一区二区三区swag | www.亚洲在线| 欧美日韩中文国产| 日韩欧美aaaaaa| 亚洲一区二区三区激情| 国产成人免费视频精品含羞草妖精| 色综合久久久久| 久久久久久免费网| 日韩精品免费专区| 色综合久久天天| 欧美国产一区视频在线观看| 蜜桃视频第一区免费观看| 91丨国产丨九色丨pron| 精品国产乱码久久久久久图片| 亚洲精品少妇30p| 国产成人免费在线观看| 日韩欧美一二三四区| 亚洲午夜久久久久| 欧美亚洲一区二区在线| **欧美大码日韩| 成人精品一区二区三区四区| 久久综合九色综合欧美就去吻| 午夜在线成人av| 欧美亚洲愉拍一区二区| 亚洲综合图片区| 色综合一区二区三区| 日本一二三不卡| 国产91丝袜在线播放九色| 久久一区二区三区四区| 极品少妇xxxx精品少妇偷拍| 26uuu成人网一区二区三区| 精品写真视频在线观看| 欧美一级二级三级蜜桃| 奇米影视在线99精品| 日韩一区二区在线看片| 久久99最新地址| 久久女同性恋中文字幕| 狠狠色狠狠色综合系列| 久久视频一区二区| 岛国av在线一区| 国产精品成人免费精品自在线观看| 国产宾馆实践打屁股91| 国产精品毛片大码女人| 91在线视频18| 亚洲aaa精品| 日韩手机在线导航| 国产成人综合亚洲网站| 亚洲欧美在线另类| 欧美亚洲愉拍一区二区| 开心九九激情九九欧美日韩精美视频电影| 制服丝袜亚洲播放| 国产高清亚洲一区| 亚洲免费在线电影| 51精品视频一区二区三区| 寂寞少妇一区二区三区| 亚洲国产成人午夜在线一区| 91浏览器入口在线观看| 午夜精品福利视频网站| 久久综合狠狠综合久久激情 | 亚洲同性同志一二三专区| 91高清在线观看| 午夜精彩视频在线观看不卡| 日韩精品一区二区三区蜜臀| 9久草视频在线视频精品| 亚洲成a人在线观看| 久久嫩草精品久久久久| 日本韩国一区二区三区视频| 狂野欧美性猛交blacked| 亚洲国产精品av| 666欧美在线视频| 成人性生交大片| 日本中文字幕一区二区有限公司| 久久色中文字幕| 欧美精品在线一区二区| 成人动漫一区二区| 美国十次了思思久久精品导航| 成人免费视频在线观看| 欧美丰满少妇xxxxx高潮对白 | 色吊一区二区三区| 国产一区在线视频| 午夜久久久久久| 亚洲精品一卡二卡| 中文乱码免费一区二区| 51午夜精品国产| 在线看不卡av| av在线播放一区二区三区| 激情另类小说区图片区视频区| 亚洲国产人成综合网站| 国产精品高清亚洲| 国产欧美一二三区| 亚洲精品一区二区三区香蕉| 91精品国产91久久久久久最新毛片 | 国产日本一区二区| 日韩欧美高清一区| 欧美高清性hdvideosex| 色香蕉成人二区免费| 不卡视频在线观看| 国产99久久久国产精品潘金网站| 蜜臀a∨国产成人精品| 亚洲福利视频一区| 一区二区三区电影在线播| 国产精品久久久久久久久图文区| 久久蜜桃av一区二区天堂| 日韩一区二区三区视频| 欧美高清视频在线高清观看mv色露露十八 | 丝袜美腿亚洲一区二区图片| 亚洲精品久久久久久国产精华液| 国产精品你懂的在线| 亚洲国产精品精华液ab| 国产人成一区二区三区影院| 精品剧情在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 久久夜色精品国产噜噜av | 激情综合色丁香一区二区| 喷水一区二区三区| 精品一区中文字幕| 成人午夜电影久久影院| 99国产精品视频免费观看| 在线视频综合导航| 欧美日韩精品三区| 日韩视频一区二区| 国产婷婷一区二区| 日韩一区有码在线| 亚洲国产sm捆绑调教视频| 日本视频一区二区| 国产精品资源网站| 一本色道久久加勒比精品| 欧美老女人在线| 久久久无码精品亚洲日韩按摩| 欧美国产一区视频在线观看| 亚洲欧美日本韩国| 青草国产精品久久久久久| 国产综合一区二区| 色婷婷国产精品综合在线观看| 9191精品国产综合久久久久久| 日韩你懂的在线播放| 国产精品视频在线看| 亚洲成av人片在www色猫咪| 久久成人久久爱| 99久久精品国产毛片| 欧美一二三四区在线| 国产精品欧美一区喷水| 香蕉成人啪国产精品视频综合网| 国模冰冰炮一区二区| 91国产丝袜在线播放| 26uuu久久天堂性欧美| 亚洲一区二区三区四区在线免费观看 | 九九**精品视频免费播放| 91在线观看地址| 精品国产伦一区二区三区观看体验| 欧美激情中文不卡|