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

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

?? skaddr.c

?? U-boot latest tarball
?? C
?? 第 1 頁 / 共 4 頁
字號:
/****************************************************************************** * * Name:	skaddr.c * Project:	GEnesis, PCI Gigabit Ethernet Adapter * Version:	$Revision: 1.48 $ * Date:	$Date: 2003/02/12 17:09:37 $ * Purpose:	Manage Addresses (Multicast and Unicast) and Promiscuous Mode. * ******************************************************************************//****************************************************************************** * *	(C)Copyright 1998-2002 SysKonnect GmbH. * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License as published by *	the Free Software Foundation; either version 2 of the License, or *	(at your option) any later version. * *	The information in this file is provided "AS IS" without warranty. * ******************************************************************************//****************************************************************************** * * History: * *	$Log: skaddr.c,v $ *	Revision 1.48  2003/02/12 17:09:37  tschilli *	Fix in SkAddrOverride() to set both (physical and logical) MAC addresses *	in case that both addresses are identical. * *	Revision 1.47  2002/09/17 06:31:10  tschilli *	Handling of SK_PROM_MODE_ALL_MC flag in SkAddrGmacMcUpdate() *	and SkAddrGmacPromiscuousChange() fixed. *	Editorial changes. * *	Revision 1.46  2002/08/22 07:55:41  tschilli *	New function SkGmacMcHash() for GMAC multicast hashing algorithm added. *	Editorial changes. * *	Revision 1.45  2002/08/15 12:29:35  tschilli *	SkAddrGmacMcUpdate() and SkAddrGmacPromiscuousChange() changed. * *	Revision 1.44  2002/08/14 12:18:03  rschmidt *	Replaced direct handling of MAC Hashing (XMAC and GMAC) *	with routine SkMacHashing(). *	Replaced wrong 3rd para 'i' with 'PortNumber' in SkMacPromiscMode(). * *	Revision 1.43  2002/08/13 09:37:43  rschmidt *	Corrected some SK_DBG_MSG outputs. *	Replaced wrong 2nd para pAC with IoC in SkMacPromiscMode(). *	Editorial changes. * *	Revision 1.42  2002/08/12 11:24:36  rschmidt *	Remove setting of logical MAC address GM_SRC_ADDR_2 in SkAddrInit(). *	Replaced direct handling of MAC Promiscuous Mode (XMAC and GMAC) *	with routine SkMacPromiscMode(). *	Editorial changes. * *	Revision 1.41  2002/06/10 13:52:18  tschilli *	Changes for handling YUKON. *	All changes are internally and not visible to the programmer *	using this module. * *	Revision 1.40  2001/02/14 14:04:59  rassmann *	Editorial changes. * *	Revision 1.39  2001/01/30 10:30:04  rassmann *	Editorial changes. * *	Revision 1.38  2001/01/25 16:26:52  rassmann *	Ensured that logical address overrides are done on net's active port. * *	Revision 1.37  2001/01/22 13:41:34  rassmann *	Supporting two nets on dual-port adapters. * *	Revision 1.36  2000/08/07 11:10:39  rassmann *	Editorial changes. * *	Revision 1.35  2000/05/04 09:38:41  rassmann *	Editorial changes. *	Corrected multicast address hashing. * *	Revision 1.34  1999/11/22 13:23:44  cgoos *	Changed license header to GPL. * *	Revision 1.33  1999/05/28 10:56:06  rassmann *	Editorial changes. * *	Revision 1.32  1999/03/31 10:59:20  rassmann *	Returning Success instead of DupAddr if address shall be overridden *	with same value. * *	Revision 1.31  1999/01/14 16:18:17  rassmann *	Corrected multicast initialization. * *	Revision 1.30  1999/01/04 10:30:35  rassmann *	SkAddrOverride only possible after SK_INIT_IO phase. * *	Revision 1.29  1998/12/29 13:13:10  rassmann *	An address override is now preserved in the SK_INIT_IO phase. *	All functions return an int now. *	Extended parameter checking. * *	Revision 1.28  1998/12/01 11:45:53  rassmann *	Code cleanup. * *	Revision 1.27  1998/12/01 09:22:49  rassmann *	SkAddrMcAdd and SkAddrMcUpdate returned SK_MC_FILTERING_INEXACT *	too often. * *	Revision 1.26  1998/11/24 12:39:44  rassmann *	Reserved multicast entry for BPDU address. *	13 multicast entries left for protocol. * *	Revision 1.25  1998/11/17 16:54:23  rassmann *	Using exact match for up to 14 multicast addresses. *	Still receiving all multicasts if more addresses are added. * *	Revision 1.24  1998/11/13 17:24:31  rassmann *	Changed return value of SkAddrOverride to int. * *	Revision 1.23  1998/11/13 16:56:18  rassmann *	Added macro SK_ADDR_COMPARE. *	Changed return type of SkAddrOverride to SK_BOOL. * *	Revision 1.22  1998/11/04 17:06:17  rassmann *	Corrected McUpdate and PromiscuousChange functions. * *	Revision 1.21  1998/10/29 14:34:04  rassmann *	Clearing SK_ADDR struct at startup. * *	Revision 1.20  1998/10/28 18:16:34  rassmann *	Avoiding I/Os before SK_INIT_RUN level. *	Aligning InexactFilter. * *	Revision 1.19  1998/10/28 11:29:28  rassmann *	Programming physical address in SkAddrMcUpdate. *	Corrected programming of exact match entries. * *	Revision 1.18  1998/10/28 10:34:48  rassmann *	Corrected reading of physical addresses. * *	Revision 1.17  1998/10/28 10:26:13  rassmann *	Getting ports' current MAC addresses from EPROM now. *	Added debug output. * *	Revision 1.16  1998/10/27 16:20:12  rassmann *	Reading MAC address byte by byte. * *	Revision 1.15  1998/10/22 11:39:09  rassmann *	Corrected signed/unsigned mismatches. * *	Revision 1.14  1998/10/19 17:12:35  rassmann *	Syntax corrections. * *	Revision 1.13  1998/10/19 17:02:19  rassmann *	Now reading permanent MAC addresses from CRF. * *	Revision 1.12  1998/10/15 15:15:48  rassmann *	Changed Flags Parameters from SK_U8 to int. *	Checked with lint. * *	Revision 1.11  1998/09/24 19:15:12  rassmann *	Code cleanup. * *	Revision 1.10  1998/09/18 20:18:54  rassmann *	Added HW access. *	Implemented swapping. * *	Revision 1.9  1998/09/16 11:32:00  rassmann *	Including skdrv1st.h again. :( * *	Revision 1.8  1998/09/16 11:09:34  rassmann *	Syntax corrections. * *	Revision 1.7  1998/09/14 17:06:34  rassmann *	Minor changes. * *	Revision 1.6  1998/09/07 08:45:41  rassmann *	Syntax corrections. * *	Revision 1.5  1998/09/04 19:40:19  rassmann *	Interface enhancements. * *	Revision 1.4  1998/09/04 12:14:12  rassmann *	Interface cleanup. * *	Revision 1.3  1998/09/02 16:56:40  rassmann *	Updated interface. * *	Revision 1.2  1998/08/27 14:26:09  rassmann *	Updated interface. * *	Revision 1.1  1998/08/21 08:30:22  rassmann *	First public version. * ******************************************************************************//****************************************************************************** * * Description: * * This module is intended to manage multicast addresses, address override, * and promiscuous mode on GEnesis and Yukon adapters. * * Address Layout: *	port address:		physical MAC address *	1st exact match:	logical MAC address (GEnesis only) *	2nd exact match:	RLMT multicast (GEnesis only) *	exact match 3-13:	OS-specific multicasts (GEnesis only) * * Include File Hierarchy: * *	"skdrv1st.h" *	"skdrv2nd.h" * ******************************************************************************/#include <config.h>#ifndef	lintstatic const char SysKonnectFileId[] =	"@(#) $Id: skaddr.c,v 1.48 2003/02/12 17:09:37 tschilli Exp $ (C) SysKonnect.";#endif	/* !defined(lint) */#define __SKADDR_C#ifdef __cplusplus#error C++ is not yet supported.extern "C" {#endif	/* cplusplus */#include "h/skdrv1st.h"#include "h/skdrv2nd.h"/* defines ********************************************************************/#define XMAC_POLY	0xEDB88320UL	/* CRC32-Poly - XMAC: Little Endian */#define GMAC_POLY	0x04C11DB7L	/* CRC16-Poly - GMAC: Little Endian */#define HASH_BITS	6				/* #bits in hash */#define	SK_MC_BIT	0x01/* Error numbers and messages. */#define SKERR_ADDR_E001		(SK_ERRBASE_ADDR + 0)#define SKERR_ADDR_E001MSG	"Bad Flags."#define SKERR_ADDR_E002		(SKERR_ADDR_E001 + 1)#define SKERR_ADDR_E002MSG	"New Error."/* typedefs *******************************************************************//* None. *//* global variables ***********************************************************//* 64-bit hash values with all bits set. */SK_U16	OnesHash[4] = {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF};/* local variables ************************************************************/#ifdef DEBUGstatic int	Next0[SK_MAX_MACS] = {0, 0};#endif	/* DEBUG *//* functions ******************************************************************//****************************************************************************** * *	SkAddrInit - initialize data, set state to init * * Description: * *	SK_INIT_DATA *	============ * *	This routine clears the multicast tables and resets promiscuous mode. *	Some entries are reserved for the "logical MAC address", the *	SK-RLMT multicast address, and the BPDU multicast address. * * *	SK_INIT_IO *	========== * *	All permanent MAC addresses are read from EPROM. *	If the current MAC addresses are not already set in software, *	they are set to the values of the permanent addresses. *	The current addresses are written to the corresponding MAC. * * *	SK_INIT_RUN *	=========== * *	Nothing. * * Context: *	init, pageable * * Returns: *	SK_ADDR_SUCCESS */int	SkAddrInit(SK_AC	*pAC,	/* the adapter context */SK_IOC	IoC,	/* I/O context */int		Level)	/* initialization level */{	int			j;	SK_U32		i;	SK_U8		*InAddr;	SK_U16		*OutAddr;	SK_ADDR_PORT	*pAPort;	switch (Level) {	case SK_INIT_DATA:		SK_MEMSET((char *) &pAC->Addr, 0, sizeof(SK_ADDR));		for (i = 0; i < SK_MAX_MACS; i++) {			pAPort = &pAC->Addr.Port[i];			pAPort->PromMode = SK_PROM_MODE_NONE;			pAPort->FirstExactMatchRlmt = SK_ADDR_FIRST_MATCH_RLMT;			pAPort->FirstExactMatchDrv = SK_ADDR_FIRST_MATCH_DRV;			pAPort->NextExactMatchRlmt = SK_ADDR_FIRST_MATCH_RLMT;			pAPort->NextExactMatchDrv = SK_ADDR_FIRST_MATCH_DRV;		}#ifdef xDEBUG		for (i = 0; i < SK_MAX_MACS; i++) {			if (pAC->Addr.Port[i].NextExactMatchRlmt <				SK_ADDR_FIRST_MATCH_RLMT) {				Next0[i] |= 4;			}		}#endif	/* DEBUG */		/* pAC->Addr.InitDone = SK_INIT_DATA; */		break;	case SK_INIT_IO:		for (i = 0; i < SK_MAX_NETS; i++) {			pAC->Addr.Net[i].ActivePort = pAC->Rlmt.Net[i].ActivePort;		}#ifdef xDEBUG		for (i = 0; i < SK_MAX_MACS; i++) {			if (pAC->Addr.Port[i].NextExactMatchRlmt <				SK_ADDR_FIRST_MATCH_RLMT) {				Next0[i] |= 8;			}		}#endif	/* DEBUG */		/* Read permanent logical MAC address from Control Register File. */		for (j = 0; j < SK_MAC_ADDR_LEN; j++) {			InAddr = (SK_U8 *) &pAC->Addr.Net[0].PermanentMacAddress.a[j];			SK_IN8(IoC, B2_MAC_1 + j, InAddr);		}		if (!pAC->Addr.Net[0].CurrentMacAddressSet) {			/* Set the current logical MAC address to the permanent one. */			pAC->Addr.Net[0].CurrentMacAddress =				pAC->Addr.Net[0].PermanentMacAddress;			pAC->Addr.Net[0].CurrentMacAddressSet = SK_TRUE;		}		/* Set the current logical MAC address. */		pAC->Addr.Port[pAC->Addr.Net[0].ActivePort].Exact[0] =			pAC->Addr.Net[0].CurrentMacAddress;#if SK_MAX_NETS > 1		/* Set logical MAC address for net 2 to (log | 3). */		if (!pAC->Addr.Net[1].CurrentMacAddressSet) {			pAC->Addr.Net[1].PermanentMacAddress =				pAC->Addr.Net[0].PermanentMacAddress;			pAC->Addr.Net[1].PermanentMacAddress.a[5] |= 3;			/* Set the current logical MAC address to the permanent one. */			pAC->Addr.Net[1].CurrentMacAddress =				pAC->Addr.Net[1].PermanentMacAddress;			pAC->Addr.Net[1].CurrentMacAddressSet = SK_TRUE;		}#endif	/* SK_MAX_NETS > 1 */#ifdef DEBUG		for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {			SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,				("Permanent MAC Address (Net%d): %02X %02X %02X %02X %02X %02X\n",					i,					pAC->Addr.Net[i].PermanentMacAddress.a[0],					pAC->Addr.Net[i].PermanentMacAddress.a[1],					pAC->Addr.Net[i].PermanentMacAddress.a[2],					pAC->Addr.Net[i].PermanentMacAddress.a[3],					pAC->Addr.Net[i].PermanentMacAddress.a[4],					pAC->Addr.Net[i].PermanentMacAddress.a[5]))			SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,				("Logical MAC Address (Net%d): %02X %02X %02X %02X %02X %02X\n",					i,					pAC->Addr.Net[i].CurrentMacAddress.a[0],					pAC->Addr.Net[i].CurrentMacAddress.a[1],					pAC->Addr.Net[i].CurrentMacAddress.a[2],					pAC->Addr.Net[i].CurrentMacAddress.a[3],					pAC->Addr.Net[i].CurrentMacAddress.a[4],					pAC->Addr.Net[i].CurrentMacAddress.a[5]))		}#endif	/* DEBUG */		for (i = 0; i < (SK_U32) pAC->GIni.GIMacsFound; i++) {			pAPort = &pAC->Addr.Port[i];			/* Read permanent port addresses from Control Register File. */			for (j = 0; j < SK_MAC_ADDR_LEN; j++) {				InAddr = (SK_U8 *) &pAPort->PermanentMacAddress.a[j];				SK_IN8(IoC, B2_MAC_2 + 8 * i + j, InAddr);			}			if (!pAPort->CurrentMacAddressSet) {				/*				 * Set the current and previous physical MAC address				 * of this port to its permanent MAC address.				 */				pAPort->CurrentMacAddress = pAPort->PermanentMacAddress;				pAPort->PreviousMacAddress = pAPort->PermanentMacAddress;				pAPort->CurrentMacAddressSet = SK_TRUE;			}			/* Set port's current physical MAC address. */			OutAddr = (SK_U16 *) &pAPort->CurrentMacAddress.a[0];			if (pAC->GIni.GIChipId == CHIP_ID_GENESIS) {				XM_OUTADDR(IoC, i, XM_SA, OutAddr);			}			else {				GM_OUTADDR(IoC, i, GM_SRC_ADDR_1L, OutAddr);			}#ifdef DEBUG			SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,				("SkAddrInit: Permanent Physical MAC Address: %02X %02X %02X %02X %02X %02X\n",					pAPort->PermanentMacAddress.a[0],					pAPort->PermanentMacAddress.a[1],					pAPort->PermanentMacAddress.a[2],					pAPort->PermanentMacAddress.a[3],					pAPort->PermanentMacAddress.a[4],					pAPort->PermanentMacAddress.a[5]))			SK_DBG_MSG(pAC, SK_DBGMOD_ADDR, SK_DBGCAT_INIT,				("SkAddrInit: Physical MAC Address: %02X %02X %02X %02X %02X %02X\n",					pAPort->CurrentMacAddress.a[0],					pAPort->CurrentMacAddress.a[1],					pAPort->CurrentMacAddress.a[2],					pAPort->CurrentMacAddress.a[3],					pAPort->CurrentMacAddress.a[4],					pAPort->CurrentMacAddress.a[5]))#endif	/* DEBUG */		}		/* pAC->Addr.InitDone = SK_INIT_IO; */		break;	case SK_INIT_RUN:#ifdef xDEBUG		for (i = 0; i < SK_MAX_MACS; i++) {			if (pAC->Addr.Port[i].NextExactMatchRlmt <				SK_ADDR_FIRST_MATCH_RLMT) {				Next0[i] |= 16;			}		}#endif	/* DEBUG */		/* pAC->Addr.InitDone = SK_INIT_RUN; */		break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费观看日本欧美| 国产欧美精品一区二区三区四区| 日韩午夜电影在线观看| 国产精品免费观看视频| 青椒成人免费视频| 在线免费不卡电影| 国产亚洲人成网站| 青草国产精品久久久久久| 色综合久久综合| 国产精品久久久久影院亚瑟 | 欧美另类久久久品| 欧美国产日韩a欧美在线观看| 偷拍一区二区三区| 91久久奴性调教| 中文字幕电影一区| 精品一区二区三区欧美| 欧美一二三四在线| 午夜精品在线看| 在线亚洲+欧美+日本专区| 国产女人18毛片水真多成人如厕| 韩国欧美一区二区| 欧美大片免费久久精品三p| 丝袜美腿亚洲一区二区图片| 99久久99久久久精品齐齐| 久久精品视频免费观看| 国产剧情一区二区| 精品国产乱子伦一区| 麻豆91精品91久久久的内涵| 欧美另类变人与禽xxxxx| 亚洲v精品v日韩v欧美v专区| 欧美日本在线观看| 首页国产丝袜综合| 91精品国产高清一区二区三区蜜臀 | 国产精品久久久久一区二区三区 | 奇米四色…亚洲| 91精品免费在线观看| 一区二区三区鲁丝不卡| 欧美自拍丝袜亚洲| 日韩电影在线免费| 91精品国产免费| 蜜桃一区二区三区在线| 精品久久久久久久久久久久包黑料 | 欧美国产丝袜视频| 国产成人精品免费在线| 国产精品免费视频观看| www.日韩大片| 亚洲一区二区三区在线| 4438成人网| 国产精品一区二区在线播放 | 日韩精品一区二区三区swag | 久久日一线二线三线suv| 国产成人精品三级| 亚洲精品成人a在线观看| 欧美日韩在线播| 国模套图日韩精品一区二区| 久久久亚洲精品石原莉奈 | 欧美日韩和欧美的一区二区| 日韩成人一区二区| 久久久一区二区| 色婷婷国产精品综合在线观看| 亚洲3atv精品一区二区三区| 26uuu另类欧美亚洲曰本| 成人黄色av电影| 亚洲国产裸拍裸体视频在线观看乱了 | av电影天堂一区二区在线观看| 亚洲色图色小说| 91精品国产91久久久久久一区二区| 久久97超碰国产精品超碰| 国产欧美日韩另类一区| 欧美无砖专区一中文字| 国产一区二区在线影院| 亚洲色图一区二区三区| 精品国产99国产精品| 一本色道久久综合精品竹菊| 青青青伊人色综合久久| 亚洲欧美国产高清| 久久婷婷色综合| 精品粉嫩aⅴ一区二区三区四区| av成人免费在线观看| 久久99精品久久久久久久久久久久| 亚洲欧美另类小说| 久久久一区二区三区捆绑**| 欧美日韩成人综合| 99久久精品国产导航| 精品一区二区三区欧美| 亚洲va国产va欧美va观看| 国产精品家庭影院| 26uuuu精品一区二区| 在线不卡免费欧美| 欧美系列日韩一区| 成人av在线观| 国产精品亚洲人在线观看| 午夜精品久久久久久久| 亚洲人xxxx| 国产精品色呦呦| 久久免费视频色| 日韩精品一区二区三区在线播放 | 国产风韵犹存在线视精品| 日韩精品亚洲一区| 一区二区三区在线观看欧美| 国产精品美女www爽爽爽| 久久久亚洲高清| 久久综合九色综合欧美98| 欧美一区二区视频在线观看2020| 欧美在线观看视频在线| 日本高清不卡视频| 91福利在线观看| 色老综合老女人久久久| 成人app软件下载大全免费| 国产一区91精品张津瑜| 激情久久五月天| 韩国中文字幕2020精品| 精品在线一区二区三区| 日本aⅴ精品一区二区三区| 午夜精品福利一区二区三区蜜桃| 一区二区欧美精品| 午夜不卡av免费| 丝瓜av网站精品一区二区| 午夜久久久影院| 麻豆成人在线观看| 国模娜娜一区二区三区| 国产a精品视频| av电影天堂一区二区在线| 99久久精品免费看国产免费软件| 93久久精品日日躁夜夜躁欧美| 99久久免费视频.com| 欧美综合在线视频| 91精品国产全国免费观看 | 亚洲美女在线国产| 一区二区三区精品久久久| 亚洲精品高清在线| 午夜精品福利视频网站| 美女免费视频一区| 国产成人亚洲综合a∨猫咪| 国产精品1024| 在线亚洲精品福利网址导航| 欧美精品精品一区| 久久精品在线免费观看| 国产精品不卡一区| 婷婷久久综合九色国产成人| 精品一区二区三区在线播放| 福利电影一区二区| 欧美在线啊v一区| 日韩三级视频在线看| 国产亚洲一区二区三区在线观看| 日韩码欧中文字| 三级久久三级久久| 国产不卡视频一区二区三区| 一本一道波多野结衣一区二区| 欧美一级片在线看| 亚洲欧洲成人自拍| 免费不卡在线视频| 99在线热播精品免费| 欧美一区二区三区在线视频| 中国av一区二区三区| 麻豆免费精品视频| 91高清视频在线| 国产免费观看久久| 日本亚洲免费观看| 99国产精品一区| 精品久久久久一区二区国产| 亚洲激情综合网| 国产精品99久久久久久久vr| 欧美午夜片在线看| 中文文精品字幕一区二区| 日本亚洲三级在线| 在线这里只有精品| 国产精品久久久久久久久免费丝袜| 天涯成人国产亚洲精品一区av| 不卡的av网站| 欧美精品一区二区三区在线 | 亚洲综合自拍偷拍| 国产精品77777| 欧美成人精品1314www| 亚洲综合男人的天堂| 成人深夜视频在线观看| 欧美大片在线观看一区二区| 亚洲自拍另类综合| 99久久精品一区| 国产精品午夜免费| 国产91在线观看丝袜| 2023国产一二三区日本精品2022| 亚洲国产中文字幕| 欧美午夜精品久久久久久超碰| 国产精品免费视频网站| 国产成人午夜99999| 精品国产一二三| 久久成人免费网| 日韩欧美国产高清| 日本vs亚洲vs韩国一区三区| 欧美色网站导航| 亚洲午夜电影在线| 在线观看91视频| 伊人一区二区三区| 色婷婷综合久色| 亚洲综合久久久久| 欧美性一级生活| 亚洲成av人片在www色猫咪| 欧美日韩在线精品一区二区三区激情| 一区二区三区成人|