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

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

?? skaddr.c

?? 移植好的楊創(chuàng)utu2440F ARM9 的uboot1.1.4代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
	default:	/* error */		break;	}	return (SK_ADDR_SUCCESS);}	/* SkAddrInit *//****************************************************************************** * *	SkAddrMcClear - clear the multicast table * * Description: *	This routine clears the multicast table. * *	If not suppressed by Flag SK_MC_SW_ONLY, the hardware is updated *	immediately. * *	It calls either SkAddrXmacMcClear or SkAddrGmacMcClear, according *	to the adapter in use. The real work is done there. * * Context: *	runtime, pageable *	may be called starting with SK_INIT_DATA with flag SK_MC_SW_ONLY *	may be called after SK_INIT_IO without limitation * * Returns: *	SK_ADDR_SUCCESS *	SK_ADDR_ILLEGAL_PORT */int	SkAddrMcClear(SK_AC	*pAC,		/* adapter context */SK_IOC	IoC,		/* I/O context */SK_U32	PortNumber,	/* Index of affected port */int		Flags)		/* permanent/non-perm, sw-only */{	int ReturnCode;	if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {		return (SK_ADDR_ILLEGAL_PORT);	}	if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {		ReturnCode = SkAddrXmacMcClear(pAC, IoC, PortNumber, Flags);	}	else {		ReturnCode = SkAddrGmacMcClear(pAC, IoC, PortNumber, Flags);	}	return (ReturnCode);}	/* SkAddrMcClear *//****************************************************************************** * *	SkAddrXmacMcClear - clear the multicast table * * Description: *	This routine clears the multicast table *	(either entry 2 or entries 3-16 and InexactFilter) of the given port. *	If not suppressed by Flag SK_MC_SW_ONLY, the hardware is updated *	immediately. * * Context: *	runtime, pageable *	may be called starting with SK_INIT_DATA with flag SK_MC_SW_ONLY *	may be called after SK_INIT_IO without limitation * * Returns: *	SK_ADDR_SUCCESS *	SK_ADDR_ILLEGAL_PORT */int	SkAddrXmacMcClear(SK_AC	*pAC,		/* adapter context */SK_IOC	IoC,		/* I/O context */SK_U32	PortNumber,	/* Index of affected port */int		Flags)		/* permanent/non-perm, sw-only */{	int i;	if (Flags & SK_ADDR_PERMANENT) {	/* permanent => RLMT */		/* Clear RLMT multicast addresses. */		pAC->Addr.Port[PortNumber].NextExactMatchRlmt = SK_ADDR_FIRST_MATCH_RLMT;	}	else {	/* not permanent => DRV */		/* Clear InexactFilter */		for (i = 0; i < 8; i++) {			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0;		}		/* Clear DRV multicast addresses. */		pAC->Addr.Port[PortNumber].NextExactMatchDrv = SK_ADDR_FIRST_MATCH_DRV;	}	if (!(Flags & SK_MC_SW_ONLY)) {		(void) SkAddrXmacMcUpdate(pAC, IoC, PortNumber);	}	return (SK_ADDR_SUCCESS);}	/* SkAddrXmacMcClear *//****************************************************************************** * *	SkAddrGmacMcClear - clear the multicast table * * Description: *	This routine clears the multicast hashing table (InexactFilter) *	(either the RLMT or the driver bits) of the given port. * *	If not suppressed by Flag SK_MC_SW_ONLY, the hardware is updated *	immediately. * * Context: *	runtime, pageable *	may be called starting with SK_INIT_DATA with flag SK_MC_SW_ONLY *	may be called after SK_INIT_IO without limitation * * Returns: *	SK_ADDR_SUCCESS *	SK_ADDR_ILLEGAL_PORT */int	SkAddrGmacMcClear(SK_AC	*pAC,		/* adapter context */SK_IOC	IoC,		/* I/O context */SK_U32	PortNumber,	/* Index of affected port */int		Flags)		/* permanent/non-perm, sw-only */{	int i;#ifdef DEBUG	SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,		("GMAC InexactFilter (not cleared): %02X %02X %02X %02X %02X %02X %02X %02X\n",			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[0],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[1],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[2],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[3],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[4],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[5],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[6],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[7]))#endif	/* DEBUG */	/* Clear InexactFilter */	for (i = 0; i < 8; i++) {		pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0;	}	if (Flags & SK_ADDR_PERMANENT) {	/* permanent => RLMT */		/* Copy DRV bits to InexactFilter. */		for (i = 0; i < 8; i++) {			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] |=				pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[i];			/* Clear InexactRlmtFilter. */			pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[i] = 0;		}	}	else {	/* not permanent => DRV */		/* Copy RLMT bits to InexactFilter. */		for (i = 0; i < 8; i++) {			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] |=				pAC->Addr.Port[PortNumber].InexactRlmtFilter.Bytes[i];			/* Clear InexactDrvFilter. */			pAC->Addr.Port[PortNumber].InexactDrvFilter.Bytes[i] = 0;		}	}#ifdef DEBUG	SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_CTRL,		("GMAC InexactFilter (cleared): %02X %02X %02X %02X %02X %02X %02X %02X\n",			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[0],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[1],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[2],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[3],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[4],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[5],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[6],			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[7]))#endif	/* DEBUG */	if (!(Flags & SK_MC_SW_ONLY)) {		(void) SkAddrGmacMcUpdate(pAC, IoC, PortNumber);	}	return (SK_ADDR_SUCCESS);}	/* SkAddrGmacMcClear */#ifndef SK_ADDR_CHEAT/****************************************************************************** * *	SkXmacMcHash - hash multicast address * * Description: *	This routine computes the hash value for a multicast address. *	A CRC32 algorithm is used. * * Notes: *	The code was adapted from the XaQti data sheet. * * Context: *	runtime, pageable * * Returns: *	Hash value of multicast address. */SK_U32 SkXmacMcHash(unsigned char *pMc)	/* Multicast address */{	SK_U32 Idx;	SK_U32 Bit;	SK_U32 Data;	SK_U32 Crc;	Crc = 0xFFFFFFFFUL;	for (Idx = 0; Idx < SK_MAC_ADDR_LEN; Idx++) {		Data = *pMc++;		for (Bit = 0; Bit < 8; Bit++, Data >>= 1) {			Crc = (Crc >> 1) ^ (((Crc ^ Data) & 1) ? XMAC_POLY : 0);		}	}	return (Crc & ((1 << HASH_BITS) - 1));}	/* SkXmacMcHash *//****************************************************************************** * *	SkGmacMcHash - hash multicast address * * Description: *	This routine computes the hash value for a multicast address. *	A CRC16 algorithm is used. * * Notes: * * * Context: *	runtime, pageable * * Returns: *	Hash value of multicast address. */SK_U32 SkGmacMcHash(unsigned char *pMc)	/* Multicast address */{	SK_U32 Data;	SK_U32 TmpData;	SK_U32 Crc;	int Byte;	int Bit;	Crc = 0xFFFFFFFFUL;	for (Byte = 0; Byte < 6; Byte++) {		/* Get next byte. */		Data = (SK_U32) pMc[Byte];		/* Change bit order in byte. */		TmpData = Data;		for (Bit = 0; Bit < 8; Bit++) {			if (TmpData & 1L) {				Data |=  1L << (7 - Bit);			}			else {				Data &= ~(1L << (7 - Bit));			}			TmpData >>= 1;		}		Crc ^= (Data << 24);		for (Bit = 0; Bit < 8; Bit++) {			if (Crc & 0x80000000) {				Crc = (Crc << 1) ^ GMAC_POLY;			}			else {				Crc <<= 1;			}		}	}	return (Crc & ((1 << HASH_BITS) - 1));}	/* SkGmacMcHash */#endif	/* not SK_ADDR_CHEAT *//****************************************************************************** * *	SkAddrMcAdd - add a multicast address to a port * * Description: *	This routine enables reception for a given address on the given port. * *	It calls either SkAddrXmacMcAdd or SkAddrGmacMcAdd, according to the *	adapter in use. The real work is done there. * * Notes: *	The return code is only valid for SK_PROM_MODE_NONE. * * Context: *	runtime, pageable *	may be called after SK_INIT_DATA * * Returns: *	SK_MC_FILTERING_EXACT *	SK_MC_FILTERING_INEXACT *	SK_MC_ILLEGAL_ADDRESS *	SK_MC_ILLEGAL_PORT *	SK_MC_RLMT_OVERFLOW */int	SkAddrMcAdd(SK_AC		*pAC,		/* adapter context */SK_IOC		IoC,		/* I/O context */SK_U32		PortNumber,	/* Port Number */SK_MAC_ADDR	*pMc,		/* multicast address to be added */int			Flags)		/* permanent/non-permanent */{	int ReturnCode;	if (PortNumber >= (SK_U32) pAC->GIni.GIMacsFound) {		return (SK_ADDR_ILLEGAL_PORT);	}	if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {		ReturnCode = SkAddrXmacMcAdd(pAC, IoC, PortNumber, pMc, Flags);	}	else {		ReturnCode = SkAddrGmacMcAdd(pAC, IoC, PortNumber, pMc, Flags);	}	return (ReturnCode);}	/* SkAddrMcAdd *//****************************************************************************** * *	SkAddrXmacMcAdd - add a multicast address to a port * * Description: *	This routine enables reception for a given address on the given port. * * Notes: *	The return code is only valid for SK_PROM_MODE_NONE. * *	The multicast bit is only checked if there are no free exact match *	entries. * * Context: *	runtime, pageable *	may be called after SK_INIT_DATA * * Returns: *	SK_MC_FILTERING_EXACT *	SK_MC_FILTERING_INEXACT *	SK_MC_ILLEGAL_ADDRESS *	SK_MC_RLMT_OVERFLOW */int	SkAddrXmacMcAdd(SK_AC		*pAC,		/* adapter context */SK_IOC		IoC,		/* I/O context */SK_U32		PortNumber,	/* Port Number */SK_MAC_ADDR	*pMc,		/* multicast address to be added */int		Flags)		/* permanent/non-permanent */{	int	i;	SK_U8	Inexact;#ifndef SK_ADDR_CHEAT	SK_U32 HashBit;#endif	/* !defined(SK_ADDR_CHEAT) */	if (Flags & SK_ADDR_PERMANENT) {	/* permanent => RLMT */#ifdef xDEBUG		if (pAC->Addr.Port[PortNumber].NextExactMatchRlmt <			SK_ADDR_FIRST_MATCH_RLMT) {			Next0[PortNumber] |= 1;			return (SK_MC_RLMT_OVERFLOW);		}#endif	/* DEBUG */		if (pAC->Addr.Port[PortNumber].NextExactMatchRlmt >			SK_ADDR_LAST_MATCH_RLMT) {			return (SK_MC_RLMT_OVERFLOW);		}		/* Set a RLMT multicast address. */		pAC->Addr.Port[PortNumber].Exact[			pAC->Addr.Port[PortNumber].NextExactMatchRlmt++] = *pMc;		return (SK_MC_FILTERING_EXACT);	}#ifdef xDEBUG	if (pAC->Addr.Port[PortNumber].NextExactMatchDrv <		SK_ADDR_FIRST_MATCH_DRV) {			Next0[PortNumber] |= 2;		return (SK_MC_RLMT_OVERFLOW);	}#endif	/* DEBUG */	if (pAC->Addr.Port[PortNumber].NextExactMatchDrv <= SK_ADDR_LAST_MATCH_DRV) {		/* Set exact match entry. */		pAC->Addr.Port[PortNumber].Exact[			pAC->Addr.Port[PortNumber].NextExactMatchDrv++] = *pMc;		/* Clear InexactFilter */		for (i = 0; i < 8; i++) {			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0;		}	}	else {		if (!(pMc->a[0] & SK_MC_BIT)) {			/* Hashing only possible with multicast addresses. */			return (SK_MC_ILLEGAL_ADDRESS);		}#ifndef SK_ADDR_CHEAT		/* Compute hash value of address. */		HashBit = 63 - SkXmacMcHash(&pMc->a[0]);		/* Add bit to InexactFilter. */		pAC->Addr.Port[PortNumber].InexactFilter.Bytes[HashBit / 8] |=			1 << (HashBit % 8);#else	/* SK_ADDR_CHEAT */		/* Set all bits in InexactFilter. */		for (i = 0; i < 8; i++) {			pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i] = 0xFF;		}#endif	/* SK_ADDR_CHEAT */	}	for (Inexact = 0, i = 0; i < 8; i++) {		Inexact |= pAC->Addr.Port[PortNumber].InexactFilter.Bytes[i];	}	if (Inexact == 0 && pAC->Addr.Port[PortNumber].PromMode == 0) {		return (SK_MC_FILTERING_EXACT);	}	else {		return (SK_MC_FILTERING_INEXACT);	}}	/* SkAddrXmacMcAdd *//****************************************************************************** * *	SkAddrGmacMcAdd - add a multicast address to a port * * Description: *	This routine enables reception for a given address on the given port. * * Notes: *	The return code is only valid for SK_PROM_MODE_NONE. *

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久aⅴ国产欧美74aaa| 国产成人精品网址| 久久se这里有精品| 北条麻妃一区二区三区| 欧美日韩一区不卡| 欧美不卡123| 一区二区三区不卡视频| 亚洲一区自拍偷拍| 国产一区二区按摩在线观看| 色综合久久天天| 日韩一级在线观看| 国产精品理论在线观看| 亚洲午夜在线视频| 老司机精品视频在线| av男人天堂一区| 欧美成人激情免费网| 一区二区三区日韩在线观看| 国产精品一色哟哟哟| 欧美福利视频导航| 一区二区三区在线播放| 精品一区二区在线视频| 欧美亚洲综合久久| 亚洲欧洲三级电影| 国产伦理精品不卡| 欧美一级高清片在线观看| 一区二区三区国产| av福利精品导航| 欧美一区二区日韩| 视频一区在线播放| 精品一区二区在线免费观看| 欧美一区二区三区喷汁尤物| 亚洲人成网站在线| 成人综合在线视频| 久久人人爽人人爽| 久久99深爱久久99精品| 在线不卡免费欧美| 午夜视频一区在线观看| 在线亚洲精品福利网址导航| 中文字幕一区二区三区不卡在线| 国模少妇一区二区三区| 这里只有精品免费| 亚洲电影你懂得| 欧美日韩国产首页| 亚洲国产精品久久不卡毛片| 91看片淫黄大片一级在线观看| 精品久久久久久久人人人人传媒 | 一区二区三区日韩| 97精品国产露脸对白| 欧美国产一区视频在线观看| 国产美女av一区二区三区| 日本不卡一二三| 日韩欧美的一区| 国产a级毛片一区| 亚洲美女淫视频| 欧美日本韩国一区二区三区视频| 久久国产欧美日韩精品| 国产精品女上位| 欧美日韩小视频| 国产精品亚洲一区二区三区妖精| 成人免费在线播放视频| 777奇米成人网| 成人黄色在线网站| 婷婷六月综合亚洲| 国产精品青草久久| 欧美区视频在线观看| 国产精品一区在线观看乱码| 亚洲精品大片www| 久久综合视频网| 欧美在线观看18| 国产精选一区二区三区| 亚洲电影一区二区三区| 国产亚洲欧美日韩日本| 欧美日韩一级二级三级| 国产91高潮流白浆在线麻豆| 午夜精品国产更新| 国产精品久久久久桃色tv| 日韩视频免费观看高清完整版| www.亚洲激情.com| 国模无码大尺度一区二区三区 | 久久精品夜色噜噜亚洲a∨| 91美女福利视频| 国产美女在线观看一区| 日日夜夜精品视频免费| 亚洲美女在线一区| 国产精品亲子伦对白| 日韩精品一区二区三区中文精品| 91免费小视频| 夫妻av一区二区| 精品在线亚洲视频| 日本午夜精品视频在线观看| 一区二区三区四区不卡视频| 国产嫩草影院久久久久| 欧美tk—视频vk| 51午夜精品国产| 欧美亚洲高清一区| 一本到高清视频免费精品| 国产成人亚洲综合a∨婷婷图片 | 久久精品人人做人人综合| 717成人午夜免费福利电影| 在线精品视频免费播放| 99久精品国产| 91在线免费视频观看| 成人精品视频.| 国产91精品在线观看| 国产精品白丝av| 国产乱淫av一区二区三区 | 国产精品黄色在线观看 | 日韩欧美一区中文| 欧美老肥妇做.爰bbww| 91国产视频在线观看| 91高清视频在线| 在线观看91视频| 欧洲精品中文字幕| 欧洲av一区二区嗯嗯嗯啊| 91九色最新地址| 欧美三级日韩三级| 欧美精品第1页| 欧美一级国产精品| 久久五月婷婷丁香社区| 国产亚洲一区二区三区四区| 久久先锋影音av鲁色资源| 国产亚洲欧美激情| 亚洲欧洲精品一区二区三区 | 又紧又大又爽精品一区二区| 亚洲精品乱码久久久久| 亚洲国产aⅴ天堂久久| 亚洲福利一区二区| 久久福利资源站| 不卡的av电影| 欧美亚洲综合色| 日韩欧美美女一区二区三区| 久久久久久久久久久久久夜| 中文无字幕一区二区三区 | 91精品一区二区三区久久久久久| 这里只有精品免费| 国产婷婷色一区二区三区四区| 综合久久久久久| 日韩在线卡一卡二| 国产乱理伦片在线观看夜一区 | 国产精品2024| 色综合天天做天天爱| 欧美男人的天堂一二区| 日韩视频在线永久播放| 国产女人18水真多18精品一级做| 亚洲一区二区三区在线播放| 精品综合久久久久久8888| 成人午夜激情视频| 欧美精品三级在线观看| 国产日韩欧美精品在线| 亚洲综合一区二区精品导航| 久久99最新地址| 在线视频亚洲一区| 久久亚洲影视婷婷| 亚洲一区在线电影| 国产一区二区在线视频| 欧美少妇bbb| 国产精品色哟哟| 麻豆国产欧美一区二区三区| 成人小视频在线| 日韩三级电影网址| 国产精品久久久久aaaa| 日本欧美韩国一区三区| jizz一区二区| 久久女同性恋中文字幕| 日日嗨av一区二区三区四区| 不卡一区中文字幕| 日韩免费一区二区| 亚洲国产精品人人做人人爽| 成人国产精品视频| 精品国产1区2区3区| 亚洲一级二级在线| 99久久精品免费看| 久久精品一区二区| 久久99精品久久只有精品| 欧美日韩精品一区二区在线播放| 国产精品看片你懂得| 国产一区二区三区精品视频| 欧美一区二区视频观看视频| 亚洲免费看黄网站| av成人免费在线| 国产清纯美女被跳蛋高潮一区二区久久w | 欧美日韩国产a| 一区二区久久久| 97久久超碰国产精品| 国产精品萝li| 粉嫩高潮美女一区二区三区| 久久嫩草精品久久久精品一| 极品美女销魂一区二区三区 | 国产电影一区二区三区| www一区二区| 久久99精品国产.久久久久久| 欧美一级欧美一级在线播放| 亚洲成a人v欧美综合天堂| 欧美手机在线视频| 亚洲成av人片| 欧美日韩专区在线| 日韩成人免费电影| 日韩欧美亚洲国产另类| 精品综合久久久久久8888| 亚洲精品一区二区三区福利|