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

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

?? hostap_plx.c

?? LINUX 2.6.17.4的源碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	}}static struct prism2_helper_functions prism2_plx_funcs ={	.card_present	= NULL,	.cor_sreset	= prism2_plx_cor_sreset,	.genesis_reset	= prism2_plx_genesis_reset,	.hw_type	= HOSTAP_HW_PLX,};static int prism2_plx_check_cis(void __iomem *attr_mem, int attr_len,				unsigned int *cor_offset,				unsigned int *cor_index){#define CISTPL_CONFIG 0x1A#define CISTPL_MANFID 0x20#define CISTPL_END 0xFF#define CIS_MAX_LEN 256	u8 *cis;	int i, pos;	unsigned int rmsz, rasz, manfid1, manfid2;	struct prism2_plx_manfid *manfid;	cis = kmalloc(CIS_MAX_LEN, GFP_KERNEL);	if (cis == NULL)		return -ENOMEM;	/* read CIS; it is in even offsets in the beginning of attr_mem */	for (i = 0; i < CIS_MAX_LEN; i++)		cis[i] = readb(attr_mem + 2 * i);	printk(KERN_DEBUG "%s: CIS: %02x %02x %02x %02x %02x %02x ...\n",	       dev_info, cis[0], cis[1], cis[2], cis[3], cis[4], cis[5]);	/* set reasonable defaults for Prism2 cards just in case CIS parsing	 * fails */	*cor_offset = 0x3e0;	*cor_index = 0x01;	manfid1 = manfid2 = 0;	pos = 0;	while (pos < CIS_MAX_LEN - 1 && cis[pos] != CISTPL_END) {		if (pos + cis[pos + 1] >= CIS_MAX_LEN)			goto cis_error;		switch (cis[pos]) {		case CISTPL_CONFIG:			if (cis[pos + 1] < 2)				goto cis_error;			rmsz = (cis[pos + 2] & 0x3c) >> 2;			rasz = cis[pos + 2] & 0x03;			if (4 + rasz + rmsz > cis[pos + 1])				goto cis_error;			*cor_index = cis[pos + 3] & 0x3F;			*cor_offset = 0;			for (i = 0; i <= rasz; i++)				*cor_offset += cis[pos + 4 + i] << (8 * i);			printk(KERN_DEBUG "%s: cor_index=0x%x "			       "cor_offset=0x%x\n", dev_info,			       *cor_index, *cor_offset);			if (*cor_offset > attr_len) {				printk(KERN_ERR "%s: COR offset not within "				       "attr_mem\n", dev_info);				kfree(cis);				return -1;			}			break;		case CISTPL_MANFID:			if (cis[pos + 1] < 5)				goto cis_error;			manfid1 = cis[pos + 2] + (cis[pos + 3] << 8);			manfid2 = cis[pos + 4] + (cis[pos + 5] << 8);			printk(KERN_DEBUG "%s: manfid=0x%04x, 0x%04x\n",			       dev_info, manfid1, manfid2);			break;		}		pos += cis[pos + 1] + 2;	}	if (pos >= CIS_MAX_LEN || cis[pos] != CISTPL_END)		goto cis_error;	for (manfid = prism2_plx_known_manfids; manfid->manfid1 != 0; manfid++)		if (manfid1 == manfid->manfid1 && manfid2 == manfid->manfid2) {			kfree(cis);			return 0;		}	printk(KERN_INFO "%s: unknown manfid 0x%04x, 0x%04x - assuming this is"	       " not supported card\n", dev_info, manfid1, manfid2);	goto fail; cis_error:	printk(KERN_WARNING "%s: invalid CIS data\n", dev_info); fail:	kfree(cis);	if (ignore_cis) {		printk(KERN_INFO "%s: ignore_cis parameter set - ignoring "		       "errors during CIS verification\n", dev_info);		return 0;	}	return -1;}static int prism2_plx_probe(struct pci_dev *pdev,			    const struct pci_device_id *id){	unsigned int pccard_ioaddr, plx_ioaddr;	unsigned long pccard_attr_mem;	unsigned int pccard_attr_len;	void __iomem *attr_mem = NULL;	unsigned int cor_offset, cor_index;	u32 reg;	local_info_t *local = NULL;	struct net_device *dev = NULL;	struct hostap_interface *iface;	static int cards_found /* = 0 */;	int irq_registered = 0;	int tmd7160;	struct hostap_plx_priv *hw_priv;	hw_priv = kmalloc(sizeof(*hw_priv), GFP_KERNEL);	if (hw_priv == NULL)		return -ENOMEM;	memset(hw_priv, 0, sizeof(*hw_priv));	if (pci_enable_device(pdev))		goto err_out_free;	/* National Datacomm NCP130 based on TMD7160, not PLX9052. */	tmd7160 = (pdev->vendor == 0x15e8) && (pdev->device == 0x0131);	plx_ioaddr = pci_resource_start(pdev, 1);	pccard_ioaddr = pci_resource_start(pdev, tmd7160 ? 2 : 3);	if (tmd7160) {		/* TMD7160 */		attr_mem = NULL; /* no access to PC Card attribute memory */		printk(KERN_INFO "TMD7160 PCI/PCMCIA adapter: io=0x%x, "		       "irq=%d, pccard_io=0x%x\n",		       plx_ioaddr, pdev->irq, pccard_ioaddr);		cor_offset = plx_ioaddr;		cor_index = 0x04;		outb(cor_index | COR_LEVLREQ | COR_ENABLE_FUNC, plx_ioaddr);		mdelay(1);		reg = inb(plx_ioaddr);		if (reg != (cor_index | COR_LEVLREQ | COR_ENABLE_FUNC)) {			printk(KERN_ERR "%s: Error setting COR (expected="			       "0x%02x, was=0x%02x)\n", dev_info,			       cor_index | COR_LEVLREQ | COR_ENABLE_FUNC, reg);			goto fail;		}	} else {		/* PLX9052 */		pccard_attr_mem = pci_resource_start(pdev, 2);		pccard_attr_len = pci_resource_len(pdev, 2);		if (pccard_attr_len < PLX_MIN_ATTR_LEN)			goto fail;		attr_mem = ioremap(pccard_attr_mem, pccard_attr_len);		if (attr_mem == NULL) {			printk(KERN_ERR "%s: cannot remap attr_mem\n",			       dev_info);			goto fail;		}		printk(KERN_INFO "PLX9052 PCI/PCMCIA adapter: "		       "mem=0x%lx, plx_io=0x%x, irq=%d, pccard_io=0x%x\n",		       pccard_attr_mem, plx_ioaddr, pdev->irq, pccard_ioaddr);		if (prism2_plx_check_cis(attr_mem, pccard_attr_len,					 &cor_offset, &cor_index)) {			printk(KERN_INFO "Unknown PC Card CIS - not a "			       "Prism2/2.5 card?\n");			goto fail;		}		printk(KERN_DEBUG "Prism2/2.5 PC Card detected in PLX9052 "		       "adapter\n");		/* Write COR to enable PC Card */		writeb(cor_index | COR_LEVLREQ | COR_ENABLE_FUNC,		       attr_mem + cor_offset);		/* Enable PCI interrupts if they are not already enabled */		reg = inl(plx_ioaddr + PLX_INTCSR);		printk(KERN_DEBUG "PLX_INTCSR=0x%x\n", reg);		if (!(reg & PLX_INTCSR_PCI_INTEN)) {			outl(reg | PLX_INTCSR_PCI_INTEN,			     plx_ioaddr + PLX_INTCSR);			if (!(inl(plx_ioaddr + PLX_INTCSR) &			      PLX_INTCSR_PCI_INTEN)) {				printk(KERN_WARNING "%s: Could not enable "				       "Local Interrupts\n", dev_info);				goto fail;			}		}		reg = inl(plx_ioaddr + PLX_CNTRL);		printk(KERN_DEBUG "PLX_CNTRL=0x%x (Serial EEPROM "		       "present=%d)\n",		       reg, (reg & PLX_CNTRL_SERIAL_EEPROM_PRESENT) != 0);		/* should set PLX_PCIIPR to 0x01 (INTA#) if Serial EEPROM is		 * not present; but are there really such cards in use(?) */	}	dev = prism2_init_local_data(&prism2_plx_funcs, cards_found,				     &pdev->dev);	if (dev == NULL)		goto fail;	iface = netdev_priv(dev);	local = iface->local;	local->hw_priv = hw_priv;	cards_found++;	dev->irq = pdev->irq;	dev->base_addr = pccard_ioaddr;	hw_priv->attr_mem = attr_mem;	hw_priv->cor_offset = cor_offset;	pci_set_drvdata(pdev, dev);	if (request_irq(dev->irq, prism2_interrupt, SA_SHIRQ, dev->name,			dev)) {		printk(KERN_WARNING "%s: request_irq failed\n", dev->name);		goto fail;	} else		irq_registered = 1;	if (prism2_hw_config(dev, 1)) {		printk(KERN_DEBUG "%s: hardware initialization failed\n",		       dev_info);		goto fail;	}	return hostap_hw_ready(dev); fail:	if (irq_registered && dev)		free_irq(dev->irq, dev);	if (attr_mem)		iounmap(attr_mem);	pci_disable_device(pdev);	prism2_free_local_data(dev); err_out_free:	kfree(hw_priv);	return -ENODEV;}static void prism2_plx_remove(struct pci_dev *pdev){	struct net_device *dev;	struct hostap_interface *iface;	struct hostap_plx_priv *hw_priv;	dev = pci_get_drvdata(pdev);	iface = netdev_priv(dev);	hw_priv = iface->local->hw_priv;	/* Reset the hardware, and ensure interrupts are disabled. */	prism2_plx_cor_sreset(iface->local);	hfa384x_disable_interrupts(dev);	if (hw_priv->attr_mem)		iounmap(hw_priv->attr_mem);	if (dev->irq)		free_irq(dev->irq, dev);	prism2_free_local_data(dev);	kfree(hw_priv);	pci_disable_device(pdev);}MODULE_DEVICE_TABLE(pci, prism2_plx_id_table);static struct pci_driver prism2_plx_drv_id = {	.name		= "hostap_plx",	.id_table	= prism2_plx_id_table,	.probe		= prism2_plx_probe,	.remove		= prism2_plx_remove,	.suspend	= NULL,	.resume		= NULL,	.enable_wake	= NULL};static int __init init_prism2_plx(void){	printk(KERN_INFO "%s: %s\n", dev_info, version);	return pci_register_driver(&prism2_plx_drv_id);}static void __exit exit_prism2_plx(void){	pci_unregister_driver(&prism2_plx_drv_id);	printk(KERN_INFO "%s: Driver unloaded\n", dev_info);}module_init(init_prism2_plx);module_exit(exit_prism2_plx);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久99精品久久| 亚洲大片免费看| 国产欧美日韩在线视频| 欧美一区二区免费视频| 欧美午夜精品久久久久久超碰| 99久久精品国产毛片| 成人一区二区三区| 国产精品1024| 成人av在线资源| av一区二区久久| 95精品视频在线| 色综合久久中文字幕| 在线观看欧美精品| 欧美在线小视频| 666欧美在线视频| 欧美一区二区三区在线| 欧美一区午夜精品| 欧美成人aa大片| 26uuu精品一区二区| 久久久久久一二三区| 欧美国产一区二区| 亚洲老司机在线| 激情丁香综合五月| 国产不卡免费视频| 日日骚欧美日韩| 成人国产精品免费| 蜜桃在线一区二区三区| 久久99蜜桃精品| 国产高清精品久久久久| 中文字幕字幕中文在线中不卡视频| 久久久久88色偷偷免费| 久久久久久久一区| 国产日韩精品一区二区三区 | 色国产精品一区在线观看| 国产一区啦啦啦在线观看| 国产麻豆精品久久一二三| 91美女片黄在线观看91美女| 日本不卡一区二区| 午夜一区二区三区视频| 久久精品国产在热久久| 成人高清在线视频| 精品视频资源站| 欧美精品一区在线观看| 26uuu国产电影一区二区| 99久久精品情趣| 欧美丰满少妇xxxbbb| 久久久久久免费毛片精品| 亚洲欧美日韩久久精品| 青草国产精品久久久久久| 国产成人av电影免费在线观看| 一本色道综合亚洲| 精品剧情v国产在线观看在线| 一色屋精品亚洲香蕉网站| 视频一区视频二区中文字幕| 成人综合日日夜夜| 欧美久久一二区| 中文字幕免费不卡| 视频一区二区三区入口| 春色校园综合激情亚洲| 欧美一区二区三区免费在线看| 国产欧美一区二区精品久导航 | 国产精品久久久爽爽爽麻豆色哟哟| 亚洲综合av网| 国产福利精品一区二区| 4438x亚洲最大成人网| 亚洲欧洲日本在线| 久草中文综合在线| 在线精品视频免费观看| 国产精品色一区二区三区| 免费在线视频一区| 欧洲精品中文字幕| 欧美激情在线看| 老司机精品视频线观看86| 色婷婷激情久久| 中文字幕免费观看一区| 国产最新精品免费| 88在线观看91蜜桃国自产| 亚洲三级久久久| 国产电影精品久久禁18| 日韩欧美成人一区二区| 亚洲电影在线播放| 92国产精品观看| 国产人成一区二区三区影院| 五月天亚洲精品| 欧美性受xxxx黑人xyx性爽| 中文字幕一区二区三区在线不卡| 国产精品自拍一区| ww亚洲ww在线观看国产| 理论电影国产精品| 在线综合视频播放| 午夜欧美电影在线观看| 精品视频一区二区不卡| 一区二区三区在线视频免费| 成人久久久精品乱码一区二区三区| www久久精品| 紧缚捆绑精品一区二区| 精品免费一区二区三区| 伦理电影国产精品| 亚洲精品在线电影| 久久精品99国产国产精| 欧美成人福利视频| 国产精品伊人色| 国产校园另类小说区| 久久丁香综合五月国产三级网站| 日韩视频免费观看高清在线视频| 蜜臀av亚洲一区中文字幕| 91精品久久久久久久99蜜桃| 日韩精品五月天| 日韩一区二区电影在线| 麻豆成人av在线| 亚洲精品一区二区三区福利| 国产伦精品一区二区三区视频青涩 | 白白色亚洲国产精品| 日本一区二区在线不卡| 极品美女销魂一区二区三区免费| 91精品在线免费| 日韩av一区二区在线影视| 日韩免费观看2025年上映的电影 | 麻豆精品精品国产自在97香蕉| 欧美精品在线观看一区二区| 亚洲一区二区在线视频| 色哟哟亚洲精品| 亚洲综合精品自拍| 在线观看成人小视频| 亚洲欧美日韩系列| 色综合久久综合网欧美综合网| 综合激情成人伊人| 一本大道久久精品懂色aⅴ | 日韩福利电影在线观看| 欧美一区二区大片| 免费在线观看精品| 日韩免费观看高清完整版| 捆绑调教美女网站视频一区| 日韩三级视频中文字幕| 亚洲天堂精品在线观看| 欧美日韩高清一区二区不卡| 成人av先锋影音| 日本少妇一区二区| 17c精品麻豆一区二区免费| 欧美大片国产精品| 日韩三级精品电影久久久| 99久久综合精品| 高清国产午夜精品久久久久久| 亚洲大片在线观看| 久久精品夜夜夜夜久久| 日韩一级片在线播放| av在线播放成人| 欧美日韩在线不卡| 午夜视频一区在线观看| 日韩欧美中文字幕公布| 黑人巨大精品欧美一区| 中文久久乱码一区二区| 91福利在线看| 九九热在线视频观看这里只有精品| 久久久久亚洲蜜桃| 日韩欧美三级在线| 丰满亚洲少妇av| 日韩在线播放一区二区| 久久女同精品一区二区| eeuss鲁片一区二区三区| 亚洲大片精品永久免费| 国产喂奶挤奶一区二区三区| 色www精品视频在线观看| 日本vs亚洲vs韩国一区三区| 国产亚洲制服色| 精品视频在线免费| 99免费精品视频| 日韩av电影天堂| 中文字幕av一区二区三区免费看| 在线一区二区三区四区五区 | 欧美不卡一二三| 成人午夜免费视频| 久久99久久久久| **欧美大码日韩| 欧美一区二区三区影视| 不卡在线视频中文字幕| 夜夜嗨av一区二区三区中文字幕| 久久久久久日产精品| 欧美日韩精品免费观看视频| 国产乱码精品一区二区三区av | 日本美女一区二区三区| 久久人人爽爽爽人久久久| 欧美日韩夫妻久久| 不卡免费追剧大全电视剧网站| 日韩专区在线视频| 亚洲视频1区2区| 日韩一级大片在线| 91在线视频免费91| 国产精选一区二区三区| 亚洲大型综合色站| 日本一区二区成人在线| 26uuu国产电影一区二区| 欧美日韩一级片网站| a级精品国产片在线观看| 精品一区二区三区在线视频| 亚洲国产成人av| 一区在线中文字幕| 久久久久久久久岛国免费| 制服.丝袜.亚洲.中文.综合| 成人爽a毛片一区二区免费|