priv->ieee->handle_management = ipw_handle_management; 
priv->ieee->handle_probe_response = ipw_handle_beacon; priv->ieee->handle_beacon = ipw_handle_probe_response; priv->ieee->handle_assoc_response = ipw_handle_assoc_response; 
static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent){	int err = 0;	struct net_device *net_dev;	void __iomem *base;	u32 length, val;	struct ipw_priv *priv;	int i;	net_dev = alloc_ieee80211(sizeof(struct ipw_priv));	if (net_dev == NULL) {		err = -ENOMEM;		goto out;	}	priv = ieee80211_priv(net_dev);	priv->ieee = netdev_priv(net_dev);	priv->net_dev = net_dev;	priv->pci_dev = pdev;#ifdef CONFIG_IPW_DEBUG	ipw_debug_level = debug;#endif	spin_lock_init(&priv->lock);	for (i = 0; i < IPW_IBSS_MAC_HASH_SIZE; i++)		INIT_LIST_HEAD(&priv->ibss_mac_hash[i]);	init_MUTEX(&priv->sem);	if (pci_enable_device(pdev)) {		err = -ENODEV;		goto out_free_ieee80211;	}	pci_set_master(pdev);	err = pci_set_dma_mask(pdev, DMA_32BIT_MASK);	if (!err)		err = pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK);	if (err) {		printk(KERN_WARNING DRV_NAME ": No suitable DMA available.\n");		goto out_pci_disable_device;	}	pci_set_drvdata(pdev, priv);	err = pci_request_regions(pdev, DRV_NAME);	if (err)		goto out_pci_disable_device;	/* We disable the RETRY_TIMEOUT register (0x41) to keep	 * PCI Tx retries from interfering with C3 CPU state */	pci_read_config_dword(pdev, 0x40, &val);	if ((val & 0x0000ff00) != 0)		pci_write_config_dword(pdev, 0x40, val & 0xffff00ff);	length = pci_resource_len(pdev, 0);	priv->hw_len = length;	base = ioremap_nocache(pci_resource_start(pdev, 0), length);	if (!base) {		err = -ENODEV;		goto out_pci_release_regions;	}	priv->hw_base = base;	IPW_DEBUG_INFO("pci_resource_len = 0x%08x\n", length);	IPW_DEBUG_INFO("pci_resource_base = %p\n", base);	err = ipw_setup_deferred_work(priv);	if (err) {		IPW_ERROR("Unable to setup deferred work\n");		goto out_iounmap;	}	ipw_sw_reset(priv, 1);	err = request_irq(pdev->irq, ipw_isr, SA_SHIRQ, DRV_NAME, priv);	if (err) {		IPW_ERROR("Error allocating IRQ %d\n", pdev->irq);		goto out_destroy_workqueue;	}	SET_MODULE_OWNER(net_dev);	SET_NETDEV_DEV(net_dev, &pdev->dev);	ipw_wx_data.spy_data = &priv->ieee->spy_data;	ipw_wx_data.ieee80211 = priv->ieee;	down(&priv->sem);	priv->ieee->hard_start_xmit = ipw_net_hard_start_xmit;	priv->ieee->set_security = shim__set_security;	priv->ieee->is_queue_full = ipw_net_is_queue_full;#ifdef CONFIG_IPW_QOS	priv->ieee->handle_management = ipw_handle_management;#endif				/* CONFIG_IPW_QOS */	priv->ieee->perfect_rssi = -20;	priv->ieee->worst_rssi = -85;	net_dev->open = ipw_net_open;	net_dev->stop = ipw_net_stop;	net_dev->init = ipw_net_init;#if WIRELESS_EXT < 18	net_dev->do_ioctl = ipw_ioctl;#endif	net_dev->get_stats = ipw_net_get_stats;	net_dev->set_multicast_list = ipw_net_set_multicast_list;	net_dev->set_mac_address = ipw_net_set_mac_address;	net_dev->get_wireless_stats = ipw_get_wireless_stats;	net_dev->wireless_data = &ipw_wx_data;	net_dev->wireless_handlers = &ipw_wx_handler_def;	net_dev->ethtool_ops = &ipw_ethtool_ops;	net_dev->irq = pdev->irq;	net_dev->base_addr = (unsigned long)priv->hw_base;	net_dev->mem_start = pci_resource_start(pdev, 0);	net_dev->mem_end = net_dev->mem_start + pci_resource_len(pdev, 0) - 1;	err = sysfs_create_group(&pdev->dev.kobj, &ipw_attribute_group);	if (err) {		IPW_ERROR("failed to create sysfs device attributes\n");		up(&priv->sem);		goto out_release_irq;	}	up(&priv->sem);	err = register_netdev(net_dev);	if (err) {		IPW_ERROR("failed to register network device\n");		goto out_remove_sysfs;	}	return 0;      out_remove_sysfs:	sysfs_remove_group(&pdev->dev.kobj, &ipw_attribute_group);      out_release_irq:	free_irq(pdev->irq, priv);      out_destroy_workqueue:	destroy_workqueue(priv->workqueue);	priv->workqueue = NULL;      out_iounmap:	iounmap(priv->hw_base);      out_pci_release_regions:	pci_release_regions(pdev);      out_pci_disable_device:	pci_disable_device(pdev);	pci_set_drvdata(pdev, NULL);      out_free_ieee80211:	free_ieee80211(priv->net_dev);      out:	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3b9990cb1751d3d267c0e5c94bff0f155c944c66/ipw2200.c/clean/drivers/net/wireless/ipw2200.c